我正在使用VS2008使用ClickOnce发布我的应用程序文件。我在某处读到ClickOnce智能地只进行部分更新;这意味着如果文件在后续更新中发生了更改,它只会从网络共享中下载文件。但是,这对我不起作用。所以我做了一些研究,偶然发现了这篇MSDN文章 - http://msdn.microsoft.com/en-us/library/ms404267.aspx。它说,如果我们使用VS构建,它不会执行部分更新。谁能告诉我为什么会这样呢?如果是这样,有没有办法让至少第一次下载引用的dll。我正在使用Microsoft Practices Enterprise Library和一些第三方控件(带有巨大的Theme文件)。
谢谢, 单珠
答案 0 :(得分:8)
即使在VS中构建,部分更新在ClickOnce中也能正常工作。但是,如果你有一个由几个项目组成的解决方案(例如几个类库项目和一个可执行文件),那么每次重建所有项目时,程序集文件的时间戳都会改变,即使代码没有。由于ClickOnce实际上只查看时间戳来决定文件是否需要更新,因此当用户更新时,它会将(未更改的)程序集作为新文件下拉。
解决方法是从可执行文件的解决方案文件中提取任何依赖项目并单独构建它们。这意味着任何代码不经常更改的程序集只会被拉到客户端一次。如果需要更改程序集,只需打开其解决方案并进行更改,然后重新打开可执行文件的解决方案并重新构建。下一个ClickOnce更新将下拉exe和更改的程序集。
希望足够清楚!