2011-12-27 10 views
5

Tengo una aplicación web en VS2010 con un web.config como esto:Web.Debug.config sustitución no procesar

... 
<configuration> 
    <connectionStrings> 
    <add name="ApplicationServices" 
     connectionString="data source=MyProdDb;Initial Catalog=MyCat;User Id=MyUser;Password=MyPass;" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
... 

y una Web.Debug.config así:

... 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <connectionStrings> 
     <add name="ApplicationServices" 
      connectionString="data source=MyDevDb;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" 
      xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> 
    </connectionStrings> 
... 

El proyecto está configurado para crear una compilación de depuración, y cuando lo ejecuto en el depurador, obtengo MyProdDb en lugar de MyDevDb

¿Qué me falta?

+0

¿Está publicando este sitio web, o está hablando estrictamente compilar y ejecutar? –

+0

Eso es porque tiene "MyProdDb" en su web.config ??!? –

+3

Desafortunadamente, el depurador no hace eso. – SLaks

Respuesta

2

Como se ha dicho, las versiones web.config solo se aplican durante la publicación (MSDeploy). La forma normal en que haría las cosas es tener su configuración de 'Debug' en el archivo web.config real y realizar cambios en cada uno de los escenarios de implementación que tenga.

+0

Gracias, lo haré y resuelve el problema. Hace que me pregunte para qué es Web.Debug.config, ya que Web.Release.config es el único que se usa en ese flujo de trabajo. No he visto configuraciones donde uno quisiera publicar configuraciones de depuración de una PC de desarrollo en un servidor externo (supongo que podría usarse para publicar en QA, pero no lo he visto de esa manera). –

+0

Realmente, la razón por la que puede desear múltiplos es en uno de los siguientes escenarios: Tiene múltiples entornos de implementación (Prueba, Aceptación, Producción), necesita implementar una versión de 'depuración' en otro entorno para diagnosticar un problema (prepsos depurar significa que tiene errores personalizados o algo así) –

+0

Esto ya no es cierto, con una actualización del equipo de Scott Hanselman. Ver mi respuesta adicional. –

3

¿Qué me falta?

Falta el hecho de que la transformación web.config solo se produce cuando se realiza una implementación. Si no publica su aplicación web, no puede esperar que se produzca ninguna transformación. Si solo ejecuta su sitio web localmente al presionar F5, no se producirá ninguna transformación. Solo cuando publica la aplicación se realiza la transformación.

+0

OK Entiendo ... aunque debo decir que parece una elección de diseño muy desafortunada. –

+0

FYI, ya no es cierto (con add-on del equipo de Scott Hanselman). Ver mi nueva respuesta. –

0

Las transformaciones de Web.config solo se procesan en tiempo de publicación. Cuando se depura (incluso en modo de lanzamiento), se está utilizando el archivo básico Web.config.

Cuestiones relacionadas