AppSettings

hagbard_celine

Mitglied
Wie kann ich auf einen String der in den Settings einer Application steht zugreifen?
Ich wäre für ein Beispiel dankbar, wenns geht in C#.

THX
 

Norbert Eder

Erfahrenes Mitglied
Gegeben:
C#:
<configuration>
  <appSettings>
    <add key="user" value="testuser"/>
  </appSettings>
</configuration>

Dann kannst du das wie folgt auslesen:
C#:
string username = ConfigurationSettings.AppSettings.Get("user");
Dazu ist im übrigen der Namespace System.Configuration einzubinden.

Diese Frage wurde hier im übrigen schon sehr oft beantwortet. Eine Suche hätt also auch zum Ergebnis geführt.
 

hagbard_celine

Mitglied
Ich habe keine funktionierende Antwort gefunden!

Bei mir sieht die AppConf so aus:
Code:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="BMC.Applications.FaxMailScheduler.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <userSettings>
        <BMC.Applications.FaxMailScheduler.Properties.Settings>
            <setting name="User" serializeAs="String">
                <value>Test</value>
            </setting>
        </BMC.Applications.FaxMailScheduler.Properties.Settings>
    </userSettings>
</configuration>

Und beim Kompelieren mit ConfigurationSettings bekomme ich den Hinweis ich soll lieber ConfigurationManager nutzen.

Ich glaube ConfigurationSettings nutzte man bei .NET 1.1, aber wie mache ich es bei 2.0?
 

Norbert Eder

Erfahrenes Mitglied
Wie du es unter .NET 2 machst (bei solchen Fragen bitte dann immer die entsprechende .NET Version angeben) gibt der Debugger doch ganz nett darüber Bescheid:
Warning 1 'System.Configuration.ConfigurationSettings.AppSettings' is obsolete: 'This method is obsolete, it has been replaced by System.Configuration!System.Configuration.ConfigurationManager.AppSettings'

Gut, zu deiner Lösung: Zwar nicht der schönste Ansatz, aber funktioniert:
C#:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ClientSettingsSection css = (ClientSettingsSection)config.SectionGroups["userSettings"].Sections[0];
SettingElement se = css.Settings.Get("User");
Console.WriteLine("Name : " + se.Name);
Console.WriteLine("Value: " + ((SettingValueElement)se.Value).ValueXml.InnerText);
 

hagbard_celine

Mitglied
Super das !

Wie kann ich in die Config schreiben (am besten mit Section anlegen) und sie dann speichern?

Gibt es denn auch einen "schönen Ansatz"? ;)
 

hagbard_celine

Mitglied
Das Schreiben habe ich selbst rausgefunden:
Code:
((SettingValueElement)se.Value).ValueXml.InnerText = "ABC";
config.Save(ConfigurationSaveMode.Full, true);

Aber es muss doch auch noch einen Eleganteren Weg geben oder?