2010-02-16 62 views
5

我正在使用VS2008使用ClickOnce发布我的应用程序文件。我在某处阅读ClickOnce智能地只做部分更新;这意味着如果文件在后续更新中发生更改,它只会从网络共享中下载文件。但是,这不适合我。所以我做了一些研究,并偶然发现了这篇MSDN文章 - http://msdn.microsoft.com/en-us/library/ms404267.aspx。它说如果我们使用VS构建,它不会执行部分更新。谁能告诉我为什么会出现这种情况?如果是这样,是否有办法让引用的dll只能第一次下载。我正在使用Microsoft Practices Enterprise Library和一些第三方控件(包含巨大的主题文件)。使用Visual Studio构建ClickOnce中的部分应用程序更新构建

感谢, 单珠

回答

7

部分更新建设VS.即使做工精细的的ClickOnce然而,如果你有一个由几个项目组成的解决方案(例如几个类库项目和一个可执行文件),那么无论何时重建所有项目,程序集文件的时间戳都会改变,即使代码没有。由于ClickOnce实际上只查看时间戳以决定文件是否需要更新,因此它会在用户更新时将(不变的)程序集作为新文件进行下拉。

解决方法是将任何相关项目从可执行文件的解决方案文件中提取出来,然后单独构建它们。这意味着任何代码不会经常更改的程序集只会被拉下一次。如果您需要更改程序集,只需打开其解决方案并进行更改,然后重新打开可执行文件的解决方案并重新构建该解决方案。下一个ClickOnce更新将拉下exe和更改后的程序集。

希望已经够清楚了!

+0

谢谢!这清除了事情。 – user274816 2010-02-17 17:29:50

+0

如果您尝试此操作并发现它仍在下载dll,请强烈命名它们。我认为,为了使ClickOnce不要下载它们,即使版本没有改变,它们也必须进行强命名。 – RobinDotNet 2010-03-09 09:32:01

+0

对于我们的应用程序,我们必须在部分dll更新的项目设置中设置标志完全信任的应用程序,而不仅仅是强烈命名 – VMAtm 2017-04-05 20:39:27

相关问题