2013-07-29 10 views
7

Abbiamo un database di sviluppo e un database di produzione. Quello che sto cercando di evitare è dover cambiare:stringhe di collegamento Live vs Development

connectionString="Data Source=server;Initial Catalog=test; 
connectionString="Data Source=server;Initial Catalog=live; 

Abbiamo due posizioni che distribuiamo il sito. Uno per i test e uno è dal vivo.

C'è un modo semplice per impedirci di dover modificare la stringa di connessione ogni volta che vogliamo caricare per testare o vivere?

Usiamo il server di team di base, non ho idea di come configurare un server di build o di costruire definizioni in modo da cercare qualcosa di semplice se c'è qualcosa.

+0

Questi sono nel tuo web.config? http://msdn.microsoft.com/en-us/library/dd465326.aspx – cadrell0

+0

Io uso il ghepardo lento per questo e fa miracoli. Vedi qui: http: //visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5 – Icarus

+0

Innanzitutto vorrei rispondere al fatto che è necessario un server di build: http://stackoverflow.com/questions/616149/how -e-perché-fai-i-set-up-ac-sharp-build-machine una volta che fai puoi affrontare la tua domanda in molti modi. –

risposta

6

Se si sta sviluppando un'applicazione ASP.NET è possibile utilizzare web.config transforms per specificare facilmente quale sarà la differenza tra ciascun ambiente. Il processo di generazione genererà un appropriato web.config per qualsiasi ambiente tu abbia scelto come target.

Se si sta costruendo un'applicazione desktop, mi piacerebbe guardare in Slow Cheetah che consente di utilizzare la stessa web.config trasformata caratteristica su qualsiasi file XML che ti piace, tra cui un app.config. Lo abbiamo utilizzato su numerosi progetti della mia azienda per semplificare il processo di distribuzione tra i vari ambienti.

+0

Ho impostato WebDebug.config e Web.Release.config separati con le differenze nelle stringhe di connessione. Ma quando lo cambio da debug/release sembra ancora lasciare il web.config originale con la mia versione live.E quando eseguo l'applicazione con debug/release usa la versione live. Cosa mi manca? –

+0

@JamesWilson Se si utilizza il debugger di Visual Studio, credo che utilizzerà sempre il 'web.config' predefinito senza alcuna trasformazione. Applicherà la trasformazione solo dopo averlo distribuito. –

3

È possibile utilizzare web.config.release per indicare le configurazioni della modalità di rilascio. Questi sono parte di VS2010 e superiori. È possibile ottenere una buona occhiata a Scott Hanselman articlehere.

Una cosa da notare qui è che la trasformazione dal debug al rilascio avverrà ogni volta che si publish your web site before deploying.

+0

Ahh quindi l'unico modo in cui le modifiche avranno effetto è quando lo pubblico? In questo momento costruiamo e quindi copiamo quei file nelle cartelle dev/live. –

+0

Sì, devi pubblicarli. – Ehsan

1

Trova un buon tutorial per configurare una build per l'integrazione continua. Le versioni più recenti di TFS lo gestiscono davvero bene.

È molto da fare, ma ne vale la pena. Prova gli articoli MSDN per questo, vai per tutte le opzioni predefinite e non sarà poi così male.

Ottieni CI attivo e funzionante e saprai cosa fare con queste trasformazioni di web.config (che risolveranno il tuo problema immediato). Ma passando attraverso il processo di configurazione delle build troverai le distribuzioni molto più semplici.

+0

Sono d'accordo che sarà un percorso che spero presto in fondo alla strada. Leggere ciò che offre mi fa venir voglia di farlo ora, non riesco a rispettare la scadenza e questo. Quindi ho bisogno di una soluzione economica e sporca ora e poi una buona soluzione lungo la strada. ;) –

+0

Oh, conosco quella sensazione! Buona fortuna con esso. – evilbhonda