2010-04-14 21 views
8

Estoy jugando con MVC 2.0 en VS2010 y estoy teniendo un problema para obtener la función de configuración web limpia funcionando.VS2010 Limpiar Web.configs - sin actualizar

Básicamente en mi Web.debug.config tengo

<connectionStrings xdt:Transform="Replace"> 
    <add name="ApplicationServices" 
    connectionString="Server=localhost;Database=SITE_DB;User ID=dbuser;[email protected];Trusted_Connection=False;" /> 
</connectionStrings> 

and in my `Web.config` I have 

     <connectionStrings> 
     <add name="ApplicationServices" 
      connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" 
      providerName="System.Data.SqlClient" /> 
     </connectionStrings> 

Cuando ejecuto el sitio en modo de depuración, yo esperaría que xdt: Transformar = "Reemplazar" sustituiría la sección connectionStrings entero con lo que hay en la Web .debug.config.

¿Estoy asumiendo que no? O estoy haciendo algo más incorrecto. No hay mucha información publicada y creo que les preguntaría a ustedes.

Respuesta

0

Creo que se necesita para poner xdt: Localizador = "partido (nombre)" en

<connectionStrings xdt:Transform="Replace" xdt:Locator="Match(name)"> 
    <add name="ApplicationServices" 
     connectionString="Server=localhost;Database=SITE_DB; 
     User ID=dbuser;[email protected];Trusted_Connection=False;" 
    /> 
</connectionStrings> 
+0

lo que sucede si se quiere reemplazar Everthing en el elemento connectionStrings? en este momento, el partido (nombre) no funcionaría, ¿verdad? porque está tratando de buscar un _attribute_ en connectionStrings _element_ llamado 'name' ... que no existe. que attrib existe en el _child_ elements .. ??? (Solo pensando en voz alta, aquí ...) –

+0

Pure.Krome es correcto. Debe eliminar la transformación de Localizador o mover ambas transformaciones al XNodo de adición en lugar del XNode de ConnectionStrings. –

11

.config es sólo transforma producirse cuando se publica o desplegar la aplicación de alguna manera. Si solo está depurando, las transformaciones no ocurren.

Esto suena loco, pero es directamente de la boca de un representante MS: http://forums.asp.net/p/1532038/3711423.aspx

+1

Este comportamiento loco me costó bastante tiempo hoy :(¡Gracias por señalar la explicación! – Daan

+1

¿Qué sentido tiene tener un Web.Debug.config si nunca se usa entonces? ¿Está allí solo para confundir a la gente? –

1

Puede habilitar este comportamiento, pero se necesita hacer un archivo "plantilla" para almacenar su estado previo a transformar en un archivo que no se llama Web.config; de lo contrario, sobrescribiría su plantilla con sus cambios transformados. También necesita agregar una tarea de transformación a su archivo de proyecto para que se ejecute cuando depure.

<PropertyGroup> 
    <BuildDependsOn> 
     CustomWebConfigTransform; 
     $(BuildDependsOn); 
    </BuildDependsOn> 
</PropertyGroup> 
<Target Name="CustomWebConfigTransform"> 
    <TransformXml source="Web.template.config" 
     transform="Web.$(Configuration).config" 
     destination="Web.config" /> 
</Target> 

El ejemplo anterior asume que tiene un archivo de plantilla web.config llamado Web.template.config y se aplicará a su transformación y crear un archivo Web.config cuando se ejecuta el proyecto.

Referencia: http://www.kongsli.net/nblog/2012/01/13/enabling-web-transforms-when-debugging-asp-net-apps/

Cuestiones relacionadas