.net - studio - ¿Cómo resolver "No se pudo encontrar información de esquema para el elemento/atributo<xxx>"?
xsd to class c# visual studio 2017 (6)
En Visual Studio, tengo un proyecto asp.net 3.5 que usa bloques de aplicaciones de MS Enterprise Library 4.0.
Cuando tengo mi archivo de configuración web abierto, mi lista de errores se llena con 99 mensajes con cosas como
Could not find schema information for the element ''dataConfiguration''.
Could not find schema information for the attribute ''defaultDatabase''.
Could not find schema information for the element ''loggingConfiguration''.
Could not find schema information for the attribute ''tracingEnabled''.
Could not find schema information for the attribute ''defaultCategory''.
Si cierro el archivo Web.config desaparecen (pero vuelven tan pronto como necesito abrir el archivo nuevamente).
Después de mirar un poco, descubrí que esto se debe a que falta un archivo XSD o esquema que Visual Studio necesita para ''comprender'' correctamente el esquema que está en el archivo web.config y proporcionarle inteligencia.
¿Alguien sabe cómo proporcionar VS con la información de esquema adecuada o desactivar estos mensajes?
@Franci - Gracias por la información, he intentado con esa herramienta, así como con el complemento de MMC (tienden a explotar el formato en Web.config) pero aún no resuelven las molestas advertencias que recibo. Gracias por intentarlo.
¿Intentó copiar el archivo de esquema en la carpeta Caché de esquema XML para VS? Puede encontrar la ubicación de esa carpeta mirando VS Tools / Options / Test Editor / XML / Miscellaneous. Desafortunadamente, no sé dónde está el archivo de esquema para MS Enterprise Library 4.0.
Actualización : después de instalar MS Enterprise Library, parece que no hay un archivo .xsd. Sin embargo, hay una herramienta para editar la configuración: EntLibConfig.exe, que puede usar para editar los archivos de configuración. Además, si agrega las secciones de configuración adecuadas a su archivo de configuración, VS debería poder analizar correctamente el archivo de configuración. (EntLibConfig lo agregará, o puede agregarlo usted mismo). Aquí hay un ejemplo para la sección LoggingConfiguration:
<configSections>
<section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</configSections>
También necesita agregar una referencia al ensamblaje apropiado en su proyecto.
Configuré app.config con la herramienta para la configuración EntLib y configuré mi bloque LoggingConfiguration. Luego copié esto en DotNetConfig.xsd. Por supuesto, no cubre todos los atributos, solo los que agregué, pero ya no muestra esos molestos mensajes de información.
<xs:element name="loggingConfiguration">
<xs:complexType>
<xs:sequence>
<xs:element name="listeners">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="add">
<xs:complexType>
<xs:attribute name="fileName" type="xs:string" use="required" />
<xs:attribute name="footer" type="xs:string" use="required" />
<xs:attribute name="formatter" type="xs:string" use="required" />
<xs:attribute name="header" type="xs:string" use="required" />
<xs:attribute name="rollFileExistsBehavior" type="xs:string" use="required" />
<xs:attribute name="rollInterval" type="xs:string" use="required" />
<xs:attribute name="rollSizeKB" type="xs:unsignedByte" use="required" />
<xs:attribute name="timeStampPattern" type="xs:string" use="required" />
<xs:attribute name="listenerDataType" type="xs:string" use="required" />
<xs:attribute name="traceOutputOptions" type="xs:string" use="required" />
<xs:attribute name="filter" type="xs:string" use="required" />
<xs:attribute name="type" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="formatters">
<xs:complexType>
<xs:sequence>
<xs:element name="add">
<xs:complexType>
<xs:attribute name="template" type="xs:string" use="required" />
<xs:attribute name="type" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="logFilters">
<xs:complexType>
<xs:sequence>
<xs:element name="add">
<xs:complexType>
<xs:attribute name="enabled" type="xs:boolean" use="required" />
<xs:attribute name="type" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="categorySources">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="add">
<xs:complexType>
<xs:sequence>
<xs:element name="listeners">
<xs:complexType>
<xs:sequence>
<xs:element name="add">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="switchValue" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="specialSources">
<xs:complexType>
<xs:sequence>
<xs:element name="allEvents">
<xs:complexType>
<xs:attribute name="switchValue" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="notProcessed">
<xs:complexType>
<xs:attribute name="switchValue" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="errors">
<xs:complexType>
<xs:sequence>
<xs:element name="listeners">
<xs:complexType>
<xs:sequence>
<xs:element name="add">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="switchValue" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="tracingEnabled" type="xs:boolean" use="required" />
<xs:attribute name="defaultCategory" type="xs:string" use="required" />
<xs:attribute name="logWarningsWhenNoCategoriesMatch" type="xs:boolean" use="required" />
</xs:complexType>
</xs:element>
Creé un nuevo esquema basado en mi app.config actual para que desaparezcan los mensajes. Acabo de utilizar el botón en Visual Studio que dice "Crear esquema" y se creó un esquema xsd para mí.
Guarde el esquema en un lugar apropiado y vea la pestaña "Propiedades" del archivo app.config donde hay una propiedad llamada Schemas. Si hace clic en el botón de cambio allí, puede seleccionar usar el esquema dotnetconfig original y el suyo recién creado.
Vaya a esto: archivos NLog xsd
Descargue el xsd apropiado para su proyecto y guárdelo a lo largo del NLog.config
El primero me hizo el truco.
Lo que solucionó el problema "No se pudo encontrar información de esquema para el elemento ..." fue para mí
- Abriendo mi
app.config
- Hacer clic con el botón derecho en la ventana del editor y seleccionar
Properties
. - En el cuadro de propiedades, hay una fila llamada
Schemas
, hice clic en esa fila y seleccioné el cuadro de búsqueda...
que aparece en la fila. - Simplemente marqué el cuadro de
use
para todas las filas que tenían mi proyecto en algún lugar de ellas, y también para la versión actual de .Net que estaba usando. Por ejemplo:DotNetConfig30.xsd
.
Después de eso, todo funcionó bien.
Cómo no se verificaron esas filas de esquema con mi proyecto, no estoy seguro, pero cuando me aseguré de que se revisaran, volví a estar en el negocio.
Se incluye un XSD con EntLib 5 y se instala en el directorio de esquema de Visual Studio. En mi caso, se puede encontrar en:
"C: / Archivos de programa (x86) / Microsoft Visual Studio 10.0 / Xml / Schemas / EnterpriseLibrary.Configuration.xsd"
CONTEXTO
- Visual Studio 2010
- Enterprise Library 5
PASOS PARA ELIMINAR LAS ADVERTENCIAS
- abra app.config en su proyecto de Visual Studio
- haga clic derecho en el editor de documento XML, seleccione "Propiedades"
- agregue la ruta completa a la "EnterpriseLibrary.Configuration.xsd"
APARTE
Vale la pena repetir que estos "Mensajes de la lista de errores" ("No se pudo encontrar la información del esquema para el elemento") solo son visibles cuando abre el archivo app.config. Si "cierra todos los documentos" y compila ... no se informará ningún mensaje.