Как упаковать и развернуть пакет NuGet с символами и исходным кодом, чтобы отладчик мог использовать ЭТО исходный код? - PullRequest
2 голосов
/ 18 апреля 2019

Я создал очень простой пакет NuGet из проекта библиотеки классов Visual Studio Visual Studio, в котором источник библиотеки классов находится на C #.

Я использовал эту команду для создания пакета nuget:

nuget pack MyProject.csproj -symbols -Properties "Configuration=Debug" -suffix debug

. Создает, как я ожидаю, два файла пакета nuget, а именно:

  • MyProject.1.0.0-debug.symbols.nupkg
  • MyProject.1.0.0-debug.nupkg

Эти пакеты в основном идентичны, за исключением того, что пакет с "символами" включает файлы pdb в иерархии lib и исходные файлы в папке src.

Учитывая дублирование, я переименовываю файл MyProject.1.0.0-debug.symbols.nupkg в MyProject.1.0.0-debug.nupkg, который перезаписывает один из файлов, ничего страшного в этом нет.Теперь у меня есть условно названный пакет с PDB и исходными файлами в нем.

Я развертываю его на внутреннем фиде общих файлов с:

nuget add MyProject.1.0.0-debug.nupkg \\InternalShare\FeedFolder

В совершенно другом проекте и другомТеперь я использую этот пакет NuGet в Visual Studio с помощью диспетчера пакетов NuGet.Все отлично работает.И код тоже работает отлично, в моем случае я сделал простое консольное приложение, которое использует пару классов в пакете, и я продемонстрировал, что оно использует их правильно и без инцидентов.

Пока все хорошо.

Теперь я установил точку останова в потребляющем коде и попытался перейти к исходному коду для отладки пакета.Кажется, он работает нормально, но на самом деле он не входит в исходный код, который был распространен вместе с пакетом.Фактически он входит в ОРИГИНАЛЬНЫЙ источник после создания пакета в совершенно другой и не связанной иерархии папок на моем компьютере.

ОК.Поэтому теперь я воссоздаю свое простое консольное приложение на отдельном компьютере , который не имеет ОРИГИНАЛЬНОГО источника.И на этом отдельном компьютере, который находится во внутренней сети и, следовательно, имеет доступ к общей папке, я использую пакет NuGet и снова все компилируется и работает нормально.

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

Кажется, это должен быть общий случай использования и желание включить символы и исходный код в пакет nuget, поэтому я должен что-то делатьглупо, что отладчик не может найти источник.

Различные версии вещей:

  • Visual Studio: Professional 2017 15.9.11
  • Установлен менеджер пакетов NuGetв VS: 4.6.0
  • CLI NuGet версия: 4.8.1.5435
  • Целевая .NET Framework для моего примера кода: 4.6.1

В чем моя ошибка?

Заранее большое спасибо.

================== ДОБАВЛЕННАЯ ИНФОРМАЦИЯ 04/4/2019, 15:30 Pacific Pacific =======================

Это не так плохо, как я думал.Когда я пытаюсь зайти в код и сказать, что он не может его найти, мне предоставляется возможность просмотреть код, чтобы я мог перейти к пакету (при условии, что я знаю, где он находится!) И освободить отладчик ивсе отлично работаетПриятно то, что Visual Studio, похоже, запоминает, где я находился, и знает, где искать в следующий раз.Не уверен в этом механизме.

И .... Если я иду на свой оригинальный компьютер (с фактическим источником пакета на нем), если я изменяю этот исходный источник, как будто я готовлюсь к следующему пакету,отладчик (конечно) понимает, что источник изменился, и также побуждает меня искать подходящий источник в другом месте.

Тем не менее, было бы здорово не прыгать через обручи, как это, поэтому я бывсе еще ценю любые дальнейшие идеи.

1 Ответ

2 голосов
/ 18 апреля 2019

Некоторые основные принципы:

  • отладчику нужны PDB для включения отладки
  • пакет символов должен содержать PDB (это не просто пакет с другим расширением)
  • этот пакет символов должен быть опубликован в репозитории символов, который отладчик Visual Studio может запрашивать у

Next:

  1. См. Этот документ для создания и публикации.пакет символов в nuget.org (.snupkg)
  2. Затем посмотрите документ для настройки Visual Studio для использования NuGet.org в качестве источника символов (используйте это значение при добавлениисервер символов https://symbols.nuget.org/download/symbols)
...