Windows 8 中的多目标到城域和非城域目标平台
本文关键字:目标 平台 Windows | 更新日期: 2023-09-27 18:31:54
我正在创建一个简单的地铁应用程序。我还在创建同一应用程序的非地铁版本。
我面临的问题是 VS 不允许我将普通类库引用到 metro 应用程序中,将 metro 类库引用到普通应用程序中
。Metro和非 Metro 应用程序之间的差异与 UI 以及一些不兼容的功能(例如,Metro 中的 FilePicker 和非 Metro 中的 OpenFileDialog)有关。
如何实现这一点?
差异比您预期的要大得多。 他们使用 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。