Intellisense для пользовательского раздела конфигурации проблема с пространствами имен - PullRequest
4 голосов
/ 07 июня 2010

Я только что свернул пользовательский раздел конфигурации, создал сопроводительный документ схемы для Intellisense и добавил его в свойство Schemas Web.config согласно ответу Майкла Стума на другой похожий вопрос.

К сожалению, и, возможно, из-за того, что я вручную создал XSD с ограниченными знаниями, Intellisense опирается на атрибут xmlns, указывающий на пространство имен моего XSD-файла, присутствующее в пользовательском элементе конфигурации. Однако при запуске проекта я получаю нераспознанный атрибут 'xmlns'. Обратите внимание, что имена атрибутов чувствительны к регистру error.

Возможно, я мог бы просто изменить свой XSD-файл, чтобы определить атрибут xmlns для этого элемента, однако мне интересно, не является ли это просто исправлением проблемы с более крупной проблемой. Я должен признаться, что не очень хорошо разбираюсь в пространствах имен XML, так что это может быть возможностью уточнить меня в нескольких вещах.

Вот атрибуты для корневого элемента моего XSD-файла xs:schema:

<xs:schema id="awesomeConfig"
           targetNamespace="http://awesome.com/schemas"
           xmlns="http://awesome.com/schemas"
           elementFormDefault="qualified"
           xmlns:xs="http://www.w3.org/2001/XMLSchema">
    ...
</xs:schema>

А при создании элемента в файле Web.config Visual Studio 2008 автоматически добавляет:

<awesomeConfig xmlns="http://awesome.com/schemas"></awesomeConfig>

Так я вообще неправильно понял значение атрибутов xs:schema, или правильное решение так просто, как кажется?

1 Ответ

4 голосов
/ 07 июня 2010

Ваша схема должна будет пропустить атрибут targetNamespace. По сути, это поместит содержимое схемы в пространство имен по умолчанию.

Это необходимо, потому что система конфигурации .NET никогда не позволяла элементам находиться в пространстве имен.

...