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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top