В Интернете есть несколько документированных способов использования исходных файлов Symbols и Source Link для отладки в пакете Nuget, но честно говоря, сложно понять, что для меня подходит.
У нас есть AzureСервер DevOps, на котором мы генерируем пакеты Nuget и одновременно публикуем файлы .pdb
на Azure DevOps Symbol Server, используя задачу Index Sources & Publish Symbols
в наших конвейерах сборки, как , описанное здесь
Мой проект 'также имеет ссылку на Microsoft.SourceLink.Vsts.Git
, и этот код в файле .csproj
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
Я прочитал несколько постов в блоге, но источник, который, как я полагаю, наиболее актуален, имеетКонечно, официальный Source Link Git репозиторий .
В файле readme.md
написано
Включение PDB в .nupkg обычно больше не рекомендуется, так как это увеличиваетразмер пакета и, следовательно, время восстановления для проектов, которые используют ваш пакет, независимо от того, нужно ли пользователю выполнять отладку с помощью исходного кода вашей библиотеки или нет
Я согласен с этим, поэтому я хочу использовать Сервер символов, а не включать файл .pdb
в пакет Nuget.Поэтому, пожалуйста, не отмечайте мой вопрос как дубликат этого , потому что принятый ответ - это именно то, чего я не хочу делать.
В файле readme также указано, что
Пакеты символов * .snupkg имеют некоторые ограничения :
- В настоящее время они не поддерживают PDB Windows (сгенерированные VC ++ или для управляемых проектов, которые устанавливают свойство сборкиDebugType для полного)
- Они требуют, чтобы библиотека создавалась более новым компилятором C # / VB (Visual Studio 2017 Update 9).
- Потребителю пакета также необходим отладчик Visual Studio 2017 Update 9.
- Не поддерживается службой артефактов DevOps Azure .
, поэтому, по крайней мере, я знаю, что не могу это использовать.
Но как правильно установить и работать Source Link?
Когда я отлаживаю свое тестовое консольное приложение, оно успешно загружает файл .pdb
в мою папку кэша Symbols, но если я пытаюсь войти в код, полученный из пакета Nuget, используя F11
, он просто неРабота.(Однако он входит в System.String.Concat
, потому что мой простой тестовый пакет Nuget фактически объединяет некоторые строки)
Я попытался запустить sourcelink test TestSourceLink.pdb
, но получил error: url hash does not match
.Я прочитал здесь , что sourcelink test
является устаревшим и не поддерживает аутентификацию в частных репозиториях, таких как наши.
В моем браузере, если я захожу на URL, указанный sourcelink print-json TestSourceLink.pdb
Iможно увидеть последний исходный код.Но теперь вопрос в том, почему Visual Studio не может загрузить исходный код?Я аутентифицирован на этом сервере Azure DevOps в VS, потому что могу установить пакеты Nuget, поступающие с этого сервера.
Вот мои настройки отладки:
![VS debugging settings](https://i.stack.imgur.com/rgcnL.png)
Большое спасибо.Я действительно не могу понять, что является недостающим фрагментом этой головоломки