我试过了明显的事:
var appDomain = AppDomain.CreateDomain("New Domain");
var engine = IronPython.Hosting.Python.CreateEngine(appDomain); // boom!
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误消息:成员'Microsoft.Scripting.Hosting.ScriptRuntimeSetup,Microsoft.Scripting,Version = 0.9.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'的类型未解析.
谷歌搜索这个错误并没有证明是富有成效的...
编辑#1:
我试图通过将相关内容复制到新的控制台应用程序来创建一个最小的复制项目:
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这按预期工作!
因此,我得出的结论是,我得到的错误与我注释掉的一行 …
我听说即使你已经完成它,C#也不会马上释放内存.我可以强制C#释放内存吗?
我正在使用Visual Studio 2008 Express.那有关系吗?
PS我没有遇到C#的问题以及它如何管理内存.我只是好奇.
我想让面板有一个厚边框.我能以某种方式设置吗?
PS,我正在使用C#.VS 2008.