Pregunta

En un .Proyecto de RED de, digamos que tiene un valor de configuración - como una cadena de conexión almacenada en una aplicación.archivo de configuración, que es diferente para cada desarrollador de tu equipo (que puede ser el uso de un local de SQL Server, o una instancia de servidor específico, o el uso de un servidor remoto, etc).

¿Cómo se puede estructurar su solución de modo que cada desarrollador puede tener su propio desarrollo "preferencias" (es decir,no se verifica en el control de código fuente), sino que proporcionan una cadena de conexión predeterminada que se registró en el control de código fuente (lo que el suministro de la correcta valores predeterminados para un proceso de construcción o nuevos desarrolladores).


Editar:Puede el "file"el método sugerido por @Jonathon ser de alguna manera se utiliza con el connectionStrings sección?

¿Fue útil?

Solución

AppSettings puede ser reemplazado con un archivo local:

<appSettings file="localoveride.config"/>

Esto permite que para cada desarrollador para mantener su propia configuración local.

Tan lejos como la cadena de conexión, en un mundo perfecto todos los desarrolladores deben conectarse a una prueba DB, no se ejecuta SQL Server cada uno.

Sin embargo, he encontrado que lo mejor es mantener un archivo con el nombre de la Web.Config.Prd en el control de código fuente, y el uso que para construir implementaciones.Si alguien modifica web.configuración, se debe agregar también el cambio en el .PRD archivo...no Hay una buena automatización de ahí :(

Otros consejos

Editar:Puede el "archivo" método sugerido por @Jonathon ser de alguna manera se utiliza con el connectionStrings sección?

O usted puede tener varias cadenas de conexión en la marcada en el fichero de configuración, y el uso de un AppSettings clave para determinar que Ésta va a ser utilizado.Tengo el siguiente en mi codebase para este propósito:

public class ConnectionString
{
    public static string Default
    {
        get 
        { 
            if (string.IsNullOrEmpty(ConfigurationManager.AppSettings["DefaultConnectionStringName"]))
                throw new ApplicationException("DefaultConnectionStringName must be set in the appSettings");

            return GetByName(ConfigurationManager.AppSettings["DefaultConnectionStringName"]);
        }
    }

    public static string GetByName(string dsn)
    {
        return ConfigurationManager.ConnectionStrings[dsn].ConnectionString;
    }
}

Yo siempre hacer las plantillas para mis archivos de configuración.

Como ejemplo puedo usar NAnt para la construcción de mis proyectos.Tengo un archivo comprobado en la llamada local.propiedades.xml.de la plantilla.Mi NAnt construir advertirá al desarrollador si local.properties.xml no existe.Dentro de ese archivo será de la estación de trabajo de la configuración específica.La plantilla se registró en el control de código fuente, pero el real config no lo será.

Yo uso bastante arcaico diseño que funciona.

  • /_Prueba__de la aplicación.config
  • /_Prod__de la aplicación.config
  • /app.config

Luego, en mi nant script, tengo una tarea que copia, el actual entorno de la versión plus _ aplicación.config y la copia de la aplicación.config.

Su desagradable, pero usted no puede conseguir en entre los proveedores y el ConfigurationManager a la simulan, diciendo a los proveedores de mirar el "dev" o "prod" cadena de conexión y solo tienen 3 nombre de las cadenas de conexión.

nant tarea:

<target name="copyconfigs" depends="clean">
  <foreach item="File" property="filename" unless="${string::get-length(ConfigPrefix) == 0}">
   <in>
     <items>
       <include name="**/${ConfigPrefix}App.config" />
       <include name="**/${ConfigPrefix}connectionstrings.config" />
       <include name="**/${ConfigPrefix}web.config" />
     </items>
   </in>
   <do>
    <copy overwrite="true" file="${filename}" tofile="${string::replace(filename, ConfigPrefix,'')}" />
   </do>
  </foreach></target>

Puede el "archivo" método sugerido por @Jonathon ser de alguna manera se utiliza con el connectionStrings sección?

No, pero no hay nada que te impida guardar la cadena de conexión como un AppSettings clave.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top