.net - 获取 MetadataReference 的导出语义模型

标签 .net roslyn

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

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

最佳答案

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

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

关于.net - 获取 MetadataReference 的导出语义模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32914240/

相关文章:

c# - FluentValidation:检查两个字段之一是否为空

c# - 如何禁用所有 Roslyn 代码分析器?

c# - Roslyn:获取第三方库中定义的类型的符号

c# - 如何将/features :strict (of csc. exe 的等价物指定给 msbuild.exe 或 .csproj 文件?

.net-4.5 - Roslyn 与 .net 4.5.2

c# - 搜索和替换 C# 表达式

c# - Process.Start for system32 applications - 系统找不到指定的文件

c# - 在接口(interface)中传递方法

.net - 拆分 .Net 代码文件

c# - AspNetCore.SignalR : Cannot start a connection that is not in the Initial state