获取 MetadataReference 的导出语义模型

Get exported semantic model for MetadataReference

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

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

为每个 MetadataReference 调用 Compilation.GetAssemblyOrModuleSymbol(),转换为 IAssemblySymbol,然后查看 TypeNames 属性(其中 returns 个字符串)。

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