2012-01-10 27 views

回答

4

可以用Web配置文件替換某些部分(用xPath查詢或正則表達式指定)。使用-declareParam en -setParam命令行開關。

像這樣

msdeploy -verb:sync -source:apphostconfig="Default Web Site" -dest:package=ParameterPackage.zip -declareParam:name=param,kind=XmlFile,scope=web.config,match=//add/@value 

左右:

msdeploy -verb:sync -source:package=ParameterPackage.zip -dest:auto -setParam:name=param,value=MyDefaultWebPage.htm 

,如果你使用命令行你可以找到更多信息here

如果您在IIS中從IIS導入和導出包,則可以創建一個parameters.xml文件。 Vishal Joshi有很多關於如何使用msdeploy的好帖子(例如this

3

是的,你可以做到這一點。我剛剛在http://sedodream.com/2012/02/14/HowToUpdateASingleFileUsingWebDeployMSDeploy.aspx上發佈了一個博客,但我也在爲您複製下面的內容。

有一天,我看到一個問題發佈在StackOverflow上,詢問是否可以使用MSDeploy更新web.config。我實際上使用了一種技術,我在之前的職位How to take your web app offline during publishing中更新了一個單獨的文件,但沒有太多提及。無論如何,我將向您展示如何使用MSDeploy更新單個文件(本例中爲web.config)。

您可以使用contentPath提供程序來幫助更新單個文件。使用contentPath可以同步單個文件或整個文件夾。您還可以使用IIS應用程序路徑來解析文件/文件夾所在的位置。例如,如果我在名爲「C:\ Data \ Personal \ My Repo \ sayed-samples \ UpdateWebConfig」的本地文件夾中有一個web.config文件,並且想要更新我的IIS站點UpdateWebCfg在我的文件夾的默認網站中運行我會使用下面顯示的命令。

%msdeploy% -verb:sync -source:contentPath="C:\Data\Personal\My Repo\sayed-samples\UpdateWebConfig\web.config" -dest:contentPath="Default Web Site/UpdateWebCfg/web.config" 

從上面的命令,你可以看到我設置源內容路徑到本地文件,並使用IIS路徑{SITENAME}/{AppName的}/{文件路徑}的DEST內容路徑。在這種情況下,我正在更新在本地機器上運行在IIS中的站點。爲了更新在遠程機器上運行的程序,您必須將ComputerName和其他可能的值添加到-dest參數中。

您可以在我的github repo上查看此樣本的最新來源。

+0

謝謝說,我一直在尋找這個很長一段時間。我們不太喜歡標記化的想法,因爲然後我們無法存檔和查看將要部署的完整web.config,因爲標記替換髮生在部署時而不是構建時。我們將使用它來完全替換web.config,並將其與部署包一起歸檔的web.config的預先轉換副本進行完整替換。這樣,我們就可以獲得標記化的好處,而不會降低web.config轉換的便捷性 – 2016-10-27 19:09:28