Die Unterschiede zwischen dem mit VS2010 auf eine Maschine Gebäude installiert und auf einer Maschine mit dem 7.1 SDK installiert
-
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
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