0

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

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

还有一个程序集不被主应用程序引用,而只是在运行时加载。该程序集需要与应用程序一起部署在与应用程序二进制文件相同的目录中。

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

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

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

我进行了一些挖掘,发现程序集(LibComposites.dll)被复制到clickonce应用程序存储其二进制文件的目录作为它们存储数据文件的目录。

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

总而言之,我有一个引用一些程序集的应用程序:

Control.exe 引用 --> LibLLC.dll、LibDataLayer.dll、LibLLCExtenders.dll
在运行时加载 --> LibComposites.dll(也引用 LibLLC.dll)

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

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

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

4

3 回答 3

4

好吧,我有同样的问题。这是我解决它的方法(可能不是理想的,但它有效。

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

比您可以使用新的发布。我不知道如果我不这样做它为什么不起作用但是每次发布,我必须执行这些步骤才能获得最新版本......

于 2008-11-04T12:56:56.177 回答
0

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

祝你好运。

使用 Mage 构建自己的 ClickOnce 包可能会更好。

我开始走 Visual Studio 路线,很快发现这是一条通往痛苦的道路。了解如何使用 Mage,然后查看一些 MSBuild 选项以“自动化”这一点。

于 2008-11-04T12:57:20.340 回答
0

我遇到过同样的问题。问题是我在应用程序的根目录中有dll,它们在项目中。

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

于 2015-08-10T21:57:11.957 回答