部署VB.NET程序无法在同一文件夹中找到dll

问题描述 投票:1回答:3

我在VB.NET中编写了一个程序,它使用了几个我用c ++编写的.dll。 dll从旧版本的程序中包含一些函数。在我的开发计算机上一切正常但我构建了一个发行版本,将它和dll复制到目标机器上,并且.exe​​启动正常。当程序试图使用.dll中的函数时,它会抛出异常并说“无法加载DLL”c:/ path / my.dll“无法找到指定的模块”。

我不知道它是否有任何区别,但我使用以下命令在主vb项目中定义dll函数:

Declare Function MyFunction Lib "c:/the path/my.dll" (ByVal in1 as Double, ByRef out1 as Double) as Integer

我检查了目标上的.net框架,版本4似乎与开发计算机一样安装。两者都是Windows XP机器。我不知道这是我编写.dll的方式还是我的vb.net项目的方式。任何帮助表示赞赏。

vb.net deployment dll
3个回答
3
投票

使用相对于可执行文件的路径,而不是绝对路径。

或者,更好的是,根本不使用路径,只列出dll文件的名称。然后将dll作为资源添加到项目中。然后,您应该能够轻松地将安装项目内部捆绑在一起,并且它们将自动最终放在正确的位置进行调试和部署。


1
投票

如果我没有弄错的话,您希望您的应用程序能够与您在机器上使用和使用的所有.dll文件一起使用。最简单的方法是发布您的程序或应用程序。但首先,您必须按照以下步骤操作才能包含您希望已发布程序使用的所有.dll文件。

  1. 单击Project选项卡并选择Add References…菜单。
  2. 在打开的新窗口中,使用Browse…选项卡找到要添加到项目中的文件,然后单击Add
  3. 然后从项目菜单中选择您的项目属性:例如,如果您的项目名为Johns_App,那么在项目选项卡中,您将找到Johns_App Properties。单击此按钮,将转到新窗口。
  4. 在这个新窗口中,单击Publish选项卡,然后从Application Files…选项卡中,您可以检查,包含和排除项目文件。那你就定了。
  5. 我建议使用Publish Wizard…,因为它会一步一步引导你。

希望这可以帮助


0
投票

找到了引用同样问题的CodeProject page的链接。

基本上,您需要检查DLL文件的所有依赖项是否在运行位置可用。使用Microsoft Dependency Walker使我得到了一个解决方案,即我的VB应用程序中使用的一个dll文件引用了另一个dll文件。将其他DLL与其他运行文件放在一起后不再出错!

© www.soinside.com 2019 - 2024. All rights reserved.