web-dev-qa-db-fra.com

Que fait réellement "S'inscrire à COM Interop"?

Que fait exactement l'option de projet VS "S'inscrire à l'interopérabilité COM"? Parce que lorsque je crée ma bibliothèque avec cette option activée, je peux appeler CreateObject sur ma bibliothèque à partir de VBScript. Mais si je construis sans cela et que j'exécute manuellement regasm, CreateObject échoue. Je me demande donc - que fait VS2010 que je ne fais pas?

56
hackerhasid

Il fait la même chose que l'exécution de Regasm.exe avec les options/tlb et/codebase. L'option/codebase est probablement celle que vous avez oubliée. Regasm aime supposer que vous mettez le DLL dans le GAC et génère un avertissement lorsque vous ne le faites pas. Le GAC est en effet un très bon moyen d'éviter DLL Hell , toujours un problème COM. Mais non approprié sur votre machine de développement, vous ne voulez pas polluer le GAC lors du développement et du test du code. Cela ne concerne que la machine de votre utilisateur, celle qui est susceptible d'être exposée à plusieurs versions.

L'utilisation d'une mauvaise version de Regasm.exe sur une machine 64 bits est un autre moyen d'avoir des ennuis, il existe généralement 4 versions sur votre machine. Assurez-vous de distinguer les versions 32 bits et 64 bits (c:\windows\Microsoft\framework vs framework64), elles écrivent des clés de registre différentes. Vous souhaitez choisir celle qui est compatible avec l'application cliente. L'utilisation des deux est également acceptable, le code .NET peut s'exécuter dans les deux modes, mais assez inhabituel. Et faites la distinction entre les versions v2.0.50727 (.NET 2.0 à 3.5SP1) et les versions v4.0. Choisir la bonne invite de commande Visual Studio est la moitié de la bataille.

56
Hans Passant