gpt4 book ai didi

c# - Roslyn/CSharpScript - 如何保存/加载编译以避免编译等待时间

转载 作者:太空狗 更新时间:2023-10-29 23:49:47 29 4
gpt4 key购买 nike

我正在尝试将 C# 脚本集成到我的数据库应用程序中。我正在使用 globals 对象使脚本可以访问全局变量。

如果脚本是第一次编译,我对等待时间不满意。
如何保存和加载编译以避免等待时间?

Script<object> script = CSharpScript.Create(scriptCode, globalsType: typeof(MyGlobals));
script.Compile(); //<-- load the Compilation from database/file here
script.RunAsync(myGlobalsInstance).Wait();

最佳答案

可以创建一个CSharpScript,然后通过GetCompilation获取编译,获取编译。

var script = CSharpScript.Create("script..");
var compilation = script.GetCompilation();

从编译中,您实际上可以compilation.Emit()将dll和pdb复制到磁盘或内存中。棘手的(和 roslyn 内部位)是如何让代码的委托(delegate)在您拥有程序集后执行。可以看看roslyn是怎么做的here .

关于c# - Roslyn/CSharpScript - 如何保存/加载编译以避免编译等待时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39466788/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com