【问题标题】:IronPython - Editor for end-userIronPython - 最终用户的编辑器
【发布时间】:2011-12-15 08:06:35
【问题描述】:

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

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

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

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

PS - 我是新来的,所以如果我做得不对,请告诉我!!!

【问题讨论】:

  • Visual Studio 2010 Shell 为胜利而集成。

标签: c# scripting ide ironpython dynamic-language-runtime


【解决方案1】:

也许您想要的是使用Visual Studio 2010 Shell 隔离。它可以用来在应用程序中提供一个视觉工作室环境,就像以前的 VBA 一样。至于 Python 支持,您可以查看 IPyIsolatedShell

【讨论】:

    【解决方案2】:

    您可以在您的 C# 应用程序中托管 IronPython。然后,您可以从 C# 应用程序传入变量并执行使用它们的 IronPython 代码。 Dino Viehland 在 PDC 上做了一个名为 Using Dynamic Languages to Build Scriptable Applications 的演讲。 Dino 为他在 PDC 创建的应用程序提供了source code,但它使用的是旧版本的 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。这个 app 变量随后可供 IronPython 代码使用,它可以在其中调用方法、访问属性等。

    上面代码中最后一个方法是 RunPythonCode 方法,它接收用户编写的 IronPython 代码并执行它。

    比这更进一步,允许用户以与调试 VBA 宏类似的方式调试 IronPython 代码是开发工作的主要部分。

    【讨论】:

    • 谢谢马特。我们将 IronPython 与我们的 C# 应用程序集成,我最初的问题提到了我们将如何允许用户编辑和编写 python 代码。到目前为止,我们已经能够使用 ISharpCode.TextEditor 构建一个基本的 IDE,但功能只是基本的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 2021-10-01
    相关资源
    最近更新 更多