我想为 Visual Studio 2010 编写一个编辑器扩展。在我的扩展中,我想获取有关类的信息,该方法位于当前插入符号位置。
例如,如果我在事件处理程序中,并且我有一些代码使用 MessageBox.show(...) 显示消息框,并且插入符号位于 .显示我想查询VS服务以获得一个响应,告诉我插入符号位于System.Windows.Froms.dll版本4.0.40319等中的MessageBox类的显示方法。
可能吗?
Visual Studio 2010 中的当前 API 无法执行此操作。这就是我们构建 Roslyn API 的原因,以便您可以这样做。安装 CTP 时,我们会设置一个 Roslyn 实例,该实例将标准语言服务替换为 Roslyn 语言服务,你可以直接向其提问。
如果您不想依赖于在 Roslyn 实例中运行(我假设是这种情况),那么它会变得更加棘手。您可以调用解析器来理解您正在调用名为 MessageBox.Show 的调用,但要获得语义,您需要构建一个编译,以确保您获得正确的所有项目引用和源文件。这是一个更棘手的命题,因此根据您的情况,您可能希望尽可能多地"作弊"。
披露:我在罗斯林团队。