【发布时间】:2019-04-10 02:25:35
【问题描述】:
我已使用 csproj 文件中的 <EmbedAllSources> 元素将 C# 源代码嵌入到可移植 PDB 文件中,并且我已使用 <DebugType>embedded<DebugType> 将 pdb 嵌入到程序集中,如 Embedding C# sources in PDB with new 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 将打印“embed”,但我的不会,也许这是一个提示:
有没有人让它成功运行?如果是这样,你能告诉我我做错了什么吗?
【问题讨论】:
-
我不是专家,但也许这有用? blogs.msdn.microsoft.com/jimgries/2007/07/06/…
-
这是一个“行不通的问题”。浏览“尚未在 VS 中实现”的文章是非常痛苦的,他们最近工作很糟糕。不过15.8.8应该都已经整理好了。只需确保您使用的是最新的调试引擎:工具 > 选项 > 调试 > 常规,应取消选中“使用托管兼容模式”。除此之外,重新格式化磁盘或重新安装 VS 会很有吸引力。
-
我们可以看看您的符号 PDB 路径(工具菜单 > 选项 > 调试 > 符号),您能否向我们展示模块(调试菜单 > Windows > 模块)的屏幕截图,突出显示所在行您的 PDB 已加载?
-
我会尝试不同的机器/全新安装/VM 等并报告回来。有人真的有这个工作吗?
-
@HansPassant 你是对的。我不确定我需要做的最低限度是什么,但我买了一个安装了 Windows 10 和 VS 2017 的新 SSD,它可以工作!!!如果您将此作为答案发布,我会接受,赏金将再开放 3 小时。
标签: c# visual-studio .net-core pdb-files