MS将所有配置[.config文件]部署在一个程序包中

| 目前,我们有4种不同的环境(实验室,测试,舞台,LIVE),并且已经使用Nant / CC.Net实施了自动部署。我正在研究并做一些有关使用新的MSDeploy工具可以更有效地完成操作的研究。 我要实现的是创建一个带有Configuration文件夹的包,在其中,我们将拥有所有可能环境的所有不同配置文件(基本上添加所有config转换文件) 我要实现的是在我们的企业环境中进行自动部署,在该环境中,开发团队无法访问将要部署服务器的服务器。我们只需要提供带有预定义说明的部署软件包,以说明如何安装该软件包。 您能想到的最佳方法是什么。我们不使用TFS,也不希望自动生成过程依赖于任何过程,例如MSDeploy或易于替换的过程。也考虑使用MSBuild。     
已邀请:
        您可以使用以下解决方案来实现。在这两者之间,我获得了我长时间阅读的最好的书之一的指导。本书是由Sayed Ibrahim Hashimi和William Bartholomew撰写的“在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>
添加以上proj文件并将特定于环境的文件添加到文件夹后,只需通过msbuild可访问命令行运行以下内容
msbuild transform.proj /t:TransformAll /p:FilesToTransform=\"Lab.config;Test.config;Live.config\"
希望这可以帮助。不要忘记购买/参考“ Microsoft Build Engine内幕”一书。     
        一种可能是自定义安装程序,因此显示的第一个对话框使用户可以选择要安装的环境。根据该决定,适当的文件将被复制到安装目录并重命名。     
        我不确定您在寻找什么。 您是否要从包含所有环境特定设置的\“ master \”文件更新的根配置文件?您应该看看XmlPreProcessor http://xmlpreprocess.sourceforge.net/ 除了Pedro的注释,您还可以在所有服务器上放置一个注册表项,说明该服务器属于哪个环境。如果执行完全脚本化的部署,则程序包将从该注册表项中选取环境,并为该环境生成正确的配置。节省了选择环境的人工步骤。     

要回复问题请先登录注册