Hay una discusión decente en los cambios de configuración web.config aquí:
Using different Web.config in development and production environment
Nota: usted está haciendo una pregunta diferente, pero sugiero echarle un vistazo a eso porque es una impresionante colección de sugerencias sobre cómo cambiar entre la configuración en vivo y la depuración y todas las respuestas (IMO) solo la respuesta más votado/aceptado.
Personalmente, utilizo un método que se explica aquí y creo que es el más flexible y es aplicable a todos los tipos de cambios de configuración, ya que se basa archivo, pero permite que sean auto-intercambiado basado en configuraciones de soluciones:
http://www.hanselman.com/blog/ManagingMultipleConfigurationFileEnvironmentsWithPreBuildEvents.aspx
en esencia, se ejecuta un evento previo a la acumulación de extraerse del web.config con otro en disco con el nombre de configuración de la solución del nombre de archivo. Por ejemplo, tengo web.config.release, web.config.debug e incluso un web.config.neilathome.
Luego utilizo los mismos métodos exactos para los bits de código condicional creando clases parciales y colocando las cosas que cambian entre las configuraciones de mi solución en sus propios archivos. Por ejemplo, tengo sync_timersettings.cs que es una clase parcial que contiene algunas constantes que definen la frecuencia con que mi código de actualización llama a un servicio web. O simplemente podría poner todas sus configuraciones en un archivo app.settings y hacerlo de esa manera.
La considero una solución muy flexible, me permite intercambiar fragmentos de javascript y css y siempre que se tome el tiempo de poner cosas que cambian entre configuraciones en sus propios archivos, probablemente pueda ir a un estado donde puede estar depurando en la configuración de la solución de depuración y luego cambiar a versión e implementar con un solo clic.
Una nota más:
#if DEBUG
pnlDebugIncludes.visible = true
#else
pnlReleaseIncludes.visible = true
#endif
Respuestas a los comentarios:
esto sólo es útil si tiene una configuración de la solución de depuración y otro uno que es su despliegue en vivo. No funcionará cuando usted (como yo) tenga una configuración provisional, de lanzamiento y de solución neilonhislaptop, ya que el símbolo DEBUG solo se establece cuando se habilita la depuración. La solución alternativa es ir a la página de propiedades de su aplicación web y en la pestaña de compilación, coloque un símbolo condicional para cada una de las configuraciones de compilación. IE, configura tu configuración de compilación para liberar y coloca 'liberación' en el cuadro de símbolo condicional en esa pestaña. Luego haga lo mismo para diferentes configuraciones de compilación, el cuadro de símbolo condicional allí cambiará automáticamente dependiendo de su configuración de compilación. # si las directivas de compilación condicional funcionarán como se esperaba entonces.
Bayard solicitó más información sobre cómo usar esto para cambiar el margen de beneficio entre las configuraciones. Bueno, usted podría solía cambiar toda la página .aspx - tiene home.aspx.release y home.aspx.debug pero significaría que tenía que repetir una gran cantidad de margen en cada archivo. Mi solución es agregar una clase parcial a mi aplicación. Por ejemplo, mi página 'ViewImage' tiene la siguiente definición de clase en ella:
public partial class ViewImage : System.Web.UI.Page
.so he creado algunos archivos de clase con la misma firma y los llamó 'ViewImage_titleset.cs.debug' y 'ViewImage_titleset.cs .staging ':
namespace Website
{
public partial class ViewImage : System.Web.UI.Page
{
public void SetTitle()
{
Page.Title = "Running in debug mode";
}
}
}
y
namespace Website
{
public partial class ViewImage : System.Web.UI.Page
{
public void SetTitle()
{
Page.Title = "Running in staging mode";
}
}
}
..calling SetTitle en el evento de carga de página para ViewImage cambiaría el título en función de la configuración de la construcción estaba en su lugar. Esto solo funcionará si está alterando la página mediante programación.
Es mejor utilizar el método de compilación condicional anterior para cambiar el código como este y reservar el método de intercambio de archivos para cambiar los archivos sin código como imágenes o web.configs. Solo asegúrese de no configurar los archivos alternativos para implementar en la publicación.
.Net puerto de compresión YUI - Gracias, he estado buscando algo así para concatenar mis propios archivos js. –
OMG - Conozco a ese tipo que hizo ese puerto .NET de YUI. Pequeño mundo, etc. –