我需要使用C#和XAML开发Metro风格应用程序,它必须在Windows RT设备和完整的Windows 8操作系统上运行。所以我只允许在没有任何.net框架程序集的情况下使用WinRT。我读过这个问题
Microsoft Surface Tablet: Writing Apps for Both Devices?
这个非常有用的帖子:http://blogs.msdn.com/b/jasonz/archive/2012/06/12/what-you-need-to-know-about-developing-for-windows-on-arm-woa.aspx,但我仍然有疑问: 当我甚至创建一个空白的Metro风格应用程序项目时,我有.NET组合地铁风格。我是自己删除它还是做错了什么?如果需要使用像Prism fw移植到WinRT或mvvvm灯的东西,我该怎么办?他们是否允许我仅在原生WinRT上开发WOA应用程序?这些时刻对我来说并不清楚。
您能解释一下我在ARM上使用Windows RT和Windows的区别吗? 我是否只需要使用WinRT(不带.net)来开发WindowsRT操作系统?
希望你能帮助我。
答案 0 :(得分:14)
让我以最直接的方式回答你。如果您打开一个空白XAML / C#Windows应用商店项目。该项目将在Windows RT(ARM)和Windows 8(x86 / x64)上运行。那是因为它是为了实现这一点而建立的。仅仅因为你感觉像是.Net Framework,不要担心 - 你正在编写一个跨平台的应用程序。
现在,请注意。由于C#,你使这个答案很容易。 CPP开发人员没有相同的保证,因为他们可以采取编码方式来破坏这种兼容性。在C#中不是这样。如果您编写的代码编译为“任何CPU”,那么我所说的是正确的。
如果你介绍一些需要你的构建从“任何CPU”改为其他东西的东西(比如Bing Maps控件)。 Windows应用商店允许您以相同的名称提交三个版本的应用程序 - 每个平台一个 - 用户永远不会知道有多个版本。
在最后一个示例中,您仍然支持每个平台,您只需要特定的三个不同的构建来完成它 - 您的代码可能根本不会改变!在大多数情况下,您都可以支持它们。如果你引入第三方库 - 比如MVVMlite - 如果可以构建到任何CPU,你仍然可以。大多数图书馆都很酷。
答案 1 :(得分:3)
说你不能在Metro风格的应用程序中使用.net框架是不正确的。更准确地说,有一个.net框架版本,仅适用于metro应用程序。如果您的程序集不是使用此版本的.net框架构建的,则它们不适用于metro。这个版本的.net框架可以在.86和arm上运行。还有一个适用于metro应用程序的MVVM Light版本。 Download it here.有关开发手臂的详细信息,请参阅here。
无论您使用的是JavaScript,C ++,Visual Basic还是 C#,如果您构建了一个针对x86 / x64的Metro风格应用程序,那么就是您 已经知道如何构建一个针对ARM的。您使用相同的Metro 样式项目模板,它提供了构建的起点 一个应用程序。
编辑: 正如Jerry指出的那样,如果使用C ++编写,你可能必须针对不同版本的库编译你的应用程序,但这需要单独构建而不必进行额外的开发。
答案 2 :(得分:1)
如果您将库设为可移植类库,则可以将它们用于桌面,城域和电话应用程序(以及xbox)。您可以在启动库或项目属性时选择此选项。它使得在mircrosoft生态系统中编写跨平台应用程序变得更加容易。