C# получение версии неуправляемой DLL
Я звоню неуправляемой DLL из моего управляемого кода C# и хотел проверить, я звоню правильную версию.
Код, который я пытаюсь загрузить сборку (чтобы затем получить файл ресурса и затем получить версию):
cur_version = Assembly.LoadFile("X:\Workspace\yreceipts_pos\yRprintProcessor\Debug\yRprintProcessor.dll"); Это терпит неудачу из-за этой ошибки:The module was expected to contain an assembly manifest. (Exception from HRESULT: 0x80131018)
Кто-нибудь знает, как обойти это или есть лучший способ проверить версию неуправляемой DLL из управляемого кода C#?
Заранее спасибо Ричард
2 ответа
Как говорится в logicnp; 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
Удачи...
Причиной сбоя является то, что вы не можете использовать Assembly.Load для загрузки неуправляемых библиотек. Смотрите ссылку, предложенную Дэвидом Брауном.