6

アプリケーション内で javascript/Python/Ruby を実行したいと考えています。

ユーザーの定義に基づいてプロセスを自動的に作成するアプリケーションがあります。プロセスは C# で生成されます。上級ユーザーが事前定義された場所にスクリプトを挿入できるようにしたいと考えています。これらのスクリプトは、C# プロセスから実行する必要があります。たとえば、作成されたプロセスにはいくつかのアクティビティがあり、途中でスクリプトを実行する必要があり、プロセスは以前と同じように続行されます。これらのスクリプトを C# から実行するメカニズムはありますか?

4

9 に答える 9

5

基本的に、生成されたコードで注入ポイントを定義する方法と、そこから python / ruby​​ / whatev スクリプトを実行する方法という 2 つの問題があります。

プロセスの生成方法に応じて、考えられる解決策の 1 つは、考えられる各注入ポイントに関数を追加することです。この関数は、ユーザーがスクリプトを特定のポイントに関連付けているかどうかを確認し、関連付けられている場合は、IronPython / IronRubyを呼び出してスクリプトを実行します(オプションで指定されたパラメーターを使用)。

短所は次のとおりです。スクリプトから作成されたプロセスへのアクセスが制限されます (基本的に、パラメーターとして渡された変数のみにアクセスできます)。実装の制限 (IronPython の現在のバージョンでは、いくつかの基本的なシステム関数が省略されています)。

于 2008-09-23T08:04:51.550 に答える
2

IronPython と IronRuby を調べてください。これらを使用すると、C# と簡単に相互運用できます。

于 2008-09-23T07:53:06.447 に答える
1

素晴らしいC#スクリプト言語-Script.Net

于 2008-09-23T08:24:37.493 に答える
1

CSharpCodeProviderクラスを使用して、C# アプリケーション内から C# コードをコンパイルできます。

コンパイルが成功した場合は、 CompilerResultsクラスのCompiledAssemblyプロパティを介して返されたアセンブリを実行できます。

于 2008-09-23T07:52:08.943 に答える
1

.NET には、任意の .NET アプリケーションに埋め込むことができる PowerShell のランタイム エンジンを含むスクリプト言語があります。

于 2008-09-24T13:32:23.690 に答える
0

C# コードを "その場で" インメモリ アセンブリにコンパイルできます。これはIronPythonやIronRubyでも可能だと思います。CodeDomProvider.CreateProviderメソッドを見てください。

スクリプトを頻繁に実行する必要がある場合、またはプロセスが長時間実行される場合は、これらのアセンブリを別の AppDomain に読み込むことができます。スクリプトが完了したら、AppDomain をアンロードします。そうしないと、それらをメモリから削除できません。すべての呼び出しをマーシャリングする必要があるため、これはプロジェクト内の他のクラスにいくつかの結果をもたらします。

于 2008-09-23T08:00:51.140 に答える
0

Visual Studio for Applications について考えたことはありますか? .NET 1.1 以降はあまり聞いていませんが、一見の価値があるかもしれません。

http://msdn.microsoft.com/en-us/library/ms974548.aspx

于 2008-09-23T08:01:14.227 に答える
0

私はまさにこれを最近行いました - C#スクリプトのランタイム追加を許可しました。

まったく難しいことではありません。この記事は次のとおりです。

http://www.divil.co.uk/net/articles/plugins/scripting.asp

詳細の非常に有用な要約です。

于 2008-09-23T08:03:57.230 に答える