Отлаживать частные пакеты NuGet?
Я опубликовал некоторые частные / внутренние библиотеки в виде пакетов NuGet, используя опцию символов. Пакеты и символы размещены во внутренней сетевой папке. Как я могу войти в эти пакеты при отладке?
Когда я перехожу к коду из этих пакетов, Visual Studio отображает страницу "Источник недоступен" / "Символы не найдены". Нажатие "Загрузить символы" разрешает только файлы pdb, но не пакеты символов.
Эти пакеты не подходят для публикации в галерее NuGet /SymbolSource.
6 ответов
Какую команду вы использовали для генерации пакетов с символами? Я пытался сделать то же самое точно nuget.exe pack -Prop Configuration=Release Framework.csproj -Symbols
Это создает два файла: Framework.nupkg и Framework.symbols.nupkg. Я поместил эти файлы в общий сетевой ресурс, использовал их из другого проекта, и отладка работала нормально.
Вы пытались поместить файлы *.nupkg и *.symbols.nupkg на локальный диск вместо сетевой папки?
Есть пара вариантов; Одним из них является настройка и настройка вашего собственного сервера символов.
Вы также можете загрузить ProGet от Inedo, включить обслуживание символов на целевом фиде, а затем опубликовать свои пакеты в ProGet. Все это можно сделать с помощью бесплатной версии ProGet.
Существует также инструмент под названием GitLink ( https://github.com/GitTools/GitLink), который может вставлять в файл символов ссылки на версионные файлы GIT вашего источника.
Вы можете настроить свой собственный сервер символов с помощью этих общих сетевых ресурсов. Вы можете найти пошаговое руководство в моем блоге.
В основном все сводится к созданию пустого приложения MVC и запуску
Установить-пакет SymbolSource.Server.Basic
После этого вам необходимо настроить инфраструктуру хостинга, а также настроить Visual Studio и агенты сборки.
То, как мы это делаем (и работает):
- Генерация "*.symbols.nupkg"
- Развертывание пакета символов на сервере SymbolSource (частный)
- Настроить IDE
- Добавьте необходимую библиотеку в проект с использованием NuGet (с нашего сервера SymbolSource)
- Debug!
Ссылки, которые могут быть полезны:
Важное замечание: "Средства отладки для Windows" не будут установлены, если обнаружит более новую версию Visual C++ Redist в системе, чем это требуется / ожидается
Против конфигурации для отладки с использованием SymbolSource
URL для добавления похож на
http://your.symbolsource-server.com:[port]/[appContext]/WinDbg/pdb
Я обнаружил, что это не работает вообще. Ссылки на пакеты NuGet закрыты и не могут использоваться в отладчике. Вместо этого я удалил ссылку на сборку из проекта и вместо этого добавил ссылку на сборку отладки DLL непосредственно по пути.
Затем, чтобы остановить отладчик где-то в этом коде, я вставил вызов System.Diagnostics.Debugger.Break();
в этом коде. При запуске отладчик остановится на этой строке, которая в основном является точкой останова, определенной в коде. Это откроет правильный исходный файл и автоматически перейдет к этой строке.
Откройте проект библиотеки во втором экземпляре VS и перемещайтесь по Break
вызывает по необходимости и перестраивает библиотеку. По завершении удалите эти вызовы из кода библиотеки и восстановите исходную ссылку (возможно, потребуется переустановить пакет NuGet).