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

dotnet publish降级NuGet包后,publish文件夹未更新至旧版本的问题

ASP.NET Core 6.0回退NuGet包后Publish文件夹未更新的解决办法

问题原因

升级NuGet包发布时,publish和release文件夹都会正常替换为新版本DLL;但降级包重新发布后,release文件夹能回退到旧版本,publish文件夹却残留新版本文件——这是因为dotnet publish默认采用增量发布策略,仅更新识别为变化的文件,而降级包时部分文件的哈希值未被正确判定为变更,导致旧版本文件无法覆盖新版本。

解决步骤

1. 发布时强制清理目标目录

发布命令添加参数,强制清空publish目录后再部署:

  • CLI命令执行:
    dotnet publish -c Release --no-incremental /p:DeleteExistingFiles=true
    
    --no-incremental禁用增量编译,/p:DeleteExistingFiles=true会在发布前删除目标目录所有旧文件。
  • Visual Studio配置:
    右键项目 → 属性 → 发布 → 点击目标位置旁的「编辑」 → 勾选「在发布前删除所有现有文件」,保存后重新发布即可。

2. 手动清理缓存与输出目录

增量编译的缓存可能干扰发布结果,手动删除以下目录后重新发布:

  • 项目根目录下的bin和obj文件夹
  • 发布目标的publish文件夹

3. 检查项目文件的发布配置

打开项目的.csproj文件,确认是否存在自定义配置导致文件未被覆盖,添加或修改以下配置项:

<PropertyGroup>
  <DeleteExistingFiles>true</DeleteExistingFiles>
  <PreserveExistingFiles>false</PreserveExistingFiles>
</PropertyGroup>

4. 确保NuGet包正确还原

降级包后先执行还原命令,保证本地依赖已更新:

dotnet restore

再执行构建和发布:

dotnet build -c Release --no-incremental
dotnet publish -c Release --no-incremental /p:DeleteExistingFiles=true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:35:35