代码之家  ›  专栏  ›  技术社区  ›  TimothyP

ClickOnce-覆盖内容文件

  •  0
  • TimothyP  · 技术社区  · 17 年前

    我有一个使用ClickOnce部署的解决方案。

    它由一个应用程序、几个引用的程序集组成 以及SQL Server Compact数据库。

    还有一个程序集未被主应用程序引用, 但只是在运行时加载。此程序集需要与 应用程序,与应用程序二进制文件位于同一目录中。

    我设置了Visual Studio以将“插件”程序集复制到\bin\debug(或\bin\release) 编译后的UI项目目录。

    然后我将文件添加到UI项目中, 不是作为参考,只是作为一个文件。我将构建操作设置为“内容”,这是 它在UI项目的属性/发布对话框中的显示方式。

    当我第一次发布这个应用程序时,它就像一个魅力。 但后来我更新了插件程序集,甚至给了它一个不同的版本号 并再次发布,只发现该程序集尚未更新,而是第一个 曾经上传的一个仍在使用中。(即使在没有预先安装的干净计算机上)。

    我做了一些挖掘,发现程序集(libcomposites.dll)是复制的。 指向ClickOnce应用程序存储其二进制文件的目录 作为存储数据文件的目录。

    在这两种情况下,都是第一个发布的版本。

    在概述中,我有一个应用程序引用了一些程序集:

    control.exe引用--> libllc.dll,libdatalayer.dll, libllcextenders.dll文件
    负荷在 运行时-->libcomposites.dll(其中 还引用libllc.dll)

    我需要将libcomposits.dll的新版本部署到同一目录中 作为每个发布的应用程序。

    为什么该程序集的第一个已发布版本仍在使用

    如何强制libcomposites.dll被每次发布覆盖?

    3 回复  |  直到 10 年前
        1
  •  4
  •   Patrick Desjardins    17 年前

    好吧,我也有同样的问题。下面是我如何解决它(可能不是理想的,但它是有效的)。

    1)如果您的dll或文件在解决方案中,我会将其取下并重新添加。 2)进入项目的属性,选择发布和应用程序文件。您需要将您的文件放在那里,然后再次选择“包含”(而不是自动的一个…)。

    您将无法用新的发布。我不知道如果我不这样做为什么它不起作用,但每次发布,我都要做这些步骤才能获得最新版本…

        2
  •  0
  •   kÍ©eÍ£mÍ®pÍ¥ Í©    17 年前

    让我纠正一下:您正在使用Visual Studio的发布功能来创建和部署ClickOnce包?

    祝你好运。

    你可能会过得更好 building your own ClickOnce packages using Mage .

    我开始沿着Visual Studio的路线走,很快发现这是通往痛苦的道路。了解如何使用mage,然后查看用于“自动化”此操作的某些msbuild选项。

        3
  •  0
  •   Michael    10 年前

    我也有同样的问题。问题是我在应用程序的根目录中有dll,它们在项目中是“in”。

    解决方案很简单,只要从项目中排除dll文件,这个问题就消失了。

    推荐文章