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

Bamboo构建.NET Framework4.6.1项目遇错:包缺失且调用.NET SDK5

问题分析:MSBuild 2019构建.NET Framework4.6.1项目时调用.NET SDK 5并报NETSDK1064错误

为什么构建会调用.NET SDK 5?

  • MSBuild 2019默认优先使用环境变量中配置的.NET SDK版本,若系统已安装.NET 5 SDK且设为默认版本,就会被调用处理项目——哪怕项目目标框架是.NET Framework。
  • 若你的Host.csproj采用了新的SDK格式(开头为<Project Sdk="Microsoft.NET.Sdk">),即便目标框架是.NET Framework,也会触发.NET Core/.NET SDK参与依赖解析等构建环节。

NETSDK1064错误的原因

  • 还原方式不匹配:手动执行的nuget restore和.NET SDK 5依赖的dotnet restore逻辑存在差异,SDK无法识别旧方式生成的依赖信息,导致找不到指定包。
  • 路径长度超限:Bamboo工作目录路径过长(C:\Atlassian\Bamboo-home\local-working-dir\216039426\ACLTI-ALBB-JOB1\),超出Windows默认路径长度限制,导致还原的包文件未正确写入或MSBuild无法读取。
  • 依赖信息缺失:手动还原未生成.NET SDK所需的obj/project.assets.json文件,MSBuild使用SDK 5时依赖该文件解析包,因此报错包未找到。

解决建议

  • 指定MSBuild工具链:在Bamboo构建命令中使用MSBuild 2019的完整路径,而非依赖环境变量中的dotnet msbuild,例如:
    "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe" Host.csproj /t:Build /p:TargetFramework=net461
    
  • 统一还原与构建步骤:放弃手动nuget restore,改用MSBuild自带的还原参数,确保还原和构建使用同一工具链:
    msbuild Host.csproj /t:Restore,Build /p:TargetFramework=net461
    
  • 缩短工作目录路径:修改Bamboo的工作目录配置,减少路径层级,避免触发Windows路径长度限制。
  • 显式指定SDK版本:若项目为SDK格式,在项目根目录添加global.json文件,指定兼容.NET Framework的SDK版本(如3.1 LTS):
    {
      "sdk": {
        "version": "3.1.426"
      }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 06:33:28