¿Cuál es la diferencia entre el archivo app.config y el archivo XYZ.settings?

De hecho, estoy en la fase de aprendizaje de cosas relacionadas con .NET y estaba explorando cómo guardar la aplicación. Terminé escribiendo mi propia clase que guarda la configuración en un archivo XML y luego descubrí que .NET es compatible con guardar la configuración de la aplicación.

Pero encontré 2 formas de hacerlo. Cuando abro el cuadro de diálogo agregar nuevo elemento en Visual Studio 2008, da la opción de crear un archivo de configuración (.settings) o un archivo de configuración (.config). ¿Cuál es la diferencia entre ambos y en qué escenario deberían usarse?

ACTUALIZACIÓN: en ASP.NET Core Land, la configuración ya no se gestiona a través de ninguno de estos: consulte este fantástico informe de Travis Illig con el az en Microsoft.Extension.Configuration y Microsoft.Extensions.Configuration.Binder que son efectivamente un superconjunto de todos esta


Los ajustes (tanto de un conjunto de .settings como de Configuration.AppSettings ) se almacenan en el archivo .config [junto con muchas otras cosas].

La diferencia es que las cosas .settings [que se agregaron en .NET 2.0 / VS2005] capas una clase fuertemente tipada en la parte superior de un conjunto de configuraciones que pertenecen juntas mientras que Configuration.AppSettings solo le permite recuperar cadenas, lo que le obliga a hacer conversiones y no tiene la noción de los valores predeterminados. (La clase de configuración realmente se ha desviado en un ensamblaje lateral para reflejar esto; necesita agregar una referencia a System.Configuration explícitamente si lo desea).

Agregar un .settings a su proyecto resultará en que se agregue un app.config para alojar la configuración si usted ya no tiene una. La clase que lee la configuración se genera automáticamente cada vez que cambia la lista de configuraciones para su componente / aplicación.

Otras características de .Settings es la capacidad de designar algunas configuraciones como específicas del usuario (y también para guardar las configuraciones específicas del usuario con una sola llamada).

La mejor razón de todo para usar. Configuración es que usted obtiene la capacidad de identificar claramente quién está usando qué configuración en una base de código siguiendo los usos de las propiedades (y cada conjunto es un bloque separado en el archivo XML). Configuration.appSettings es más global en su naturaleza: es solo una bolsa de propiedades y usted no sabe qué DLL, subsistema o clase depende de una entrada de configuración en particular. Vea esta publicación del blog de Steven Smith para mucho más.

Finalmente, si aún no has leído lo suficiente sobre la gestión de configuraciones, no superarás esta publicación de Rick Strahl sobre el tema en cuanto a integridad o grandes cantidades de ideas y angularjs.

ASIDE: También está el contenido de ASP.NET vNext Configuration , descrito en este artículo, que es bastante flexible y ofrece un ángulo diferente en la administración de configuraciones de configuración.

Un archivo de configuración es un archivo de recursos en el que se especifican las diferentes configuraciones y su valor predeterminado.

Los valores mismos se configuran en el archivo de configuración de la aplicación (archivo .config).

Un archivo de configuración nunca se implementa, por lo que necesitará el archivo de configuración para realizar la configuración.

El archivo app.config se almacena en el mismo directorio que la aplicación. Los usuarios normales no tendrán permisos de escritura (por ejemplo, en “Archivos de progtwig”).

El archivo de configuración debe almacenarse en el directorio “AppData” de los usuarios (donde tiene permisos r / w).

Entonces use el archivo de configuraciones para las opciones configurables por el usuario.