28

IronPython (2.0.1) が埋め込まれた C# アプリケーションを作成しています。このアイデアは、アプリケーションの一部を、ユーザーが作成する IronPython スクリプトに公開することです。

Visual Studio Debugger を使用して、ユーザーが作成したスクリプトをデバッグできるようにしたいと考えています。スクリプトは、IronPython 実行可能ファイル (ipy.exe) ではなく、ホストされた環境で実行されることに注意してください。

IronPython アセンブリで Reflector マジックを少し試した後、それを可能にする何かを思いつきましたが、これが規定の方法であるかどうかはわかりません。基本的には、「DebugMode」プロパティを true に設定して「ScriptRuntime」オブジェクトを作成し、「ScriptRuntime」から Python ベースの「ScriptEngine」を作成します。これをホスティングに使用します。以下のコード。

        ScriptRuntimeSetup setup = new ScriptRuntimeSetup();
        setup.DebugMode = true;
        setup.LanguageSetups.Add(Python.CreateLanguageSetup(null));

        ScriptRuntime runtime = new ScriptRuntime(setup);
        ScriptEngine engine = runtime.GetEngineByTypeName(typeof(PythonContext).AssemblyQualifiedName);

ホスト環境でスクリプトを実行すると、次を使用します。

            ScriptSource script = engine.CreateScriptSourceFromFile(path);
            CompiledCode code = script.Compile();
            ScriptScope scope = engine.CreateScope();
            script.Execute(scope);

スクリプト ファイルにブレークポイントを配置すると、スクリプトの実行時にヒットします。

それで、これを行うためのより良い/より簡単な方法はありますか?

ありがとう

4

2 に答える 2

1

Harry Pierson 氏 (DevHawk) は、このテーマに関するブログ投稿を行っており、始めるのに役立ちます。

Microsoft.Scripting.Debugging

于 2009-08-01T14:11:43.667 に答える