Ich habe die offensichtlich versucht:Wie hostet man eine IronPython-Engine in einer separaten AppDomain?
var appDomain = AppDomain.CreateDomain("New Domain");
var engine = IronPython.Hosting.Python.CreateEngine(appDomain); // boom!
Aber ich folgende Fehlermeldung erhalten: Typ wird nicht aufgelöst für Mitglieder Microsoft.Scripting.Hosting.ScriptRuntimeSetup, Microsoft.Scripting, Version = 0.9.0.0, Kultur = neutral, PublicKeyToken = 31bf3856ad364e35 '.
für diesen Fehler Googeln hat nicht fruchtbar sofar bewiesen ...
EDIT # 1:
ich durch Kopieren der relevanten Sachen auf eine neue Konsole-Anwendung eine minimale Wiedergabe Projekt zu erstellen versucht:
Dies funktioniert wie erwartet!
Ich verließ also zu dem Schluss, dass der Fehler I bin immer im Zusammenhang mit einer der Linien kommentierte ich aus: Der Umfang zum Motor hinzugefügt enthält ein Objekt Ich habe nur wenig Kontrolle über - einen Verweis auf eine Plugin-Host Diese Software soll ausgeführt werden (Autodesk Revit Architecture 2010).
Vielleicht versucht zu übergeben, ist das, was den Fehler verursacht?
Gibt es eine Möglichkeit, stattdessen einen Proxy zu übergeben? (Müssen .NET Remoting nachschlagen ...)
EDIT # 2:
ich das Problem schnitzte haben unten ein Objekt über den Umfang vorbei, die auf der anderen AppDomain ist nicht proxied werden: Alle Objekte, die dem Bereich eines IronPython-Interpreters hinzugefügt werden, der in einer anderen AppDomain ausgeführt wird, müssen irgendwie gemarshallt werden und müssen daher entweder MarshalByRefObject
oder Serializable
sein.
Können Sie weitere Informationen zum Kompilieren/Ausführen dieser Informationen bereitstellen? Dies funktioniert für mich gegen 2.0.2 und 2.6 Beta 2, wenn ich "test.cs" in das Verzeichnis Programme und führen Sie es ein. Laufen Sie auch gegen .NET 2.0/3.0/3.5 oder .NET 4? –
Ich würde vorschlagen, dass es die Streams sind, die Sie in dieser App-Domäne erstellen, aber den Computer in einer anderen App-Domäne ausführen lassen ... – cRichter