web-dev-qa-db-fra.com

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

J'essaie de mettre à niveau un projet de MVC 4/EF 5 à MVC 5/EF 6. J'ai mis à jour le cadre de 4.5 à 4.5.1, puis à partir de NuGet, j'ai mis à jour Solution MVC (4.0.30506.0 à 5.1.1) et EntityFramework. (5 à 6.1.1). Cela entraînait une dépendance Razor (2.0.30506.0 à 3.1.1) et des pages Web (2.0.30506.0 à 3.1.1). J'ai modifié le dossier de projets et de vues web.config pour refléter les modifications et supprimé le GUID du csproj.

Lorsque j'exécute le site en mode débogage, une erreur s'est produite lors du chargement du dossier Vues web.config sur la ligne - = "Host" type = "System.Web.WebPage.Razor.Configuration.HostSection - line .

“Une erreur s'est produite lors de la création du gestionnaire de section de configuration pour System.web.webPages.razor/Host: impossible de charger un fichier ou un assembleur 'System.Web.WebPages.Razor, Version = 3.1.1. ”

Il n’ya pas de problème sur la ligne précédente (System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup) ou avec la référence Razor dans le racine web.config. Malheureusement, la trace de la pile n’identifie pas l’assemblée appelante.

Assemblée appelante: (Inconnu).

Tous les fichiers pertinents sont inclus ci-dessous.

Quelqu'un at-il une idée du problème et surtout de la résolution du problème? J'ai seulement mis à jour les packages NuGet minimum: MVC et Entity Framework.

        packages.config:

…  
  <package id="EntityFramework" version="6.1.0" targetFramework="net451" />
  <package id="jQuery" version="2.0.2" targetFramework="net45" />
  <package id="jQuery.UI.Combined" version="1.10.3" targetFramework="net45" />
  <package id="jQuery.Validation" version="1.11.1" targetFramework="net45" />
  <package id="knockoutjs" version="2.2.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.Mvc" version="5.1.1" targetFramework="net451" />
  <package id="Microsoft.AspNet.Mvc.FixedDisplayModes" version="5.0.0" targetFramework="net451" />
  <package id="Microsoft.AspNet.Razor" version="3.1.1" targetFramework="net451" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.0.0" targetFramework="net45" />
…
  <package id="Microsoft.AspNet.WebPages" version="3.1.1" targetFramework="net451" /> 
<!-- oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" -->
…

          web.config:       root

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
…
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.1.1" newVersion="3.1.1" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-5.1.1" newVersion="5.1.1" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.1.1" newVersion="3.1.1" />       </dependentAssembly>


          web.config:       Views folder

   <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
 <section name="Host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />     </sectionGroup>
…
 <Host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
…
    <pages
        validateRequest="false"
        pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <controls>
        <add Assembly="System.Web.Mvc, Version=5.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
      </controls>
    </pages>

          ERROR PAGE:

Erreur de configuration Description: une erreur s'est produite lors du traitement d'un fichier de configuration requis pour traiter cette demande. Veuillez consulter les détails de l'erreur ci-dessous et modifier votre fichier de configuration en conséquence. 

Message d'erreur de l'analyseur: une erreur s'est produite lors de la création du gestionnaire de section de configuration pour system.web.webPages.razor/Host: impossible de charger le fichier ou l'assembly 'System.Web.WebPWeb.Razor, version = 3.1.1, 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: 

Line 4:    <configSections>
Line 5:      <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
Line 6:        <section name="Host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
Line 7:        <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
Line 8:      </sectionGroup>

Fichier source: C:\Project\views\web.config Ligne: 6 

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

=== Informations d'état préalables à la liaison === LOG: DisplayName = System.Web.WebPages.Razor, Version = 3.1.1, Culture = neutre, PublicKeyToken = 31bf3856ad364e35 (Partiel) WRN: Des informations de liaison partielles ont été fournies pour un assembly: WRN: Nom de l'assembly: System.Web.WebPage.Razor, Version = 3.1.1, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 | Identifiant de domaine: 4 WRN: une liaison partielle se produit lorsqu'une partie seulement du nom d'affichage de l'assembly est fournie. WRN: le classeur risque alors de charger un assemblage incorrect. WRN : Il est recommandé de fournir une identité textuelle entièrement spécifiée à l’Assemblée, WRN: elle consiste en un simple nom, une version, une culture et un jeton de clé publique. WRN: voir le livre blanc http : //go.Microsoft.com/fwlink/? LinkId = 109270 pour plus d'informations et pour trouver des solutions communes à ce problème. LOG: Appbase = file: /// C:\Project / LOG: Initial PrivatePath = C:\Projet\bin

Assemblée appelante: (Inconnu).

LOG: cette liaison commence dans le contexte de chargement par défaut. LOG: à l'aide du fichier de configuration de l'application: C:\Project\web.config LOG: à l'aide du fichier de configuration de l'hôte: C:\Utilisateurs\xxx\Documents\IISExpress\config\aspnet.config LOG: Utilisation du fichier de configuration de la machine à partir de C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. LOG: La stratégie n'est pas appliqué à la référence à ce moment-là (liaison Assembly privée, personnalisée, partielle ou localisée). LOG: tentative de téléchargement du nouveau fichier URL: /// C:/Users/xxx/AppData/Local/Fichiers ASP.NET temporaires/temporaires/root/898b17f9/848c1fdf/System.Web.WebPage.Razor.DLL. LOG: Tentative de téléchargement du nouveau fichier URL: /// C:/Users/xxx/AppData /. Fichiers ASP.NET locaux/temporaires/temporaires/root/898b17f9/848c1fdf/System.Web.WebPage.Razor/System.Web.WebPage.Razor.DLL. LOG: tentative de téléchargement du nouveau fichier URL: ///C:\Project /bin/System.Web.WebPages.Razor.DLL.WRN: La comparaison du nom d'assembly a entraîné le décalage: Version mineure ERR: Impossible de terminer la configuration de l’assemblage (hr = 0x80131040). Sondage terminé.

Informations de version: Microsoft .NET Framework Version: 4.0.30319; Version ASP.NET: 4.0.30319.18446

10
Joe

Décidé que cela ne valait pas la peine d'essayer de comprendre ces dépendances cauchemardesques. J'ai restauré une sauvegarde du projet et de la console PMC (Package Manager Console) mise à jour manuellement MVC et EntityFramework avec des versions plus anciennes qui n'appelaient pas dans la dépendance Razor 3.1.1.

Package d'installation Microsoft.AspNet.Mvc -Version 5.0.0

Paquet d'installation entityframework -Version 6.0.0

Remarque: Si vous utilisez la méthode DbContext.EntityState, celle-ci a été déplacée de System.Data vers System.Data.Entity, mettez à jour vos utilisations comme il convient.

Si vous avez une adhésion simple, vous devrez installer Microsoft.AspNet.WebPages.WebData (voir ASP.NET MVC 5 est-il incompatible avec WebMatrix SimpleMembershipProvider? ) et si vous avez OAuth dans le projet (le modèle MVC4 installe OAuth Dans le projet, je ne l'utilisais pas, j'ai donc pu l'enlever. Si vous l'utilisez, vous aurez plus de travail à faire), vous devrez désinstaller OAUTH (WebData avait un problème de dépendance avec OAUTH).

À partir de NuGet, désinstallez la bibliothèque Microsoft WebPages OAuth.

À partir du package d'installation PMC Microsoft.AspNet.WebPages.WebData

Assurez-vous de suivre les étapes appropriées à votre projet: Mettez à niveau MVC 4 à 5 http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an- aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2

- OR -

Si vous souhaitez essayer de mettre à jour tous vos packages, procédez comme suit:

De NuGet Désinstallez la bibliothèque Microsoft WebPages OAuth (si vous utilisez SimpleMembership, voir ci-dessus)

Devait mettre à jour individuellement: "Bibliothèques clientes et bibliothèques centrales de l'API Web Microsoft Microsoft" et "System.Spatial for OData" 

Tout mettre à jour

À partir du package d'installation PMC Microsoft.AspNet.WebPages.WebData (SimpleMembership, voir ci-dessus)

(Voir DbContext.EntityState ci-dessus)

(web.config-root, add key = "pages Web: Version" value = "3.0.0.0"; voir Mettre à niveau MVC 4 à 5 ci-dessus; d'autres modifications ont été apportées automatiquement)

(Vues web.config nécessite des modifications manuelles)

(A ensuite pu construire et ouvrir le projet, mais lorsqu'il a accédé à la base de données, une mise à jour a été nécessaire. (À partir de la base de données de mises à jour PMC. Il a échoué avec le message “CREATE INDEX [xxxxxxx] ON [ dbo] .xxxxxxxx ”“ System.Data.SqlClient.SqlException (0x80131904): l'opération a échoué car un index ou des statistiques portant le nom 'xxxxxxxx' existaient déjà dans la table 'dbo.xxxxxxx'. ”), mais j'ai ensuite pu y accéder avec succès. la DB)

5
Joe

J'ai pu résoudre ce problème en mettant à jour la section configSection dans le dossier web.config de mon dossier de vues afin qu'elle corresponde à ce que j'avais dans mon package.config. Dans mon cas, j'avais besoin d'ajuster la version de Razor à la version 3.2.7

- WEB.CONFIG

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

- PACKAGES.CONFIG

<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net45" />
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net45" />
1
matwonk

J'ai eu un problème similaire il y a quelques jours, puis finalement j'ai eu la solution, je viens d'exécuter la commande update-package à partir de la console du gestionnaire de paquets et cela fonctionne pour moi.

0
Rajat-Systematix

Avait un problème similaire avec System.Web.Mvc lorsque je copiais mon projet sur une machine Windows 8 à partir de Windows 7, et mettais à jour les packages, le résolvait en supprimant la référence à System.Web.Mvc et en la rajoutant en accédant à version 5.2 que j'ai trouvée dans:

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Pile Web 5\Packages\Microsoft.AspNet.Mvc.5.2.0\lib\net45

C'était aussi dans: C: (mon dossier de solutions)\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45

Clic par clic, détail:

Résolu en allant dans la fenêtre Explorateur de solutions de Visual Studio 2013 Express, puis dans Références, en cliquant avec le bouton droit de la souris sur System.Web.Mvc et en supprimant. Ensuite, j'ai ajouté la référence en cliquant avec le bouton droit de la souris sur Références et "Ajouter une référence ...", mais je ne l'ai pas ajoutée de la manière habituelle de sélectionner des assemblages, j'ai cliqué sur Parcourir et trouvé la version 5.2.

0
rzor1861330