【问题标题】:Browsing the .NET Framework source code from Visual Studio从 Visual Studio 浏览 .NET Framework 源代码
【发布时间】:2012-03-30 12:50:10
【问题描述】:

我知道I can set up Visual Studio to debug through the .NET framework source code

但是有没有一种方法可以让我在不调试的同时浏览代码 - 即能够按 F12 或“转到定义”?

我认为如果 Visual Studio 中没有内置该功能,那么可能有一个插件可以添加它?

【问题讨论】:

标签: .net visual-studio


【解决方案1】:

我从未尝试过,但据说代码是公开的:

[编辑]

http://referencesource.microsoft.com/

【讨论】:

  • 当然 - 这就是 VS 在调试模式下使用的内容(如上述链接中设置时)。但是如何设置VS,以便在我不调试时它可以为我找到并显示源代码?
【解决方案2】:

.NET Mass Downloader,但我认为你的问题的直接答案是,不。

但是我现在看到微软已经让代码更容易下载了。

但请注意,即使对于您自己的代码,在不调试时,除非您打开项目,否则 VS 不会帮助您定位源代码(即使您自己找到它时,当您再次开始调试时,断点仍然有效,如果.pdb 文件对应)。

【讨论】:

    【解决方案3】:

    我从这里 http://referencesource.microsoft.com/netframework.aspx 下载了 .NET Framework 源代码。

    由于我使用的是 .NET 4.0,因此我从列表中选择了“.Net/4”。 (该列表中的“.NET/8.0”是什么?不知道。)

    我写了一些脚本来重新安排他们给我们带来的血腥混乱:

    • 进入合理的目录层次结构;
    • 删除重复代码(为什么每个文件都加倍,或者我的安装错误?);
    • 重命名所有顶级命名空间,以免与内置于 Intellisense 的本地命名空间冲突。
    • 示例:System.Windows.Controls -> xSystem.Windows.Controls

    然后按照以下步骤操作:

    1. 新建一个“类库”类型的 Visual Studio 项目
    2. 删除所有引用 -- 是的,甚至是系统引用。
    3. 将所有经过处理的 .NET 代码拖放到项目的根目录中。
    4. 等待大约 30 分钟进行 VS 处理。 VS 会出现冻结;请耐心等待。

    Intellisense/ReSharper 仍然抱怨大量问题,但现在我可以右键单击并选择“转到声明/实施”。

    加载此项目后,Visual Studio 大约有 600MB。

    【讨论】:

    • 您能分享您的脚本或最终的 .sln 文件吗?
    • 是的,分享最终结果会很棒,所以所有其他人都不必做同样“无聊”的重命名过程等等。
    【解决方案4】:

    我刚刚发现这个扩展几乎可以解决我的问题。唯一的问题是它在浏览器中而不是在 Visual Studio 中打开源代码,但这没什么大不了的,因为即使在浏览器中您也可以单击源代码来导航到类型等。

    几天前是presented on Scott Hanselman's blog

    社区成员和出色的编码员Schabse Laks 为 VS2010、2012 和 2013 创建了 Visual Studio 扩展!此扩展程序将调用 Go To Definition(或在符号上按 F12)直接发送到在线代码(当它是 .NET Framework 代码,而不是您的代码时)。

    你可以download this companion "Ref12" Visual Studio Extension now!只需转到我们有源代码的任何 .NET 类型上的定义,它就会启动您的默认浏览器,这样您就可以自己探索 .NET Framework 源代码!谢谢沙布斯!

    【讨论】:

    • 从外观上看也不能与 webapi 一起使用
    • 我可以在我的 git Hub 源代码中查看我的 .net 框架版本吗??
    【解决方案5】:

    我正在使用 Visual Studio 2013 Ultimate。

    1. 选择菜单:TOOLS \ Extensions and Updates...

    2. 选择 Visual Studio 库\搜索结果。搜索词:Ref12

    3.下载然后安装。

    4.重新启动 Visual Studio。

    5. 尝试:在类或方法上单击鼠标,按 F12 并在http://referencesource.microsoft.com/查看结果

    【讨论】:

    • 谢谢,但这是我一年前发布的答案的副本。
    【解决方案6】:

    使用 ReSharper,可以通过启用 ReSharper -> 选项 -> 工具 -> 外部源 -> 导航到源来浏览 .NET 源。 启用此选项后,通过右键单击类型/方法/任何内容,将出现新的菜单项“导航至 -> 反编译源”。 导航也适用于我的 F12。

    【讨论】:

    • 它只显示接口信息而不显示实际的源代码(方法的内容)本身。还是我做错了什么?
    • 对不起。我的错。现在可以了。我想我必须重建 ;-) 甜蜜!现在我可以 F12 进入 .NET 源代码了!
    • 嗨@Xan-KunClark-Davis,您是如何开始浏览代码的?你ctrl点击一个类型吗?我重建了项目,它仍然显示反编译的类。
    • @OgrishMan 对不起,我的错。我实际上在下载的符号文件的帮助下看到了 ReSharper 反编译的代码。它显示的不仅仅是一个界面,但绝对不是真正的源代码(例如:其中没有 cmets)。再一次,很抱歉造成混乱并让您抱有希望。我认为这应该在答案中澄清。
    【解决方案7】:

    Visual Studio 2017版本15.6中有一个非常新的功能

    无需任何插件即可看到反编译的源代码!顺便说一句,Ref12 不适用于 VS2017。

    工具 > 选项,展开文本编辑器 > C# > 高级,并启用“启用导航到反编译源(实验性)”。

    参考:https://docs.microsoft.com/en-us/visualstudio/ide/go-to-and-peek-definition?view=vs-2017#view-decompiled-source-definitions-instead-of-metadata-c

    【讨论】:

    • 是的,这是一个很好的功能,但它显示的是反编译的代码,而不是显示原始源代码(可在线获得)。
    猜你喜欢
    • 2013-02-17
    • 2011-08-27
    • 1970-01-01
    • 2021-06-24
    • 2015-07-22
    • 2022-08-11
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    相关资源
    最近更新 更多