我目前使用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目录之前)
答案 0 :(得分:1)
MSBuild Community Tasks分别为Zip
和Time
任务提供支持,压缩和获取(格式化)当前时间。
安装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" />