Вам когда-нибудь приходилось отлаживать и работать с кодом зависимых библиотек NuGet или .NET, которые не являются частью вашего решения? Сегодня отладка через них не так проста, как отладка ваших проектов, которые являются частью вашего решения. Начиная с Visual Studio 2022 Preview 3, мы добавляем новый узел «Внешние источники» в обозреватель решений, который значительно упростит отладку файлов внешних источников. Этот узел появляется во время отладки и отображает источники для управляемых модулей с загруженными символами, содержащими информацию о Source Link или Source Server. Вы можете легко просматривать эти исходные файлы и отлаживать их, при необходимости устанавливая точки останова.

Команда Visual Studio 2022 работает над тем, чтобы обеспечить личную и командную продуктивность. Отладка внешних источников - это возможность инструментов диагностики, которая является лишь одной из интересных функций, над которыми мы работаем.

Скачать Visual Studio 2022 Preview

Узел "Внешние источники" в обозревателе решений

Эта функция добавляет новый узел верхнего уровня в обозреватель решений, который появляется, когда вы находитесь в сеансе отладки, и любой загруженный файл .pdb с информацией исходного сервера будет отображаться под этим узлом.

В режиме отладки - свернутое состояние (по умолчанию)
В режиме отладки - свернутое состояние (по умолчанию)
В режиме отладки - развернутое состояние без модулей с символами вне загруженного решения
В режиме отладки - развернутое состояние без модулей с символами вне загруженного решения
В режиме отладки - с одним загруженным и расширенным внешним модулем
В режиме отладки - с одним загруженным и расширенным внешним модулем

Вы можете искать файлы, разворачивая элементы дерева. Затем дважды щелкните элемент, чтобы загрузить файл с исходного сервера и открыть его в редакторе. Узел будет сохраняться с источниками модулей в сеансах отладки, если модули настроены на автоматическую загрузку символов.

Демо для внешних источников
Демо для внешних источников

Если вы работаете с приложениями с несколькими внешними библиотеками, компоненты которых опубликованы на исходных серверах, например Newtonsoft.Json, CsvHelper, xUnit.net и т.д., эта функция предоставит вам более простой способ просматривать эти источники и при необходимости отлаживать их.

Требуемые настройки

Загрузкой символов (Symbol loading) и загрузкой источника можно управлять с помощью параметров в настройках отладки.

Следуйте приведенному ниже контрольному списку настроек, чтобы убедиться, что модули могут отображаться в узле «Внешние источники» обозревателя решений.

  1. В Инструменты → Параметры → Параметры отладки: * Отключить только мой код: это позволит отладчику попытаться найти символы для кода за пределами вашего решения.

  2. В Инструменты → Параметры → Отладка → Параметры символов: * Включить Microsoft Symbol Server: это позволяет отладчику пытаться найти символы на Microsoft Symbol Server; * Включить сервер символов NuGet.org: это позволяет отладчику пытаться найти символы на сервере символов NuGet.org; * Включить загрузку всех модулей: это позволяет отладчику загружать символы для всех модулей. (Обратите внимание, что эти параметры загрузят все доступные символы, вы можете ограничить загрузку символов, выбрав «Загружать только указанные модули» и указав включенные модули.)

  3. Вам также может потребоваться проверить Отладка → Windows → Модули, чтобы увидеть, какие модули в настоящее время загружены в память, и загрузить их вручную, если это необходимо.

  4. Вам может быть предложено загрузить исходный код с сервера, если дважды щелкнуть элемент в «Узле внешних источников»; нажмите «Принять», и вы сможете просмотреть исходный код этого элемента в редакторе.

Демо для внешних источников с ручной загрузкой символов
Демо для внешних источников с ручной загрузкой символов

Комментарии (6)


  1. gdt
    19.08.2021 19:42

    Вот это вещь.


  1. DragonFire
    19.08.2021 20:09
    +5

    Сегодня отладка через них не так проста, как отладка ваших проектов

    Очень проста. в JB Rider =)


    1. kekekeks
      19.08.2021 21:03
      +1

      Причем работает даже если нет символов и исходников. В отличие от.


      1. buldo
        20.08.2021 16:30
        -1

        Студия же умеет сама декомпилировать и дебажить по декомпилированному. В версии 2019 эта фича появилась.


  1. SilverFerrum
    21.08.2021 10:10

    А можно где-то глянуть исходники солюшена, который на гифках?

    Очень интересно посмотреть на BasketViewModelService и архитектуру вокруг этого