la lecture et l'écriture de l'app.config en C#
Je comprends qu'il ya beaucoup de références à l' app.config
dans ce forum, mais je suis de poster cette question ici car je pense que ma question est très direct.
Mon app.config
ressemble à...
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="MySection.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="MySection.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<userSettings>
<MySection.Properties.Settings>
<setting name="DEVICE_ID_VERSION" serializeAs="String">
<value>1.0.0.0</value>
</setting>
<setting name="DEVICE_ID_ID" serializeAs="String">
<value>0000 0001</value>
</setting>
</MySection.Properties.Settings>
</userSettings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="PInvoke" publicKeyToken="83380E73B2486719" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-3.0.19.0" newVersion="3.0.19.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Utilities" publicKeyToken="83380E73B2486719" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-3.0.18.0" newVersion="3.0.18.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<applicationSettings>
<MySection.Properties.Settings>
<setting name="CurrentLogFile" serializeAs="String">
<value>1</value>
</setting>
</MySection.Properties.Settings>
</applicationSettings>
</configuration>
J'ai ajouté la nouvelle CurrentLogFile
clé de la Settings.Settings
concepteur de la page comme un Application
clé. J'ai besoin de lire ce démarrage de l'application et de l'écriture quand il ya un changement dans le fichier de log du nombre au moment de l'exécution.
Le code suivant que j'ai écrit est incapable de ré-écrire le Setting
clé. Il crée une toute nouvelle entrée dans le fichier de configuration:
int curLogFile = Settings.Default.CurrentLogFile;
curLogFile = curLogFile +1;
//Update the new log file number to the config "CurrentLogFile" key
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
bool bReadOnly = config.AppSettings.Settings.IsReadOnly();
config.AppSettings.Settings.Remove("CurrentLogFile");
config.AppSettings.Settings.Add("CurrentLogFile", curLogFile.ToString());
//Save the configuration file.
config.Save(ConfigurationSaveMode.Modified);
//Force a reload of a changed section.
ConfigurationManager.RefreshSection("appSettings");
Settings.Default.Reload();
La nouvelle CurrentLogFile
est créé en haut du fichier de configuration, juste après la </configSections>
balise de fermeture, comme indiqué ci-dessous:
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="MySection.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="MySection.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
**<appSettings>
<add key="CurrentLogFile" value="2" />
</appSettings>**
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<userSettings>
<MySection.Properties.Settings>
<setting name="DEVICE_ID_VERSION" serializeAs="String">
<value>1.0.0.0</value>
</setting>
</MySection.Properties.Settings>
</userSettings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Utilities" publicKeyToken="83380E73B2486719" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-3.0.18.0" newVersion="3.0.18.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<applicationSettings>
<MySection.Properties.Settings>
**<setting name="CurrentLogFile" serializeAs="String">
<value>1</value>
</setting>**
</MySection.Properties.Settings>
</applicationSettings>
</configuration>
Cela crée les entrées en double de la CurrentLogFile
clé (les deux mis en évidence avec **
, la nouvelle un en haut).
Suis-je à l'aide de la mauvaise fonction de la clé de l'écriture?
OriginalL'auteur rishi | 2013-05-15
Vous devez vous connecter pour publier un commentaire.
Votre code permet d'accéder uniquement à la
<appSettings>
section dans<add key="CurrentLogFile" value="2" />
format.Pour lire/écrire
<userSettings>
et<applicationSettings>
vous devez utiliser les Paramètres standard.le fichier de paramètres qui vont faire les entrées dans le format suivant<setting name="CurrentLogFile" serializeAs="String"> <value>1</value> </setting>
Le nom de la variable utilisée dans le projet sera
string readonly YourNamespace.Properties.Settings.Default.CurrentLogFile
, parce que vous vous mettez à la portée de l'application. L'utilisateur lui permet de réécriture:OriginalL'auteur cdmnk
vous pouvez utiliser XML de la lecture et de l'écriture de la méthode pour ce fichier de configuration
parce que de base de l'architecture de l'application.config et XML sont même
OriginalL'auteur Raama