2011-08-03 11 views
1

私がしたいのは、OutputPathのすべてのファイルとサブフォルダをdailyフォルダにコピーすることです。たとえば、私は時計と呼ばれるプロジェクトを持って、私はそれのためにMSBuildのスクリプトを持っている:私は、スクリプトを実行したときに毎日MsBuildでビルド

<?xml version="1.0" encoding="utf-8" ?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <ProjectPath>C:\Clock</ProjectSolutionName> 
    <ProjectSolutionName>Clock</ProjectSolutionName> 
    </PropertyGroup> 

    <Target Name="ReleaseBuild"> 
    <Message Text="Building $(ProjectSolutionName) Release Build" /> 
    <MSBuild Projects="$(ProjectPath)\$(ProjectSolutionName).sln" Targets="Clean" Properties="Configuration=Release" /> 
    <MSBuild Projects="$(ProjectPath)\$(ProjectSolutionName).sln" Targets="Build" Properties="Configuration=Release" /> 
    <Message Text="$(ProjectSolutionName) Release Build Complete!" /> 
    </Target> 
</Project> 

は、今では解決策とファイルがReleaseフォルダに保存されますコンパイルします。どのように私は、例えば今日のように、Releaseフォルダからすべてのファイルとサブフォルダが日付として名付けられたフォルダにコピーすることができます:C:\Clock_Builds\20110803

+0

どのバージョンのMSBuildをお使いですか? – Bronumski

+0

私はMSBuild 4を使用しています – hs2d

+0

次に@James Woolfendenの解決策があなたのために働くはずです。一方では、スペースで区切られたターゲットを指定することによって、MSBuildへの2回の呼び出しを組み合わせることはできません。また、絶対パスを避け、相対パスで作業する必要があります。 – Bronumski

答えて

2

これは、あなたが求めるものの大半を行う必要があります(そのMSBuildの4):

<Project DefaultTargets="DateCopy" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> 
<Target Name="DateCopy"> 
    <ItemGroup> 
     <Release Include="d:\Build\**\**"/> 
    </ItemGroup> 

    <PropertyGroup> 
     <StringDate>$([System.DateTime]::Now.ToString('yyyyMMdd'))</StringDate> 
    </PropertyGroup> 

    <MakeDir Directories="D:\Release\$(StringDate)"/> 

    <Message Text="$(StringDate)" Importance="High"/> 
    <Copy SourceFiles="@(Release)" 
     DestinationFolder="D:\Release\$(StringDate)\%(RecursiveDir)"/> 
</Target> 
</Project> 

希望するもの

関連する問題