Azure DevOps CI部署失败:找不到System.Text.Json 8.0.0.4版本
修复Azure DevOps部署.NET6 WebApp时的NETSDK1060错误
问题拆解
部署报错核心是DevOps用.NET9 SDK构建.NET6项目时,依赖解析出现异常:找不到System.Text.Json 8.0.0.4,但本地project.assets.json中并无该版本依赖。旧预演槽部署失败是因为槽内残留了损坏的缓存文件,新槽位环境干净所以能正常部署。
具体修复步骤
1. 强制Pipeline使用.NET6 SDK构建
避免DevOps自动选用高版本SDK(如.NET9)构建.NET6项目,直接在Pipeline YAML中添加配置:
steps: - task: UseDotNet@2 inputs: packageType: 'sdk' version: '6.x' installationPath: $(Agent.ToolsDirectory)/dotnet
2. 清理构建环节的缓存
每次构建前清除旧的构建产物和缓存,避免残留依赖干扰:
- script: | dotnet clean rm -rf $(Build.SourcesDirectory)/obj rm -rf $(Build.SourcesDirectory)/bin displayName: 'Clean build artifacts'
3. 清空旧预演槽的残留文件
旧槽位的C:\home\site\repository\obj和wwwroot目录存在损坏文件,必须清理:
- 登录Azure Portal,进入该预演槽的高级工具(Kudu),打开CMD终端,删除这两个目录下的所有文件
- 或通过Azure CLI命令清理(需提前配置资源权限):
az webapp deployment source delete --name <你的WebApp名称> --resource-group <资源组名称> --slot <预演槽位名称>
4. 显式锁定System.Text.Json版本
尽管未直接引用该包,但Azure相关NuGet包可能拉取了不兼容的高版本,在项目.csproj文件中添加显式引用,锁定兼容.NET6的版本:
<ItemGroup> <PackageReference Include="System.Text.Json" Version="6.0.7" /> </ItemGroup>
5. 本地重新生成依赖文件后推送
本地执行以下命令,确保依赖文件基于.NET6环境生成,再推送到DevOps仓库:
dotnet restore --force dotnet build
验证
修改完成后手动触发Pipeline部署到旧预演槽位,检查部署日志是否无NETSDK1060错误,确认WebApp能正常启动。
内容的提问来源于stack exchange,提问作者Mike Smith
相关产品推荐
相关产品推荐

