Unity 2020.2 からUnityエディターでRoslynアナライザー(およびソースジェネレーター)がサポートされましたが、Unityエディタに同梱されているMicrosoft.CodeAnalysis.CSharpのバージョンよりも新しいバージョンでコンパイルされたアナライザーは動作しません。
どのバージョンが動作するのか、過去記事などで紹介したものもありますが、できるだけ最新のバージョンを使いたいと考えると都度確認せざるを得ず、とても面倒です。 そこで、Unity の各バージョンに対してどのバージョンが使用できるかを網羅したリファレンスリポジトリを作りました。
アナライザーごとのUnityで動作するバージョン情報
たとえばIDisposableAnalyzersページを見ると、最新バージョンは4.0.8ですが、 Unity 2022.2以降ではv4.0.4、 Unity 2022.2未満ではv3.4.15 を使用しなければならないことがわかるようになっています。
| Version | Microsoft.CodeAnalysis.CSharp | Unity 2020.2 | Unity 2021.2 | Unity 2022.2 | Unity 6000.0 |
|---|---|---|---|---|---|
| 4.0.8 | 4.5.0.0 | ❌ | ❌ | ❌ | ❌ |
| 4.0.7 | 4.5.0.0 | ❌ | ❌ | ❌ | ❌ |
| 4.0.6 | 4.5.0.0 | ❌ | ❌ | ❌ | ❌ |
| 4.0.5 | 4.5.0.0 | ❌ | ❌ | ❌ | ❌ |
| 4.0.4 | 4.0.0.0 | ❌ | ❌ | ✅ | ✅ |
| 4.0.3 | 4.0.0.0 | ❌ | ❌ | ✅ | ✅ |
| 4.0.2 | 4.0.0.0 | ❌ | ❌ | ✅ | ✅ |
| 4.0.1 | 4.0.0.0 | ❌ | ❌ | ✅ | ✅ |
| 4.0.0 | 4.0.0.0 | ❌ | ❌ | ✅ | ✅ |
| 3.4.15 | 3.5.0.0 | ✅ | ✅ | ✅ | ✅ |
なお、Microsoft.CodeAnalysis.CSharp以外の依存はチェックしていませんのでご注意ください。 たとえばNUnit.Analyzersは最新のv4.11.2までUnity 2022.2以降で動作するように見えますが、v4系はNUnit 4が前提であり、Unity Test FrameworkではNUnit 3ベースのv3.9.0*1までしか使えません。
アナライザーの追加・更新
アナライザーの検証および表の生成はGitHub Actionsワークフローになっており、リポジトリに無いアナライザも次の手順で確認できます。
- リポジトリをフォークします
- フォークリポジトリでGitHub Actions workflowを実行します
- リポジトリのページで Actions > Check Roslyn Analyzer Versions を開く
- Run workflow ドロップダウンをクリック
- NuGetのパッケージIDを入力 (e.g.,
Microsoft.Unity.Analyzers) - Run workflow ボタンをクリック
- ワークフローが実行され、新しいブランチにMarkdownファイルがpushされます
ぜひ実行結果をプルリクエストで送ってください。
なお、一度アナライザのページを追加すると、定期的に自動更新されるようになっています。
UnityエディタのMicrosoft.CodeAnalysis.CSharpバージョン確認
Unityエディタに同梱されているMicrosoft.CodeAnalysis.CSharpバージョンを確認するツールを tools/check-unity-roslyn-version.ps1 に置いてあります。
実行結果(すべてのUnityバージョンではない)は docs/unity_roslyn_versions.md に残しています。
こちらはまだ手動実行ですが、そのうち自動化したいと思っています。
関連記事
UnityプロジェクトへのRoslynアナライザー導入方法は、同人誌および過去記事で紹介しています。