Я интерпретирую проблему следующим образом: файл DotNetConfig.xsd
имеет неправильное (или не полное) определение элемента <startup>
. Строка 230 всех файлов DotNetConfig.xsd
, DotNetConfig35.xsd
, DotNetConfig30.xsd
и DotNetConfig20.xsd
содержит
<xs:element name="startup" vs:help="configuration/startup" />
С другой стороны, Microsoft описывает схему настроек запуска не как пустой элемент. Поэтому я предлагаю заменить вышеуказанную строку в DotNetConfig.xsd
и во всех DotNetConfigXX.xsd
файлах из каталога %ProgramFiles%\Microsoft Visual Studio 10.0\Xml\Schemas
(или каталога %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Xml\Schemas
в 64-разрядных системах) на следующие строки
<xs:element name="startup" vs:help="configuration/startup">
<xs:complexType>
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element name="requiredRuntime" vs:help="configuration/startup/requiredRuntime">
<xs:complexType>
<xs:attribute name="version" type="xs:string" use="optional" />
<xs:attribute name="safemode" type="xs:boolean" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="supportedRuntime" minOccurs="1" maxOccurs="unbounded" vs:help="configuration/startup/supportedRuntime">
<xs:complexType>
<xs:attribute name="version" type="xs:string" use="optional" />
<xs:attribute name="sku" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
</xs:choice>
<xs:attribute name="useLegacyV2RuntimeActivationPolicy" type="xs:boolean" use="optional" />
<!-- see http://msdn.microsoft.com/en-us/library/bbx34a2h.aspx -->
</xs:complexType>
</xs:element>
После такой модификации и перезапуска Visual Studio 2010 у вас не будет предупреждений, которые вы описали. Конечно, можно определить схему всех атрибутов или элементов более подробно (особенно если мы найдем более подробную документацию по разделу <startup>
), но я хочу описать только причину проблемы и один способ ее устранения.
Кстати, выбор между DotNetConfig.xsd
, DotNetConfig35.xsd
и другими DotNetConfigXX.xsd
файлами будет сделан на основе содержимого файла catalog.xml
из того же каталога, схема которого описана здесь, Стандартная версия файла catalog.xml
содержит следующие строки
<Association extension="config" schema="%InstallRoot%/xml/schemas/dotNetConfig20.xsd" condition="starts-with($TargetFrameworkMoniker, '.NETFramework,Version=v2.')" />
<Association extension="config" schema="%InstallRoot%/xml/schemas/dotNetConfig30.xsd" condition="starts-with($TargetFrameworkMoniker, '.NETFramework,Version=v3.0')" />
<Association extension="config" schema="%InstallRoot%/xml/schemas/dotNetConfig35.xsd" condition="starts-with($TargetFrameworkMoniker, '.NETFramework,Version=v3.5')" />
<Association extension="config" schema="%InstallRoot%/xml/schemas/dotNetConfig.xsd" condition="starts-with($TargetFrameworkMoniker, '.NETFramework,Version=v4.') or $TargetFrameworkMoniker = ''" />
Таким образом, все файлы с расширением .config
будут интерпретироваться Visual Studio как файлы со схемой XSD, описанной одним из вышеуказанных файлов.