2010-03-17 102 views
2

我从托管的c#代码调用非托管dll,并希望检查我打电话的版本是否正确。C#获取非托管dll版本

的代码我试图加载程序集(以再拿到资源文件,然后获取版本)是: cur_version = Assembly.LoadFile(“X:\工作区\ yreceipts_pos \ yRprintProcessor \调试\ yRprintProcessor。 DLL“); 它的失败,因为这个错误的: The module was expected to contain an assembly manifest. (Exception from HRESULT: 0x80131018)

有谁知道如何解决这个问题或有更好的方法来检查从托管的C#代码的非托管的DLL的版本?

由于提前, 理查德

+2

请参阅:http://stackoverflow.com/questions/349943/read-a-non-net-dll-version-from-c – 2010-03-17 04:05:30

回答

6

正如logicnp所述; Assembly.Load仅适用于托管程序集。要确定您可以使用System.Diagnostics.FileVersionInfo.GetVersionInfo(文件名),并加载并调用DLL中,你可以参考这些文章非托管程序的任何版本-ED文件的版本:

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

谢谢你 - 我会upvote,但我不有足够的积分:) – 2010-03-23 03:08:07

4

失败的原因是监守你不能使用Assembly.Load加载托管DLL。请参阅David Brown建议的链接。