130 votes

lecture à partir de l'app.fichier de configuration

Je suis en train de lire StartingMonthColumn et CategoryHeadingColumn ci-dessous l'application.fichier de configuration à l'aide du code

ConfigurationSettings.AppSettings["StartingMonthColumn"]

mais il est de retour null, aussi ConfigurationSettings.AppSettings.Count renvoie zéro

S'il vous plaît aidez-moi à lire dans mon application windows

<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="CTARepository.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <userSettings>
        <CTARepository.Properties.Settings>
            <setting name="Setting" serializeAs="String">
                <value />
            </setting>
        </CTARepository.Properties.Settings>
    </userSettings>
    <appSettings>
        <add key="StartingMonthColumn" value="7"/>
        <add key="CategoryHeadingColumn" value="1"/>
    </appSettings>
</configuration>

170voto

James Points 40024

Vous êtes à la recherche pour

int startingMonthCol = Int32.Parse(ConfigurationManager.AppSettings["StartingMonthColumn"]);

Assurez-vous d'ajouter une référence à System.De Configuration. ConfigurationSettings est obselete, vous devez utiliser ConfigurationManager ci-dessus. Voir ConfigurationSettings.AppSettings.

Sur une autre note, vérifiez que votre application.config fichier est nommé correctement. Il devrait être nommé en fonction de l'assembly en cours d'exécution. Par exemple, si votre programme est "MyApp.exe"l'application.config devrait être nommé "MyApp.exe.config", et doit résider dans le même répertoire que MyApp.exe.

18voto

Bittercoder Points 4692

ConfigurationSettings.AppSettings est obsolète, voir ici:

http://msdn.microsoft.com/en-us/library/system.configuration.configurationsettings.appsettings.aspx

Cela dit, il doit encore travailler.

Juste une suggestion, mais avez-vous vérifié que votre configuration de l'application est celle de votre exécutable?

Essayez d'attacher un débogueur et de la vérification de la valeur suivante:

AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

Et puis d'ouvrir le fichier de configuration et la vérification de la section est là que vous attend.

17voto

JamesL Points 111

Essayez:

string value = ConfigurationManager.AppSettings[key];

Pour plus de détails, consultez le: Des Clés de lecture à partir de l'App.Config

7voto

Michael Burr Points 181287

Ce:

Console.WriteLine( "StartingMonthColumn is {0}", ConfigurationManager.AppSettings["StartingMonthColumn"]);

fonctionne très bien pour moi.

Notez que ConfigurationManager est le System.Configuration d'espace de noms (de sorte que vous aurez probablement envie d'un using System.Configuration; ), et que, depuis ce que vous lisez en a un type de chaîne que vous aurez besoin d'analyser ce que vous lisez dans de l'utiliser comme un certain nombre.

Aussi, assurez-vous que vous définissez system.configuration.dll comme une référence dans votre projet ou votre script de construction.

7voto

mugume david Points 306

La raison est simple, votre appel à l' ConfigurationSettings.AppSettings ne retourne pas le nécessaire fichier de configuration. Veuillez essayer l'une des manières suivantes:

  • Assurez-vous que votre application config a le même nom que votre application exe fichier avec l'extension .config ajoutée par exemple MyApp.exe.config
  • OU vous pouvez utiliser ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location).AppSettings["StartingMonthColumn"]

Espérons que cette aide

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X