【发布时间】:2014-07-08 02:00:00
【问题描述】:
我正在用 VB.NET 编写一个应用程序,它的一个要求是与一个硬件接口以进行光功率测量。生产硬件的公司在机器上有 DLL(运行 Windows 2000 或 XP,取决于我看的是哪一个),我们目前有与这些 DLL 一起工作的软件,并且是用 VB6 编写的。
除了与这些机器交互之外,我正在编写的应用程序还需要与其他使用不同公司生产的硬件进行测量并使用不同调用的机器进行交互。由于我不知道 DLL 是否会一直存在,所以我决定将它们包含在程序中。
我在 VB6 项目中检查了哪些引用正在被使用,并基于这些,我将必要的 DLL 转移到项目中,将它们作为引用加载,然后编译项目。但它没有运行。我尝试复制或不复制 DLL,将它们放在我用来编写应用程序的计算机上的同一路径中。我所做的一切似乎都会导致错误如下:
无法加载文件或程序集 Interop.Instrument12001b,Version=1.0.0.0,Culture=neutral,Public Key Token = null 或其依赖项之一。系统找不到指定的文件。
在这一点上,我不确定我还剩下什么选择。我可以尝试在运行时加载 DLL,但是 1)我可以忽略错误来编译程序吗?和 2) 即使我不知道 DLL 的内容,它也会起作用吗?
编辑: 事实证明,整个问题是由于 VS2013 Express 中的一个错误造成的。无论出于何种原因,该特定版本的 Visual Studio 都不会为 .NET 2.0 创建互操作 DLL。我可以通过使用 VS2010 Express 来解决这个问题。
【问题讨论】:
-
您可以使用Assembly Binding Log Viewer 解决此类问题。