.NET C#プログラミングは初めてです。私はいくつかの本をフォローしています。バイナリコード(ネイティブコード)に直接コンパイルするのではなく、と言われています。高レベルのコードは中間言語(MSIL別名CIL)に変換されます。しかし、コンパイルすると、exe/Dllファイルが取得されます。
Assembly
と呼んでいます。バイナリコード(ネイティブコード)を含むexe/dllファイルと区別するために、この「空想の言葉」を使用していますか?.text
セクションの PEファイル (ポータブル実行可能ファイル= * .exeまたは* .dll)。詳細については、 こちら をご覧ください。そのことに関しても良い本をお勧めするなら、それはSerge LidinによるExpert .NET 2.0 IL Assemblerです。彼はMSILを設計した男です。
C#のsnippetのILを見る私のお気に入りの方法の1つは、無料の LINQPadツール を使用することです。いくつかのコードを入力し、上部の[C#ステートメント](または[C#プログラム]、適切な方)を選択した後、コード入力領域の下の[IL]ボタンをクリックすると、生成されたILが表示されます。
このためにLINQPadを使用すると、muchVisual Studioをロードするか、コマンドラインからコンパイラを実行してからILDASMをロードして.ilファイルを開くよりも便利ですテキストエディタで。
オンラインで使用する場合は、 。NET Fiddle が最適です。コードを貼り付けて[View IL
オプションを右上に。
別のオプション:UseReSharper
ソース/ IL同期ビュー:左の青い背景線は右のILブロックに対応しています
Visual Studioの場合:
ソースコードとILの同期ビューをサポート-ソース内のステートメントをクリックすると、IL内の対応するブロックが強調表示されます(逆も同様です)。 Microsoft Developer NetworkのILおよびECMA標準仕様の「Common Intermediate Language(CIL)命令セット」の説明を表示します。
resharperヘルプの Viewing Intermediate Language(IL) を参照してください。上の写真はResharper Helpからのものです。
無料オプションは Jetbrains dotPeek を使用することです
「ReSharperとdotPeekを使用した中間言語(IL)の探索」、Maarten Balliauw著、2017年1月19日- Jetbrains Blog
追伸あなたはいくつかの本をフォローしているので、強くお勧めします C#経由のCLR 。
アセンブリは、マニフェストによって組み立てられたアセンブルされたモジュールのセットであるため、「アセンブリ」と呼ばれると思います。
(ソース: Microsoft.com )
詳細については、 アセンブリの内容 を参照してください。
Visual Studio内でILコードを直接表示できる最適なツールを検索するのに数時間費やしました。
私がこれまでに見つけた唯一の解決策は、Msiler https://visualstudiogallery.msdn.Microsoft.com/60fc53d4-e414-461b-a27c-3d5d2a53f637
それは非常にうまくいきます!
それ以外の場合、2番目に最適なソリューションは、Visual Studioの統合なしで、JetBrains dotPeekです。これは正直言って非常に素晴らしいことです。
これは古い質問であり、上記のツールのいずれかを使用したいと思います。ただし、ピンチでは、少なくともバージョン2005以降、Visual StudioのボックスにMSILビューアがあります。
このツールは_ildasm.exe
_という名前で、デフォルトのVisual Studioのインストール後、次のフォルダーにあります。
Visual Studio 2005 "C:\Program Files (x86)\Microsoft Visual Studio 8\SDK\v2.0\Bin\ildasm.exe"
Visual Studio 2008 "_C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\ildasm.exe
_"
Visual Studio 2010 "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\ildasm.exe
"
詳細については、MSDNライブラリの「 方法:アセンブリコンテンツの表示 」を参照してください。
sharplab はオンラインツールであり、単純なユースケースに最適です。左側にコードを入力すると、ILが右側に表示されます。
中間言語を表示したい場合は、ダウンロードしてみてください TelerikからのJustDecompile (現在無料ですが、サインアップが必要です)。
DLL=)をドラッグして、上部のドロップダウンボックスから[IL
]を選択します。
私の経験から、IL関連の知識の最良のソースはAndrew Troelsenの「Pro C#and .NET Platform」です。第3版から、彼はILを理解し、独自のコードを書き、ILAsmを使用する方法について、本当に素晴らしい章(約50ページ)を持っています。その情報を使用して、.NETの世界に多重継承が存在するかどうかを調査しました。また、ILでいくつかの非常に興味深い機能を使用することもできます(例:VBであり、C#にはない例外のフィルタリング)。
その章を読むことを強くお勧めします。
最終的に、.NET ReflectorはアセンブリのILコードを調査するためのエンタープライズ標準であり、Richterの本は間違いなく「読む必要がある」ものです。しかし、上記のような他の本から、あなたは本当に有用なものを明らかにすることができます:)
はい。NETワールドの各アセンブリは、ReflectorまたはILDasmで表示できるILコード(マニフェストと共に)を保持しています。さらに、ReflectorはC#とVB最適化されたコードを表示できます。これは、だれでもアセンブリのソースコードを表示できることを意味し、商用製品で難読化ツールが使用される理由です。
別のオプションがあります。これは VS Code with this extension built with Roslynで行うことができます。これは 現在は.NET Coreに制限されています です。