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

.NET Core 6发布报多个输出文件相对路径重复错误如何解决

解决方案

核心原因说明

你尝试的所有静态配置方式均不生效,是因为项目引用的资源项是在.csproj中静态ItemGroup执行完成后,才由SDK动态导入的,直接写Content的更新/移除规则匹配不到来自项目B的配置文件。

可行方案1(推荐,无侵入)

直接修改被引用项目B的.csproj配置,从根源避免配置文件被传递到引用项目的发布输出:

<ItemGroup>
  <!-- 保留本地构建时输出配置,发布时不传递到引用项目 -->
  <Content Update="appsettings.json" CopyToOutputDirectory="PreserveNewest" CopyToPublishDirectory="Never" />
  <Content Update="appsettings.*.json" CopyToOutputDirectory="PreserveNewest" CopyToPublishDirectory="Never" />
</ItemGroup>

该配置不会影响项目B本地运行时的配置读取,仅禁止它的配置文件被带到引用项目的发布目录。

可行方案2(无需修改项目B)

在主项目A的.csproj文件末尾添加后置处理目标,在所有项目资源解析完成后批量移除来自B的配置文件:

<Target Name="RemoveDuplicateAppSettingsFromB" AfterTargets="ResolveProjectReferences">
  <ItemGroup>
    <!-- 移除所有来自项目B的appsettings相关资源 -->
    <Content Remove="%(Content.Identity)" Condition="$([System.String]::Copy('%(Content.Identity)').Contains('\B\appsettings'))" />
    <ResolvedFileToPublish Remove="%(ResolvedFileToPublish.Identity)" Condition="$([System.String]::Copy('%(ResolvedFileToPublish.Identity)').Contains('\B\appsettings'))" />
  </ItemGroup>
</Target>

验证步骤

配置完成后请先删除项目A和B的bin、obj缓存目录,再重新执行发布操作即可解决重复文件报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:06:06