【问题标题】:How to deploy a C# application while including third-party DLL files?如何在包含第三方 DLL 文件的同时部署 C# 应用程序?
【发布时间】:2011-02-26 17:03:14
【问题描述】:

首先,我不太了解部署。我希望我的问题是有道理的。

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

你有什么建议?

【问题讨论】:

    标签: c# deployment clickonce dll


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 这适用于 DLL 文件。但是,不适用于例如默认情况下,XML 文件将被标记为“数据文件”(“发布状态”列),因此不会在安装期间复制到 ClickOnce 应用程序的安装目录(请参阅 A .deploy file is not deploying an XML file)。解决方法是将“数据文件”更改为“包含”。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2011-05-25
        • 1970-01-01
        • 2016-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多