2010-06-16 11 views
13

Oggi ho iniziato a giocare con le trasformate web.config in VS 2010. Per cominciare, ho tentato lo stesso esempio ciao mondo che presenta in molti post del blog su questo argomento: aggiornamento di una stringa di connessione.trasformazioni web.config non applicate su entrambi i pacchetti di installazione di pubblicazione o build

Ho creato l'esempio minimo mostrato di seguito (e simile a quello trovato in this blog). Il problema è che ogni volta che faccio clic con il pulsante destro del mouse -> "Pubblica" o facendo clic con il pulsante destro del mouse -> "Crea pacchetto di distribuzione" nel file .csproj, non ottengo l'output corretto. Piuttosto che un web.config trasformato, sto ricevendo no web.config, e invece i due file di trasformazione sono inclusi.

Cosa sto sbagliando? Qualsiasi aiuto ricevuto con gratitudine!

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> 

risposta

23

Inevitabilmente con queste cose, la risposta era in realtà guardandomi in faccia. La presenza di xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0" nel nodo <configuration> di web.config significava che le mie trasformazioni non corrispondevano. La rimozione ha risolto il problema.

+0

Esistono effetti collaterali nella rimozione dell'attributo dello spazio dei nomi xml? Ho gli stessi problemi che ho avuto e vorrei adottare la stessa strategia di correzione che avevi fatto, ma solo curioso di sapere se si romperà un sito Web .NET 2.0 legacy già obsoleto .... – SpaceBison

+1

Ho lo stesso problema, ma il mio nodo di configurazione in web.config non ha uno spazio dei nomi definito –

+1

@ SpaceBison - Secondo [questo post] (http://weblogs.asp.net/scottgu/432077), lo spazio dei nomi non è necessario. In effetti, rimuoverlo risolve intellisense. – NightOwl888

2

nei file web.release.config e web.debug.config aggiungere lo stesso spazio dei nomi per la trasformazione, ala

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

...

0

ho avuto un problema simile, e la correzione era perché avevo configurato configurazioni di soluzioni per i miei ambienti, ma non avevo mai creato configurazioni di progetto che si allineassero alle configurazioni della soluzione.

per controllare:

  1. Sotto "Build" -> "Configurazione soluzione"
  2. Modificare la "configurazione di Active soluzione", e assicurarsi che il configurazioni di progetto linea secondo i file di configurazione hai chiamato.
0

Per me ha funzionato in questo modo:

(1) menu Genera - Configuration Manager

(2) raccogliere soluzione attiva nel mio caso Pubblicare e configurarlo correttamente (avevo lì selezionato Debug, quindi, non trasformazioni da Publish sono stati applicati)

Problemi correlati