Переход в исходный исходный код .Net 4.0
У меня есть .Net framework v4.0.30319 SP1Rel и visual studio 2010 v 10.0.40219.1 SP1Rel (данные взяты из диалога в VS).
.Net 4.0 доступен здесь http://referencesource.microsoft.com/netframework.aspx, но не уверен, какая конкретная версия есть и совместима ли она с моей установкой. Я загрузил источник месяц или два назад, но я не мог войти в исходный код (нет исходного сообщения). Я читал в то время, и, похоже, это связано с обновлениями для VS (и, предположительно, установленных двоичных файлов), заменяющими исходную версию.
Прежде чем я попытаюсь загрузить снова, кто-то может подтвердить, соответствует ли исходный код совместимым с последними версиями. Если нет, есть ли альтернативный (возможно, сторонний) инструмент, который позволяет перейти в исходный код?
EDIT: ОК, просто увидел это http://social.msdn.microsoft.com/Forums/en-US/refsourceserver/thread/41388c7b-582b-4e3f-8178-3d38a3c99639, и это означает, что вы не можете использовать текущий исходный код?
Ответы
Ответ 1
Чтобы ответить на вторую часть, профессиональная версия .NET Reflector позволяет вам входить в сборки, для которых у вас нет источника ( включая платформу .NET), в то время как вы отлаживаете свой код. Он автоматически декомпилирует сборки и даст вам по очереди поддержку отладки на декомпилированном коде.
Последняя версия Resharper также может предложить аналогичную функцию.
Конечно, вы не получите хорошие имена переменных и комментарии, которые вы получите при использовании источника ссылки.
Ответ 2
После того, как вы сделали все необходимые настройки, вы можете использовать следующее обходное решение. Обходной путь заключается в том, чтобы найти обновления безопасности, которые вызвали изменение dll, а затем удалить их. Это имеет очевидный недостаток в том, что эти обновления безопасности удалены на вашем компьютере.
Обход
- Определите, какую dll вы хотите отлаживать (например, System.Windows.Forms.dll)
- Во время отладки откройте окно Модули в Visual Studio, найдите столбец "Версия". Если версия не является версией RTM или Service Pack, вам необходимо выполнить рабочий процесс. Как правило, dll RTM будет говорить "построено: RTMRel". Хотя DLL, которая была частью обновления для системы безопасности, скажет: "построено: RTMGDR". Обратите внимание на номер версии (например, 4.0.30319.269, созданный: RTMGDR).
- Теперь мы хотим найти обновление, создавшее эту версию. Сделайте это, выполнив поиск номера DLL и версии по адресу support.microsoft.com/kb/
Например, я выполнил следующий поиск в Google:
site:support.microsoft.com/kb System.Windows.Forms.dll 4.0.30319.269
- Поиск должен содержать информацию об обновлении. Обратите внимание на номер KB в адресной строке. В моем примере адрес был
http://support.microsoft.com/kb/2604121
, поэтому KB2604121, нас интересует.
- Перейдите в Панель управления- > Программы и компоненты и нажмите "Просмотреть установленные обновления"
- Найдите обновление с указанием номера KB (вы можете использовать поиск в правом верхнем углу).
- Удалите это обновление.
- Повторите этот процесс для этой же DLL, пока dll вернется к версии RTMRel или версии SP. Например, для System.Windows.Forms.dll мне пришлось удалить KB2686827, KB2604121, KB2518870, прежде чем он вернется к версии RTMRel.
Вам нужно будет сделать это для каждой DLL в рамках .NET, которую вы хотите отлаживать.
После этого установите точку останова в источнике .net(например, перейдите на вкладку "Точки останова", скажем New- > Break at Function и введите System.Windows.Forms.Form.Form) или выполните одно из следующих действий: методы .net в этой DLL.
Ответ 3
Отладка источников .NET Framework долгое время была нарушена. См. Соответствующее предложение в VisualStudio UserVoice Разрешить разработчикам проходить через источники .NET Framework. Хорошие новости: наконец, было исправлено! См. Следующее сообщение в блоге от Microsoft:
Новый взгляд на исходный источник .NET
Короче:
В настоящее время это "бета". В конце концов он заменит http://referencesource.microsoft.com/. Microsoft также promises, чтобы добавить источники большего количества сборок.
Ответ 4
Чтобы отладить источник .Net, просто отметьте опцию в Visual Studio (при отладке).
Вот полные инструкции: Как отладить .NET Framework Source
Помните, что вам может потребоваться отменить "Just My Code", чтобы вы могли ожидать какое-либо поведение (например, удаление контрольных точек в источнике .Net).