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

Visual Studio 2022发布ASP.NET Core项目遇NETSDK1152错误求解决

NETSDK1152错误:重复发布文件问题解析与解决方案

错误逻辑解析

是的,你遇到的问题根源就是同一解决方案下的SM.Web.Api和SM.WebUI两个项目都包含同名的appsettings.json、appsettings.Development.json配置文件。

当使用Visual Studio发布项目时,MSBuild会扫描所有需要复制到发布目录的文件——如果不同来源的文件最终要输出到相同的相对路径,就会触发NETSDK1152错误。这是.NET SDK的默认保护机制,防止文件被意外覆盖,确保发布目录的文件唯一性。

从错误日志可以看到,两个项目的配置文件都试图输出到发布目录的根路径(相对路径均为appsettings.json和appsettings.Development.json),因此被判定为冲突。

替代解决方案(无需排除项目文件)

以下是几种不用"排除文件"就能解决问题的方案:

1. 明确指定当前项目要发布的配置文件

在你要发布的项目(如SM.WebUI)的.csproj文件中添加如下配置,明确只包含当前项目目录下的配置文件,排除其他项目的同名文件:

<ItemGroup>
  <!-- 保留当前项目的配置文件,发布时复制到输出目录 -->
  <Content Include="appsettings.json" CopyToPublishDirectory="PreserveNewest" />
  <Content Include="appsettings.Development.json" CopyToPublishDirectory="PreserveNewest" />
  <!-- 排除其他项目的配置文件,避免被纳入发布范围 -->
  <Content Remove="..\SM.Web.Api\appsettings*.json" />
</ItemGroup>

2. 修改冲突处理策略,允许覆盖或忽略重复

在项目的.csproj文件中添加配置,让MSBuild不把重复文件判定为错误:

<PropertyGroup>
  <!-- 关闭重复文件错误,允许自动覆盖(默认保留最后复制的文件) -->
  <ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
  <!-- 可选:将冲突转为警告,既不中断发布,又能提醒存在重复 -->
  <!-- <DuplicatePublishOutputFilesWarning>true</DuplicatePublishOutputFilesWarning> -->
</PropertyGroup>

注意:使用此方案前需确认你不需要保留所有重复文件,避免重要配置被覆盖。

3. 给不同项目的配置文件设置不同输出路径

修改其中一个项目(如SM.Web.Api)的.csproj,让它的配置文件输出到单独的子目录:

<ItemGroup>
  <Content Include="appsettings.json" CopyToPublishDirectory="PreserveNewest" TargetPath="Api\appsettings.json" />
  <Content Include="appsettings.Development.json" CopyToPublishDirectory="PreserveNewest" TargetPath="Api\appsettings.Development.json" />
</ItemGroup>

这样两个项目的配置文件会被放到发布目录的不同子路径下,不会产生冲突。

4. 调整发布配置的项目引用内容设置

如果你的SM.WebUI项目引用了SM.Web.Api项目,可在Visual Studio的发布配置中:

  • 打开发布配置页面,找到文件发布选项
  • 取消勾选包含来自项目引用的内容文件
    这样WebApi项目的配置文件就不会被复制到WebUI的发布目录中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 08:32:19