web.config, configSource и предупреждение «Элемент xxx не объявлен» - PullRequest
23 голосов
/ 14 мая 2010

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

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

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

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

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

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

Спасибо

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

Ответы [ 2 ]

28 голосов
/ 08 мая 2012

В поисках обходного пути к этому вопросу с помощью пользовательских файлов конфигурации я нашел это решение. Не знаю, правильно ли это.

Проблема в том, что 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

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

2 голосов
/ 14 мая 2010

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

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

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

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

НТН, Lance

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...