我已将60 KLOC Windows VB.NET应用程序升级到VS 2012和Windows 8。 一切都很好看,除非我昨天将它部署到ClickOnce。
如果表单使用绑定,则第一次启动表单时,ClickOnce应用程序加载每个表单的速度都非常慢。如果表单没有使用绑定(但是从数据库查询中选择数据),则表示正常加载。
最有趣的部分是,在VS2012中调试时,它们的加载时间不到1秒。从ClickOnce版本启动时,他们花费超过60秒来加载。
如果我在ClickOnce应用程序中关闭其中一个表单并重新打开它们,它们会在不到1秒的时间内正常加载。
在第一次加载表单时,似乎VS2012中的Binding非常糟糕,但我更倾向于认为我做错了。
关于这个问题的任何想法?
编辑2013/01/18:
在有一天削减不必要的代码之后,我已经找到了一个解决方案,它可以重现缓慢而没有不必要的代码,因此更容易(我希望)找到其中没有正常工作的内容。
ClickOnce应用程序在这里:
http://www.octet.it/Reproduce/
源文件在这里:
http://www.octet.it/Reproduce/Reproduce.zip
我可以说缓慢不依赖于:
复制缓慢的说明:
正如我所说,在Win 8之前,MDIChild(对各种表的绑定和SQL访问)在大约2-3秒内出现。
源文件不是那么有趣:他们只会显示一个调用MDIChild表单的MDIparent表单,但如果你想做一些实验,我已将它们包含在.ZIP文件中。
非常感谢你的时间。
让我知道如何解决这个问题。欢迎任何建议。
答案 0 :(得分:0)
您是如何编译应用程序的?您是否针对混合平台?尝试定位x86。我有一个类似的问题,在我编译时通过定位x86解决了,除非你的应用程序中有一些疯狂的x64依赖项,否则它应该在你的x64盒子上工作正常。请注意,这将更改clickonce清单,这很令人头疼,但我很好奇这是否可以解决您的问题。