2011-10-03 14 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" />