使用 Azure Devops Symbole Server 调试 NuGet 包导致 class 未找到

Debug NuGet package using Azure Devops Symbole Server resulting to class not found

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

我尝试了多种方法,例如清除符号缓存、更改 "own code only" 和 "allow source server support" 的调试设置等。但无济于事。

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

Debug NuGet package using Azure Devops Symbole Server resulting to class not found

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

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

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

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

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

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

查看我的 了解详情。

希望对您有所帮助。