Msbuild 使用msdeploy&;一次构建并部署到多个环境;Visual Studio 2012

Msbuild 使用msdeploy&;一次构建并部署到多个环境;Visual Studio 2012,msbuild,msdeploy,Msbuild,Msdeploy,致力于为多个解决方案集中配置、应用程序设置和连接字符串,同时从命令行切换到使用msdeploy部署web应用程序。理想情况下,我希望构建一次包,并在包部署到每个环境时获得最新的配置。我需要一些关于最佳方法的建议 使用Parameters.xml和SetParameters.xml文件动态交换设置和连接字符串。看 使用machine.config或服务器级别的web.config文件存储常用应用程序设置和连接字符串 使用packageweb NuGet包,从中可以将web.config转换与msd

致力于为多个解决方案集中配置、应用程序设置和连接字符串,同时从命令行切换到使用msdeploy部署web应用程序。理想情况下,我希望构建一次包,并在包部署到每个环境时获得最新的配置。我需要一些关于最佳方法的建议

  • 使用Parameters.xml和SetParameters.xml文件动态交换设置和连接字符串。看
  • 使用machine.config或服务器级别的web.config文件存储常用应用程序设置和连接字符串
  • 使用packageweb NuGet包,从中可以将web.config转换与msdeploy一起使用
  • 使用file或configSource属性以及SetParameters指向不同的配置文件,但必须是相对于web根目录的
  • 使用发布配置文件。看见
  • 谢谢

    我们使用选项1,而且效果很好。我们使用这种方法部署到大约30-40个站点和应用程序

    我认为选项2会给您或开发人员带来麻烦。您必须确保在部署时从配置中删除带有设置的部分,或者将它们锁定在服务器上,以便本地配置无法添加它们

    对于选项#3,您必须进行多个构建以获得转换后的配置文件。如果要部署大量站点,这也不是很可行

    选项4可能有效,但您可能会在这里遇到限制。要么整个部分都在一个单独的文件中,要么全部都在主文件中,所以没有中间的部分


    选项#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的功能允许对常见但“嘈杂”的任务使用一些很好的配置“助手”约定