有没有人成功地找到了一种解决方法/方式,可以在 .Net Core (2.1) 中将文件、文件或文本动态编译成 .dll?
var csProvider = CodeDomProvider.CreateProvider("CSharp");
CompilerResults compilerResults = csProvider.CompileAssemblyFromFile(options, files);
在 .Net Core 中,使用 CodeDom 会导致 PlatformNotSupportedException 异常,因此其实用性非常有限。请参考类似的投诉并比较 .Net Core 2.1 和 .Net Framework 4.7.2 中 System.CodeDom.Compiler 的视图。
我们需要能够在现场编写和动态编译自定义代码。我有一种方法可以动态加载任何生成的 .dll,但我只需要能够首先获取该 .dll。
目前我唯一能想到的解决方法是创建一个 .Net Framework api/service 来完成此操作。这里的唯一其他解决方案是放弃 .Net Core 转向 .Net Framework 吗?
注意:我希望在代码库内动态处理这个问题。因此,"是否可以使用.NET Core Roslyn编译器编译单个C#代码文件?" 的解决方案无关紧要,因为它声明:“必须使用命令行驱动程序来直接调用Roslyn编译器”,这会把我引入完全错误的方向。但是,如果我知道自己要做什么,“如何使用Roslyn以编程方式编译C#文件?”将提供解决方案。@Sami Kahmonem提供的链接.Net Core 1中Joel Martinez的解决方案是我用来解决这个问题的。