Переход в исходный исходный код .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).