在C#游戏中嵌入IronPython以解决脚本问题

时间:2011-12-07 20:28:02

标签: c#-4.0 ironpython

我目前正在尝试将此项目xna console嵌入到我的游戏中,但我遇到了IronPython Interpreter的问题。

我遇到的问题是使用以下代码

this.PythonOutput = new MemoryStream();
ScriptingEngine.pyEngine.SetStandardOutput(PythonOutput); // this line is giving me an error 'Microsoft.Scripting.Hosting.ScriptEngine' does not contain a definition for 'SetStandardOutput' and no extension method 'SetStandardOutput' accepting a first argument of type 'Microsoft.Scripting.Hosting.ScriptEngine' could be found
this.ASCIIEncoder = new ASCIIEncoding();

我遇到的第二个问题是这个代码

ClrModule clr = ScriptingEngine.pyEngine.Import("clr") as ClrModule;
clr.AddReference("Microsoft.Xna.Framework");
clr.AddReference("Microsoft.Xna.Framework.Game");

我遇到ClrModule问题无法声明静态类型的变量'IronPython.Runtime.ClrModule导入也给我错误Microsoft.Scripting.Hosting.ScriptEngine不包含'Import'的定义

使用IronPython版本2.7.1和.net4

1 个答案:

答案 0 :(得分:1)

SetStandardOutput已移至ScriptRuntime上的IO属性我相信而不是ScriptEngine。

ClrModule是一个静态类,因此如果需要在其上调用AddReference,可以使用ClrModule.AddReference(codeContext,...)调用它。您可以搜索如何获取代码上下文,但更好的方法可能是:

dynamic clr = pyEngine.Import(“clr”); clr.AddReference(...);