我正在尝试让SourceLink与私有的NuGet包一起使用。 我正在运行一个netcore2.1 Web应用程序,该应用程序引用了托管在Azure Devops NuGet feed上的netstandard2.0 NuGet程序包。
问题1: Source Link是否支持.NET Standard软件包?
我已按照https://docs.microsoft.com/en-us/azure/devops/artifacts/symbols/setting-up-github-sourcelinking?view=vsts这里的指南中的说明进行操作,基本上是:
将索引源和发布符号包添加到我的Azure Devops版本中。
在Visual Studio中,将我们的VSTS服务器添加为符号服务器
在Visual Studio中,启用“源链接”支持。我还尝试了启用源服务器支持。
“构建管道发布符号”路径似乎正在工作-在我看到的日志中:
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中看到“源链接将从互联网下载”的提示。
当我调试并尝试单步进入我的NuGet程序包时,它会单步执行。
然后我尝试:
前往https://github.com/dotnet/sourcelink,并按照他们的说明安装Microsoft.SourceLink.Vsts.Git程序包(是否需要问题2 ?)
如果该命令不起作用,我升级了应用程序中的每个darn包,这迫使我安装.NET Core SDK 2.1.403
在拖出GitHub问题之后,尝试向NuGet包的.csproj添加一些内容
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
和
<DebugType>portable</DebugType>
<ci>true</ci>
现在,我的.nupkg也包括.pdb文件,这些文件以前都不存在。仍然不能帮助我进行调试。
从https://www.nuget.org/packages/sourcelink/安装了sourcelink cli工具,并从我的.nupkg在.pdb上运行了sourcelink print-urls
。看起来正确,我认为吗?存在网址。
在看到@mitchdenny的评论https://github.com/MicrosoftDocs/vsts-docs/issues/1336#issuecomment-414415049后,禁用了索引编制。仍然不起作用。
现在我很困惑为什么它不起作用。
答案 0 :(得分:3)
问题1: Source Link是否支持.NET Standard软件包?
是的。我在Azure DevOps Pipeline上成功构建了.NET Standard 2.0库,然后将其推送到我们的私有Azure DevOps Artifacts NuGet feed中。然后,在一个本地项目中,我能够进入该库(Visual Studio弹出一个有关下载远程源代码的提示,提示我)。
这是我必须在库的.csproj
文件中进行的更改:
<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]?
我不确定。 docs建议是这样。但是我删除了该参考,并在Azure DevOps上重建了该参考,但仍然能够逐步浏览该库。也许这对于不同的环境是必要的(我为防万一)。
FWIW:
dotnet msbuild
答案 1 :(得分:3)
我就如何使用.NET Core和AzureDevops编写了完整的blog,但这些步骤也应适用于.NET Standard项目。
也就是说,您应该知道Microsoft文档中缺少的一些关键要点: