有没有人设法找到一个解决办法/方法来动态编译文件,或文件,或文本,为在.net核心一个.dll(2.1)?
var csProvider = CodeDomProvider.CreateProvider("CSharp");
CompilerResults compilerResults = csProvider.CompileAssemblyFromFile(options, files);
导致PlatformNotSupportedException,似乎CodeDom中只有在对.NET核心的使用非常有限。看到类似的complaint和.Net Core 2.1比较视图System.CodeDom.Compiler的VS .Net Framework 4.7.2。
我们需要能够编写和动态现场编译自定义代码。我有一个动态加载任何结果.dll文件的方式,但我只需要能够获取.dll文件摆在首位。
我可以看到目前唯一的解决方法是创建一个.NET框架API /服务做到这一点。是唯一的其他解决方案在这里放弃对.NET核心,去.Net框架?
注:我想在代码库中动态地做到这一点。 “直接调用罗斯林编译器就必须使用命令行驱动程序”这将让我在完全错误的道路:那么作为它指出了"Is it possible to compile a single C# code file with .net core Roslyn compiler?"的解决方案是不相关的。然而"How to compile a C# file with Roslyn programmatically?"将提供解决方案,如果我早知道这是我所期待的事情。
通过@Sami Kahmonem提供Joel Martinez' solution in .Net Core 1链接是我用来解决这个问题。
有你两个选择。
有关详细的解释,你应该看看这个问题:Compiling and Running code at runtime in .Net Core 1.0(你不需要创建NuGet.config或像这样的东西)