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

Debugging 在Visual Studio中进行调试会打开错误的源,而不是符号服务器上的文件(如果源文件具有相同的名称),debugging,visual-studio-2015,nuget,pdb-files,proget,Debugging,Visual Studio 2015,Nuget,Pdb Files,Proget,我已经到处寻找解决这个问题的办法,但找不到 我已将TeamCity配置为将包含符号和源代码的包发布到ProGet。这个过程非常有效,ProGet可以正确识别符号 我已经按照ProGet知识库上的说明安装了Visual Studio,即 在选项->调试->符号中添加符号位置 已启用源服务器支持选项->调试->常规 我已经签入了Fiddler,当我在调试中启动我们的应用程序时,符号会被下载 然后,当使用包中的一个方法时,它会打开错误的文件。但是,它打开的文件的名称是相同的(我们在每个包中都有一个

我已经到处寻找解决这个问题的办法,但找不到

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

我已经按照ProGet知识库上的说明安装了Visual Studio,即

  • 在选项->调试->符号中添加符号位置
  • 已启用源服务器支持选项->调试->常规
我已经签入了Fiddler,当我在调试中启动我们的应用程序时,符号会被下载

然后,当使用包中的一个方法时,它会打开错误的文件。但是,它打开的文件的名称是相同的(我们在每个包中都有一个名为Component的文件,在拉入包的本地解决方案中也有一个名为Component的文件)

如果我更改了文件名并重新打包并发布到ProGet,问题就会消失,我可以在调试过程中插入文件,但这似乎是一个黑客行为


有人知道如何让Visual Studio使symbol服务器上的文件优于解决方案中具有相同名称的任何本地文件吗?

始终加载项目目录中的symbol文件,对于此问题,示例可以帮助我们轻松理解加载的符号。如果您的本地缓存文件夹中有以前从Symbol服务器下载的symbols文件,我知道在调试应用程序期间它不会再次下载该文件。因此,我的理解是,由于符号文件具有相同的名称,VS调试将首先从本地项目文件夹中搜索并加载符号,然后从符号服务器或其他(如果您的本地计算机没有)下载符号。这就是为什么你会有这个问题

我能想到的解决办法是:

(1) 如果确实要使用两个同名文件,请从“调试模块”窗口手动加载符号


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

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

是我的源文件具有相同的名称(没有符号文件)。对不起,我不知道你是不是这个意思?我希望您能够使用相同名称的文件,因为项目可能会对文件名使用约定?也许这是一个错误的假设?@Ben,我知道同一个源文件在每次构建时都会有不同的匹配PDB文件,如果你进入错误的源文件,一个可能的原因是它加载了错误的PDB/symbol文件。还没有机会更详细地了解你的建议。我希望明天能给它一点时间,并且会更新。我认为我们最好的选择是重命名应用程序中的文件,这看起来有点像黑客,但我们可以在我们的过程中使用它。我们还改变了本地使用软件包的方式,希望这不会成为太大的问题。谢谢您的回答。屏幕截图的例子将非常感谢以及。