onm*_*133 4 windows-8 windows-runtime windows-phone-8 windows-rt
AFAIK,只有Metro风格的应用程序可以在Windows 8 ARM上运行,而Metro风格的应用程序只能使用WinRT API编写.
根据这个线程,我们可以从桌面应用程序和Windows Phone 8应用程序访问Windows 8 WinRT API吗?如果是这样,它们是否在不同的命名空间中?
Windows Phone 8也使用ARM体系结构.因此,如果我们的应用程序是使用WinRT API编写的,它可以在Windows 8 x86,Windows 8 for ARM和WP8上运行,对吧?
不完全是.WinRT和Windows Phone Runtime的情况类似于WPF/Silverlight.有重叠,但不是100%覆盖.为解决此问题,Microsoft鼓励使用可移植类库来定位多个平台(因为每个平台都有自己的运行时).有关PCL的更多信息:http://msdn.microsoft.com/en-us/library/gg597391.aspx
此外,即使您设法让大多数类在可移植类库下工作,您仍然必须为每个平台编写单独的用户界面(PCL不支持共享UI).虽然这看起来很令人沮丧,但它实际上比你想象的更为必要.以下是Microsoft在共享XAML UI方面建议的链接.
这不应被视为Windows Phone 8和Windows 8之间共享的完整障碍.明确的指导是为每个平台单独设计和构建UI,并遵循每个平台的设计准则.从技术上讲,可以绕过这些障碍.您可以在代码期间在页面初始化期间创建UI.您可以在运行时从资源加载特定于平台的XAML,并将其作为字符串注入页面.但是,这些技术都没有扩展,它们构建了您的核心资产 - 您的应用程序对用户的看法 - 这是一项繁琐且容易出错的任务.通过尝试共享应用程序逻辑,数据模型,视图模型等,您的代码共享投资将为您的应用程序堆栈提供更大的回报.
基本上,微软正在设计专门针对平台的用户界面,因为在手机上运行的应用程序(小屏幕)应该具有与在平板电脑/台式机(大屏幕)上运行的应用程序不同的用户界面.
至于在不同平台上运行WinRT应用程序......是的,你可以.微软已声明用WinRT编写的应用程序可以在Windows 8和WOA(Windows on ARM)上运行.这是微软谈论这个的链接.但是,我的答案的第一部分仍然存在......如果你想针对不同的运行时(WinRT/Windows Phone Runtime)......那么使用Portable Class Libraries.选择"Windows Store"和"Windows Phone 8"将允许您的代码在Windows 8 x86/x64/ARM和Windows Phone 8上运行.