获取MetadataReference的导出语义模型

时间:2015-10-02 19:11:23

标签: .net roslyn

是否可以为已作为MetadataReference添加到编译中的程序集导出的类型获取ITypeSymbol的集合?

我想检查引用项目可用的类型。

1 个答案:

答案 0 :(得分:4)

为每个MetadataReference调用Compilation.GetAssemblyOrModuleSymbol(),强制转换为IAssemblySymbol,然后查看TypeNames属性(返回字符串)。

要获取每种类型的实际ITypeSymbol,请获取程序集的GlobalNamespace,然后递归爬行GetMembers()(包括类型和嵌套命名空间)。您可以继承SymbolVisitor<IEnumerable<ITypeSymbol>>来帮助递归(特别是对于嵌套类型)。