尽管存在pdb文件,Resharper仍无法导航到外部源

时间:2014-03-03 17:24:53

标签: c# visual-studio visual-studio-2012 resharper pdb-files

  • 我的解决方案使用来自我的其他解决方案生成的.dll类
  • .dll在同一台机器上以调试模式生成,pdb文件存在
  • 在调试过程中进入这些外部源,所以我假设pdb文件是正确的
  • pdp文件与.dlls
  • 位于同一目录中
  • 在R#设置中,我选择了“导航到源”和“使用调试信息进行导航检查”
  • VS2012 Pro和R#8.02 Full

它让我疯狂,为什么这样至关重要的东西,在每个常见的Java免费IDE中开箱即用,不可能使用数百美元的工具在C#中工作...... < / p>

1 个答案:

答案 0 :(得分:3)

查看the gist you posted中的转储,我能看到的第一个问题是PdbCacheManagerImpl的空白部分。这是ReSharper知道的pdbs列表。这不应该是空的。有a known bug可能导致此为空。尝试关闭并重新打开解决方案,看看是否再次启动它。

同样,PdbServiceImpl部分中的程序集不包含有关pdbs的任何信息。我认为这与PdbCacheManagerImpl有关 - 因为ReSharper不知道pdb文件,所以这里没有列出。当它工作时,它应该显示与程序集相关的pdb文件,以及pdb中所有符号的列表,以及它们映射到的文件。

(我可以通过创建一个新的解决方案来重新创建 - 转储在本节中没有显示任何内容。关闭并重新打开并显示已知的dll,带有标志,说明它们是否支持源服务器以及它们是否包含符号之间的映射(类型)关闭并重新打开后,我可以下载并查看例如Console.WriteLine的来源,PdbServiceImpl在mscorlib pdb中有System.Console条目

其次,您没有在选项中启用“允许从远程位置下载”。这只会影响您从符号服务器下载pdb文件,它不应该停止使用dll旁边的pdbs。您需要启用它才能导航到Console.WriteLine的来源。

所以,不幸的是,我现在的建议是关闭并重新打开解决方案,然后再试一次。您可能会遇到已知错误,解决此问题的唯一方法是关闭并重新打开。重新打开后,再次尝试导航,然后尝试再次转储支持信息 - 您应该在PdbCacheManagerImpl中看到更多pdb,并在PdbServiceImpl部分看到已知符号列表。