【问题标题】:Deploy external file in c# solution with clickonce使用clickonce在c#解决方案中部署外部文件
【发布时间】:2011-10-11 16:16:25
【问题描述】:

我在使用 Visual Studio Express 2010 c# 版本时遇到问题。 我有一个引用 DLL 的项目。此 DLL 有一个外部 Excel 文件标记为 构建动作 = 内容 复制到输出目录 = 始终复制

当我构建解决方案时,此 Excel 文件已正确复制到 BIN\release 解决方案文件夹中。

但是,如果我尝试使用发布向导部署相同的解决方案,Excel 文件不会复制到安装目录中。

请问,谁能帮帮我?

【问题讨论】:

    标签: c# clickonce


    【解决方案1】:

    为您的 ClickOnce 项目打开 发布属性。然后点击'应用程序文件...'按钮。这会启动一个对话框,您可以在其中控制发布包中包含哪些文件。

    为了让您的 XLSX 文件(或任何其他非构建文件)出现在该对话框中,您需要在属性窗口的构建操作中标记为 'Content'

    【讨论】:

    • 谢谢,但是如何添加未在此菜单中列出的文件?
    • @stexcec,我已经编辑了我的回复。将文件标记为“内容”,它将显示出来。
    • @PhilippSchmid,如果这个文件在另一个类库中怎么办?
    【解决方案2】:

    您是说 Excel 文件仅由您包含在项目中的 dll 引用吗?那是次要参考,ClickOnce 不会看到它并自动包含该文件。

    首先,在您的 dll 上,我假设您的项目直接引用了它。如果是这样,那么请确保您已将其添加到您的项目中并将构建操作设置为“无”,并将“复制到输出目录”设置为“不复制”。然后删除您对它的引用并重新添加它,将其指向您项目中现在包含的版本。将“复制本地”属性设置为“真”。这将确保 dll 本身被正确部署。

    对于 Excel 文件,您必须将其添加到您的项目中。将构建操作设置为“内容”并将“复制到输出目录”设置为“始终复制”。它不会自动包含在内,因为它是 ClickOnce 应用程序的辅助引用,而不是像 dll 那样的直接/主要引用。

    【讨论】:

      【解决方案3】:

      尝试将此文件包含在解决方案中并将“复制到输出目录”设置为“始终复制”

      【讨论】:

        【解决方案4】:

        您的文件似乎未列在“PublishFiles”列表中。打开项目属性,转到“发布”选项卡,单击“应用程序文件”按钮,确保您在发布状态为“包含”的文件列表中看到 DLL 文件。

        【讨论】:

        • 谢谢,在“应用程序文件”窗口中,引用的 DLL 正确列出,“发布状态”设置为“包含”。但不知道如何在此菜单中包含外部 Excel 文件...
        • 您可能还想将 Excel 文件添加到您的项目中,设置它的构建操作和属性,就像您对 DLL 文件所做的那样(复制到输出目录,如果更新或始终复制,取决于您的选择)。
        【解决方案5】:

        您可以通过将 Excel 文件作为资源插入,然后像这样写出来来避免这个问题:

        File.WriteAllBytes(DestinationFileName, Properties.Resources.MyResourceFile);
        

        我假设 Excel 文件是您用来构建输出文件的某种模板。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-11-22
          • 1970-01-01
          • 2017-10-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多