如何解决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
相关产品推荐
相关产品推荐

