淺析Visual Studio 2010中常見Web.Config變換

來源: 51CTO  發布時間: 2010-11-18 22:03  閱讀: 1616 次  推薦: 0   原文鏈接   [收藏]  
摘要:在這里我們將談到的是Visual Studio 2010中常見Web.Config變換,希望本文能對大家了解這些變換有所幫助。

  我最近一直在擺弄Visual Studio 2010 Beta版,我最喜歡的一個新的特點(新特點很多)是新版web.config變換。

  Web.config變換是啟動設定,所以你的每個編譯鏈接設置都有一個設置“delta”(默認的是Debug和Release)。當你建立你的解決方案(比如當你發布一個包的時候)你原始的Web.config會根據你的Web.debug.config文件中的設置變換(以debug設置為例)。

  有很多日志和MSDN可供你參考,但是我想我應該寫一個簡明扼要的帖子,它可以讓你熟悉怎樣進行一些常見的web.config變換。

  首先,回顧一下XDT的簡單知識(那個人很偉大)

  因為它屬于web.config替換,所以你得知道每個XML元素可以有兩個xdt屬性:xdt:Tranform 和 xdt:Locator。

  變換屬性:你想對XML元素干什么?
  你可能想替換它,可能想設置一個屬性(SetAttribute),或者移除一個屬性(RemoveAttribute),等等。

  屬性定位:需要變換的元素在哪里?

  你可能想要轉換一個符合特殊屬性值的元素。

  例1:替換所有的AppSettings

  這是一個極端的情況,只能在你想替換web.config的整個部分的時候用。這種情況我將替換web.config中所有的AppSettings并在web.release.config中進行新的設定(這句英文可能有問題,語法不通順!)。下面是我的基線web.config appSettings:

 
1. <appSettings>
2. <add key="KeyA" value="ValA"/>
3. <add key="KeyB" value="ValB"/>
4. </appSettings>

  現在在我的web.relaese.config文件里面,我應該創建一個appSettings程序,但是我把屬性xdt:Transform設置成了”Replace”因為我想替換整個元素。我沒有必要用xdt:Locator屬性,因為沒有什么東西需要去定位—我只是想清除原來的內容并替換所有的東西。

 
<appSettings xdt:Transform="Replace">
<add key="ProdKeyA" value="ProdValA"/>
<add key="ProdKeyB" value="ProdValB"/>
<add key="ProdKeyC" value="ProdValC"/>
</appSettings>

  請注意在這個web.release.config文件里我的appSettings程序段有三個鍵而不是兩個,而且他們也不盡相同。現在讓我們看看當我們發布的時候在產生的web.config文件中發生了什么:

 
<appSettings>
<add key="ProdKeyA" value="ProdValA"/>
<add key="ProdKeyB" value="ProdValB"/>
<add key="ProdKeyC" value="ProdValC"/>
</appSettings>

  正如我們所預料的-- web.config appSettings被web.release config中的值替換了。這很簡單!

  例2:替換一個特定的AppSetting的值

  例1可以說是一桿子打倒一片的做法,那么怎么做一點更加實際的東西呢?讓我們回到原始的AppSettings web.config例子:

 
<appSettings>
<add key="KeyA" value="ValA"/>
<add key="KeyB" value="ValB"/>
</appSettings>

  這次我們想要用更加適合產品環境的值來代替KeyB的鍵值。我們需要用到xdt:Transform 和 xdt:Locator兩個屬性。

  我們的辦法是定義一個appSettings程序段。開頭如下:

 
<appSettings>
<add key="KeyB" value="ProdValA" />
</appSettings>

  現在我們要添加變換,我們想替換任何跟這個鍵(KeyB)符合的appSetting。

 
<appSettings>
<add key="KeyB" value="ProdValA" xdt:Transform="Replace"
xdt:Locator="Match(key)" />
</appSettings>

  一旦我們發布,最后生成的Web.config文件看起來如下:

 
<appSettings>
<add key="KeyA" value="ValA"/>
<add key="KeyB" value="ProdValA"/>
</appSettings>

  非常棒—我們替換了keyB鍵卻保留了keyA鍵(和其他任何鍵,如果他們存在的話)。

  例3:Compilation Debug設置成”true”

  這個情況簡單,因為微軟公司把即開即用的軟件基礎架構給了我們—但是我還是想把它在這里再寫一遍,因為它闡明了一個常見的情況,而且表明如果有更多的變換,那么就把Compilation Debug設置成”true”。

 
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
</system.web>

  也有很多方法去進行設定SetAttributes,移除元素,插入元素,等等。

  學無止境

  顯然,這只是些淺顯的介紹,但是這就是現在我所需要涉及的深度。在我下次寫帖子之前,你可以去看看web.config 變換的msdn參考文獻,地址是:

  http://msdn.microsoft.com/en-us/library/dd465326%28VS.100%29.aspx

  祝你玩得開心!

0
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()