Unity 2020.2から制限付きながらRoslynアナライザが動作するようになり、その後、Unity 2021.1.2で実用段階に行き着いたことは以前ブロク記事で紹介しました。
しかし、この時点でUnityエディター上で動作しない*1アナライザがありました。例えば次のものです*2。
これらは、Unity 2021.2.0以降では動作するようになりました。
結論
調査を放置していたのですが改めて確認してみたところ、結論としては
- Unity 2021.2から内包するMicrosoft.CodeAnalysis.CSharpバージョンがv3.5からv3.9に変更された
- Microsoft.CodeAnalysis.CSharpのバージョン3.6以降を使用してビルドされたアナライザはUnity 2021.2未満では動作せず、2021.2以降では動作する
- Microsoft.CodeAnalysis.CSharpのバージョン3.10以降を使用してビルドされたアナライザはUnity 2021.2以降でも動作しない[11/14追記]
というものでした。 したがって、自作アナライザをUnity 2021.2未満にも対応させたいのであれば、使用するMicrosoft.CodeAnalysis.CSharpはv3.5に固定すればよいということになります*3。
テンプレートプロジェクト
こちらのリポジトリで、Unity 2021.2未満でも動作するアナライザプロジェクトのテンプレートを公開しています。 テンプレート初期化の確認中にミスってリポジトリ消してしまったので、以前☆つけてくれていた方はまたお願いします…。
内包するRoslynバージョンの確認方法
以下おまけです。
Unityに内包されているRoslyn関連ファイルは、macOSでは下記パスにあります。
Unity 2021.2未満
/Applications/Unity/Hub/Editor/2021.1.28f1/Unity.app/Contents/Tools/Roslyn/Microsoft.CodeAnalysis.CSharp.dll
※2021.1.28f1
の部分はUnityエディタのバージョン
Unity 2021.2以降
/Applications/Unity/Hub/Editor/2021.3.4f1/Unity.app/Contents/Tools/ScriptUpdater/Microsoft.CodeAnalysis.CSharp.dll
この中のdllファイルを、Windowsであればilasm.exeというツールで見て確認できるはずです。 macOSの場合、Visual Studio for Macでも見られるようです。
参考:方法: ファイルがアセンブリであるかどうかを確認する | Microsoft Learn
今回はJetBrains Riderで読み込んで、Project Explorerでファイル右クリック | View in Assembly Explorerで確認しました。