47 votes

Comment résoudre le message "Impossible de trouver des informations de schéma pour l'élément/attribut <xxx>" ?

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

Lorsque j'ai ouvert mon fichier de configuration web, ma liste d'erreurs se remplit de 99 messages avec des choses comme

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 avoir fait quelques recherches, j'ai découvert que c'est parce qu'il manque un fichier XSD ou un fichier de schéma dont Visual Studio a besoin pour "comprendre" correctement le schéma qui se trouve dans le fichier web.config et fournir un intellisense pour celui-ci.

Quelqu'un sait-il comment fournir à 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 snap in MMC (ils ont tendance à faire sauter le formatage dans le Web.config) mais ils ne résolvent toujours pas les avertissements irritants que je reçois. Merci d'avoir essayé.

0 votes

Hey, désolé de ne pas avoir pu t'aider. Si vous voulez que je supprime ma réponse pour que votre question apparaisse comme sans réponse, laissez un commentaire sur la réponse, afin que je puisse la voir la prochaine fois que je me connecterai.

0 votes

Je l'ai résolu en redémarrant simplement mon studio visuel.

31voto

user57433 Points 336

J'ai créé un nouveau schéma basé sur mon app.config actuel pour faire disparaître les messages. J'ai juste utilisé le bouton dans Visual Studio qui dit "Create Schema" et un schéma xsd a été créé pour moi.

Sauvegardez le schéma dans un endroit approprié et consultez l'onglet "Propriétés" du fichier app.config où se trouve une propriété nommée Schemas. Si vous cliquez sur le bouton de modification, vous pouvez choisir d'utiliser à la fois le schéma original de dotnetconfig et celui que vous venez de créer.

0 votes

Dans le XSD, vous devrez peut-être saupoudrer minOccurs="0" pour ne pas avoir d'avertissements de validation lorsque vous déplacez/supprimez des sections, comme votre <applicationSettings><Company.MyApplication.Settings.Properties>.

4 votes

Je veux juste ajouter que cette propriété "Schema" n'est accessible qu'en éditant le fichier xml (app.config) et non à partir de l'explorateur de solutions.

6 votes

J'ai créé un schéma xsd comme vous l'avez décrit ci-dessus. Cela m'a aidé à me débarrasser du message "Could not find schema information for..." (Impossible de trouver des informations sur le schéma pour...). - mais je reçois maintenant l'avertissement "L'élément global 'configuration' a déjà été déclaré" dans app.xsd. Quelqu'un sait-il comment résoudre ce problème ?

13voto

Pressacco Points 615

Un XSD est inclus avec EntLib 5, et est installé dans le répertoire des schémas de Visual Studio. Dans mon cas, il se trouve à l'adresse suivante :

" C:\Program Fichiers (x86) \Microsoft Visual Studio 10.0 \Xml\Schemas\EnterpriseLibrary.Configuration.xsd "

CONTEXTE

  • Visual Studio 2010
  • Bibliothèque d'entreprise 5

LES MESURES À PRENDRE POUR SUPPRIMER LES AVERTISSEMENTS

  1. ouvrez app.config dans votre projet Visual Studio
  2. cliquez avec le bouton droit de la souris dans l'éditeur de document XML, sélectionnez "Propriétés".
  3. ajouter le chemin d'accès complet au fichier "EnterpriseLibrary.Configuration.xsd".

ASIDE

Il convient de répéter que ces "messages" de la "liste d'erreurs" ("Impossible de trouver des informations de schéma pour l'élément") ne sont visibles que lorsque vous ouvrez le fichier app.config. Si vous "Fermez tous les documents" et compilez... aucun message ne sera signalé.

0 votes

Une solution très simple. C'est encore plus simple si vous cliquez sur le bouton ellipse à droite de la variable chemin une fois que vous avez ouvert les propriétés -- cela fait apparaître une boîte de dialogue où vous pouvez simplement cliquer sur le schéma XML que vous voulez inclure...

11voto

user57433 Points 336

J'ai configuré le app.config avec l'outil pour la configuration d'EntLib et j'ai mis en place ma LoggingConfiguration bloc. Puis j'ai copié ceci dans le bloc DotNetConfig.xsd . Bien sûr, il ne couvre pas tous les attributs, seulement 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>

0 votes

Cela fonctionne très bien ! !! Merci pour cette technique. Maintenant je sais comment en faire une pour la configuration de remoting.

0 votes

J'ai changé la séquence à tous pour la 3ème ligne afin que les sections puissent apparaître dans n'importe quel ordre.

0 votes

@user57433 - Où se trouvent l'outil de configuration EntLib et le fichier DotNetConfig.xsd ?

1voto

Franci Penov Points 45358

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 regardant dans VS Tools/Options/Test Editor/XML/Miscellaneous. Malheureusement, je ne sais pas où se trouve le fichier de schéma pour la MS Enterprise Library 4.0.

Mise à jour : Après avoir installé MS Enterprise Library, il semble qu'il n'y ait pas de fichier .xsd. Cependant, il existe un outil pour modifier la configuration - EntLibConfig.exe, que vous pouvez utiliser pour modifier les fichiers de configuration. De plus, si vous ajoutez les sections de configuration appropriées à votre fichier de configuration, VS devrait être capable d'analyser le fichier de configuration correctement. (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.

0voto

darkmatter Points 1

Naviguez vers ce : Fichiers xsd du NLog

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

Le premier a fait l'affaire pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X