配置.NET5 Specflow NUnit项目Azure Pipelines时出现NETSDK1005错误
.NET5 Specflow NUnit项目Azure Pipeline构建报错
我在为.NET5 Specflow NUnit项目配置Azure Pipeline时遇到了问题,构建过程报错如下:
##[error]C:\Program Files\dotnet\sdk\5.0.202\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(241,5):错误 NETSDK1005:资产文件"D:\a\1\s\obj\project.assets.json"未包含针对"net5.0"的目标,请确保已运行包还原操作,且项目的TargetFrameworks配置中已包含"net5.0"。
我已经检查过项目文件,其中确实包含对net5.0的引用。
常见解决方案
该错误核心是包还原生成的project.assets.json与构建环境、构建步骤不匹配,在已确认项目TargetFramework配置正确的前提下,可按以下顺序排查处理:
- 确认Pipeline执行环境已安装匹配的.NET 5 SDK
可在Pipeline最开头添加命令行任务执行dotnet --list-sdks,验证Agent镜像内是否存在5.0.x版本的SDK,避免使用未预装.NET 5的旧版Agent镜像。 - 调整任务执行顺序,先执行显式包还原,再执行构建/测试
不要直接运行dotnet build/测试任务,需先添加独立的还原步骤:- 可使用内置的
.NET Core Restore任务,指定版本为5.0.x - 也可直接执行命令
dotnet restore $(构建文件路径)完成还原
- 可使用内置的
- 清理工作区残留的旧构建文件
启用Pipeline的工作区清理选项,或在构建前添加命令删除旧的obj/bin目录:- Windows Agent执行:
Remove-Item -Recurse -Force **/obj, **/bin - Linux/macOS Agent执行:
rm -rf ./**/obj ./**/bin
- Windows Agent执行:
- 检查NuGet缓存配置
若使用了Cache@2缓存任务加速构建,需将.NET SDK版本、项目TargetFramework版本加入缓存键,避免旧缓存中残留的project.assets.json被复用。 - 校验csproj配置细节
确认单目标项目使用的是<TargetFramework>net5.0</TargetFramework>节点,多目标项目使用的是<TargetFrameworks>net5.0</TargetFrameworks>节点,无拼写、大小写错误。
内容的提问来源于stack exchange,提问作者NC17
相关产品推荐
相关产品推荐

