Як виправити помилку: "Не вдалося знайти інформацію схеми для атрибута / елемента", створивши схему


148

У мене є додаток для форм Windows, написане у 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: \ програмні файли (x86) \ Microsoft Visual Studio 10.0 \ xml \ схеми \ dotNetConfig.xsd" "Web.xsd"


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). Може спричинити проблеми з оновленнями пакунків.
пашуте

217

Найшвидший, найпростіший ледачий спосіб вирішити проблему:

  1. Клацніть правою кнопкою миші на піктограмі проекту в Провіднику рішень і виберіть "Властивості".
  2. Перейдіть на вкладку «Додаток» і виберіть більш ранню цільову рамку .NET.
  3. Зберегти зміни.
  4. Перейдіть на вкладку «Застосування» та виберіть початкову цільову рамку .NET.
  5. Зберегти зміни => проблема вирішена!

11
Солодке! Працював для мене у VS2012.
амо

4
Працював і для мене (VS2013 Premium).
Ремко

5
Це може не спрацювати з першої спроби. Мені потрібно було це зробити двічі, перш ніж він працював у VS 2013 Express.
H2ONaCl

24
Працював для мене у Visual Studio 2015. Було б добре, якби хтось міг пояснити, чому.
Джонатан Вуд

6
Не працювало, оновлення VS2015 2, .NET 4.5.2. Схоже, це змушує повідомлення зникати, але тоді, якщо ви просто знову відкриєте XML-файл, вони повернуться.
Snoop

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. Якщо ви "Закриєте всі документи" і компілюєте ... про повідомлення не надходитиме.


1
Повністю кваліфікований шлях я мав на увазі: використовувати абсолютний шлях. Наприклад C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas\EnterpriseLibrary.Configuration.xsd. В операційній системі Windows відносний шлях може містити символи. \ І .. \.
Прессакко

1
Дякуємо за інформацію про закриття файлу XML для видалення попереджень. ) Дивна поведінка (
Махтін

8
Чи відсутні EnterpriseLibrary.Configuration.xsd у Visual Studio 2015?
Лука

3
Просто закриття файлу XML
призвело до відмови проблеми

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

Інформація не вдалося знайти схеми для атрибута / елемент помилки (и) в даний час повинна бути вирішена.


1

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

У Visual Studio відкрийте звіт про файл RDLC у режимі дизайну. Клацніть на звіті, а потім виберіть Перегляд, а потім звітуйте дані у меню верхнього рядка. Виберіть Набори даних, а потім клацніть правою кнопкою миші та видаліть набір даних із звіту. Далі Відкрийте Провідник рішень, якщо він ще не відкритий у вашій Visual Studio. Знайдіть файл XSD (це має бути те саме ім’я, що і набір даних, який ви щойно видалили з звіту). Тепер поверніться та натисніть правою кнопкою миші знову набори даних даних звіту та виберіть Додати набір даних. Це створить новий XSD файл і запише властивості набору даних у звіт. Тепер повідомлення про помилку не буде, і будь-які відсутні дані тепер з’являться у ваших звітах.


0

Коли це сталося зі мною (нізвідки), я збирався зануритися у верхню відповідь вище, і тоді я зрозумів, що закрию проект, закрию Visual Studio, а потім знову відкрию все. Проблема вирішена. VS помилка?


Перевищення. Закрити редактор файлів App.config у VS досить. VS помилка, можливо.
Jirka Hanika

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"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.