在 visual studio 扩展中,如何提取具有焦点的方法的主体?

In a visual studio extension, how can I extract the body of the method that has focus?

我希望能够提取具有焦点的方法的主体。

所以我会单击方法中的任意位置,然后右键单击 -> 菜单操作,这样我就可以将重点方法的主体作为字符串或字符串(行)列表。

如果您的扩展是一个包而不是一个加载项,请首先按照以下说明获取 DTE 实例:

HOWTO: Get an EnvDTE.DTE instance from a Visual Studio package.

然后得到光标下的EnvDTE.CodeElement:

HOWTO: Get the code element at the cursor from a Visual Studio .NET macro or add-in.

获得表示方法的 EnvDTE.CodeElement 后,调用:

EnvDTE.EditPoint e1 = codeElement.GetStartPoint(vsCMPart.vsCMPartBody).CreateEditPoint();

EnvDTE.EditPoint e2 = codeElement.GetEndPoint(vsCMPart.vsCMPartBody).CreateEditPoint();

string text = e1.GetText(e2);

也就是说,在 VS 2015 及更高版本中,您可以使用 .NET Compiler Platform ( "Roslyn") 获取该信息