Les différences entre la construction sur une machine avec VS2010 installé et sur une machine avec le 7.1 SDK installé

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

  •  27-09-2019
  •  | 
  •  

Question

Nous essayons de mettre à jour notre base de code pour utiliser Visual Studio 2010, mais des difficultés à faire tout triés sur nos serveurs de construction. Nous ne voulons pas installer Visual Studio 2010 sur nos serveurs de construction et ainsi avons installé juste le framework .Net 4 et le SDK (v7.1).

Nous sommes toujours désireux de cibler la plate-forme .Net 3.5 (nous améliorerons à .Net 4 à un moment donné dans l'avenir, mais ne veulent pas tout de suite).

Nous avons réussi à obtenir le code à compiler, mais maintenant nous en cours d'exécution dans des erreurs d'exécution comme suit.

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.

Le problème est que l'exécution tente de désérialiser la ressource intégrée et si je regarde les ressources dans le réflecteur, je vois qu'ils sont tous .Net 4.0 objets. Par exemple, l'icône de fenêtres d'une application est de type System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.

Il semble donc que MSBuild compile les ressources de manière incorrecte (en utilisant un moteur d'exécution différent de la cible)? Je l'ai confirmé en regardant les diffs de la dll construite sur ma machine dev et construit sur le serveur de build - il est clair de constater que l'une des ressources de dll utilisent 2.0.0.0 la version et l'autre (à partir du serveur de build) utilise 4.0 .0.0. Les références du projet sont les dll v2.0.0.0 dans les deux cas (comme l'on peut attendre).

Est-ce que quelqu'un a une idée pour expliquer pourquoi MSBuild compile les ressources comme des objets 4.0?

Merci à l'avance.

Chris

Était-ce utile?

La solution

Lorsque vous mettez à jour votre solution à VS2010, avez-vous changé le cadre ciblé? Vous pouvez chercher en consultant les fichiers csproj dans un éditeur de texte. Avez-vous le cadre 7.0a dans votre serveur de build?

EDIT:

Je suis tombé sur le même problème il y a quelque temps et il a quelque chose à voir avec la clé de Registre non définie. Jetez un coup d'oeil ici: http://connect.microsoft.com/VisualStudio/feedback/details/594338/tfs-2010-build-agent-and-windows-7-1-sdk-targeting -net-3-5-génère embarqués mal-ressources-

Je pense que vous devez ajouter manuellement la HKLM\Software\Microsoft\MsBuild\ToolsVersions\SDK35ToolsPath clé de Registre

Autres conseils

Je ne sais pas si cela aide, mais voir ce lien au sujet RequiresFramework35SP1Assembly Tâche

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top