IronPython - редактор для конечного пользователя - PullRequest
9 голосов
/ 26 октября 2011

В настоящее время мы изучаем, как мы можем встроить IronPython (скриптинг) в наше приложение C #.

Мы видим преимущества, которые он предоставит нашим конечным пользователям, давая им возможность подключиться к нашему приложению, но остается один вопрос: как мы предоставляем конечному пользователю возможности редактирования кода, которые знают оразличные контексты ввода в нашем приложении.

Я знаю, что мы можем предоставить простой текстовый редактор с подсветкой синтаксиса, но как мы можем сделать еще один шаг вперед и позволить пользователю проверять свои сценарии на объектах, которые мы выставляем из нашего приложения.Помните, что мы будем выставлять различные объекты в зависимости от контекста точки входа.

Как вы разрешаете конечным пользователям тестировать, писать и редактировать скрипты в вашем приложении?

PS -Я новичок здесь, так что дайте мне знать, если я не делаю это правильно !!!

Ответы [ 2 ]

2 голосов
/ 26 октября 2011

Может быть, вы хотите использовать Visual Studio 2010 Shell Isolated. Его можно использовать для создания визуальной среды студии в приложении, как в VBA. Что касается поддержки Python, вы можете посмотреть на IPyIsolatedShell

1 голос
/ 30 октября 2011

Вы можете разместить IronPython в своем приложении C #.Затем вы можете передать переменные из вашего приложения на C # и выполнить код IronPython, который их использует.Дино Виланд выступил на PDC с докладом об этом, который называется Использование динамических языков для создания приложений с поддержкой скриптов .Дино сделал исходный код для приложения, созданного им на 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 .Эта переменная app затем становится доступной для кода IronPython, где она может вызывать методы, обращаться к свойствам и т. Д.

Последний метод в приведенном выше коде - это метод RunPythonCode, который принимаетКод IronPython, написанный пользователем и выполняющий его.

Если пойти дальше этого и позволить пользователю отлаживать свой код IronPython аналогично тому, как вы можете отлаживать макросы VBA, является важной частью разработки.

...