Visual Studio 2019运行Gulp任务报MSBuild failed with code 1错误如何解决
错误原因
本次报错核心为gulp-msbuild插件调用的MSBuild版本过低,无法识别/restore参数:/restore是MSBuild 15.5版本后新增的参数,VS2017环境下默认调用的MSBuild版本符合要求,VS2019环境下插件未正确识别新版本MSBuild路径,误调用低版本MSBuild执行任务因此触发错误。
排查步骤
- 执行
msbuild /version命令,确认当前命令行默认调用的MSBuild版本号是否≥15.5,VS2019对应的MSBuild版本应为16.x - 查看项目gulp配置文件中
Build-Solution任务的gulp-msbuild参数配置,确认是否指定了错误的MSBuild版本或路径 - 检查系统环境变量PATH中的MSBuild相关路径,确认低版本MSBuild路径是否排在VS2019对应MSBuild路径之前
解决方案
方案1:升级gulp-msbuild插件
旧版本gulp-msbuild对VS2019的MSBuild路径识别存在兼容问题,直接升级到最新稳定版即可修复:npm install gulp-msbuild@latest --save-dev
方案2:手动指定MSBuild版本/路径
如果无法升级依赖,可以在gulp任务配置中显式指定VS2019对应的MSBuild版本或完整路径,示例配置如下:
gulp.task('Build-Solution', function () { return gulp.src('你的解决方案路径.sln') .pipe(msbuild({ toolsVersion: '16.0', // VS2019对应的MSBuild大版本号 // 也可直接指定MSBuild.exe完整路径,按需替换对应VS版本的实际路径 // msbuildPath: 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\MSBuild\\Current\\Bin\\MSBuild.exe', targets: ['Build'], restore: true, stdout: true })) })
方案3:拆分还原与构建步骤
如果以上方案都不适用,可以去掉gulp-msbuild配置中的restore: true参数,改为在执行构建任务前先单独执行nuget restore 你的解决方案路径.sln命令完成NuGet包还原,再执行MSBuild构建,实现和原有逻辑完全一致的效果。
内容的提问来源于stack exchange,提问作者Imad
相关产品推荐
相关产品推荐

