Web.Config Debug / Release

So che web.config in Visual Studio 2010 offre la possibilità di passare dai database dalla modalità Debug alla modalità Release.

Ecco il mio Web.Release.config:

           

Ecco il mio codice Web.Debug.config:

            

E questo è il mio codice Web.config:

                                 

Quando pubblico il mio progetto non c’è nulla che mostri nel mio file.config di Web. Non mostra la mia stringa di connessione al database live?

Le trasformazioni di web.config che fanno parte di Visual Studio 2010 utilizzano XSLT per “trasformare” il file web.config corrente nella sua versione .Debug o .Release.

Nei file .Debug / .Release, è necessario aggiungere il seguente parametro nei campi della stringa di connessione:

 xdt:Transform="SetAttributes" xdt:Locator="Match(name)" 

Ciò farà sì che ogni linea di stringa di connessione trovi il nome corrispondente e aggiorni gli attributi di conseguenza.

Nota: non dovrai preoccuparti di aggiornare il parametro providerName nei file di trasformazione, poiché non cambiano.

Ecco un esempio da una delle mie app. Ecco la sezione del file web.config:

    

Ed ecco la sezione web.config.release che esegue la trasformazione corretta:

    

Una nota aggiunta: le trasformazioni si verificano solo quando si pubblica il sito, non quando lo si esegue semplicemente con F5 o CTRL + F5. Se è necessario eseguire un aggiornamento su una determinata configurazione localmente, sarà necessario modificare manualmente il file Web.config per questo.

Per ulteriori dettagli è ansible consultare la documentazione MSDN

https://msdn.microsoft.com/en-us/library/dd465326(VS.100).aspx

È ansible utilizzare il ConfigTransform build ConfigTransform disponibile come pacchetto Nuget – https://www.nuget.org/packages/CodeAssassin.ConfigTransform/

Tutti i file di trasformazione “web. * .Config” verranno trasformati e generati come una serie di file “web. *. Config.transformsd” nella directory di output di build, indipendentemente dalla configurazione di build scelta.

Lo stesso vale per “app. *. Config” trasforma i file in progetti non web.

e quindi aggiungendo il seguente target al tuo *.csproj .

    

Pubblicare una risposta in quanto questo è il primo post StackOverflow che appare in Google sull’argomento.

Per fare in modo che la trasformazione lavori nello sviluppo (usando F5 o CTRL + F5) rilasciare ctt.exe ( https://ctt.codeplex.com/ ) nella cartella dei pacchetti (pacchetti \ ConfigTransform \ ctt.exe).

Quindi registro un evento pre o post-build in Visual Studio …

 $(SolutionDir)packages\ConfigTransform\ctt.exe source:"$(ProjectDir)connectionStrings.config" transform:"$(ProjectDir)connectionStrings.$(ConfigurationName).config" destination:"$(ProjectDir)connectionStrings.config" $(SolutionDir)packages\ConfigTransform\ctt.exe source:"$(ProjectDir)web.config" transform:"$(ProjectDir)web.$(ConfigurationName).config" destination:"$(ProjectDir)web.config" 

Per le trasformazioni utilizzo l’estensione VS SlowCheeta ( https://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5 ).

Se stai per sostituire tutte le stringhe di connessione con quelle di notizie per l’ambiente di produzione, puoi semplicemente sostituire tutte le stringhe di connessione con quelle di produzione usando questa syntax:

       .... 

Le informazioni per questa risposta sono tratte da questa risposta e da questo post sul blog .

avviso : come già spiegato da altri, questa impostazione si applica solo quando l’applicazione pubblica non durante l’esecuzione / debugging (premendo F5).