繁体   English   中英

如何在调试时让 Visual Studio 使用嵌入式源代码?

[英]How can I get Visual Studio to use Embedded Source code whilst debugging?

我已经使用<EmbedAllSources>文件中的<EmbedAllSources>元素将 C# 源代码嵌入到一个可移植的 PDB 文件中,并且我已经使用<DebugType>embedded<DebugType>将 pdb 嵌入到程序<DebugType>embedded<DebugType> ,如在 PDB嵌入 C# 源中所述新的csproj

我的程序集如下所示:

<PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>    
    <EmbedAllSources>true</EmbedAllSources>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>embedded</DebugType>   
</PropertyGroup>

我可以确认 pdb 是可移植的,并且包含我的源代码:

在此处输入图片说明

根据 Visual Studio 15.5 的发行说明,调试器应该能够在调试期间使用这些文件:

https://docs.microsoft.com/en-us/visualstudio/releasenotes/vs2017-relnotes-v15.5#EmbeddedSource

我使用的是 Visual Studio 2017(版本号 15.8.8)

但是,当我从我的程序集中 F11 进入代码时,它要求提供源代码:

在此处输入图片说明

虽然在谷歌搜索中有来自 ctaggart 的评论https://github.com/ctaggart/SourceLink/issues/192说运行 sourcelink print-urls 将打印“嵌入”但我的没有,也许这是一个提示:

在此处输入图片说明

有没有人让它成功工作? 如果是这样,你能告诉我做错了什么吗?

最简单的方法是去:

Debug -> Windows -> Modules

在此列表中,您应该能够找到您的程序集(dll/exe)。

Right click it -> Load Symbols

它会询问从哪里加载符号。

导航到匹配的 .pdb 文件所在的目录。

它应该自动加载。 步入或在此引用的程序集中出现未捕获的错误应触发该代码的中断,或要求您导航到与引发错误的文件对应的代码文件。

在我们的过程中,我们通常必须导航到 nuget 缓存以找到我们已安装的 nuget 包的 pdb。 (%UserProfile%/nuget/packages/YourPackage/VersionNumber/../..)

我们还用这些包打包源代码并导航到那些/nuget/packages .cs文件,不过,任何corresponding .cs文件都应该允许它加载。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM