エラーの修正方法:スキーマを作成して「属性/要素のスキーマ情報が見つかりませんでした」


148

VS2010でC#を使用して記述されたWindowsフォームアプリケーションがあり、app.configファイルに次のエラーが表示されます。

Message 4   Could not find schema information for the attribute 'name'
Message 8   Could not find schema information for the attribute 'name'
Message 12  Could not find schema information for the attribute 'name'
Message 5   Could not find schema information for the attribute 'serializeAs'
Message 15  Could not find schema information for the element 'CCP_Utility.Settings1'
Message 2   Could not find schema information for the element 'CCP_Utility.Properties.Settings'
Message 3   Could not find schema information for the element 'setting'
Message 1   Could not find schema information for the element 'userSettings'
Message 6   Could not find schema information for the element 'value'

この問題を修正するには、コードを変更する必要がありますか?どこにすることができます私に何を編集CCP_Utility.Settings1してCCP_Utility.Properties.Settings

これがapp.configコードです:

<configuration>
<configSections>
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
        <section name="CCP_Utility.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        <section name="CCP_Utility.Settings1" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
    </sectionGroup>
  </configSections>
<userSettings>
  <CCP_Utility.Properties.Settings>
    <setting name="SourceDir" serializeAs="String">
      <value />
    </setting>
    <setting name="TargetDir" serializeAs="String">
      <value />
    </setting>
    <setting name="CorpID" serializeAs="String">
      <value />
    </setting>
  </CCP_Utility.Properties.Settings>
    <CCP_Utility.Settings1>
        <setting name="sourceDir" serializeAs="String">
            <value />
        </setting>
        <setting name="targetDir" serializeAs="String">
            <value />
        </setting>
    </CCP_Utility.Settings1>

   </userSettings>
</configuration>

これは、この質問の真似のように見えます:stackoverflow.com/questions/179927/…。@ user57433までに回答を確認してください。
rsbarro 2011年

@ rsbarro、EntLib構成ツールとDotNetConfig.xsdファイルはどこにありますか?
ブライアンマッカーシー、

ユーザーが質問に2つの回答を投稿したことに気づきませんでした。私は2番目の答えを参照していました。その答えは正しいですが、少し不明確だったので、以下でより詳細な答えを提供しました。
rsbarro

1
ありがとう、rsbarro!StingyJackの元の質問は、単なるカスタム構成セクションではなく、エンタープライズライブラリ構成セクションを使用したエラーに限定されていました。
リサ

回答:


169

UPDATE 2015年9月
この回答は引き続き賛成票を獲得しているため、一部の人にとっては役立つと思われるため、ここに残しますが、@ reexmonkeyおよび@Pressaccoからの他の回答を最初に確認してください。彼らはより良い結果を提供することがあります。

元の回答
これを試してください:

  1. Visual Studioでapp.configまたはweb.configファイルを開きます。
  2. [XML]メニューに移動し、[スキーマの作成]を選択します。このアクションにより、「app.xsd」または「web.xsd」という新しいファイルが作成されます。
  3. そのファイルをディスクに保存します。
  4. app.configまたはweb.configに戻り、編集ウィンドウで右クリックしてプロパティを選択します。そこから、生成したxsdがSchemasプロパティで参照されていることを確認します。ない場合は追加してください。

これにより、これらのメッセージが消えます。

私は自分のweb.xsdを自分のwebフォルダーのルートに保存しました(これは最適な場所ではないかもしれませんが、デモ目的のためだけです)、Schemasプロパティは次のようになります。

"C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ xml \ Schemas \ DotNetConfig.xsd" "Web.xsd"


10
@rsbarro、ご回答ありがとうございます!なぜ2つのxsdファイルがあるのですか?私はスキーマを作成し、ルートディレクトリに保存したapp-xsdを1つだけ作成しました。エラーは消えましたが、「グローバル要素 '構成'はすでに宣言されています」という警告が表示されます。これを修正する方法について何か考えはありますか?
ブライアンマッカーシー

2
プロパティダイアログを使用して、スキーマを選択するか、別のスキーマを追加します。app.configを表示しているときに、エディターウィンドウで右クリックし、[プロパティ]を選択します。表示されるプロパティエディタコントロールにスキーマが表示されます。また、Schemasの[...]ボタンをクリックすると、設定ファイルに使用するスキーマをGUIを使用して選択できます。
rsbarro

3
ありがとう。これはうまくいきましたが、なぜこれが起こるのかを理解するために読むことができる良い場所はありますか?DotNetOpenAuthに大量のコンテンツを追加してからedmxファイルを最初から再生成した後、突然web.configのスキーマを生成する必要が生じたようです。「あなたは多くのことを変えたので、何かがおかしくなった」というのは理にかなっています。一種の方法ですが、web.configファイルが自発的にスキーマを必要とする理由を知っておくと役立ちます。
froggythefrog 2013年

6
Web.xsdファイルを生成するときは、web / app.configセクション(ユーザーセクション)に追加するスキーマのみを含めます。既にデフォルトスキーマにある他のすべてを除外するか、他の.xsdを含めます。
パゴッティ2013

10
ダメダメダメ!!これは本当の問題ではないので、「解決策」ではありません。@pressaccoの回答を参照して投票してください。reexmonkeyの回答も機能します。なぜこの回答が非常に多くの肯定的な票を得ているのですか?1.単に無視してください!app.configまたはweb.configを閉じてコンパイルすると、メッセージも表示されません。2.必要はありませんが、.configプロパティを右クリックして、VS提供のXSDへのパスを修正して解決します。(@pressaccoの回答)3.または:プロジェクト設定のDotNetバージョンを変更し、元に戻します。2回繰り返します。(reexmonkeyの答え)。パッケージの更新で問題が発生する可能性があります。
pashute

217

問題を解決する最も迅速で簡単な方法:

  1. ソリューションエクスプローラーでプロジェクトアイコンを右クリックし、[プロパティ]を選択します。
  2. [アプリケーション]タブに移動し、以前の.NETターゲットフレームワークを選択します。
  3. 変更内容を保存。
  4. [アプリケーション]タブに移動し、最初の.NETターゲットフレームワークを選択します。
  5. 変更を保存=>問題は解決しました!

11
甘い!VS2012で私のために働いた。
amo

4
私のためにも働いた(VS2013プレミアム)。
Remco

5
これは、最初の試行では機能しない可能性があります。VS 2013 Expressで機能する前に、2回実行する必要がありました。
H2ONaCl 2014

24
Visual Studio 2015で私のために働きました。誰かがその理由を説明できたら素晴らしいと思います。
ジョナサンウッド

6
機能しませんでした、VS2015 update 2、.NET 4.5.2。メッセージが消えるように見えますが、もう一度XMLファイルを開くと、メッセージが戻ってきます。
2016年

21

XSDはEntLib 5に含まれており、Visual Studioスキーマディレクトリにインストールされます。私の場合、それは次の場所にあります:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas\EnterpriseLibrary.Configuration.xsd

環境

  • Visual Studio 2010
  • エンタープライズライブラリ5

警告を削除する手順

  1. Visual Studioプロジェクトでapp.configを開きます。
  2. XMLドキュメントエディタで右クリックし、[プロパティ]を選択します
  3. 「EnterpriseLibrary.Configuration.xsd」への完全修飾パスを追加します

これらの「エラーリスト」「メッセージ」(「要素のスキーマ情報が見つかりませんでした」)は、app.configファイルを開いたときにのみ表示されることを繰り返すのは価値があります。「すべてのドキュメントを閉じて」コンパイルすると、メッセージは報告されません。


1
完全修飾パスとは、絶対パスを使用することです。例えばC:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas\EnterpriseLibrary.Configuration.xsd。Windowsオペレーティングシステムでは、相対パスに。\および.. \文字を含めることができます。
プレサッコ2012年

1
警告を削除するためにXMLファイルを閉じることについての情報をありがとう。)奇妙な行動(
Machtyn

8
EnterpriseLibrary.Configuration.xsdはVisual Studio 2015にありませんか?
ルーク

3
XMLファイルを閉じるだけで問題は解決しました
Taegost

1
@Taegostさん、ありがとうございます。これも私にとってはうまくいきました。(私の問題、VS2013でのコード分析カスタム辞書は、記述されたものとは少し異なりましたが、同じ症状です)。他に何も試しませんでしたが、これは私を夢中にさせていました。辞書をエディターで開いていると、これらのエラーのためにコード分析ツールが辞書を使用していなかったようです!
sn00gan

1

関連するモジュールに構文エラーがあり、それがコンパイルされていないことがわかりました-コンパイラーはそれを教えてくれませんでした。app.configに関するエラーが表示されました。VS2010。構文エラーを修正したら、問題はありませんでした。


1

このエラーは、プロジェクトが古いスキーマを参照している場合に発生します。Visual Studioを使用して新しいものを生成します。

Visual Studioで、次の操作を行います。

  1. app.configまたはweb.configファイルを開きます。
  2. XMLメニューに移動し、を選択しますCreate Schema

これにより、app#.xsd(Windowsアプリ)またはweb#.xsd(ウェブサイト)ファイルが生成されます。

  1. 新しく生成されたxsdファイルをプロジェクトのルートに保存します。
    • App.configまたはweb.configファイルを開き、テキストエディターを右クリックしてプロパティを選択...し、スキーマの値の横にあるボタンをクリックします。
    • Addボタンを使用して、新しく生成されたxsdファイルを追加します。
    • クリック OK

属性/要素のスキーマ情報が見つかりませんでした今、解決しなければならないエラー(複数可)。


1

シンプル:Visual Studioレポートデザイナーで
1.レポートをデザインモードで
開き、RDLCファイルからデータセットを削除します。2.ソリューションエクスプローラーを開き、実際の(破損した)XSDファイルを削除します
。3.データセットをRDLCファイルに追加します。
4.上記の手順により、新しいXSDファイルが作成されます。
5.詳細は以下のとおりです。

Visual Studioで、デザインモードでRDLCファイルレポートを開きます。レポートをクリックし、一番上の行のメニューから[表示]、[レポートデータ]の順に選択します。データセットを選択してから右クリックし、レポートからデータセットを削除します。次に、ソリューションエクスプローラーを開きます(Visual Studioでまだ開いていない場合)。XSDファイルを見つけます(レポートから削除したデータセットと同じ名前にする必要があります)。次に戻って、レポートデータデータセットをもう一度右クリックし、[データセットの追加]を選択します。これにより、新しいXSDファイルが作成され、データセットプロパティがレポートに書き込まれます。これでエラーメッセージがなくなり、不足しているデータがレポートに表示されます。


0

これが(どこからともなく)起こったとき、私は上記のトップアンサーに飛び込もうとしていて、プロジェクトを閉じ、Visual Studioを閉じてから、すべてを再び開くと思っていました。問題が解決しました。VSバグ?


やりすぎ。VS内でApp.configファイルエディターを閉じるだけで十分です。VSバグかもしれません。
Jirka Hanika

0

これは、プロジェクトで「セクション名」が変更されたVS 2012で発生しました。プロジェクトの「app.config」を削除し、「ソリューションエクスプローラー」でプロジェクトを右クリックして、「プロパティ」、「設定」の順に選択し、設定の1つに変更を加え、保存し、再構築します。これにより、正しい情報で新しいapp.configが作成されました。


0

私の場合、コードにあいまいな参照がありました。Visual Studioを再起動すると、エラーメッセージが表示されました。私がこれを解決したとき、他のエラーは消えました。


-1

私が書いたもののほとんどはすでにプレサッコでカバーされていますが、これはSpecFlowに固有のものです。

<specFlow>要素についてこのメッセージを受け取っていたため、この回答にspecflow.xsdソリューションにファイルを追加しました<plugins>要素を許可するためにいくつかの変更を加えました)。

その後(Pressaccoのように)、app.config選択したプロパティのファイルバッファー内で右クリックし、内Schemas"specflow.xsd"最後に追加しました。Schemas今の全体を読みます:

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\xml\Schemas\1033\DotNetConfig.xsd" "C:\Program Files (x86)\Microsoft Visual Studio 12.0\xml\Schemas\EntityFrameworkConfig_6_1_0.xsd" "C:\Program Files (x86)\Microsoft Visual Studio 12.0\xml\Schemas\RazorCustomSchema.xsd" "specflow.xsd"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.