如何在部署C#应用程序时包含第三方DLL文件?

11

首先,我对部署不是很了解。希望我的问题讲得清楚。

我需要将一个 C#应用程序安装/部署到多台桌面电脑上。它需要第三方 DLL 文件:一个 C++ 库(“lpsolve55.dll”,对于那些感兴趣的人来说,这是一个免费的 MIP/LP 求解器,请参见 lpsolve.sourceforge.net/5.5/)。我在我的代码中如下使用它:

    [DllImport("lpsolve55.dll", SetLastError = true)]
    public static extern bool add_column(int lp, double[] column);

为了测试,我已经手动将 .dll 文件复制到 project\bin\release 目录下,它可以正常运行。

我的问题是:我需要一个安装程序来管理 .dll 的安装。鉴于我使用的是 Visual C# 2008 Express Edition,因此我正在考虑使用 ClickOnce 部署,但任何不太昂贵的解决方案都可以。

你有什么建议?

3个回答

13

只需在Visual Studio项目中添加您的DLL即可。

  • 在解决方案浏览器中右键单击项目
  • 选择添加 - 现有项
  • 浏览到DLL并单击添加或者单击添加按钮旁边的小箭头,然后选择添加为链接
  • 在解决方案浏览器中选择您的DLL
  • 右键单击它并选择属性
  • 生成操作设置为内容
  • 复制到输出目录设置为如果较新则复制

现在,您的文件将自动复制到调试或发布文件夹中。

要部署,可以将安装项目添加到您的解决方案中。当您将第一个项目的输出添加到安装项目时,DLL将自动添加到安装中。

但是,安装项目是一个全新的领域。因此,请开始使用它,并在遇到问题时提出新问题。


3
这将适用于DLL文件。然而,默认情况下不适用于例如XML文件,因为它们将被标记为“数据文件”(列“发布状态”),结果在安装期间不会复制到ClickOnce应用程序的安装目录中(请参阅*.deploy文件未部署XML文件*)。解决方法是将“数据文件”更改为“包括”。 - Peter Mortensen

3

您可以将dll文件直接包含在项目中,并使用ClickOnce部署整个项目。将其添加到解决方案中,将构建操作设置为“内容”。将“复制到输出目录”设置为“始终复制”。发布时,您应该能够在发布文件夹中看到该文件。您还可以检查应用程序文件对话框(位于项目属性的发布选项卡中),以确保它将被包含在内。


2
如果ClickOnce能够携带该DLL文件并将其复制到应用程序文件夹中,那么我会使用它。如果它可以检查系统上是否存在该DLL文件(system32文件夹)并使用它,则更好,这样您就不必在目标计算机上拥有多个二进制版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接