Mas*_*imo 11 .net c# clickonce
我们正在使用ClickOnce部署我们的应用程序,我们注意到当我们通过单击ClickOnce桌面图标启动我们的应用程序时,应用程序启动速度较慢(至少需要30-60秒),而不是直接从.exe启动.我已经看到它不是一个未知的问题(Clickonce在更新后启动应用程序的速度很慢),但它似乎仍未解决.我想知道为什么会发生这种情况以及如何解决这个问题.
我只使用一台机器,所以我猜它与机器无关,与防病毒无关.
我在启动期间注意到不同的内存管理模式:ClickOnce部署需要更多时间,一段时间后它会释放一些内存.我们仍然在谈论12 MB的差异(67MB通过ClickOnce,50通过直接.exe).
这让我疯狂......
谢谢
我猜这与机器无关,与防病毒无关。
您需要通过在开发虚拟机上安装与客户端相同的防病毒软件来证明这一假设。如果无法重现缓慢启动,请比较机器之间的 ProcMon 跟踪。
我相信汉斯是有钱的,而防病毒软件是最有可能的罪魁祸首,根据您在问题中提到的质量保证中的正确答案:
我发现新部署的首次运行 .Net 应用程序的性能非常差(几分钟 vs 几秒),因为用户正在运行防病毒软件,因为防病毒工具会检查新的 Jitted 程序集是否是恶意的。
确保您使用的是 .NET Framework 3.5 SP1 或更高版本,因为“在启动方面有显着的性能改进。特别是对于 WPF 应用程序”,并且 3.5 SP1 包括启动屏幕。
启动画面可能是一个快速(临时)解决方案。唉,这不是一个理想的解决方案。
ClickOnce 现在已经很老了,并且该领域已经取得了很多进步,所以为什么不采用具有不同部署机制的另一种策略,例如 Windows Installer 和应用程序中的更新菜单。我详细介绍了在升级应用程序时将 MSI 安装程序安装到同一路径的步骤。
如果您想严格要求每个人都使用最新版本而不是 ClickOnce,那么最好使用一个 Web 服务,让应用程序在启动时执行 ping 操作,并在新版本发布时下载并执行更新。
另外,请参考 Google 在这方面的提示。你还记得杰夫·阿特伍德的文章:http ://blog.codinghorror.com/the-infinite-version/
如果您不使用 ClickOnce,您可以使用 NGEN AND bsdiff之类的东西,甚至可能使用Google courgette。
还有一些其他方法可以加快此处讨论的ClickOnce 应用程序的启动速度。
虽然这可能无法直接回答您的问题,但希望它能让您思考如何识别根本原因和/或使用不同的更新方法来推出更新。