在Visual Studio中右键单击捕获方法,类,程序集名称

时间:2013-12-08 22:32:39

标签: c# visual-studio-2010 envdte vspackage

我想编写一个Visual Studio扩展,当用户右键单击代码的一部分时捕获以下信息

  1. 检测用户是否点击了某个方法,如果是,请获取方法名称

  2. 检索方法的完整类名,即(名称空间+类名)

  3. 检索包含项目的输出类型,即类库等

  4. 完整的程序集名称,即路径+名称

  5. 我正在使用EnvDTE对象和IVsTextManager GetActiveView()方法的组合,但我无法获得所需的所有信息。我已经看到Test Driven通过右键单击在Visual Studio中运行单元测试时这样做,所以我希望我能达到同样的目的。

    我唯一能够提取的是迄今为止的方法名称,但它需要在IDE中选择方法名称。 EnvDTE对于返回项目名称很有用,但这对我来说并没有什么好处。

    var methodName = (EnvDTE.DTE)this.GetService(typeof(EnvDTE.DTE)).ActiveDocument.Object("").Selection.Text;
    

    在此之后获取类名/命名空间我所拥有的是对所选行的引用,即方法名称。从这里,我在活动窗口中读取所选文件,并从方法名称向后读取,以尝试查找最近出现的class关键字,然后查找名称空间。它非常优雅和笨重。

1 个答案:

答案 0 :(得分:0)

您可以使用CodeElement

在光标处获取方法
DTE.ActiveWindow.Selection.ActivePoint.CodeElement(vsCMElement.vsCMElementFunction);

另请参阅Discovering Code by Using the Code Model有关CodeModel类的信息。