2012-03-28 8 views
2

Ich verwende Visual Studio 2005 und habe eine Anwendung mit der Datei "App.config" erstellt. wenn ich versuche, zu bearbeiten und zu neuen Wert zu diesem App.config Datei hinzufügen zeigt es ein Fehler mir bitte helfen ..Konfigurieren der App.config-Datei in C#

Meine app.config-Datei enthält:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
    <add key="keyvalue" value="value"/> 
    <add key="keyvalue1" value="value1"/> 
</appSettings> 
<mySettings> 
    <add name="myname" myvalue="value1"/> 
</mySettings> 
</configuration> 

Es zeigt einen Fehler wie:

Could not find schema information for the element "mySettings" 
Could not find schema information for the element "add" 
Could not find schema information for the element "myvalue" 
+1

Beachten Sie, dass diese "Fehler" nur informative Nachrichten sind. Visual Studio lässt Sie nur wissen, dass es nicht funktionieren kann, wenn diese Werte Elemente, Attribute, welchen Typ sie speichern sollen. Es ist sicher, diese zu ignorieren, aber die gegebenen Antworten geben Hinweise, wie das Lesen dieser benutzerdefinierten Werte implementiert werden kann. –

Antwort

6

Erstellen Sie keine Gruppe "MySettings". Setzen Sie alles, was Sie brauchen, in die AppSettings-Gruppe.

Sie könnten eine MySettings Gruppe erstellen, aber wenn Sie benutzerdefinierte (Nicht-Standard) Konfigurationsabschnitte tun sind, müssen Sie sie in einem configSections Element erklären, wie here oder here beschrieben.

Ich würde in Frage stellen, wenn es wirklich notwendig ist, und gehen Sie mit meiner ersten Antwort, es sei denn es gibt einen wirklich guten Grund für das Hinzufügen von benutzerdefinierten Abschnitten, weil es besser ist, den normalen Standards zu folgen. Es macht es einfach für zukünftige Wartungsprogrammierer.

+0

Dank @DavidStratton .. – Ramesh

3

Sie einen neuen Abschnitt zu definieren, die nicht Teil der normalen Konfigurationsdatei ist:

<mySettings> 
    <add name="myname" myvalue="value1"/> 
</mySettings> 

Ihren eigenen Bereich zu integrieren, müssen Sie etwas schreiben Ihren spezifischen Abschnitt zu lesen. Anschließend fügen Sie einen Verweis auf die Handler, den Sie wie folgt mit dem Abschnitt beschäftigen möchten:

<configuration> 
    <configSections> 
     <section name="mySettings" type="MyAssembly.MySettingsConfigurationHander, MyAssembly"/> 
    </configSections> 
    <!-- Same as before --> 
</configuration> 

Ein Beispiel Codebeispiel wäre:

public class MySettingsSection 
{ 
    public IEnumerable<MySetting> MySettings { get;set; } 
} 

public class MySetting 
{ 
    public string Name { get;set; } 
    public string MyValue { get;set; } 
} 

public class MySettingsConfigurationHander : IConfigurationSectionHandler 
{ 
    public object Create(XmlNode startNode) 
    { 
      var mySettingsSection = new MySettingsSection(); 

      mySettingsSection.MySettings = (from node in startNode.Descendents() 
             select new MySetting 
             { 
              Name = node.Attribute("name"), 
              MyValue = node.Attribute("myValue") 
             }).ToList(); 

     return mySettingsSection; 
    } 
} 

public class Program 
{ 
    public static void Main() 
    { 
     var section = ConfigurationManager.GetSection("mySettings") as MySettingsSection; 

     Console.WriteLine("Here are the settings for 'MySettings' :"); 

     foreach(var setting in section.MySettings) 
     { 
      Console.WriteLine("Name: {0}, MyValue: {1}", setting.Name, setting.MyValue); 
     } 
    } 
} 

Es gibt auch andere Möglichkeiten, um die Konfigurationsdatei zu lesen, aber Das war der Einfachste, um freihändig zu schreiben.

+0

+1 für die Mühe und zeigt den Code. – David

+0

Danke @Dominic Zukiewicz .. Es ist nützlich für mich .. – Ramesh

Verwandte Themen