我正在尝试将 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/