2015-03-31 1 views
1

Кто-нибудь знает, почему примеры Catel Framework работают так медленно при запуске из Visual Stuio? При запуске любого из демонстрационных приложений время загрузки очень медленно (около 45 секунд). Тем не менее, запуск .exe напрямую, вне VS так же быстро, как можно было ожидать (< 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, а затем запустится, точка останова будет удалена почти мгновенно.

Edit 2

..ok, чтобы сузить ее дальше: любой ссылка на Catel.Core вызовет огромную задержку. Когда у меня есть опорная линия Катель раскомментировала следующие дополнительные строки видны в окне Output:

'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 что-то не так?

ответ

1

Я также боролся с этой проблемой (фактически на многих компьютерах) я попробовал это!).

Мое решение было следующее:

в VS "Debug-> Параметры и настройки":

  • Отладка -> Символы:
  • выбрать вариант "Все модули, если не исключены".
  • Добавьте следующие строки в список исключений:

  • Catel.Core.dll

  • Catel.Extensions.Controls.dll
  • Catel.MVVM.dll

(и какой бы модуль Catel вы не указали).

Самое странное: после того, как я сделал это один раз, я могу удалить эти DLL из списка исключений, и до сих пор начать отладку быстро: -/

(хотя это может измениться после следующей перезагрузки .... ИДК)

Но я держать их в список исключений в любом случае, потому что я не нужно, чтобы загрузить эти модули на все - они должны быть «bugfree» Afterall, по крайней мере, не должно быть необходимости отладки мной ....

С уважением

Johannes Colmsee

Update: оказывается, можно легко отключить загрузку всех Catel DLL, лишь указав «Катель * DLL..» В список исключений модуля

Другой хороший побочный эффект от этого есть, что вы не будете обеспокоены тем, что «Manifest Resouce stream not found exceptions» или «ThreadAbortException» (когда заканчивается приложение «PleaseWaitService») (все для настроек отладки «Break on Thrown Exceptions»)

1

Несколько советов:

  1. Performance considerations
  2. Проверьте, если отлаживать регистратор занимает слишком много времени (окно вывода пытается идти в ногу, замедляя вещи вниз)
  3. Проверьте, если у вас есть символы (см. docs)
+0

Спасибо, я посмотрел на эти моменты, но безуспешно. См. Мое редактирование – BCA

+0

Попробуйте удалить все точки останова. Также убедитесь, что через Options => Debugging => Symboles у вас есть каталог кеша символов. –

+0

Интересно ... Я получил его для работы (быстрая загрузка), но для этого мне пришлось включить «Stepping step» .NET Framework (Options -> Debugging -> General). – BCA