Frage

Gibt es ein Tool zu importieren / COM-Typbibliotheken in C # -Code zu konvertieren, anstatt eine Baugruppe zu erzeugen? Das TLBIMP Werkzeug und die TypeLibaryConverter Klasse erzeugen nur Baugruppen.

Ich habe durch Ausführen Reflektor über die generierte Interop-Assembly und das Kopieren eines einfügen zerlegt Quelle einen gewissen Erfolg zerreißt die C # ComImport Definitionen hatten, aber dies erfordert in der Regel ziemlich viel manuelle Patchen, bevor es wird kompilieren.

Gewünschtes Ziel ist eine einzelne EXE ohne Satelliten Interop DLLs, so vielleicht die Antwort ILMerge verwenden, um effektiv den Interop-DLL in der EXE-Datei einbetten.

Ich war sicher, dass ich in der Vergangenheit über ein solches Werkzeug kommen würde - aber vielleicht ist es geträumt: -)

War es hilfreich?

Lösung 3

Wie ich vermutete ursprünglich die beste Lösung wird mit ILMerge . Ich kann über Teile eines COM API zum Einbetten nicht selektiv sein, aber es funktioniert gut genug.

Hier ist der Beitrag beim Aufbau Ereignis Command Line Ich verwende, die leicht genug sein sollte, wieder zu verwenden:

set MERGEFILES=Interop.Foo.dll Interop.Bar.dll

if "$(ConfigurationName)" == "Release" (
   ren "$(TargetFileName)" "_$(TargetFileName)"
   "$(ProgramFiles)\Microsoft\ILMerge\ILMerge.exe" /out:"$(TargetFileName)" "_$(TargetFileName)" %MERGEFILES%

   del "_$(TargetFileName)"
   del %MERGEFILES%
)

Andere Tipps

Ich bin mir nicht so sicher, dass es zu Ihnen sein wird, nützlich, aber der Quellcode für eine verwaltete Version von Tlbimp.exe hat auf CodePlex . VS2010 wird auf jeden Fall Ihr Problem lösen.

Dies wird nicht heute helfen, aber es ist ein Feature in der nächsten Version von C # kommt. Es ist NoPia oder Typ Embedding je nachdem, welche Präsentation genannt Sie lesen. Diese Funktion wird im Wesentlichen eine PIA-Baugruppe in verknüpfen, was auch immer Projekt, das Sie es aus referenzieren. Das Ende resulrt ist eine einzelne EXE, die keine Notwendigkeit, eine Interop / PIA DLL zu implementieren.

Mischas Beitrag zum Thema: http://blogs.msdn.com/mshneer/archive/2008/10/28/type-embedding-support-in-c.aspx

Kurzfristige obwohl, müssen Sie unter Umständen mit ILMerge oder Reflektor gehen + Code kopieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top