[英]Web Deploy (MSDeploy) 3.6 replace rule to rename a file
我在命令行上使用 msdeploy 使用針對dirPath
源和目標提供程序的sync
動詞來部署 Windows 服務。 到現在為止還挺好。
我的項目的構建資產具有每個環境的配置文件,在部署到特定環境期間,我想使用替換規則將目標環境的配置文件重命名為默認配置文件名,但無論我如何設計替換規則,似乎都沒有讓我得到我想要的結果。 我嘗試了許多不同的規則配置,但沒有運氣,但似乎最合乎邏輯的是這個:
-replace:objectName=filePath,scopeAttributeName=path,scopeAttributeValue=Service\.Dev\.exe\.config,match=Service\.Dev\.exe\.config,replace=Service.exe.config
如果我在沒有替換規則的情況下部署Service.Dev.exe.config
和Service.exe.config
都部署了預期的相應內容。 一旦我添加了上面的替換規則,我就得到了Service.exe.config
並且它從源中獲得了該文件的內容,而不是我希望的Service.Dev.exe.config
的內容。 如果我交換match
的規范並replace
組件(並相應地更改正則表達式 <-> 純文本)以達到:
-replace:objectName=filePath,scopeAttributeName=path,scopeAttributeValue=Service\.Dev\.exe\.config,match=Service\.exe\.config,replace=Service.Dev.exe.config
我只是獲得了Service.Dev.exe.config
的內容,其中包含Service.exe.config
的內容,而目標中沒有Service.exe.config
。
我確定我遺漏了一些明顯的東西,但它是什么?
這並不能直接回答您的問題,但我認為它是解決您的根本問題的更好方法。
這里真正的問題是不同環境的配置管理。 許多開發人員像您一樣為每個環境創建不同的配置。 這種方法需要在不同的配置文件中進行大量重復,這很容易不同步。
我發現的跨不同環境管理配置的最佳方法是 WebDeploy 參數化。 它類似於配置轉換,因為您有一個經過調整的基本配置文件,因此重復少得多。 然而,參數化是首選,因為它在部署時而不是構建時應用更改。 我們將此用於 50 多個應用程序並取得了巨大成功。
這是一篇包含更多詳細信息的博客文章 - http://www.dotnetcatch.com/2014/09/08/parameterizationpreview-visual-studio-extension/
匹配和替換應該交換
match=Service.Dev.exe.config,replace=Service\\.exe\\.config
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.