web-dev-qa-db-ja.com

AssemblyVersion属性の重複

コンパイル時に次のエラーを生成するプロジェクトがあります。

エラーCS0579: 'AssemblyVersion'属性が重複しています

ファイルAssemblyInfo.csをチェックしましたが、そこに重複がないようです。

私は MSDNのこの記事 を見つけましたが、これは同様の問題に対処し、この記事の提案に従うと問題も解決します。

誰がここで何が起こっているのか教えてもらえますか?同じような名前のクラスを持つプロジェクトが2つ以上ある場合にのみ発生しますか?それとも別のものですか?

99
Aamir

私も過去にこの問題に遭遇したことがあるので、ビルドプロセスは、バージョン情報を提供するために、アセンブリ情報も別々に提供すると仮定します。また、プロジェクトのAssembleyInfo.csファイルにもその情報があるため、重複が発生します。そのため、ファイルを削除すると、動作するはずです。

88
luqi

Visual Studio 2017から開始して、AssemblyInfo.csファイルを使用し続ける別のソリューションは、次のような自動アセンブリ情報生成をオフにすることです。

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

個人的には、.NET Frameworkと.NET Standardの両方をサポートする必要があるプロジェクトに非常に役立ちます。

110
Serge Semenov

私は同じエラーがあり、アセンブリバージョンとアセンブリファイルバージョンを管理していたので、Luqiの答えを読んでコメントとして追加し、エラーが解決しました

// AssemblyVersion is the CLR version. Change this only when making breaking    changes
//[Assembly: AssemblyVersion("3.1.*")]
// AssemblyFileVersion should ideally be changed with each build, and should help identify the Origin of a build
//[Assembly: AssemblyFileVersion("3.1.0.0")]

古いプロジェクトを.NET Coreに変換するとき、「AssemblyInfo.cs」にあったほとんどの情報をプロジェクト自体に設定できるようになりました。プロジェクトのプロパティを開き、[パッケージ]タブを選択して新しい設定を確認します。

Eric L. Andersonの投稿「Duplicate ‘System.Reflection.AssemblyCompanyAttribute’属性」 は3つのオプションを説明しています:

  • assemblyInfo.csファイルから競合するアイテムを削除します。
  • ファイルを完全に削除するか、
  • generateAssemblyInfoを無効にします( Serge Semenovによる別の回答 で提案されているとおり)
11

私の場合、コンパイル中に生成された一時的な* .csファイルが誤ってプロジェクトに追加されました。

ファイルはobj\Debugディレクトリにあるため、ソリューションに追加すべきではありません。 *.csワイルドカードは少しおかしくなり、誤って追加されました。

これらのファイルを削除すると、問題が修正されました。

9
Nate Barbettini

私にとっては、AssembyInfo.csとSolutionInfo.csの値が異なっていました。これらのファイルも確認してください。そのうちの1つからバージョンを削除しました。

4
Mariusz.W

私の場合、プロジェクトフォルダーであったプロジェクト内のサブフォルダーはそれ自体です。

  • ファイルシステム:

    • c:\ projects\webapi\wepapi.csproj
    • c:\ projects\webapi\tests\wepapitests.csproj
  • 解決

    • webapi(フォルダーおよびプロジェクト)
      • テスト(フォルダー)
    • テスト(フォルダーとプロジェクト)

次に、「webapi」プロジェクトからサブフォルダー「tests」を削除する必要がありました。

3
heringer

どういうわけか、コントローラーフォルダー内にobjフォルダーが作成されたため、エラーが発生しました。 Assemblyinfo.cs内の行をアプリケーションで検索するだけです。どこかに重複がある可能性があります。

3
Dwayne Love

AssemblyInfo.csで自分のバージョンを更新するためにGitVersionツールを追加しようとしたときにも同じことがわかりました。 VS2017および.NET Coreプロジェクトを使用します。だから私は両方の世界を混ぜました。 AssemblyInfo.csにはGitVersionツールによって生成されたバージョン情報のみが含まれ、csprojには残存物が含まれています。 <GenerateAssemblyInfo>false</GenerateAssemblyInfo>は使用しないことに注意してください。バージョンに関連する属性のみを使用します(以下を参照)。詳細はこちら AssemblyInfoプロパティ

AssemblyInfo.cs

[Assembly: AssemblyVersion("0.2.1.0")]
[Assembly: AssemblyFileVersion("0.2.1.0")]
[Assembly: AssemblyInformationalVersion("0.2.1+13.Branch.master.Sha.119c35af0f529e92e0f75a5e6d8373912d457818")]

my.csprojには、他のassemblyu属性に関連するすべてが含まれます。

<PropertyGroup>
...
<Company>SOME Company </Company>
<Authors>Some Authors</Authors>
<Product>SOME Product</Product>
...
<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
<GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute><GenerateAssemblyInformationalVersionAttribute>false</GenerateAssemblyInformationalVersionAttribute>

csproj maps to package tab at project properties

1
Alezis

これは通常、Visual Studio 2017でプロジェクトをコンパイルした後、コマンドラインコマンド「dotnet run」で.NET Coreを使用して再構築および実行しようとすると発生します。

すべての「bin」フォルダーと「obj」フォルダーを削除するだけで、「ClientApp」内とプロジェクトフォルダー内の両方で、.NET Coreコマンド「dotnet run」を再構築して正常に実行できました。

1
William

私のエラーは、プロジェクト内の別のファイルも参照していたことです。このファイルには、「AssemblyVersion」属性の値も含まれていました。ファイルの1つからその属性を削除し、現在正常に機能しています。

重要なのは、プロジェクトのどのファイルでもこの​​値が複数回宣言されないようにすることです。

0
Antoine Dijoux

私はmsdnでこの答えを見つけました。それはファイルをコンテンツとしてマークし、次に出力にコピーする=新しい場合を説明しています。以下の記事を参照してください。

https://social.msdn.Microsoft.com/Forums/en-US/8671bdff-9b16-4b49-ba9e-227cc4df31b2/compile-error-cs0579-duplicate-assemblyversion-attribute?forum=vsgatk

GH

0
Gary Henshall

AssemblyInfo.csおよび#if!NETCOREAPP3_0 ... #endifを編集します

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an Assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an Assembly.

#if !NETCOREAPP3_0  

[Assembly: AssemblyTitle(".Net Core Testing")]
[Assembly: AssemblyDescription(".Net Core")]
[Assembly: AssemblyConfiguration("")]
[Assembly: AssemblyCompany("")]
[Assembly: AssemblyProduct(".Net Core")]
[Assembly: AssemblyCopyright("Copyright ©")]
[Assembly: AssemblyTrademark("")]
[Assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this Assembly not visible
// to COM components.  If you need to access a type in this Assembly from
// COM, set the ComVisible attribute to true on that type.
[Assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[Assembly: Guid("000b119c-2445-4977-8604-d7a736003d34")]

// Version information for an Assembly consists of the following four values:
//
//      Major Version
//      Minor Version
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [Assembly: AssemblyVersion("1.0.*")]
[Assembly: AssemblyVersion("1.0.0.0")]
[Assembly: AssemblyFileVersion("1.0.0.0")]

#endif
0
Sourcephy

コアをVS2017にアップグレードする場合のもう1つの解決策は、properties\assemblyinfo.csファイルでそれらを削除することです。

それらがプロジェクトに保存されるようになりました。

0
Thomas Koelle