Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IronPython-面向最终用户的编辑器_C#_Scripting_Ide_Ironpython_Dynamic Language Runtime - Fatal编程技术网

C# IronPython-面向最终用户的编辑器

C# IronPython-面向最终用户的编辑器,c#,scripting,ide,ironpython,dynamic-language-runtime,C#,Scripting,Ide,Ironpython,Dynamic Language Runtime,我们目前正在研究如何将IronPython(脚本)嵌入到我们的C#应用程序中 我们看到了它将为最终用户提供的好处,使他们能够连接到我们的应用程序中,但不断出现的一个问题是,我们如何为最终用户提供代码编辑能力,使其能够了解应用程序中的不同输入上下文 我知道我们可以提供一个带有语法高亮显示的简单文本编辑器,但我们如何更进一步,允许用户针对我们从应用程序中公开的对象测试他们的脚本。请记住,我们将根据入口点的上下文公开不同的对象 如何允许最终用户在应用程序中测试、编写和编辑脚本 PS-我是新来的,所以如

我们目前正在研究如何将IronPython(脚本)嵌入到我们的C#应用程序中

我们看到了它将为最终用户提供的好处,使他们能够连接到我们的应用程序中,但不断出现的一个问题是,我们如何为最终用户提供代码编辑能力,使其能够了解应用程序中的不同输入上下文

我知道我们可以提供一个带有语法高亮显示的简单文本编辑器,但我们如何更进一步,允许用户针对我们从应用程序中公开的对象测试他们的脚本。请记住,我们将根据入口点的上下文公开不同的对象

如何允许最终用户在应用程序中测试、编写和编辑脚本


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,但功能只是基本的