2010-09-03 4 views
5

Nous avons une application Web ASP.Net exécutée dans Visual Studio 2010 qui cible .Net 3.5. Il est en cours de construction par TFS 2010. Cette application Web possède quelques références Web, de sorte que la construction crée une DLL XmlSerializers associée. Cette DLL, cependant, est un assembly .Net 4.0.Création de TFS 2010 .Net 4.0 XmlSerializers DLL pour l'application .Net 3.5

Quand je lance cette application web à partir de la construction, je reçois l'erreur:

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.

Nous utilisons un fichier .proj msbuild qui travaillait sous TFS 2008 (en utilisant la « mise à niveau de modèle » dans la construction Définition). J'ai vu this question et this one, mais ceux-ci mentionnent l'utilisation d'une étape de construction SGen spécifique. Nous ne sommes pas. De plus, la solution proposée implique de coder en dur le chemin vers le SGEN 7.0A, qui est juste ... laid.

Existe-t-il un moyen de forcer la compilation TFS 2010 à compiler cette DLL XmlSerializers en tant qu'assemblage .Net 3.5?

+0

Avez-vous défini l'infrastructure cible sur le projet de sérialiseur sur 3.5? Vérifiez les propriétés du projet. – Robaticus

+0

Je ne suis pas sûr de ce que vous entendez par "le projet sérialiseur". Le projet qui consomme les références Web lui-même cible 3.5. Y a-t-il un autre paramètre pour les références Web? –

Répondre

4

Le problème racine était une valeur non valide dans le Registre. La valeur SDK35ToolsPath sous HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 4.0 était:

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

Cependant, le serveur de build avait SDK Windows version 7.1. Donc, je corrigeais la valeur à:

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

Puis XmlSerializers DLL utilisais maintenant .Net 2.0.

Questions connexes