4

新しい WinRT API とそれを (直接または間接的に) 対象とする言語、およびそれらと XAML との関係について、私には理解できないことがあります。

  1. .NET 言語 (C#、VB.Net、F#) を使用して、WinRT で実行される「api-restricted」CLR で実行される XAML Metro アプリを構築できます。
  2. C++ を使用して、WinRT API 上で直接実行されるアンマネージド XAML アプリを構築できます

私の質問はこれです - シナリオ 1 の XAML は BAML に変換され、次に MSIL (従来の .NET アプリによる) に変換されますか、それとも新しいメカニズムはありますか? そうでない場合、アンマネージド アプリをビルドするコンパイラは、同じ XAML をどのようにネイティブ命令に変換するのでしょうか? 2 つのシナリオは同じコンパイル戦略で解決されますか? もしそうなら、どうやって?

4

1 に答える 1

6

シナリオ 1 では、メトロ アプリを作成するときに、.Net XAML 実装の System.Windows.Controls 名前空間を使用しなくなり、代わりに Windows.UI.Xaml.Controls の XAML コントロールを使用します。

新しい名前空間の XAML 実装は現在 WinRT の一部であるため、管理されていません。これらのコントロールをメトロ .Net アプリ内で使用する場合、実際にはこれらの WinRT コントロールにランタイム呼び出し可能ラッパーを使用しています。

管理されていない C++ メトロ アプリで XAML を使用している場合、管理されていない WinRT コントロールを使用しているため、ネイティブ コードにコンパイルされますが、.Net からネイティブ コードへの変換は行われません。

于 2012-01-31T18:21:41.137 に答える