※ これは 2023/09/14 時点の Unity 2023.1.13f1 の情報です
最新版では動作が異なる可能性がありますのでご注意ください
前回で Unity の Roslyn を使ったコード生成をしてみたが何やら下記のような警告が出ていた
Constants
が重複して定義されているみたいな警告を解消する
スポンサードリンク
この警告は複数のアセンブリに同じコードが生成されたために起こるらしい
というわけで前回の自動生成コードの下記の部分を
/// <inheritdoc/> public void Execute(GeneratorExecutionContext context) { context.AddSource("Constants.g.cs", SourceText.From(Code, Encoding.UTF8)); }
次のように変更する
/// <inheritdoc/> public void Execute(GeneratorExecutionContext context) { if (context.Compilation.AssemblyName.Equals("Assembly-CSharp")) { context.AddSource("Constants.g.cs", SourceText.From(Code, Encoding.UTF8)); } }
やることは context
から出力先のアセンブリ名を読み取り、デフォルトのアセンブリ名だった場合のみコードを追加するようにしただけ
アセンブリ名を任意の名前にしたりソースごとに分割した場合、対象のアセンブリ名だけに出力するようにすればよさそう
あとは VSCode のソリューションエクスプローラーの右クリックメニューから「リビルド」実行
これで先述の警告は出なくなった