koido Blog

XPerの日々

AILight Banner
AILight Blog

プロフィール

koido Blog

目次

Blog 利用状況

記事分類

過去の記事

タグ

MSBuildで不可解な動作(仕様?)

MSBuildで、プロパティとして**\*.*などを渡す(関数の引数のようなもの)とItemGroupが展開されないという、不可解な動作があります。
これは、関数のように小さいMSBuildファイルを作って、関数のようなXMLファイルを作る場合に、はまりますのでご注意ください。

具体的には、ファイルをコピーするとかZipファイルを作ったりするときに、引数として*などによる定義が利用できなくなってしまうということです。

なぜこんなこと動作をするのか、正直理解できません。
#こんなことは、私しかやってないのかも

以下サンプルです。

呼び出す側(Sample.xml)

 <?xml version="1.0" encoding="utf-8" ?>
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
 DefaultTargets="Sample">

  <Target Name ="Sample">
    <Message Text = "----- Start Sample -----" />
    <MSBuild
      Projects ="ItemGroupTest.xml"
      Properties ="TargetFiles=\ItemGroupSample.Error\Sample\**\*.*;
                     TargetDir=\ItemGroupSample.Error\Sample;"
      />
    <Message Text = "----- End Sample -----" />
  </Target>
 </Project>

呼び出される側(ItemGroupTest.xml)

 <?xml version="1.0" encoding="utf-8" ?>
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
  DefaultTargets="ItemGroup Test">

  <ItemGroup>
    <TargetFiles1 Include ="$(TargetFiles)" />
  </ItemGroup>

  <ItemGroup>
    <TargetFiles2 Include ="$(TargetDir)\**\*.*" />
  </ItemGroup> 

  <Target Name ="ItemGroup Test">

    <Message Text = "----- Files1 [@(TargetFiles1)] Start -----" />
    <Message Text = "----- Files2 [@(TargetFiles2)] Start -----" />
   
  </Target>

 </Project>

おまけ、batファイル

%HOMEDRIVE%\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild Sample.xml

PS
 バッチで、MSBuildを呼び出すと、いろいろビルド関連の自動化ができそうです。
 それには、公開されている拡張タスクが必須です。

 

投稿日時 : 2006年8月13日 22:03


コメントを追加

タイトル
名前
URL
コメント