0

我想为 Visual Studio 2010 编写一个编辑器扩展。在我的扩展中,我想获取有关类的信息,方法是在当前插入符号位置。

例如,如果我在一个事件处理程序中,并且我有一些代码使用 MessageBox.show(...) 显示一个 MessageBox,并且插入符号位于 .Show,我想查询 VS Services 以获得一个响应,告诉我我插入符号位于 System.Windows.Froms.dll 版本 4.0.40319 等中的 MessageBox 类的 Show 方法中。

是否可以?

4

1 回答 1

1

使用 Visual Studio 2010 中的当前 API 无法做到这一点。这就是我们构建Roslyn API 的原因,以便您可以做到。当您安装 CTP 时,我们会设置一个 Roslyn 实例,将标准语言服务替换为 Roslyn 服务,您可以直接向它提问。

如果您不想依赖于在 Roslyn 实例中运行(我假设是这种情况),那么它会变得有点棘手。您可以调用解析器来了解您正在进行名为 MessageBox.Show 的调用,但要获得语义,您需要构建一个 Compilation,确保您正确获取所有项目引用和源文件。这是一个更棘手的命题,因此根据您的情况,您可能希望尽可能地“作弊”。

披露:我在 Roslyn 团队。

于 2012-06-11T16:47:11.700 回答