Сбой заданий gulp msbuild завершается неудачно, но работает в cmd

У меня есть проект, в котором настроен Gulp Runner. Все отлично работает в VS2015, но когда я обновился до VS2017, MSBuild начал давать сбой.

Самое смешное, что если я скопирую командную строку, которая, по-видимому, потерпит неудачу, и вставлю ее в cmd, то она будет работать отлично.

Я получаю следующую ошибку:

[09:47:27] Building project: ..\DFS.Client\DFS.Client.csproj
[09:47:27] Using automatic maxcpucount
[09:47:27] Building project: 1 item
[09:47:27] { Error: Command failed: "C:\Program Files 
(x86)\MSBuild\14.0\Bin\MSBuild.exe" 
"C:\solutions\dfs\code\DFS.Client\DFS.Client.csproj" "/target:Clean;Build" 
/verbosity:minimal /toolsversion:14.0 /nologo /maxcpucount 
/property:Configuration="Debug" /property:DeployOnBuild="true" 
/property:DeployDefaultTarget="WebPublish" 
/property:WebPublishMethod="FileSystem" 
/property:DeleteExistingFiles="false" 
/property:publishUrl="C:\inetpub\wwwroot\dfsdev\Website" 
/property:_FindDependencies="true"
   at ChildProcess.exithandler (child_process.js:204:12)
   at emitTwo (events.js:106:13)
   at ChildProcess.emit (events.js:191:7)
   at maybeClose (internal/child_process.js:891:16)
   at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
killed: false,
code: 1,
signal: null,
cmd: '"C:\\Program Files (x86)\\MSBuild\\14.0\\Bin\\MSBuild.exe" 
"C:\\solutions\\dfs\\code\\DFS.Client\\DFS.Client.csproj" 
"/target:Clean;Build" /verbosity:minimal /toolsversion:14.0 /nologo 
/maxcpucount /property:Configuration="Debug" /property:DeployOnBuild="true" 
/property:DeployDefaultTarget="WebPublish" 
/property:WebPublishMethod="FileSystem" 
/property:DeleteExistingFiles="false" 
/property:publishUrl="C:\\inetpub\\wwwroot\\dfsdev\\Website" 
/property:_FindDependencies="true"' }
[09:47:27] Build failed!

Если я копирую командную строку, которая указана как неудачная, и запускаю ее в CMD, это работает. Я попробовал следующее исправление без какой-либо удачи.

Неудачная задача выглядит так:

var publishProjects = function (location, dest) {
dest = dest || config.websiteRoot;
var targets = ["Build"];
if (config.runCleanBuilds) {
    targets = ["Clean", "Build"];
}
console.log("publish to " + dest + " folder");
return gulp.src([location + "/**/*.csproj"])
  .pipe(foreach(function (stream, file) {
      return stream
        .pipe(debug({ title: "Building project:" }))
        .pipe(msbuild({
            targets: targets,
            configuration: config.buildConfiguration,
            logCommand: false,
            verbosity: "minimal",
            maxcpucount: 0,
            toolsVersion: 14.0,
            properties: {
                DeployOnBuild: "true",
                DeployDefaultTarget: "WebPublish",
                WebPublishMethod: "FileSystem",
                DeleteExistingFiles: "false",
                publishUrl: dest,
                _FindDependencies: "true"
            }
        }));
  }));
};

Буду признателен за помощь, поскольку я действительно хотел бы использовать VS2017, а не 2015.

1 ответ

Версия инструментов 14.0 для VS2015, версия инструментов 15.0 для VS2017. Есть некоторые другие конфигурации, которые вам, возможно, придется изменить, чтобы включить их. Надеюсь, это поможет.

Другие вопросы по тегам