CS0579、属性の重複エラー

クラスライブラリープロジェクトを作成してアプリケーションプロジェクトに参照を追加してビルドしたところ CS0579、属性が重複しているとエラーが出てビルドできなくなった。

System.Reflection.AssemblyVersionAttribute など、いや、バージョンはライブラリーとアプリケーションとで独立しているはずで重複とかおかしいでしょ?
ネットを検索して情報をあさるも、重複した属性を変えようだとか必要ないものを生成しないよう設定しようだとか。
いやいや、バージョン情報とかはそれぞれに必要なものでしょう? 重複した情報をそろえると言われても、ライブラリーとアプリケーションとで常にバージョンをそろえるとか意味不明だし……🤔

と、ほとほと困っていたのだけれど原因はプロジェクトのディレクトリー構成にありました。
アプリケーション .csproj ファイルのあるディレクトリーに、ライブラリープロジェクト用のディレクトリーを掘ったのだけれどこれがダメだった。

app.csproj
app.cs

ClassLib/lib.csproj
ClassLib/lib.cs
ClassLib/…

このように構成したためクラスライブラリーの(自動生成)アセンブリ情報がアプリケーションのビルド時にも参照され、アプリケーションのアセンブリ情報と重複していた──という次第。
以下のように別のディレクトリーに配置することで解決。

App/app.csproj
App/app.cs
App/…
ClassLib/lib.csproj
ClassLib/lib.cs
ClassLib/…

エラーメッセージとその対処法からでは見えてこない問題でございました。

この記事が気に入ったらサポートをしてみませんか?