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

use*_*781 6 c# unity-game-engine

我正在使用本指南在我的程序中创建脚本平台.

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

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

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

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. 
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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