2012-01-30 14 views
4

新しいWinRT APIと、それを(直接的または間接的に)ターゲットとする言語と、理解していないXAMLとの関係について説明します。WinRT XAML - 管理対象と非管理対象 - どのように動作しますか?

  1. .NET言語(C#の、VB.Net、F#が)XAMLメトロに順番にC++を使用することができます
  2. WinRTの
  3. 上で動作する 'API-制限' CLR上で実行 アプリケーションを構築するために使用することができます

私の質問はこれですWinRTのAPIを 上で直接実行管理対象外のXAMLアプリケーションを構築するために - シナリオ1でのXAMLは、BAMLに変換しますん。また、(伝統的な.NETアプリケーションごとなど)をMSIL、またはありますこれのための新しいメカニズムがありますか?そうでない場合、アンマネージドアプリケーションを構築するコンパイラは、同じXAMLをネイティブ命令に変換する方法を教えてください。 2つのシナリオは同じコンパイル戦略で解決されますか?もしそうなら、どのように?

+0

これは便利です:http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-690C –

答えて

6

メトロアプリケーションの作成時に、.NET XAML実装のSystem.Windows.Controls名前空間を使用しなくなり、代わりにWindows.UI.Xaml.ControlsのXAMLコントロールを使用しています。

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

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

+0

しかし、管理された言語(例えばC#)でXAMLメトロアプリケーションを書くと、アプリケーションはaのontopを実行しますXAML(このインスタンスではBAMLですか?)が含まれています(私は思っています)。まだ混乱しています –

+2

短い答え:マネージ言語でXAMLを使用してメトロアプリケーションを作成する場合、実際には.Net実装ではなくWinRT実装を使用しています。これが顕著でない理由は2つあります。1)WinRTをコンパイルすると、アセンブリメタデータファイルである.winmdファイルが生成され、CLIで指定されたものと同じ形式で生成されます。これにより、これらのWinRTコントロールを.Netコントロールと同じように使用することができます。 CLRはすべてのinteropマジックを処理するため、interopアセンブリは不要です。 2.別の名前空間でもWinRTコントロールの名前は同じです。 – sarvesh

関連する問題