我在 VS2012 中有一个 Web 应用程序项目,我正在使用“Web 部署包”发布它。我希望这个包包含应用程序池设置,特别是创建一个 IIS 应用程序池并将新创建的应用程序分配给它。
我熟悉当项目配置为使用 IIS 实例(不是 IIS Express)时可用的选项“包括此 Web 项目使用的应用程序池设置”,但 IIS 配置不是项目文件的一部分,因此不是源受控。当有人在没有精心配置 IIS 的机器上构建部署包时会发生什么?不理想。
那么,我还能如何将 AppPool 设置放入我的 Web 部署包中?我知道 appPoolConfig 提供程序仅是 IIS7+,我对这个限制很好。过去我一直在努力解决这个问题,但从未找到解决方案。18 个月后,我们有了一个新的 VisualStudio 版本和一个新的网络发布管道,是否有新的选项来解决这个问题?或者当我第一次解决这个问题时我错过了什么?
编辑
好的,我看到以下选项:
- 将我的项目配置为从 IIS 实例同步设置。如前所述,我不喜欢这个,因为它将设置放在项目之外,这意味着必须精心配置环境以构建 + 发布。此外,它还会拖累我不想包含的其他 IIS 设置。
- 在 web-publishing-pipeline (WPP) 中注入一些东西来修改 archive.xml。我过去曾玩弄过这个并且取得了有限的成功。一个问题是管道与直接处理 archive.xml 文件不完全合作,另一个问题是涉及一些更神秘的属性,比如
MSDeploy.MSDeployProviderOptions
似乎有一些 Base64 编码的二进制文件?不知道该放什么。 - 找到可以做我想做的现有“提供者”。我可能在这里不走运,
appPoolConfig
提供者似乎只想读/写 IIS,而不是设置的 XML 文件。有人知道吗? - 编写我自己的“提供程序”来生成清单输出条目。我不确定,是否可以编写一个自定义提供程序,使用现有提供程序的名称写入清单?如,
MyCustomPoolProvider
将appPoolConfig
部分写入清单?这听起来像是一种可能会或可能不会起作用的潜在痛苦练习。我还需要弄清楚任何内容的编码MSDeploy.MSDeployProviderOptions
吗?
我觉得 Web Deploy 的基本障碍是我想要完成的工作,它是多么严格地依赖“提供者”。预先存在的提供程序主要是为 IIS 同步设计的,而不是主要的开发和发布。碰巧的是,其中一些提供程序可以相对容易地通过 MSBuild 挂钩,但大多数人坚持从 IIS 中提取数据,仅此而已。