2013-01-15 38 views
6

我在VS2012中使用「Web部署包」發佈了Web應用程序項目。我希望此軟件包包含應用程序池設置,具體爲創建 IIS應用程序池並將新創建的應用程序分配給它。VS2012 Web部署包創建應用程序池

我熟悉當項目配置爲使用IIS實例(不是IIS Express)時可用的「包含此Web項目使用的應用程序池設置」選項,但IIS配置爲而不是項目的一部分文件,因此不受源代碼控制。當有人在沒有精心配置IIS的機器上構建部署包時會發生什麼?不理想。

那還有什麼方法可以讓AppPool設置進入我的web部署包?我明白appPoolConfig提供程序只是IIS7 +,我沒有限制。我在過去一直反對這個問題,並且從未找到解決方案。 18個月後,我們有了一個新的VisualStudio版本和一個新的網絡發佈管道,是否有新的選擇來解決這個問題?或者當我第一次解決這個問題時可能錯過了一些東西?

編輯

OK,我看到下面的選項:

  1. 配置我的項目從IIS實例同步設置。如前所述,我不是這個項目的粉絲,因爲它將設置置於項目的外部之外,這意味着環境必須經過精心配置以構建+發佈。再加上它拖曳了其他我不想包含的IIS設置。
  2. 將某些內容注入到Web發佈管道(WPP)中以修改archive.xml。我過去一直在玩這個,並且成功有限。一個問題是管道並不直接與archive.xml文件協同工作,另一個問題是一些更隱蔽的屬性,如MSDeploy.MSDeployProviderOptions似乎有一些Base64編碼二進制文件?不知道該放什麼。
  3. 找到一個可以做我想做的事情的現有「提供者」。我可能在這裏運氣不佳,appPoolConfig提供者似乎只想讀取/寫入IIS,而不是設置的XML文件。有人知道嗎?
  4. 寫我自己的「提供者」來產生清單輸出條目。我不確定,是否可以編寫一個使用現有提供程序的名稱寫入清單的定製提供程序?如,MyCustomPoolProviderappPoolConfig段寫入清單?這聽起來像是一個潛在的痛苦的練習,可能會或可能不會工作。我仍然需要弄清楚MSDeploy.MSDeployProviderOptions的編碼嗎?

我感覺Web Deploy的基本障礙是我試圖完成的是如何嚴格地依靠「提供者」。原有的提供者主要是爲IIS同步而設計的,不是的主要開發和發佈。恰巧其中一些提供商可以通過MSBuild輕鬆掛接到相對,但大多數人堅持要從IIS獲取數據,就是這樣。

回答

1

您對appPoolConfig供應商的理解是正確的,因爲它只能在應用程序池之間同步,並且不能直接與配置一起提供。你可能做的是在package表格中保存一個appPool的副本。msdeploy -verb:sync -source:appPoolConfig=PoolName -dest:package=apppool.zip),並嘗試劫持管道,以便MSDeploy調用將應用程序內容添加到包中,從而將現有內容留在那裏。

或者,您可以隨時將這些軟件包分開並通過對MSDeploy的不同調用進行部署。

僅供參考,MSDeploy.MSDeployProviderOptions僅僅是供應商打包時提供給參數的編碼版本。例如,-source:dirPath=c:\,ignoreErrors=0x10293847 -dest:package=package.zip會打包ignoreErrors值。

+0

「MSDeploy.MSDeployProviderOptions」編碼模式的任何線索?並不是說它可以輕鬆注入到WPP管道中,但能夠直接調整'archive.xml'的內容會給予很大的靈活性。忘記提供者,可以製作一個生成必要xml的工具,捆綁它,並且你很好部署。 – Snixtor

+0

捆綁的archive.xml的格式未定義。但是,在WPP調用MSDeploy之前,您可能會將元素(減去MSDeployProviderOptions)直接注入源清單*中。 –

+0

源清單需要是提供者*讀取*選項的集合,但不是嗎?如在中,源清單中的appPoolConfig部分仍將嘗試從IIS讀取,這僅僅是提供者的本質。 – Snixtor