Come correggere l'errore: "Impossibile trovare le informazioni sullo schema per l'attributo / elemento" creando lo schema


148

Ho un'applicazione Windows Form scritta in VS2010 con C # e ottengo i seguenti errori nel app.configfile:

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'

Cosa devo modificare nel codice per risolvere questo problema? Dove posso modificare cosa c'è dentro CCP_Utility.Settings1e CCP_Utility.Properties.Settings?

Ecco il app.configcodice:

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

Sembra un duplicato di questa domanda: stackoverflow.com/questions/179927/… . Controlla la risposta di @ user57433.
rsbarro,

@rsbarro, dove si trovano lo strumento di configurazione EntLib e il file DotNetConfig.xsd?
Brian McCarthy,

Spiacenti, non mi ero reso conto che l'utente ha pubblicato due risposte alla domanda. Mi riferivo alla seconda risposta. Quella risposta, sebbene corretta, era un po 'poco chiara, quindi fornì una risposta più dettagliata di seguito.
rsbarro,

1
Grazie, rsbarro! La domanda originale di StingyJack era limitata agli errori che utilizzavano le sezioni di configurazione della libreria aziendale, non semplicemente una sezione di configurazione personalizzata.
Lisa,

Risposte:


169

AGGIORNAMENTO Settembre 2015
Questa risposta continua a ricevere voti, quindi la lascerò qui poiché sembra essere utile ad alcune persone, ma per favore controlla prima le altre risposte da @reexmonkey e @Pressacco . Possono fornire risultati migliori.

RISPOSTA ORIGINALE Provalo
:

  1. In Visual Studio, apri il tuo file app.config o web.config.
  2. Vai al menu "XML" e seleziona "Crea schema". Questa azione dovrebbe creare un nuovo file chiamato "app.xsd" o "web.xsd".
  3. Salva quel file sul tuo disco.
  4. Torna al tuo app.config o web.config e nella finestra di modifica , fai clic con il tasto destro e seleziona Proprietà. Da lì, assicurati che la xsd appena generata sia referenziata nella proprietà Schemi. Se non è presente, aggiungilo.

Ciò dovrebbe far scomparire quei messaggi.

Ho salvato il mio web.xsd nella radice della mia cartella web (che potrebbe non essere il posto migliore per questo, ma solo a scopo dimostrativo) e la mia proprietà Schemi è simile a questa:

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


10
@rsbarro, grazie della tua risposta! Perché hai 2 file xsd? Ho creato lo schema e ho creato solo 1 file-app.xsd che ho salvato nella directory principale. Gli errori sono scomparsi ma ora ricevo un avviso: "L'elemento globale 'configurazione' è già stato dichiarato". Qualche idea su come risolvere questo problema?
Brian McCarthy,

2
Basta usare la finestra di dialogo Proprietà per selezionare lo schema o aggiungere un altro schema. Quando si visualizza app.config, fare clic con il tasto destro nella finestra dell'editor e selezionare Proprietà. Dovresti vedere gli schemi nel controllo dell'Editor delle proprietà che si apre. Inoltre, se fai clic sul pulsante "..." in Schemi ti consente di selezionare gli schemi che vuoi usare per il tuo file di configurazione usando una bella GUI.
rsbarro,

3
Grazie. Funzionava, ma c'è un buon posto in cui posso leggere per capire PERCHÉ succede? Mi sembra che tutto ad un tratto sia necessario generare uno schema per il mio web.config dopo aver aggiunto molto contenuto per DotNetOpenAuth e quindi rigenerare un file edmx da zero. Ha senso in "Hai cambiato molte cose, quindi qualcosa è stato vinto." in un certo senso, ma sarebbe utile sapere perché il file web.config avrebbe spontaneamente bisogno di uno schema.
froggythefrog,

6
Quando generi il tuo file Web.xsd, includi solo gli schemi che aggiungi nelle sezioni web / app.config (sezioni utente). Escludere tutti gli altri già inclusi nello schema predefinito o altri .xsd inclusi.
Pagotti,

10
NO NO NO !! Questa non è la "soluzione", dal momento che non è nemmeno un vero problema. Guarda e vota per la risposta di @ pressacco. Anche la risposta di reexmonkey funziona. Perché questa risposta ottiene così tanti voti positivi? 1. Ignora semplicemente! Chiudi app.config o web.config e compila per non vedere nemmeno i messaggi. 2. Sebbene non sia necessario, risolvere facendo clic con il pulsante destro del mouse sulle proprietà .config correggendo il percorso verso l'XSD fornito da VS. (@ la risposta di pressacco) 3. Oppure: modifica le impostazioni del progetto Versione DotNet e ritorno. Ripeti due volte. (risposta di reexmonkey). Potrebbe causare problemi con gli aggiornamenti del pacchetto.
pashute,

217

Il modo più rapido e semplice per risolvere il problema:

  1. Fare clic con il tasto destro sull'icona del progetto in Esplora soluzioni e selezionare "Proprietà".
  2. Vai alla scheda "Applicazione" e scegli un framework di destinazione .NET precedente.
  3. Salvare le modifiche.
  4. Vai alla scheda "Applicazione" e scegli il framework di destinazione .NET iniziale.
  5. Salva modifiche => problema risolto!

11
Dolce! Ha funzionato per me in VS2012.
Amo il

4
Ha funzionato anche per me (VS2013 Premium).
Remco,

5
Questo potrebbe non funzionare al primo tentativo. Ho dovuto farlo due volte prima che funzionasse in VS 2013 Express.
H2ONaCl

24
Ha funzionato per me in Visual Studio 2015. Sarebbe bello se qualcuno potesse spiegare il perché.
Jonathan Wood,

6
Non ha funzionato, VS2015 aggiornamento 2, .NET 4.5.2. Sembra che i messaggi vadano via, ma se riapri semplicemente il file XML, ritornano.
Snoop,

21

Un XSD è incluso con EntLib 5 ed è installato nella directory dello schema di Visual Studio. Nel mio caso, si può trovare su:

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

CONTESTO

  • Visual Studio 2010
  • Biblioteca aziendale 5

PASSAGGI PER RIMUOVERE LE AVVERTENZE

  1. apri app.config nel tuo progetto Visual Studio
  2. tasto destro del mouse nell'editor del documento XML, selezionare "Proprietà"
  3. aggiungere il percorso completo a "EnterpriseLibrary.Configuration.xsd"

A PARTE

Vale la pena ripetere che questi "Messaggi" di "Elenco errori" ("Impossibile trovare le informazioni sullo schema per l'elemento") sono visibili solo quando si apre il file app.config. Se "Chiudi tutti i documenti" e compili ... non verrà segnalato alcun messaggio.


1
Per percorso completo intendo: usare un percorso assoluto. Per esempio C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas\EnterpriseLibrary.Configuration.xsd. Su un sistema operativo Windows, un percorso relativo può includere. \ E .. \ caratteri.
Pressacco,

1
Grazie per le informazioni sulla chiusura del file XML per rimuovere gli avvisi. ) Strange Behaviour (
Machtyn,

8
EnterpriseLibrary.Configuration.xsd è mancante in Visual Studio 2015?
Luca,

3
La semplice chiusura del file XML ha fatto scomparire il problema per me
Taegost,

1
Grazie @Taegost, lo ha fatto anche per me. (Il mio problema, dizionario personalizzato di analisi del codice sotto VS2013, era leggermente diverso da quello dichiarato, ma stessi sintomi). Nient'altro che ho provato ha funzionato e questo mi stava facendo impazzire. Quando avevo aperto il dizionario nell'editor, sembra che lo strumento di analisi del codice non lo usasse nemmeno a causa di questi errori!
sn00gan,

1

Ho scoperto che c'era un errore di sintassi nel modulo correlato e non si stava compilando - il compilatore non me lo ha detto però. Mi ha appena dato l'errore relativo alle cose app.config. VS2010. Una volta risolto l'errore di sintassi, tutto andava bene.


1

Questo errore si verifica quando il progetto fa riferimento a schemi obsoleti. Usa Visual Studio per generarne di nuovi.

In Visual Studio, procedi come segue:

  1. Apri il tuo app.configo web.configfile.
  2. Vai al XMLmenu e seleziona Create Schema.

Ciò attiverà la generazione di file ( app#.xsdapp di Windows) o web#.xsd(siti Web).

  1. Salvare i file xsd appena generati nella radice del progetto.
    • Apri il tuo App.configo web.configfile, fai clic con il pulsante destro del mouse nell'editor di testo e seleziona proprietà e fai clic sul ...pulsante accanto al valore per gli schemi.
    • Aggiungi i file xsd appena generati usando il Addpulsante.
    • Clic OK

Le informazioni Impossibile trovare lo schema per l'attributo / elemento di errore (s) dovrebbe ora essere risolto.


1

Semplice: in Visual Studio Report Designer
1. Aprire il report in modalità progettazione ed eliminare il set di dati dal file RDLC
2. Aprire Solution Explorer ed eliminare il file XSD effettivo (danneggiato)
3. Aggiungere nuovamente il set di dati al file RDLC.
4. La procedura sopra creata creerà il nuovo file XSD.
5. Più dettagliato è di seguito.

In Visual Studio, apri il rapporto File RDLC in modalità Progettazione. Fare clic sul rapporto, quindi selezionare Visualizza, quindi Dati rapporto dal menu in alto. Selezionare Set di dati, quindi fare clic con il pulsante destro del mouse ed eliminare il set di dati dal report. Avanti Apri Esplora soluzioni, se non è già aperto in Visual Studio. Individua il file XSD (dovrebbe avere lo stesso nome del set di dati che hai appena eliminato dal rapporto). Ora torna indietro e fai nuovamente clic con il pulsante destro del mouse sui set di dati dei dati del rapporto e seleziona Aggiungi set di dati. Ciò creerà un nuovo file XSD e scriverà le proprietà del set di dati nel rapporto. Ora il tuo messaggio di errore sparirà e tutti i dati mancanti verranno ora visualizzati nei tuoi rapporti.


0

Quando questo è successo a me (dal nulla) stavo per immergermi nella risposta in alto sopra, e poi ho pensato di chiudere il progetto, chiudere Visual Studio e quindi riaprire tutto. Problema risolto. Bug VS?


Eccessivo. È sufficiente chiudere l'editor di file App.config in VS. Bug VS, forse.
Jirka Hanika,

0

Ho avuto questo in VS 2012 dove il "Nome sezione" era stato modificato in un progetto e l'ho risolto eliminando "app.config" nel progetto, quindi facendo clic con il tasto destro del mouse sul progetto in "Esplora soluzioni", selezionando " Proprietà ", quindi" Impostazioni ", quindi apportare una modifica a una delle impostazioni, salvandola e ricostruendola. Ciò ha creato un nuovo app.config con le informazioni corrette.


0

Nel mio caso avevo un riferimento ambiguo nel mio codice. Ho riavviato Visual Studio e ho potuto vedere il messaggio di errore. Quando l'ho risolto, l'altro errore è scomparso.


-1

Gran parte di ciò che scrivo è già stato trattato da Pressacco, ma questo è specifico di SpecFlow.

Stavo ricevendo questo messaggio per l' <specFlow>elemento e quindi ho aggiunto un specflow.xsdfile alla soluzione questa risposta (con alcune modifiche per consentire l' <plugins>elemento).

Successivamente I (come Pressacco), fatto clic con il tasto destro all'interno del buffer di file app.confige proprietà selezionate e Schemas, all'interno , l'ho aggiunto "specflow.xsd"alla fine. L'insieme di Schemasora recita:

"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"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.