c# - CSharpCompilation 与 Roslyn 在单独的 AppDomain 与 GlobalsType
问题描述
我正在尝试在单独的 AppDomain 中运行自定义 C# 代码,该 AppDomain 具有受限制的权限,其全局类型应在脚本中解析。例如,
public class Global {
public string Name {get; set;}
}
随着我的脚本是..
return Name;
应该返回 Name 的值。
这很容易用 Roslyn 完成,但结果 Roslyn 需要一个 Unrestricted PermissionSet 来编译和执行脚本,所以我不能只做 CSharpScript.Evaluate(...)
所以我希望将脚本编译成字节数组使用
CSharpCompilation.CreateScriptCompilation("foo",
syntaxTree: CSharpSyntaxTree.ParseText(script, ..),
globalsType: typeof(Global), ...)
我已经成功完成了。我可以使用反射调用一个简单的脚本,例如(返回“abc”;),但是我坚持如何传递我的全局对象的实例,以便在执行时解决它。
这甚至可能吗?