web-dev-qa-db-ja.com

web.config、configSource、および「「xxx」要素が宣言されていません」という警告

ConfigSource属性を使用して、ひどく扱いにくいweb.configファイルをいくつかのセクション(connectionStrings、認証、ページなど)の個別のファイルに分割しました。

これは正常に機能していますが、セクション「スニペット」を保持する個々のxmlファイルにより、VSで警告が発生します。

たとえば、roleManager.configという名前のファイルがロールマネージャーセクションに使用され、次のようになります。

<roleManager enabled="false">
</rolemanager>

ただし、VSのroleManager要素の下に青い波線が表示され、次の警告が表示されます。The 'roleManager' element is not declared

これは有効なxmlやスキーマなどと関係があると思います。これを修正する簡単な方法はありますか?個々のファイルに追加できるものはありますか?

ありがとう

P.S.このようにweb.configファイルを分割するのは悪い習慣だと聞きました。しかし、なぜ本当に理解していません-誰かが私を照らすことができますか?

25
UpTheCreek

カスタム構成ファイルを使用してこの問題の回避策を検索したところ、この解決策が見つかりました。が正しいかどうかわからない。

問題は、VSが.config(xml)を検証するためのスキーマを見つけられないことです。 「ネイティブ」構成要素を使用している場合、またはカスタム.configファイルを作成する場合は、すべてのxmlドキュメントにスキーマを設定する必要があります。

デフォルトでは(たとえばVS9では)すべてのxmlファイルは\ Microsoft Visual Studio 9.0\Xml\Schemas\DotNetConfig.xsdを使用しますが、使用するスキーマをさらに追加できます。

スキーマを割り当てる前に、スキーマを作成する必要があります。

独自のcustom.configに基づいて新しいスキーマを作成するには:

  1. カスタム設定ファイルを開く
  2. メニューバーXML->スキーマの作成
  3. それを保存

スキーマを割り当てるには:

  1. カスタム設定ファイルを開く
  2. プロパティパネルで:参照ボタン[..]をクリックします
  3. 「使用」列を最近作成したスキーマに設定します

必要な数を割り当てることができます。または、すべての異なるカスタム.configファイルに対して1つのスキーマを使用します

(申し訳ありませんが、私の英語はあまり上手ではありません)

28
acromm

Web.configファイルのスキーマでは、個々のファイルに「分割」したこれらのカスタム構成セクションが宣言されていないため、青い波線が表示されると思います。

これを調査すると、私のソリューションのいくつかに同じ問題があることがわかりましたが、Microsoftから提供された構成セクションには波線がありません。例:appsettingsとconnectionstringsを独自のファイルに抽出しましたが、それらは波線を取得しませんが、カスタムのものは取得します。

Schemas.Microsoft.com/.netconfiguration/v2.0でMicrosoftスキーマを表示しようとしましたが、ダウンロードしようとすると404が表示されます。

私が言おうとしているのは、MSスキーマのコピーを取得し、それを変更して外部構成ファイルを含めると、恐ろしい波線を取り除くことができるはずです。

HTH、ランス

2
Lanceomagnifico