【问题标题】:Getting a compile time error CS0579: Duplicate 'AssemblyFileVersionAttribute' attribute获取编译时错误 CS0579:重复的“AssemblyFileVersionAttribute”属性
【发布时间】:2012-05-22 07:58:15
【问题描述】:

我最近通过 Properties->Application->Assembly Information 按钮向一组 C# 项目 (dll) 添加了一些版权信息。我在一个解决方案中有几个这样的项目。编译后,我收到以下类型的错误消息:

错误 CS0579:重复的“XXX”属性

其中“XXX”是我指定的属性之一的名称(例如 AssemblyFileVersionAttribute)

谷歌搜索发现,对于派生自 Attribute 类的类,可以通过以下方式允许重复:

[System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=true)]
class NewAttribute : System.Attribute { }

但在我的例子中,我已经通过属性对话框添加了这些属性,并且有语句(在每个项目的 AssemblyInfo.cs 中),例如:

[assembly: AssemblyCompanyAttribute("My Company")]
[assembly: AssemblyProductAttribute("My Product")]
[assembly: AssemblyCopyrightAttribute("© 2012 My Company, All Rights Reserved.")]
[assembly: AssemblyVersionAttribute("13.0.0.0")]
[assembly: AssemblyFileVersionAttribute("1.0.0.0")]

并且没有任何我可以附加任何限定符的手动派生属性类。

如何解决这个重复的问题?

【问题讨论】:

  • 您是否在项目中对AssemblyFileVersion 进行了全局搜索?
  • AssemblyFileVersionAttribute 以整个程序集为目标,如您所知,所以也许您有多个指定属性的 .cs 文件(在同一个项目中)?
  • 你可以在这里看到AssemblyFileVersionAttribute拥有的AttributeUsageAttributeMSDN doc

标签: c# attributes duplicates


【解决方案1】:

我认为您已经在项目 PropertiesAssembly Information 窗口中指定了这些属性。如果您这样做了,请从 Assembly Information 中删除这些属性。

【讨论】:

    【解决方案2】:

    通过在 .csproj 文件中添加此问题解决了问题

     <PropertyGroup>
        <TargetFramework>netcoreapp2.1</TargetFramework>
        <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
            <GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
            <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
            <GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
      </PropertyGroup>
    

    按照 Bob 的建议,如果您不想单独添加它们,可以添加

    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>   
    

    &lt;PropertyGroup&gt;

    【讨论】:

    • 感谢它对我的帮助很大。
    • 不用单独添加,只需添加&lt;GenerateAssemblyInfo&gt;false&lt;/GenerateAssemblyInfo&gt;
    • 虽然这对我有用,但我不满意这是正确的解决方案。我之前已将我正在处理的程序集从 .NET 4.7.2 转换为 NET Standard,并在此过程中复制了包含 AssemblyInfo.cs 文件的 Properties 目录。这就是产生冲突的地方,因为 Net Standard 不需要 AssemblyInfo.cs。我删除了 Properties 目录和文件,现在不再收到编译器错误。
    【解决方案3】:

    面临类似的重复属性问题CS0579

    通过从项目中删除 out 目录为我解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多