2010-06-16 22 views
13

Hoy comencé a jugar con las transformaciones web.config en VS 2010. Para empezar, intenté el mismo ejemplo de hello world que aparece en muchas de las publicaciones de blog en este tema - actualizando una cadena de conexión.web.config transforma no se aplica ni en publicar ni en crear paquete de instalación

Creé el ejemplo mínimo que se muestra a continuación (y similar al que se encuentra en this blog). El problema es que cada vez que hago clic derecho -> "Publicar", o hago clic con el botón derecho en -> "Build Deployment Package" en el archivo .csproj, no obtengo el resultado correcto. En lugar de un web.config transformado, obtengo no web.config, y en su lugar se incluyen los dos archivos de transformación.

¿Qué estoy haciendo mal? ¡Cualquier ayuda recibida con gratitud!

Web.config:

<?xml version="1.0"?> 
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 
    <connectionStrings> 
    <add name="ConnectionString" 
    connectionString="server=(local); initial catalog=myDB; 
    user=xxxx;password=xxxx" providerName="System.Data.SqlClient"/> 
    </connectionStrings> 
</configuration> 

Web.debug.config:

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <connectionStrings> 
    <add name="ConnectionString" 
     connectionString="server=DebugServer; initial catalog=myDB; 
     user=xxxx;password=xxxx" 
     providerName="System.Data.SqlClient" 
     xdt:Transform="SetAttributes" 
     xdt:Locator="Match(name)"/> 
    </connectionStrings> 
</configuration> 

Web.release.config:

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <connectionStrings> 
    <add name="ConnectionString" 
     connectionString="server=ReleaseServer; initial catalog=myDB; 
     user=xxxx;password=xxxx" 
     providerName="System.Data.SqlClient" 
     xdt:Transform="SetAttributes" 
     xdt:Locator="Match(name)"/> 
    </connectionStrings> 
</configuration> 

Respuesta

23

Inevitablemente con estas cosas, la respuesta fue en realidad mirándome a la cara. La presencia de xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0" en el nodo <configuration> de web.config significaba que mis transformaciones no coincidían. Eliminarlo resolvió el problema.

+0

¿Hay algún efecto secundario al eliminar el atributo de espacio de nombres xml? Obtuve los mismos problemas que tú y me gustaría adoptar la misma estrategia de reparación que tú, pero solo tengo curiosidad por saber si romperá un sitio web heredado de .NET 2.0. – SpaceBison

+1

Tengo el mismo problema. problema, pero mi nodo de configuración en web.config no tiene un espacio de nombres definido –

+1

@SpaceBison - Según [esta publicación] (http://weblogs.asp.net/scottgu/432077), el espacio de nombres es innecesario. De hecho, eliminarlo repara intellisense. – NightOwl888

2

En sus archivos web.release.config y web.debug.config añadir el mismo espacio de nombres para su transformación, ala

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 

...

0

tuve un problema similar, y el arreglo fue porque tenía Configuraciones de solución configuradas para mis entornos, pero nunca había creado configuraciones de proyectos que se alinearan con las configuraciones de la solución.

a comprobar:

  1. En "Build" -> "Configuración de soluciones"
  2. Cambiar su "Configuración de soluciones activas ", y asegúrese de que sus configuraciones de proyecto línea de acuerdo a los archivos de configuración has nombrado
0

Para mí trabajaron esto:

(1) menú Generar - Administrador de configuración

(2) recoger solución activa en mi caso Publicar y configurar correctamente (no me había seleccionado depuración por lo tanto, no hay transformaciones de Publish se aplicaron)

Cuestiones relacionadas