はじめに
今回はSourceGenerator
でブレークポイントを用いたデバッグをRiderでする方法を紹介したいと思います。
Rider公式で紹介されていて、今まで頑張ってテストコード書いてデバッグしてましたがもっと手軽にできることを知って衝撃を受けました。もっと早く知りたかった...。
blog.jetbrains.com
テストコードは生成されたコードに対して行うくらいが楽ですし、十分なのではと個人的に思います。(依存先のアセンブリを拾ってくるのがめっちゃ面倒…)
やり方
launchSettings.jsonの配置
launchSettings.json
が必要です。通常Properties
フォルダ以下に配置してあげます。
# 自分がよくやるファイル構成 (SourceGeneratorsは好きなプロジェクト名で) . ├── SourceGenerators.Unity │ ├── Assets │ ... ├── SourceGenerators.Core │ ├── Properties │ │ └── launchSettings.json │ ├── SampleGenerator.cs │ └── SourceGenerators.Core.csproj ├── SourceGenerators.Sample │ ├── Sample.cs │ └── SourceGenerators.Sample.csproj ├── SourceGenerators.Tests │ ├── SampleGeneratorTest.cs │ └── SourceGenerators.Tests.csproj └── SourceGenerators.sln
jsonの書き方は以下のように書きます。
{ "$schema": "https://json.schemastore.org/launchsettings.json", "profiles": { "DebugRoslynSourceGenerator": { "commandName": "DebugRoslynComponent", "targetProject": "../SourceGenerators.Sample/SourceGenerators.Sample.csproj" } } }
targetProject
が肝で、解析対象となる.csproj
を指定します。例えばHogeAttribute
を解析するSourceGeneratorなら、[Hoge]
をつけたものをtargetProject
で指定したプロジェクトに入れておきます。
また"commandName": "DebugRoslynComponent"
が設定されていれば、profiles
直下の名前は何でもOKです。$schema
・commandName
は固定で、targetProject
を設定してあげるイメージです。
ブレークポイントの設定と実行
あとはSourceGenerator本体に対して、ブレークポイントを設定します。
最後にlaunchSettings.json
を開き、DebugRoslynSourceGenerator
の左側にある再生ボタンから、デバッグを実行すればOKです。