Msbuild 使用msdeploy&;一次构建并部署到多个环境;Visual Studio 2012
致力于为多个解决方案集中配置、应用程序设置和连接字符串,同时从命令行切换到使用msdeploy部署web应用程序。理想情况下,我希望构建一次包,并在包部署到每个环境时获得最新的配置。我需要一些关于最佳方法的建议Msbuild 使用msdeploy&;一次构建并部署到多个环境;Visual Studio 2012,msbuild,msdeploy,Msbuild,Msdeploy,致力于为多个解决方案集中配置、应用程序设置和连接字符串,同时从命令行切换到使用msdeploy部署web应用程序。理想情况下,我希望构建一次包,并在包部署到每个环境时获得最新的配置。我需要一些关于最佳方法的建议 使用Parameters.xml和SetParameters.xml文件动态交换设置和连接字符串。看 使用machine.config或服务器级别的web.config文件存储常用应用程序设置和连接字符串 使用packageweb NuGet包,从中可以将web.config转换与msd
选项#5看起来很有趣,但我没有用过,所以我不能说太多。我可以详细介绍一下选项#1/#3并比较它们。前面的回复不准确地指出,您必须使用PackageWeb构建多次,您只需要构建一次 选项1:Parameters.xml和SetParameters.xml 在这种方法中,您将在web项目中创建parameters.xml文件,该文件将声明其他web部署参数 构建Web部署包时,将在包中创建parameters.xml中声明的参数。创建此web部署包时,将根据构建配置(和)转换web.config文件
您可以使用该包和setparameters.xml来发布指定Web部署参数值的包。您可以创建不同的setparameters.xml文件,并将其与同一个包一起用于发布到多个目标。要使用此技术发布,您可以使用VS生成的deploy.cmd或使用正确的参数集调用msdeploy.exe 选项3:PackageWeb PackageWeb扩展了包过程,以便在创建Web部署包时,包中包括Web.config转换以及可以执行转换的程序集 此外,在创建web部署包时,还会生成publish-interactive.ps1文件。您可以使用此文件发布包。它将提示您进行以下操作:;要应用的web.config转换、web部署参数值和web部署端点信息本身。运行发布时,您提供的值将保存到
publish configuration.ps1.readme
。您可以删除。readme和publish-interactive.ps1将使用该文件中的值来自动发布。你也可以
如果在VS创建web部署包时创建了parameters.xml文件,则会导致包中包含web部署参数。PackageWeb将拾取这些信息,并提示您输入这些信息
那么这些方法之间的区别是什么呢
使用选项#1,进入包的web.config已经被转换。您将没有机会再次转换文件。使用这两种方法,您可以指定web部署参数值,以便满足您的需要。如果要将大块XML从一个环境修改到另一个环境,那么web.config转换可能是有益的。因此,PackageWeb可能是一个更好的选择
使用选项#1,您必须手动创建SetParameters.xml文件。使用PackageWeb,您可以使用WhatIf选项运行整个流程。系统将提示您输入值,并为您创建设置文件
您可以轻松地自动化这两种方法。PackageWeb基本上构建在parameters.xml/setparameters.xml技术之上,并提供了一组超级功能
如果你想用最少的运动部件使事情尽可能简单,我建议选择1,因为如果需要,你可以直接调用msdeploy.exe
如果您希望简化发布的自动化,并且更喜欢PowerShell而不是标准命令提示符,请尝试PackageWeb
我在PackageWeb上有一个5分钟的视频。如果您正在发布web部署包,我建议您尝试一下。如果它不能满足您的需要,请告诉我,因为我们以后可能会以更正式的方式使用我们在PackageWeb中学习的内容。我们使用#5,而且它工作得非常好。将MSBuild用于发布配置文件提供了一系列灵活性(项目特别有用)
在我们的部署管道中,只有网站包、构建/部署目标和发布配置文件可供部署阶段使用。源代码(包括项目文件)仅在构建/测试阶段使用
仅供参考,我们专门使用发布概要文件,因为您很快就会遇到将特定于环境的服务器详细信息/凭据、跳过子句和参数值保存在一起的问题。WPP/Publish配置文件在
pubxml
文件中跟踪所有这些内容,而MSBuild的功能允许对常见但“嘈杂”的任务使用一些很好的配置“助手”约定