2011-07-27 10 views
23

TeamCityのweb.configファイルを変換する際に、次のエラーが発生します。それは要素で起こる、<applicationSettings xdt:Transform="Replace">なぜこのweb.configトランスフォームは、applicationSettings要素が見つからないと言っていますか?

ソースドキュメントんの要素は、 '/設定/ applicationSettings'

ソースファイルは、この設定を持っていると一致します。どのようにこれを解決するための任意のアイデア?

答えて

24

configurationノードから名前空間属性を削除する必要がありました。宣言されたスキーマと使用していた要素には多少の矛盾があります。

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

私はこの問題の解決策を探していましたが、これは私にとってうまくいったWeb上の唯一の答えです。ありがとう! – 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宣言を削除することをお勧めします。 xmlnsはweb.configファイルでは不要なので、削除することは安全です。

+0

私は正しく、変換ファイル内の名前付き名前空間でこのバグを回避することが可能です、変換されたファイルから対応するxmlnsに一致しましたか?それはxmlから名前空間を削除するのは良いことではない - それはxmlプロセッサのポイントから完全に別のXMLになります... –

+0

名前付きのns要素は必要ありません。デフォルトのxmlnsで動作させることができますが、ソースとトランスフォームの両方。それが言われている。 web.configには、xmlnsがあるかどうかに違いはありません。それを持っていないことをお勧めします(VSで新しいプロジェクトを作成するときにweb.configにxmlnがない理由についても説明します)。 –

+0

web.configの種類だけでなく、xml = \ –

関連する問題