我有一个项目,在编译时会产生以下错误:
错误CS0579:“ AssemblyVersion”属性重复
我已经检查了文件AssemblyInfo.cs
,看起来那里没有重复。
我在MSDN上找到了解决类似问题的这篇文章,并且按照本文中的建议也解决了该问题。
谁能告诉我这是怎么回事?仅在具有两个或更多个名称相似的类的项目时才发生这种情况吗?或者是别的什么?
我有一个项目,在编译时会产生以下错误:
错误CS0579:“ AssemblyVersion”属性重复
我已经检查了文件AssemblyInfo.cs
,看起来那里没有重复。
我在MSDN上找到了解决类似问题的这篇文章,并且按照本文中的建议也解决了该问题。
谁能告诉我这是怎么回事?仅在具有两个或更多个名称相似的类的项目时才发生这种情况吗?或者是别的什么?
Answers:
过去我也遇到过此问题,因此我将假定您的构建过程将提供组装信息与提供版本控制分开。这会导致重复,因为您的项目在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
消失:-(
我遇到了同样的错误,并且它强调了Assembly Vesrion和Assembly File版本,因此阅读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)的帖子“重复的'System.Reflection.AssemblyCompanyAttribute'属性” 描述了3个选项:
.csproj
)中指定这些属性更直观,更“ Visual Studio” ,因为它们是元数据而不是描述实际逻辑的代码。我希望将来可以在项目中指定所有内容!(当前,我无法指定COM可见性,因此将其保留在AssemblyInfo.cs
。)
发生我的错误是因为以某种方式在我的controllers文件夹中创建了一个obj文件夹。只需在您的应用程序中搜索Assemblyinfo.cs中的一行即可。某处可能有重复项。
我在msdn上找到了这个答案,它解释了将文件标记为内容,然后复制到输出=更新的情况。请参阅以下文章:
生长激素
尝试添加GitVersion工具更新AssemblyInfo.cs中的版本时遇到了相同的问题。使用VS2017和.NET Core项目。所以我只是混合了两个世界。我的AssemblyInfo.cs只包含GitVersion工具生成的版本信息,我的csproj包含keepgin东西。请注意,我不使用<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>
编辑您的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]
我相信我的Library文件夹由于意外创建了另一个类库而损坏了。我删除了所有相关文件,但问题仍然存在。我通过删除目录中的所有bin和obj文件夹找到了解决方法。之前的构建还可以,但是找到了具有相同assemblyinfo.cs文件的子文件夹。