Longhornドキュメントの構築 |
XAMLの用途は、アプリケーションのビルドに限定されているわけではない。また、ユーザーが読むための、対話性の高い、知的な表現の、順応性のあるドキュメントの作成にも、XAMLファイルを利用できる。この場合は、一連のXAMLファイルが、1つのドキュメントのページを表す。MSBuildエンジンは、これらのドキュメントをビルドするためにも利用できる(コラム4参照)。
プロジェクトファイルに少し変更を加えるだけで、アプリケーションの代わりにドキュメントをビルドできる。Targetプロパティの値にDocumentに設定することと、適切なビルド規則のためのWindowsDocument.targetプロジェクトをインポートし、通常通りほかのプロジェクトファイルをインクルードすればよい。
<Project DefaultTargets="Build"> <PropertyGroup> <Property TargetType="Document" /> <Property Language="C#" /> <Property DefaultClrNameSpace= "IntroLonghorn" /> <Property TargetName="MyDocument" /> </PropertyGroup> <Import Project= "$(LAPI)\WindowsDocument.target" /> <ItemGroup> <Item Type= "ApplicationDefinition" Include="MyApp.xaml" /> <Item Type="Pages" Include="Markup.xaml" /> <Item Type="Pages" Include= "Navigate.xaml" /> <Item Type="Code" Include="Navigate.xaml.cs"/> <Item Type="Resources" Include="Picture1.jpg" FileStorage="embedded" Localizable="False"/> <Item Type="Resources" Include="Picture2.jpg" FileStorage="embedded" Localizable="True"/> </ItemGroup> </Project> |
TargetTypeの値がDocumentの場合に、どういったものが生成されるかを理解することは重要である。Documentをビルドしたときに出力されるのはコンテナファイルであり、ビルドシステムは実行スピードよりはダウンロードを重視してコンテナの内容を最適化する。コンテナファイルはDocFile形式として知られるWindows Structured Storageフォーマットの拡張の1つである。
Longhornのコンテナの処理は、部分的にダウンロードされたファイルのレンダリングを可能にする。このことは、アプリケーションの実行を開始する前に、コンテナ全体をダウンロードする必要がないことを意味する。
コンテナファイルを生成するためにMSBuildを使用するとき、MSBuildは各XAMLファイルをバイナリXAML(BAML)と呼ばれる、XMLのバイナリ表現にコンパイルする。BAMLファイルは、オリジナルのテキストファイルやコンパイル後のILアセンブリと比較しても遥かにコンパクトである。
BAMLファイルはすばやくダウンロードされるが、インタープリタはそれらのファイルを実行時に解析し、ファイルに定義されているクラスのインスタンスを生成する必要がある。これらのファイルが実行スピードに関しては最適化されていないのは、こうした理由による。これまでに説明してきたサンプルは、ILにコンパイルされるファイル(ILにコンパイルされるファイルは、compiled XAMLの短縮形である『CAML』とも呼ばれる)を生成してきた。
© Copyright 2001-2005 Fawcette Technical Publications