2009-01-08 18 views

Respuesta

35

En el Agregar elemento existente de diálogo que se obtienen de Explorador de soluciones de Visual Studio, se puede añadir un vínculo a otro archivo en el disco con el proyecto. Para hacer esto, deberá hacer clic en la flecha hacia abajo en el lado derecho del botón Agregar y elegir Agregar como enlace.

+0

OK, he añadido como un enlace, ahora ¿Cómo accedo los diversos valores de la configuración de la aplicación vinculada desde el segundo proyecto? – nawfal

+0

@nawfal Un archivo 'App.config' vinculado se * copia a la carpeta de salida * de la misma manera que si estuviera en el directorio del proyecto. Desde allí, puede acceder a sus contenidos a través de la clase [Configuración] (http://msdn.microsoft.com/en-us/library/system.configuration.configuration.aspx). –

+1

@EnricoCampidoglio, pero la diferencia es que en un escenario normal puede simplemente llamar al valor de configuración como ConfigurationManager.AppSettings [key] etc sin ningún tipo de hardcoding. Pero aquí tendré que codificar el nombre del archivo de configuración y luego usar la configuración de mapa abierto ¿no? El problema es la codificación difícil. No me gusta ¿Hay alguna otra solución? – nawfal

5

Antes que nada, recuerde que un App.config, o web.config, es visible para todos los códigos que se ejecutan en cualquier proyecto que se utiliza dentro del "proceso" establecido por el proyecto de puesta en marcha dentro de una solución. Es decir, si su solución tiene una aplicación de consola y 5 bibliotecas de clases, o una aplicación WinForms y 4 bibliotecas de clases, o un servicio de Windows y 3 bibliotecas de clases, o una aplicación de consola como proyecto de inicio, y otra aplicación de consola como biblioteca de clases, entonces no tiene problema, la configuración app.config y todos los archivos a los que se hace referencia son visibles desde todos los proyectos.

En segundo lugar, si tiene dos o más procesos ejecutables por separado en su solución (como un servicio de Windows como servidor Y un cliente de winforms), si desea que compartan configuraciones de configuración específicas, podría poner esos valores en el archivo machine.config, aunque se debe tener cuidado al hacer esto .. y algunos equipos de servidores empresariales ceño en ella ..

7

Another approach de Microsoft:

Utilice la fileattribute de la <appSettings> elemento para especificar un archivo externo que definirá los elementos <appSettings> comunes.

El archivo externo tendrá el mismo esquema que el de un archivo app.config con la excepción de que el nodo raíz debe ser <appSettings> en lugar de <configuration>.

Creación de un archivo de configuración común:

  1. En el menú archivo, seleccione nuevo y, a continuación, haga clic en Archivo.
  2. En el cuadro de diálogo Nuevo archivo, haga lo siguiente:

    a. En el panel Categorías, elija General.
    b. En el panel Plantillas, elija Archivo XML.
    c. Haga clic en el botón Abrir para crear un nuevo archivo de configuración común.

  3. Agregue un nuevo elemento <appSettings>.

  4. Agregar como muchos ajustes de configuración común como se determina en el nodo <appSettings> usando <add> elementos de la misma manera como lo haría con cualquier archivo app.config normal.

  5. Guarde el archivo de configuración.

Especificación del archivo de configuración común en cada proyecto

  1. Abrir el archivo app.config de cada proyecto de cliente.

  2. Navegue hasta el elemento <appSettings> dentro del nodo <configuration>. Si un elemento no existe, agregue uno nuevo.

  3. Agregue un nuevo archivo de atributos al elemento <appSettings> y especifique la ruta relativa del archivo de configuración común como su valor.
    El proyecto del cliente ahora podrá acceder a la configuración común .

Ejemplo

El siguiente ejemplo muestra cómo se definen los valores de configuración comunes en un archivo externo.

 <?xml version="1.0" encoding="utf-8" ?> 
     <appSettings> 
      <add key="commonSetting1" value="MyApplication1" /> 
      <add key="commonSetting2" value="MySetting" /> 
     </appSettings> 

El siguiente ejemplo muestra cómo especificar la ruta de acceso al archivo de configuración común en el archivo app.config de un proyecto.

 <?xml version="1.0" encoding="utf-8" ?> 
     <appSettings file=”c:\commonSettings.config”> 
      <add key="myAppSpecificSetting" value="Setting1" /> 
     </appSettings> 

Como se muestra en el ejemplo, el archivo app.config de un proyecto de cliente puede tener ajustes adicionales que se especifican en el elemento <appSettings>, además de que apunta al archivo de configuración común . Si la misma configuración se especifica varias veces, se utiliza el último valor especificado. Si se especifica la misma configuración en , tanto el archivo de configuración común como el proyecto del cliente app.config , se utiliza el valor especificado en el archivo de configuración común.

0

Según el Post de nawfal, utilizar el atributo configSource, si se quiere manipular los appsettings con el ConfigurationManager:

<?xml version="1.0" encoding="utf-8" ?> 
<appSettings configSource=”c:\commonSettings.config”> 
    <add key="myAppSpecificSetting" value="Setting1" /> 
</appSettings> 
+0

Ya hay algunas buenas respuestas y una solución funcional. –

+0

Sí, pero en mi caso ya tenía una solución como, por ejemplo. Enrico C. describió.Pero tuve problemas para cambiar la configuración de la aplicación durante el tiempo de ejecución de mi programa (es una solución que tiene un proyecto de GUI y un proyecto de servicio de Windows, y estos proyectos comparten la misma configuración de la aplicación). Solo quería agregar una respuesta para el caso de los cambios de tiempo de ejecución requeridos en la configuración. – Goldi