問題タブ [dynamic-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.
c - 実行時に新しいコンパイル済み関数の実装をネイティブ実行可能ファイルに挿入しますか?
私は、C との完全な相互運用性を主な設計目標として、Lisp に似た言語を実装しています。これは、静的型付け、C 標準で定義されたすべてのプリミティブの直接サポート、ポインター演算、および低レベルのメモリ管理を意味します。マクロは仮想マシンで展開され、プログラム全体が C に変換されてコンパイルされます。これにより、プログラム全体をコンパイルできますが、特定の関数を対話的に変更およびコンパイルできるようにしたい場合はどうすればよいでしょうか? 手動でアセンブリをハッキングすることなく、それらを実行中の実行可能ファイルに統合するために使用できるものはありますか?
c# - Visual Studioの動的コンパイルは.aspxでは機能しますが、.ascxでは機能しません
Web サイト プロジェクトを移行した後、Visual Studio の動的コンパイルの奇妙な動作に直面しています。aspx ファイルまたはマスター ページを変更して保存すると、変更内容がデバッグ ブラウザーにすぐに表示されます。ページを更新するだけで済みます。ただし、ascx ファイルを変更して保存すると、ブラウザーを更新しても変更が表示されません。変更は、IIS を再起動するか、プロジェクト全体を再コンパイルした場合にのみ表示されます。
aspx とマスターページで正常に動作するときに、動的コンパイルが ascx で正しく動作しない原因について考えている人はいますか?
javascript - ブラウザにカスタム スクリプト タイプを実装しますか?
カスタム言語のスクリプトが Web ページに表示される場合、これらのスクリプトはどのように実行されますか?
私はそれが次のようなものになると思います:
- Mighty Mouse インタープリターは、mighty-mouse スクリプトのロード時にページを照会します。
- インタープリターは、標準の字句解析/コンパイル戦略を使用してスクリプトを解析し、JavaScript にトランスパイルします。
- 生成された JavaScript は、ページ上の標準のスクリプト タグに動的に挿入され、おそらく元のマイティーマウス タグが削除されることさえあります。
(インタープリターをロードする必要がないように、実行前にトランスコンパイルできたはずです。)
これは正確で完全な理解ですか?
c# - リリース モードでは、CompilationClass.GetAssembliesFile メソッドが別のファイル セットをフェッチします。
私の Windows アプリは、ユーザーが記述したコードの実行時コンパイルを行います。デバッグ モードでは、CompilationClassインスタンスは、アプリが必要とするいくつかのファイルを取得します。しかし、リリース モードでは、同じクラス インスタンスが別の場所からファイルをフェッチするため、エラーが発生します。
// コードのサンプル
何をすべきかわからない..そして問題はリリースモードでのみ発生します。まだパスを指定していません。
デバッグ モードでは、myAssemblies は 221 個のファイルをフェッチし、リリース モードでは 355 個のファイルをフェッチします。
c# - 動的アセンブリのコンパイルとロード
実行時にアセンブリをコンパイルし、新しいドメインに追加してリンクします。私はそれを使用してから、ドメインをアンロードします。しかし、同じ実行中に再度コンパイルしようとすると、現在使用中のため、そのアセンブリにアクセスできません。
これが私のコードの一部です
私のアセンブリ
そして、それを使用するアプリ
そのため、Console.ReadKey(); 中の Main() で アセンブリはまだロックされており、アクセスできません (たとえば、Windows 経由で削除できません)。
これを解決する方法はありますか?
c# - コードを動的にコンパイルするときにアセンブリを動的に含めるにはどうすればよいですか?
C# コードをコンパイルし、実行時に出力を起動するアプリケーションがあります。これまでのところすべて順調に進んでいますが、WinForms アプリケーションをコンパイルしようとしているときに、参照されているアセンブリで問題が発生しています。
WinForms プロジェクトのプロジェクト フォルダー全体がアプリケーション内にあるため、.csproj ファイルを XML ファイルとして読み取って、参照されているすべてのアセンブリを取得します。したがって、次のように、参照されるアセンブリの名前を文字列として持っています。
これらの名前だけを知っている実行時にこれらのアセンブリをロードすることは可能ですか? 私のシステムでのそれらの場所のパスはわかっていますが、アプリケーションは他の人のマシンでも正しく実行されるはずです。
アップデート
コンパイルは次のとおりです。クラスからのコードは、クラス ファイルから文字列形式で取得され、それらはすべて配列に格納されます。その配列は、CSharpCodeProvider コンパイラに渡されます。アプリケーションはコンソール プログラムだけで意図したとおりに動作しますが、(WinForms などで) アセンブリが参照されるとすぐに、もちろんこれらのアセンブリもコンパイルする必要があります。
だから私がやろうとしているのは、プロジェクトからすべてのアセンブリをコンパイルしてからロードして、実行時にアセンブリエラーが発生しないようにすることです。
私の現在のコードは次のように機能します:
これは機能しますが、Visual Studio から参照されているすべてのアセンブリを追加するだけなので、良い方法ではありません (もちろん、すべてのマシンで機能するとは限りません)。
compilation - 関数の最初と 2 番目の呼び出しのパフォーマンス
次のコードを検討してください (Julia)
出力は
2 回目 (および 4 回目) の試行が、1 回目 (および 3 回目) の試行よりもはるかに高速である (およびメモリ使用量が少ない) のはなぜですか?