C# – 「AssemblyVersion」属性が重複しています

問題

次のように、AssemblyVersion 属性をプロジェクトに追加しようとしています:

using System.Reflection;

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

Code language: C# (cs)

そして、次のコンパイラ エラーが発生します:

しかし、これらの属性はプロジェクトの他の場所には表示されません。

解決策

問題は、Visual Studio が既定でアセンブリ情報を自動生成することです。

これをオフにするには、.csproj ファイルに次の行を追加してください:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>
  <PropertyGroup>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  </PropertyGroup>
</Project>

Code language: HTML, XML (xml)

自動生成されたアセンブリ情報はどこにありますか?

私のアセンブリは DupeAssemblyVersion と呼ばれ、.NET Core 3.1 をターゲットにしています。したがって、自動生成されたアセンブリ情報ファイルは次の場所にあります:\obj\Debug\netcoreapp3.1\DupeAssemblyVersion.AssemblyInfo.cs.

このファイルは次のようになります:

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.42000
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

using System;
using System.Reflection;

[assembly: System.Reflection.AssemblyCompanyAttribute("DupeAssemblyVersion")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyProductAttribute("DupeAssemblyVersion")]
[assembly: System.Reflection.AssemblyTitleAttribute("DupeAssemblyVersion")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

// Generated by the MSBuild WriteCodeFragment class.
Code language: C# (cs)