¿Cómo alojar un motor IronPython en un dominio de aplicación separado?

He intentado lo obvio:

var appDomain = AppDomain.CreateDomain("New Domain");
var engine = IronPython.Hosting.Python.CreateEngine(appDomain); // boom!

Pero estoy recibiendo el siguiente mensaje de error:El tipo no se resuelve para el miembro 'Microsoft.Scripting.Hosting.ScriptRuntimeSetup, Microsoft.Scripting, Version = 0.9.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'.

Google para este error no ha resultado fructífero ...

EDICIÓN # 1:

Intenté crear un proyecto de reproducción mínima copiando las cosas relevantes a una nueva aplicación de consola:

using System;
using Microsoft.Scripting;

namespace PythonHostSamle
{
    class Program
    {
        static void Main(string[] args)
        {
            AppDomain sandbox = AppDomain.CreateDomain("sandbox");
            var engine = IronPython.Hosting.Python.CreateEngine(sandbox);
            var searchPaths = engine.GetSearchPaths();
            searchPaths.Add(@"C:\Python25\Lib");
            searchPaths.Add(@"C:\RevitPythonShell");
            engine.SetSearchPaths(searchPaths);
            var scope = engine.CreateScope();
            //scope.SetVariable("revit", _application);
            //engine.Runtime.IO.SetOutput(new ScriptOutputStream(_instance),     Encoding.UTF8);
            //engine.Runtime.IO.SetErrorOutput(new ScriptOutputStream(_instance),     Encoding.UTF8);
            var script = engine.CreateScriptSourceFromString("print 'hello, world!'",     SourceCodeKind.Statements);
            script.Execute(scope);

            Console.ReadKey();
        }
    }
}

Esto funciona como se esperaba!

Por lo tanto, me queda concluir que el error que estoy recibiendo está relacionado conuna de las líneas que comenté: El alcance agregado al motor contiene un objeto sobre el que tengo poco control: una referencia a un host de complemento en el que está destinado a ejecutarse este software (Autodesk Revit Architecture 2010).

Tal vez tratar de pasar eso es lo que está creando el error?

¿Hay una manera de pasar un proxy en su lugar? (Habrá que buscar .NET remoting ...)

EDITAR # 2:

He reducido el problema al pasar un objeto a través del alcance que no puede ser asignado al otro dominio de aplicación: todos los objetos agregados al alcance de un intérprete de IronPython que se ejecuta en un dominio de aplicación diferente tendrán que calcularse de alguna manera y, por lo tanto, deben extenderseMarshalByRefObject o serSerializable.

Respuestas a la pregunta(1)

Su respuesta a la pregunta