C# IronPython-面向最终用户的编辑器
我们目前正在研究如何将IronPython(脚本)嵌入到我们的C#应用程序中 我们看到了它将为最终用户提供的好处,使他们能够连接到我们的应用程序中,但不断出现的一个问题是,我们如何为最终用户提供代码编辑能力,使其能够了解应用程序中的不同输入上下文 我知道我们可以提供一个带有语法高亮显示的简单文本编辑器,但我们如何更进一步,允许用户针对我们从应用程序中公开的对象测试他们的脚本。请记住,我们将根据入口点的上下文公开不同的对象 如何允许最终用户在应用程序中测试、编写和编辑脚本C# IronPython-面向最终用户的编辑器,c#,scripting,ide,ironpython,dynamic-language-runtime,C#,Scripting,Ide,Ironpython,Dynamic Language Runtime,我们目前正在研究如何将IronPython(脚本)嵌入到我们的C#应用程序中 我们看到了它将为最终用户提供的好处,使他们能够连接到我们的应用程序中,但不断出现的一个问题是,我们如何为最终用户提供代码编辑能力,使其能够了解应用程序中的不同输入上下文 我知道我们可以提供一个带有语法高亮显示的简单文本编辑器,但我们如何更进一步,允许用户针对我们从应用程序中公开的对象测试他们的脚本。请记住,我们将根据入口点的上下文公开不同的对象 如何允许最终用户在应用程序中测试、编写和编辑脚本 PS-我是新来的,所以如
PS-我是新来的,所以如果我做得不对,请告诉我 也许你想要的是使用隔离的。它可以用来在应用程序中提供一个VisualStudio环境,就像VBA过去那样。就Python支持而言,您可以查看您可以在C#应用程序中托管IronPython。然后,您可以从C#应用程序中传入变量,并执行使用它们的IronPython代码。Dino Viehland在PDC做了一次关于这个叫做。Dino为他在PDC上创建的应用程序提供了最新版本,但它使用的是旧版本的IronPython 下面是IronPython 2.7.1的一些代码,它向您展示了如何在几行代码中托管IronPython
using System;
using IronPython.Hosting;
using Microsoft.Scripting.Hosting;
public class MyIronPythonHost
{
ScriptEngine scriptEngine;
ScriptScope scriptScope;
public void Initialize(MyApplication myApplication)
{
scriptEngine = Python.CreateEngine();
scriptScope = scriptEngine.CreateScope();
scriptScope.SetVariable("app", myApplication);
}
public void RunPythonCode(string code)
{
ScriptSource scriptSource = scriptEngine.CreateScriptSourceFromString(code);
scriptSource.Execute(scriptScope);
}
}
上面的代码通过脚本作用域将名为MyApplication的应用程序对象传递给IronPython,并将其变量名设置为app。然后,IronPython代码就可以使用这个app变量,在那里它可以对其调用方法、访问属性等
上面代码中的最后一个方法是RunPythonCode方法,它接收用户编写的IronPython代码并执行它
更进一步,允许用户以类似于调试VBA宏的方式调试其IronPython代码,这是一项主要的开发工作。Visual Studio 2010 Shell已集成,以获得成功。谢谢Matt。我们将把IronPython与我们的C#应用程序集成在一起,我最初的问题是如何允许用户编辑和编写python代码。到目前为止,我们已经能够使用ISharpCode.TextEditor构建一个基本的IDE,但功能只是基本的