ReSharper 9:Microsoft 参考源,而不是反编译的 .cs 文件
ReSharper 9: Microsoft Reference Source, Instead of Decompiled .cs Files
我在 Visual Studio 2013 上使用 ReSharper 9.1.1。在某些 类 上,例如 System.Data.SqlClient.SqlParameter
,当我右键单击单词 SqlParameter
并单击
Go to Definition
它将我引导至一些反编译的 cs 文件
C:\Users\X\AppData\Local\JetBrains\Shared\v02\DecompilerCache\decompiler\D514DFA3-5BC8-4AE6-ABD0-D615A7C2893Fcec3bc9a\SqlParameter.cs
文件顶部写着:
// Decompiled with JetBrains decompiler
// Type: System.Data.SqlClient.SqlParameter
// Assembly: System.Data, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
// MVID: D514DFA3-5BC8-4AE6-ABD0-D615A7C2893F
// Assembly location:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Data.dll
但在其他一些 类 上,例如 System.DateTime
当我右键单击 DataTime 并单击“转到定义”时,它会将我定向到此文件:
C:\Users\X\AppData\Local\Temp\SymbolCache\src\Source209.34209\Source\ndp\clr\src\BCL\System\DateTime.cs
这个文件,它说;
//------------------------------------------------------------------------------
// copyright file="MessageBox.cs" company="Microsoft"
// Copyright (c) Microsoft Corporation. All rights reserved.
// /copyright
//-----------------------------------------------------------------------------
所以这个来自微软的参考源网站,另一个是用ReSharper反编译的。
为什么有些源代码是反编译的,有些是从Miscoroft Reference Source下载的? 我希望所有源都来自 Microsoft 参考源网站,不是从 .NET 文件反编译的。
它们在实践中是相同的,但在细节上有所不同。 (评论等)
- 在 ReSharper 选项中,我检查过;工具 > 外部资源 >
导航到源 > 允许从远程位置下载
- 在 VS 2013 选项中,我检查过;调试 > Enable.NET 框架源步进,
- 在 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 文件?
ReSharper 将尝试为定义您尝试查看的类型的程序集下载 .pdb 文件。但是 Microsoft 没有提供框架中所有程序集的所有特定版本的所有 .pdb 文件可供下载 - 如果 .pdb 不可用,ReSharper 会回退到反编译类型。
参考源站点长时间未更新,许多版本(尤其是修补程序和服务包)没有上传,随着更多更新的发布,更多源无法下载. As of .net 4.5.1,当前对 .net 程序集的任何更新都意味着 .pdb 文件(和源代码)会自动上传到参考源站点,因此它应该适用于更新版本的程序集。但是如果它是一个较早的程序集(我认为有一些程序集没有包含在参考源中),那么它可能无法下载。
也就是说,看起来这个特定程序集可能存在 ReSharper 问题。尝试导航到 SqlParameter
时,ReSharper 正确下载 system.data.pdb
文件,但未能在其中找到任何源信息。查看该文件,其中似乎确实有源信息。我提出了一个您可以投票和跟踪的问题 - RSRP-440610.
我在 Visual Studio 2013 上使用 ReSharper 9.1.1。在某些 类 上,例如 System.Data.SqlClient.SqlParameter
,当我右键单击单词 SqlParameter
并单击
Go to Definition
它将我引导至一些反编译的 cs 文件
C:\Users\X\AppData\Local\JetBrains\Shared\v02\DecompilerCache\decompiler\D514DFA3-5BC8-4AE6-ABD0-D615A7C2893Fcec3bc9a\SqlParameter.cs
文件顶部写着:
// Decompiled with JetBrains decompiler
// Type: System.Data.SqlClient.SqlParameter
// Assembly: System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// MVID: D514DFA3-5BC8-4AE6-ABD0-D615A7C2893F
// Assembly location: C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Data.dll
但在其他一些 类 上,例如 System.DateTime
当我右键单击 DataTime 并单击“转到定义”时,它会将我定向到此文件:
C:\Users\X\AppData\Local\Temp\SymbolCache\src\Source209.34209\Source\ndp\clr\src\BCL\System\DateTime.cs
这个文件,它说;
//------------------------------------------------------------------------------
// copyright file="MessageBox.cs" company="Microsoft"
// Copyright (c) Microsoft Corporation. All rights reserved.
// /copyright
//-----------------------------------------------------------------------------
所以这个来自微软的参考源网站,另一个是用ReSharper反编译的。
为什么有些源代码是反编译的,有些是从Miscoroft Reference Source下载的? 我希望所有源都来自 Microsoft 参考源网站,不是从 .NET 文件反编译的。
它们在实践中是相同的,但在细节上有所不同。 (评论等)
- 在 ReSharper 选项中,我检查过;工具 > 外部资源 > 导航到源 > 允许从远程位置下载
- 在 VS 2013 选项中,我检查过;调试 > Enable.NET 框架源步进,
- 在 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 文件?
ReSharper 将尝试为定义您尝试查看的类型的程序集下载 .pdb 文件。但是 Microsoft 没有提供框架中所有程序集的所有特定版本的所有 .pdb 文件可供下载 - 如果 .pdb 不可用,ReSharper 会回退到反编译类型。
参考源站点长时间未更新,许多版本(尤其是修补程序和服务包)没有上传,随着更多更新的发布,更多源无法下载. As of .net 4.5.1,当前对 .net 程序集的任何更新都意味着 .pdb 文件(和源代码)会自动上传到参考源站点,因此它应该适用于更新版本的程序集。但是如果它是一个较早的程序集(我认为有一些程序集没有包含在参考源中),那么它可能无法下载。
也就是说,看起来这个特定程序集可能存在 ReSharper 问题。尝试导航到 SqlParameter
时,ReSharper 正确下载 system.data.pdb
文件,但未能在其中找到任何源信息。查看该文件,其中似乎确实有源信息。我提出了一个您可以投票和跟踪的问题 - RSRP-440610.