Не получается иногда загрузить отладочные символы созданные при помощи .NET Reflector Visual Studio Extension при отладке ASP.NET приложения

В последнее время меня часто спрашивают  об отладке исходного кода .NET, в частности касательно ASP.NET. В этой статье я показал как отлаживать исходный код Microsoft .NET Framework не имея официальных символов отладки от Microsoft. Но вот вопрос как раз в том, что даже удачно созданные символы отладки иногда по непонятным причинам не работают, т.е. не загружаются. Всё дело в разрядности процесса Windows в котором работает приложение ASP.NET. В Visual Studio по умолчанию запускается IIS Express. Как видно из рисунка



он работает в 32-разрядном режиме, отсюда и несоответствие. Когда мы запускаем приложение символы отладки не загружаются, рефлектор предупреждает нас об этом.



Но дело в том, что только один раз и в последующих запусках оно не появляется. И это сообщение часто не замечают. Что тогда делать? Можно и лучше всего, использовать полноценный сервер IIS и запускать процесс пула W3WP.EXE в 64-разрядном режиме.



Но можно поменять настройки в Visual Studio. Данную опцию обещали и реализовали в Visual Studio 2013.



Тогда IIS Express будет запускаться по умолчанию в 64-разрядном режиме и символы отладки загрузятся нормально.



В Visual Studio 2012 такой опции нет. Придётся создавать ключ в реестре.
reg add HKEY_CURRENT_USER\Software\Microsoft
\VisualStudio\11.0\WebProjects /v Use64BitIISExpress /t REG_DWORD /d 1



И тогда IIS Express будет запускаться по умолчанию в 64-разрядном режиме и символы отладки нормально будут загружены.
z=>z.Code
31.05.2014 21:25
У меня 32 разрядная система (эта галочка не активная), я правильно понимаю, что уже никак нельзя мне загрузить символы отладки?
01.06.2014 9:39
Да, у вас нельзя даже запускать 64 битный код, не говоря о символах отладки для него. Но с 32 битными процессами проблем быть недолжно.