Cómo corregir el error: "No se pudo encontrar la información del esquema para el atributo / elemento" creando un esquema

148

Tengo una aplicación de formularios de Windows escrita en VS2010 con C # y obtengo los siguientes errores en el app.configarchivo:

Message 4   Could not find schema information for the attribute 'name'
Message 8   Could not find schema information for the attribute 'name'
Message 12  Could not find schema information for the attribute 'name'
Message 5   Could not find schema information for the attribute 'serializeAs'
Message 15  Could not find schema information for the element 'CCP_Utility.Settings1'
Message 2   Could not find schema information for the element 'CCP_Utility.Properties.Settings'
Message 3   Could not find schema information for the element 'setting'
Message 1   Could not find schema information for the element 'userSettings'
Message 6   Could not find schema information for the element 'value'

¿Qué debo cambiar en el código para solucionar este problema? ¿Dónde puedo editar lo que hay CCP_Utility.Settings1y CCP_Utility.Properties.Settings?

Aquí está el app.configcódigo:

<configuration>
<configSections>
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
        <section name="CCP_Utility.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        <section name="CCP_Utility.Settings1" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
    </sectionGroup>
  </configSections>
<userSettings>
  <CCP_Utility.Properties.Settings>
    <setting name="SourceDir" serializeAs="String">
      <value />
    </setting>
    <setting name="TargetDir" serializeAs="String">
      <value />
    </setting>
    <setting name="CorpID" serializeAs="String">
      <value />
    </setting>
  </CCP_Utility.Properties.Settings>
    <CCP_Utility.Settings1>
        <setting name="sourceDir" serializeAs="String">
            <value />
        </setting>
        <setting name="targetDir" serializeAs="String">
            <value />
        </setting>
    </CCP_Utility.Settings1>

   </userSettings>
</configuration>
Brian McCarthy
fuente
Esto parece un engaño de esta pregunta: stackoverflow.com/questions/179927/… . Verifique la respuesta por @ user57433.
rsbarro
@rsbarro, ¿dónde se encuentra la herramienta de configuración EntLib y el archivo DotNetConfig.xsd?
Brian McCarthy
Lo sentimos, no me di cuenta de que el usuario publicó dos respuestas a la pregunta. Estaba haciendo referencia a la segunda respuesta. Esa respuesta, aunque correcta, era un poco confusa, por lo que proporcionó una respuesta más detallada a continuación.
rsbarro
1
Gracias rsbarro! La pregunta original de StingyJack se limitó a errores al usar las secciones de configuración de la biblioteca empresarial, no simplemente cualquier sección de configuración personalizada.
Lisa

Respuestas:

169

ACTUALIZACIÓN Septiembre de 2015
Esta respuesta continúa recibiendo votos positivos, así que la dejaré aquí, ya que parece ser útil para algunas personas, pero primero consulte las otras respuestas de @reexmonkey y @Pressacco . Pueden proporcionar mejores resultados.

RESPUESTA ORIGINAL
Prueba esto:

  1. En Visual Studio, abra su archivo app.config o web.config.
  2. Vaya al menú "XML" y seleccione "Crear esquema". Esta acción debería crear un nuevo archivo llamado "app.xsd" o "web.xsd".
  3. Guarde ese archivo en su disco.
  4. Regrese a su app.config o web.config y en la ventana de edición , haga clic derecho y seleccione propiedades. A partir de ahí, asegúrese de que el xsd que acaba de generar esté referenciado en la propiedad Esquemas. Si no está allí, agréguelo.

Eso debería hacer que esos mensajes desaparezcan.

Guardé mi web.xsd en la raíz de mi carpeta web (que podría no ser el mejor lugar para hacerlo, pero solo con fines de demostración) y mi propiedad de Schemas se ve así:

"C: \ Archivos de programa (x86) \ Microsoft Visual Studio 10.0 \ xml \ Schemas \ DotNetConfig.xsd" "Web.xsd"

rsbarro
fuente
10
@rsbarro, ¡Gracias por tu respuesta! ¿Por qué tienes 2 archivos xsd? Creé el esquema y se me ocurrió solo 1 archivo-app.xsd que guardé en el directorio raíz. Los errores desaparecieron pero ahora recibo una advertencia: "El elemento global 'configuración' ya ha sido declarado". Alguna idea de como arreglar esto?
Brian McCarthy
2
Simplemente use el cuadro de diálogo Propiedades para seleccionar su esquema o agregar otro esquema. Cuando esté viendo app.config, haga clic derecho en la ventana del editor y seleccione Propiedades. Debería ver Esquemas en el control del Editor de propiedades que aparece. Además, si hace clic en el botón "..." en Esquemas, le permite seleccionar los esquemas que desea usar para su archivo de configuración utilizando una buena GUI.
rsbarro
3
Gracias. Esto funcionó, pero ¿hay un buen lugar donde pueda leer para entender POR QUÉ sucede esto? Parece que de repente necesité generar un esquema para mi web.config después de agregar mucho contenido para DotNetOpenAuth y luego volver a generar un archivo edmx desde cero. Tiene sentido en un "Cambiaste muchas cosas, así que algo se preguntó". de alguna manera, pero sería útil saber por qué el archivo web.config necesitaría espontáneamente un esquema.
froggythefrog
66
Cuando genere su archivo Web.xsd, incluya solo los esquemas que agregue en sus secciones web / app.config (secciones de usuario). Excluya todos los demás que ya están en el esquema predeterminado u otros .xsd incluidos.
Pagotti
10
¡¡NO NO NO!! Esta no es la "solución", ya que ni siquiera es un problema real. Vea y vote por la respuesta de @ pressacco. También la respuesta de reexmonkey funciona. ¿Por qué esta respuesta recibe tantos votos positivos? 1. ¡Simplemente ignora! Cierre app.config o web.config y compile que ni siquiera verá los mensajes. 2. Aunque no es necesario, resuelva haciendo clic derecho en las propiedades .config que corrigen la ruta al XSD proporcionado por VS. (@ respuesta de pressacco) 3. O: cambiar la configuración del proyecto versión DotNet y viceversa. Repite dos veces. (respuesta de reexmonkey). Puede causar problemas con las actualizaciones de paquetes.
pashute
217

La forma más rápida y fácil de resolver el problema:

  1. Haga clic derecho en el icono del proyecto en el Explorador de soluciones y elija "Propiedades".
  2. Vaya a la pestaña "Aplicación" y elija un marco de destino .NET anterior.
  3. Guardar cambios.
  4. Vaya a la pestaña "Aplicación" y elija el marco de destino inicial de .NET.
  5. Guardar cambios => problema resuelto!
reexmonkey
fuente
11
¡Dulce! Trabajó para mí en VS2012.
amo
44
También funcionó para mí (VS2013 Premium).
Remco
55
Esto podría no funcionar en el primer intento. Tenía que hacerlo dos veces antes de que funcionara en VS 2013 Express.
H2ONaCl
24
Trabajó para mí en Visual Studio 2015. Sería bueno si alguien pudiera explicar por qué.
Jonathan Wood
66
No funcionó, VS2015 actualización 2, .NET 4.5.2. Parece que hace que los mensajes desaparezcan, pero si simplemente abre el archivo XML nuevamente, volverán.
Snoop
21

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:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas\EnterpriseLibrary.Configuration.xsd

CONTEXTO

  • Visual Studio 2010
  • Enterprise Library 5

PASOS PARA ELIMINAR LAS ADVERTENCIAS

  1. abra app.config en su proyecto de Visual Studio
  2. haga clic derecho en el editor de documentos XML, seleccione "Propiedades"
  3. agregue la ruta de acceso completa a "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.

Pressacco
fuente
1
Por ruta totalmente calificada quise decir: use una ruta absoluta. Por ejemplo C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas\EnterpriseLibrary.Configuration.xsd. En un sistema operativo Windows, una ruta relativa puede incluir caracteres. \ Y .. \.
Pressacco
1
Gracias por la información sobre cómo cerrar el archivo XML para eliminar las advertencias. ) Comportamiento extraño (
Machtyn
8
¿Falta EnterpriseLibrary.Configuration.xsd en Visual Studio 2015?
Lucas
3
Simplemente cerrar el archivo XML hizo que el problema desapareciera para mí
Taegost el
1
Gracias @Taegost, esto también lo hizo por mí. (Mi problema, el diccionario personalizado de análisis de código en VS2013, fue ligeramente diferente de lo indicado, pero con los mismos síntomas). Nada más que intenté funcionó y esto me estaba volviendo loco. Cuando tuve el diccionario abierto en el editor, ¡parece que la herramienta de análisis de código ni siquiera lo estaba usando debido a estos errores!
sn00gan
1

Descubrí que había un error de sintaxis en el módulo relacionado y que no estaba compilando, aunque el compilador no me lo dijo. Solo me dio el error con respecto a las cosas de app.config. VS2010. Una vez que solucioné el error de sintaxis, todo estuvo bien.

flobadob
fuente
1

Este error ocurre cuando su proyecto hace referencia a esquemas desactualizados. Use Visual Studio para generar nuevos.

En Visual Studio, haga lo siguiente:

  1. Abre tu app.configo web.configarchivo.
  2. Ve al XMLmenú y selecciona Create Schema.

Esto hará que se generen archivos ( app#.xsdaplicación de Windows) o web#.xsd(sitio web).

  1. Guarde los archivos xsd recién generados en la raíz del proyecto.
    • Abra su archivo App.configo web.config, haga clic derecho en el editor de texto y seleccione propiedades y haga clic en el ...botón al lado del valor de Esquemas.
    • Agregue los archivos xsd recién generados con el Addbotón.
    • Hacer clic OK

La información No se pudo encontrar el esquema para los errores de atributo / elemento ahora debe resolverse.

WonderWorker
fuente
1

Simple: en el diseñador de informes de Visual Studio
1. Abra el informe en modo de diseño y elimine el conjunto de datos del archivo RDLC
2. Abra el Explorador de soluciones y elimine el archivo XSD real (dañado)
3. Agregue el conjunto de datos nuevamente al archivo RDLC.
4. El procedimiento anterior creará el nuevo archivo XSD.
5. Más detallado a continuación.

En Visual Studio, abra su informe de archivo RDLC en modo Diseño. Haga clic en el informe y luego seleccione Ver y luego Datos del informe en el menú de la línea superior. Seleccione Conjuntos de datos y luego haga clic derecho y elimine el conjunto de datos del informe. A continuación, abra el Explorador de soluciones, si aún no está abierto en su Visual Studio. Localice el archivo XSD (debe tener el mismo nombre que el conjunto de datos que acaba de eliminar del informe). Ahora regrese y haga clic derecho nuevamente en los conjuntos de datos de datos del informe, y seleccione Agregar conjunto de datos. Esto creará un nuevo archivo XSD y escribirá las propiedades del conjunto de datos en el informe. Ahora su mensaje de error desaparecerá y los datos faltantes aparecerán en sus informes.

Greg T.
fuente
0

Cuando esto me sucedió (de la nada) estaba a punto de sumergirme en la respuesta superior anterior, y luego pensé que cerraría el proyecto, cerraría Visual Studio y luego volvería a abrir todo. Problema resuelto. VS error?

Rockin Raul
fuente
Exceso Cerrar el editor de archivos App.config dentro de VS es suficiente. VS error, tal vez.
Jirka Hanika
0

Tuve esto en VS 2012 donde el "Nombre de la sección" se había cambiado en un proyecto, y lo arreglé eliminando "app.config" en el proyecto, luego haciendo clic derecho en el proyecto en el "Explorador de soluciones", seleccionando " Propiedades ", luego" Configuración ", luego haciendo un cambio en una de las configuraciones, guardando y reconstruyendo. Esto creó una nueva aplicación.config con la información correcta.

Davy C
fuente
0

En mi caso, tenía una referencia ambigua en mi código. Reinicié Visual Studio y pude ver el mensaje de error. Cuando resolví esto, el otro error desapareció.

Sofia Khwaja
fuente
-1

La mayor parte de lo que escribo ya ha sido cubierto por Pressacco, pero esto es específico de SpecFlow.

Estaba recibiendo este mensaje para el <specFlow>elemento y, por lo tanto, agregué un specflow.xsdarchivo a la solución esta respuesta (con algunas modificaciones para permitir el <plugins>elemento).

A partir de entonces, yo (como Pressacco), hice clic derecho dentro del búfer del archivo app.configy las propiedades seleccionadas, y dentro Schemas, agregué "specflow.xsd"al final. La totalidad de Schemasahora lee:

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\xml\Schemas\1033\DotNetConfig.xsd" "C:\Program Files (x86)\Microsoft Visual Studio 12.0\xml\Schemas\EntityFrameworkConfig_6_1_0.xsd" "C:\Program Files (x86)\Microsoft Visual Studio 12.0\xml\Schemas\RazorCustomSchema.xsd" "specflow.xsd"
Tahir Hassan
fuente