我有一个正在处理的项目,我在其中解析.vbp文件,其中包含程序集路径列表及其GUID(以及其他内容)。解析文件的目的是使用每个程序集的完整路径来加载它们,然后使用Reflection获取有关每个程序集的信息,例如它的接口以及它们定义的方法和属性。
现在我的代码到目前为止在托管程序集(例如用C#编写的.exe)上运行得很好,但是所有正在加载的程序集都是 unmanaged C ++ / VB程序集。当我试着打电话时:
var assemblyPath = @"C:\*path to unmanaged .dll*";
var assemblyObj = Assembly.LoadFrom(assemblyPath);
在非托管程序集上,我得到一个BadImageFormat异常,这是预期的,因为它不是托管程序集。我一直在寻找如何解决这个问题,但到目前为止我发现的大部分信息一直在询问实际使用非托管程序集中定义的内容。在这些情况下,解决方案需要知道诸如用户试图从非托管程序集中获取的函数的名称等信息,以便在其托管应用程序中使用。我所知道的关于程序集的唯一事情是它们的路径,名称,以及它们是非托管的C ++ / VB。我不需要调用任何函数或使用来自这些程序集的任何东西,我只需要获取它们的信息,例如它们定义的接口的名称和这些接口中方法的签名。
我发现看起来很有前途的两页:
https://msdn.microsoft.com/en-us/library/aa645736(v=vs.71).aspx
https://msdn.microsoft.com/en-CA/library/ch59zxfc(v=vs.90).aspx
虽然我已经仔细研究了这些内容,但我无法宣称自己精通反思,甚至是.NET,因此我并不确定自己应该采取什么措施。 /如何实现我想要做的事情。