C# Ottenere la versione di DLL non gestita
-
20-09-2019 - |
Domanda
Sto chiamando una DLL non gestita dal mio codice C# gestito e volevo controllare che sto chiamando la versione giusta.
Il codice che sto cercando di caricare l'assembly (per quindi ottenere il file delle risorse e quindi ottenere la versione) è: cur_version = assembly.loadFile ("x: workspace yreceipts_pos yrprintprocessor debug yrprintprocessor.dll"); Non riesce a causa di questo errore:The module was expected to contain an assembly manifest. (Exception from HRESULT: 0x80131018)
Qualcuno sa come aggirare questo o avere un modo migliore per controllare la versione di una DLL non gestita dal codice C# gestito?
Grazie in anticipo, Richard
Soluzione
Come affermato da logicnp; Assembly.load è solo per assemblaggi gestiti. Per determinare la versione di qualsiasi file di versioni è possibile utilizzare System.Diagnostics.fileversionInfo.getVeversionInfo (fileName) e per caricare e chiamare le procedure non gestite in DLLS è possibile fare riferimento a questi articoli:
http://blogs.msdn.com/jonathanswift/archive/2006/10/02/780637.aspx http://blogs.msdn.com/jonathanswift/archive/2006/10/03/dynamicamente-calling-an-unmanaged-dll-from-.net-_2800_c_23002900_.aspx
Buona fortuna...
Altri suggerimenti
Il motivo per cui fallisce è perché non è possibile utilizzare Assembly.Load per caricare DLL non gestite. Vedi il link suggerito da David Brown.