Я пытаюсь включить SourceLink для наших внутренних пакетов NuGet и сталкиваюсь с проблемой, когда не вижу, как ее решить.
Моя настройка:
- Visual Studio 2019 Enterprise (16.3.8)
- Git-репозиторий Azure DevOps
- Библиотека классов .NET Framework 4.7.2 с проектом в стиле SDK, содержащим один класс HelloWorld
- PackageReference на Microsoft.SourceLink.AzureRepos.Git, используя последнюю версию (1.0.0-beta2-19554-01)
- Этот проект создает пакет, который включает в себя DLL и PDB (я знаю этоне рекомендуется, но я бы хотел заставить его работать таким образом, а не использовать сервер символов, это также не является источником проблемы, так как отладчик находит правильный PDB)
Файл проекта
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net472</TargetFramework>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
<RepositoryUrl>https://<host>.visualstudio.com/<project>/_git/Lib</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<FileVersion>2.0.0.0</FileVersion>
<Version>2.0.0</Version>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.SourceLink.AzureRepos.Git" Version="1.0.0-beta2-19554-01">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
- Я фиксирую свои изменения в репозитории и собираю пакет. Пакет хорошо собирается. Когда я проверяю сгенерированный файл .nuspec, он содержит правильный хеш коммита.
- Я публикую его в локальном фиде NuGet, используя
nuget add Lib.2.0.0.nupkg -Source C:\NuGet
. - Я удаляю свои локальные источники HelloWorld, чтобы отладчикне находит эти источники и пытается загрузить их из репозитория git
- Я создаю консольное приложение, ссылаюсь на этот пакет NuGet и вызываю функцию HelloWorld в классе HelloWorld. В отладчике я нажал F11, чтобы войти в вызов HelloWorld. Откроется диалоговое окно «SourceLink будет загружать [...]», и я выберу «Загрузить исходный код и продолжить отладку».
Это не работает. Я получаю следующее сообщение об ошибке
Source Link Error:
ERROR: Azure DevOps: Authentication failed for all accounts. Use 'File -> Account Settings...' to add a new account or refresh credentials.
Source Link URL: https://<host>.visualstudio.com/<project>/_apis/git/repositories/Lib/items?api-version=1.0&versionType=commit&version=cf94d5a0f224b6983c3885a2a6ac29aa52cec418&path=/HelloWorld/HelloWorld.cs
Теперь, сообщение об ошибке довольно ясно, я просто не понимаю его. Когда я перехожу по URL-адресу, указанному в сообщении об ошибке, я вижу ожидаемый файл. Я использовал браузер, который никогда не использую для проверки, и при переходе на эту страницу он просил меня войти, и я делаю это, используя ту же учетную запись, которую я использую в Visual Studio. Я также пытаюсь выйти из Visual Studio, перезапустить его и снова войти в Visual Studio, используя ту же учетную запись, которую я использовал в браузере. Все та же ошибка.
Я немного потерян. Кто-нибудь имеет представление о том, что еще я мог бы попробовать?