2011-08-03 48 views
1

我想要做的是將所有文件和子文件夾從OutputPath複製到每日文件夾。例如,我有項目,稱爲時鐘,我有這方面的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。你也應該嘗試和避免絕對路徑並使用相對路徑。 – 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> 

希望可以幫到