13 Stimmen

Wie kann man .tlb als Ressourcendatei in eine .NET Assembly DLL einbetten?

Wir verwenden unsere .NET Assembly DLL in nativem C++ über COM (CCW). Immer wenn ich eine neue Version meiner DLL erstelle, muss ich zwei Dateien (.dll und die entsprechende .tlb) an die Mitarbeiter senden, die sie in ihrem Code verwenden.

Ist es möglich, eine .tlb-Datei als Ressource in eine .NET DLL-Datei einzubetten?

1 Stimmen

Dieselben Schritte wie die Antwort unten, aber von MSDN: msdn.microsoft.com/de-us/library/ww9a897z.aspx

11voto

Eric Rosenberger Punkte 8837

Es ist nicht ganz einfach, dies mit Visual Studio .NET zu bewerkstelligen, aber es ist machbar. Im Grunde müssen Sie Folgendes tun:

  1. Erzeugen Sie Ihre TLB-Datei, z. B. "YourLibrary.tlb".

  2. Erstellen Sie mit einem Texteditor (z. B. Notepad oder Datei/Neu/Datei.../Textdatei in Visual Studio) eine Win32-Ressourcenskriptdatei, z. B. "YourLibrary.rc".

  3. Geben Sie in der Skriptdatei den folgenden Text wörtlich ein (ersetzen Sie aber natürlich den Namen Ihrer tatsächlichen TLB-Datei):

    1 typelib "IhreBibliothek.tlb"

  4. Speichern Sie die Skriptdatei in demselben Ordner wie die TLB-Datei.

  5. Wechseln Sie in einer Visual Studio-Eingabeaufforderung in den Ordner mit der Skriptdatei und kompilieren Sie sie mit dem folgenden Befehl:

    rc IhreBibliothek.rc

    Dadurch wird eine Win32-Ressourcendatei im selben Ordner mit dem Namen "YourLibrary.res" erzeugt.

  6. Klicken Sie in Visual Studio mit der rechten Maustaste auf den Projektknoten (z. B. "YourLibrary") im Projektmappen-Explorer und wählen Sie Eigenschaften.

  7. Wählen Sie auf der Registerkarte "Anwendung" unter "Ressourcen" die Option "Ressourcendatei" und suchen Sie die Datei "YourLibrary.res" aus Schritt 5.

  8. Speichern Sie das Projekt und erstellen Sie es neu.

Die TLB wird nun als Ressource in die DLL eingebettet, so dass andere COM-Anwendungen sie lesen können.

Wenn Sie die TLB-Datei später neu generieren, müssen Sie Schritt 5 wiederholen, um die Ressourcendatei neu zu kompilieren, und Schritt 8, um die neue Version in die DLL einzubetten.

All das gesagt, können Sie in der Lage, einige dieser mit Build Events oder durch benutzerdefinierte MSBuild Ziele in Ihre Projektdatei zu automatisieren, aber das ist eine ganz andere Diskussion.

0 Stimmen

Auf der Grundlage Ihrer Antwort habe ich ein Post-Build-Ereignis erstellt, um die Erstellung und Einbettung von .tlb zu automatisieren: thoughtandcode.blogspot.ru/2015/05/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X