ReSharper 9:Microsoft参考源,而不是反编译的.cs文件

时间:2015-05-31 10:22:57

标签: c# visual-studio-2013 resharper decompiler reference-source

我在Visual Studio 2013上使用ReSharper 9.1.1。在某些类上,例如System.Data.SqlClient.SqlParameter,当我右键单击单词SqlParameter并单击

  

转到定义

它指示我一些反编译的cs文件

  

C:\用户\ X \应用程序数据\本地\ JetBrains的\共享\ V02 \ DecompilerCache \反编译\ D514DFA3-5BC8-4AE6-ABD0-D615A7C2893F \ 3C \ 1ec3bc9a \ SqlParameter.cs

在文件顶部显示:

  

//使用JetBrains反编译器进行反编译   //类型:System.Data.SqlClient.SqlParameter
  //汇编:System.Data,Version = 4.0.0.0,Culture = neutral,   PublicKeyToken = b77a5c561934e089
  // MVID:D514DFA3-5BC8-4AE6-ABD0-D615A7C2893F
  //装配地点:   C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ System.Data.dll

但是在其他一些类上,例如System.DateTime,当我右键单击DataTime并单击Go to Definition时,它会将我定向到这个文件:

  

C:\用户\ X \应用程序数据\本地\ TEMP \ SymbolCache \ SRC \源\ 51209.34209 \源\ NDP \ CLR \ SRC \ BCL \ SYSTEM \ DateTime.cs

这个文件,它说;

  

// --------------------------------------------- ---------------------------------   
  // copyright file =" MessageBox.cs"公司="微软"   
  //版权所有(c)Microsoft Corporation。版权所有。   
  // / copyright   
  // ------------------------------------------------ -----------------------------

所以这来自微软的参考源网站,另一个用ReSharper反编译。

为什么有些源代码被反编译,其中一些是从Miscoroft Reference Source下载的? 我希望所有来源都来自Microsoft参考源网站,未从.NET文件反编译
它们在实践中是相同的,但细节不同。 (评论等)

  • 在ReSharper选项中,我已经检查过;工具>外部来源> 导航到来源>允许从远程位置下载
  • 在VS 2013选项中,我已经检查过;调试>启用.NET Framework源代码,
  • 在VS 2013选项中,我已经检查过;调试>启用源服务器支持,
  • 在VS 2013选项中,我未经检查;调试>启用Just My Code,
  • 我已经清除了ReSharper缓存,
  • 已删除DecompilerCache文件夹C:\ Users \ X \ AppData \ Local \ JetBrains \ Shared \ v02 \ DecompilerCache
  • 我已经安装了dotPeek 1.4,尝试过它,
  • 已卸载dotPeek,
  • 卸载了ReSharper,删除了C:\ Users \ X \ AppData \ Local \ JetBrains \ 文件夹和重新安装的ReSharper,
  • 我已经使用Visual Studio清除了解决方案;构建>清洁解决方案

如何才能查看来自http://referencesource.microsoft.com/的来源?
我们有没有选择清除ReSharper的反编译缓存,并禁用反编译功能,直到我启用它?

编辑:我使用的是.NET Framework 4.5.1库。

更新:从Resharper 9.2和Visual Studio 2015和.NET Framework 4.6开始;对我来说没有任何改变。这个问题仍然存在,而且其他一些课程也在发生。我们可以做些什么,比如使用我喜欢的文件来抑制缓存的.cs文件?

1 个答案:

答案 0 :(得分:2)

ReSharper将尝试下载一个.pdb文件,用于定义您尝试查看的类型的程序集。但是,微软没有可供下载的框架中所有特定版本的所有特定版本的所有.pdb文件 - 如果.pdb不可用,ReSharper将退回以反编译该类型。

参考源网站花了很长时间没有更新,并且许多版本(特别是针对热修复和服务包)没有上传,并且随着更多更新发布,更多源代码无法使用下载As of .net 4.5.1,对.net程序集进行任何更新的当前进程意味着.pdb文件(和源)会自动上载到引用源站点,因此它应该适用于更新版本的程序集。但如果它是早期的程序集(并且我认为某些程序集不包含在参考源中),则可能无法下载。

也就是说,看起来这个特定程序集可能存在ReSharper问题。尝试导航到SqlParameter时,ReSharper会正确下载system.data.pdb文件,但无法在其中找到任何源信息。查看该文件,其中似乎确实存在源信息。我提出了一个问题,你可以投票和跟踪 - RSRP-440610