Jak naprawić błąd: „Nie można znaleźć informacji o schemacie dla atrybutu / elementu”, tworząc schemat

148

Mam aplikację Windows Forms napisaną w VS2010 z C # i otrzymuję następujące błędy w app.configpliku:

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'

Co muszę zmienić w kodzie, aby rozwiązać ten problem? Gdzie mogę edytować zawartość CCP_Utility.Settings1i CCP_Utility.Properties.Settings?

Oto app.configkod:

<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
źródło
To wygląda na powtórzenie tego pytania: stackoverflow.com/questions/179927/… . Sprawdź odpowiedź @ user57433.
rsbarro,
@rsbarro, gdzie znajduje się narzędzie konfiguracyjne EntLib i plik DotNetConfig.xsd?
Brian McCarthy
Przepraszamy, nie zdawałem sobie sprawy, że użytkownik opublikował dwie odpowiedzi na pytanie. Odwoływałem się do drugiej odpowiedzi. Ta odpowiedź, choć poprawna, była trochę niejasna, więc poniżej przedstawiłem bardziej szczegółową odpowiedź.
rsbarro
1
Dzięki, rsbarro! Pierwotne pytanie StingyJacka ograniczało się do błędów przy użyciu sekcji konfiguracji biblioteki korporacyjnej, a nie po prostu dowolnej sekcji konfiguracji niestandardowej.
Lisa

Odpowiedzi:

169

AKTUALIZACJA, wrzesień 2015 r.
Ta odpowiedź nadal zbiera pozytywne głosy, więc zostawię ją tutaj, ponieważ wydaje się być pomocna dla niektórych osób, ale najpierw sprawdź inne odpowiedzi od @reexmonkey i @Pressacco . Mogą zapewnić lepsze wyniki.

ORYGINALNA ODPOWIEDŹ
Daj temu szansę:

  1. W programie Visual Studio otwórz plik app.config lub web.config.
  2. Przejdź do menu „XML” i wybierz opcję „Utwórz schemat”. To działanie powinno utworzyć nowy plik o nazwie „app.xsd” lub „web.xsd”.
  3. Zapisz ten plik na dysku.
  4. Wróć do pliku app.config lub web.config iw oknie edycji kliknij prawym przyciskiem myszy i wybierz właściwości. Stamtąd upewnij się, że właśnie wygenerowany plik xsd znajduje się we właściwości Schemas. Jeśli go tam nie ma, dodaj go.

To powinno spowodować, że te wiadomości znikną.

Zapisałem plik web.xsd w katalogu głównym mojego folderu internetowego (co może nie być najlepszym miejscem do tego celu, ale tylko do celów demonstracyjnych), a moja właściwość Schemas wygląda następująco:

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

rsbarro
źródło
10
@rsbarro, dziękuję za odpowiedź! Dlaczego masz 2 pliki xsd? Stworzyłem schemat i wymyśliłem tylko 1 plik app.xsd, który zapisałem w katalogu głównym. Błędy zniknęły, ale teraz pojawia się ostrzeżenie: „Konfiguracja elementu globalnego została już zadeklarowana”. Masz jakiś pomysł, jak to naprawić?
Brian McCarthy
2
Po prostu użyj okna dialogowego Właściwości, aby wybrać schemat lub dodać kolejny schemat. Podczas przeglądania pliku app.config kliknij prawym przyciskiem myszy w oknie edytora i wybierz Właściwości. Powinieneś zobaczyć Schematy w wyskakującej kontrolce Edytora właściwości. Ponadto, jeśli klikniesz przycisk „...” w Schematach, pozwala on wybrać schematy, których chcesz użyć w pliku konfiguracyjnym za pomocą ładnego GUI.
rsbarro
3
Dzięki. To zadziałało, ale czy jest dobre miejsce, w którym mogę przeczytać, aby zrozumieć, DLACZEGO tak się dzieje? Wygląda na to, że nagle musiałem wygenerować schemat dla mojego pliku web.config po dodaniu dużej ilości treści dla DotNetOpenAuth, a następnie ponownie wygenerowałem plik edmx od podstaw. Ma to sens w przypadku „Zmieniłeś wiele rzeczy, więc coś się zawiodło”. w pewnym sensie, ale warto byłoby wiedzieć, dlaczego plik web.config spontanicznie potrzebuje schematu.
froggythefrog
6
Podczas generowania pliku Web.xsd należy uwzględnić tylko schematy, które dodajesz do sekcji web / app.config (sekcje użytkownika). Wyklucz wszystkie inne, które są już w domyślnym schemacie lub inne uwzględnione .xsd.
Pagotti,
10
NIE NIE NIE!! To nie jest „rozwiązanie”, ponieważ nie jest to nawet prawdziwy problem. Zobacz i zagłosuj na odpowiedź @ pressacco. Również odpowiedź reexmonkey działa. Dlaczego ta odpowiedź ma tyle pozytywnych głosów? 1. Po prostu ignoruj! Zamknij plik app.config lub web.config i skompiluj, a nawet nie zobaczysz wiadomości. 2. Chociaż nie ma takiej potrzeby, rozwiąż problem, klikając prawym przyciskiem myszy właściwości .config, poprawiając ścieżkę do XSD dostarczonego przez VS. (odpowiedź @ pressacco) 3. Lub: zmień ustawienia projektu na wersję DotNet iz powrotem. Powtórz dwukrotnie. (odpowiedź reexmonkey). Może powodować problemy z aktualizacjami pakietów.
pashute
217

Najszybszy, najłatwiejszy, leniwy sposób na rozwiązanie problemu:

  1. Kliknij prawym przyciskiem myszy ikonę projektu w Eksploratorze rozwiązań i wybierz „Właściwości”.
  2. Przejdź do zakładki „Aplikacja” i wybierz wcześniejszą platformę docelową .NET.
  3. Zapisz zmiany.
  4. Przejdź do zakładki „Aplikacja” i wybierz początkową platformę docelową .NET.
  5. Zapisz zmiany => problem rozwiązany!
reexmonkey
źródło
11
Słodkie! Pracował dla mnie w VS2012.
amo
4
U mnie też działał (VS2013 Premium).
Remco
5
To może nie zadziałać za pierwszym razem. Musiałem to zrobić dwa razy, zanim zadziałało w VS 2013 Express.
H2ONaCl
24
Pracował dla mnie w Visual Studio 2015. Byłoby miło, gdyby ktoś mógł wyjaśnić dlaczego.
Jonathan Wood,
6
Nie działa, VS2015 aktualizacja 2, .NET 4.5.2. Wygląda na to, że wiadomości znikają, ale jeśli po prostu ponownie otworzysz plik XML, wrócą.
Snoop
21

XSD jest dołączony do EntLib 5 i jest instalowany w katalogu schematu programu Visual Studio. W moim przypadku można go znaleźć pod adresem:

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

KONTEKST

  • Visual Studio 2010
  • Biblioteka korporacyjna 5

KROKI W CELU USUNIĘCIA OSTRZEŻEŃ

  1. otwórz plik app.config w projekcie programu Visual Studio
  2. kliknij prawym przyciskiem myszy w edytorze dokumentów XML, wybierz "Właściwości"
  3. dodaj w pełni kwalifikowaną ścieżkę do „EnterpriseLibrary.Configuration.xsd”

NA BOK

Warto powtórzyć, że te „Lista błędów” „Komunikaty” („Nie można znaleźć informacji o schemacie dla elementu”) są widoczne tylko po otwarciu pliku app.config. Jeśli zamkniesz wszystkie dokumenty i skompilujesz ... żadne komunikaty nie zostaną zgłoszone.

Pressacco
źródło
1
Przez w pełni kwalifikowaną ścieżkę miałem na myśli: użyj ścieżki absolutnej. Na przykład C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas\EnterpriseLibrary.Configuration.xsd. W systemie operacyjnym Windows ścieżka względna może zawierać znaki. \ I .. \.
Pressacco
1
Dzięki za informacje o zamykaniu pliku XML w celu usunięcia ostrzeżeń. ) Dziwne zachowanie (
Machtyn,
8
Czy w programie Visual Studio 2015 brakuje pliku EnterpriseLibrary.Configuration.xsd?
Łukasz
3
Samo zamknięcie pliku XML sprawiło, że problem
zniknął
1
Dziękuję @Taegost, to też zrobiło to dla mnie. (Mój problem, niestandardowy słownik analizy kodu pod VS2013, był nieco inny niż podano, ale te same objawy). Nic innego, czego próbowałem, nie działało i to doprowadzało mnie do szału. Kiedy otworzyłem słownik w edytorze, okazało się, że narzędzie do analizy kodu nawet go nie używało z powodu tych błędów!
sn00gan
1

Okazało się, że wystąpił błąd składni w powiązanym module i nie był kompilowany - kompilator jednak mi tego nie powiedział. Właśnie podałem mi błąd dotyczący rzeczy z app.config. VS2010. Po naprawieniu błędu składni wszystko było w porządku.

flobadob
źródło
1

Ten błąd występuje, gdy projekt odwołuje się do nieaktualnych schematów. Użyj programu Visual Studio, aby wygenerować nowe.

W programie Visual Studio wykonaj następujące czynności:

  1. Otwórz plik app.configlub web.config.
  2. Przejdź do XMLmenu i wybierz Create Schema.

Spowoduje to wygenerowanie plików ( app#.xsdaplikacja Windows) lub web#.xsd(Witryna internetowa).

  1. Zapisz nowo wygenerowane pliki xsd w katalogu głównym projektu.
    • Otwórz plik App.configlub web.config, kliknij prawym przyciskiem myszy w edytorze tekstu i wybierz właściwości, a następnie kliknij ...przycisk obok wartości Schematy.
    • Dodaj nowo wygenerowane pliki xsd za pomocą Addprzycisku.
    • Kliknij OK

Informacje schematu nie można znaleźć za atrybut / elementu błędu (ów) powinna teraz zostać rozwiązane.

WonderWorker
źródło
1

Proste: w programie Visual Studio Report Designer
1. Otwórz raport w trybie projektowania i usuń zestaw danych z pliku RDLC
2. Otwórz Eksplorator rozwiązań i usuń rzeczywisty (uszkodzony) plik XSD
3. Dodaj zestaw danych z powrotem do pliku RDLC.
4. Powyższa procedura utworzy nowy plik XSD.
5. Bardziej szczegółowe informacje znajdują się poniżej.

W programie Visual Studio otwórz raport pliku RDLC w trybie projektowania. Kliknij raport, a następnie wybierz Widok, a następnie Dane raportu z górnego menu. Wybierz opcję Zestawy danych, a następnie kliknij prawym przyciskiem myszy i usuń zestaw danych z raportu. Następnie otwórz Eksplorator rozwiązań, jeśli nie jest jeszcze otwarty w programie Visual Studio. Zlokalizuj plik XSD (powinien mieć taką samą nazwę jak zbiór danych, który właśnie usunąłeś z raportu). Teraz wróć i ponownie kliknij prawym przyciskiem myszy zestaw danych raportu i wybierz opcję Dodaj zestaw danych. Spowoduje to utworzenie nowego pliku XSD i zapisanie właściwości zestawu danych w raporcie. Teraz komunikat o błędzie zniknie, a wszelkie brakujące dane pojawią się w raportach.

Greg T.
źródło
0

Kiedy przydarzyło mi się to (znikąd), miałem zamiar zagłębić się w najważniejszą odpowiedź powyżej, a potem pomyślałem, że zamknę projekt, zamknę Visual Studio, a następnie ponownie otworzę wszystko. Problem rozwiązany. Błąd VS?

Rockin Raul
źródło
Przesada. Wystarczy zamknąć edytor plików App.config w VS. Może błąd VS.
Jirka Hanika
0

Miałem to w VS 2012, gdzie „Nazwa sekcji” została zmieniona w projekcie i naprawiłem to, usuwając „app.config” w projekcie, a następnie klikając prawym przyciskiem myszy projekt w „Eksploratorze rozwiązań”, wybierając „ Właściwości ”, następnie„ Ustawienia ”, a następnie dokonanie zmiany w jednym z ustawień, zapisanie i ponowne zbudowanie. Spowodowało to utworzenie nowego pliku app.config z poprawnymi informacjami.

Davy C.
źródło
0

W moim przypadku miałem niejednoznaczne odniesienie w moim kodzie. Zrestartowałem Visual Studio i mogłem zobaczyć komunikat o błędzie. Kiedy rozwiązałem ten problem, drugi błąd zniknął.

Sofia Khwaja
źródło
-1

Większość tego, co piszę, została już omówiona przez Pressacco, ale jest to specyficzne dla SpecFlow.

Otrzymywałem ten komunikat dla <specFlow>elementu i dlatego specflow.xsddo rozwiązania dodałem plik z tą odpowiedzią (z pewnymi modyfikacjami, aby uwzględnić <plugins>element).

Następnie (podobnie jak Pressacco) kliknąłem prawym przyciskiem myszy w buforze plików app.configi wybranych właściwościach, aw ramach Schemasdodałem "specflow.xsd"na końcu. Całość Schemasbrzmi teraz:

"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
źródło