Gulp任务失败,错误为:在Visual Studio 2019中,MSBuild失败,代码为1!

2ekbmq32  于 2022-12-08  发布在  Gulp
关注(0)|答案(1)|浏览(205)

我知道有一些关于SO的问题,但他们要么没有答案,要么解决方案对我没有帮助。
此gulp任务在具有Visual Studio 2017的其他计算机上成功执行,但在Visual Studio 2019上未成功执行。
当我运行“Build-Solution”任务时,它失败并显示以下错误
[11:33:58]正在启动“构建解决方案...”
MSBUILD:错误MSB 1001:
未知开关。开关:/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.
zbdgwd5y

zbdgwd5y1#

因此,这取决于您使用的构建脚本。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提供这样的开关,你可以找到here,但gulp-msbuild插件试图使用vs 2017默认如果我没有错.从msbuild-finder.js你可以看到,它正在寻找msbuild工具在vs 2017目录:

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。请参阅this thread;
另一方面,您可能希望使用msbuild plugin来代替。我还有an article,它涵盖了从gulp3.9到gulp 4的切换,其中包含一些msbuild示例。您可能会发现它与此相关

相关问题