1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SourceGeneratorを利用する.NET6のWPFプロジェクトでCS0102エラーが発生するのは.NET SDK 6.0.302のバグのせい

Last updated at Posted at 2022-07-15

急に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にすればよいようです。

  1. 6.0.301をインストールしていない場合はインストールする
  2. .slnファイルと同じ場所にglobal.jsonファイルを作成します。
  3. 以下を記述して保存し、ビルドします。
{
    "sdk": {
        "version": "6.0.301",
        "rollForward": "disable"
    }
}
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?