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

替换前MSBuild备份文件(带时间戳),msbuild,Msbuild,我当前使用web部署项目通过各种MSBuild任务更新现有网站 使站点脱机: <Target Name="BeforeBuild" Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <CreateItem Include="..\website\App_Code\override\App_Offline.htm"> <Output TaskParameter="Includ

我当前使用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目录之前)

分别通过
Zip
time
任务提供压缩和获取(格式化)当前时间的支持

安装MSBuild社区任务并将其添加到项目中后,可以通过将以下内容添加到
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" />