Version einer (Unmannaged) DLL (eingebunden als Resource) ohne entpacken ermitteln,...

28/05/2009 - 06:52 von Kerem Gümrükcü | Report spam
Hallo,

ich habe in meinem Projekt eine (Unmanaged) DLL als Resource einkompilliert.
Wie kann ich nun die Versionsinformationen (FileVersionInfo) davon
bekommen, ohne die Datei zu entpacken und auf einen pyhsikalischen
Pfad zuzugreifen? Jemand eine Idee? Ich habe mir die klassischen
Möglichkeiten mit der Windows API angesehen und die VerQuery*
Funktionen benötigen einen speziell formatierten Speicher von
einem Aufruf der Funktion GetFileVersionInfo(Ex). Den Speicher
selber ermitteln und darauf in den anderen Funktionen zeigen
wird nicht klappen,...

Wàre die DLL managed, könnte ich diese aus dem Bytestream
in eine seperate AppDomain laden und dann so Attribute wie
Version, Name, etc, abfragen, aber leider ist es eine Unmanaged
C-Dll,...

Vielleicht hat jemand einen guten Ansatz oder eine einfache
Lösung, ich will nicht unbedingt so was wie das hier schreiben:

http://www.joachim-bauch.de/tutoria...emory.html

Die DLL hat einen C-Export, der mir die Library Version zurückgibt,
die in der resource einkompilliert ist, also würde es reichen, wenn
ich irgendwie diese Funtion aufrufen könnte.

Ich weiss, diese Frage ist sehr schràg, aber "vielleicht" hat jemand
einen Ansatz. Es geht um das vermeiden des "Entpackens" der Dll,...



Grüße

Kerem

Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Latest Project: http://www.pro-it-education.de/soft...iceremover
Latest Open-Source Projects: http://entwicklung.junetz.de
"This reply is provided as is, without warranty express or implied."
 

Lesen sie die antworten

#1 Frank Dzaebel
28/05/2009 - 07:55 | Warnen spam
Hallo Kerem,

ich habe in meinem Projekt eine (Unmanaged) DLL als Resource
einkompilliert. Wie kann ich nun die Versionsinformationen
(FileVersionInfo) davon bekommen, ohne die Datei zu entpacken und auf
einen pyhsikalischen Pfad zuzugreifen?



Fiele mir zum Beispiel ein, zunàchst den Bytestream
zu holen ...:
Assembly asm = Assembly.GetExecutingAssembly();
Stream ioStream = asm.GetManifestResourceStream(
GetType().Namespace+".Dein.dll");
und dann gemàss PE-Format die Versions-Stelle
selber zu holen:

[Microsoft Portable Executable and Common Object File Format Specification]
http://www.microsoft.com/whdc/syste...ECOFF.mspx

Das ist dann aber eigentlich kein C# Thema mehr.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen