我想使用Roslyn Scripting Engine为其提供脚本引擎 我们的软件。我们的软件将其中一些api作为单身人士展示。但是我无法在执行的代码中访问这些静态。
例如,我想在脚本中执行类似的操作:
IOManager.Instance.DoWork(...);
当我这样做时:
var scriptContent = "IOManager.Instance.DoWork(...);
var options = ScriptOptions.Default;
options.AddReference(this.GetType().Assembly);
var script = CSharpScript.Create(scriptContent, options);
await script.RunAsync();
我收到此错误:
The name 'IOManager' does not exist in the current context
我认为可能添加对当前程序集的引用可能会解决此问题。但它并没有。我也知道,可以将全局对象设置为脚本上下文。但是我想把我执行脚本的所有静态/单例都暴露给脚本本身。
感谢您的帮助。
答案 0 :(得分:1)
您需要在脚本中添加IOManager
的导入:
var script = CSharpScript.Create( "IOManager.Instance.DoWork(...)" , ScriptOptions.Default.AddImports( "Namespace for IOManager" ) );