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

时间:2010-06-02 08:11:28

标签: c# deployment clickonce dll

首先,我对部署知之甚少。我希望我的问题有道理。

我需要将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也将安装。我正在考虑ClickOnce部署,因为我正在使用Visual C# 2008 Express Edition,但任何不太昂贵的解决方案都可以。

你有什么建议?

3 个答案:

答案 0 :(得分:11)

只需将您的DLL添加到Visual Studio中的项目中。

  • 右键单击解决方案查看器中的项目
  • 选择添加 - 现有项目
  • 浏览到DLL并点击添加添加按钮旁边的小箭头和添加为链接
  • 在解决方案查看器中选择您的DLL
  • 右键单击它并选择“属性”
  • 构建操作设置为内容
  • 复制到输出目录设置为如果较新则复制

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

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

但是一个安装项目是一个全新的领域。所以,如果你遇到它就开始使用它并提出一个新问题。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

如果ClickOnce能够携带该DLL文件并将其复制到应用程序文件夹,我会使用它。如果它可以检查系统(system32文件夹)上是否存在DLL文件并使用它,那就更好了,所以你在目标计算机上没有多个版本的二进制文件。