はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Rider】Rider 2025.3からIL ViewerでUnityによって生成および後処理されたILを見れるようになった

はじめに

ついにRider2025.3がリリースされたのですが、新機能の一つとしてUnityにより生成されたILを表示できるようになりました。

実際に利用している様子

Unity code in the IL Viewer
The IL Viewer tool window now shows the intermediate language (IL) code of the assemblies generated and post-processed by Unity, rather than the temporary assemblies generated by an IDE build, helping you analyze compilation results based on what Unity will actually use.

// DeepL翻訳
Unity code in the IL Viewer
ILビューアーツールウィンドウでは、IDEビルドで生成される一時的なアセンブリではなく、Unityによって生成および後処理されたアセンブリの中間言語(IL)コードが表示されるようになりました。これにより、Unityが実際に使用する内容に基づいてコンパイル結果を分析できます。

www.jetbrains.com

なおUnityでは...みたいなのはあるあるだと思いますが、今回の新機能でそれも解決できるというわけですね。今回は使い方の紹介と、本当に動いているかの実験をしたいと思います。

使い方

RiderがUnityプロジェクトだと認識している状態で、以下のどれかを行いIL Viewerを開いてください。

  • メインメニューから ツール | IL Viewer を選択します。
  • ⌃Ctrl⇧ShiftN を呼び出し、IL コードを選択します。
  • 逆コンパイルされたコードでは、タイプまたはメンバー宣言の上にある IL Viewer コードビジョンメトリクスをクリックできます。
  • アセンブリエクスプローラーウィンドウのシンボルを右クリックし、IL Viewer を選択します。

中級言語を見る (IL) | JetBrains Rider ドキュメント

実験

実際にUnityによって生成&後処理されたILが表示されているか確認するために、ILPostProcessorを活用してILを編集してみます。つまり編集後のILがRiderで表示されていたら、Unityによって生成されたものだと判断できるという理屈です。(もし間違っていたらご指摘いただけると幸いです)
light11.hatenadiary.com

// ILPostProcessorによりメソッドの先頭に「UnityEngine.Debug.Log(Service executed: AddService.Add())」を追加する
public class AddService
{
    public int Add(int a, int b)
    {
        return a + b;
    }
}
ILPostProcessorによりILが変化している様子

RiderがUnityプロジェクトだと認識している状態で、IL Viewerを立ち上げると、正しくILPostProcessorが反映されていることが確認できました。