如何使Visual Studio调试器完全忽略原始源文件的位置

时间:2018-11-15 21:42:24

标签: c# visual-studio debugging nuget visual-studio-debugging

我正在开始将内部类库(.net框架,C#)移至一系列nuget .net标准包的工作,我们还将在内部提供这些包。我正在研究阶段。

我正在尝试使用VS(2017)调试器进行研究,并努力创建我们的约定,以了解软件包的调试版本(带符号)在哪里以及发行版本(不带符号)在哪里。

我在一个解决方案中构建了一个小型虚拟.net标准软件包,并使用nuget add将其放置在文件共享中。而且我已经在其他解决方案中成功使用了它。

但是,当我尝试使用该消费解决方案中的代码时,Visual Studio会以某种方式做一些聪明的事情,实际上是将我带入原始位置的源代码中。从某种角度考虑,这很好,但是我想模拟另一台开发人员在另一台使用该软件包且没有原始源可用的机器上的情况,因此进入打包代码的唯一方法是:使用带有符号的调试版本。但是Visual Studio通过找出原始源位置来挫败我,我不知道它是如何做到的。

如何使VS变得“笨拙”,以便可以在我的计算机上模拟在没有此软件包源的另一台计算机上消耗软件包的情况?

谢谢。

1 个答案:

答案 0 :(得分:1)

  

如何使VS变得“笨拙”,以便可以在我的计算机上模拟在没有此软件包源的另一台计算机上消耗软件包的情况?

您可以尝试指定该.net标准项目的符号以排除在自动加载之外

详细信息:

我们知道:

  

The Program database (.pdb) files(也称为符号文件)映射   项目源代码中的标识符和语句   编译的应用程序中的相应标识符和说明。

     

符号文件还显示源文件的位置,并且   可选地,服务器从中检索它们。

在Visual Studio中用于调试的符号加载的默认设置是加载所有模块

enter image description here

这就是为什么Visual Studio会聪明地将您真正引入原始位置的原因。

因此,要解决此问题,我们需要禁用Visual Studio“加载所有模块”,我们可以为.net标准项目指定排除的模块。

要完成此操作,请单击该窗口上的链接,然后添加.net标准的名称:

enter image description here

然后Visual Studio变成“哑巴”,找不到原始位置。

希望这会有所帮助。