从原始位置删除DLL时不起作用

时间:2014-06-30 21:50:13

标签: .net vb.net dll

我在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创建Interop DLL。我可以通过使用VS2010 Express来解决这个问题。

1 个答案:

答案 0 :(得分:2)

当您引用COM库时,VS会生成Interop DLL,这是一个.NET程序集,允许您的.NET应用程序与COM库进行互操作。部署时,Interop库必须与EXE位于同一文件夹中,但仍需要在目标计算机上存在并注册COM库,否则无法与之互操作。