2013-07-29 12 views
7

Wir haben eine Entwicklungsdatenbank und eine Produktionsdatenbank. Was ich zu verhindern versuche, muss geändert werden:Live vs Entwicklung Verbindungszeichenfolgen

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

Wir haben zwei Orte, die wir die Website bereitstellen. Einer zum Testen und einer ist live.

Gibt es einen einfachen Weg, um uns zu verhindern, dass die Verbindungszeichenfolge jedes Mal, wenn wir zu testen oder leben hochladen möchten, ändern?

Wir verwenden Team Foundation Server, ich habe keine Ahnung, wie man einen Build-Server einzurichten oder Definitionen bauen so etwas suchen einfach, wenn es etwas gibt.

+0

Sind diese in Ihrer web.config? http://msdn.microsoft.com/en-us/library/dd465326.aspx – cadrell0

+0

Ich benutze langsam Gepard für diese und funktioniert Wunder. Siehe hier: http: //visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5 – Icarus

+0

Ich möchte zunächst die Tatsache, sprechen Sie einen Build-Server benötigen: http://stackoverflow.com/questions/616149/how Wenn Sie das tun, können Sie Ihre Frage auf viele verschiedene Arten beantworten. –

Antwort

6

Wenn Sie eine ASP.NET-Anwendung entwickeln können Sie web.config transforms verwenden, um einfach festlegen, welche zwischen jeder Umgebung anders sein wird. Der Build-Prozess generiert eine geeignete web.config für jede Umgebung, auf die Sie ausgerichtet sind.

Wenn Sie eine Desktop-Anwendung Gebäude sind, ich in Slow Cheetah aussehen würde, die Sie die gleiche web.config Transformation-Funktion auf jede XML-Datei zu verwenden, ermöglicht es Ihnen, wie zum Beispeil ein app.config. Wir haben dies bei einer Reihe von Projekten in meinem Unternehmen genutzt, um den Bereitstellungsprozess zwischen unseren verschiedenen Umgebungen zu optimieren.

+0

Ich habe die separate Web.Debug.config und Web.Release.config mit den Unterschieden in den Verbindungszeichenfolgen eingerichtet. Aber wenn ich es von Debug/Release ändere, scheint es immer noch die ursprüngliche web.config mit meiner Live-Version zu verlassen.Und wenn ich die Anwendung mit debug/release ausführe, verwendet es die Live-Version. Was vermisse ich? –

+0

@JamesWilson Wenn Sie den Visual Studio-Debugger verwenden, glaube ich, dass er immer den Standard 'web.config' ohne jegliche Umwandlung verwendet. Es wird die Transformation nur anwenden, sobald Sie es bereitstellen. –

3

können Sie web.config.release verwenden Ihre Release-Modus-Konfigurationen zu erwähnen. Diese sind Teil von VS2010 und höher. Sie können einen sehr guten Blick auf Scott Hanselman articlehere bekommen.

Eine Sache, hier zu beachten ist, dass Transformation von Debug nehmen zu lösen statt, wenn Sie publish your web site before deploying.

+0

Ahh, also die einzige Möglichkeit, die Änderungen zu beeinflussen, ist, wenn ich es öffentlich mache? Im Moment erstellen wir und kopieren dann diese Dateien in die Dev/Live-Ordner. –

+0

Ja, Sie müssen sie veröffentlichen. – Ehsan

1

ein gutes Tutorial für den Aufbau eines Continuous Integration Aufbau. Die neueren Versionen von TFS machen das sehr gut.

Es ist eine Menge in den Griff zu bekommen, aber so die Mühe wert. Versuchen Sie die MSDN-Artikel dafür, gehen Sie für alle Standardoptionen, und es wird nicht so schlimm sein.

Lassen Sie CI hochfahren und Sie wissen, was Sie mit diesen web.config-Transformationen tun können (was Ihr unmittelbares Problem löst). Aber durch das Einrichten von Builds werden Sie die Bereitstellung viel einfacher finden.

+0

Ich stimme zu, dass ein Weg sein wird, den ich hoffentlich bald auf den Weg nehme. Wenn ich überlege, was es bietet, möchte ich es jetzt tun, ich kann die Frist und das hier nicht einhalten. Also brauche ich ab und an eine billige und dreckige Lösung. ;) –

+0

Oh, ich kenne dieses Gefühl! Viel Glück damit. – evilbhonda