Die Unterschiede zwischen dem mit VS2010 auf eine Maschine Gebäude installiert und auf einer Maschine mit dem 7.1 SDK installiert

StackOverflow https://stackoverflow.com/questions/4247437

  •  27-09-2019
  •  | 
  •  

Frage

Wir versuchen unsere Code-Basis zu aktualisieren Visual Studio 2010 zu verwenden, aber Probleme haben, immer alles auf unserem Build-Server sortierten. Wir wollen nicht, Visual Studio 2010 auf unserem Build-Server installieren und haben nur die .NET 4 Framework und SDK (v7.1) so installiert ist.

Wir wollen immer noch die .NET 3.5-Plattform zum Ziel (wir werden irgendwann in der Zukunft .Net 4 aktualisieren, wollen aber nicht nur noch) nicht.

Wir haben es geschafft, den Code zu kompilieren, aber jetzt laufen wir in Laufzeitfehler wie folgt aus.

Could not load file or assembly 'System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

Das Problem ist, dass Laufzeit versucht, die eingebettete Ressource deserialisieren und wenn ich an den Ressourcen in Reflektor sehen, sehe ich, dass sie alle .Net 4.0-Objekte sind. Zum Beispiel ist das Symbol unserer eine Windows-Anwendung vom Typ System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.

So sieht es aus wie MSBuild ist die Erstellung der Ressourcen falsch (eine andere Laufzeit an das Ziel verwendet wird)? Ich habe dies bestätigt, indem Sie auf meiner Dev-Maschine gebaut an den diffs der DLL suchen und dass auf dem Build-Server gebaut - es ist klar zu sehen, dass eine DLL-Ressourcen 2.0.0.0 Version und die andere (vom Build-Server) verwendet 4.0 .0.0. Die Projektreferenzen sind auf die V2.0.0.0 DLLs in beiden Fällen (wie man erwarten würde).

hat jemand eine Idee, warum MSBuild wird, um die Ressourcen als 4.0 Objekte kompilieren?

Vielen Dank im Voraus.

Chris

War es hilfreich?

Lösung

Wenn Sie ein Upgrade Ihre Lösung VS2010, haben Sie den gezielten Rahmen ändern? Sie können danach suchen, indem Sie die csproj Dateien in einem Texteditor anzeigen. Haben Sie den 7.0a Rahmen in Ihrem Build-Server haben?

EDIT:

Ich lief in die gleiche Problem vor einer Weile und es hat etwas mit Registrierungsschlüssel nicht festgelegt. Schauen Sie sich hier: http://connect.microsoft.com/VisualStudio/feedback/details/594338/tfs-2010-build-agent-and-windows-7-1-sdk-targeting -Netz-3-5-erzeugt-falsch-embedded-Ressourcen

Ich glaube, Sie brauchen, um den Registrierungsschlüssel manuell HKLM\Software\Microsoft\MsBuild\ToolsVersions\SDK35ToolsPath hinzufügen

Andere Tipps

Ich bin nicht sicher, ob das hilft, aber sehen Sie diesen Link in Bezug auf RequiresFramework35SP1Assembly Aufgabe

http://msdn.microsoft.com/en-us/library/ ff598689.aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top