2011-07-27 93 views

回答

24

我不得不從configuration節點中刪除命名空間屬性。聲明的模式和我正在使用的元素之間存在一些衝突。

xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0" 
+1

我正在爲這個問題尋找一個解決方案,這是唯一在網絡上爲我工作的答案,謝謝! – saman0suke

17

我想給別人這裏更詳細的解答。

在Visual Studio 2010中,web.config轉換引擎不尊重xmlns聲明。因爲如果你的源web.config有一個xmlns聲明,並且如果你創建了一個轉換,那麼這個轉換將不起作用。這是因爲當我們執行XPath來識別應該被替換的源時,我們無法找到值。爲了解決這個問題,你應該移除源web.config中的xmlns聲明以及變換。

就這麼說,在Visual Studio 2010中SP1我們修復了名稱空間錯誤。所以你的源代碼web.config以及你的轉換必須在xmlns上達成一致,如果有的話,另一個必須具備它。

我懷疑你正在使用SP1以前的位,但不確定。爲了確保在升級到SP1時行爲不會發生變化,我建議您從源web.config中刪除xmlns聲明以及轉換。 web.config文件中不需要xmlns,因此可以安全地刪除它。

+0

我是對的,它有可能解決這個轉換文件中命名空間的錯誤,匹配轉換文件中的相應xmlns?它不好從xml中刪除命名空間 - 那麼它將與xml處理器完全不同xml ... –

+0

您不需要命名ns元素,您可以使其與默認xmlns一起工作,但它們必須處於打開狀態既是來源也是變換。這就是說。 對於web.config,如果存在xmlns,則沒有區別。建議不要它(也解釋了爲什麼在VS中創建新項目時web.config上沒有xmlns)。 –

+0

我們使用的轉換不僅適用於web.config類型的xml = \ –

相關問題