2010-11-26 33 views
4

J'ai récemment eu besoin de produire un assembly interop. Après quelques recherches, j'ai découvert tlbimp.exe. Mon problème suivant était que ma bibliothèque COM ne venait pas avec un fichier .tlb. De plus, googling a révélé que le type lib est souvent inclus en tant que ressource dans un fichier exe/dll. Assez sûr, l'ouverture de l'exe dans VS2010 a révélé qu'il est de type lib et un clic droit plus tard, j'ai eu un fichier tlb à utiliser avec tlbimp. Impressionnant.Comment extraire TypeLib d'un COM exe sur la ligne de commande

Cependant, ce n'est pas un très bon processus. Devrais-je avoir besoin de le faire dans le futur, existe-t-il un moyen d'extraire un Type Lib (fichier .tlb) à partir d'un fichier .exe en utilisant la ligne de commande? Tlbimp.exe peut gérer une ressource de bibliothèque de types à l'intérieur d'un EXE très bien.

Répondre

8

Par exemple:

C:\temp\temp>tlbimp c:\windows\system32\wiaacmgr.exe 
Microsoft (R) .NET Framework Type Library to Assembly Converter 3.5.30729.1 
Copyright (C) Microsoft Corporation. All rights reserved. 

Type library imported to WIAACMGRLib.dll 

L'automatisation est assez risquée. Une bibliothèque de types est tout à fait équivalente à une référence d'assembly. Si cela a changé, vous voulez le savoir. Pas seulement parce que vous pourriez avoir à modifier votre code d'interopérabilité et à le retester, DLL Hell frappe aussi à votre porte.

+1

Si je pouvais upvote ce deux fois je le ferais. –

+0

Merci Hans. Le COM exe change assez fréquemment et un certain nombre de nos projets ciblent .net 2. L'inclusion de dlls interopérables dans vs2010 contre .net 2 nécessite quelques erreurs, alors j'étudie certaines pistes. Comme nos projets ciblent une seule version de la bibliothèque COM, les risques de DLL Hell sont faibles, mais je vous suis reconnaissant d'avoir mis en évidence le risque. À votre santé, –