問題タブ [runtime-compilation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1440 参照

wpf - txtファイルからC#コードをコンパイルして、実行中のwpfアプリケーションとインターフェースします

私は実行時にコードをコンパイルし、実行中のアプリケーションのオブジェクト (プロパティなど) を操作するためのきちんとした方法をオンラインで探していました。Snippy、CodeDom、および CSharpCodeProvider に出くわしましたが、アプリケーションでこれらのソリューションを使用して目的を達成する方法を完全には理解していませんでした。要するに、実行時に別のコードを交換できるように、コードのごく一部を外部ファイルに保持したいのです (たとえば、データを操作するための数式など)。きちんとした方法で WPF アプリケーションですか? 外部コードにデータを渡すだけで、実行後にオブジェクトに入力できるデータが返されます。PS: また、文字列から数式を解析し、その方法でデータを操作することも考えましたが、実行時に C# コードを外部で解析して実行できれば、式とデータをより自由に制御できるようになります。前もって感謝します。

0 投票する
1 に答える
2394 参照

c# - c#、winforms のランタイム コンパイルでパラメータを渡すにはどうすればよいですか?

ランタイム コンパイルと CodeDom に行き詰まっています。これは、私がこれまでに持っているものの簡単な例です。

これは問題なく動作し、Test フォームをロードします。

しかし!このテスト フォーム (パネル コントロールのリスト) にパラメーターを渡して、フォームに入力する必要があります。

これどうやってするの?たぶん、私は間違った方向を見ているので、別の方法で行う必要がありますか? よろしくお願いします!

EDIT 最後に、CodeDom をあきらめ、代わりに Mono.Cecil を使用、メイン プログラムからの情報を .exe ファイルに挿入しました。

0 投票する
2 に答える
6427 参照

scala - スクリプト言語としてのscala

重複の可能性:
Scala の「eval」

scala がコンパイル済み言語であることは知っていますが、動的にクラスを jvm にロードできること、実行時に scala コンパイラを呼び出すことができることも知っています。スクリプト言語が可能なはずです。

そのため、実行するために必要なタスクがいくつかあります。

簡単な解釈:

外部関数を呼び出します:

機能を実装します。

私のすべての問題の解決策を得ることができれば素晴らしいことです。

0 投票する
4 に答える
896 参照

c# - コードを動的にコンパイルして現在のクラスに追加する

クラスのコンストラクター内でその場でいくつかのプロパティを作成し、それらを現在のクラスに追加したいと考えています。プロパティのテンプレートは次のとおりです

CodeDom と Reflection.Emit について少し読んだことがありますが、この特定のユース ケースでそれらを使用する方法を理解できませんでした。

手がかりは大歓迎です。前もって感謝します

編集:質問の数が多いため、目的を詳しく説明しています...ビューモデルロケーターの基本クラスを実装しようとしています。xaml でのバインドは、パスによってプロパティを参照することで実現されるため、プロパティである必要があります。追加するプロパティの型と名前は実行時にしか分からないため、リフレクションを使用してそれらを取得しています。要するに、コードの一部を取得し、それを指定されたクラスに動的にコンパイルする例が必要です。

0 投票する
2 に答える
129 参照

java - Java-実行時にコンパイルされていない.javaファイルの文字列にアクセスする

問題があります。

たくさんのJavaファイル(.java)があり、それらにはすべてクラス宣言と文字列の配列が含まれています。配列を使って何かをする必要があります。それにアクセスするための最良の方法は何ですか?

JavaCompilerクラスを使用してみましたが、うまくいかなかったようです。正規表現などを使用する必要がありますか?

ファイルがどのように見えるかのサンプルを次に示します。

そして、おそらくこれらのファイルは100個あります。

つまり、要約すると、そのデータにアクセスするための最良の方法は何ですか?

(明らかに、プロジェクトでそれらを単純にコンパイルすることはできません。)

0 投票する
2 に答える
763 参照

java - プログラムの動的更新、ランタイム コンパイル、およびクラス ローダー

停止および再起動せずに、それ自体の一部 (一度に 1 つのクラス) を更新する機能を必要とするアプリケーションがあります。JavaCompiler API を使用すると、変更されたクラス ソース コードの生成、再コンパイル、ロード、およびクラスのインスタンス化を簡単に行うことができます。これはすべてメモリ内で実行できます (ディスクまたはネットから読み取られるファイルはありません)。

アプリケーションは、そのようなクラスの複数のオブジェクトをインスタンス化することはありません。そのオブジェクトへの参照は 2 つまたは 3 つしかありません。変更されたクラスがロードされてインスタンス化されると、それらの参照はすべて新しいオブジェクトに変更されます。また、変更されたクラスのロード中に、影響を受けるクラスのメソッドが別のスレッドで実行されていないこともおそらく保証できます。

私の質問は次のとおりです。私のクラスローダーは、以前にロードしたクラスと同じ名前の変更されたクラスをロードする際に問題がありますか?

ロードされたクラスのキャッシュをクラスローダーに明示的に実装しない場合、問題を回避できますか? または、親クラス ローダーへの委譲が問題を引き起こす可能性はありますか?

クラス ローダーの単一のインスタンスを使用したいと考えていますが、必要に応じて、クラスを更新するたびに新しいインスタンスを作成できます。

注: OSGI を調べたところ、必要以上に多すぎるようです。

0 投票する
1 に答える
3090 参照

asp.net - Provide an Explicit Assembly Name for a Dynamically Compiled ASP.NET Website's App_Code Folder?

In a dynamically compiled ASP.NET Website project, can the assembly for the App_Code folder be explicitly named?

For example, under regular circumstances when I run an ASP.NET website the assembly name generated into the Temporary ASP.NET Files\ folder is partially randomized like App_Code.neizakfo.dll where neizakfo is the portion that can differ. Can I explicitly provide a name for the assembly like App_Code_Web1.dll?

Clarification

By business requirements, the website cannot be precompiled/deployed. Therefore I'm seeking a solution in context of the Temporary ASP.NET Files folder and dynamically compiled assemblies as noted above.


Background:
I came across this question while looking for a way to perform dynamic type instantiation on a class in the App_Code folder of a website using an assembly-qualified name stored in configuration, but instantiated from the web page, thus crossing an assembly boundary. Because the web page and app_code code are compiled into two different assemblies by default, the Type.GetType(..) method's default behaviour of searching for the Type name either in the current executing assembly (the web page) or in mscorlib doesn't suffice for picking any Type from the App_Code assembly. Being randomized, the app_code assembly name is not known for me to include in the assembly-qualified string.

I can put the data Type in a class library (because that does have an predefined/exact name) to get rid of this problem, however I'd like to know how to do this inside the website itself without creating a class library project for the purpose.

0 投票する
1 に答える
162 参照

c# - ランタイムコンパイルでパラメータをメソッドに送信する方法

投稿に従って、ビジュアルスタジオ2010でC#プロジェクトを作成しました:

http://www.blackwasp.co.uk/RuntimeCompilation_1.aspx

txt ファイルを読み込んで、パラメーターを 1 つのメソッドに送信し、結果を取得します。今私の質問は、ランタイムコンパイルでメソッドに引数またはパラメーターを送信する方法ですか?

0 投票する
6 に答える
14422 参照

c++ - C または C++ で実行時に追加のコードをコンパイルする方法はありますか?

これが私がやりたいことです:

  1. プログラムを実行し、いくつかのデータ構造を初期化します。
  2. 次に、既存のデータ構造にアクセス/変更できる追加のコードをコンパイルします。
  3. 必要に応じて手順 2 を繰り返します。

Unix ライクなシステム (特に Linux と Mac OS X) でCC++を使用してgcc(そして最終的には)両方でこれを実行できるようにしたいと考えています。Javaアイデアは、基本的にこれらの言語に対して、入力された式とステートメントをコンパイルし、それらを使用して既存のデータ構造を変更する read-eval-print ループを実装することです (スクリプト言語では常に行われていることです)。/ファイルpythonを生成するこのツールを で書いていますが、これは関係ありません。CC++

共有ライブラリでこれを行うことを検討しましたが、共有ライブラリを変更しても、既に実行されているプログラムには影響しないことがわかりました。共有メモリも使用してみましたが、関数をヒープにロードする方法が見つかりませんでした。アセンブリ コードの使用も検討しましたが、まだ試していません。

gccでそれを行う方法がまったくない場合を除き、コンパイラを使用しないことをお勧めしgccます。

誰かがアイデアを持っているか、これを行う方法を知っている場合は、どんな助けでも大歓迎です。

0 投票する
1 に答える
728 参照

c# - ランタイムコンパイルにより、削除できないファイルが生成されます

私は、C#コードの行を受け入れ、それを周囲のコードでラップし、アセンブリにコンパイルするこのコンソールタイプのものを持っています。次に、そのアセンブリからメソッドを呼び出し、結果を出力します。これで完了です。

問題は、アセンブリに名前を付ける必要があるため、非公開クラスにアクセスできるように、アセンブリをフレンドアセンブリとして設定できることです。私はそれを「コンソール」と名付けました。

すべてが期待どおりに機能しましたが、問題は、「console」という名前のファイルがディレクトリにすでに存在し、上書きできないため、スクリプトの終了後に2番目のスクリプトを実行できないことです。

Disposeメソッドを持つすべてのものをDisposeしてみました。File.Deleteを使用してファイルを手動で削除しようとしました。何も役に立たなかった。

これが私が使用しているコードです。誰かが私を助けてくれることを願っています。