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

dotnet publish/build执行无限循环冻结,Visual Studio可正常运行

问题描述

执行dotnet publish "{projectFilePath}" --configuration Release --output "{outputPath}"或dotnet build时,构建过程中途冻结;添加--verbosity diag参数后,发现build和publish均陷入无限循环且无固定卡点。但Visual Studio IDE可正常编译运行应用,无任何问题或警告。

自上次稳定构建后,代码库有以下关键变更:

  • 曾在Web应用同解决方案中添加NUnit项目,现已卸载、移除并删除,且已清除应用中所有相关引用
  • 更新了多个NuGet包,IDE中运行无影响,但存在多个NU1701警告,示例:

PATH.csproj : warning NU1701: Package 'XAct.IO 1.1.17040.3290' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8, .NETFramework,Version=v4.8.1' instead of the project target framework 'net7.0'. This package may not be fully compatible with your project.

已尝试但未解决问题的方案:

  • 删除bin和obj文件夹,清理并重新构建解决方案
  • 清除NuGet包后重新加载更新
  • 以管理员身份重启Visual Studio
  • 在PowerShell和NuGet包管理器控制台中执行dotnet命令
  • 重启计算机
  • 创建新解决方案并导入Web应用项目
  • 将.csproj中所有NuGet包版本恢复到上次稳定构建版本,清理并重新构建
排查与解决方案

1. 定位NU1701警告包的兼容性问题

NU1701警告的包是针对.NET Framework编译的,在.NET 7环境下可能触发构建死循环:

  • 逐个移除这类.NET Framework兼容包,每次移除后执行dotnet build测试是否仍冻结
  • 确认导致问题的包后,替换为.NET 7兼容的替代包,或查找该包是否有.NET Standard/.NET Core版本

2. 清理项目中残留的NUnit配置

即使删除了NUnit项目,项目文件或解决方案文件可能仍有残留配置:

  • 打开Web项目的.csproj文件,搜索NUnit、Test相关节点(如<PackageReference>、<ItemGroup>中的测试配置),全部删除
  • 打开.sln文件,检查是否存在已移除项目的残留条目,手动清除

3. 调整dotnet CLI构建参数

绕过可能触发循环的构建环节:

  • 执行dotnet build --no-incremental,禁用增量构建,强制完全构建
  • 先执行dotnet restore确保包还原完成,再执行dotnet publish --no-restore跳过还原步骤

4. 分析构建日志的循环节点

多次执行dotnet build --verbosity diag > build.log,对比多份日志:

  • 找到重复出现的最后几条日志,定位反复执行的MSBuild目标(Target)
  • 根据循环的目标,检查.csproj中是否存在自定义MSBuild任务或目标导致死循环

5. 切换.NET SDK版本测试

可能是当前使用的.NET 7 SDK版本存在兼容性bug:

  • 安装另一版本的.NET 7 SDK(如从7.0.100切换到7.0.400)
  • 使用global.json锁定SDK版本,再次执行dotnet build测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 19:38:27