私は C# で小さなコンパイラを作成しており、.Net プラットフォーム用の IL 命令を生成する予定ですSystem.Reflection.Emit
。System.Reflection.Emit
私の質問は、製品コンパイラ用の IL の生成 に使用することをお勧めします。
プロダクション コンパイラ用の IL の生成に使用することが推奨されない場合System.Reflection.Emit
、その目的のための代替ライブラリ/ツールはありますか?
私は C# で小さなコンパイラを作成しており、.Net プラットフォーム用の IL 命令を生成する予定ですSystem.Reflection.Emit
。System.Reflection.Emit
私の質問は、製品コンパイラ用の IL の生成 に使用することをお勧めします。
プロダクション コンパイラ用の IL の生成に使用することが推奨されない場合System.Reflection.Emit
、その目的のための代替ライブラリ/ツールはありますか?
System.Reflection.Emit
mono-cecilを見たいと思うかもしれませんが、プロダクションコンパイラには問題ありません。
Reflection.Emit
これは、プロジェクトにとって深刻な制限ではないかもしれないいくつかの問題を説明するブログ記事ですが、あなたが判断することができます:
これらの問題が気にならない場合は、このSOの質問を使用Reflection.Emit
して、アセンブリを使用してディスクに書き込む生成のヒントを確認できます。
code genを実行してSystem.Reflection.Emit
みましょう。これは、.NET Frameworkのコード生成APIの中で最も古いものであり、ILを理解している必要があります。.NET 3.5で導入され、.NET 4.0で拡張された式ツリー(新しい型を作成することはできません)が、完全なメソッド本体をアセンブルするために使用できます。
Reflection.Emit
通常は問題 IKVM.Reflection.Emit
ありませんが、生成しているアセンブリが同じプラットフォーム用でない場合(つまり、「完全な」.NETで記述されたコンパイラからSilverlight dllをビルドする場合)、(Monoから入手可能)より多くのオプションがあります。