コンパイル時に次のエラーを生成するプロジェクトがあります。
エラーCS0579: 'AssemblyVersion'属性が重複しています
ファイルAssemblyInfo.cs
を確認したところ、重複がないようです。
同様の問題に対処するMSDNのこの記事を見つけ、この記事の提案に従って問題も修正しました。
誰がここで何が起こっているのか教えてもらえますか?同じような名前のクラスを持つ2つ以上のプロジェクトがある場合にのみ発生しますか?それとも別のことですか?
コンパイル時に次のエラーを生成するプロジェクトがあります。
エラーCS0579: 'AssemblyVersion'属性が重複しています
ファイルAssemblyInfo.cs
を確認したところ、重複がないようです。
同様の問題に対処するMSDNのこの記事を見つけ、この記事の提案に従って問題も修正しました。
誰がここで何が起こっているのか教えてもらえますか?同じような名前のクラスを持つ2つ以上のプロジェクトがある場合にのみ発生しますか?それとも別のことですか?
回答:
私も過去にこの問題に遭遇したので、ビルドプロセスがバージョン情報の提供とは別にアセンブリ情報を提供すると仮定します。また、プロジェクトにはAssemblyInfo.cs
ファイル内の情報も含まれているため、重複が発生します。だからファイルを削除すれば、うまくいくと思います。
Visual Studio 2017以降、AssemblyInfo.cs
ファイルを使い続けるための別の解決策は、次のような自動アセンブリ情報生成をオフにすることです。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
</Project>
個人的には、.NET Frameworkと.NET Standardの両方をサポートする必要があるプロジェクトに非常に役立つと思います。
.csproj
プロパティページ(アプリケーション、ビルド、ビルドイベントなど)を使用してファイルを変更するたびにPropertyGroup
、GenerateAssemblyInfo
消えます:-(
同じエラーが発生し、アセンブリヴェスリオンとアセンブリファイルのバージョンに下線が引かれていたので、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に含まれていたほとんどの情報をプロジェクト自体に設定できるようになりました。プロジェクトのプロパティを開き、[パッケージ]タブを選択して、新しい設定を確認します。
エリック・L.アンダーソンの記事「複製『System.Reflection.AssemblyCompanyAttribute』属性は、」 3つのオプションについて説明します。
.csproj
実際のロジックを記述するコードではなくメタデータであるため、プロジェクト()でこれらの属性を指定する方が直感的で「Visual Studio」のほうがわかります。今後、プロジェクトですべてを指定できるようになることを願っています!(現在、COMの可視性は指定できないため、そのままにしておきAssemblyInfo.cs
ます。)
私の場合、コンパイル中に生成されたいくつかの一時* .csファイルが誤ってプロジェクトに追加されました。
ファイルはobj\Debug
ディレクトリにあるので、ソリューションに追加されるべきではありません。あ*.cs
ワイルドカードは少しクレイジー行き、間違ってそれらを追加しました。
これらのファイルを削除すると、問題が解決しました。
コントローラフォルダ内にobjフォルダが作成されたため、エラーが発生しました。アプリケーションで、Assemblyinfo.cs内の行を検索するだけです。どこかに重複があるかもしれません。
私はmsdnでこの回答を見つけました。これは、ファイルをコンテンツとしてマークしてから、[出力にコピーする=新しい場合]と説明しています。以下の記事を参照してください。
GH
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>
私のエラーは、プロジェクトの別のファイルも参照していることでした。このファイルには、属性「AssemblyVersion」の値も含まれていました。その属性をファイルの1つから削除したところ、正しく動作しています。
重要なのは、この値がプロジェクトのどのファイルでも2回以上宣言されないようにすることです。
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
同じディレクトリに2つのプロジェクトを配置したときにこのエラーが発生しました。ソリューションのあるディレクトリがあり、その中に別のWebおよびDataディレクトリを配置すると、正しくコンパイルされます。
Azure DevOpsのビルドパイプラインでこの問題が発生している場合は、ビルドアクションを「コンテンツ」として配置し、AssembyInfo.csファイルプロパティで「新しい場合はコピーする」と同じ出力ディレクトリにコピーしてください。
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ファイルを持つサブフォルダーが見つかりました。