Comment résoudre & # 8220; Impossible de trouver les informations de schéma pour l'élément / attribut < xxx > & # 8221 ;?

StackOverflow https://stackoverflow.com/questions/179927

Question

Dans Visual Studio, j’ai un projet asp.net 3.5 qui utilise des blocs d’application MS Enterprise Library 4.0.

Lorsque mon fichier de configuration Web est ouvert, ma liste d'erreurs se remplit de 99 messages contenant des éléments tels que

.
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 je ferme le fichier Web.config, ils disparaissent (mais ils reviennent dès que je dois rouvrir le fichier).

Après quelques recherches, j’ai trouvé que c’était parce qu’il manquait un fichier de schéma ou XSD dont Visual Studio avait besoin pour pouvoir "comprendre" correctement le schéma figurant dans le fichier web.config et lui fournir un système intellisense.

Quelqu'un sait-il comment fournir aux VS les informations de schéma appropriées ou désactiver ces messages?

@Franci - Merci pour l'info, j'ai essayé cet outil ainsi que le composant logiciel enfichable MMC (ils ont tendance à faire exploser la mise en forme dans le fichier Web.config), mais ils ne résolvent toujours pas les avertissements irritants que je reçois. Merci d'avoir essayé.

Était-ce utile?

La solution

J'ai configuré app.config avec l'outil de configuration EntLib et configuré mon bloc LoggingConfiguration . Ensuite, j'ai copié cela dans le DotNetConfig.xsd . Bien sûr, il ne couvre pas tous les attributs, mais uniquement ceux que j’ai ajoutés, mais il n’affiche plus ces messages d’information gênants.

<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>

Autres conseils

J'ai créé un nouveau schéma basé sur mon application actuelle.config pour que les messages disparaissent. Je viens d'utiliser le bouton de Visual Studio indiquant "Créer un schéma". et un schéma xsd a été créé pour moi.

Enregistrez le schéma dans un endroit approprié et consultez les "Propriétés". onglet du fichier app.config où se trouve une propriété nommée Schémas. Si vous cliquez sur le bouton Modifier, vous pouvez choisir d’utiliser à la fois le schéma dotnetconfig d’origine et votre propre schéma nouvellement créé.

Un fichier XSD est inclus avec EntLib 5 et est installé dans le répertoire du schéma Visual Studio. Dans mon cas, il pourrait être trouvé à:

& C; \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ XML \ Schemas \ EnterpriseLibrary.Configuration.xsd "

CONTEXTE

  • Visual Studio 2010
  • Enterprise Library 5

ÉTAPES POUR SUPPRIMER LES AVERTISSEMENTS

  1. ouvrez app.config dans votre projet Visual Studio
  2. faites un clic droit dans l'éditeur de document XML, sélectionnez "Propriétés"
  3. ajoutez le chemin d'accès complet au fichier "EnterpriseLibrary.Configuration.xsd"

ASIDE

Il est bon de répéter que ces " liste d'erreurs " " Messages " (" Impossible de trouver les informations de schéma pour l'élément ") ne sont visibles que lorsque vous ouvrez le fichier app.config. Si vous " Fermer tous les documents " et compiler ... aucun message ne sera signalé.

Avez-vous essayé de copier le fichier de schéma dans le dossier XML Schema Caching pour VS? Vous pouvez trouver l'emplacement de ce dossier en consultant Outils / Options / Editeur de test / XML / Divers. Malheureusement, je ne sais pas où se trouve le fichier de schéma de MS Enterprise Library 4.0.

Mettre à jour : après l'installation de MS Enterprise Library, il semble qu'il n'y ait pas de fichier .xsd. Cependant, il existe un outil pour éditer la configuration - EntLibConfig.exe, que vous pouvez utiliser pour éditer les fichiers de configuration. De plus, si vous ajoutez les sections de configuration appropriées à votre fichier de configuration, VS doit pouvoir analyser correctement le fichier de configuration. (EntLibConfig les ajoutera pour vous, ou vous pouvez les ajouter vous-même). Voici un exemple pour la section 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>

Vous devez également ajouter une référence à l'assemblage approprié dans votre projet.

Qu'est-ce qui a résolu le " Impossible de trouver les informations de schéma pour l'élément ... " pour moi était

  • Ouverture de mon app.config .
  • Cliquez avec le bouton droit de la souris dans la fenêtre d'édition et sélectionnez Propriétés .
  • Dans la boîte de propriétés, il y a une ligne appelée Schémas , j'ai cliqué sur cette ligne et sélectionné le champ parcourir ... qui apparaît dans la ligne.
  • J'ai simplement coché la case utiliser pour toutes les lignes contenant mon projet, ainsi que pour la version actuelle de .Net que j'utilisais. Par exemple: DotNetConfig30.xsd .

Après cela, tout a fonctionné correctement.

Je ne suis pas sûr de la manière dont les lignes de schéma de mon projet ont été décochées, mais lorsque je me suis assuré de les vérifier, j'ai repris les choses.

Accédez à cette page: fichiers NLs xsd

Téléchargez le fichier xsd approprié pour votre projet et enregistrez-le dans le fichier NLog.config

.

Le premier a fait le tour pour moi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top