2015-11-13 40 views
1

我希望這是一個相當直接的問題...從我在網上發現的情況來看,通過Microsoft Release Management管理更改的web.config連接字符串的最佳方法是使用tokanized web.config文件(即複製web.config並將其重命名爲web.tokenized.config),然後重新連接字符串。發佈管理 - 使用Tokenize更改連接字符串

但是我沒能找到的是爲什麼需要創建一個單獨的'tokenized'web.config ...該文件是否通過web.config引用?在原始web.config中應用標記化參數是不好的做法嗎?

回答

1

documentation「一個版本是當地的開發過程中使用您的正常配置文件,另一個是具有相同內容的相應文件,但而不是有你的局部變量的值,令牌已經放在那裏。構建活動將在構建之前交換這兩個文件,以便我們最終在放置位置放置標記化版本的配置文件。「

在我看來,維護一個配置文件的副本是一個痛苦的維護開銷,因爲它們必須保持同步。如果可能的話,最好生成標記配置文件作爲構建過程的一部分。對於web.config,您可以將轉換功能與/p結合使用:UseWPP_CopyWebApplication = true/p:PipelineDependsOnBuild = false MSBuild參數。我有一個博客文章here有詳細信息。

0

爲了從Visual Studio本地調試/運行應用程序,您需要web.config的「untokenized」版本。

+0

這是有道理的...所以當項目發佈時,它會知道使用web.tokenized.config而不是web.config?我需要把它放在我自己的某個地方嗎? – CJH

+0

在構建期間,TFS將替換令牌;你有以下的MSBuild參數添加到構建定義: '/ P:UseWPP_CopyWebApplication = TRUE/P:PipelineDependsOnBuild = FALSE' 你可以找到更多的細節[這裏](http://blogs.msdn.com/ b/alming/archive/2015/01/19/using-web-config-transformations-and-release-manager.aspx) – ds19

+0

這一切聽起來就像我之後的事情,而且我已經非常接近實現它了。我已經安裝了我的web.release.config,我的web.config中有匹配的連接字符串...我已經配置了我的構建定義,但是在它進入TFS的時候,我得到的錯誤是程序包位置不能(當它嘗試處理組件時,有趣的是,如果我取出Release/Any CPU的Build - > Configurations值,則它會構建並部署成功,但web.release.config不會覆蓋web.config ...? :( 很近!! – CJH