VS2012 Web Deploy Package创建应用程序池

时间:2013-01-15 21:41:29

标签: iis visual-studio-2012 msdeploy

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

我熟悉项目配置为使用IIS实例(不是IIS Express)时可用的“包含此Web项目使用的应用程序池设置”选项,但IIS配置项目文件的一部分,因此不受源控制。如果有人在未经过精心配置IIS的计算机上构建部署包,会发生什么?不理想。

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

修改

好的,我看到以下选项:

  1. 配置我的项目以同步IIS实例中的设置。如上所述,我不喜欢它,因为它将项目的置于之外,这意味着必须精心配置环境以构建+发布。此外,它还拖拽了我不希望包含的其他IIS设置。
  2. 将某些内容注入Web发布管道(WPP)以修改archive.xml。我过去曾玩过这种玩具并且成功有限。一个问题是管道与直接在archive.xml文件上工作不完全合作,另一个问题是涉及的一些更加神秘的属性,比如MSDeploy.MSDeployProviderOptions似乎有一些Base64编码的二进制文件?不知道该放什么。
  3. 找到可以做我想要的现有“提供者”。我可能在这里运气不好,appPoolConfig提供者似乎只想读/写IIS,而不是设置的XML文件。有没有人知道吗?
  4. 编写我自己的“提供者”以生成清单输出条目。我不确定,是否可以编写使用现有提供程序名称写入清单的自定义提供程序?如同,MyCustomPoolProviderappPoolConfig部分写入清单?这听起来像是一种潜在的痛苦运动,可能会或可能不会起作用。我还需要弄清楚进入MSDeploy.MSDeployProviderOptions的所有内容的编码吗?
  5. 我感觉Web Deploy对于我正在努力实现的目标的根本障碍在于它是如何严格依赖“提供者”的。预先存在的提供程序主要用于IIS同步,主要开发和发布。碰巧这些提供商中的一些可以相对通过MSBuild轻松连接,但大多数人坚持从IIS中提取数据,就是这样。

1 个答案:

答案 0 :(得分: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值。