我在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文件反编译。
它们在实践中是相同的,但细节不同。 (评论等)
如何才能查看来自http://referencesource.microsoft.com/的来源?
我们有没有选择清除ReSharper的反编译缓存,并禁用反编译功能,直到我启用它?
编辑:我使用的是.NET Framework 4.5.1库。
更新:从Resharper 9.2和Visual Studio 2015和.NET Framework 4.6开始;对我来说没有任何改变。这个问题仍然存在,而且其他一些课程也在发生。我们可以做些什么,比如使用我喜欢的文件来抑制缓存的.cs文件?
答案 0 :(得分:2)
ReSharper将尝试下载一个.pdb文件,用于定义您尝试查看的类型的程序集。但是,微软没有可供下载的框架中所有特定版本的所有特定版本的所有.pdb文件 - 如果.pdb不可用,ReSharper将退回以反编译该类型。
参考源网站花了很长时间没有更新,并且许多版本(特别是针对热修复和服务包)没有上传,并且随着更多更新发布,更多源代码无法使用下载As of .net 4.5.1,对.net程序集进行任何更新的当前进程意味着.pdb文件(和源)会自动上载到引用源站点,因此它应该适用于更新版本的程序集。但如果它是早期的程序集(并且我认为某些程序集不包含在参考源中),则可能无法下载。
也就是说,看起来这个特定程序集可能存在ReSharper问题。尝试导航到SqlParameter
时,ReSharper会正确下载system.data.pdb
文件,但无法在其中找到任何源信息。查看该文件,其中似乎确实存在源信息。我提出了一个问题,你可以投票和跟踪 - RSRP-440610。