如何在Visual Studio中以编程方式执行“转到定义”?
给定一个表示特定类/字段/属性的字符串(例如MyNameSpace.MyClass
或System.String.Length
),如何以编程方式使Visual Studio转到该类/字段/属性(即,使Visual Studio执行相同操作)如果我要在代码编辑器中输入引用然后点击F12,那会发生什么?
您可能需要执行以下操作。
- 获取全局
IVsObjectManager2
接口(由SVsObjectManager
对象实现) - 调用
IVsObjectManager2.FindLibrary
获取C#库,并将结果转换为IVsSimpleLibrary2
。 -
使用正确的
VSOBSEARCHCRITERIA2
调用IVsSimpleLibrary2.GetList2
,以便在解决方案的项目中找到符号。-
如果生成的
IVsSimpleObjectList2
具有GetItemCount()
==1
,并且带有VSOBJGOTOSRCTYPE.GS_DEFINITION
返回pfOK==true
,则使用GoToSource
方法跳转到源。 -
否则,只需向用户显示可能的选项,而不是跳转到源。 您将能够使用
IVsFindSymbol
接口(由SVsObjectSearch
对象实现)来实现此目的。
-