JIT およびネイティブ逆アセンブリを表示する
JetBrains Rider を使用すると、JIT、ReadyToRun、NativeAOT コンパイラーによって生成された C# メソッドの逆アセンブリを調査できます。
.NET Disassembler プラグインをインストールします
この機能は、インストールして有効にする必要がある .NET 逆アセンブラ(英語)プラグインに依存しています。
Ctrl+Alt+S を押して設定を開き、 を選択します。
Marketplace タブを開き、 .NET 逆アセンブラプラグインを見つけて、 インストール をクリックします (プロンプトが表示されたら、IDE を再起動します)。
C# コードの逆アセンブリを表示する
アセンブリ言語 ウィンドウを開くには、右側のツールバーにある対応するボタンをクリックするか、メニューから を選択してください。
キャレットをメソッド、プロパティ、コンストラクター、または型宣言に置きます。 逆アセンブリが アセンブリ言語 ウィンドウに表示されます。

ASM Viewer を使用すると、ソースコードの変更が逆アセンブルされた出力にどのように影響するかを確認でき、低レベルの実行とパフォーマンスを微調整できます。
分解出力を比較する
エディターでコードの最初のバージョンを開いたら、必要なシンボル (クラス、メソッド、プロパティ) にカーソルを置き、逆アセンブリビューがレンダリングされるまで待ってから、ツールバーの スナップショットの作成
をクリックします。スナップショットが作成され、差分表示が有効になります。 初期状態では、差分の両側は同じです。
コードに必要な変更を加え、新しく逆アセンブルされたコードが元のコードとどのように異なるかを確認してください。 必要に応じて、ASM Viewer ツールバーの 強制再コンパイル をクリックしてください。
比較セッションを終了するには、ASM Viewer ツールバーの スナップショットを削除 をクリックします。 これにより、元のスナップショットが削除され、ソースコードの現在の状態に応じた通常の逆アセンブリビューが復元されます。

ASM Viewer の設定
ASM ビューアーの設定を構成するには、ツールバーの 設定 をクリックします。
以下の表に、利用可能な設定項目の詳細を示します。 なお、ASM ビューアーの設定は、開くソリューションごとに個別に保存されます。
出力
コメントを表示 | 最適化フラグ、CPU ターゲット、PGO 統計情報、プロローグサイズなど、JIT コンパイラーのアノテーションを有効にします。 |
|---|---|
差分表示に対応した出力 | 逆アセンブリのフォーマットを、実行間でより安定するようにすることで、差分を比較しやすくします(たとえば、アドレスノイズを低減します)。 |
コンパイル
階層型コンパイルを使用する | 階層型JITコンパイルを有効化します。メソッドは最初に高速起動のためにコンパイルされ、その後頻繁に実行されると最適化レベルを上げて再コンパイルされます。 |
|---|---|
PGO を使用する (プロファイルに基づく最適化) | プロファイルに基づいた最適化を可能にし、JIT コンパイラーが実行時データを使用して、より最適化されたネイティブコードを生成できるようにします。 |
コードジェネレーター | 逆アセンブルされたコードを生成するために使用される JIT コードジェネレーターの実装を選択します。 |
ビルド
ビルド | 逆アセンブリを生成する前に、 |
|---|---|
パッケージ復元をスキップ | ビルドステップ中に NuGet パッケージの復元をスキップします。 dotnet ビルド モードでのみ利用可能です。 |
dotnet publish | 逆アセンブリを生成する前に、 |
ターゲットフレームワーク | ビルドおよび JIT 逆アセンブリに使用されるターゲット .NET フレームワークを指定します。 形式は TFM 標準である必要があります。 例: |
ランタイム
プロジェクトを実行する | プロジェクトを実行する際に、逆アセンブリを収集する前に実行時に JIT コンパイルが行われるようにします。 これにより、逆アセンブリの生成時間が長くなる可能性があります。 |
|---|---|
タイムアウト (秒) | 逆アセンブリを生成する前にビルドまたは実行に許容される最大時間。 タイムアウトを無効にするには、 |