关于新的WinRT API以及针对它的语言(直接或间接)以及它们与XAML的关系,我不明白。
我的问题是这样 - 方案1中的XAML是否转换为BAML,然后转换为MSIL(根据传统的.NET应用程序),或者是否有新的机制?如果没有,那么构建非托管应用程序的编译器如何将相同的XAML转换为本机指令?这两种方案是否可以使用相同的编译策略解决?如果是这样,那怎么样?
答案 0 :(得分:6)
在方案1中编写metro应用程序时,您不再使用.Net XAML实现System.Windows.Controls命名空间,而是使用Windows.UI.Xaml.Controls中的XAML控件。
新命名空间中的XAML实现现在是WinRT的一部分,因此它是不受管理的。当您在metro .Net应用程序中使用这些控件时,您实际上正在为这些WinRT控件使用Runtime Callable Wrappers。
当您在非托管C ++ metro应用程序中使用XAML时,您使用的是无人值守的WinRT控件,所以是的,它们被编译为本机代码,但没有从.Net到本机代码的转换。