在过去的两个小时里,我一直在努力解决这个问题。我有一个简单的Ionic / Cordova应用程序,我在Android和iOS上工作。我添加了一个Windows平台并尝试构建并收到以下错误:
无法找到SDK" Microsoft.WinJS.2.0"
我正在使用Visual Studio 2015,并不是非常熟悉,但我尝试添加引用,但它不起作用。我尝试用npm安装WinJS并且没有用。我不知道该怎么做。有什么想法吗?
答案 0 :(得分:5)
我在我正在处理的应用上遇到了同样的问题。我正在使用Windows 10和Visual Studio 2015.我的应用程序在iOS / Android上运行良好。将Windows添加为平台时,我尝试了:
cordova platform add windows
cordova build windows
build
步骤失败,错误与上述相同:
error MSB3774: Could not find SDK "Microsoft.WinJS.2.0, Version=1.0".
在Visual Studio中,我打开了解决方案文件,发现有3个JS项目:一个用于Windows 8.1,Windows Phone 8.1和Windows 10.0 Universal。即使在我尝试安装8.1 SDK之后,Visual Studio也无法运行任何8.1项目。但是,运行Windows 10 Universal项目没有任何问题,该项目打包了自己的WinJS版本,而不依赖于SDK。
您可以通过将以下行添加到config.xml
<preference name="windows-target-version" value="10.0" />
当您通过Cordova运行时,它将在您的PC上本地安装应用程序,可以像市场上的任何应用程序一样执行。
答案 1 :(得分:5)
缺少Windows(Phone)8.1 SDK的HTML / JS-Apps部分。如this answer中所述,您可以按如下方式安装它:
答案 2 :(得分:0)
您正在尝试构建哪种类型的Windows项目? Windows Phone,Universal App,......?
您可以在 1317 行检查cordova.js脚本 - 有一个逻辑可以根据 navigator.appVersion 标识要加载的WinJS脚本。在那里设置一个断点并穿过它..
我需要更改appVersion才能加载正确的脚本。
//Cordova code, line [1317]:
if (!window.WinJS) {
var scriptElem = document.createElement("script");
if (navigator.appVersion.indexOf('MSAppHost/3.0') !== -1) {
// Windows 10 UWP
scriptElem.src = '/WinJS/js/base.js';
} else if (navigator.appVersion.indexOf("Windows Phone 8.1;") !== -1) {
// windows phone 8.1 + Mobile IE 11
scriptElem.src = "//Microsoft.Phone.WinJS.2.1/js/base.js";
} else if (navigator.appVersion.indexOf("MSAppHost/2.0;") !== -1) {
// windows 8.1 + IE 11
scriptElem.src = "//Microsoft.WinJS.2.0/js/base.js";
} else {
// windows 8.0 + IE 10
scriptElem.src = "//Microsoft.WinJS.1.0/js/base.js";
}
scriptElem.addEventListener("load", onWinJSReady);
document.head.appendChild(scriptElem);
}
else {
onWinJSReady();
}
答案 3 :(得分:0)
我的应用也会出现同样的错误
C:\Program Files\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(2049,5):error MSB3774: Could not find SDK "Microsoft.WinJS.2.0, Version=1.0 [E:\winTest\myApp\platforms\windows\CordovaApp.Windows.jsproj]
如果我尝试<preference name="windows-target-version" value="10.0" />
,那么它会成功构建,但该应用无法在设备中安装。
如果我没有在config.xml中放置该行,那么它会抛出上面给出的错误。