gpt4 book ai didi

visual-studio-2012 - Catel 示例在 Visual Studio 中加载非常缓慢

转载 作者:行者123 更新时间:2023-12-03 10:27:54 25 4
gpt4 key购买 nike

有人知道为什么 Catel Framework 示例从 Visual Stuio 启动时运行如此缓慢吗?运行任何演示应用程序时,加载时间都非常慢(大约 45 秒)。但是,在 VS 之外直接运行 .exe 与预期的一样快(< 2 秒)。
系统:Windows 7 Pro x64,Visual Studio 2012 Pro

编辑

我通过将 App.xaml.cs 代码缩减为以下内容来缩小问题范围:

protected override void OnStartup(StartupEventArgs e)
{
var serviceLocator = IoC.ServiceLocator.Default;
}

..并在方法的左大括号处设置断点,F5 后需要 40 秒才能到达该断点。如果我注释掉 servicelocator行然后运行,断点几乎立即被击中。

编辑 2

..好的,进一步缩小范围:任何对 Catel.Core 的引用都会导致巨大的延迟。当我取消注释 Catel 引用线时,在“输出”窗口中会看到以下额外的行:
'CatelLoggingTinker.vshost.exe' (Managed (v4.0.30319)): Loaded 'c:\users\bruce.tw\documents\visual studio 2012\Projects\CatelLoggingTinker\CatelLoggingTinker\bin\Debug\Catel.Core.dll', Symbols loaded.
'CatelLoggingTinker.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Accessibility\v4.0_4.0.0.0__b03f5f7f11d50a3a\Accessibility.dll'
'CatelLoggingTinker.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Security\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Security.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
The thread '<No Name>' (0x3d24) has exited with code 0 (0x0).
'CatelLoggingTinker.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_64\System.Transactions\v4.0_4.0.0.0__b77a5c561934e089\System.Transactions.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'CatelLoggingTinker.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Data.SqlXml\v4.0_4.0.0.0__b77a5c561934e089\System.Data.SqlXml.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'CatelLoggingTinker.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\UIAutomationProvider\v4.0_4.0.0.0__31bf3856ad364e35\UIAutomationProvider.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'CatelLoggingTinker.vshost.exe' (Managed (v4.0.30319)): Loaded 'Anonymously Hosted DynamicMethods Assembly'

如果我在 OnStartup 中的唯一行是
Catel.Collections.ListDictionary<int, int> cc = new Catel.Collections.ListDictionary<int, int>();

...然后输出窗口首先显示 Catel.Core.dll立即加载,但随后 UIAutomationProvider.dll需要很长时间才能出现。

我的 GAC 有问题吗?

最佳答案

我也为这个问题而苦苦挣扎(实际上在我尝试过的许多计算机上!)。

我的解决方案如下:

在 VS“调试-> 选项和设置”中:

  • 调试 -> 符号:
  • 选择选项“所有模块,除非排除”。
  • 将以下内容添加到排除列表:
  • Catel.Core.dll
  • Catel.Extensions.Controls.dll
  • Catel.MVVM.dll

  • (以及您碰巧引用的任何 Catel 模块)。

    最奇怪的是:在我这样做一次之后,我可以从排除列表中删除那些 dll,并且仍然可以快速开始调试:-/

    (虽然这可能会在下次重新启动后改变....idk)

    但是我无论如何都将它们保留在排除列表中,因为我根本不需要加载这些模块 - 毕竟它们应该是“无错误”的,至少不应该需要我调试......

    问候

    约翰内斯·科尔姆西

    更新:事实证明,您只需在排除的模块列表中指定“Catel.*.dll”即可轻松禁用所有 Catel dll 的加载

    另一个很好的副作用是,您不会被那些“Manifest Resouce stream not found exceptions”或“ThreadAbortException”(当 PleaseWaitService 完成时)打扰(全部用于调试设置“Break on Thrown Exceptions”)

    关于visual-studio-2012 - Catel 示例在 Visual Studio 中加载非常缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29376208/

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