solo app.config multi-proyecto c #

Quiero usar una sola aplicación.config por 3 proyectos diferentes.

¿Cómo acceder a las configuraciones?

ConfigurationManager.AppSettings["config1"] 

Digamos que tienes esta estructura de carpetas:

  • Solución
    • Proyecto 1
    • Proyecto2
    • Proyecto3

Hacer esto:

  1. Cree el archivo App.config en la carpeta de nivel de Solución. No encontrará una opción para agregar un archivo App.config de las plantillas, así que simplemente cree un nuevo archivo de texto vacío con el nombre App.config y pegue el contenido de un archivo App.config normal.
  2. Para cada proyecto en Solution Explorer:

    1. Haga clic derecho y seleccione Add > Existing Item
    2. Ubica el archivo
    3. Seleccione Add as link en el cuadro desplegable al lado del botón Add .

      Añadir como enlace

Editado para agregar:

Indicas correctamente que el método anterior solo compartió el archivo hasta el tiempo de construcción. Para usar un archivo compartido en tiempo de ejecución, consulte las respuestas a esta pregunta .

El archivo de configuración común

    

Para acceder al archivo de configuración asignado

 ConfigurationFileMap fileMap = new ConfigurationFileMap(file); //Path to your config file Configuration configuration = ConfigurationManager.OpenMappedMachineConfiguration(fileMap); string value = configuration.AppSettings.Settings["key1"].Value; 

Aquí está el diálogo “Agregar elemento existente” en VS 2008:

Agregar diálogo de elemento existente http://i27.tinypic.com/72bwo6.jpg

Haga clic en el pequeño indicador desplegable en el botón “Agregar” y seleccione “Agregar como enlace” en el menú contextual.

Bagazo

Encontré el botón y abrí el archivo app.config como enlace, sin embargo, eso causó que cuando build creara nuevamente un archivo de configuración separado para cada proyecto, y por lo tanto, al desplegar el proyecto 3, tendré 3 archivos de configuración. Lo que quería hacer es mantener un único archivo para todos los proyectos en una determinada solución. ¿Puedo hacer eso?

Sí, puedes hacerlo, pero ¿ deberías hacerlo?

La suposición básica en una aplicación .NET es que una aplicación = un archivo de configuración. Fuera de la caja, y con un método sencillo, no puede compartir archivos de configuración entre aplicaciones.

Si crea sus propias secciones de configuración personalizadas, puede “externalizarlas” a archivos externos, que podrían compartirse. Imagine que crea su propia sección de configuración personalizada llamada “MyConfiguration”, luego su app.config se vería así:

   
10/16/2006 1

Puede tener su sección “Mi Configuración” en su propio archivo y hacer referencia a ella desde la configuración de su aplicación:

   

y su “MyConfiguration.config” contendría:

    10/16/2006 1   

Al hacer esto, podría “externalizar” y así compartir al menos la mayor parte de sus configuraciones, siempre que estén en sus propias secciones de configuración personalizadas.

Para obtener más información y una introducción excelente a los misterios de configuración de .NET 2.0 y superiores, consulte la serie de tres partes de Jon Rista sobre la configuración de .NET 2.0 en CodeProject.

  • Desentrañando los misterios de la configuración de .NET 2.0
  • Descifrando los misterios de la configuración de .NET 2.0
  • Rompiendo los misterios de la configuración de .NET 2.0

Muy recomendado, bien escrito y extremadamente útil.

Bagazo