ClickOnce - 覆盖内容文件

时间:2008-11-04 12:49:23

标签: deployment assemblies clickonce overwrite

我有一个使用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)

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

为什么该组件的首次发布版本仍在使用

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

3 个答案:

答案 0 :(得分:4)

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

1)如果您的dll或文件在解决方案中,我会将其取下并重新添加。 2)进入项目的属性,然后选择发布和应用程序文件。你需要在那里找到你的文件并选择AGAIN“Include”(而不是Auto one ...)。

您将能够使用新版本发布。我不知道为什么它不起作用,如果我不这样做但每次发布,我必须做这些步骤才能得到最后一个版本......

答案 1 :(得分:0)

让我说对了:您使用Visual Studio的发布功能来创建和部署ClickOnce包吗?

祝你好运。

building your own ClickOnce packages using Mage可能会更好。

我从Visual Studio路线开始,很快发现它是通向痛苦的道路。学习如何使用Mage,然后查看一些MSBuild选项,以“自动化”。

答案 2 :(得分:0)

我有同样的问题。问题是我在应用程序的根目录中有dll,他们是"在"在项目中。

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