更换前MSBuild备份文件(带时间戳)

时间:2011-10-03 09:41:38

标签: msbuild

我目前使用Web部署项目通过各种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 个答案:

答案 0 :(得分: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" />