Jak zrobić rozszerzenie xsd dla web / app.config schema?

Jak zrobić schemat dla niestandardowych sekcji konfiguracyjnych? Próbowałem zrobić jeden, ale kiedy go używałem, powiedział, że jedynym oczekiwanym elementem jest to, co mam w tym schemacie, i narzekał na standardową sieć.rzeczy config, mimo że nadal używałem normalnego DotNetConfig.plik xsd też.

Author: Max Schmeling, 2009-07-14

3 answers

To pytanie, które znalazłem nie jest duplikatem, ale rozwiązanie rozwiąże twój problem:

Jak naprawić błąd:" nie można znaleźć informacji schematu dla atrybutu/elementu", tworząc schemat

Sztuką jest uzyskanie "właściwości" aplikacji.Edytor Konfiguracji i ustaw wartość Schemas:

  • kliknij prawym przyciskiem myszy -> właściwości w dowolnym miejscu w edytorze plików XML, lub po prostu naciśnij F4 , gdy jest w centrum uwagi
  • W tym oknie, dodawanie lokalnego lub bezwzględnego odniesienia do pliku schematu
Moja aplikacja.okno Właściwości pliku konfiguracyjnego/gadżet wygląda tak:

Okno dialogowe Właściwości w programie Visual Studio dla aplikacji.plik konfiguracyjny

Oto przykład, w którympo prostu zacząłem pracować(bawię się Ninject i NLog). Elementy i atrybuty w sekcji nlog wyświetlają się poprawnie w Intellisense, a ja dostaję krzywe linie, jeśli naruszam schemat.

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />
  </configSections>
  <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <targets>
      <target name="eventLog" xsi:type="EventLog" log="Application"
              category="TestService" />
      <target name="file" xsi:type="File"
              layout="${longdate}|${stacktrace}|${message}"
              fileName="${logger}.txt" />
    </targets>
    <rules>
      <logger name="*" minlevel="Info" writeTo="eventLog" />
      <logger name="*" minlevel="Debug" writeTo="file"/>
    </rules>
  </nlog>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
  </startup>
</configuration>

Mój plik schematu znajduje się w katalogu głównym projektu, tuż obok aplikacji.config i wywołane NLog.xsd. I po prostu zapisałem to stąd:

 36
Author: Merlyn Morgan-Graham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:24

Może to tylko moje środowisko lub coś się zmieniło w. NET 4.6 (nie jestem pewien).

Aby intellisense mógł współpracować z nowo utworzoną aplikacją.plik konfiguracyjny...

Krok 1: Dodaj nową aplikację element.Config do Twojego rozwiązania.
Będzie to wyglądało tak, zwróć uwagę na błędy intellisense:

AppConfig

Krok 2: naciśnij F4 w edytorze, aby wyświetlić stronę Properites dokumentu XML:

Moje defaults były wyświetlane to:

Właściwości

Krok 3: Kliknij elipse po prawej stronie Schemas właściwości powyżej...

Sprawdź DonNetConfig.xsd, zamknij okno i zacznij wpisywać

Intellisense

koniec z błędami i działa intellisense...

 0
Author: John Peters,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-11 16:47:23

Kiedy próbowałem tego, nie zadziałało. System konfiguracji zakłada, że wszystko znajduje się w domyślnej przestrzeni nazw i dławi się, jeśli tak nie jest. To bardzo rozczarowujące.

 -1
Author: John Saunders,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-14 19:15:50