Zunächst einmal, im Gegensatz zu einem C++ - Compiler oder den vielen anderen Compilern, die Typbibliotheken lesen können, lesen weder die CLR noch .NET Compiler tatsächlich eine Typbibliothek. Sie hängen beide von einer Interop-Bibliothek ab, einer .NET-Assembly, die aus einer Typbibliothek generiert wird. Es enthält nur deklarierte Deklarationen aus der TLB in einem Format, das sowohl die CLR als auch die Compiler verstehen können.
Das primäre Tool, das dies tut, ist Tlbimp.exe, der Typbibliothekimporteur.
Das Ausführen von Tlbimp.exe ist keine schwierige Anforderung, obwohl Sie dies auf einem Buildserver in Betracht ziehen würden. Die IDE unterstützt auch das Durchsuchen registrierter Typbibliotheken im Dialogfeld Verweis hinzufügen. Das Element, das dem Projekt hinzugefügt wird, enthält den Registrierungsschlüssel und nicht den Typ Bibliotheksname. Die MSBuild-Task <ResolveComReference>
generiert die Interop-Assembly aus den Registrierungsinformationen.
Der Hauptvorteil dabei ist, dass es jetzt einfach ist, die Manifesteinträge automatisch zu generieren, damit der COM-Server ohne Registrierung verwendet werden kann. Auch bekannt als "reg-free COM". Die Registrierungsinformationen werden benötigt, um die Manifest-Einträge bereitzustellen. Wird einfach aktiviert, indem Sie die isolierte Eigenschaft für die Referenz auf True setzen. Sehr wünschenswert.
Ich bin nicht sicher, dass jede alte C++ - Anwendung eine COM-DLL ohne Registrierung ausführen kann; das scheint die Antithese von COM selbst zu sein. Vielleicht verwendet diese Anwendung die von dieser DLL bereitgestellte Funktionalität direkt, ohne den COM-Server-Vermittler zu durchlaufen. – antiduh
@antiduh Hinweis Ich frage nur über Kompilieren, nicht ausgeführt. – TCS
Von .NET können Sie auf den TLB verweisen, warum soll er registriert werden? –