2010-03-17 4 views
2

Я вызываю неуправляемую dll из моего управляемого кода C# и хочу проверить, что я вызываю правильную версию.C# получение версии неуправляемой dll

код Я пытаюсь загрузить сборку (чтобы затем получить файл ресурсов, а затем получить версию) является: cur_version = Assembly.LoadFile ("X: \ Workspace \ yreceipts_pos \ yRprintProcessor \ Debug \ yRprintProcessor. длл "); Это неудачу из-за этой ошибки: The module was expected to contain an assembly manifest. (Exception from HRESULT: 0x80131018)

Кто-нибудь знает, как обойти это или есть лучший способ, чтобы проверить версию неуправляемых DLL из управляемого C# код?

Спасибо заранее, Ричард

+2

См. Http://stackoverflow.com/questions/349943/read-a-non-net-dll-version-from-c –

ответ

6

Как указано логикой np; Assembly.Load предназначен только для управляемых сборок. Для определения версии любого файла версии-эд можно использовать System.Diagnostics.FileVersionInfo.GetVersionInfo (имя файла), а также для загрузки и вызова неуправляемой процедуры в DLL, вы можете обратиться к следующим статьям:

http://blogs.msdn.com/jonathanswift/archive/2006/10/02/780637.aspx http://blogs.msdn.com/jonathanswift/archive/2006/10/03/Dynamically-calling-an-unmanaged-dll-from-.NET-_2800_C_23002900_.aspx

Удачи ...

+0

Спасибо за это - я бы поднял, но не знаю еще хватает очков :) –

4

Причина она не является, потому что вы не можете использовать Assembly.Load для загрузки неуправляемых библиотек DLL. См. Ссылку, предложенную Дэвидом Брауном.

Смежные вопросы