2010-06-02 97 views
8

首先,我不太了解部署。我希望我的问题有道理。如何在包含第三方DLL文件的同时部署C#应用程序?

我需要将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,但任何不太昂贵的解决方案都可以。

您有何建议?

回答

1

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

10

只需将您的DLL添加到Visual Studio中的项目。在解决方案浏览器

  • 选择

    • 右键单击添加项目 - 现有项目
    • 浏览到DLL,然后单击下一步添加的小箭头,添加按钮,并添加为链接
    • 选择在解决方案浏览器
    • DLL右键单击它并选择属性
    • 设置生成操作内容
    • 套装复制到输出目录复制是否有更新的现在

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

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

    但是设置项目是一个全新的领域。因此,开始与它合作,并问一个新的问题,如果你陷入困境。

  • +1

    这将适用于DLL文件。但是,不适用于例如XML文件,因为它们将被标记为“数据文件”(列“发布状态”),因此在安装期间不会复制到ClickOnce应用程序的安装目录中(请参阅* [A。部署文件不部署XML文件](http://stackoverflow.com/questions/2344083/)*)。解决方法是将“数据文件”更改为“包含”。 – 2016-01-18 00:04:31

    2

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

    相关问题