首页 新闻 搜索 专区 学院

.net 5.0 怎么不支持动态编译了?

0
悬赏园豆:10 [已解决问题] 解决于 2022-01-11 15:14

代码如下

[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 就抛出了不支持平台异常

血狼一族的主页 血狼一族 | 初学一级 | 园豆:73
提问于:2021-11-19 17:46
< >
分享
最佳答案
0

不但支持,还大力支持,早就实现了自举,用roslyn即可。

https://github.com/dotnet/roslyn/blob/main/docs/wiki/Scripting-API-Samples.md

注意相关的所谓Script不是真正的Script,仍然是编译模式,意味着上述链接中实际是编译模式,要自己玩过程参数,把该模块源码看看就行了。。

收获园豆:6
花飘水流兮 | 专家六级 |园豆:13272 | 2021-11-21 22:38
其他回答(2)
0

provider.CompileAcemblyFromSource 是 .net framework 中的

收获园豆:3
dudu | 园豆:36450 (高人七级) | 2021-11-19 21:06

 那要咋办捏?

支持(0) 反对(0) 血狼一族 | 园豆:73 (初学一级) | 2021-11-20 08:53

@血狼一族: 可以使用 Source Generators

支持(0) 反对(0) dudu | 园豆:36450 (高人七级) | 2021-11-20 09:57
0

可以使用CSharpCompilation

收获园豆:1
秋壶冰月 | 园豆:5692 (大侠五级) | 2021-11-19 21:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册