Web.config, configSource и элемент "xxx" не объявлен "предупреждение"

Я разбил ужасно громоздкий файл web.config на отдельные файлы для некоторых разделов (например, connectionStrings, аутентификация, страницы и т.д.), используя атрибут configSource.

Это отлично работает, но отдельные файлы xml, содержащие фрагменты раздела, вызывают предупреждения в VS.

Например, файл с именем roleManager.config используется для раздела диспетчера ролей и выглядит так:

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

Однако я получаю синюю кривую под элементом roleManager в VS и следующее предупреждение: The 'roleManager' element is not declared

Я предполагаю, что это связано с действительными xml и схемами и т.д. Есть ли простой способ исправить это? Что-то, что я могу добавить в отдельные файлы?

Спасибо

P.S. Я слышал, что это плохая практика, чтобы разбить файл web.config следующим образом. Но не понимаю, почему - может ли кто-нибудь осветить меня?

Ответ 1

Поиск обходного пути по этому вопросу с помощью Custom Config Files, я нашел это решение. Не знаете, является ли это правильным.

Проблема заключается в том, что VS не может найти схему для проверки вашего .config(xml). Если вы используете "собственные" элементы конфигурации или когда вы создаете свои файлы .config, вы должны установить для каждого XML-документа схему.

По умолчанию (например, в VS9) все файлы xml используют \Microsoft Visual Studio 9.0\Xml\Schemas\DotNetConfig.xsd но вы можете добавить больше схем для использования.

Прежде чем назначать схему, вы должны ее создать.

Чтобы создать новую схему на основе собственного custom.config:

  • откройте свой настраиваемый файл конфигурации
  • в меню XML- > Создать схему
  • сохранить его

Чтобы назначить вашу схему:

  • откройте свой настраиваемый файл конфигурации
  • в панели свойств: нажмите кнопку обзора [..]
  • установите столбец "Использовать" в вашу недавно созданную схему

вы можете назначить столько, сколько хотите. или иметь одну схему для всех ваших пользовательских файлов .config.

(Извините, но мой английский не очень хорош)

Ответ 2

Я думаю, что вы получаете синие squiggles, так как схема вашего файла web.config не объявляет эти настраиваемые разделы конфигурации, которые вы "разбили" в отдельные файлы.

При изучении этого я вижу, что некоторые из моих решений имеют одинаковую проблему, но разделы конфигурации, предоставляемые с помощью Microsoft, НЕ имеют squiggles. например: мы извлекли настройки appsettings и connectionstrings в свои собственные файлы, и они не получают squiggles, но наши пользовательские они делают.

Я попытался просмотреть схему microsoft на schemas.microsoft.com/.netconfiguration/v2.0, но я получаю 404 при попытке загрузить его.

Я пытаюсь сказать, что если вы получите копию схемы MS и измените ее, чтобы включить ваши внешние файлы конфигурации, вы сможете избавиться от страшных squiggles!

НТН, Копье