我想为Visual Studio 2010编写一个Editor扩展。 在我的扩展中,我想获得有关当前插入位置的Class,方法的信息。
例如,如果我在事件处理程序中并且我有一些代码使用MessageBox.show(...)显示MessageBox并且插入符号位于.Show, 我想查询VS服务以获得响应,告诉我我的插入符号位于System.Windows.Froms.dll版本4.0.40319等的MessageBox类的Show方法中。
有可能吗?
答案 0 :(得分:1)
使用Visual Studio 2010中的当前API无法实现此目的。这就是我们正在构建Roslyn API的原因。当您安装CTP时,我们设置了一个Roslyn实例,用Roslyn代替标准语言服务,您可以直接向它提问。
如果不想要依赖于在Roslyn实例中运行(我假设是这种情况),那么它会变得有点棘手。您可以调用解析器来理解您正在进行名为MessageBox.Show的调用,但是为了获得语义,您需要构建一个编译,确保您获得所有项目引用和源文件。这是一个非常棘手的主张,因此根据您的情况,您可能希望尽可能“欺骗”。
披露:我在罗斯林团队。