源 link 无法从私有 azure 符号服务器下载 nuget 的源文件,使用了错误的域 dev.azure.com/raw/

Source link can't download source files for nuget from private azure symbol server, uses wrong domain dev.azure.com/raw/

TL;DR

使用了 Azure devops,VS with source link 尝试开源形式 https://dev.azure.com/raw/... 出现 404 错误,看起来域生成模式是错误的

我们有 nuget 包并希望启用对其源代码的调试。一切都是通过 azure devops 完成的,任务“https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/build/index-sources-publish-symbols?view=azure-devops”是在构建 nuget 时设置的。

在 visual studio 中,"use source link" 启用,"just my code" 禁用。 VS 中的源服务器设置为 dev.azure.com,具有私有凭据。

在找到并加载调试符号时,出现关于 "source link will download source from internet" 的警报,但随后在日志

中提到 404 错误

正在尝试下载 https://dev.azure.com/raw/SomeName/SomeProject/_git/XXX.Library/8ab2f2673396a762aeb7d70fbdca85357ec731d0/XXX.Library/Utils/ApiProxy.cs 在浏览器中,我也无法访问状态为 404 的文件。

但是通过 Azure UI 我可以找到这个文件,例如通过 https://dev.azure.com/SomeName/SomeProject/_git/XXX.Library/commit/e982b34fa3ff2524eb0f479197369555e64534f2?refName=refs%2Fheads%2Fmaster&_a=contents&path=%2FXXX%2FUtils%2FApiProxy.cs

所以看起来源 link 使用 github.com 模式而不是 azure 相关模式生成路径。

终于找到问题了,nuget包有引用<PackageReference Include="Microsoft.SourceLink.GitHub" ../>, 对于 azure devops 的源代码,它应该是 <PackageReference Include="Microsoft.SourceLink.Vsts.Git" ../>