2010-09-03 2 views
5

Wir haben eine ASP.Net-Webanwendung in Visual Studio 2010 ausgeführt wird, die. NET 3.5 zielt. Es wird von TFS 2010 erstellt. Diese Webanwendung verfügt über einige Webverweise, sodass der Build eine verwandte XmlSerializers-DLL erstellt. Diese DLL ist jedoch eine .NET 4.0-Assembly.TFS 2010 Erstellen. NET 4.0 XmlSerializers DLL für. NET 3.5-Anwendung

Wenn ich diese Web-Anwendung aus dem Build laufen lasse, erhalte ich die Fehlermeldung:

Could not load file or assembly 'BLAH_BLAH_WEB_APPLICATION_NAME.XmlSerializers' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.

Wir haben eine msbuild .proj Datei verwenden, die unter TFS 2008 arbeiten (mit dem „Template Upgrade“ im Build Definition). Ich sah this question und this one, aber diese erwähnen mit einem bestimmten SGen Build-Schritt. Wir sind nicht. Zusätzlich beinhaltet die vorgeschlagene Lösung eine harte Kodierung des Pfades zur 7.0A SGen, die nur ... hässlich ist.

Gibt es eine Möglichkeit, den TFS 2010-Build zu erzwingen, diese XmlSerializers-DLL als .Net 3.5-Assembly zu kompilieren?

+0

Haben Sie das Zielframework für das Serialisierungsprojekt auf 3,5 festgelegt? Überprüfen Sie die Projekteigenschaften. – Robaticus

+0

Ich bin nicht sicher, was Sie unter "das Serialisierungsprojekt" verstehen. Das Projekt, das die Webreferenzen selbst verbraucht, ist auf 3,5 ausgerichtet. Gibt es eine andere Einstellung für die Webreferenzen? –

Antwort

4

Das Stammproblem war ein ungültiger Wert in der Registrierung. Der SDK35ToolsPath Wert unter HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 4.0 war:

$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\[email protected])

jedoch der Build-Server 7.1 Windows SDK Version hatte. Also korrigierte ich den Wert zu sein:

Dann XmlSerializers DLL wurde jetzt mit. NET 2.0.