如何从命令提示符窗口编译和执行.cs文件?
有没有人设法找到一种解决方法/方法来将一个文件或多个文件或文本动态编译为 .Net Core (2.1) 中的 .dll?
var csProvider = CodeDomProvider.CreateProvider("CSharp");
CompilerResults compilerResults = csProvider.CompileAssemblyFromFile(options, files);
Run Code Online (Sandbox Code Playgroud)
导致 PlatformNotSupportedException 并且似乎 CodeDom 在 .Net Core 中的用途非常有限。查看类似的抱怨并比较.Net Core 2.1与.Net Framework 4.7.2中 System.CodeDom.Compiler 的视图。
我们需要能够在现场编写和动态编译自定义代码。我有一种动态加载任何结果 .dll 的方法,但我只需要首先能够获取该 .dll。
目前我能看到的唯一解决方法是创建一个 .Net Framework api/service 来执行此操作。是这里唯一放弃 .Net Core 并转到 .Net Framework 的其他解决方案吗?
注意:我想在代码库中动态执行此操作。因此,“是否可以使用 .net 核心 Roslyn 编译器编译单个 C# 代码文件?”的解决方案 不相关,因为它指出:“要直接调用 Roslyn 编译器,必须使用命令行驱动程序”,这会使我完全走上错误的道路。但是“如何以编程方式使用 Roslyn 编译 C# 文件?” 如果我知道这就是我想要做的,我会提供解决方案。
@Sami Kahmonem 提供的链接到Joel Martinez 在 .Net Core 1 中的解决方案是我用来解决这个问题的。
在.net框架中,我可以使用csc.exe将一个cs文件编译为dll文件。
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\csc.exe /t:library /out:MyCScode.dll *.cs /debug /r:System.dll /r:System.Web.dll /r:System.Data.dll /r:System.Xml.dll
Run Code Online (Sandbox Code Playgroud)
我怎样才能在 dotnetcore 中做到这一点?