【问题标题】:VS2012 Web Deploy Package to create application poolVS2012 Web Deploy Package 创建应用程序池
【发布时间】:2013-01-15 21:41:29
【问题描述】:

我在 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 中提取数据,仅此而已。

【问题讨论】:

    标签: iis visual-studio-2012 msdeploy


    【解决方案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 值。

    【讨论】:

    • MSDeploy.MSDeployProviderOptions 的编码模式有什么线索吗?并不是说它可以很容易地注入到 WPP 管道中,而是能够直接调整 archive.xml 的内容将提供很大的灵活性。忘记提供程序,只需制作一个生成必要 xml 的工具,将其打包,然后就可以进行部署了。
    • 捆绑的 archive.xml 的格式未定义。但是,您可能会在 WPP 调用 MSDeploy 之前将元素(减去 MSDeployProviderOptions)直接注入到源清单中。
    • 源清单需要是提供者 read 选项的集合,不是吗?例如,源清单中的 appPoolConfig 部分仍会尝试从 IIS 读取,这只是提供程序的性质。
    • @Snixtor - 是的,但是您可以保留一个包含您的 appPool 配置(之前从 IIS 同步但已提交到 SVN)的包(或 archiveDir)。在 WPP 创建包后,您可以将 package/archiveDir 同步到 WPP 的包中以添加 archiveDir。你需要确保你的 WPP 参数没有被清除,但这是一个值得说服的途径。
    猜你喜欢
    • 2017-01-06
    • 2017-10-14
    • 2013-03-28
    • 2012-09-17
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    相关资源
    最近更新 更多