Windows RT和c#

我需要使用C#和XAML开发Metro风格应用程序,它必须在Windows RT设备和完整的Windows 8操作系统上运行。 所以我只允许在没有任何.net框架程序集的情况下使用WinRT。 我读过这个问题

Microsoft Surface Tablet:为两种设备编写应用程序?

这个非常有用的post: 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操作系统?

希望您能够帮助我。

让我以最直接的方式回答你。 如果您打开一个空白XAML / C#Windowsapp store项目。 该项目将在Windows RT(ARM)和Windows 8(x86 / x64)上运行。 那是因为它是为了实现这一点而建立的。 仅仅因为你有像.Net Framework这样的东西,不用担心 – 你正在编写一个跨平台的应用程序。

现在,为了警告。 由于C#,你的答案很简单。 CPP开发人员没有相同的保证,因为他们可以采取编码方式来破坏这种兼容性。 在C#中不是这样。 如果您编写的代码编译为“任何CPU”,那么我所说的是正确的。

如果你引入了一些东西(比如Bing Maps控件),它需要你的构建从“任何CPU”改为其他东西。 Windowsapp store允许您以相同的名称提交三个版本的应用程序 – 每个平台一个 – 用户永远不会知道有多个版本。

在最后一个示例中,您仍然支持每个平台,您只需要特定的三个不同的构建来完成它 – 您的代码可能根本不会改变! 在大多数情况下,您都可以支持它们。 如果您引入第三方库 – 如MVVMlite – 如果您可以构建到任何CPU,那么您仍然可以。 大多数图书馆都很酷。

说你不能在Metro风格的应用程序中使用.net框架是不正确的。 更准确地说,有一个.net框架版本,仅适用于metro应用程序。 如果您的程序集不是使用此版本的.net框架构建的,则它们不适用于metro。 这个版本的.net框架可以在.86和arm上运行。 还有一个适用于metro应用程序的MVVM Light版本。 在这里下载。 有关开发arm的详细信息,请参见此处 。

无论您使用的是JavaScript,C ++,Visual Basic还是C#,如果您构建了一个针对x86 / x64的Metro风格应用程序,那么您已经知道如何构建一个针对ARM的应用程序。 您使用相同的Metro风格项目模板,这些模板提供了构建应用程序的起点。

编辑:正如Jerry所指出的,如果用C ++编写,你可能必须针对不同版本的库编译你的应用程序,但这需要单独构建而不必进行额外的开发。

如果您使库成为可移植类库,则可以将它们用于桌面,城域和电话应用程序(以及xbox)。 您可以在启动库或项目属性时选择此选项。 它使得在mircrosoft生态系统中编写跨平台应用程序变得更加容易。