[解決済み] C#コンパイラが生成したMSIL/CILを表示するにはどうすればよいですか?なぜアセンブリと呼ばれるのですか?
2022-05-13 03:47:47
質問
私は、.NET C#プログラミングの初心者です。いくつかの本に従っています。C#のコードを直接マシンコードにコンパイルするのではなく、中間言語(MSIL aka CILと呼ばれる)に変換されると言われています。しかし、私がコンパイルするとき、私はexe/dllファイルを取得します。
- この MSIL/CIL は、これらの exe/dll ファイルに含まれているのでしょうか。
- その中間言語コードの存在を知るために、そのコードを見たいのです。どのようにすれば見ることができますか。
-
彼らはこのexe/dllファイルを
assembly
. ネイティブ/マシン コードを含む exe/dll ファイルと区別するために、この「派手な言葉」を使っているのでしょうか。
どのように解決するのですか?
-
そうです、より正確には
.text
セクションにあります。 PE ファイル (ポータブル実行ファイル = *.exe または *.dll)。より詳細な情報は はこちら . - 最適なのは ILSpy を使うことです (Reflector はもう無料ではありません)。これはフリーのディスアセンブラで、アセンブリをMSILだけでなくC#やVBにも(ある程度)分解することができます。.NET Framework SDK には、公式の MSIL ディスアセンブラである ILDasm が含まれています。
- 基本的にはそうです。アセンブリは、MSIL コードと対応するメタデータを含むファイルです。これは PE ファイル自体に制限されるものではありませんが、現在のすべての CLR 実装はそれらを使用します。
この件に関しても良い本を紹介させていただくと、Serge Lidin著「Expert .NET 2.0 IL Assembler」です。彼は MSIL を設計した人です。
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】C#で四捨五入する方法
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み] アセンブリファイルのバージョンを取得する方法
-
[解決済み] 現在のメソッドを呼び出したメソッドを見つけるにはどうすればよいですか?
-
[解決済み] .NETアセンブリがx86またはx64用にビルドされたかどうかを判断するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み】名前 'ViewBag' が現在のコンテキストに存在しない - Visual Studio 2015