4 Stimmen

Der ASP.NET-Compiler schlägt während des Web-Bereitstellungsprojekts mit einem XmlSerializers-Fehler fehl.

Wir verwenden Visual Studio 2010 Web Deployment-Projekte, um Webanwendungswebsites während unseres Builds zu kompilieren. Visual Studio 2010 ist nicht auf unseren Build-Agenten installiert. Wir erhalten einen Fehler (siehe unten) während des Builds, der sich auf die automatisch generierte Foo.XmlSerializers.dll bezieht, die mit einer neueren Laufzeit erstellt wird als die aktuell geladene Laufzeit und daher nicht von aspnet_compiler.exe geladen werden kann.

Wir zielen in unseren Projektdateien auf das .NET Framework v3.5 ab.

Hier ist der Fehler (neu formatiert für lange Zeilen):

"C:\BuildAgent\work\3836706d661b8a05\project\src\Foo.FrontEnd.WdpSite\
Foo.FrontEnd.WdpSite.wdproj" (Build target) (1) ->
  (AspNetCompiler target) ->
    ASPNETCOMPILER: Fehler ASPCONFIG: Die Datei oder Assembly 
    'Foo.FrontEnd.Site.XmlSerializers' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. 
    Diese Assembly wird von einer Laufzeit erstellt, die neuer ist als die derzeit geladene Laufzeit und kann nicht geladen werden.   
[C:\BuildAgent\work\3836706d661b8a05\project\src\Foo.FrontEnd.WdpSite\
Foo.FrontEnd.WdpSite.wdproj]

1voto

adz21c Punkte 11

Ich hatte ein ähnliches Problem, mit der gleichen Fehlermeldung, und nach viel Frustration die Lösung gefunden (die hoffentlich einige Ideen dafür liefert).

Hier haben wir einen Build-Server mit Windows SDK 7.1 (und 6.1, wenn VS 2008 verwendet wird), der VS 2010-Projekte erstellt, die auf .NET 3.5 abzielen. Die Web-Projekte werden dann mit aspnet_compiler (von v2 gemäß http://msdn.microsoft.com/en-us/library/ms229863.aspx#findingthecorrectversion) vorab kompiliert. Während der Vorabkompilierung erhielt ich die gleiche Fehlermeldung wie Sie für ein Projekt (nicht Web, einfach eine normale Bibliothek) mit einer Web-Referenz auf einen Webdienst. Es scheint, dass Windows SDK 7.1 die Registrierungspfade nicht korrekt für die Verwendung von .NET 3.5-Tools einrichtet (während Visual Studio dies tut). Dies führte dazu, dass die Web-Referenzen mit einer Ziel Laufzeit von .NET 4 kompiliert wurden (validiert mit Reflector), sodass aspnet_compiler v2 Probleme hatte. Ich verglich die Registrierungseinstellungen des Build-Servers und meiner lokalen Visual Studio-Installation, die zeigten, dass die .NET 3.5-Konfiguration für SDK 7.1 nicht gut war, also korrigierte ich den Build-Server wie unten angegeben. Meine Vermutung ist, dass das Web-Referenz-XML (im Nicht-Web-Projekt) mit sgen für .NET 4 vorcompiliert wurde, da kein korrektes .NET 3.5 sgen verwendet wurde. Nach der Anwendung der Registrierungsänderung lief alles einwandfrei (das untenstehende existierte nicht in der Registrierung meines Build-Servers, also habe ich es erstellt).

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDK-NetFx35Tools-x86]
"ComponentName"="Windows SDK .NET Framework 3.5 Multi-targeting Utilities"
"InstallationFolder"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\bin\\"
"ProductVersion"="7.1.7600.0.30514"

Nur als zusätzliche Anmerkung habe ich auch WindowsSdkVer verwendet, um 7.1 als das Standard-SDK festzulegen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X