【MSBuild】メタデータと変換


MSBuildで最も理解しづらいと思われる(私だけ?(^^;;)
リスト項目とメタデータ&その利用方法についてまとめます。

■ メタデータとは?
メタデータとは「データを説明するデータ」だそうです。
メタデータとは何ぞやと悩んでもなかなか理解しづらいので、
MSBuildでのメタデータの利用方法とセットで覚えましょう。

■ 変換
MSBuildでのメタデータの利用方法が、変換の機能です。
これは、リスト項目の出力をメタデータを利用して変換することを指します。

変換の修飾子
@(リスト項目名->'変換式')

例.
1. リスト項目の定義
まずはリスト項目ごとにメタデータを定義します。
今回は複数のファイルコピーを別々の場所へ1度にコピーする記述です。

<ItemGroup>
  <DeploymentSourceFiles 
   Include="C:\SourceFiles1\**\*.*" >
   <DestinationFolder>E:\DestinationFolder1</DestinationFolder>
  </DeploymentSourceFiles>
  <DeploymentSourceFiles 
   Include="D:\SourceFiles2\**\*.*" >
   <DestinationFolder>E:\DestinationFolder2</DestinationFolder>
  </DeploymentSourceFiles>
 </ItemGroup>

2. 変換の利用
変換をファイルコピータスクで利用する例です。
変換式に出てくる%(DestinationFolder)がメタデータになります。

 <Copy 
   SourceFiles="@(DeploymentSourceFiles)" 
   DestinationFiles="@(DeploymentSourceFiles->'%(DestinationFolder)\%(RecursiveDir)%(filename)%(extension)')" >
  </Copy>

これでリスト項目とメタデータを利用することで、
ファイルコピータスクを何回も記述することなく、
1度にコピーを完了できます。

■ 既知のメタデータ
リスト項目はファイルのパスを利用することが多いと思います。
当然、ファイルに関するメタデータが多いです。
既知のメタデータをいくつか挙げます。

%(FullPath)
 リスト項目のフルパス
%(FileName)
 リスト項目のファイル名(拡張子は除く)
%(Extension)
 リスト項目のファイル拡張子
%(RecursiveDir)
 リスト項目の再帰的なフォルダ名

詳細は、MSDNを参照してください。
http://msdn2.microsoft.com/ja-jp/library/ms164313(VS.80).aspx

MSBuildの基本操作はNAgileドキュメントにまとめたので、
後はこのメタデータと変換を使いこなせれば、
MSBuildのマスターとなれると思います。

MSBuildについてはひとまずこれで完了。