Given a string that represents a specific class/field/property (eg MyNameSpace.MyClass
or System.String.Length
), how can I programmatically cause Visual Studio to go to that class/field/property (ie, make Visual Studio do the same thing that would happen if I was to type in the reference in the code editor and then hit F12)?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
You probably need to do the following.
- Get the global
IVsObjectManager2
interface (implemented by theSVsObjectManager
object) - Call
IVsObjectManager2.FindLibrary
to get the C# library, and cast the result toIVsSimpleLibrary2
. Call
IVsSimpleLibrary2.GetList2
with the correctVSOBSEARCHCRITERIA2
in order to locate the symbol within the projects for your solution.If the resulting
IVsSimpleObjectList2
hasGetItemCount()
==1
, andCanGoToSource
withVSOBJGOTOSRCTYPE.GS_DEFINITION
returnspfOK==true
, use theGoToSource
method to jump to the source.Otherwise, rather than jumping to the source, simply display the possible options to the user. You will be able to use the
IVsFindSymbol
interface (implemented by theSVsObjectSearch
object) to for this.