MSBuild 2017无法构建Cordova解决方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MSBuild 2017无法构建Cordova解决方案相关的知识,希望对你有一定的参考价值。

我最近升级了我的Cordova解决方案,以便与Visual Studio 2017一起使用。我能够在Visual Studio Professional 2017 IDE中成功构建android APK。

当我尝试从命令行使用MSBuild 2017构建解决方案时,收到以下错误:

MSBUILD:cordova-build错误BLDErr_Build_ExceptionLookingForNode:无法确定Node.js安装的位置。例外:无法加载文件或程序集'Microsoft.VisualStudio.Setup.Engine,Version = 1.0.0.0,Culture = neutral,Pu blicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。该系统找不到指定的文件。 [C: dev的共同源移动-NGC PhalanxNGC.jsproj]

我在使用Node.js v4.8.4和v6.11.3以及32位和64位版本时尝试过但没有成功。

我也找了Microsoft.VisualStudio.Setup.Engine.dll,我可以在IDE目录中找到它:C:Program Files (x86)Microsoft Visual Studio2017ProfessionalCommon7IDEPrivateAssembliesMicrosoft.VisualStudio.Setup.Engine.dll

我无法在MSBuild目录下找到它。

任何帮助,将不胜感激。谢谢。

编辑:为了澄清,我正在使用的MSBuild是从https://www.visualstudio.com/downloads/下载的“Visual Studio 2017的构建工具”。

它安装在C:Program Files (x86)Microsoft Visual Studio2017BuildToolsMSBuild15.0Bin

我使用的MSBuild命令是:

C: Program Files(x86) Microsoft Visual Studio 2017 BuildTools MSBuild 15.0 Bin MSBUILD.exe / nologo / p:Configuration = Debug / verbosity:diag C: dev Common Source Mobile-NGC NGC.sln

Edit2:在将失败的MSBuild CLI输出与成功的IDE构建输出进行比较后,我可以看到未针对失败的CLI MSBuild记录属性NodeJsDir。

这是成功构建日志的行:NodeJsDir = C:ProgramDataMicrosoftVisualStudioMDA8430d60a aco-toolset-6.3.1

编辑3:看起来失败的构建日志中缺少用于Apache Cordova的工具的其他环境变量。其中包括:NODEJSDIR,NPMINSTALLDIR,LANGNAME,BUILDVERBOSITY,GIT_HOME。

更新:我已将此报告给Microsoft支持,现在将其记录为问题。现在的解决方法是使用命令行中的devenv构建:

C: Program Files(x86) Microsoft Visual Studio 2017 Professional Common7 IDE devenv.com [PathToCordovaSolution]“Debug | Android”

答案

对构建脚本的唯一更改是手动提供MSBuild属性,该属性使用/p:InstanceId=432dc062指示Visual Studio 2017实例

在VS2017更新后,此实例ID将更改,因此您应该在此之后手动更新构建脚本。

您可以通过运行使用vswhere.exe获取当前实例

C:Program Files (x86)Microsoft Visual StudioInstallervswhere.exe

以上是关于MSBuild 2017无法构建Cordova解决方案的主要内容,如果未能解决你的问题,请参考以下文章

适用于VS 2017的Cordova工具 - 不支持的类文件版本52

cordova windows 构建错误(未检测到所选目标的有效 MSBuild) - 检查所有 Cordova 要求

使用 Microsoft Visual Studio 2015 构建 Cordova 时“未检测到所选目标的有效 MSBuild”

无法在构建服务器上修改MSBuild 15.0私有注册表

为啥我无法使用项目解决方案文件在 Msbuild Teamcity 中构建测试项目?

由于包名称不匹配,MSBuild 不构建解决方案文件