75 votes

"S'inscrire à COM Interop" vs "Rendre l'assemblage COM visible"

Quelle est la réelle différence entre ces deux options? Ce que je sais, c'est:

S'inscrire pour COM Interop
Cette option exécute regasm sur l'assemblée et des registres de l'assemblée comme un composant COM(ou pas) dans la base de registre avec tous les COM comme des entrées de registre. Cette étape génère un fichier TLB? Quoi d'autre est fait?

Parfois, je vois un tlb est généré lorsque je compile le projet, mais parfois pas, pourquoi est-ce?

Faire de l'assemblée COM visibles
Quel impact cela a sur une assemblée? Si j'ai le type suivant à l'intérieur de cette assemblée, dois-je encore préciser les "Faire de l'assemblée COM Visibles" même si mon type est marqué comme ComVisible?

[GuidAttribute("02810C22-3FF2-4fc2-A7FD-5E103446DEB0"), ComVisible(true)]
public interface IMyInterface
{
}

106voto

Hans Passant Points 475940

"Faire de l'assemblée COM visible" est un gros marteau pour faire tous les types publics dans l'assemblée [ComVisible]. Rarement souhaitable, vous pouvez sélectionner les types spécifiques que vous souhaitez être visible, comme vous l'avez fait dans votre extrait de code.

Après l'assemblée est construit, il doit être enregistré afin qu'il devienne utilisable par les clients COM. Cela implique l'écriture de clés de registre dans l' HKLM\Software\Classes\CLSID\{guid} partie du registre. Vous pouvez le faire vous-même en exécutant Regasm.exe /codebase /tlb ou vous pouvez le laisser jusqu'à la construction du système pour le faire automatiquement après la création de l'assemblée. Qui est ce "Registre pour COM interop" ne. VS a besoin pour fonctionner élevée d'avoir accès en écriture à ces clés de registre, une raison pour le rendre facultatif. Ou vous ne voulez pas vous inscrire, commun sur les serveurs de build. Je ne peux pas commenter sur pourquoi vous arrivait de ne pas obtenir l' .tlb sans plus de diagnostics.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X