MSBuild 2017未能生成Cordova解决方案
我最近升级了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目录中找到它: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.
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