web-dev-qa-db-fra.com

Impossible de charger le fichier ou l'assembly 'System.Web.WebPages.Razor, Version = 2.0.0.0

Je viens de mettre à niveau des packages dans un projet MVC 3 (ASP.net 4) et le message d'erreur suivant s'affiche maintenant lors de l'accès à une page de ce projet:

Erreur de serveur dans l'application '/ MyApplication'.

Impossible de charger le fichier ou l'assembly 'System.Web.WebPages.Razor, version = 2.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception from HRESULT: 0x80131040) Description: une exception non gérée s'est produite lors de l'exécution de la demande Web en cours. Consultez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

Détails de l'exception: System.IO.FileLoadException: impossible de charger le fichier ou l'assembly 'System.Web.WebPages.Razor, version = 2.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040)

Erreur de source:

Une exception non gérée a été générée lors de l'exécution de la requête Web en cours. Les informations concernant l'origine et l'emplacement de l'exception peuvent être identifiées à l'aide de la trace de pile d'exceptions ci-dessous.

Suivi de la charge d'assembly: Les informations suivantes peuvent être utiles pour déterminer pourquoi le contrôle 'System.Web.WebPages.Razor, version = 2.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35' n'a pas pu être chargé.

=== Informations d'état préalables à la liaison === LOG: Utilisateur = IIS APPPOOL\ASP.NET v4.0 LOG: DisplayName = System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 (entièrement spécifié) LOG: Appbase = fichier: /// C: /.../ LOG: Initial PrivatePath = C: ...\bin Assemblée d'appel: Microsoft.Web.Helpers, Version = 2.0 .0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35. === LOG: Cette liaison commence dans le contexte de chargement par défaut. LOG: Utilisation du fichier de configuration de l'application: C: ...\web.config LOG: Utilisation du fichier de configuration de l'hôte: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config LOG: Utilisation du fichier de configuration de la machine à partir de C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config. LOG: Référence post-stratégie: System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35 LOG: Tentative de téléchargement du nouveau fichier URL: /// C: /Windows/Microsoft.NET/Framework64. /v4.0.30319/Temporary ASP.NET Files /.../ cb62a7b2/327a0353/System.Web.WebPages.Razor.DLL. LOG: Tentative de téléchargement du nouveau fichier URL: /// C: /Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files /.../ cb62a7b2/327a0353/System.Web.WebPage.Razor/System .Web.WebPages.Razor.DLL. LOG: tentative de téléchargement du nouveau fichier d'URL: /// C: /LeGroupeHtmSVN/.../UpDir.Web/bin/System.Web.WebPages.Razor.DLL. WRN: la comparaison du nom de l'assembly a entraîné l'incompatibilité: Version majeure ERR: impossible de terminer la configuration de l'assembly (hr = 0x80131040). Sondage terminé.

Trace de la pile:

[FileLoadException: impossible de charger le fichier ou l'assembly 'System.Web.WebPages.Razor, version = 2.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040)]
Microsoft.Web.Helpers.PreApplicationStartCode.Start () +0

[InvalidOperationException: la méthode d'initialisation avant le démarrage de l'application Démarrer sur le type Microsoft.Web.Helpers.PreApplicationStartCode a levé une exception avec le message d'erreur suivant: Impossible de charger le fichier ou l'assembly 'System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35 'ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040).]
System.Web.Compilation.BuildManager.InvokePreStartInitMethods (méthodes ICollection`1) +11711966
System.Web.Compilation.BuildManager.CallPreStartInitMethods () +465
System.Web.Hosting.HostingEnvironment.Initialize (ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +110

[HttpException (0x80004005): La méthode d'initialisation de démarrage pré-application Démarrer sur le type Microsoft.Web.Helpers.PreApplicationStartCode a renvoyé une exception avec le message d'erreur suivant: Impossible de charger le fichier ou l'assembly 'System.Web.WebPWeb.Razor, Version = 2.0 .0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'ou l’une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040).]
[6]

-------------------------------------------------- ------------------------------ Informations sur la version: Microsoft .NET Framework Version: 4.0.30319; Version ASP.NET: 4.0.30319.272

Dans mon fichier web.config et dans mon application, je fais référence à System.Web.WebPages.Razor v1.0.0.0:

  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0" />
  </dependentAssembly>

Je ne sais même pas si je pourrais utiliser System.Web.WebPages.Razor v2.0.0.0 avec .Net 4.

Maintenant, comment puis-je savoir ce qu'est le référencement System.Web.WebPages.Razor v2.0.0.0?

54

comment savoir ce qui est référencé à System.Web.WebPages.Razor v2.0.0.0?

Il suffit de lire votre stacktrace d’exception:

Calling Assembly : Microsoft.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

Il semble donc que vous utilisiez le Microsoft.Web.Helpers qui dépend de System.Web.WebPages.Razor, Version=2.0.0.0.

27
Darin Dimitrov

Si simple. Dans la console Nuget Package Manager:

Package de mise à jour Microsoft.AspNet.Mvc -Reinstall

52
Mohamed Emad

Ce problème a commencé lorsque j'ai supprimé les références non utilisées. Le site Web fonctionnait toujours sur ma machine locale, mais ne fonctionnait pas sur le serveur après la publication.

Remove unused references

J'ai résolu ce problème en procédant comme suit:

  1. Ouvrez «Console du gestionnaire de packages» dans Visual Studio.
  2. Uninstall-Package Microsoft.AspNet.Mvc
  3. Package d'installation Microsoft.AspNet.Mvc
50
Diganta Kumar

Dans ASP.NET MVC 4, l'espace de noms n'est pas System.Web.WebPages.Razor, mais System.Web.Razor.

Cela a fonctionné pour moi, changez votre web.config.

7
Tomas Kubes

Après beaucoup de souffrances, de recherches sur Google et d’arracher les cheveux, j’ai fini par désinstaller MVC 4 à l’aide de nuget, en supprimant toutes les références à MVC, rasoir et infrastructure de la configuration Web, en supprimant les dll du dossier bin, puis en utilisant nuget pour tout réinstaller. Cela a pris moins de temps que d'essayer de comprendre pourquoi les DLL ne correspondaient pas.

7
user1069733

J'obtenais la même erreur après avoir ajouté une référence inutile à System.Web.Mvc. J'ai enlevé toutes les références que j'ai pu trouver, mais rien ne semblait fonctionner. J'ai finalement supprimé le dossier bin du projet et l'erreur a disparu après une reconstruction.

2
mpwhitt

J'ai désinstallé ASP.NET MVC 4 à l'aide du panneau de configuration Windows, puis l'ai réinstallé en exécutant AspNetMVC4Setup.exe (que j'ai obtenu de https://www.Microsoft.com/en-us/download/details.aspx?id=30683 ), et cela a résolu le problème pour moi.

En d'autres termes, je n'avais pas besoin d'utiliser Nuget ou Visual Studio.

1
twasbrillig

J'ai également reçu cette erreur et essayé tout ce que je pouvais trouver en ligne et elle ne partirait pas. Au final, je viens de déclasser MVC de 5.2.3 à 4.0.40804. Je n'aime pas cette solution parce que je devrais éventuellement utiliser MVC 5, mais cela fonctionne pour le moment. J'espère que cela aide les autres. 

1
David Frodin

Court:
Si vous rencontrez ce problème avec un projet d’API Web pur (et n’a donc pas besoin de rasoir), essayez de l’ajouter quand même, reconstruisez-le, puis supprimez-le.

Longue histoire:
J'ai eu ce problème avec un tout nouveau projet d'API Web pure, sauf que la piste de pile désignait "System.Web.Mvc" comme étant Calling Assembly (voir la réponse de Darin) . Aucune référence à MVC, Razor ou à quoi que ce soit du genre. que dans mon projet cependant ...
J'ai décidé d'ajouter les packages MVC (AspNet.Mvc, AspNet.WebPages et AspNet.Razor) pour vérifier s'il existait un problème ultérieur.
L’application WebApi a ensuite été lancée parfaitement. Ensuite, j'ai retiré exactement les mêmes paquets et tout était toujours OK.

J'espère que ça aide quelqu'un.

1
Mik

Si un projet précédent fonctionnait brusquement avec l’erreur mentionnée, vous pouvez essayer la solution suivante.

  • Supprimez le dossier bin du projet Web/service correspondant.
  • Construire

Cela a fonctionné pour moi.

0
SOS

Pour des erreurs de liaison à l’assemblée similaires, les étapes suivantes peuvent être utiles:

  1. Faites un clic droit sur votre solution et cliquez sur Gérer les packages de nugets pour la solution ...
  2. accédez à l'onglet Consolidation (dernier onglet) et vérifiez si des différences existent entre les packages installés dans différents projets de votre solution. faites particulièrement attention à vos projets référencés qui peuvent avoir des versions plus basses car ils sont généralement moins remarqués)
  3. consolide spécialement les paquets liés à votre erreur d'assemblage et notez que de nombreux paquets dépendent d'autres paquets comme * .code & * .api & ...
  4. après avoir résolu toutes les consolidations suspectées, reconstruisez et réexécutez l'application pour voir si les liaisons d'assembly sont résolues.
0
Iman Abidi

J'ai d'abord essayé la réponse de Mohammed Emad - pas de joie. Puis j'ai essayé

git clean -x -d -f

ce qui m'a amené à une nouvelle erreur "Roslyn" que j'ai pu corriger en modifiant manuellement mon .csproj .

Fait intéressant, après avoir lu un peu plus bas la question de Roslyn, j'ai trouvé une autre suggestion avec encore plus de votes (Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r). Pensant que je préfèrerais implémenter cela plutôt que de modifier manuellement .csproj, j'ai annulé mes modifications .csproj, seulement pour trouver que ma solution fonctionnait toujours.

Donc, après tout cela, je me demande si la réponse de Mohammed (sur cette page) aurait fait l'affaire, si j'avais simplement fait le git clean en premier.

0
OutstandingBill

Dans certains cas, il suffit d'installer la page Web 2 pour résoudre ce problème (résolu avec mon cas - déployer sur une page Web locale à l'aide d'une API Web)

https://www.Microsoft.com/en-us/download/details.aspx?id=34600

0
KhaNguyen

J'obtenais la même erreur lorsque j'ai mis à niveau MVC4 vers la version MVC5. Premièrement, j'ai mis à niveau l'assembly appelant qui dépendait de

> System.Web.WebPages.Razor, Version=2.0.0.0

après avoir mis à jour les fichiers web.config du dossier Views, mis à jour les packages suivants de

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

à

<configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.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>
 </configSections>

et également mis à jour

<Host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

à

<Host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

ces étapes fonctionnent pour moi

0
Zia Qammar