急にCS0102
が出てビルドが通らなくなった!という人で、以下の条件に当てはまる場合はNET SDKのバグを踏み抜いた可能性があります。おめでとうございます。
- WPFプロジェクト
- ターゲットフレームワークが.NET 6.0
- SourceGeneratorの生成コードでエラーになる
- CS0101: 名前空間 '名前空間名' は既に '型名' の定義を含んでいます
- CS0102: 型 '型名' は既に '~~' の要素を含んでいます
- CS0111: 型 '型名' は、'~~' と呼ばれるメンバーを同じパラメーターの型で既に定義しています
- CS0579: 'AttributeUsage' 属性が重複しています
- ジェネレータで属性を生成している場合
- CS0757: 部分メソッドでは、複数の実装宣言を含むことができない場合があります
- ジェネレータで
partial
メソッドを定義/実装している場合
- ジェネレータで
- 開発者用コマンドプロンプト(
Ctrl+@
)でdotnet --info
を実行したとき、.NET SDK 6.0.302がインストールされている
原因は .NET6 SDK 6.0.302 のせいだそうです。
いや~困りますね!
対応策
ビルドに使用するSDKを古いバージョン、つまり.NET SDK 6.0.301にすればよいようです。
- 6.0.301をインストールしていない場合はインストールする
- https://dotnet.microsoft.com/ja-jp/download/dotnet/6.0
- ↑の 6.0.6 にあります
- .slnファイルと同じ場所に
global.json
ファイルを作成します。 - 以下を記述して保存し、ビルドします。
{
"sdk": {
"version": "6.0.301",
"rollForward": "disable"
}
}