Windows 8 中的多目标到城域和非城域目标平台

本文关键字:目标 平台 Windows | 更新日期: 2023-09-27 18:31:54

我正在创建一个简单的地铁应用程序。我还在创建同一应用程序的非地铁版本。

我面临的问题是 VS 不允许我将普通类库引用到 metro 应用程序中,将 metro 类库引用到普通应用程序中

。Metro

和非 Metro 应用程序之间的差异与 UI 以及一些不兼容的功能(例如,Metro 中的 FilePicker 和非 Metro 中的 OpenFileDialog)有关。

如何实现这一点?

Windows 8 中的多目标到城域和非城域目标平台

差异比您预期的要大得多。 他们使用 WinRT 作为清理和删除他们出于各种原因不想再维护的 API 的机会。 研究"可移植类库",它将允许您根据您告诉VS目标的平台中可用的API的小交集创建dll。

本质上,正如Robert Levy所提到的,WinRT与Win32库完全分开。

事实上,当Windows 8在ARM设备上使用时,Win32库几乎不存在。Internet Explorer 10 对它们的访问有限(仅由 WinRT 提供支持的 Internet 浏览器是不切实际的),但所有其他 Metro 应用程序则不行。

x86 和 x64 上的 Metro 应用也无法访问 Win32,因为假定同一应用程序需要与 ARM 兼容。为了降低复杂性,Microsoft基本上说所有地铁应用程序只能访问WinRT。Internet Explorer 是该规则的例外。

我想说的是:您必须分别开发这两个应用程序。以桌面为中心的应用程序完全驻留在桌面上。地铁应用程序仅驻留在地铁接口中。

Metro UI 不是问题:查看"引擎盖下",您会发现命名空间和库以及 => METRO 在 Windows 7 应用程序之上的另一层不同。如果您确实想针对 2 个环境,请创建一个包含所有业务对象、所有数据库访问权限的类库,并编写两个不同的应用程序,称为此 Library。