目前我们有 4 个不同的环境(Lab、Test、Stage、LIVE),并且我们已经使用 Nant/CC.Net 实现了自动部署。我正在调查和研究使用新的 MSDeploy 工具可以更有效地完成哪些工作。
我想要实现的是创建一个带有配置文件夹的包,其中我们将拥有所有可能环境的所有不同配置文件(基本上添加所有配置转换文件)
我想要实现的是在我们的企业环境中自动部署,其中开发团队无法访问要部署的服务器。我们只需移交部署包以及预定义的如何安装包的说明。
您能想到的最佳方法是什么?我们不使用 TFS,也不希望自动构建过程依赖于除 MSDeploy 或易于替换的其他过程之外的任何过程。也考虑使用 MSBuild。
您可以使用以下解决方案来实现它。在此期间,我得到了我长期以来读过的最好的书之一的指导。书是“微软构建引擎内部”由赛义德·易卜拉欣·哈希米和威廉·巴塞洛缪撰写。本书以出色的方式详细介绍了细节。
创建一个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>
添加上述 proj 文件并将环境特定文件添加到文件夹中后,只需通过 msbuild 可访问的命令行运行以下命令
msbuild transform.proj /t:TransformAll /p:FilesToTransform="Lab.config;Test.config;Live.config"
希望这可以帮助。不要忘记购买/冷藏“Inside the Microsoft Build Engine”一书。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)