[英]Project successfully built with “Visual Studio 2019 -> Build” but failed with “MSBuild”
[英]Gulp task failed with error: MSBuild failed with code 1! in Visual Studio 2019
我知道关于 SO 的问题很少,但它们要么没有答案,要么解决方案对我没有帮助。
此 gulp 任务在其他机器上使用Visual Studio 2017
成功执行,但不能在Visual Studio 2019
。
当我运行“Build-Solution”任务时,它失败并显示以下错误
[11:33:58] 开始“构建解决方案”……
MSBUILD : 错误 MSB1001:
未知开关。 开关:/restore 对于开关语法,键入“MSBuild
/help" [11:33:59] MSBuild 失败,代码为 1![11:33:59]
“构建解决方案”在 1.04 秒后出错 [11:33:59] 错误:MSBuild 失败,代码为 1!
at ChildProcess.<anonymous> (C:\\Projects\\MyProj\\node_modules\\gulp-msbuild\\lib\\msbuild-runner.js:66:25) at ChildProcess.emit (events.js:314:20) at ChildProcess.EventEmitter.emit (domain.js:506:15) at Process.ChildProcess._handle.onexit (internal/child_process.js:276:12) at Process.callbackTrampoline (internal/async_hooks.js:126:14) Process terminated with code 1.
因此,这取决于您使用的构建脚本。 与 Sitecore Habitat 一起使用的默认 gulp 脚本正在使用此 gulp 模块: https : //www.npmjs.com/package/gulp-msbuild
而且,您正在使用此模块来构建这样的任务
gulp.task("default", function() {
return gulp.src("./project.sln")
.pipe(msbuild({
targets: ['Clean', 'Build'],
toolsVersion: 3.5
})
);
});
如果您正在使用这个,我猜您正在尝试在您的任务中使用 msbuild 开关,例如:
gulp.task("default", function() {
return gulp.src("./project.sln")
.pipe(msbuild({
...,
restore:true
...
})
);
});
因为是的,Msbuild 提供了这样的开关,你可以在这里找到,但是如果我没有错的话,gulp -msbuild插件默认尝试使用 vs2017。 从msbuild-finder.js你可以看到它正在 vs2017 目录中寻找 msbuild 工具:
function detectMsBuild15Dir(pathRoot) {
const vs2017Path = path.join(pathRoot, "Microsoft Visual Studio", "2017");
const possibleFolders = [ "BuildTools", "Enterprise", "Professional", "Community" ];
for (let index = 0; index < possibleFolders.length; index++) {
try {
const folderPath = path.join(vs2017Path, possibleFolders[index]);
fs.statSync(folderPath);
return folderPath;
} catch (e) {
}
}
}
但是,如果您指定版本路径,则应该很好(来自msbuild-command-builder.js ):
if (!options.msbuildPath) {
const msbuildFinder = require("./msbuild-finder");
options.msbuildPath = msbuildFinder.find(options);
}
安装 Visual Studio 2019 后,我相信您应该使用 buildToolsVersion 15.0。 看到这个线程;
另一方面,您可能希望改用msbuild 插件。 我还有一篇文章介绍了从 gulp3.9 到 gulp4 的切换,其中包含一些 msbuild 示例。 你可能会发现它相关
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.