web-dev-qa-db-fra.com

Razor 2 à Razor 3 MVC 5

J'ai travaillé sur une solution MVC 4 et j'ai essayé de la mettre à niveau vers MVC 5. J'ai suivi les étapes décrites ici .

Je l'ai suivi et maintenant chaque fois que j'exécute l'application MVC, il me donne ce message d'erreur:

[A]System.Web.WebPages.Razor.Configuration.HostSection cannot be cast to 
[B]System.Web.WebPages.Razor.Configuration.HostSection. 

Type A originates from 
'System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location 
'C:\WINDOWS\Microsoft.Net\Assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'. 
Type B originates from 'System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, 
PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location 
'C:\Users\User\AppData\Local\Temp\Temporary ASP.NET 
Files\root\665ac028\de53a189\Assembly\dl3\c2c0a4b5\56e8099e_40e0ce01\System.Web.WebPages.Razor.dll'.

Est-ce que quelqu'un sait comment cela a pu provenir? ou comment le résoudre? J'ai regardé jusqu'ici? J'ai essayé de changer les fichiers web.config, en vain ...

54
Dylan Corriveau

Dans votre Web.config (- s) assurez-vous que assemblyBinding contient la version appropriée pour l'assembly System.Web.WebPages.Razor et System.Web.Mvc.

<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
  <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
  </dependentAssembly>

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
  </dependentAssembly>
</assemblyBinding>

Et assurez-vous que rasoir sectionGroup dans ConfigSections fait également référence aux dernières versions:

<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
    <section name="Host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" />
    <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" />
</sectionGroup>
107
Dima

Vérifiez la version dans web.config. S'il renvoie à nouveau une erreur, essayez de nettoyer la solution et de la reconstruire. Vérifiez également le dossier Bin du projet, supprime les anciennes références du dossier Bin et reconstruisez la solution du projet.

1
sushama

Il semble que vous ayez toujours une référence à la DLL Razor 2.0.

Vérifiez les propriétés de vos références de projet - en particulier celle "Utiliser une version spécifique".

0
Jakub Konecki