【问题标题】:Debug NuGet package using Azure Devops Symbole Server resulting to class not found使用 Azure Devops Symbole Server 调试 NuGet 包导致找不到类
【发布时间】:2020-02-06 10:39:45
【问题描述】:

我最近一直在使用 Azure Devops 来托管一个 NuGet 包作为工件,然后我将在我的另一个项目中使用它。 到目前为止一切顺利,我设法得到了包并按预期使用它,但我也希望能够调试它,所以我不得不添加符号(据我所知?)。因此,我在管道中为成功的符号添加了一个发布步骤,并发布了 .pdb 文件。我通过在设置 Debug > Symbols 中连接到 DevOps 来引用我在 Visual Studio 中的符号源。 在调试代码时,它会正确地将 .pdb 文件下载到临时位置,并且在代码运行期间它一直停留在那里。 在调试器 > windows > 模块下,它实际上告诉我在调试时正确加载了符号,但是当我尝试进入代码时,我得到错误:“.cs not found”。

我尝试了多种方法,例如清除符号缓存、在调试中更改“仅限自己的代码”和“允许源服务器支持”等设置。但无济于事。

我是错过了一步还是我做错了什么?

【问题讨论】:

    标签: azure-devops nuget-package visual-studio-debugging debug-symbols symbol-server


    【解决方案1】:

    使用 Azure Devops Symbole Server 调试 NuGet 包导致找不到类

    那是因为你没有启用 Source Link,它支持 Visual Studio 在调试时知道它应该去哪里下载源代码。

    要调试源代码,我们需要有源代码,pdb(或/Z7)包含调试信息,就像可执行代码和您的源代码之间的映射。使用 pdb VS 调试器知道每条指令在源文件中的位置,但它仍然需要有源文件来显示代码。

    所以,我们必须启用源链接。编辑 .csproj 文件并在第一个 PropertyGroup 元素中包含以下代码:

    <PublishRepositoryUrl>true</PublishRepositoryUrl>
     <EmbedUntrackedSources>true</EmbedUntrackedSources>
    

    您可以查看similar thread 了解更多详情。

    另一方面,您也可以在 nuget 包中添加源代码作为轻量级解决方案:

    详情请查看我的previous thread

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-03-14
      • 2019-03-24
      • 2019-10-30
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      • 2019-07-04
      • 2021-04-23
      • 1970-01-01
      相关资源
      最近更新 更多