【问题标题】:Partial application updates in ClickOnce using Visual Studio build使用 Visual Studio 构建 ClickOnce 中的部分应用程序更新
【发布时间】:2010-02-16 23:09:52
【问题描述】:

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

谢谢, 单球

【问题讨论】:

    标签: clickonce


    【解决方案1】:

    即使在 VS 中构建,部分更新在 ClickOnce 中也能正常工作。但是,如果您有一个由几个项目组成的解决方案(例如,几个类库项目和一个可执行文件),那么无论何时您重建所有项目,程序集文件上的时间戳都会更改,即使代码没有更改。由于 ClickOnce 实际上只查看时间戳来决定文件是否需要更新,因此当用户更新时,它会将(未更改的)程序集作为新文件下拉。

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

    希望这已经足够清楚了!

    【讨论】:

    • 如果您尝试这个并发现它仍在下载 dll,请强烈命名它们。我认为它们必须被强烈命名才能让 ClickOnce 不下载它们,即使版本没有改变。
    • 对于我们的应用程序,我们还必须在项目设置中设置标志完全信任应用程序以进行部分 dll 更新,而不仅仅是强命名
    猜你喜欢
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多