限制对在运行时CSharpCodeProvider生成的代码仅允许的名称空间的访问

时间:2017-05-14 20:22:09

标签: c# unity3d

我正在使用此guide在我的程序中创建一个脚本平台。

我想沙箱他们被允许做什么和不做什么。

我有一些名称空间,我只想让代码使用它,而且几乎不允许其他所有名称。

在运行时从自定义代码编译的程序集通过我找到的代码链接到主程序:

foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
{
    try
    {
        string location = assembly.Location;
        if (!String.IsNullOrEmpty(location))
        {
            parameters.ReferencedAssemblies.Add(location);
        }
    }
    catch (NotSupportedException)
    {
        // this happens for dynamic assemblies, so just ignore it. 
    }
}

因此mods(运行时动态生成的代码)可以与主程序通信。

由于我的知识和研究有限,似乎我需要创建一个自定义AppDomain并使用PermissionSet,但我不确定如何实现这一点。

0 个答案:

没有答案