2011-04-14 3 views
7

Nous déplaçons une partie de notre serveur vers .net 4.0. Nous avons déjà fait le passage à Vs2010 comme première étape, mais nous n'avons pas modifié le cadre cible d'un projet. Dans un deuxième temps, je déplace une partie spécifique de notre serveur vers la cible 4.0 afin que nous puissions utiliser certaines des nouvelles fonctionnalités.erreur TlbExp.exe: cet assembly est construit par un nouveau runtime

J'ai rencontré un problème lors de l'appel de TLBexp.exe sur une DLL de bibliothèque de classes qui cible la version 4.0. Cette DLL référence également beaucoup de DLL qui ciblent 2.0.

Je reçois l'erreur: TlbExp: erreur TX0000: Impossible de charger le fichier ou l'assembly 'file: Library.dll' ou l'une de ses dépendances. Cet assembly est construit par un runtime plus récent que le runtime actuellement chargé et ne peut pas être chargé.

J'appelle le TlbExp qui vient avec: Microsoft SDKs \ Windows \ v7.0A \ bin \ Dans la commande que j'appelle à l'invite de commande VS2010 je référence binaires v4.0.30319 (tels que mscorlib.tlb)

L'exécution de TLB sur une DLL 4.0 faisant référence à des bibliothèques 2.0 est-elle autorisée? Si oui, alors la raison pour laquelle je reçois cette erreur.

Voici l'appel de commande exact que j'utilise: "C: \ Program Files \ Microsoft SDK \ Windows \ v7.0A \ bin \ tlbexp.exe"/silent/win32/tlbreference: "C: \ Windows \ Microsoft. NET \ Framework \ v4.0.30319 \ mscorlib.tlb "/tlbreference:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.tlb"/tlbreference: "C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ System.Windows.Forms.tlb "/tlbreference:"C:\Windows\system32\stdole2.tlb" C: \ Dev \ Library.dll

Merci

Répondre

18

J'avais un ensemble de ciblage 4.0 , qui référencé un autre assembly qui avait un cadre cible de 3.5. Par conséquent, j'obtenais la même erreur lors d'une étape de «post-construction». Par essais et erreurs, j'ai découvert que la version de TLBExp trouvée dans ce dossier: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\ pouvait générer le fichier TLB avec succès.

HTH!

+1

Merci beaucoup Andrew. Fonctionne avec l'autre TLBExp. Je voterais votre réponse, mais j'ai besoin de 15 pour voter. – Escristian

+0

Merci. + 1 Je viens juste de trouver ça et ça m'a fait un pas de plus dans un projet sur lequel je travaille - ou peut-être juste un peu plus dans le fourré :). –

+0

Utilisez% ProgramFiles% pour le cross-bitness. –

5

Vous pouvez utiliser le chemin suivant pour TlbExp, qui sera repris automatiquement en fonction de la version cadre du projet:

$(TargetFrameworkSDKToolsDirectory)\tlbexp.exe 
+0

+1: En fait, c'est un très bon rappel sur les variables/macros de VisualStudio. Dans les étapes PreBuild/PostBuild visibles, il y a un bouton "Macros" qui ne présente qu'une infime partie des variables disponibles. Ils viennent tous de la couche MSBuild, et il y en a ** tonnes **. Principalement utilisable lors de l'adaptation de .csprojs à la main, mais dans l'étape Pre/PostBuild, ils sont également bien développés. – quetzalcoatl

Questions connexes