如何在 Win 8.1 模拟器上测试我的 UWP 应用程序(在 VStudio 2015 和 Win10 中创建)?

How can I test my UWP app (created in VStudio 2015 & Win10) on a Win 8.1 emulator?

我不知道如何从 Visual Studio 2015 获得 Win8.1 模拟器 运行ning。

我是运行宁Win10周年纪念版。 我也在 运行宁 Visual Studio 社区 2015 与所有服务包。

在 Visual Studio 的顶部,我看到以下内容:

是的,我看到了[下载新的模拟器...]选项,但它不是很有用,因为它会将您带到包含大量选项的网页,而且它们的描述性不强。 当您单击它时,它会带您到: https://developer.microsoft.com/en-us/windows/downloads/sdk-archive

有谁知道我应该选择哪个选项来获得 Win 8.1 模拟器?

我猜是这个,但从解释来看它是一个旧版本(下载量为 881MB):

另外,这里是应该安装的项目。我根本没有看到提到的模拟器......

任何其他方式

有没有其他方法可以确定我的 UWP 在 Win8.1 上是否 运行 正确?

编辑

部署 Win 10 有很多问题?赢得 8.1 应用程序。很多的。 这就是为什么 troll 不加评论就否决了这个问题吗?非常无益,巨魔。

我在 2013 年将我的应用程序编写为(无论微软如何称呼它)UWA? 专门针对 Win8.x。然后,我阅读了 UWP 文档并确定我应该作为 UWP 编写(UNIVERSAL,微软,我认为你不明白那个词的意思)。

Visual Studio 2013 Win8.x 版本不喜欢在 Visual Studio 2015 中正确构建和 运行。

喜欢确认 Win8.x 用户也可以 运行 我的应用程序

没错,微软,还有人运行宁Win8.x。 我还在 Visual Studio 2015 年将应用程序构建为 UWP,但我希望我的应用程序也可以 运行 供 Win8.x 用户使用。你看,我实际上是在尝试让我的应用程序通用。

Visual Studio 2015构建Win8.1应用程序

我听从了回答这个问题的人的建议,开始构建Win8.1版本。我可以使用 Studio 2013 和 2015。我可以在 win10 上构建和 运行 win8.1 版本,所以我试图在 Win8.1 设备上 运行 它 - 任何东西! 我尝试这样做,但 Visual Studio 2015 告诉我需要下载一个 SDK。 好的,Visual Studio,我会的。

然后当安装完成并重新启动时,我尝试在 8.1 模拟器上 运行 它。不。在微软有限的智慧中,他们最终 运行 在 Win10 模拟器上运行它。

Win 8.1 模拟器?心理!

当我选择以下 - 清楚地显示 Win8.1 - 然后它 运行s 在 Win10 模拟器上。

哦,好吧,也许我选错了...尽管它说的是 Win8.1。 让我们选择一个特定的 8.1 phone 模拟器,好吗?

当您尝试使用该选项在 Visual Studio 2015 中构建时,您会收到以下错误:

是的,没错,微软。我没有 Win 8 x64 Professional。那是因为你强迫我升级到Windows周年纪念版来做Win10开发,当我试图把这个应用程序写成UWP时。

支持两个不同版本的应用程序

Microsoft 非常分散,没有任何工作。我会解决这个问题并创建我的解决方法,这可能意味着支持两个不同版本的应用程序。那也行。但是,Microsoft(和其他无名巨魔(也许是 MSMVP?)不要表现得好像这个问题有一个明显的答案。

祝所有落入这个陷阱的人好运。

编辑 2 关于提到的事情的另一件事:

It makes sense, that new API is not compatible with older OS, it is done this way everywhere.

这确实有道理。我也是 Android 开发人员和 iOS 开发人员,所以我使用 Android Studio 和 XCode 开发应用程序并针对各种硬件,所以我想发表评论那。 事实上,这是真的。例如,您可以使用可能不再受支持的旧 API 或以前版本 Android 上不可用的新 API。

要点

但是,关键是 Android 允许您:

  1. 很容易知道何时会出现这种情况

  2. 在各种硬件模拟器上轻松测试,你就会知道

  3. 有更好、更全面的文档。

真的,XCode也一样。 很明显,微软在不知道他们的目标是什么的情况下就投入了这个想法。赶快上市。

您无法在 Windows 8.1 模拟器或 Windows Phone 8.1 模拟器上测试 UWP 应用程序,因为 UWP 应用程序不向后兼容 Windows 8.1。

UWP 应用程序 运行 仅限 Windows 10,因此您只能支持升级到此版本 OS 的设备。

要同时针对 Windows 10 和 Windows 8.1,您需要构建一个 Windows 8.1 应用程序而不是 UWP 应用程序。当您的项目是 Windows Phone 8.1 应用程序时,Windows Phone 8.1 模拟器将在“调试”菜单中可用。

UWP 应用程序是通用的

通用 Windows API 在到达这个真正通用的点之前,随着时间的推移经历了许多变化。

有一个非常有用的时间表,有助于理解这一点:

如您所见,融合需要进行大量的底层更改,才能将之前所有独立的操作系统整合到一个统一的 Windows 核心和统一编程模型中。

Windows 8.1 运行时 API 和 UWP API 之间的变化并不大,但关键是,它需要一个突破性的变化才能过渡到最终版本目的地是 Windows 10.

Windows 10 是 Windows 的最后一个版本。这意味着,您今天构建的应用程序 肯定会通用并在未来得到支持 。新模型不仅可以针对多种不同的设备外形(借助自适应设计),还可以针对一系列不同版本的 OS.

使用version adaptive code的概念,您可以使用简单的if语句来查看特定功能或API之前是否可用使用它:

// Check for presence of type MediaPlayerElement.
if (ApiInformation.IsTypePresent("Windows.UI.Xaml.Controls.MediaPlayerElement"))
{
    mediaControl = new MediaPlayerUserControl();
}
else
{
    mediaControl = new MediaElementUserControl();
}

这样做的最大优点是您可以始终以最新的 API 为目标,但在 一个代码库 中保持对旧版本的支持,而无需任何“黑客攻击”必需的。您可以针对 特定版本的 OS、特定设备、特定输入 微调您的代码。

我实际上认为自适应代码的 Windows 10 实施比 with Android now. It is all improved by the integration of Roslyn into Visual Studio, which allows custom analyzers such as PlatformSpecific.Analyzer 更好,后者能够让您知道何时使用不受支持的 APIs甚至能够 使用条件自适应代码 if 语句 .

修复您的代码

一路走来一路坎坷,但从现在开始,对我们开发者来说一切都会好很多。