visual-studio-2010 - encrypt - sección de configuración connectionstrings no reconocida
Visual Studio siempre selecciona el xsd incorrecto para App.config (4)
Cuando me encontré con este problema, la razón por la que no se verificó el esquema no resultó ser que tuviera varias instancias de Visual Studio abiertas.
(Tenía VS2015 abierto con un proyecto y VS2013 también abierto al mismo tiempo con un proyecto diferente).
Tenga en cuenta que varias versiones de Visual Studio y el cambio de ida y vuelta en el mismo proyecto / solución también parece ser la forma en que algunos problemas con los esquemas repetidos se produjeron en primer lugar.
antes que nada, tengo una aplicación .NET 4.0 con esta configuración:
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
Tuve el mismo problema que el de esta pregunta: app.config "No se pudo encontrar la información del esquema" después de convertir a Visual Studio 2010 / .Net 4.0 : el editor supported no reconoció el elemento supportedRuntime, lo que dio como resultado una sugerencia.
Luego seguí la respuesta: estaba en el editor de app.config y fui a la ventana Propiedades. Ahí seleccioné la entrada de Schemas.
Eliminé la selección de DotNetConfig.xsd y seleccioné DotNetConfig35.xsd, pero VS siempre agrega automáticamente DotNetConfig.xsd nuevamente. Incluso si lo configuré explícitamente para "no usar este esquema" o incluso eliminé el esquema de la lista, se agrega automáticamente a la lista nuevamente y se selecciona.
Como ahora tengo dos esquemas seleccionados que definen los mismos elementos, recibo muchas advertencias.
¿Cómo puedo cambiar el esquema para usar DotNetConfig35.xsd y NO volver a agregar automáticamente DotNetConfig.xsd?
Esta es una publicación anterior, pero acabo de encontrar el mismo problema.
El enfoque que tomé fue el mismo que Ken Johnsrude sugirió antes: crear un nuevo archivo .xsd:
MSVS> Proyecto abierto app.config
XML> Crear esquema
Esto creará "app.xsd" en% TEMP%
EXAMPLE: c:/users/paulsm/AppData/Local/Temp/app.xsd
Mueva app.xsd al directorio del proyecto
App.Config, haga clic con el botón derecho en> Propiedades> Esquemas> ... app.xsd> Usar> Usar este esquema = SÍ
Interpreto el problema de la siguiente manera: el archivo DotNetConfig.xsd
tiene una DotNetConfig.xsd
incorrecta (o DotNetConfig.xsd
) del elemento <startup>
. La línea 230 de todos los DotNetConfig.xsd
, DotNetConfig35.xsd
, DotNetConfig30.xsd
y DotNetConfig20.xsd
contiene
<xs:element name="startup" vs:help="configuration/startup" />
Por otro lado, Microsoft describe el esquema de configuración de inicio no como un elemento vacío. Así que sugiero reemplazar la línea anterior en DotNetConfig.xsd
y en todos los archivos DotNetConfigXX.xsd
del DotNetConfigXX.xsd
%ProgramFiles%/Microsoft Visual Studio 10.0/Xml/Schemas
(o %ProgramFiles(x86)%/Microsoft Visual Studio 10.0/Xml/Schemas
Directorio %ProgramFiles(x86)%/Microsoft Visual Studio 10.0/Xml/Schemas
en sistemas de 64 bits) a las siguientes líneas
<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>
Después de dicha modificación y reinicio de Visual Studio 2010, no tendrá las advertencias que describió. Debido a que uno puede definir el esquema de todos los atributos o elementos más detallados (especialmente si encontramos documentación más detallada de la sección <startup>
), pero quiero describir el motivo del problema solamente y una forma de solucionarlo.
Por cierto, la elección entre DotNetConfig.xsd
, DotNetConfig35.xsd
y otros archivos DotNetConfigXX.xsd
se realizará en función del contenido del archivo catalog.xml
del mismo directorio, cuyo esquema se describe here . La versión estándar del archivo catalog.xml
contiene las siguientes líneas
<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 = ''''" />
Por lo tanto, Visual Studio interpretará todos los archivos con extensión .config
como archivos con el esquema XSD descrito por uno de los archivos anteriores.
Para mí, noté que tenía un montón de XML Schemas
duplicados en XML->Schemas
, simplemente marqué los duplicados como Don''t Use
. En particular, todos los que no estaban relacionados con Visual Studio 2017. El problema desapareció inmediatamente y no se mostraron más advertencias superfluas