我在VS2012中有一个Web应用程序项目,我使用“Web部署包”发布。我希望此软件包包含应用程序池设置,特别是创建 IIS应用程序池并将新创建的应用程序分配给它。
我熟悉项目配置为使用IIS实例(不是IIS Express)时可用的“包含此Web项目使用的应用程序池设置”选项,但IIS配置不项目文件的一部分,因此不受源控制。如果有人在未经过精心配置IIS的计算机上构建部署包,会发生什么?不理想。
那么,我还可以将AppPool设置添加到我的Web部署包中吗?我知道appPoolConfig提供程序只是IIS7 +,我很好用这个限制。我过去一直反对这个问题,从来没有找到解决方案。 18个月后,我们有了一个新的VisualStudio版本和一个新的Web发布管道,是否有新的选项来解决这个问题?或者也许是我第一次解决这个问题时错过了什么?
修改
好的,我看到以下选项:
MSDeploy.MSDeployProviderOptions
似乎有一些Base64编码的二进制文件?不知道该放什么。appPoolConfig
提供者似乎只想读/写IIS,而不是设置的XML文件。有没有人知道吗?MyCustomPoolProvider
将appPoolConfig
部分写入清单?这听起来像是一种潜在的痛苦运动,可能会或可能不会起作用。我还需要弄清楚进入MSDeploy.MSDeployProviderOptions
的所有内容的编码吗?我感觉Web Deploy对于我正在努力实现的目标的根本障碍在于它是如何严格依赖“提供者”的。预先存在的提供程序主要用于IIS同步,不主要开发和发布。碰巧这些提供商中的一些可以相对通过MSBuild轻松连接,但大多数人坚持从IIS中提取数据,就是这样。
答案 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
值。