Как отладить исходный код платформы.NET 4.6 в Visual Studio 2017?
Вот что я попробовал:
Создано новое консольное приложение (.NET Framework) в Visual Studio 2017.
Добавлен следующий код:
static void Main(string[] args)
{
new Dictionary<int, int>().TryGetValue(3, out int x); //I want to step into TryGetValue() (this is just an example)
}
Настроил параметры, перечисленные здесь: https://blogs.msdn.microsoft.com/sburke/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code/
Подтвержденные символы загружаются в окно модулей:
mscorlib.dll Символы загружены. 4.6.1586.0 построено: NETFXREL2
Пробовал: "Шаг в (F11)"
Пробовал: "Шаг в конкретику" | "System.Collections.Generic.Dictionary.TryGetValue"
Оба просто переступают черту.
Я попытался настроить VS, используя подробности здесь: http://www.symbolsource.org/Public/Home/VisualStudio
Тот же результат, отладчик переходит через строку.
Я посмотрел ответ здесь: /questions/6055711/kak-vklyuchit-vklyuchit-poshagovoe-vyipolnenie-ishodnogo-kodanet-framework/6055714#6055714
Но эта версия, похоже, не является обновлением для системы безопасности, и поиск по запросу "site:support.microsoft.com/kb 4.6.1586.0" ничего не дает.
Что я делаю неправильно?
2 ответа
Вот ответ, спасибо Гансу Пассанту. Обратите внимание, что это решение вызывает дополнительные вопросы.
Убедитесь, что https://referencesource.microsoft.com/ содержит точную версию, которую вы отлаживаете.
- Как? Ссылочный источник указывает ".NET Framework 4.6.2", но версия модуля выглядит примерно так: "4.6.1586.0"
- Вам может потребоваться удалить обновления безопасности, как описано здесь: Как включить "Включение пошагового изменения исходного кода.NET Framework"?
Настройте Visual Studio, как указано здесь: https://referencesource.microsoft.com/setup.html
- Снимите флажок "Включить только мой код"
- Отметьте галочкой "Включить пошаговое выполнение исходного кода.NET Framework" (это должен был быть единственный необходимый шаг).
- Галочка "Включить поддержку исходного сервера"
- Снимите флажок "Требовать, чтобы исходные файлы точно соответствовали исходной версии"
Подтвердите, что символы загружены в окне Модули, с включенной индексацией источника.
- Как вы можете определить, включена ли исходная индексация? В окне модулей не указано, имеет ли PDB раздетую информацию об источнике.
Microsoft может сделать этот процесс намного более надежным, предоставляя полезные сообщения об ошибках, а не молча терпя неудачу.
Используйте функцию сервера символов в Jetbrains dotPeek. После того, как я изо всех сил пытался заставить работать стандартную функциональность, он работал для меня как шарм.