MSBuild 2017未能生成Cordova解决方案

MSBuild 2017未能生成Cordova解决方案,cordova,msbuild,visual-studio-2017,msbuild-15,Cordova,Msbuild,Visual Studio 2017,Msbuild 15,我最近升级了Cordova解决方案,以便与Visual Studio 2017合作。我能够从Visual Studio Professional 2017 IDE中成功构建Android APK 尝试从命令行使用MSBuild 2017构建解决方案时,收到以下错误: MSBUILD:cordova生成错误BLDErr_build_ExceptionLookingForNode:无法确定Node.js安装的位置。异常:无法加载文件或程序集“Microsoft.VisualStudio.Setup.

我最近升级了Cordova解决方案,以便与Visual Studio 2017合作。我能够从Visual Studio Professional 2017 IDE中成功构建Android APK

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

MSBUILD:cordova生成错误BLDErr_build_ExceptionLookingForNode:无法确定Node.js安装的位置。异常:无法加载文件或程序集“Microsoft.VisualStudio.Setup.Engine,Version=1.0.0,Culture=neutral,Pu-blicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。系统找不到指定的文件。[C:\dev\Common\Source\Mobile NGC\PhalanxNGC.jsproj]

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

我还查找了Microsoft.VisualStudio.Setup.Engine.dll,我可以在IDE目录中找到它:
C:\ProgramFiles(x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\PrivateSassemblies\Microsoft.VisualStudio.Setup.Engine.dll

我在MSBuild目录下找不到它

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

编辑:为了澄清,我使用的MSBuild是从下载的“Visual Studio 2017构建工具”

它安装在
C:\ProgramFiles(x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin

我正在使用的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:\ProgramData\Microsoft\VisualStudio\MDA\8430d60a\taco-toolset-6.3.1

Edit3: 失败的构建日志中似乎缺少Apache Cordova工具的其他环境变量。其中包括:NODEJSDIR、NPMINSTALLDIR、LANGNAME、BUILDVERBOSITY、GIT_HOME

更新: 我已向Microsoft支持部门报告了此问题,现在已将其记录为问题。目前的解决方法是从命令行使用devenv进行构建:

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


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

此实例id将在VS2017更新后更改,因此在此之后您应该手动更新生成脚本

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

C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe

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

此实例id将在VS2017更新后更改,因此在此之后您应该手动更新生成脚本

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

C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe

对我起作用的是 转到工具->扩展和更新 查找“适用于Apache cordova的visual studio工具” 重新安装或启用它。
重新启动VisualStudio。你又回到了正轨

对我有效的事情是 转到工具->扩展和更新 查找“适用于Apache cordova的visual studio工具” 重新安装或启用它。
重新启动VisualStudio。你又回到了正轨

你说的“MSBuild 2017”是什么意思?是开发人员命令提示VS 2017工具还是从C:\Program Files(x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin调用MSBuild.exe?你介意和我分享你的构建命令吗?您可以尝试创建一个新的空白cordova项目,将脚本复制到新项目,然后检查它是否工作正常。它是以下位置的MSBuild:C:\Program Files(x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin我从“Visual Studio 2017的生成工具”下载的MSBuild谢谢您的答复。由于您已在计算机上安装Visual Studio Professional 2017,请尝试从以下位置使用MSBuild:C:\Program Files(x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin。检查它是否工作正常。如果没有,请在这里分享构建日志。谢谢。在从命令行使用Visual Studio Professional 2017的MSBuild时,我仍然遇到相同的问题。我已将输出日志保存到此处:我注意到日志显示它仍在使用其他MSBuild.exe:MSBUILDDIR=C:\Program Files(x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin MSBUILDEXE=C:\Program Files(x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe“MSBuild 2017”是什么意思?是开发人员命令提示VS 2017工具还是从C:\Program Files(x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin调用MSBuild.exe?你介意和我分享你的构建命令吗?您可以尝试创建一个新的空白cordova项目,将脚本复制到新项目,然后检查它是否工作正常。它是以下位置的MSBuild:C:\Program Files(x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin我从“Visual Studio 2017的生成工具”下载的MSBuild谢谢您的答复。由于您已在计算机上安装Visual Studio Professional 2017,请尝试从以下位置使用MSBuild:C:\Program Files(x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin。检查它是否工作正常。如果没有,请在这里分享构建日志。谢谢。在从命令行使用Visual Studio Professional 2017的MSBuild时,我仍然遇到相同的问题。我已将输出日志保存到此处:我注意到日志显示它仍在使用另一个MSBuild.exe:MSBUILDDIR=C:\P