WinRT XAML - управляемый и неуправляемый - как это работает? - PullRequest
4 голосов
/ 30 января 2012

Есть кое-что о новом WinRT API и языках, на которые он нацелен (прямо или косвенно), и об их отношениях с XAML, которые я не понимаю.

  1. .NET языки (C #, VB.Net, F #) могут быть использованы для построения XAML Metro приложения, работающие на CLR с ограничением API, который, в свою очередь, работает на WinRT
  2. C ++ может использоваться для создания неуправляемых приложений XAML, которые запускаются непосредственно на вершина WinRT API

У меня такой вопрос: XAML в сценарии 1 преобразуется в BAML, а затем в MSIL (в соответствии с традиционными приложениями .NET) или есть новый механизм для этого? Если нет, то как компилятор, создающий неуправляемые приложения, преобразует тот же XAML в нативные инструкции? Разрешаются ли два сценария с помощью одной и той же стратегии компиляции? Если так, то как?

1 Ответ

6 голосов
/ 31 января 2012

В сценарии 1 при написании приложений метро вы больше не используете реализацию .Net XAML, пространство имен System.Windows.Controls, вместо этого вы используете элементы управления XAML из Windows.UI.Xaml.Controls.

Реализация XAML в новом пространстве имен теперь является частью WinRT, поэтому она неуправляема.Когда вы используете эти элементы управления в приложении Metro .Net, вы фактически используете Runtime Callable Wrappers для этих элементов управления WinRT.

Когда вы используете XAML в неуправляемом приложении C ++ metro, вы используете неуправляемые элементы управления WinRT, так что да, они компилируются в собственный код, но нет перевода из .Net в собственный код.

...