You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core项目编译报错CS0579:重复定义System.Reflection.Assembly...Attribute特性

.NET Core项目编译报错CS0579:重复定义System.Reflection.Assembly...Attribute特性

最近自己在构建net9.0版本的.NET Core项目时踩了个坑:每次编译都报错,提示CS0579: Duplicate 'System.Reflection.' attribute,所有错误都指向obj/Debug/net9.0/目录下自动生成的.AssemblyInfo.cs文件,里面的AssemblyCompanyAttribute、AssemblyProductAttribute这类特性全报重复定义。

折腾了半天终于摸清楚了问题根源和解决办法,分享给同样踩坑的朋友:

问题到底出在哪?

在.NET 5及之后的SDK(包括.NET 9)里,项目默认会根据.csproj文件中的配置(比如Company、Product、Version这些属性)自动生成Assembly相关的特性代码,存到obj目录的自动文件里。但如果你的项目里同时存在手动创建的AssemblyInfo.cs文件,或者SDK因为某些异常重复生成了特性代码,就会触发这个“重复定义”的编译错误。

三种实用解决办法,按需选就行

  • 方案一:禁用自动生成AssemblyInfo
    如果你习惯自己手动维护AssemblyInfo.cs里的所有特性配置,直接在项目的.csproj文件中添加以下配置,就能关闭SDK的自动生成逻辑:
<PropertyGroup>
  <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>

保存后重新编译,自动生成的重复特性就会消失,完全使用你手动编写的配置。

  • 方案二:删除手动的AssemblyInfo.cs文件
    如果你平时更倾向于用.csproj的属性可视化管理项目的公司名、版本号这些信息(毕竟在项目属性面板里改更直观),那直接删掉项目里自己创建的AssemblyInfo.cs文件就行。之后SDK会自动根据.csproj的配置生成正确的特性,不会再出现重复问题。

  • 方案三:检查项目嵌套或引用配置
    这种情况比较少见,但如果前两种方法都没解决问题,建议检查下项目是否引用了其他包含重复AssemblyInfo的项目,或者有没有嵌套的项目文件导致重复生成。不过大部分情况下前两种方案就能搞定。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 12:28:15