.NET构建报NETSDK1022重复Content项 关闭默认规则后文件缺失
.NET构建NETSDK1022重复Content项报错修复方案
不要使用全局关闭EnableDefaultContentItems的方式修复,这个操作会直接禁用SDK默认的内容项自动引入规则,直接导致依赖的SDK原生库、各架构(x86/x64/ARM)输出文件夹无法被正常识别拷贝,属于过度修复。
按以下步骤操作即可:
- 首先打开你的项目csproj文件,删除之前手动添加的
<EnableDefaultContentItems>false</EnableDefaultContentItems>配置,恢复SDK默认的内容扫描逻辑,保证各架构的SDK二进制文件能正常纳入输出清单。 - 定位重复项来源:你碰到的重复
concrt140.dll来自microsoft.cloud.instrumentationframework.vc14包,本质是SDK默认的目录内容扫描规则,和NuGet包自带的内容引入规则产生了冲突,只需要精准移除重复引入的单个冲突项即可,不需要改动全局配置。 - 在csproj文件中添加如下配置,精准过滤重复项:
<ItemGroup> <!-- 移除重复引入的冲突dll,后续如果同包下有其他dll报重复,按相同格式追加即可 --> <Content Remove="**\concrt140.dll" /> </ItemGroup>
注意:不要使用无差别通配符批量Remove内容项,只针对报错信息里明确列出的重复文件添加排除规则即可,避免误删需要正常输出的原生库文件。
- 执行解决方案清理操作,删除之前生成的bin、obj目录缓存,重新生成项目即可。
修复后可以同时满足两个要求:
- 不再触发NETSDK1022重复Content项报错
- 输出目录下的x86、x64、ARM等SDK原生库存放文件夹完整保留,二进制文件不会丢失
如果后续碰到其他NuGet包引入的同类重复Content报错,都可以套用这个精准排除的思路,不要直接关闭全局默认内容项开关。
内容的提问来源于stack exchange,提问作者varun
相关产品推荐
相关产品推荐

