Как исправить ошибку: «Не удалось найти информацию о схеме для атрибута / элемента» путем создания схемы

148

У меня есть приложение Windows Forms, написанное на VS2010 с C # и получить следующие ошибки в 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
@rsbarro, где находится инструмент настройки EntLib и файл DotNetConfig.xsd?
Брайан Маккарти
Извините, я не понял, что пользователь отправил два ответа на вопрос. Я ссылался на второй ответ. Этот ответ, хотя и был правильным, был немного неясен, поэтому ниже приводится более подробный ответ.
rsbarro
1
Спасибо, rsbarro! Оригинальный вопрос StingyJack был ограничен ошибками, использующими разделы конфигурации корпоративной библиотеки, а не просто какой-либо пользовательский раздел конфигурации.
Лиза

Ответы:

169

ОБНОВЛЕНИЕ, сентябрь 2015 г.
Этот ответ продолжает получать положительные отзывы, поэтому я собираюсь оставить его здесь, так как он кажется полезным для некоторых людей, но, пожалуйста, сначала ознакомьтесь с другими ответами @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 в корне моей веб-папки (что может быть не лучшим местом для него, но только для демонстрационных целей), и мое свойство Schemas выглядит следующим образом:

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

rsbarro
источник
10
@rsbarro, спасибо за ответ! Почему у вас 2 xsd файла? Я создал схему и получил всего 1 файл app.xsd, который я сохранил в корневом каталоге. Ошибки исчезли, но теперь я получаю предупреждение: «Глобальный элемент« конфигурация »уже объявлен». Есть идеи, как это исправить?
Брайан Маккарти
2
Просто используйте диалоговое окно «Свойства», чтобы выбрать схему или добавить другую схему. Когда вы просматриваете файл app.config, щелкните правой кнопкой мыши в окне редактора и выберите «Свойства». Вы должны увидеть схемы в появившемся элементе управления редактора свойств. Кроме того, если вы нажмете кнопку «...» в Схемах, это позволит вам выбрать схемы, которые вы хотите использовать для своего конфигурационного файла, используя приятный графический интерфейс.
rsbarro
3
Спасибо. Это сработало, но есть ли хорошее место, которое я могу прочитать, чтобы понять ПОЧЕМУ это происходит? Кажется, что мне вдруг потребовалось создать схему для моего web.config после добавления большого количества контента для DotNetOpenAuth, а затем заново сгенерировать файл edmx с нуля. Это имеет смысл в «Вы многое изменили, поэтому что-то получилось». в некотором роде, но было бы полезно узнать, почему файл web.config самопроизвольно нуждается в схеме.
froggythefrog
6
Когда вы генерируете свой файл Web.xsd, включайте только схемы, которые вы добавляете в разделы web / app.config (пользовательские разделы). Исключите все остальные, которые уже включены в схему по умолчанию или другие .xsd включены.
Паготти
10
НЕТ НЕТ НЕТ!! Это не «решение», так как это даже не реальная проблема. Смотрите и голосуйте за ответ @ pressacco. Также ответ reexmonkey работает. Почему этот ответ получает столько положительных голосов? 1. Просто игнорируй! Закройте app.config или web.config и скомпилируйте, что вы даже не увидите сообщения. 2. Хотя в этом нет необходимости, решите, щелкнув правой кнопкой мыши свойства .config, исправляя путь к поставляемому VS XSD. (ответ @ pressacco) 3. Или: изменить настройки проекта, версию DotNet и обратно. Повторите дважды. (reexmonkey ответ). Может вызвать проблемы с обновлениями пакетов.
Пашуте
218

Самый быстрый, самый ленивый способ решить проблему:

  1. Щелкните правой кнопкой мыши значок проекта в обозревателе решений и выберите «Свойства».
  2. Перейдите на вкладку «Приложение» и выберите более раннюю целевую платформу .NET.
  3. Сохранить изменения.
  4. Перейдите на вкладку «Приложение» и выберите исходную целевую платформу .NET.
  5. Сохранить изменения => проблема решена!
reexmonkey
источник
11
Сладкий! Работал для меня в VS2012.
АМО
4
У меня тоже работал (VS2013 Premium).
Ремко
5
Это может не сработать с первой попытки. Мне нужно было сделать это дважды, прежде чем он работал в VS 2013 Express.
H2ONaCl
24
Работал для меня в Visual Studio 2015. Было бы неплохо, если бы кто-то мог объяснить почему.
Джонатан Вуд
6
Не работает, VS2015 обновление 2, .NET 4.5.2. Похоже, что сообщения исчезают, но если вы просто снова откроете файл XML, они вернутся.
Снуп
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. откройте app.config в вашем проекте Visual Studio
  2. щелкните правой кнопкой мыши в редакторе XML-документов, выберите «Свойства»
  3. добавьте полный путь к «EnterpriseLibrary.Configuration.xsd»

В СТОРОНЕ

Стоит повторить, что эти «Список ошибок», «Сообщения» («Не удалось найти информацию о схеме для элемента») видны только при открытии файла app.config. Если вы «Закрыть все документы» и скомпилируете ... сообщения не будут сообщаться.

Pressacco
источник
1
Под полным определением пути я имел в виду: использовать абсолютный путь. Например C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas\EnterpriseLibrary.Configuration.xsd. В операционной системе Windows относительный путь может содержать символы. \ И .. \.
Pressacco
1
Спасибо за информацию о закрытии файла XML для удаления предупреждений. ) Странное поведение (
Machtyn
8
EnterpriseLibrary.Configuration.xsd отсутствует в Visual Studio 2015?
Лука
3
Простое закрытие XML-файла заставило меня
исчезнуть
1
Спасибо @Tegost, это тоже для меня. (Моя проблема, пользовательский словарь анализа кода под VS2013, немного отличалась от заявленной, но с теми же симптомами). Ничто другое, что я пробовал, не сработало, и это сводило меня с ума. Когда я открыл словарь в редакторе, оказалось, что инструмент анализа кода даже не использовал его из-за этих ошибок!
sn00gan
1

Я обнаружил, что в связанном модуле была синтаксическая ошибка, и он не компилировался - хотя компилятор мне этого не говорил. Просто дал мне ошибку, связанную с app.config. VS2010. Как только я исправил синтаксическую ошибку, все было хорошо.

flobadob
источник
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файл, щелкните правой кнопкой мыши в текстовом редакторе, выберите свойства и нажмите ...кнопку рядом со значением для схемы.
    • Добавьте вновь сгенерированные xsd-файлы, используя Addкнопку.
    • щелчок OK

Информация не удалось найти схемы для атрибута / элемент ошибки (ы) в настоящее время должна быть решена.

Чудотворец
источник
1

Просто: в конструкторе отчетов Visual Studio
1. Откройте отчет в режиме разработки и удалите набор данных из файла RDLC
2. Откройте обозреватель решений и удалите фактический (поврежденный) файл XSD
3. Добавьте набор данных обратно в файл RDLC.
4. Приведенная выше процедура создаст новый файл XSD.
5. Более подробно ниже.

В Visual Studio откройте файл отчета RDLC в режиме разработки. Нажмите на отчет, затем выберите View, а затем Report Data в верхнем меню. Выберите наборы данных, затем щелкните правой кнопкой мыши и удалите набор данных из отчета. Затем откройте обозреватель решений, если он еще не открыт в вашей Visual Studio. Найдите файл XSD (он должен совпадать с именем набора данных, который вы только что удалили из отчета). Теперь вернитесь назад и снова щелкните правой кнопкой мыши на наборах данных данных отчета и выберите Добавить набор данных. Это создаст новый файл XSD и запишет свойства набора данных в отчет. Теперь ваше сообщение об ошибке исчезнет, ​​а все недостающие данные появятся в ваших отчетах.

Грег Т.
источник
0

Когда это случилось со мной (из ниоткуда), я собирался погрузиться в верхний ответ выше, а потом решил, что закрою проект, закрою Visual Studio, а затем снова открою все. Задача решена. VS ошибка?

Рокин Рауль
источник
Overkill. Достаточно закрыть редактор файлов App.config в VS. VS ошибка, может быть.
Йирка Ханика
0

У меня это было в VS 2012, где «Имя раздела» было изменено в проекте, и я исправил это, удалив в проекте «app.config», затем щелкнув правой кнопкой мыши по проекту в «Обозревателе решений», выбрав « Свойства », затем« Настройки », затем внесение изменений в одну из настроек, сохранение и восстановление. Это создало новый app.config с правильной информацией.

Дэви С
источник
0

В моем случае в моем коде была неоднозначная ссылка. Я перезапустил Visual Studio и смог увидеть сообщение об ошибке. Когда я решил это, другая ошибка исчезла.

София Хваджа
источник
-1

Большая часть того, что я пишу, уже была освещена Pressacco, но это относится к 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"
Тахир Хасан
источник