c# - 如何让 Visual Studio 调试器完全忽略原始源文件位置
问题描述
我开始着手将内部类库(.net 框架、C#)迁移到一系列 nuget .net 标准包,我们也将在内部提供这些包。我在研究阶段。
我正在尝试使用 VS (2017) 调试器进行研究,并努力为软件包的调试版本(带符号)和发布版本(不带符号)的位置创建我们的约定。
我在一个解决方案中构建了一个小的虚拟 .net 标准包,并使用 nuget add 将其放置在文件共享中。我已经成功地在不同的解决方案中使用了它。
但是,当我尝试进入消费解决方案中的代码时,不知何故,Visual Studio 正在做一些聪明的事情,实际上是在其原始位置将我带入源代码。从某些方面考虑这很好,但我想模拟不同开发人员在不同机器上使用包并且没有可用的原始源的情况,这样进入打包代码的唯一方法是使用带有符号的调试版本。但是视觉工作室通过找出原始源位置来挫败我,我不知道它是如何做到的。
我怎样才能让 VS 变得“笨拙”,这样我就可以在我的机器上模拟在另一台没有此包源的机器上使用包的情况?
提前致谢。
解决方案
我怎样才能让 VS 变得“笨拙”,这样我就可以在我的机器上模拟在另一台没有此包源的机器上使用包的情况?
您可以尝试指定要从自动加载中排除的 .net 标准项目的符号。
细节:
据我们所知:
程序数据库 (
.pdb
) 文件,也称为符号文件,将项目源代码中的标识符和语句映射到已编译应用程序中的相应标识符和指令。符号文件还显示源文件的位置,以及从中检索它们的服务器(可选)。
Visual Studio 中用于调试的符号加载的默认设置是加载所有模块:
这就是为什么 Visual Studio 很聪明,并且实际上在其原始位置将您带入源代码的原因。
因此,要解决此问题,我们需要禁用 Visual Studio“加载所有模块”,我们可以为您的 .net 标准项目指定排除的模块。
为此,请单击该窗口上的链接,然后添加您的 .net 标准的名称:
然后 Visual Studio 变得“笨”,找不到原始位置。
希望这可以帮助。
推荐阅读
- react-native - 如何使抽屉内容选项在 React 导航 6.x 中工作
- informatica - Mailx 或 Informatica 任务 - 向地址中包含 1 个以上名称的收件人发送消息
- sql - 如何拆分字符串并用数字和文本等条件分隔数据
- python-3.x - 通过 CDK 为嵌套 Stepfunction 调用提供变量命名空间
- powershell - Selenium WebDriver Chrome 无法在 Powershell 中启动
- azure - azure vm主机键盘上的Vbox不起作用
- selenium - Chrome 驱动程序默认分辨率
- regex - 无法将我的域名和 IP 正则表达式规则组合成一个规则
- amazon-web-services - Terraform - 带有 Lambda 授权者的 AWS AppSync 图形 API
- javascript - 以有效方式在以下模式中的数组中添加值的逻辑,有人可以告诉我们我们称之为数组模式的内容吗