koido Blog

XPerの日々

AILight Banner
AILight Blog

プロフィール

koido Blog

目次

Blog 利用状況

記事分類

過去の記事

タグ

MSBuildで、Zipファイルを作る ItemGroupがポイント

MSBuildでZipファイルを作成する関数的なXMLファイルを作ってみました。

ポイントは、ItemGroupを使用して、指定されたディレクトリ配下のファイルで、必要ないもの以外を除外します。
書き方のポイントは、**\*.*です。この**が重要です。

引数として、Projectにディレクトリとファイルのリスト(ファイル名を;でつないで複数指定可能)を指定できるようにしています。

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

  <!--
  処理概要
   指定されたディレクトリ配下と指定されたファイルを1つのZipファイルとして作成する
  必要となる引数プロパティ
   ZipDir      Zipファイルを作成するディレクトリ名
   ZipFileName 作成するZipファイル名
   TargetFile  ターゲットのファイル名(複数指定は;で連結する)
   TargetDir   ターゲットのディレクトリ名(対象のトップディレクトリ)
 -->

  <!-- 定義タスクの利用宣言 -->
  <UsingTask AssemblyFile="$(MSBuildCommunityTasksPath)" TaskName="Zip" />

  <ItemGroup>
    <DefaultExclude Include="$(TargetDir)\**\bin\**" />
    <DefaultExclude Include="$(TargetDir)\**\obj\**" />
    <DefaultExclude Include="$(TargetDir)\**\Release\**" />
    <DefaultExclude Include="$(TargetDir)\**\Debug\**" />
    <DefaultExclude Include="$(TargetDir)\**\*.scc" />
    <DefaultExclude Include="$(TargetDir)\**\*.zip" />
  </ItemGroup>

  <ItemGroup>
    <ZipTargetFiles Include ="$(TargetFiles)" />
    <ZipTargetFiles Include ="$(TargetDir)\**\*.*"
                    Exclude ="@(DefaultExclude)" />
  </ItemGroup>

  <Target Name ="Create Zip">
    <Message Text = "----- Start Create Zip [$(ZipFileName)] Start -----" />

    <Message Text = "----- Delete [$(ZipFileName)] -----" />
    <Delete Files = "$(ZipDir)\$(ZipFileName)" ContinueOnError ="true" />

    <Message Text = "====== Zip Files [@(ZipTargetFiles)] Start =====" />
   
    <Zip ZipFileName="$(ZipDir)\$(ZipFileName)"
               Files="@(ZipTargetFiles)" />
    <Message Text = "----- Start Create Zip [$(ZipFileName)] End -----" />
  </Target>
 </Project>

以下は利用する側のビルド用xmlファイルです。

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

  <PropertyGroup>
    <MSBuildCommunityTasksPath>F:\ItemGroupSample\MSBuild.Community.Tasks\MSBuild.Community.Tasks.dll</MSBuildCommunityTasksPath>
  </PropertyGroup>

  <Target Name ="Sample">
    <Message Text = "----- Start Sample -----" />
    <MSBuild
      Projects ="CreateZipFile.xml"
      Properties ="MSBuildCommunityTasksPath=$(MSBuildCommunityTasksPath);
                ZipDir=F:\ItemGroupSample\Zip;
           ZipFileName=Sample.zip;
            TargetFiles=F:\ItemGroupSample\SampleFile.txt;F:\ItemGroupSample\SampleFile.xml;
              TargetDir=F:\ItemGroupSample\Sample"
      />
    <Message Text = "----- End Sample -----" />
  </Target>
 </Project>

投稿日時 : 2006年8月10日 0:33


コメントを追加

タイトル
名前
URL
コメント