Azure devops 使用Azure Devops和源链接调试NuGet包

Azure devops 使用Azure Devops和源链接调试NuGet包,azure-devops,sourcelink,Azure Devops,Sourcelink,我正在尝试让SourceLink使用私有NuGet包。 我正在运行一个netcore2.1 web应用程序,它引用了托管在Azure Devops NuGet提要上的netstandard2.0 NuGet包 问题1:源链接是否支持.NET标准包 我遵循了指南中的说明,基本上是: 将索引源和发布符号包添加到my Azure Devops构建中 在VisualStudio中,将VSTS服务器添加为符号服务器 在Visual Studio中,启用源链接支持。我还尝试启用源服务器支持 构建管道发布符号

我正在尝试让SourceLink使用私有NuGet包。 我正在运行一个netcore2.1 web应用程序,它引用了托管在Azure Devops NuGet提要上的netstandard2.0 NuGet包

问题1:源链接是否支持.NET标准包

我遵循了指南中的说明,基本上是:

  • 将索引源和发布符号包添加到my Azure Devops构建中

  • 在VisualStudio中,将VSTS服务器添加为符号服务器

  • 在Visual Studio中,启用源链接支持。我还尝试启用源服务器支持

  • 构建管道发布符号路径似乎正在工作-在我看到的日志中:
    
    已成功处理D:\a\1\s\src\MyCompany.Core.Services.SnapshotClient\bin\release\netstandard2.0\MyCompany.Core.Services.SnapshotClient.pdb:
    

    当我开始调试我的应用程序时,我在VS output窗口中看到一系列输出:
    
    'dotnet.exe'(CoreCLR:clrhost):加载了'C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\2.1.4\Microsoft.AspNetCore.Hosting.dll'。找不到或无法打开PDB文件。
    

    对于我的NuGet软件包,我看到“加载符号”,这似乎很有希望

    FWIW我没有看到Visual Studio提示“源链接将从internet下载”

    当我调试并尝试进入我的NuGet包时,它只是跳过它

    然后我试着:

  • 前往并按照他们的指示安装了Microsoft.SourceLink.Vsts.Git软件包(问题2有必要吗?)

  • 当这不起作用时,我升级了应用程序中的所有该死的包,这迫使我安装.NET Core SDK 2.1.403

  • 试图在我的NuGet包的.csproj中添加一些东西,在彻底解决GitHub问题之后
    
    真的
    并从my.nupkg在.pdb上运行
    sourcelink打印URL
    。我想看起来对吧?存在URL

  • 在看到@mitchdenny的评论后禁用索引。还是不行

  • 现在我很困惑为什么它不起作用

    问题1:源链接是否支持.NET标准包

    对。我在Azure DevOps管道上成功地构建了一个.NET标准2.0库,之后它被推送到我们的私有Azure DevOps工件NuGet提要。然后,在一个本地项目中,我能够进入该库(VisualStudio弹出一个关于下载远程源代码的提示)

    以下是我在库的
    .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>
    
    
    真的
    真的
    我想是的。但我删除了引用,重新构建在Azure DevOps上,并且仍然能够逐步浏览库。也许这对于不同的环境是必要的(我只是留着以防万一)

    FWIW:

    • 我正在使用Visual Studio 15.8.9进行调试
    • 我最新安装的.NET核心SDK是2.1.403
    • 我的库的使用者是.NETCore2.1可执行文件
    • 我使用编译库,并将其调用到
      dotnetmsbuild
    我写了一篇关于如何使用.NET Core和AzureDevops实现这一点的完整文章,但这些步骤也适用于.NET标准项目

    也就是说,微软文档中缺少的一些关键要点是:

    • 项目的调试信息需要从“可移植”更改为“完整”
    • AzureDevOps Nuget(恢复、构建、打包和推送)需要使用.NET核心任务
    • .NET核心构建任务应该有一个参数“-configuration”,该参数传递值“debug”。这样做会生成.PDB文件
    • .NET核心包任务应使用“custom”命令,其中custom命令为“pack”,并具有以下参数:“--include symbols-vd”和传入值“debug”的“-c”。这样做会告诉pack命令在包中包含.PDB文件

    我试过了,得到了软件包元数据中的链接,但仍然不起作用。我看到我的包不包含任何pub文件,只包含一个dll。你能告诉我们你的包裹里有什么内容吗?我还使用了cake中的Nuget包任务。有什么特别的设置吗?你能提供一些关于建筑的更多信息吗?我发现pdb文件没有包括在内,因为我拼错了AllowedOutputExtensionsInPackageBuildOutputFolder标记。其中包括pub文件。无论如何,我还是无法进入包裹。您能提供一些有关Visual Studio选项中调试设置的详细信息吗?嗯,听起来很令人沮丧!在VS中,当我进入
    Debug
    ->
    选项
    ->
    常规
    时,我已经选中了
    仅启用我的代码
    ,还选中了
    启用源代码链接支持
    。@fra当你说你不能进入包时,到底发生了什么?您是否看到一个弹出窗口询问您是否要从远程回购下载源代码?这听起来非常令人沮丧,但很高兴您终于找到了根本问题!谢谢埃里克。当时我至少花了一天的时间想弄明白,并尝试了其中的一些选择。我已经离开了那份工作,但如果我再尝试一下,我会参考你的博客。哇,我应该在把我的问题发布到博客上之前阅读这个答案。这应该是可以接受的答案,因为不再需要在Nuget包中包含
    .pdb
    文件recommended@Eric您网站的证书无效。你可能想检查一下。