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

如何解决Visual Studio 2022中多项目方案的NETSDK1022编译错误?

解决VS2022中NETSDK1022重复编译项错误

核心原因

VS的.NET SDK默认会自动扫描项目目录下的所有代码文件作为编译项,当你手动在.csproj里添加了同路径(比如obj\Debug\net7.0\common\SomeFileName.cs)的编译项时,就会触发重复报错。Rider的构建逻辑在处理自动包含和手动包含的冲突时更宽松,所以没触发错误。

解决方法

  • 删除重复的手动编译项
    打开报错项目的.csproj文件,搜索SomeFileName.cs,找到所有<Compile Include="obj\Debug\net7.0\common\SomeFileName.cs" />这类节点,直接删除。因为SDK已经自动包含了必要的编译文件,手动添加属于画蛇添足。

  • 用正确方式引用共享文件(如果是跨项目共享场景)
    要是这个文件是多个项目共用的,别直接引用obj目录里的生成文件,改成用<ProjectReference>依赖生成该文件的项目,或者用<Link>标签关联源文件:

    <Compile Include="..\SharedSource\SomeFileName.cs" Link="common\SomeFileName.cs" />
    

    这样既保持项目结构的整洁,又不会造成重复编译。

  • 清理缓存后重新构建
    右键解决方案选择「清理解决方案」,然后手动删除所有项目下的obj和bin目录,再重新构建。有时候缓存文件损坏会导致编译逻辑异常。

  • 关闭默认编译项(不推荐)
    如果你确实需要完全手动管理所有编译文件,才考虑在.csproj的<PropertyGroup>里添加:

    <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
    

    注意:开启这个后,所有需要编译的文件都得手动用<Compile>节点添加,容易遗漏文件,非必要别用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:22:35