.NET MAUI回滚文件在Azure DevOps Pipeline安装失败:'<'是无效起始值
解决.NET MAUI回滚文件在Azure DevOps Pipeline中安装失败的问题
错误原因分析
报错Workload installation failed: '<' is an invalid start of a value,核心问题是dotnet workload install请求指定的回滚文件URL时,获取到的不是预期的JSON内容,而是HTML(比如404错误页面、权限拦截页面等)——HTML的起始字符为<,直接导致JSON解析失败。
排查与解决方案
1. 验证回滚文件URL的有效性
- 直接在浏览器或通过
curl/wget工具访问https://www.mywebsite.com/Rollback/MauiJson,确认返回内容是纯JSON格式,与你提供的回滚文件完全一致:{ "microsoft.net.sdk.ios": "17.2.8004/8.0.100", "microsoft.net.sdk.maui": "8.0.3/8.0.100" } - 如果返回HTML页面(如404提示、登录拦截页),说明URL错误或文件托管服务存在权限限制,需修正URL或调整文件的公开访问权限,确保Pipeline能直接获取到合法JSON。
2. 检查回滚文件的命名与格式
- 确保回滚文件后缀为
.json(例如命名为MauiRollback.json),部分托管服务会根据文件后缀解析内容,缺失后缀可能导致返回错误的Content-Type,干扰dotnet的解析逻辑。 - 确认JSON格式合法:无多余逗号、引号配对正确(你当前提供的JSON格式是合规的,此步骤主要排查文件上传过程中是否被篡改)。
3. 添加Pipeline前置验证步骤
在安装步骤前新增验证环节,提前确认回滚文件内容,避免安装失败:
- task: CmdLine@2 displayName: 'Validate Rollback File' inputs: script: | curl -o rollback.json https://www.mywebsite.com/Rollback/MauiJson cat rollback.json
运行Pipeline后查看rollback.json的输出内容,确认是正确的JSON后再执行安装步骤。
4. 本地环境测试脚本
在本地执行相同的安装命令,验证是否能正常运行,排除Pipeline环境的特殊限制:
dotnet workload install maui maui-ios --from-rollback-file https://www.mywebsite.com/Rollback/MauiJson --source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet8/nuget/v3/index.json --source https://api.nuget.org/v3/index.json
如果本地也报错,问题出在回滚文件URL或内容上;如果本地正常,则需排查Azure DevOps Pipeline的网络权限(如是否需要代理访问外部URL)。
内容的提问来源于stack exchange,提问作者Dumber_Texan2
相关产品推荐
相关产品推荐

