簡體   English   中英

Cordova構建Windows錯誤 - 缺少Microsoft.WinJS.2.0

[英]Cordova Build Windows Error - Missing Microsoft.WinJS.2.0

在過去的兩個小時里,我一直在努力解決這個問題。 我有一個簡單的Ionic / Cordova應用程序,我在Android和iOS上工作。 我添加了一個Windows平台,並嘗試構建並獲得以下錯誤:

找不到SDK“Microsoft.WinJS.2.0”

我正在使用Visual Studio 2015,並不是非常熟悉,但我嘗試添加引用,但它不起作用。 我嘗試用npm安裝WinJS,但是沒有用。 我不知道該怎么做。 有任何想法嗎?

我在一個正在處理的應用程序上遇到了同樣的問題。 我正在使用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來將Cordova更改為目標Windows 10

<preference name="windows-target-version" value="10.0" />

當您通過Cordova運行時,它將在您的PC上本地安裝應用程序,可以像市場上的任何應用程序一樣執行。

缺少Windows(Phone)8.1 SDK的HTML / JS-Apps部分。 本回答所述 ,您可以按如下方式安裝:

  • 在Visual Studio中,單擊“文件” - >“新建項目”
  • 選擇“Windows 8”
  • 雙擊“安裝Windows 8.1和Windows Phone 8.0 / 8.1工具”

您正在嘗試構建哪種類型的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();
} 

我的應用程序也拋出相同的錯誤

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中放置該行,那么它會拋出上面給出的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM