2011-10-03 51 views
2

之前,我目前使用的是网络部署项目通过不同的MSBuild任务MSBuild的备份文件(带时间戳)更换

采取现场离线更新现有的网站:

<Target Name="BeforeBuild" Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    <CreateItem Include="..\website\App_Code\override\App_Offline.htm"> 
    <Output TaskParameter="Include" ItemName="AppOffline" /> 
    </CreateItem> 
    <Copy SourceFiles="@(AppOffline)" DestinationFiles="@(AppOffline->'\\servername\f$\web\example.com\wwwroot\%(RecursiveDir)%(Filename)%(Extension)')" /> 
    <RemoveDir Directories="\\servername\f$\web\example.com\wwwroot\bin\" /> 
</Target> 

更新文件:

<Target Name="AfterBuild" Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    <CreateItem Include=".\Release\**\*"> 
    <Output TaskParameter="Include" ItemName="ReleaseFiles" /> 
    </CreateItem> 
    <Copy SourceFiles="@(ReleaseFiles)" ContinueOnError="true" SkipUnchangedFiles="true" DestinationFiles="@(ReleaseFiles->'\\servername\f$\web\example.com\wwwroot\%(RecursiveDir)%(Filename)%(Extension)')" /> 
    <Delete Files="\\servername\f$\web\example.com\wwwroot\App_Offline.htm" /> 
</Target> 

但是,我还想做的是在覆盖任何东西之前备份现有网站,将其放入时间戳zip(或7zip)文件中,例如如果在2011年10月3日10:35完成,文件将被命名为\\servername\f$\web\example.com\backup201110031035.7z,其中包含wwwroot文件夹的内容(在使站点脱机并删除bin目录之前)

回答

1

MSBuild Community Tasks提供对压缩和获取(格式化)当前时间分别通过ZipTime任务。

一旦安装了MSBuild社区任务,并且imported添加到您的项目中,您可以通过将以下内容添加到BeforeBuild目标的开头来创建备份zip文件。

<ItemGroup> 
    <FilesToZip Include="\\servername\f$\web\example.com\wwwroot\**\*.*" /> 
</ItemGroup> 
<Time Format="yyyyMMddhhmm"> 
    <Output TaskParameter="FormattedTime" PropertyName="Timestamp" /> 
</Time> 
<Zip 
    Files="@(FilesToZip)" 
    ZipFileName="\\servername\f$\web\example.com\backup$(Timestamp).zip" 
    WorkingDirectory="\\servername\f$\web\example.com\wwwroot" />