2013-02-13 4 views
9
‚System.Web.Razor‘ lädt

Das Projekt läuft lokal in Ordnung, es ist nur, wenn veröffentlichte ich die folgende Fehlermeldung erhalten:MVC4 Azure Publishing-Fehler - kann nicht Datei oder Assembly

kann nicht Datei oder Assembly ‚System laden. Web.Razor 'oder eine seiner Abhängigkeiten. Die Manifestdefinition der lokalisierten Assembly stimmt nicht mit der Assemblyreferenz überein. (Exception from HRESULT: 0x80131040)

Nach den letzten Stunden Googeln das Problem scheint zu sein, dass ein Nugget-Paket, das ich dem Projekt hinzugefügt Referenzen auf Rasierer 1 und überschrieb meine Rasierer 2 DLL. Ich habe versucht, die Rasierklinge 2.0.0.0 dll in Referenzen anstelle von 1 zu kopieren, aber der Fehler bleibt bestehen. Dies ist, wo der Konflikt in der detaillierten Build-Ausgabe gezeigt:


Es gab einen Konflikt zwischen "System.Web.Razor, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35" und „System. Web.Razor, Version = 2.0.0.0, Kultur = neutral, PublicKeyToken = 31bf3856ad364e35 ". 1> "System.Web.Razor, Version = 1.0.0.0, Kultur = neutral, PublicKeyToken = 31bf3856ad364e35" wurde gewählt, weil es primär war und "System.Web.Razor, Version = 2.0.0.0, Kultur = neutral, PublicKeyToken = 31bf3856ad364e35 "war nicht. 1> Referenzen, die von "System.Web.Razor, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35" [C: \ Programme (x86) \ Microsoft ASP.NET \ ASP.NET Webseiten \ v1 abhängen .0 \ Assemblies \ System.Web.Razor.dll]. 1> C: \ Programme (x86) \ Microsoft ASP.NET \ ASP.NET-Webseiten \ v1.0 \ Assemblies \ System.Web.Razor.dll 1> Das Projektdateielement enthält den Verweis "C: \". Programmdateien (x86) \ Microsoft ASP.NET \ ASP.NET-Webseiten \ v1.0 \ Assemblies \ System.Web.Razor.dll ". 1> System.Web.Razor, Version = 1.0.0.0, Kultur = neutral, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL 1> Referenzen, die auf "System.Web.Razor, Version = 2.0.0.0, Kultur = neutral, PublicKeyToken = 31bf3856ad364e35 "[C: \ Benutzer \ Jack \ SkyDrive \ LektionUp.Current \ packages \ RazorEngine.3.0.8 \ lib \ net40 \ System.Web.Razor.dll]. 1> C: \ Benutzer \ Jack \ SkyDrive \ LessonUp.Current \ packages \ Microsoft.AspNet.WebPages.2.0.20710.0 \ lib \ net40 \ System.Web.WebPages.Razor.dll 1> Projektdateielement enthält, was verursacht Referenz "C: \ Benutzer \ Jack \ SkyDrive \ LessonUp.Current \ packages \ Microsoft.AspNet.WebPages.2.0.20710.0 \ lib \ net40 \ System.Web.WebPages.Razor.dll". 1> System.Web.Mvc, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35, processor = MSIL 1> Recaptcha


Von dort aus geht es weiter andere Pakete zur Liste je nach Rasierapparat 2.

Die Pakete, die ich dem Projekt hinzugefügt habe, waren: Recaptcha, Recaptcha.mvcModel und Postal. Hat jemand eine Idee, welche Schritte ich unternehmen kann, um dies zu beheben? Lassen Sie mich wissen, ob es noch weitere Informationen gibt, die zu einer Lösung führen können.

Antwort

0

bekam schließlich diese sortiert, heruntergeladen razor2.0 wieder von nuget. Scheint, das Webconfig zu sortieren und Abhängigkeitsfehler zu beheben. Läuft auf azurblau nicht ohne probleme.

5

Stellen Sie sicher, dass die 2,0-DLL verwiesen wird, und kopieren Sie lokale = true, dann versuchen Sie eine Baugruppe Hinzufügen in der web.config Bindung umleiten:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
    </dependentAssembly> 
</assemblyBinding? 
+0

Es war bereits eine Assembly-Bindung wie folgt: Ich habe es so geändert, dass Sie es gepostet haben, und der Fehler ist gleich geblieben. Ich habe auch die Referenzeigenschaften überprüft und lokale Kopie wurde bereits auf "wahr" gesetzt. Irgendwelche anderen Ideen? – jakhicks

+0

Danke. Die Einstellung 'Copy local = true' hat für mich funktioniert. Es scheint, dass dies der Standard für neue Projekte sein sollte, insbesondere wenn Referenzen mit nugget hinzugefügt werden. – ps2goat

+0

Ich habe die alte Version auf 1.0-3.0 und neue Version 4.0 geändert - Dies behebt das Problem für mich nach dem Update eines alten VS2012 MVC3-Projekts in VS2013 auf MVC4. – ppumkin

0

Überprüfen Sie Ihre Projektdatei und web.config, um festzustellen, ob sie von einem NuGet-Paket infiziert wurden. Ein bekanntes Problemkind ist postal 0.8.0. Es zieht als Abhängigkeit eine Beta-Version von RazorVersion heran (selbst wenn Sie gefiltert haben, um nur stabil zu zeigen).Selbst wenn Sie RazorVersion auf die neueste Version aktualisieren, die stabil ist, verweist Ihre Projektdatei auf System.Web.Razor Version 1 und Ihre web.config hat falsche Laufzeitassemblybindungen.

Um zu beheben, führen Sie ein Diff in Ihrer Projektdatei und web.config mit denen eines frischen, leeren MVC 4-Projekts. Kopieren Sie dann das korrekte Reference Element für System.Web.Razor aus der ursprünglichen Projektdatei. Löschen Sie in web.config das Element dependentAssembly für System.Web.Razor.

Hier ist der TLDD (zu faul, nicht diff) Text für Ihre Projektdatei. Wenn dieses Snippet veraltet ist, werden die zugrunde liegenden Ursachen hoffentlich behoben sein.

<Reference Include="System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
    <Private>True</Private> 
    <HintPath>..\packages\Microsoft.AspNet.Razor.2.0.20715.0\lib\net40\System.Web.Razor.dll</HintPath> 
</Reference> 

(Leider kann man nicht dieses Problem beheben, indem Deinstallation und Neuinstallation mit NuGet, weil Sie zuerst das säumigen abhängigen Paket wie Post deinstallieren würden zu, die Dinge neu zu brechen, wenn Sie neu installieren es.)

+0

Für die Post gibt es jetzt einen [Fehlerbericht] (https://github.com/andrewdavey/postal/Ausgaben/49). –

1

Ich hatte das gleiche Problem mit Postal 0.8.0 in einem MVC4-Projekt. Wenn Sie Postal mit NuGet installieren, ersetzt es System.Web.Razor 2.0 durch System.Web.Razor 1.0. Ich musste den Verweis auf System.Web.Razor 1.0 löschen und dann wieder in System.Web.Razor 2.0 hinzugefügt. Sie müssen zusätzlich Kopieren Local zu True in den Eigenschaften für System.Web.Razor und natürlich das Projekt neu erstellen. Sobald ich das getan hat, VS2012 kopiert die System.Web.Razor.dll in das Deployment Bin-Verzeichnis und das Problem behoben.

Postal fügt diese Abhängigkeiten auch der web.config hinzu. Ich habe sie entfernt und es funktioniert immer noch richtig. Ursprüngliche

<dependentAssembly> 
    <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="2.0.0.0" /> 
</dependentAssembly> 
<dependentAssembly> 
    <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" /> 
</dependentAssembly> 
<dependentAssembly> 
    <assemblyIdentity name="RazorEngine" publicKeyToken="9ee697374c7e744a" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-3.0.8.0" newVersion="3.0.8.0" /> 
</dependentAssembly> 
0

..

<dependentAssembly> 
    <assemblyIdentity name="System.Web.WebPages.Deployment" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="2.0.0.0" /> 
    </dependentAssembly> 

Aus irgendeinem Grund newVersion Attribut wurde auf 2.0.0.0 Version gesetzt, während dll von 3.0.0.0 war

<dependentAssembly> 
    <assemblyIdentity name="System.Web.WebPages.Deployment" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
    </dependentAssembly> 

als es funktionierte

Verwandte Themen