【问题标题】:ReSharper 9: Microsoft Reference Source, Instead of Decompiled .cs FilesReSharper 9:Microsoft 参考源,而不是反编译的 .cs 文件
【发布时间】:2015-05-31 10:22:57
【问题描述】:

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

转到定义

它引导我到一些反编译的 cs 文件

C:\Users\X\AppData\Local\JetBrains\Shared\v02\DecompilerCache\decompiler\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:\Users\X\AppData\Local\Temp\SymbolCache\src\Source\51209.34209\Source\ndp\clr\src\BCL\System\DateTime.cs

这个文件,上面写着;

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

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

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

  • 在 ReSharper 选项中,我检查过;工具 > 外部来源 > 导航至来源 > 允许从远程位置下载
  • 在 VS 2013 选项中,我检查过;调试 > 启用 .NET Framework 源单步执行,
  • 在 VS 2013 选项中,我检查过;调试 > 启用源服务器支持,
  • 在 VS 2013 选项中,我没有选中;调试 > 仅启用我的代码,
  • 我已清除 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 文件?

【问题讨论】:

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


    【解决方案1】:

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

    参考源站点长时间没有更新,很多版本(尤其是热修复和服务包)没有上传,随着更多更新发布,更多源无法下载。 As of .net 4.5.1,对 .net 程序集的任何更新的当前过程意味着 .pdb 文件(和源)会自动上传到参考源站点,因此它应该适用于更新版本的程序集。但如果它是较早的程序集(而且我认为参考源中没有包含一些程序集),那么它可能无法下载。

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

    【讨论】:

    • 请问,.pdb 文件到底在哪里?我查看了我的本地文件夹 AppData\Local\Symbols\ 只有 .cs 文件。
    • %LOCALAPPDATA%\RefSrcSymbols\System.Data.pdb\8CAA24E603BB4B6EAA429528AE8799E81\System.Data.pdb。 ReSharper(令人讨厌)将几个缓存直接放在 %LOCALAPPDATA% - RefSrcSymbols 中用于 referencesource.micrsoft.com 的 .pdb 文件,SymbolSourceSymbols 用于来自 symbolsource.org 的 .pdb 文件,Symbols 用于其他 .pdb 文件和下载的源代码。
    • 有什么办法可以用我喜欢的那个来改变这个 JetBrains\Shared\v02\DecompilerCache\decompiler\D514DFA3-5BC8-4AE6-ABD0-D615A7C2893F\3c\1ec3bc9a\SqlParameter.cs 吗?当我转到它的定义时,它将转到我选择的文件。
    • 我不明白这个问题。用什么改变什么?该文件是一个缓存的反编译文件。
    • 用我想要的另一个cs文件更改反编译文件。我不想看到那个缓存的反编译cs文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    相关资源
    最近更新 更多