我有一个针对 .NET 运行时 (CLR) 的编译器。当前版本的编译器是用标准 C++(非托管)编写的。编译器目前不支持在编译时引用程序集,因此我“导入”.NET 库的方式是使用用 .NET 编写的实用程序存根生成器,它反映任何程序集并以我的自定义语言为它发出签名存根. 我为我使用的所有 .NET 程序集预先生成了存根。在编译时,我的编译器编译存根文件以填充符号表等,以便它可以解析来自 .NET API 的类型和方法。那是我的“使用”版本。然而,这是暂时的,现在我想向编译器添加一个实际的“使用”或“导入”指令。我需要在编译时访问引用程序集中的元数据/类型信息。
我的问题:我需要有关如何从非托管 C++ 访问 CLR 程序集元数据的建议。或者,我需要证明将其转换为托管 C++ 应用程序并使用 .NET 反射支持。纯 C++ 的目的是我也可以在 Linux 上为 Mono 编译,此外,我还为除 CLR 之外的另一个运行时提供部分后端。