在Visual Studio中进行调试会打开错误的源而不是符号服务器上的文件(如果源文件具有相同的名称)

时间:2016-10-06 12:35:29

标签: debugging visual-studio-2015 nuget pdb-files proget

我已经广泛搜索了解决方案,但无法找到。

我已将TeamCity配置为将包含符号和来源的包发布到ProGet。此过程非常有效,ProGet可以正确识别符号。

我按照ProGet知识库中的说明设置了Visual Studio,即

  • 在选项中添加符号位置 - >调试 - >符号
  • 启用源服务器支持选项 - > Debugging-> general

我已经在Fiddler中检查过,当我在调试中启动我们的应用程序时会下载这些符号。

然后当我们进入我们包中的一个方法时,会打开错误的文件。然而,它打开的文件名称相同(我们在每个软件包中都有一个名为Component的文件,并且在本地解决方案中也提供了包含该文件的文件)。

如果我更改文件的名称并重新打包并将其发布到ProGet,问题就会消失,我可以在调试期间介入文件,但这看起来像是黑客。

有没有人知道如何让Visual Studio在符号服务器上使用相同名称的解决方案中的任何本地文件来支持该文件?

2 个答案:

答案 0 :(得分:2)

项目目录中的符号文件总是被加载,对于这个问题,样本可以帮助我们理解容易加载的符号。如果您的本地缓存文件夹具有之前从Symbol Server下载的符号文件,我知道在您调试应用程序期间它不会再次下载它。所以我的理解是,由于您的符号文件具有相同的名称,因此VS调试将首先从本地项目文件夹中搜索并加载符号,然后如果您的本地计算机没有它们,则从符号服务器或其他文件下载它。这就是你遇到这个问题的原因。

我能想到的解决方法:

(1)如果您真的想要使用两个同名文件,请手动从调试模块窗口加载符号。

(2)使用不同的名称会更好。

答案 1 :(得分:0)

右键单击包含要打开的文件的项目,然后选择“设置为启动项目”。 现在,当您尝试调试时,它将运行正确的文件。