2011-07-08 11 views
6

私は3つの環境を持っています:Dev、QA、Prod on .NET 4.それぞれに固有のweb.configファイルがあります。私たちは3つのバージョンすべてを管理することに問題がありました。 TFS内のweb.configファイルを手動でマージする際に重大な問題を見落とすのは簡単です。 ProdのQAを指す接続文字列が2回以上ありました。web.configファイルを管理する

したがって、I read up on web.config transformations.これらにはMSBUILDが必要です。私たちはビルドサーバーを持っていないので、私はこのソリューションをどのように使用しようとしているのか分かりません。通常のWeb公開で変換を実行する方法はありますか?

3つのweb.configファイルを管理するための代替候補がありますか?

答えて

1

は公開通常のWebでの変換に 仕事をする方法はありますか?

もちろん、this MSDN linkをご覧ください。 MSBUILDは必要ありません。さまざまな環境の接続文字列を別々の設定ファイルに設定できます。たとえば、Web.config、Web.QA.config、およびWeb.Prod.configを使用できます.QAとProdは別々のVisual Studio Build configurationsです。

また、Web.config(ローカル開発)、Web.Debug.config(QA用)、Web.Release.config(本番用)のように、デフォルトで追加されたビルド構成を使用することもできます。

例としてこの設定を使用すると、Web.configはすべての構成を持ち、Web.Debug.configはその環境(接続文字列、アプリケーション設定など)に対して変更される構成のみを持ち、Web.Release.configその環境に対して変更された設定だけを持っています。

設定と変換がセットアップされたら、ビルド設定を変更し、Visual Studioからビルドして公開します。

+0

他の人が編集できるように、TFSからweb.debug.confファイルを単にアンバインドしますか?例: "ファイル - ソース管理 - ソース管理からweb.debug.configを除外します。" ? –

+0

@マークB、アンバインドする必要はありません。これは他のソースファイルと同じです。誰でもあなたのTFSポリシー設定に従ってそれを編集できるはずです。 –

+0

公開を使用せずにこれを行うことはできますか? – AlexFoxGill

1

3つのweb.configファイルを管理するための代替提案がありますか?

はい、管理しないでください。私たちが管理することが少ないほど、間違いの可能性は低くなります。すべての環境に同じweb.configファイルを用意してください。あらゆる場所に配備された同じディストリビューションパッケージ。

ベースURL、接続文字列などのすべての環境固有のキーは、machine.configで定義することができます。このキーは、各サーバーに1回のみ配布し、すべてのアプリケーションから再利用します。または、すべてのアプリケーションが派生するIISサイトのルートにあるweb.config

+6

といくつかのページがあります、あなたに適切にweb.configファイルに

msiexec.exe /Qb! /i "MyWebsiteMsi.MSI" SQL_SERVER_ConnStr="ABC" 

を値を設定します事前に定義されたバッチスクリプトを作成するオプションを与えるだろうアプリケーション設定はmachine.configに入れられます。多くの場合、Webサーバーは複数のアプリケーションをホストし、machine.configのすべての設定を詰め込むことは災害のためのレシピです。 –

0

代わりに、外部ファイル&に変更された設定を、configSource属性を使用してファイルをリンクして移動するように作成することもできます。異なるセクションについては、それを外部ファイルに入れます。

dev.config、qa.config、live.config &のように別名のファイルを作成するか、web.configの名前を変更するか、environment.configというファイルが1つあります。&あなたは決してマージしません環境。

欠点は、設定セクション全体をファイルに移動する必要があることです。

サイモン

1

websetupプロジェクトを使用してmsiを作成する場合は、websetupにカスタムインストーラクラスを追加できます。これは、ここで私は見たくない古い例 enter link description here

関連する問題