我们有一个使用ClickOnce自动更新的.Net应用程序.但Click Once的问题在于,无论项目是否发生任何变化,所有程序集都会获得更新.我想,以手动更新只更改的dll文件到以前的ClickOnce发布的文件夹,并使用更新清单MageUI.exe.我还想提高已更改的程序集版本,以便我们可以通过查看安装了ClickOnce应用程序的用户缓存文件夹来跟踪已更改的程序集.我想知道这是一种可接受的方法吗?谢谢.
我认为这不是必要的.虽然ClickOnce提供的更新对话框没有告诉您,但在满足以下条件时,ClickOnce将不会下载文件:
文件的哈希值是相同的
文件的时间戳是相同的.
对于组件,可能需要强化它们
相反,它将复制先前版本的文件.
因此,如果您使用强名称并且在未更改时不重建程序集,则ClickOnce应该完全按照您的意愿执行.
请参阅此处和此处以供参考.
这是官方消息来源
更新应用程序时,ClickOnce不会下载新版本应用程序的所有文件,除非文件已更改.相反,它将当前应用程序的应用程序清单中指定的文件的哈希签名与新版本的清单中的签名进行比较.如果文件的签名不同,ClickOnce将下载新版本.如果签名匹配,则文件未从一个版本更改为下一个版本.在这种情况下,ClickOnce会复制现有文件并在新版本的应用程序中使用它.此方法可防止ClickOnce再次下载整个应用程序,即使只有一个或两个文件已更改.