Was ist der wahre Unterschied zwischen diesen beiden Optionen? Was ich weiß, ist:"Registrieren für COM Interop" vs "Make Assembly COM sichtbar"
Register für COM-Interop
Diese Option regasm auf der Baugruppe führt und registriert die Baugruppe als COM-Komponente (oder auch nicht) in der Registrierung mit allen COM wie Registry-Einträge. Erzeugt dieser Schritt eine TLB-Datei? Was wird noch getan?
Manchmal sehe ich eine Tlb generiert wird, wenn ich das Projekt kompilieren, aber manchmal nicht, warum ist das?
Fabrikat Montage COM sichtbar
Wie wirkt sich dieses auf einer Baugruppe hat? Wenn ich den folgenden Typ innerhalb dieser Assembly habe, muss ich noch die "Make Assembly COM Visible" angeben, obwohl mein Typ als ComVisible markiert ist?
[GuidAttribute("02810C22-3FF2-4fc2-A7FD-5E103446DEB0"), ComVisible(true)]
public interface IMyInterface
{
}
+1. Ich denke, ein weiterer Grund, warum es optional ist, ist, dass Sie die Assembly nicht immer auf Ihrem täglichen Build-Server registrieren müssen. Sie stellen beispielsweise eine C# -Assembly für COM bereit und verwenden sie in C++ über die Anweisung '# import', die gerne die TLB-Datei verwendet. – sharptooth
+1: Ich denke durch "alle Typen in Assembly [ComVisible]" meinst du * alle öffentlichen Typen *, weil die öffentlichen Typen sind, was ich im exportierten TLB sehe. – A9S6
Danke, Kommentare in der Antwort zusammengeführt. –