Comment corriger l'erreur: "Impossible de trouver les informations de schéma pour l'attribut / l'élément" en créant un schéma

148

J'ai une application Windows Forms écrite en VS2010 avec C # et j'obtiens les erreurs suivantes dans le app.configfichier:

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'

Que dois-je modifier dans le code pour résoudre ce problème? Où puis-je modifier le contenu CCP_Utility.Settings1etCCP_Utility.Properties.Settings ?

Voici le app.configcode:

<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
la source
Cela ressemble à une dupe de cette question: stackoverflow.com/questions/179927/… . Vérifiez la réponse de @ user57433.
rsbarro
@rsbarro, où se trouvent l'outil de configuration EntLib et le fichier DotNetConfig.xsd?
Brian McCarthy
Désolé, je n'ai pas réalisé que l'utilisateur a publié deux réponses à la question. Je faisais référence à la deuxième réponse. Cette réponse, bien que correcte, était un peu floue, donc une réponse plus détaillée ci-dessous.
rsbarro
1
Merci, rsbarro! La question initiale de StingyJack était limitée aux erreurs utilisant les sections de configuration de la bibliothèque d'entreprise, pas simplement à une section de configuration personnalisée.
Lisa

Réponses:

169

MISE À JOUR Sept 2015
Cette réponse continue de susciter des votes positifs, je vais donc la laisser ici car elle semble être utile à certaines personnes, mais veuillez d'abord consulter les autres réponses de @reexmonkey et @Pressacco . Ils peuvent fournir de meilleurs résultats.

RÉPONSE ORIGINALE
Donnez- moi une chance:

  1. Dans Visual Studio, ouvrez votre fichier app.config ou web.config.
  2. Allez dans le menu "XML" et sélectionnez "Créer un schéma". Cette action devrait créer un nouveau fichier appelé "app.xsd" ou "web.xsd".
  3. Enregistrez ce fichier sur votre disque.
  4. Revenez à votre app.config ou web.config et dans la fenêtre d'édition , faites un clic droit et sélectionnez les propriétés. À partir de là, assurez-vous que le xsd que vous venez de générer est référencé dans la propriété Schemas. Si ce n'est pas là, ajoutez-le.

Cela devrait faire disparaître ces messages.

J'ai enregistré mon web.xsd à la racine de mon dossier Web (qui n'est peut-être pas le meilleur endroit pour cela, mais juste à des fins de démonstration) et ma propriété Schemas ressemble à ceci:

"C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ xml \ Schemas \ DotNetConfig.xsd" "Web.xsd"

rsbarro
la source
10
@rsbarro, merci de votre réponse! Pourquoi avez-vous 2 fichiers xsd? J'ai créé le schéma et je n'ai trouvé qu'un seul fichier-app.xsd que j'ai enregistré dans le répertoire racine. Les erreurs ont disparu mais maintenant j'obtiens un avertissement: "L'élément global 'configuration' a déjà été déclaré". Une idée pour réparer ceci?
Brian McCarthy
2
Utilisez simplement la boîte de dialogue Propriétés pour sélectionner votre schéma ou ajouter un autre schéma. Lorsque vous affichez app.config, cliquez avec le bouton droit de la souris dans la fenêtre de l'éditeur et sélectionnez Propriétés. Vous devriez voir Schemas dans le contrôle de l'éditeur de propriétés qui apparaît. De plus, si vous cliquez sur le bouton "..." dans Schemas, cela vous permet de sélectionner les schémas que vous souhaitez utiliser pour votre fichier de configuration en utilisant une interface graphique agréable.
rsbarro
3
Merci. Cela a fonctionné, mais y a-t-il un bon endroit que je peux lire pour comprendre POURQUOI cela se produit? Il semble que j'ai soudainement eu besoin de générer un schéma pour mon web.config après avoir ajouté beaucoup de contenu pour DotNetOpenAuth, puis régénéré un fichier edmx à partir de zéro. Cela a du sens dans un "Vous avez changé beaucoup de choses, donc quelque chose a été trompé." en quelque sorte, mais il serait utile de savoir pourquoi le fichier web.config aurait spontanément besoin d'un schéma.
froggythefrog
6
Lorsque vous générez votre fichier Web.xsd, incluez uniquement les schémas que vous ajoutez dans vos sections web / app.config (sections utilisateur). Excluez tous les autres qui sont déjà dans le schéma par défaut ou les autres .xsd inclus.
Pagotti
10
NON NON NON!! Ce n'est pas la «solution», car ce n'est même pas un vrai problème. Voir et voter pour la réponse de @ pressacco. La réponse de reexmonkey fonctionne également. Pourquoi cette réponse obtient-elle autant de votes positifs? 1. Ignorez simplement! Fermez app.config ou web.config et compilez vous ne verrez même pas les messages. 2. Bien que cela ne soit pas nécessaire, résolvez en cliquant avec le bouton droit sur les propriétés .config en corrigeant le chemin vers le XSD fourni par VS. (Réponse de @ pressacco) 3. Ou: modifiez les paramètres du projet Version DotNet et inversement. Répétez deux fois. (réponse de reexmonkey). Peut causer des problèmes avec les mises à jour des packages.
pashute
218

Le moyen le plus rapide et le plus simple de résoudre le problème:

  1. Cliquez avec le bouton droit sur l'icône du projet dans l'Explorateur de solutions et choisissez "Propriétés".
  2. Accédez à l'onglet "Application" et choisissez un framework cible .NET antérieur.
  3. Sauvegarder les modifications.
  4. Allez dans l'onglet "Application" et choisissez le framework cible initial .NET.
  5. Enregistrer les modifications => problème résolu!
reexmonkey
la source
11
Doux! A travaillé pour moi dans VS2012.
amo
4
A travaillé pour moi aussi (VS2013 Premium).
Remco
5
Cela pourrait ne pas fonctionner du premier coup. J'avais besoin de le faire deux fois avant que cela fonctionne dans VS 2013 Express.
H2ONaCl
24
A travaillé pour moi dans Visual Studio 2015. Ce serait bien si quelqu'un pouvait expliquer pourquoi.
Jonathan Wood
6
N'a pas fonctionné, mise à jour 2 de VS2015, .NET 4.5.2. On dirait que cela fait disparaître les messages, mais si vous ouvrez simplement à nouveau le fichier XML, ils reviennent.
Snoop
21

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

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

LE CONTEXTE

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

ÉTAPES POUR SUPPRIMER LES AVERTISSEMENTS

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

DE CÔTÉ

Il vaut la peine de répéter que ces «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 "Fermez tous les documents" et compilez ... aucun message ne sera signalé.

Pressacco
la source
1
Par chemin entièrement qualifié, je voulais dire: utiliser un chemin absolu. Par exemple C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas\EnterpriseLibrary.Configuration.xsd. Sur un système d'exploitation Windows, un chemin relatif peut inclure des caractères. \ Et .. \.
Pressacco
1
Merci pour les informations sur la fermeture du fichier XML pour supprimer les avertissements. ) Comportement étrange (
Machtyn
8
Le fichier EnterpriseLibrary.Configuration.xsd est-il manquant dans Visual Studio 2015?
Luc
3
La simple fermeture du fichier XML a fait disparaître le problème pour moi
Taegost
1
Merci @Taegost, cela l'a fait pour moi aussi. (Mon problème, le dictionnaire personnalisé d'analyse de code sous VS2013, était légèrement différent de celui indiqué, mais les mêmes symptômes). Rien d'autre que j'ai essayé n'a fonctionné et cela me rendait fou. Lorsque j'ai ouvert le dictionnaire dans l'éditeur, il semble que l'outil d'analyse de code ne l'utilisait même pas à cause de ces erreurs!
sn00gan
1

J'ai trouvé qu'il y avait une erreur de syntaxe dans le module associé et qu'il ne compilait pas - le compilateur ne me l'a pas dit cependant. Je viens de me donner l'erreur concernant les trucs app.config. VS2010. Une fois que j'ai corrigé l'erreur de syntaxe, tout allait bien.

flobadob
la source
1

Cette erreur se produit lorsque votre projet fait référence à des schémas obsolètes. Utilisez Visual Studio pour en générer de nouveaux.

Dans Visual Studio, procédez comme suit:

  1. Ouvrez votre fichier app.configou web.config.
  2. Allez dans le XMLmenu et sélectionnez Create Schema.

Cela déclenchera la génération de fichier (s) app#.xsd(application Windows) ou web#.xsd(site Web).

  1. Enregistrez le ou les fichiers xsd nouvellement générés à la racine du projet.
    • Ouvrez votre fichier App.configou web.config, cliquez avec le bouton droit dans l'éditeur de texte et sélectionnez les propriétés et cliquez sur le ...bouton à côté de la valeur de Schémas.
    • Ajoutez le ou les fichiers xsd nouvellement générés à l'aide du Addbouton.
    • Cliquez sur OK

Les informations de schéma Impossible de trouver pour les erreurs d' attribut / élément doivent maintenant être résolues.

WonderWorker
la source
1

Simple: dans le concepteur de rapports Visual Studio
1. Ouvrez le rapport en mode Création et supprimez l'ensemble de données du fichier RDLC
2. Ouvrez l'Explorateur de solutions et supprimez le fichier XSD réel (endommagé)
3. Ajoutez l'ensemble de données au fichier RDLC.
4. La procédure ci-dessus créera le nouveau fichier XSD.
5. Plus de détails ci-dessous.

Dans Visual Studio, ouvrez votre rapport de fichier RDLC en mode Conception. Cliquez sur le rapport, puis sélectionnez Afficher et rapporter les données dans le menu de la ligne supérieure. Sélectionnez Ensembles de données, puis cliquez avec le bouton droit et supprimez l'ensemble de données du rapport. Ensuite, ouvrez l'Explorateur de solutions, s'il n'est pas déjà ouvert dans votre Visual Studio. Localisez le fichier XSD (il doit avoir le même nom que l'ensemble de données que vous venez de supprimer du rapport). Maintenant, revenez en arrière et cliquez à nouveau avec le bouton droit sur les ensembles de données de données du rapport, puis sélectionnez Ajouter un ensemble de données. Cela créera un nouveau fichier XSD et écrira les propriétés du jeu de données dans le rapport. Maintenant, votre message d'erreur aura disparu et toutes les données manquantes apparaîtront désormais dans vos rapports.

Greg T.
la source
0

Quand cela m'est arrivé (sorti de nulle part), j'étais sur le point de plonger dans la première réponse ci-dessus, puis j'ai pensé que je fermerais le projet, fermerais Visual Studio, puis tout rouvrirais. Problème résolu. VS bug?

Rockin Raul
la source
Overkill. La fermeture de l'éditeur de fichiers App.config dans VS suffit. VS bug, peut-être.
Jirka Hanika
0

J'avais ceci dans VS 2012 où le "Nom de la section" avait été changé dans un projet, et je l'ai corrigé en supprimant "app.config" dans le projet, puis en cliquant avec le bouton droit sur le projet dans "Explorateur de solutions", en sélectionnant " Propriétés ", puis" Paramètres ", puis modification de l'un des paramètres, enregistrement et reconstruction. Cela a créé un nouveau app.config avec les informations correctes.

Davy C
la source
0

Dans mon cas, j'avais une référence ambiguë dans mon code. J'ai redémarré Visual Studio et j'ai pu voir le message d'erreur. Lorsque j'ai résolu cela, l'autre erreur a disparu.

Sofia Khwaja
la source
-1

La plupart de ce que j'écris a déjà été couvert par Pressacco, mais c'est spécifique à SpecFlow.

Je recevais ce message pour l' <specFlow>élément et j'ai donc ajouté un specflow.xsdfichier à la solution cette réponse (avec quelques modifications pour permettre le<plugins> élément).

Ensuite, j'ai (comme Pressacco), cliqué avec le bouton droit de la souris dans le tampon de fichier app.configet les propriétés sélectionnées, et à l'intérieur Schemas, j'ai ajouté "specflow.xsd"à la fin. L'intégralité de Schemasmaintenant lit:

"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
la source