“S'inscrire pour COM Interop” vs “Faire de l'assemblée COM visibles”
Quelle est la réelle différence entre ces deux options? Ce que je sais, c'est:
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
{
}
InformationsquelleAutor A9S6 | 2010-09-13
Vous devez vous connecter pour publier un commentaire.
"Faire de l'assemblée COM visible" est un gros marteau pour faire tous 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é, de sorte qu'un client COM pouvez la retrouver. Qui utilise seulement un nombre d'identifier l'objet qu'il veut créer, le GUID, un de plus de recherche est nécessaire pour trouver ce que les DLL qu'il implémente. L'inscription implique l'écriture de clés dans la
HKLM\Software\Classes\CLSID\{guid}
partie de la base de registre. Vous pouvez faire vous-même en cours d'exécutionRegasm.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. Il est souhaitable car elle permet à la vieille copie de la DLL est annulé automatiquement avant de l'écraser, qui empêche le registre de la pollution. 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 n'avez tout simplement pas envie de l'enregistrer, 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.
Outre les observations formulées dans la réponse sélectionnée, l' .tlb fichier n'est pas créé si le type ou les méthodes changé sans supprimer d'abord l'enregistrement correspondant de la Windows la base de Registre (ou la fermeture de l'application ou du service que l'usage de la bibliothèque), à l'aide de l'option /U de la RegAsm utilitaire:
Aussi, il est important de mentionner que le registre de la consommation de la bibliothèque en tant que COM, ne fonctionne que dans le développement de la machine si il est compilé avec les options Inscrire pour COM interop et Faire de l'assemblée COM-Visible. Il est nécessaire de s'inscrire manuellement dans chaque ordinateur de destination à l'aide de l'indication de la ligne de commande ou de générer un script qui est exécuté lorsque la bibliothèque est installée.
Mes excuses pour placer ce commentaires comme réponse, mais je ne peux pas placer des commentaires dans un post, parce que demandez de 50 points de réputation.