VS2012 Web Deploy Package创建应用程序池

Sni*_*tor 6 iis msdeploy visual-studio-2012

我在VS2012中有一个Web应用程序项目,我使用"Web部署包"发布.我希望此程序包包含应用程序池设置,特别是创建 IIS应用程序池并将新创建的应用程序分配给它.

我熟悉项目配置为使用IIS实例(不是IIS Express)时可用的"包括此Web项目使用的应用程序池设置"选项,但IIS配置不是项目文件的一部分,因此不是源代码受控.当有人在没有经过精心配置IIS的机器上构建部署包时会发生什么?不理想.

那么,我还可以将AppPool设置添加到我的Web部署包中吗?我知道appPoolConfig提供程序只是IIS7 +,我很好用这个限制.我过去一直反对这个问题,从来没有找到解决方案.18个月后,我们有了一个新的VisualStudio版本和一个新的网络发布管道,是否有新的选项来解决这个问题?或者也许是我第一次解决这个问题时错过了什么?

编辑

好的,我看到以下选项:

  1. 配置我的项目以同步IIS实例中的设置.如上所述,我不喜欢它,因为它将设置置于项目之外,这意味着必须精心配置环境以构建+发布.此外,它还拖拽了我不希望包含的其他IIS设置.
  2. 将某些内容注入Web发布管道(WPP)以修改archive.xml.我过去曾玩过这种玩具并且成功有限.一个问题是管道与直接在archive.xml文件上工作并不完全合作,另一个问题是涉及一些更加神秘的属性,比如MSDeploy.MSDeployProviderOptions看起来有一些Base64编码的二进制文件?不知道该放什么.
  3. 找到一个可以做我想要的现有"提供者".我可能在这里运气不好,appPoolConfig提供者似乎只想读/写IIS,而不是设置的XML文件.有人知道吗?
  4. 编写我自己的"提供者"以生成清单输出条目.我不确定,是否可以编写使用现有提供程序名称写入清单的自定义提供程序?如同,MyCustomPoolProviderappPoolConfig部分写入清单?这听起来像是一种潜在的痛苦运动,可能会或可能不会起作用.我还需要弄清楚进入的编码MSDeploy.MSDeployProviderOptions吗?

我感觉Web Deploy对于我正在努力实现的目标的根本障碍是它严格依赖于"提供者".预先存在的提供程序主要用于IIS同步,而不是主要开发和发布.碰巧这些提供商中的一些可以通过MSBuild 相对容易地连接,但大多数人坚持从IIS中提取数据,就是这样.

Ric*_*lay 1

您对提供程序的理解是正确的appPoolConfig,因为它只能在应用程序池之间同步,不能直接提供配置。您可能会做的是以表单package(即msdeploy -verb:sync -source:appPoolConfig=PoolName -dest:package=apppool.zip)的形式保留有问题的 appPool 的副本,并尝试劫持管道,以便 MSDeploy 调用将应用程序内容添加到包中,而将现有内容保留在那里。

或者,您始终可以将包分开,并通过对 MSDeploy 的不同调用来部署它们。

仅供参考,MSDeploy.MSDeployProviderOptions它只是打包时提供给提供者的参数的编码版本。例如,-source:dirPath=c:\,ignoreErrors=0x10293847 -dest:package=package.zip将值打包ignoreErrors