Visual Studio - 我希望"转到定义"打开对象浏览器,而不是"元数据"。

18

在Visual Studio 2002和2003版本中,“转到定义”会在“对象浏览器”中查找所选类型或成员。而在2005及以后的版本中,它会打开一个“从元数据生成的”源代码窗口。如何配置这些更新的版本以便跳转到“对象浏览器”呢?(换句话说,我遇到了与这个问题相反的情况。)

安装ReSharper可以解决这个问题,所以我知道这一定是可能的,但是如果没有ReSharper,我该怎么做呢?


我一直都使用“转到定义”功能来查看元数据,包括VS2005(当然这只适用于C#)。它似乎是基于你所使用的编程语言而定的: https://dev59.com/kEbRa4cB1Zd3GeqPxSG6 - Pedro
啊,是的,你说得对,2005年也进入了元数据。我想的是2002年和2003年——已经编辑过了。 - EMP
4
作为一个主要使用VB.NET的人,这真的很令人沮丧。我想让GtD导航到ObjectBrowser!这是一个非常吸引人的功能,没有它真的很烦人。 - Shimmy Weitzhandler
4个回答

11

作为解决方法,您可以创建以下宏:

Sub GoToDefinitionUsingObjectBrowser()
    DTE.ExecuteCommand("Edit.SelectCurrentWord")
    DTE.ExecuteCommand("View.ObjectBrowser")
    DTE.ExecuteCommand("View.ObjectBrowserSearch", DTE.ActiveDocument.Selection.Text)
End Sub

然后前往“工具/选项/键盘”并为此宏分配快捷键。

已在Visual Studio 2010中测试。


2
-1: 我几年前就已经做过这个了。但是,这种方法并没有解决从上下文菜单、命令窗口或IDE内的其他位置使用“转到定义”的问题。这就是我添加赏金的原因。为了得到一个确定性的答案。而不是权宜之计。 - AMissico
2
请投票:http://connect.microsoft.com/VisualStudio/feedback/details/667889/allow-addressing-go-to-definition-to-object-browser-rather-than-metadata#tabs - Shimmy Weitzhandler
2
这个宏实际上不起作用,因为对象浏览器中的搜索太笼统了。如果光标在字典的添加方法中,搜索将会找到整个对象列表中的所有“添加”方法。 - Dan

3
我相信ReSharper正在使用Visual Studio SDK对点击事件进行一些挂钩,我不认为有任何简单的菜单或位置可以更改该设置。

以下是指导说明(摘自CODE Magazine),已经编辑了一些内容,与制作右键菜单相关的部分。

创建 VSPackage ...VS SDK 在 Visual Studio 中安装了更多的项目模板,其中之一是 Visual Studio 集成包(图 1),位于“其他项目类型 > 可扩展性”下的“新建项目”对话框中。
在这个标准对话框之后,Visual Studio 集成包向导会引导您通过以下步骤创建新的包项目:
1. 选择编程语言。向导目前支持 Visual C++ 和 Visual C#。您可以创建或选择一个密钥文件来签名新包。 2. 提供基本的 VSPackage 信息。向导会提示您提供公司名称、VSPackage 名称、版本、图标、详细信息以及包所设计的最低 Visual Studio 版本(如专业版或企业版)等详细信息。此信息将进入 Visual Studio 启动画面和关于对话框,并且还用于请求包的 PLK(稍后介绍)。 3. 选择 VSPackage 选项。包可以添加三种类型的功能:菜单命令、工具窗口和自定义编辑器。
菜单命令是添加到 Visual Studio 顶部菜单或上下文菜单(右键单击)的命令。
当向导完成其工作时,VS SDK 会向解决方案添加核心元素以支持新包。例如,如果您选择了工具窗口作为包的功能的一部分,则项目包含一个用户控件,您可以在其中放置窗口的视觉控件。该项目还包含用于处理您将添加到包中的功能的 .NET 代码的文件。
CtcComponents 文件夹包含伪 C++ 文件(ctc 文件),您可以在其中定义菜单、组、按钮等。幸运的是,Microsoft 正在逐步淘汰 CTC 文件,并用更友好的基于 XML 的 VSCT 文件格式替换它们(将在 Visual Studio 2008 的 SDK 中发布)。
向导创建了一些其他文件,其中包含 Visual Studio 中包的管道所需的 .NET 代码。其中一些文件包含将 C++ 常量映射到 .NET 常量的类,而其他文件包含安装包时的配置信息。

是的,那也是我的假设。我希望得到一个更具体的答案,特别是一个插件或宏。 - AMissico

1
我知道已经过了很长时间,但至少在Visual Studio的新版本中,对于VB(Basic)语言,似乎有一个选项可以设置。 文本编辑器 > Basic > 高级 在“转到定义”下面。
我不知道为什么他们没有为其他语言提供这个选项...

0

将鼠标光标放在您想要在对象浏览器中访问的对象上。然后,使用键盘快捷键ctrl + alt + j,这将直接带您到对象浏览器窗口。


1
我尝试了一下,虽然它确实打开了对象浏览器窗口,但它并没有展开到所选项目的树形结构。解决方案似乎不起作用。 - bkqc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接