gpt4 book ai didi

.net - WPF 在 .NET Framework 4.0 中的 x64 上启动缓慢

转载 作者:行者123 更新时间:2023-12-03 07:47:57 25 4
gpt4 key购买 nike

我注意到,如果我为任何 CPU/x64 构建 WPF 应用程序,则与在 x86 上启动(在发行版中)相比,启动(大约 20 秒)或加载新控件所需的时间要长得多& Debug模式,VS 内部或外部)。即使是最简单的 WPF 应用程序也会出现这种情况。该问题在 this MSDN thread 中讨论。 ,但那里没有提供答案。这种情况仅发生在 .NET 4.0 中——在 3.5 SP1 中,x64 与 x86 一样快。有趣的是,微软似乎知道这个问题,因为 VS2010 中新的 WPF 项目默认是 x86。

这是一个真正的错误还是我只是做错了?

编辑:可能与此相关:Slow Databinding setup time in C# .NET 4.0 。我大量使用数据绑定(bind)。

最佳答案

实际上,WPF 应用程序的默认项目类型是 x86 有两个主要原因。

  • Intellitrace 调试仅适用于 x86,如果默认项目模板无法使用其明星功能之一,那看起来会很糟糕。
  • 许多开发人员仍然没有意识到他们的 AnyCPU exe 可以在 64 位计算机上作为 x64 运行,并且惊讶地发现他们所依赖的 32 位 DLL 在 64 位版本中并不存在,例如 OLEDB 驱动程序、某些 native 驱动程序DLL 等

至于您遇到的启动时间问题,它几乎看起来像是 NGEN 的问题。由于 x64 和 x86 进程有不同的 NGEN 缓存,因此可能需要重建或更新 64 位 NGEN 缓存。尝试从提升的命令提示符运行以下命令:

CD C:\Windows\Microsoft.NET\Framework64\v4.0.30319
NGEN update

这是为已标记为 NGEN 的程序集重新构建 native 镜像的命令。如果程序集不在 GAC 中,那么它也可能不会对您的应用程序的 NGEN 有任何好处,所以我不会费心尝试这样做。但框架程序集、工具包程序集等都应该是 NGEN 的。

(顺便说一句,当我运行上述命令时,我确实遇到了一些关于无法加载程序集的错误。主要是 SQL 和 Visual Studio 程序集。)

关于.net - WPF 在 .NET Framework 4.0 中的 x64 上启动缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2947118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com