"Registrieren für COM Interop" vs "Make Assembly COM sichtbar"
Was ist der wirkliche Unterschied zwischen diesen beiden Optionen? Was ich weiß ist:
Für COM-Interop registrieren
Diese Optionen führt regasm auf die Montage und registriert die assembly als COM-Komponente(oder vielleicht auch nicht) in der registry, die mit allen COM-wie registry-Einträge.
Funktioniert dieser Schritt erzeugt ein TLB-Datei? Was ist sonst noch getan?
Manchmal sehe ich eine tlb generiert wird, wenn ich das Projekt kompilieren aber manchmal nicht, warum das so ist?
Make assembly COM-sichtbar
Was hat das für Auswirkungen hat auf einer Versammlung? Wenn ich den folgenden Typ in dieser assembly, brauche ich dann noch angeben das "Make assembly COM-Sichtbar", obwohl mein Typ ist gekennzeichnet als ComVisible?
[GuidAttribute("02810C22-3FF2-4fc2-A7FD-5E103446DEB0"), ComVisible(true)]
public interface IMyInterface
{
}
InformationsquelleAutor der Frage A9S6 | 2010-09-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
"Make assembly COM-sichtbar" ist, einen großen hammer, um alle öffentlichen Typen in der assembly [ComVisible]. Selten wünschenswert wird, möchten Sie wählen die spezifische Dateitypen, die Sie wollen sichtbar sein, wie Sie es in Ihrer snippet.
Nachdem die Versammlung gebaut ist, muss es registriert werden, so dass ein COM-client finden Sie es zurück. Die verwendet nur eine Nummer identifiziert das Objekt, das er schaffen will, die GUID, eine zusätzliche lookup notwendig ist, um herauszufinden, welche DLL implementiert. Die Registrierung beinhaltet das schreiben Schlüssel in die
HKLM\Software\Classes\CLSID\{guid}
Teil der Registrierung. Sie können es selbst tun durch ausführenRegasm.exe /codebase /tlb
oder lassen Sie es bis zu den build-system zu tun es automatisch nach dem erstellen der assembly.Was ist was "für COM-interop Registrieren" nicht. Es ist wünschenswert, da es sicherstellt, dass die alte Kopie der DLL wird nicht registriert automatisch, bevor es überschrieben wird, verhindert, dass registry-Verschmutzung. VS laufen muss, erhöht, um den Schreibzugriff auf die registry-Schlüssel, ein Grund dafür, dass es optional ist. Oder Sie wollen einfach nicht, um es zu registrieren, Häufig auf Servern zu bauen. Ich kann nicht kommentieren, warum würden Sie manchmal nicht kommen .tlb-ohne weitere Diagnostik.
InformationsquelleAutor der Antwort Hans Passant