2008-11-04 143 views
0

我有一个使用ClickOnce部署的解决方案。ClickOnce - 覆盖内容文件

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

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

我设置的Visual Studio编译后的“插件”集复制到的\ bin \调试(或\ BIN \发布) 目录中的UI项目。

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

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

我做了一些挖掘和发现组件(LibComposites.dll)被复制到 哪里都ClickOnce应用程序存储他们的二进制文件 为他们存储数据文件的目录的目录。

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

在概述中,我引用了一些组件的应用程序:

CONTROL.EXE引用 - > LibLLC.dll,LibDataLayer.dll, LibLLCExtenders.dll
负载在 运行 - > LibComposites.dll(其中 还引用LibLLC.dll)

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

为什么会这样组装的第一次发布的版本仍然被使用

我怎么能强迫LibComposites.dll由每发布覆盖?

回答

4

好吧,我有同样的问题。这里是我如何解决它(可能不是理想的,但它的工作原理)

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

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

+0

我现在就试试这个解决方案......需要尽快部署这个新版本,并做了一些改变。 日Thnx的信息M8 – TimothyP 2008-11-04 13:00:36

+0

这奏效了:-)之所以能够立即部署,救了我的屁股:) – TimothyP 2008-11-04 13:07:13

0

让我明白这一点:您使用Visual Studio的发布功能来创建和部署ClickOnce包?

祝你好运。

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

我从Visual Studio的路线开始,很快发现它是一条不幸的路。学习如何使用Mage,然后查看一些MSBuild选项来“自动化”这个。

0

我有同样的问题。问题是我在应用程序的根目录下有dll,他们在项目中“进入”。

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