Quelle est la réelle différence entre ces deux options? Ce que je sais est:"S'inscrire à COM Interop" vs "Rendre l'ensemble COM visible"
Inscrivez-vous pour COM Interop
Cette option exécute regasm sur l'assemblage et enregistre l'assemblage en tant que composant COM (ou peut-être pas) dans le registre avec toutes les COM comme les entrées de registre. Cette étape génère-t-elle un fichier TLB? Quoi d'autre est fait?
Parfois, je vois une tlb est générée lorsque je compile le projet mais parfois non, pourquoi est-ce?
Marque assembly COM visible
Quel effet celui-ci a sur un ensemble? Si j'ai le type suivant à l'intérieur de cet assembly, ai-je encore besoin de spécifier "Make assembly COM Visible" même si mon type est marqué comme ComVisible?
[GuidAttribute("02810C22-3FF2-4fc2-A7FD-5E103446DEB0"), ComVisible(true)]
public interface IMyInterface
{
}
+1. Je suppose qu'une autre raison pour laquelle c'est facultatif est que vous n'avez pas toujours besoin d'enregistrer l'assembly sur votre serveur de build quotidien. Par exemple, vous exposez un assembly C# à COM et vous le consommez à partir de C++ via la directive '# import 'qui est heureuse d'utiliser le fichier .tlb. – sharptooth
+1: Je pense que par "tous les types dans l'assemblage [ComVisible]" vous voulez dire * tous les types publics * parce que les types publics sont ce que je vois dans le TLB exporté. – A9S6
Merci, les commentaires ont fusionné dans la réponse. –