簡體   English   中英

Web Deploy (MSDeploy) 3.6 替換規則重命名文件

[英]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.configService.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM