Dot*_*nfo 6 .net cruisecontrol.net msbuild nant msdeploy
我们目前有4种不同的环境(Lab,Test,Stage,LIVE),我们使用Nant/CC.Net实现了自动部署.我正在调查并研究使用新的MSDeploy工具可以更有效地完成哪些工作.
我想要实现的是创建一个包含Configuration文件夹的包,在该文件夹中我们将拥有所有可能环境的所有不同配置文件(基本上添加所有配置转换文件)
我想要实现的是在我们的企业环境中自动部署,在这种环境中,开发团队无法访问将要部署的服务器.我们只需要使用预定义的指令移交部署包,以了解如何安装软件包.
什么是你能想到的最好的方法.我们不使用TFS,并且不希望自动构建过程依赖于任何过程,除了MSDeploy或易于替换的东西.关于使用MSBuild的思考.
您可以使用以下解决方案实现它.在这两者之间,我得到了我读过的最好的书之一的指导.本书由Sayed Ibrahim Hashimi和William Bartholomew撰写的"Inside the Microsoft Build Engine".书以优异的方式完成细节.
创建一个msbuild proj文件,如下所示
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0" DefaultTargets="TransformAll">
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>
<PropertyGroup>
<DestDirectory>C:\Temp\DeployPackage\TRANSFORM_CONFIGS\</DestDirectory>
</PropertyGroup>
<ItemGroup>
<TransformFiles Include="$(FilesToTransform)"/>
</ItemGroup>
<Target Name="TransformAll" DependsOnTargets="ValidateSettings">
<MakeDir Directories="$(DestDirectory)"/>
<TransformXml Source="..\web.config"
Transform="%(TransformFiles.Identity)"
Destination="@(TransformFiles->'$(DestDirectory)%(Filename).transformed.config')" />
</Target>
<Target Name="ValidateSettings">
<Error Text="FilesToTransform cannot be empty"
Condition=" '$(FilesToTransform)'=='' "/>
<Error Text="Couldn't find transform file at [%(TransformFiles.Fullpath)]"
Condition =" !Exists('%(TransformFiles.Fullpath)') "/>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
添加上述proj文件并在文件夹中添加特定于环境的文件后,只需通过msbuild accessible命令行运行以下命令即可
msbuild transform.proj /t:TransformAll /p:FilesToTransform="Lab.config;Test.config;Live.config"
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.不要忘记购买/参考"Inside teh Microsoft Build Engine"一书.
| 归档时间: |
|
| 查看次数: |
1471 次 |
| 最近记录: |