使用Visual Studio DTE分析源代码

时间:2010-08-26 15:21:03

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

我的商店里有一个有趣的编码标准,说我们没有使用using语句快捷键入类型名称,它们必须是完全限定的(所以每次引用类型时,都使用 MyRootNamespace.ANamespace .MaybeAnotherNamespace.MyClassName ,而不只是“ MyClassName ”)。

喜欢或讨厌它,这就是我们如何滚动,而我对此无能为力。

当然,您正在使用Visual Studio向上游游泳,因为为您生成代码的所有编辑工具(成员完成,事件完成等)都尽可能使用短类型名称。

我想要做的是为Visual Studio构建某种扩展或宏来纠正部分声明,并用完全限定的typename替换它。

我开始尝试构建一个可以运行光标所在符号的宏(虽然我希望能够扫描整个文件,或者只是在键入时拦截代码)。

我发现我可以使用FileCodeModel2.GetElementFromPoint()获取类的成员,但是此方法仅适用于类成员 - 例如,它不会在方法内部获取变量声明。

我还能通过其他方式获得这些东西吗?我目前正在使用宏,但新的VS扩展模型会更合适吗?我正在使用Visual Studio 2010 Ultimate版,我只需要定位c#代码。

1 个答案:

答案 0 :(得分:1)

对象模型允许您执行IDE中可用的许多操作。但是由于IDE中没有这样的功能,你在这里运气不好,我很害怕。

使用using指令自动执行的唯一操作就是对它们进行排序并删除未使用的指令。

<强>更新

因为retrieve a fully qualified type name from a macro似乎有些可能。但是,对于特殊情况,例如泛型,它似乎存在问题。