代码如下
[SupportedOSPlatform("windows")]
public void Test1() {
CompilerParameters options = new CompilerParameters();
options.GenerateExecutable = false;
options.GenerateInMemory = true;
options.ReferencedAssemblies.Add("System.dll");
CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
string[] sources = new string[] { this.ReadSourceCode() };
CompilerResults results = provider.CompileAssemblyFromSource(options, sources);
if (results.Errors.HasErrors == true) {
StringBuilder builder = new StringBuilder();
foreach (CompilerError error in results.Errors) {
builder.AppendLine(error.ToString());
}
}
}
运行到 provider.CompileAcemblyFromSource 就抛出了不支持平台异常
不但支持,还大力支持,早就实现了自举,用roslyn即可。
https://github.com/dotnet/roslyn/blob/main/docs/wiki/Scripting-API-Samples.md
注意相关的所谓Script不是真正的Script,仍然是编译模式,意味着上述链接中实际是编译模式,要自己玩过程参数,把该模块源码看看就行了。。
可以使用CSharpCompilation