【发布时间】:2013-01-15 21:41:29
【问题描述】:
我在 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 中提取数据,仅此而已。
【问题讨论】:
标签: iis visual-studio-2012 msdeploy