私が現在これを処理する方法は、次のような複数の構成ファイルを用意することです。
web.config
web.Prod.config
web.QA.config
web.Dev.config
プロジェクトがさまざまな環境にデプロイされたら、対応するファイルの名前を正しい設定に変更するだけです。
誰かがこれをよりよく処理する方法についての提案がありますか?
編集:各構成で変更されるもののいくつかは次のとおりです。
変換はこれに本当に役立つようです。特定のセクションを別のルールに置き換えることができます。
http://msdn.Microsoft.com/en-us/library/dd465318(v = vs.100).aspx
これまでの方法は、AppSettingsセクションをオーバーライドすることです。
<appSettings file="../AppSettingsOverride.config">
<add key="key" value="override" />
...
</appSettings>
これはappSettingsセクションでのみ機能するため、ある程度しか役に立ちません。より堅牢なソリューションに非常に興味があります。
以下を編集
これを見ただけです: http://channel9.msdn.com/shows/10-4/10-4-Episode-10-Making-Web-Deployment-Easier/
VS2010には、非常に見栄えのする構成変換があり、複数の構成を簡単に行うことができます。
Visual Studioで、xcopyビルドイベントを作成し、すべての構成ファイルを/ configフォルダーに保存します。ビルド構成の後にファイルに名前を付ける場合、つまり、web.configを/config/web.$(Configuration).configで上書きする場合、すべての構成に対して1つのイベントのみが必要です。
これに取り組む私のお気に入りの方法は、configSource
属性を使用することです。確かに、私はこれを1つの要素(<connectionStrings>
)しかし、web.configのさまざまなセグメントをスワップインおよびスワップアウトする簡単な方法を提供します(これは、インストール時にWebSetupプロジェクトを介して行います)。
また、web.DEV.config、web.TEST.config、web.PROD.configなども使用しています。
プロジェクトが複雑でない場合、この方法が最も簡単で、最も単純で、簡単な方法だと思います。必要以上に複雑にするのは好きではありません。
しかし、私はNAntを使用したことがあり、これにはうまく機能すると思います。さまざまな環境に合わせてビルドを設定できます。 NAntは、使い方を学ぶために少し読んでいますが、かなり柔軟性があります。
http://aspnet.4guysfromrolla.com/articles/120104-1.aspx
これをCruiseControl.netおよびNUnitと一緒に使用して、単体テストの検証を伴う自動デイリービルドを実行し、それらがうまく連携していると考えました。
それは本当にあなたが異なるweb.configファイルを使用する原因となっている環境間の違いが何であるかに依存します。現在、各環境で異なる環境が必要な理由について詳しく教えてください。
いくつかの回避策があります(すべてがweb.configで実行されるわけではありませんが、同じアイデアです)
ほとんどの異なるバージョン管理ソフトウェア(Subversion、gitなど)を使用して、特定のファイルを無視できます。
したがって、Subversionでは、次のようになります。
configure.template.php-このファイルはバージョン管理されており、空のDSNのconfigure.phpなどのテンプレート化された構成データが含まれています-このファイルは無視されるため、ファイルへの変更は追跡されません。
Subversionでは、これを行う方法は次のとおりです。
svn pe svn:ignore。エディターが開き、configure.phpと入力します
保存して終了し、変更をチェックインすれば、準備は完了です。