YAML流水线执行Batch脚本报错:容器执行流不支持旧版处理器
解决容器化流水线中BatchScript@1任务的Legacy Handler错误
问题原因
BatchScript@1属于旧版任务,在容器执行流程中不支持其遗留的Microsoft.VisualStudio.Services.Agent.Worker.ProcessHandlerData执行处理器。同时你的YAML配置存在多余的转义引号,会导致路径解析异常。
修复方案
替换BatchScript@1为适配容器环境的CmdLine@2任务,同时修正路径引用方式:
variables: devCmd: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\devenv.com' disableToolPath: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\VSI\DisableOutOfProcBuild' - task: CmdLine@2 displayName: Enable .vdproj Builds inputs: script: '"$(disableToolPath)\DisableOutOfProcBuild.exe"' workingDirectory: '$(disableToolPath)'
关键修改点
- 替换任务类型:用现代的CmdLine@2替代旧版BatchScript@1,CmdLine任务原生支持容器执行流程,无遗留处理器兼容问题。
- 清理转义符:原配置中的
"是HTML转义引号,YAML中直接用双引号包裹带空格的路径即可,无需额外转义。 - 修正参数名称:CmdLine任务的工作目录参数为
workingDirectory,而非BatchScript任务的workingFolder。
额外注意
若流水线运行在Windows容器中,需确保容器镜像已正确安装Visual Studio 2022 Enterprise及对应的Installer Projects扩展,否则disableToolPath指向的文件会不存在。
内容的提问来源于stack exchange,提问作者Ashutosh Kumar
相关产品推荐
相关产品推荐

