Отладка пакета NuGet с помощью Azure Devops и Source Link - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь заставить SourceLink работать с частным пакетом NuGet.У меня запущено веб-приложение netcore2.1, которое ссылается на пакет netstandard2.0 NuGet, размещенный в нашем фиде Azure Devops NuGet.

Вопрос 1: Поддерживает ли Source Link пакеты .NET Standard?

Я следовал инструкциям в руководстве, приведенном здесь https://docs.microsoft.com/en-us/azure/devops/artifacts/symbols/setting-up-github-sourcelinking?view=vsts,, что в основном:

  1. Добавьте пакет источников индекса и публикации символов в мою сборку Azure Devops.

  2. В Visual Studio добавьте наш VSTS-сервер в качестве сервера символов

  3. В Visual Studio включите поддержку Source Link.Я также попытался включить поддержку исходного сервера.

Кажется, работает путь публикации символов построения конвейера - в журналах я вижу: Succeeded processing D:\a\1\s\src\MyCompany.Core.Services.SnapshotClient\bin\release\netstandard2.0\MyCompany.Core.Services.SnapshotClient.pdb:

Когда я начинаю отладкуВ моем приложении я вижу кучу выходных данных в окне VS Output: 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\2.1.4\Microsoft.AspNetCore.Hosting.dll'. Cannot find or open the PDB file.

Для моего пакета NuGet я вижу "Загруженные символы", которые кажутся многообещающими.

FWIW Я не вижу подсказкииз Visual Studio, что «Ссылка на источник будет загружаться из Интернета».

Когда я отлаживаю и пытаюсь выполнить Step-In для моего пакета NuGet, он просто переступает через него.

Затем я попытался:

  1. Перешли на https://github.com/dotnet/sourcelink, следовали их инструкциям и установили пакет Microsoft.SourceLink.Vsts.Git ( Вопрос 2 , это необходимо?)

  2. Когда это не сработало, я обновил каждый пакет darn в своем приложении, что заставило меня установить .NET Core SDK 2.1.403

  3. Попытка добавить некоторые вещи в .csproj моего пакета NuGet после траленияing GitHub выдает <PublishRepositoryUrl>true</PublishRepositoryUrl> <AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder> и <DebugType>portable</DebugType> <ci>true</ci> Теперь мой .nupkg также включает в себя файлы .pdb, которых раньше не было.Тем не менее, это не помогает мне приступить к отладке.

  4. установил cli-инструменты sourcelink из https://www.nuget.org/packages/sourcelink/ и запустил sourcelink print-urls на .pdb из моего .nupkg.Выглядит правильно, я думаю?URL присутствуют.

  5. Отключено индексирование после просмотра комментария https://github.com/MicrosoftDocs/vsts-docs/issues/1336#issuecomment-414415049 от @mitchdenny.Все еще не работает.

И теперь я в тупике, почему это не работает.

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Я написал полный блог о том, как это сделать с помощью .NET Core и AzureDevops, но эти шаги должны работать и для проектов .NET Standard.

Тем не менее, некоторые ключевые выводы, которые отсутствуют в документации Microsoft, вам следует знать:

  • Информация об отладке проекта должна быть изменена с "Portable" на "Full"
  • Для Nuget AzureDevOps (восстановление, сборка, упаковка и доставка) необходимо использовать задачу .NET Core.
  • Задача сборки .NET Core должна иметь аргумент "--configuration", который передается взначение "отладка".В результате создается файл .PDB
  • . В задаче пакета .NET Core следует использовать команду «custom», в которой пользовательская команда будет «pack» и иметь следующие аргументы: «--include-symbols -vd»и "-c", который передает значение "debug".Это указывает команде pack включить файл .PDB в пакет.
0 голосов
/ 15 ноября 2018

Вопрос 1: Поддерживает ли Source Link пакеты .NET Standard?

Да.Я успешно создал библиотеку .NET Standard 2.0 на конвейере DevOps Azure, после чего она была передана в наш частный фид NuGet Artifacts Azure DevOps.Затем в локальном проекте я смог войти в библиотеку (Visual Studio предложила мне всплывающее окно о загрузке удаленного исходного кода).

Вот изменения, которые я должен был внести в библиотеку .csproj file:

<PropertyGroup>
  <PublishRepositoryUrl>true</PublishRepositoryUrl>
  <EmbedUntrackedSources>true</EmbedUntrackedSources>
  <AllowedOutputExtensionsInPackageBuildOutputFolder>
    $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb
  </AllowedOutputExtensionsInPackageBuildOutputFolder>
</PropertyGroup>
...
<ItemGroup>
  <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0-beta-63127-02" PrivateAssets="All"/>
</ItemGroup>

Вопрос 2: необходимо ли [PackageReference to Microsoft.SourceLink.GitHub]?

I'mТочно сказать не могу. документы предполагают, что это так.Но я удалил ссылку, перестроил ее на DevOps Azure и все же смог пройтись по библиотеке.Возможно, это необходимо для разных сред (я держу это на всякий случай).

FWIW:

  • Я отлаживаю с помощью Visual Studio 15.8.9
  • Мой последний установленный .NET Core SDK: 2.1.403
  • Потребитель моей библиотеки - исполняемый файл .NET Core 2.1
  • Я скомпилировал свою библиотеку, используя Cake , которую я вызвалв dotnet msbuild
...