Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自动部署到具有不同app.config设置的多个服务器?_C#_Deployment_Continuous Integration - Fatal编程技术网

C# 自动部署到具有不同app.config设置的多个服务器?

C# 自动部署到具有不同app.config设置的多个服务器?,c#,deployment,continuous-integration,C#,Deployment,Continuous Integration,我知道有很多像这样的问题,但到目前为止我还没有找到一个好的解决办法。我见过的最好的解决方案是国产的,但在实现定制工具之前,我想听听您的看法。现在我们开始: 我有一个.NET解决方案,其中包含两个web应用程序和一些windows服务。我想自动将这些应用程序部署到10-20台不同的服务器上,但每台服务器上的app/web.config文件可能有不同的值。 Microsoft对此问题的答案是在开发人员计算机上本地拥有10-20个不同的web.config文件,然后使用configuration ma

我知道有很多像这样的问题,但到目前为止我还没有找到一个好的解决办法。我见过的最好的解决方案是国产的,但在实现定制工具之前,我想听听您的看法。现在我们开始:

我有一个.NET解决方案,其中包含两个web应用程序和一些windows服务。我想自动将这些应用程序部署到10-20台不同的服务器上,但每台服务器上的app/web.config文件可能有不同的值。

Microsoft对此问题的答案是在开发人员计算机上本地拥有10-20个不同的web.config文件,然后使用configuration manager选择正确的文件。但这还不够好,因为开发人员不知道生产服务器设置,他们也不应该知道

理想的解决方案是包含某种“部署模型”,其中定义了生产服务器及其设置,并可将其与某些部署脚本(可以是
Powershell
)一起用作构建服务器中的一个步骤(我使用的是
TeamCity
)。这可以通过在将解决方案复制到远程服务器之前替换配置设置来实现。但这是一项乏味而耗时的任务

另一种解决方案是使用“configSource”指向具有固定名称的文件夹,但这里的问题是配置文件的某些部分(如serviceModel)不能与configSource一起使用


所以我还没有找到最好的答案。有什么想法吗?

[Blant vendor post]我们在产品中使用的正是这种部署模型

基本思想是定义一个部署过程,其中包括更新配置文件的步骤(对于ASP应用程序,app.config和web.config是最常见的)。这些差异可以是每个服务器或每个逻辑环境(开发测试、qa、阶段、产品…)。或者,您可以将模板app.config文件直接放在uDeploy中,我们将在部署时将其写出

用于检索用于部署和配置应用程序池和服务器的版本以及IIS的工具。它还旨在跟踪TeamCity构建的多个服务和web应用程序如何作为一个发布集结合在一起

从表面上看,听起来我们可能很合身。请随时直接联系我eric@urbancode.com. 干杯[/blatant vendor post]

我正在使用它来处理配置文件。它对多个环境/服务器使用一个映射文件。您可以通过Excel编辑映射文件。它很容易使用。
在自定义PS脚本中调用XmlPreprocess并将服务器名称作为环境参数传递。

我们部署模型的一部分(也是一个针对许多不同服务器的TeamCity集中构建)是自动创建部署脚本,作为MSBUILD文件的一部分,并围绕MSDEPLOY/web deployment 2.0进行部署

该构建将自动生成适合使用MSDEPLOY部署的候选构建,还将生成一个powershell/cmd scriptlet,该脚本将选择适当的配置文件并将其复制到位

然后,部署到所有服务器就变成了将这些单独的部署脚本串在一起(即使用批处理文件)的情况。由于MSDEPLOY只发送文件更改,因此它通常非常快速,可用于备份和部署,因此作为部署脚本的一部分,它将:

  • 对适当的服务器(如Web1)进行备份,并将其粘贴到网络共享上
  • 将适当的包部署到服务器(Web1),根据需要转换任何文件(例如Web.Web1.Config->Web.Config)
  • 写下任何必要的日志
  • 构建过程还会抛出一个“撤消”脚本,将相应的服务器恢复到备份中

    还有更多关于MSDEPLOY的内容。它也可以用于数据库等


    只是一个建议,可能会有帮助:)

    您正在起诉哪些(其他)工具?新的软件包管道?我一直在使用的一些工具是:VS2010->SVN->MSBuild->TeamCity->用于部署的定制PS脚本。我没有使用WebDeploy,因为我既有Web应用程序也有Windows服务。请在Release中查看,它与TFS的集成比TeamCity更好,但可能仍然可以用来解决您的问题(我是该产品的开发人员):我知道这是几个月前的事了,但我认为这是让我走上正确方向的答案。谢谢