A cosa servono i file Web.Debug.config e Web.Release.Config?


111

Ho appena eseguito l'aggiornamento a Visual Studio 2010 e MVC 2.0 e ho notato che Web.config ha due file aggiuntivi allegati? Questi file vengono utilizzati per specificare impostazioni specifiche di debug e rilascio, in modo da non ingombrare il Web.config principale?

Ha anche senso inserire una stringa di connessione nel file Web.config radice se ne ho uno locale e uno remoto rispettivamente nel debug e nel rilascio Web.configs?

Grazie!

Risposte:


97

È la nuova funzionalità di trasformazione Web.config di Visual Studio 2010. Ulteriori informazioni qui .


Modificare:

Questi file vengono utilizzati per specificare impostazioni specifiche di debug e rilascio, in modo da non ingombrare il web.config principale?

Non è limitato a tre file, potresti (in teoria) avere tanti file quanti sono gli ambienti. Il Web.config "di primo livello" fornisce un modello della configurazione web. I file sottostanti forniscono valori di sostituzione specifici per quell'ambiente (come se si dispone di stringhe di connessione diverse per locale / stage / test / qualunque cosa).

Ha anche senso inserire una stringa di connessione nel file root web.config se ne ho uno locale e uno remoto rispettivamente nel debug e nel rilascio web.configs.

Avrebbe senso solo se non cambiasse tra gli ambienti. Sembra che nel tuo caso lo faccia, nel tuo caso no, non avrebbe senso lasciarlo nel Web.config.


12
Questa caratteristica è a metà cottura, anche 4 anni dopo! Funziona solo durante la distribuzione in pacchetti di Azure / publishing. Ecco un thread interessante: forums.asp.net/t/1532038.aspx
Nick

12

Questi sono i file di trasformazione Web.config. Dalla distribuzione Web ASP.NET utilizzando Visual Studio: Web.config File Transformations :

Esistono due modi per automatizzare il processo di modifica delle impostazioni del file Web.config: trasformazioni Web.config e parametri di distribuzione Web. Un file di trasformazione Web.config contiene markup XML che specifica come modificare il file Web.config quando viene distribuito. È possibile specificare modifiche diverse per configurazioni di build specifiche e per profili di pubblicazione specifici. Le configurazioni di build predefinite sono Debug e Release ed è possibile creare configurazioni di build personalizzate. Un profilo di pubblicazione corrisponde in genere a un ambiente di destinazione.


1

Nel caso qualcuno sia interessato, ecco qualcosa che ho scritto per avere una stringa di connessione dinamica per ambiente. Volevo distribuire il codice a qualsiasi ambiente (Dev, Test, Pre-Prod, Prod ...) senza doversi preoccupare di cambiare le stringhe di connessione. Non sono riuscito a trovare un buon modo per farlo con Asp.Net MVC 4, quindi ho trovato il mio modo di fare affidamento su un file delle proprietà per ambiente.

Potrebbe esserci una soluzione migliore, vengo da un background Wicket / Java e di recente ho iniziato a sviluppare con MVC 4, quindi è possibile che esista una soluzione migliore. Ma ecco un collegamento alla mia domanda e risposta per una stringa di connessione dinamica:

Stringa di connessione dinamica Asp.net MVC 4


-3

Era qualcosa di molto necessario in VS. Purtroppo sembra esserci un problema con l'implementazione. Ad esempio, considera questo scenario (VS.2010 Ultimate, tutti gli SP):

web.Config

  • Nessuna sezione connectionStrings
  • Iscrizione completa Utente / Ruolo / ecc. Configurazione del provider tramite connectionStringName = "test"

Web.Release.Config

  • Nessuna configurazione di appartenenza (già specificata nel web.config principale)
  • sezione connectionStrings che include il CS denominato "test"

Web.Debug.Config

  • Nessuna configurazione di appartenenza (già specificata nel web.config principale)
  • sezione connectionStrings che include il CS denominato "test"

Quando si esegue l'applicazione dà il seguente errore:

Il nome della connessione "test" non è stato trovato nella configurazione delle applicazioni o la stringa di connessione è vuota.

In altre parole, poiché gli elementi della stringa di connessione si trovano nei file di progettazione di rilascio / debug e utilizzati dagli elementi di configurazione nel file principale (Web.config), non è in grado di risolverlo.


5
Per essere onesti, se si dispone di una stringa di connessione denominata testsia nel file di configurazione di debug che in quello di rilascio, dovrebbe essere solo nel web.config principale con le sezioni appropriate basate su modelli. Così com'è, stai duplicando il codice, che è qualcosa che il modello dovrebbe risolvere per te.
R0MANARMY

3
-1: questo post molto vecchio era un'interpretazione errata completa di come utilizzare le trasformazioni di configurazione web. 1 Non è effettivamente una risposta (solo un reclamo errato) e 2 non è una semplice fusione di elementi come qui implicito. Devi avere xsltcomandi di sostituzione espliciti . Complimenti per aver ottenuto 5 voti positivi per qualcosa che aggiunge confusione su questi file di trasformazione :)
Gone Coding
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.