我将问题解释如下:文件
DotNetConfig.xsd
的
<startup>
元素定义错误(或不完整)。所有
DotNetConfig.xsd
、
DotNetConfig35.xsd
、
DotNetConfig30.xsd
和
DotNetConfig20.xsd
文件的第230行包含此问题。
<xs:element name="startup" vs:help="configuration/startup" />
另一方面,微软将 启动设置架构 描述为非空元素。因此,我建议在 DotNetConfig.xsd
和所有 DotNetConfigXX.xsd
文件中替换上述行,这些文件位于 %ProgramFiles%\Microsoft Visual Studio 10.0\Xml\Schemas
目录(或者在 64 位系统上的 %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Xml\Schemas
目录)中,并使用以下行:
<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" />
</xs:complexType>
</xs:element>
在这样的修改和重启Visual Studio 2010之后,您将不会再遇到您描述的警告。当然,人们可以更详细地定义所有属性或元素的模式(特别是如果我们发现关于<startup>
部分更详细的文档),但我只想描述问题的原因和解决问题的一种方法。
顺便提一下,在同一个目录中的catalog.xml
文件的内容将决定选择DotNetConfig.xsd
、DotNetConfig35.xsd
和其他DotNetConfigXX.xsd
文件,该文件的模式在此处进行了描述。标准版本的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
的文件将被视为具有上述文件之一描述的XSD模式的文件。