c#

c# - leyendo desde el archivo app.config



(8)

ConfigurationSettings.AppSettings está en desuso , ver aquí:

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

Dicho eso, todavía debería funcionar.

Solo una sugerencia, pero ¿confirmó que la configuración de su aplicación es la que está usando su ejecutable?

Intente conectar un depurador y verifique el siguiente valor:

AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

Y luego, abra el archivo de configuración y verifique que la sección esté allí como esperaba.

Estoy tratando de leer StartingMonthColumn y CategoryHeadingColumn del siguiente archivo app.config usando el código

ConfigurationSettings.AppSettings["StartingMonthColumn"]

pero está devolviendo nulo, también ConfigurationSettings.AppSettings.Count devuelve cero

Por favor, ayúdame a leer esto en mi aplicación de 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>


Esta:

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

funciona bien para mí

Tenga en cuenta que ConfigurationManager encuentra en el espacio de nombres System.Configuration (por lo que es probable que desee using System.Configuration; una instrucción using System.Configuration; ) y dado que lo que lee tiene un tipo de cadena, deberá analizar lo que ha leído para usarlo como un número.

Además, asegúrese de establecer system.configuration.dll como referencia en su proyecto o script de compilación.


Intente reconstruir su proyecto: copia el contenido de App.config en "<YourProjectName.exe> ​​.config" en la biblioteca de compilación.


La razón es simple, su llamada a ConfigurationSettings.AppSettings no devuelve el archivo de configuración requerido. Pruebe alguna de las siguientes formas:

  • Asegúrate de que la configuración de tu aplicación tenga el mismo nombre que el archivo exe de tu aplicación, con la extensión .config añadida, p. Ej. MyApp.exe.config
  • O puede usar ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location).AppSettings["StartingMonthColumn"]

Espero que esto ayude


Solo para referencia futura, solo necesita agregar System.Configuration a su biblioteca de referencias:


También agregue la clave "StartingMonthColumn" en App.config desde donde ejecuta la aplicación, por ejemplo, en App.config del proyecto de prueba.



ConfigurationSettings.AppSettings está obsoleto , debe usar ConfigurationManager.AppSettings en ConfigurationManager.AppSettings lugar (deberá agregar una referencia a System.Configuration )

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

Si todavía tiene problemas para leer en la configuración de su aplicación, verifique que su archivo app.config tenga el nombre correcto. Específicamente, debe nombrarse de acuerdo con el ensamblaje de ejecución, es decir, MyApp.exe.config , y debe residir en el mismo directorio que MyApp.exe .