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

VS2019开发C# WPF项目.AssemblyInfo.cs报重复属性错误如何解决

问题根因

这个报错本质是C#编译器编译项目时,拿到了多份内容完全相同的程序集特性声明,VS2019下WPF项目触发这个问题的常见场景只有3种:

  1. 项目属于SDK风格格式(VS2019新建WPF项目的默认格式),默认会在编译时自动在obj目录生成一份AssemblyInfo.cs文件写入程序集特性,如果你手动在项目其他目录存放了手写的AssemblyInfo.cs、或者误操作把obj目录下自动生成的AssemblyInfo.cs包含进了项目编译列表,编译器就会同时加载两份完全一致的特性声明触发报错。
  2. 之前反复迁移项目、复制项目文件的时候,不小心把多份相同的AssemblyInfo.cs复制到了项目的不同目录下,并且全部被纳入了编译范围。
  3. 项目的.csproj配置文件里存在重复的<GenerateAssemblyInfo>配置节点,或者之前旧版本项目的残留配置导致生成逻辑异常,重复生成了特性声明。

你新建空白WPF项目无法复现是正常的:新项目没有历史残留文件、配置是默认正确状态,编译缓存也是全新的,自然不会触发重复加载问题。

分步解决方法(不需要提前熟悉配置文件,操作无破坏性)
  • 第一步先清理编译缓存:完全关闭Visual Studio,打开主项目的根文件夹,找到bin和obj两个文件夹直接全部删除,这两个文件夹存放的全是编译过程自动生成的临时文件,删除不会对项目源码造成任何影响。删除完成后重新打开VS生成项目,缓存错乱导致的重复报错大概率会直接消失。
  • 如果清理缓存后报错仍存在,打开VS右侧的解决方案资源管理器,点击面板顶部的「显示所有文件」按钮(带虚线边框的文件夹图标),在整个项目范围内搜索所有名为AssemblyInfo.cs的文件:
    • 如果你用的是默认SDK风格的WPF项目:正常情况下仅obj/Debug或obj/Release路径下的那份AssemblyInfo.cs是编译流程自动生成的,其余所有出现在Properties文件夹、你自定义业务目录下的同名文件,右键选择「从项目中排除」即可,不要直接删除文件,先排除后重新编译,确认报错消失后再按需处理冗余文件。
    • 如果你用的是传统.NET Framework版本的WPF项目:正常情况下仅Properties文件夹下存在一份手动维护的AssemblyInfo.cs,其余所有出现在obj目录、其他业务目录下的同名AssemblyInfo.cs,全部右键从项目中排除即可。
  • 完成上述操作后如果仍有报错,再修改项目配置,操作风险极低:右键解决方案资源管理器里的项目名称,选择「编辑项目文件」,在打开的csproj配置里查找<GenerateAssemblyInfo>节点:
    • 如果存在多个相同的节点,只保留一个即可,删除其余重复节点。
    • 如果你希望保留自己手写的AssemblyInfo.cs文件,就把保留的节点值设为false,配置写法为<GenerateAssemblyInfo>false</GenerateAssemblyInfo>,这会告诉VS不要自动生成程序集特性文件,完全使用你手写的内容。
    • 如果你希望用VS自动生成的程序集特性,就把节点值设为true,确保项目里没有其他手动存放的AssemblyInfo.cs被纳入编译范围即可。

注意:不要尝试直接修改obj目录下自动生成的AssemblyInfo.cs文件,该文件会在每次编译时被完全覆盖重写,任何修改都不会生效。

内容的提问来源于stack exchange,提问作者Ophir Botzer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:39:39