So beheben Sie den Fehler: "Schemainformationen für das Attribut / Element konnten nicht gefunden werden" durch Erstellen eines Schemas

148

Ich habe eine Windows Forms-Anwendung in VS2010 mit C # geschrieben und erhalte die folgenden Fehler in der app.configDatei:

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'

Was muss ich im Code ändern, um dieses Problem zu beheben? Wo kann ich bearbeiten, was drin ist CCP_Utility.Settings1und CCP_Utility.Properties.Settings?

Hier ist der 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
quelle
Dies sieht aus wie ein Betrüger dieser Frage: stackoverflow.com/questions/179927/… . Überprüfen Sie die Antwort von @ user57433.
Rsbarro
@rsbarro, Wo befinden sich das EntLib-Konfigurationstool und die DotNetConfig.xsd-Datei?
Brian McCarthy
Entschuldigung, ich habe nicht bemerkt, dass der Benutzer zwei Antworten auf die Frage gepostet hat. Ich bezog mich auf die zweite Antwort. Diese Antwort war zwar richtig, aber etwas unklar, so dass im Folgenden eine detailliertere Antwort gegeben wurde.
Rsbarro
1
Danke, rsbarro! Die ursprüngliche Frage von StingyJack beschränkte sich auf Fehler bei der Verwendung von Konfigurationsabschnitten für Unternehmensbibliotheken, nicht nur auf benutzerdefinierte Konfigurationsabschnitte.
Lisa

Antworten:

169

UPDATE Sept 2015
Diese Antwort wird weiterhin positiv bewertet, daher werde ich sie hier belassen, da sie für einige Leute hilfreich zu sein scheint. Bitte lesen Sie zuerst die anderen Antworten von @reexmonkey und @Pressacco . Sie können bessere Ergebnisse liefern.

ORIGINAL ANTWORT Probieren
Sie es aus:

  1. Öffnen Sie in Visual Studio Ihre Datei app.config oder web.config.
  2. Gehen Sie zum Menü "XML" und wählen Sie "Schema erstellen". Diese Aktion sollte eine neue Datei mit dem Namen "app.xsd" oder "web.xsd" erstellen.
  3. Speichern Sie diese Datei auf Ihrer Festplatte.
  4. Gehen Sie zurück zu Ihrer app.config oder web.config und klicken Sie im Bearbeitungsfenster mit der rechten Maustaste und wählen Sie Eigenschaften aus. Stellen Sie von dort aus sicher, dass auf die soeben generierte xsd in der Schemas-Eigenschaft verwiesen wird. Wenn es nicht da ist, füge es hinzu.

Das sollte dazu führen, dass diese Nachrichten verschwinden.

Ich habe meine web.xsd im Stammverzeichnis meines Webordners gespeichert (was möglicherweise nicht der beste Ort dafür ist, aber nur zu Demonstrationszwecken), und meine Schemas-Eigenschaft sieht folgendermaßen aus:

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

rsbarro
quelle
10
@rsbarro, Danke deine Antwort! Warum haben Sie 2 xsd-Dateien? Ich habe das Schema erstellt und nur 1 Datei-app.xsd erstellt, die ich im Stammverzeichnis gespeichert habe. Die Fehler verschwanden, aber jetzt erhalte ich eine Warnung: "Das globale Element 'Konfiguration' wurde bereits deklariert". Irgendeine Idee, wie man das behebt?
Brian McCarthy
2
Verwenden Sie einfach das Dialogfeld Eigenschaften, um Ihr Schema auszuwählen oder ein anderes Schema hinzuzufügen. Wenn Sie die Datei app.config anzeigen, klicken Sie mit der rechten Maustaste in das Editorfenster und wählen Sie Eigenschaften. Sie sollten Schemas im Steuerelement des Eigenschafteneditors sehen, das angezeigt wird. Wenn Sie in Schemas auf die Schaltfläche "..." klicken, können Sie die Schemas, die Sie für Ihre Konfigurationsdatei verwenden möchten, über eine schöne GUI auswählen.
Rsbarro
3
Vielen Dank. Das hat funktioniert, aber gibt es einen guten Ort, an dem ich lesen kann, um zu verstehen, WARUM das passiert? Es scheint, als müsste ich plötzlich ein Schema für meine web.config generieren, nachdem ich viel Inhalt für DotNetOpenAuth hinzugefügt und dann eine edmx-Datei von Grund auf neu generiert habe. Es macht Sinn in einem "Sie haben viele Dinge geändert, also wurde etwas wackelig." Art, aber es wäre hilfreich zu wissen, warum die Datei web.config spontan ein Schema benötigt.
Froggythefrog
6
Fügen Sie beim Generieren Ihrer Datei Web.xsd nur die Schemas hinzu, die Sie in Ihren Abschnitten web / app.config (Benutzerabschnitte) hinzufügen. Schließen Sie alle anderen aus, die bereits im Standardschema oder in anderen .xsd enthalten sind.
Pagotti
10
NEIN NEIN NEIN!! Dies ist nicht die "Lösung", da es nicht einmal ein echtes Problem ist. Siehe und stimme für die Antwort von @ pressacco. Auch die Antwort von reexmonkey funktioniert. Warum bekommt diese Antwort so viele positive Stimmen? 1. Einfach ignorieren! Schließen Sie die Datei app.config oder web.config und kompilieren Sie, dass die Nachrichten nicht einmal angezeigt werden. 2. Obwohl dies nicht erforderlich ist, klicken Sie mit der rechten Maustaste auf die Eigenschaften .config, um den Pfad zur von VS bereitgestellten XSD zu korrigieren. (Antwort von @ pressacco) 3. Oder: Ändern Sie die Projekteinstellungen DotNet-Version und zurück. Wiederholen Sie zweimal. (Antwort von Reexmonkey). Kann Probleme mit Paketaktualisierungen verursachen.
Pashute
215

Schnellster, einfachster und faulster Weg, um das Problem zu lösen:

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projektsymbol und wählen Sie "Eigenschaften".
  2. Wechseln Sie zur Registerkarte "Anwendung" und wählen Sie ein früheres .NET-Zielframework aus.
  3. Änderungen speichern.
  4. Wechseln Sie zur Registerkarte "Anwendung" und wählen Sie das ursprüngliche .NET-Zielframework aus.
  5. Änderungen speichern => Problem gelöst!
reexmonkey
quelle
11
Süss! Arbeitete für mich in VS2012.
Amo
4
Arbeitete auch für mich (VS2013 Premium).
Remco
5
Dies funktioniert möglicherweise nicht beim ersten Versuch. Ich musste es zweimal tun, bevor es in VS 2013 Express funktionierte.
H2ONaCl
23
Arbeitete für mich in Visual Studio 2015. Wäre schön, wenn jemand erklären könnte, warum.
Jonathan Wood
5
Hat nicht funktioniert, VS2015 Update 2, .NET 4.5.2. Es sieht so aus, als würden die Nachrichten verschwinden, aber wenn Sie die XML-Datei einfach erneut öffnen, werden sie wieder angezeigt.
Snoop
21

Eine XSD ist in EntLib 5 enthalten und wird im Visual Studio-Schemaverzeichnis installiert. In meinem Fall finden Sie es unter:

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

KONTEXT

  • Visual Studio 2010
  • Unternehmensbibliothek 5

SCHRITTE ZUM ENTFERNEN DER WARNHINWEISE

  1. Öffnen Sie app.config in Ihrem Visual Studio-Projekt
  2. Klicken Sie mit der rechten Maustaste in den XML-Dokumenteditor und wählen Sie "Eigenschaften".
  3. Fügen Sie den vollständig qualifizierten Pfad zur "EnterpriseLibrary.Configuration.xsd" hinzu.

BEISEITE

Es sollte wiederholt werden, dass diese "Fehlerliste" "Meldungen" ("Schemainformationen für das Element konnten nicht gefunden werden") nur sichtbar sind, wenn Sie die Datei app.config öffnen. Wenn Sie "Alle Dokumente schließen" und kompilieren ... werden keine Nachrichten gemeldet.

Pressacco
quelle
1
Mit vollständig qualifiziertem Pfad meinte ich: Verwenden Sie einen absoluten Pfad. Zum Beispiel C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas\EnterpriseLibrary.Configuration.xsd. Unter einem Windows-Betriebssystem kann ein relativer Pfad. \ Und .. \ Zeichen enthalten.
Pressacco
1
Vielen Dank für die Informationen zum Schließen der XML-Datei, um die Warnungen zu entfernen. ) Seltsames Verhalten (
Machtyn
8
Fehlt die EnterpriseLibrary.Configuration.xsd in Visual Studio 2015?
Luke
3
Durch einfaches Schließen der XML-Datei wurde das Problem für mich
behoben
1
Danke @Taegost, das hat es auch für mich getan. (Mein Problem, das benutzerdefinierte Wörterbuch für die Code-Analyse unter VS2013, war geringfügig anders als angegeben, aber dieselben Symptome). Nichts anderes, was ich versuchte, funktionierte und das machte mich verrückt. Als ich das Wörterbuch im Editor geöffnet hatte, schien es, dass das Code-Analyse-Tool es aufgrund dieser Fehler nicht einmal verwendete!
sn00gan
1

Ich habe festgestellt, dass im zugehörigen Modul ein Syntaxfehler aufgetreten ist und nicht kompiliert wurde - der Compiler hat mir dies jedoch nicht mitgeteilt. Habe mir gerade den Fehler bezüglich der app.config Sachen gegeben. VS2010. Nachdem ich den Syntaxfehler behoben hatte, war alles in Ordnung.

Flobadob
quelle
1

Dieser Fehler tritt auf, wenn Ihr Projekt auf veraltete Schemas verweist. Verwenden Sie Visual Studio, um neue zu generieren.

Gehen Sie in Visual Studio wie folgt vor:

  1. Öffnen Sie Ihre app.configoder web.configDatei.
  2. Gehen Sie zum XMLMenü und wählen Sie Create Schema.

Dadurch werden app#.xsd(Windows App) oder web#.xsd(Website) Dateien generiert.

  1. Speichern Sie die neu generierten xsd-Dateien im Stammverzeichnis des Projekts.
    • Öffnen Sie Ihre App.configoder web.config-Datei, klicken Sie mit der rechten ...Maustaste in den Texteditor, wählen Sie Eigenschaften aus und klicken Sie auf die Schaltfläche neben dem Wert für Schemas.
    • Fügen Sie die neu generierten xsd-Dateien über die AddSchaltfläche hinzu.
    • Klicken OK

Die Schemainformationen für die Attribut- / Elementfehler konnten nicht gefunden werden.

WonderWorker
quelle
1

Einfach: In Visual Studio Report Designer
1. Öffnen Sie den Bericht im Entwurfsmodus und löschen Sie das Dataset aus der RDLC-Datei.
2. Öffnen Sie den Lösungs-Explorer und löschen Sie die tatsächliche (beschädigte) XSD-Datei.
3. Fügen Sie das Dataset wieder zur RDLC-Datei hinzu.
4. Mit dem obigen Verfahren wird die neue XSD-Datei erstellt.
5. Detaillierter ist unten.

Öffnen Sie in Visual Studio Ihre RDLC-Datei Report im Entwurfsmodus. Klicken Sie auf den Bericht und wählen Sie dann Ansicht und dann Berichtsdaten aus dem Hauptmenü. Wählen Sie Datasets und dann Rechtsklick und löschen Sie das Dataset aus dem Bericht. Weiter Öffnen Sie den Projektmappen-Explorer, falls er noch nicht in Ihrem Visual Studio geöffnet ist. Suchen Sie die XSD-Datei (Sie sollte denselben Namen haben wie der Datensatz, den Sie gerade aus dem Bericht gelöscht haben). Gehen Sie nun zurück und klicken Sie erneut mit der rechten Maustaste auf die Berichtsdatensätze und wählen Sie Datensatz hinzufügen. Dadurch wird eine neue XSD-Datei erstellt und die Dataset-Eigenschaften in den Bericht geschrieben. Jetzt ist Ihre Fehlermeldung verschwunden und alle fehlenden Daten werden in Ihren Berichten angezeigt.

Greg T.
quelle
0

Als mir dies passierte (aus dem Nichts), wollte ich gerade in die oberste Antwort oben eintauchen, und dann dachte ich, ich würde das Projekt schließen, Visual Studio schließen und dann alles wieder öffnen. Problem gelöst. VS Bug?

Rockin Raul
quelle
Overkill. Das Schließen des Datei-Editors App.config in VS reicht aus. VS-Fehler vielleicht.
Jirka Hanika
0

Ich hatte dies in VS 2012, wo der "Abschnittsname" in einem Projekt geändert wurde, und ich habe es behoben, indem ich "app.config" im Projekt gelöscht und dann im "Projektmappen-Explorer" mit der rechten Maustaste auf das Projekt geklickt und "ausgewählt" habe. Eigenschaften ", dann" Einstellungen ", dann eine Änderung an einer der Einstellungen vornehmen, speichern und neu erstellen. Dadurch wurde eine neue app.config mit den richtigen Informationen erstellt.

Davy C.
quelle
0

In meinem Fall hatte ich einen mehrdeutigen Verweis in meinem Code. Ich habe Visual Studio neu gestartet und konnte die Fehlermeldung sehen. Als ich das behoben habe, ist der andere Fehler verschwunden.

Sofia Khwaja
quelle
-1

Das meiste, was ich schreibe, wurde bereits von Pressacco abgedeckt, aber dies ist spezifisch für SpecFlow.

Ich habe diese Nachricht für das <specFlow>Element erhalten und daher specflow.xsdder Lösung dieser Datei eine Datei hinzugefügt (mit einigen Änderungen, um die zu berücksichtigen<plugins> Element zu berücksichtigen).

Danach habe ich (wie Pressacco) mit der rechten Maustaste in den Dateipuffer app.configund die ausgewählten Eigenschaften geklickt und am Ende Schemashinzugefügt "specflow.xsd". Die Gesamtheit von Schemasjetzt lautet:

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