C# 生成IL代码/DLL并持续保存

C# 生成IL代码/DLL并持续保存,c#,.net-core,code-generation,intermediate-language,C#,.net Core,Code Generation,Intermediate Language,目前我正在开发一种编程语言和一个编译器。我使用antlr作为解析器生成器,并在C#targeting.NETCore3.1中实现所有功能 目前,我正在将我的语言编译成x86 GNU汇编程序,但我一直在考虑将它编译成IL代码,因为像OO这样的许多功能都深入集成到IL中 我已经发现,可以在运行时使用System.Reflection.Emit命名空间生成IL代码,但在.Net Core中,目前无法为DLL设置入口点或永久保存它。我已经深入研究了.Net核心编译器的代码生成,并阅读了有关Roslyn的

目前我正在开发一种编程语言和一个编译器。我使用antlr作为解析器生成器,并在C#targeting.NETCore3.1中实现所有功能

目前,我正在将我的语言编译成x86 GNU汇编程序,但我一直在考虑将它编译成IL代码,因为像OO这样的许多功能都深入集成到IL中

我已经发现,可以在运行时使用System.Reflection.Emit命名空间生成IL代码,但在.Net Core中,目前无法为DLL设置入口点或永久保存它。我已经深入研究了.Net核心编译器的代码生成,并阅读了有关Roslyn的文章,但它只支持为C代码生成IL代码,我也不想再深入研究一层

我的问题是:


有人知道如何生成IL代码并在针对.Net Core时持续保存它吗?

mono.cecil?Roslyn不是.Net编译器,而是生成.Net IL的c#编译器。它将只编译C#。由于您正在设计/实现一种针对IL的自定义语言,因此Roslyn编译器将不再有用。查看LLVM.Net。有关于实现自定义语言的教程。@Amy Roslyn不也支持VB.Net吗?@NetMage啊,你说得对。直到。它还编译VB.Net.mono.cecil?Roslyn不是.Net编译器,而是生成.Net IL的c#编译器。它将只编译C#。由于您正在设计/实现一种针对IL的自定义语言,因此Roslyn编译器将不再有用。查看LLVM.Net。有关于实现自定义语言的教程。@Amy Roslyn不也支持VB.Net吗?@NetMage啊,你说得对。直到。它还编译VB.Net。