用户可以根据本地文件或者SVN目录中的最新资料来进行本地编译后将Release文件自动拷贝,Web目录自动拷贝后压缩,生成Zip文件来部署。这个方法的优点是操作简单,容易和其他工具并用。
 
Build.bat 内容:
 
一个使用MSBuild Task自动编译部署的例子
一个使用MSBuild Task自动编译部署的例子
@ECHO OFF
一个使用MSBuild Task自动编译部署的例子
SET /P DeployConfig=Specify build target ('Production' or 'Development')
一个使用MSBuild Task自动编译部署的例子 
一个使用MSBuild Task自动编译部署的例子
IF /NOT '%DeployConfig%'=='Production' (
一个使用MSBuild Task自动编译部署的例子            
IF /NOT '%DeployConfig%'=='Development' (
一个使用MSBuild Task自动编译部署的例子                        
ECHO Please specify Production or Development.
一个使用MSBuild Task自动编译部署的例子                        
GOTO finish
一个使用MSBuild Task自动编译部署的例子            
)
一个使用MSBuild Task自动编译部署的例子
)
一个使用MSBuild Task自动编译部署的例子 
一个使用MSBuild Task自动编译部署的例子
SET /P VersionTag=Enter SVN revision (e.g. 1.2.4), or 'trunk': 
一个使用MSBuild Task自动编译部署的例子 
一个使用MSBuild Task自动编译部署的例子
echo.
一个使用MSBuild Task自动编译部署的例子 
一个使用MSBuild Task自动编译部署的例子msbuild project
.msbuild /p:VersionTag=%VersionTag%;DeployConfig=%DeployConfig% /nologo
一个使用MSBuild Task自动编译部署的例子 
一个使用MSBuild Task自动编译部署的例子 
一个使用MSBuild Task自动编译部署的例子
rem IF %ERRORLEVEL% GTR 0 (
一个使用MSBuild Task自动编译部署的例子rem
      ECHO.
一个使用MSBuild Task自动编译部署的例子rem
      ECHO Build failed for revision number '%VersionTag%'
一个使用MSBuild Task自动编译部署的例子rem
      ECHO.
一个使用MSBuild Task自动编译部署的例子rem
 ) ELSE (
一个使用MSBuild Task自动编译部署的例子rem
 
一个使用MSBuild Task自动编译部署的例子rem
      echo Build succeeded for revision number '%VersionTag%'
一个使用MSBuild Task自动编译部署的例子rem
 )
一个使用MSBuild Task自动编译部署的例子
 
一个使用MSBuild Task自动编译部署的例子 
一个使用MSBuild Task自动编译部署的例子
:finish
一个使用MSBuild Task自动编译部署的例子 
一个使用MSBuild Task自动编译部署的例子
 
project.msbuild内容:
 
一个使用MSBuild Task自动编译部署的例子
一个使用MSBuild Task自动编译部署的例子
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="DeploymentZip">
一个使用MSBuild Task自动编译部署的例子            
<PropertyGroup>
一个使用MSBuild Task自动编译部署的例子                        
<DefaultConfiguration>Release</DefaultConfiguration>
一个使用MSBuild Task自动编译部署的例子                        
<DefaultSvnServer>192.168.0.2</DefaultSvnServer>
一个使用MSBuild Task自动编译部署的例子            
</PropertyGroup>
一个使用MSBuild Task自动编译部署的例子            
一个使用MSBuild Task自动编译部署的例子            
<!--Choose>
一个使用MSBuild Task自动编译部署的例子                        <When Condition="'$(VersionTag)' == 'trunk'">
一个使用MSBuild Task自动编译部署的例子                                    <PropertyGroup>
一个使用MSBuild Task自动编译部署的例子                                                <RepositoryPath>svn://$(DefaultSvnServer)/MYProject/trunk</RepositoryPath>
一个使用MSBuild Task自动编译部署的例子                                    </PropertyGroup>
一个使用MSBuild Task自动编译部署的例子                        </When>
一个使用MSBuild Task自动编译部署的例子                        <Otherwise>
一个使用MSBuild Task自动编译部署的例子                                    <PropertyGroup>
一个使用MSBuild Task自动编译部署的例子                                                <RepositoryPath>svn://$(DefaultSvnServer)/MYProject/tags/$(VersionTag)</RepositoryPath>
一个使用MSBuild Task自动编译部署的例子                                    </PropertyGroup>
一个使用MSBuild Task自动编译部署的例子                        </Otherwise>
一个使用MSBuild Task自动编译部署的例子            </Choose
-->
一个使用MSBuild Task自动编译部署的例子            
一个使用MSBuild Task自动编译部署的例子            
一个使用MSBuild Task自动编译部署的例子            
<!-- Retrieve project files from source control, of the specified revision -->
一个使用MSBuild Task自动编译部署的例子            
<!--Target Name="SvnExport">
一个使用MSBuild Task自动编译部署的例子                        <RemoveDir Directories="buildExport" />
一个使用MSBuild Task自动编译部署的例子                        <MakeDir Directories="buildExport" />
一个使用MSBuild Task自动编译部署的例子                        
一个使用MSBuild Task自动编译部署的例子                        <SvnExport 
一个使用MSBuild Task自动编译部署的例子                                    RepositoryPath="$(RepositoryPath)/web"
一个使用MSBuild Task自动编译部署的例子                                    LocalPath="buildExport/Web"
一个使用MSBuild Task自动编译部署的例子                                    Username="deploy"
一个使用MSBuild Task自动编译部署的例子                                    Password="readonly" />
一个使用MSBuild Task自动编译部署的例子                        
一个使用MSBuild Task自动编译部署的例子                        <SvnExport 
一个使用MSBuild Task自动编译部署的例子                                    RepositoryPath="$(RepositoryPath)/api"
一个使用MSBuild Task自动编译部署的例子                                    LocalPath="buildExportAPI"
一个使用MSBuild Task自动编译部署的例子                                    Username="deploy"
一个使用MSBuild Task自动编译部署的例子                                    Password="readonly" />
一个使用MSBuild Task自动编译部署的例子            </Target
-->
一个使用MSBuild Task自动编译部署的例子            
一个使用MSBuild Task自动编译部署的例子            
<ItemGroup>
一个使用MSBuild Task自动编译部署的例子      
<WebFiles Include="..Web***.*" Exclude="..Web**.svn**;..Web***.pdb"/> 
一个使用MSBuild Task自动编译部署的例子   
</ItemGroup>
一个使用MSBuild Task自动编译部署的例子 
一个使用MSBuild Task自动编译部署的例子            
<!-- Compile API -->
一个使用MSBuild Task自动编译部署的例子            
<!--Target Name="API" DependsOnTargets="SvnExport"-->
一个使用MSBuild Task自动编译部署的例子            
<Target Name="CompileAPI">
一个使用MSBuild Task自动编译部署的例子                        
<MSBuild 
一个使用MSBuild Task自动编译部署的例子                                    
Projects="..APIapi.csproj"
一个使用MSBuild Task自动编译部署的例子                                    StopOnFirstFailure
="true"
一个使用MSBuild Task自动编译部署的例子                                    Properties
="Configuration=$(DefaultConfiguration)" />              
一个使用MSBuild Task自动编译部署的例子            
</Target>
一个使用MSBuild Task自动编译部署的例子 
一个使用MSBuild Task自动编译部署的例子 
<Target Name="CopyEverything" DependsOnTargets="CompileAPI">
一个使用MSBuild Task自动编译部署的例子           
<RemoveDir Directories="buildExport" />
一个使用MSBuild Task自动编译部署的例子           
<MakeDir Directories="buildExport" />
一个使用MSBuild Task自动编译部署的例子           
<MakeDir Directories="buildExportWeb" />
一个使用MSBuild Task自动编译部署的例子           
<MakeDir Directories="buildExportAPI" />
一个使用MSBuild Task自动编译部署的例子           
<Copy 
一个使用MSBuild Task自动编译部署的例子                                    
SourceFiles="..APIin$(DefaultConfiguration)MYProject.dll" 
一个使用MSBuild Task自动编译部署的例子                                    DestinationFolder
="buildExportWebin" />
一个使用MSBuild Task自动编译部署的例子                        
<Copy 
一个使用MSBuild Task自动编译部署的例子                                    
SourceFiles="@(WebFiles)" 
一个使用MSBuild Task自动编译部署的例子                                    DestinationFiles
="@(WebFiles->'buildExportWeb%(RecursiveDir)%(Filename)%(Extension)')" />
一个使用MSBuild Task自动编译部署的例子 
</Target>
一个使用MSBuild Task自动编译部署的例子 
一个使用MSBuild Task自动编译部署的例子            
<Target Name="CopyWebConfig" DependsOnTargets="CopyEverything">
一个使用MSBuild Task自动编译部署的例子                        
<Copy 
一个使用MSBuild Task自动编译部署的例子                                    
SourceFiles="buildExportWebConfig$(DeployConfig)Web.config"
一个使用MSBuild Task自动编译部署的例子                                    DestinationFiles
="buildExportWebWeb.config" />
一个使用MSBuild Task自动编译部署的例子                        
<RemoveDir Directories="buildExportWebConfig" />
一个使用MSBuild Task自动编译部署的例子            
</Target>
一个使用MSBuild Task自动编译部署的例子 
一个使用MSBuild Task自动编译部署的例子
<!-- Zip up all the files for transporting to deploy -->
一个使用MSBuild Task自动编译部署的例子            
<Target 
一个使用MSBuild Task自动编译部署的例子                        
Name="DeploymentZip" 
一个使用MSBuild Task自动编译部署的例子                        DependsOnTargets
="CopyEverything;CopyWebConfig"
一个使用MSBuild Task自动编译部署的例子                        Condition
="('$(DeployConfig)' == 'QA' OR '$(DeployConfig)' == 'Production' OR '$(DeployConfig)' == 'Development') AND '$(VersionTag)' != ''"
一个使用MSBuild Task自动编译部署的例子                        
>
一个使用MSBuild Task自动编译部署的例子 
一个使用MSBuild Task自动编译部署的例子                        
<CreateItem 
一个使用MSBuild Task自动编译部署的例子                                    
Include="buildExportWeb**;">
一个使用MSBuild Task自动编译部署的例子                                    
<Output TaskParameter="Include" ItemName="WebAppFiles" />
一个使用MSBuild Task自动编译部署的例子                        
</CreateItem>
一个使用MSBuild Task自动编译部署的例子                        
一个使用MSBuild Task自动编译部署的例子                        
<Zip 
一个使用MSBuild Task自动编译部署的例子                                    
Files="@(WebAppFiles)" 
一个使用MSBuild Task自动编译部署的例子                                    ZipFileName
="MYProject_$(DeployConfig)_$(VersionTag).zip"
一个使用MSBuild Task自动编译部署的例子                                    WorkingDirectory
="buildExportWeb" />
一个使用MSBuild Task自动编译部署的例子 
一个使用MSBuild Task自动编译部署的例子                        
<Message Text="Built deployment file with $(DefaultConfiguration) for $(DeployConfig)." />
一个使用MSBuild Task自动编译部署的例子                        
<Message Text="Deployment package: MYPROJECT_$(DeployConfig)_$(VersionTag).zip" />
一个使用MSBuild Task自动编译部署的例子                        
<Message Text="Done." />
一个使用MSBuild Task自动编译部署的例子                        
一个使用MSBuild Task自动编译部署的例子            
</Target>
一个使用MSBuild Task自动编译部署的例子 
一个使用MSBuild Task自动编译部署的例子            
<UsingTask TaskName="MSBuild.Community.Tasks.Subversion.SvnExport" AssemblyFile="$(MSBuildExtensionsPath)MSBuildCommunityTasksMSBuild.Community.Tasks.dll" />
一个使用MSBuild Task自动编译部署的例子            
<UsingTask TaskName="MSBuild.Community.Tasks.Zip" AssemblyFile="$(MSBuildExtensionsPath)MSBuildCommunityTasksMSBuild.Community.Tasks.dll" />
一个使用MSBuild Task自动编译部署的例子
</Project>
一个使用MSBuild Task自动编译部署的例子
 
这2个文件没有进行优化,根据不同项目有很大改动余地。但基本功能都经过测试。在XML模式下编辑可以方便看到很多地方我都注释了,也都通过测试。相信对大多用户有所帮助。

 

 

相关文章: