【问题标题】:Cordova Build Windows Error - Missing Microsoft.WinJS.2.0Cordova 构建 Windows 错误 - 缺少 Microsoft.WinJS.2.0
【发布时间】:2015-10-09 02:06:18
【问题描述】:

在过去的 2 个小时里,我一直在为此苦苦挣扎。我有一个简单的 Ionic/Cordova 应用程序,我在 Android 和 iOS 上工作。我添加了一个windows平台并尝试构建并得到以下错误:

找不到 SDK“Microsoft.WinJS.2.0”

我使用的是 Visual Studio 2015,不是很熟悉,但我尝试添加参考,但没有成功。我尝试使用 npm 安装 WinJS,但没有成功。我不知道该怎么做。有什么想法吗?

【问题讨论】:

  • 还有其他标签你可以考虑:windows-phone-7 & windows-phone-8

标签: windows visual-studio cordova ionic


【解决方案1】:

我在正在开发的应用程序上遇到了同样的问题。我正在使用 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 通用项目没有问题,该项目打包了自己的 WinJS 版本,不依赖于 SDK。

您可以通过将以下行添加到 config.xml 来将 Cordova 更改为面向 Windows 10

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

当您通过 Cordova 运行时,它会在您的 PC 上本地安装应用程序,该应用程序可以像市场上的任何应用程序一样执行。

【讨论】:

    【解决方案2】:

    缺少 Windows (Phone) 8.1 SDK 的 HTML/JS-Apps 部分。如this answer中所述,可以如下安装:

    • 在 Visual Studio 中,单击“文件”->“新建项目”
    • 选择“Windows 8”
    • 双击“安装 Windows 8.1 和 Windows Phone 8.0/8.1 工具”

    【讨论】:

      【解决方案3】:

      您要构建什么类型的 Windows 项目? Windows Phone、通用应用、...?

      您可以在 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();
      } 
      

      【讨论】:

        【解决方案4】:

        我的应用也抛出同样的错误

        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]
        

        如果我尝试&lt;preference name="windows-target-version" value="10.0" /&gt;,那么它构建成功,但应用程序无法安装在设备中。

        如果我没有将该行放在 config.xml 中,那么它会抛出上面给出的错误。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-07-25
          • 1970-01-01
          • 2017-08-19
          • 2011-05-22
          • 2018-09-03
          • 2015-11-14
          • 2023-03-19
          • 2012-01-31
          相关资源
          最近更新 更多