2013-03-05 85 views
4

我們知道Visual Studio在發佈時轉換Web.config的功能非常棒。因此,我們可以有一些像在Web.Release.config以下取代Web.config中的原始值:如何強制在Visual Studio中使用配置轉換替換元素?

Web.config文件:

<add key="SomeKey" value="DebugValue"/> 

Web.Release.config:

<add key="SomeKey" value="ReleaseValue" xdt:Transform="Replace" xdt:Locator="Match(key)"/> 

只要在轉換配置中沒有拼寫錯誤,這一切都很好。因此,舉例來說,如果你在你的變換配置以下行:

<add key="SomeKeyTypo" value="ReleaseValue" xdt:Transform="Replace" xdt:Locator="Match(key)"/> 

然後「SomeKey」項目不會因爲更換改造將無法找到鑰匙,會悄悄地打印這樣的警告:

...\Web.Release.config: Warning : No element in the source document matches '/configuration/appSettings/add[@key='SomeKeyTypo']' 

問題是在某些情況下,如果您在主Web.config中更改了密鑰,並且您忘記在Web.Release.config中更改它,發佈時很可能不會讀取發佈輸出消息,並且您錯過了警告,因爲Debug值w會導致災難不適用於您的應用程序,而不是釋放值。

所以問題是,當你定義Web.Release.config轉換是有辦法表明是給定項目必須更換,如果關鍵是沒有找到罰球和錯誤而不是警告和基本上用一些錯誤代碼退出發佈?

回答

0

您可以將Visual Studio選項設置爲「將警告視爲錯誤」,然後引發阻止發佈任務完成的錯誤。您甚至可以將其配置爲僅將此特定警告視爲錯誤。

您可以通過轉到要部署的項目的屬性頁找到對話框,然後在底部的Build下面找到您的選項。

+1

這看起來像一個有趣的解決方法,但令人驚訝的是,它似乎不適用於變換警告!我將所有警告設置爲具有轉換的Web項目的錯誤,但仍將它們視爲黃色警告。它適用於其他類型的警告,比如當你聲明一個變量並且不使用它時,它完全忽略了變換警告!任何想法爲什麼?也許它只適用於編譯警告!? – kaptan 2013-04-01 18:40:47

+0

我前幾天開始看這個帖子,並認爲PostBuild步驟可能是一條可行的路。我今天晚些時候可能會尋找這樣的解決方案,然後回顧一下結果。雖然可能不像注意部署輸出那樣簡單.. – 2013-04-05 09:18:23

+0

如果您分享您的發現,那將是非常棒的:> – kaptan 2013-04-05 21:40:34