5

私は C# で小さなコンパイラを作成しており、.Net プラットフォーム用の IL 命令を生成する予定ですSystem.Reflection.EmitSystem.Reflection.Emit私の質問は、製品コンパイラ用の IL の生成 に使用することをお勧めします。

プロダクション コンパイラ用の IL の生成に使用することが推奨されない場合System.Reflection.Emit、その目的のための代替ライブラリ/ツールはありますか?

4

4 に答える 4

7

System.Reflection.Emitmono-cecilを見たいと思うかもしれませんが、プロダクションコンパイラには問題ありません。

于 2011-06-01T05:38:37.247 に答える
2

Reflection.Emitこれは、プロジェクトにとって深刻な制限ではないかもしれないいくつかの問題を説明するブログ記事ですが、あなたが判断することができます:

これらの問題が気にならない場合は、このSOの質問を使用Reflection.Emitして、アセンブリを使用してディスクに書き込む生成のヒントを確認できます。

于 2011-06-01T05:46:32.707 に答える
2

code genを実行してSystem.Reflection.Emitみましょう。これは、.NET Frameworkのコード生成APIの中で最も古いものであり、ILを理解している必要があります。.NET 3.5で導入され、.NET 4.0で拡張された式ツリー(新しい型を作成することはできません)が、完全なメソッド本体をアセンブルするために使用できます。

于 2011-06-01T05:52:58.663 に答える
1

Reflection.Emit通常は問題 IKVM.Reflection.Emitありませんが、生成しているアセンブリが同じプラットフォーム用でない場合(つまり、「完全な」.NETで記述されたコンパイラからSilverlight dllをビルドする場合)、(Monoから入手可能)より多くのオプションがあります。

于 2011-06-01T06:06:33.050 に答える