AssemblyVersion属性の重複


147

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

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

ファイルAssemblyInfo.csを確認したところ、重複がないようです。

同様の問題に対処するMSDNのこの記事を見つけ、この記事の提案に従って問題も修正しました。

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


推測に過ぎませんが、もう一度試してみて、ソリューションを再び開いたのですか?たぶんそれで解決するでしょうか?
Stefto 2012

4
プロジェクトを.NET Coreに変換する場合は、elanderson.net / 2017/06 /…を
Michael Freidgeim

MacでVisual Studio 2017 Communityエディションを使用しています。コンソールアプリを作成してから、新しいクラスライブラリプロジェクトへの参照を追加しました。これらのエラーは、ビルドを行ったときに表示され始めました。私が行ったのは、クラスライブラリプロジェクトへの参照を削除してから再び追加するだけで、エラーはなくなりました。
ノミ

回答:


126

私も過去にこの問題に遭遇したので、ビルドプロセスがバージョン情報の提供とは別にアセンブリ情報を提供すると仮定します。また、プロジェクトにはAssemblyInfo.csファイル内の情報も含まれているため、重複が発生します。だからファイルを削除すれば、うまくいくと思います。


3
それで、新しいエントリを作成する代わりに、ビルドプロセスが既存のAssemblyVersionを上書きするべきではありませんか?私たちのビルドプロセスがそれを行うことを知っていますが、なぜそれが既存のものを上書きしないのか不思議です。正しく実装されていませんか、それとも制限ですか?
アーミル

.netアセンブリの場合は、バージョンインジェクション方式を使用する方が良いと思います。しかし、それは別の話です。あなたの場合、問題は、cmdlineビルドパラメーターとAssemblyInfo.csを通じてアセンブリバージョンを提供するさまざまな方法があり、属性の複製が.netコンパイルエラーであるため、1つのメソッドのみが使用されていることを確認する必要があることです。
luqi

正確に何を削除しますか?
robertotomás

193

Visual Studio 2017以降、AssemblyInfo.csファイルを使い続けるための別の解決策は、次のような自動アセンブリ情報生成をオフにすることです。

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

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


4
はい、これでうまくいきました。objフォルダーとbinフォルダーを削除するだけでは不十分でした。
Nick Josevski 2017年

残念ながら、.csprojプロパティページ(アプリケーション、ビルド、ビルドイベントなど)を使用してファイルを変更するたびにPropertyGroupGenerateAssemblyInfo消えます:-(
Palo Mraz

3
それをDirectory.Build.propsファイルに移動します
Bryan

2
このソリューションでリスクや否定的な結果が生じる可能性はありますか?
mrcoulson

私の問題を完全に修正しました!
ダニエルマクリーン

19

同じエラーが発生し、アセンブリヴェスリオンとアセンブリファイルのバージョンに下線が引かれていたので、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")]

私はこれを試しましたが、私の場合は何も変わりませんでした:-(
Gertsen

18

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

エリック・L.アンダーソンの記事「複製『System.Reflection.AssemblyCompanyAttribute』属性は、」 3つのオプションについて説明します。

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

これらの属性は.csproj実際のロジックを記述するコードではなくメタデータであるため、プロジェクト()でこれらの属性を指定する方が直感的で「Visual Studio」のほうがわかります。今後、プロジェクトですべてを指定できるようになることを願っています!(現在、COMの可視性は指定できないため、そのままにしておきAssemblyInfo.csます。)
Franklin Yu

9

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

ファイルはobj\Debugディレクトリにあるので、ソリューションに追加されるべきではありません。あ*.csワイルドカードは少しクレイジー行き、間違ってそれらを追加しました。

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


9

私の場合、プロジェクトのサブフォルダーがプロジェクトフォルダーだった場合、次のようになります。

  • ファイルシステム:

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

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

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


4

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


3

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


同様に、別の.csproj(B)に属する別のフォルダー内に.csprojファイル(A)がありました。
taylorswiftfan

2

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

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


2

ここのプロジェクトには、AssemblyInfo.csファイルが既に存在している必要があります。 ここに画像の説明を入力してください

解決するには:-1つのAssemblyInfo.csを削除します。


1

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

現在はプロジェクトに保存されています。



1

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には、他のアセンブリ属性に関連するすべてが含まれています。

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

csprojはプロジェクトプロパティのパッケージタブにマップします


1

メインプロジェクトがソリューションと同じフォルダーにあるときにこの問題が発生し、サブフォルダーにある同じソリューションに別のプロジェクトがあり、その別のプロジェクトがメインプロジェクトを参照として使用していました。これにより、メインプロジェクトは重複した参照を作成したサブフォルダーbin&objフォルダーを検出しました。


これは私を大いに助けてくれました!あるプロジェクトが別のプロジェクトをビルド時の依存関係として参照していましたが、csprojのバグが原因でobjフォルダーが異なり、このエラーが発生しました。
チャドジェサップ

0

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

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


0

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

同じディレクトリに2つのプロジェクトを配置したときにこのエラーが発生しました。ソリューションのあるディレクトリがあり、その中に別のWebおよびDataディレクトリを配置すると、正しくコンパイルされます。


0

Azure DevOpsのビルドパイプラインでこの問題が発生している場合は、ビルドアクションを「コンテンツ」として配置し、AssembyInfo.csファイルプロパティで「新しい場合はコピーする」と同じ出力ディレクトリにコピーしてください。


0
obj\Debug\netstandard2.0\PacktLibrary.AssemblyInfo.cs(15,12): error CS0579: Duplicate 'System.Reflection.AssemblyConfigurationAttribute' attribute [c:\Users\John_Tosh1\Documents\C#8.0and.NetCore3.0\Code\Chapter05\PacktLibrary\PacktLibrary.csproj]
obj\Debug\netstandard2.0\PacktLibrary.AssemblyInfo.cs(16,12): error CS0579: Duplicate 'System.Reflection.AssemblyFileVersionAttribute' attribute [c:\Users\John_Tosh1\Documents\C#8.0and.NetCore3.0\Code\Chapter05\PacktLibrary\PacktLibrary.csproj]
obj\Debug\netstandard2.0\PacktLibrary.AssemblyInfo.cs(17,12): error CS0579: Duplicate 'System.Reflection.AssemblyInformationalVersionAttribute' attribute [c:\Users\John_Tosh1\Documents\C#8.0and.NetCore3.0\Code\Chapter05\PacktLibrary\PacktLibrary.csproj]
obj\Debug\netstandard2.0\PacktLibrary.AssemblyInfo.cs(18,12): error CS0579: Duplicate 'System.Reflection.AssemblyProductAttribute' attribute [c:\Users\John_Tosh1\Documents\C#8.0and.NetCore3.0\Code\Chapter05\PacktLibrary\PacktLibrary.csproj]
obj\Debug\netstandard2.0\PacktLibrary.AssemblyInfo.cs(19,12): error CS0579: Duplicate 'System.Reflection.AssemblyTitleAttribute' attribute [c:\Users\John_Tosh1\Documents\C#8.0and.NetCore3.0\Code\Chapter05\PacktLibrary\PacktLibrary.csproj]
obj\Debug\netstandard2.0\PacktLibrary.AssemblyInfo.cs(20,12): error CS0579: Duplicate 'System.Reflection.AssemblyVersionAttribute' attribute [c:\Users\John_Tosh1\Documents\C#8.0and.NetCore3.0\Code\Chapter05\PacktLibrary\PacktLibrary.csproj]

ライブラリフォルダーが別のクラスライブラリを誤って作成したために破損したと思います。ライブラリをすべての関連ファイルから削除しましたが、問題は解決しませんでした。ディレクトリ内のすべてのbinおよびobjフォルダーを削除することで回避策を見つけました。以前のビルドは問題ありませんでしたが、同じassemblyinfo.csファイルを持つサブフォルダーが見つかりました。


0

この問題は、主にVS 2017に固有の参照の競合です。

AssemblyInfo.csのページの下部にある7〜14行目とアセンブリバージョンコードをコメント化するだけで、この同じエラーを解決しました

重複した参照がすべて削除され、プロジェクトを再度ビルドできました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.