6

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

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

那么,我还能如何将 AppPool 设置放入我的 Web 部署包中?我知道 appPoolConfig 提供程序仅是 IIS7+,我对这个限制很好。过去我一直在努力解决这个问题,但从未找到解决方案。18 个月后,我们有了一个新的 VisualStudio 版本和一个新的网络发布管道,是否有新的选项来解决这个问题?或者当我第一次解决这个问题时我错过了什么?

编辑

好的,我看到以下选项:

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

我觉得 Web Deploy 的基本障碍是我想要完成的工作,它是多么严格地依赖“提供者”。预先存在的提供程序主要是为 IIS 同步设计的,而不是主要的开发和发布。碰巧的是,其中一些提供程序可以相对容易地通过 MSBuild 挂钩,但大多数人坚持从 IIS 中提取数据,仅此而已。

4

1 回答 1

1

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

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

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

于 2013-01-20T10:49:42.580 回答