如何使用Roslyn获取C#项目中使用的各种类型

时间:2016-01-28 09:48:19

标签: c# roslyn built-in-types roslyn-code-analysis

我正在分析将现有的C#库转换为java。首先,我需要知道现有C#库中使用的类型/内置关键字是什么。我的意思是,例如

public class CSharpClass
{
int i;
float j;
Console.Writeline(String.Concat("A","B"));
}

在此课程中,使用的类型/关键字是

  1. 公共
  2. INT
  3. 控制台
  4. 字符串
  5. 我的问题是,

    1. 有没有办法做到这一点。我希望我能和Roslyn一起做。但我们可以为变量获取“LocalDeclarationStatementSyntax”。但是如何解析“Console”和“Concat”。解析班级中所有令牌的“Sytax walker”是唯一的选择吗?
    2. 如何使用Roslyn从项目文件中获取所有类?

1 个答案:

答案 0 :(得分:3)

你也需要语义 - 语法就是你看到的文本,而这正是你得到的,仅此而已。为您的项目获取Compilation,然后您可以拨打GetSemanticModel给树,然后在那里拨打GetTypeInfoGetSymbolInfo(视情况而定,搜索在线获取这两者之间的差异)获取类型信息。

至于获取Compilation,如果您正在编写命令行工具,则可能需要使用MSBuildWorkspace来加载项目。如果您正在分析在Visual Studio中打开的项目,请使用VisualStudioWorkspace