2009-06-18 8 views
1

ビルドは非常に単純で、人間の介入が少なくて済むことが分かっています。私の状況では、DEV(開発バージョン)、SIT(STG統合テスト)、UAT(ユーザー受け入れテスト)の3つの環境があります。これらの環境はすべて、データベース接続の詳細やその他の設定(ロギングなど)が異なります。Visual StudioでC#プロジェクト用の複数の構成ファイルを管理する

現在、アプリケーションをSIT環境にデプロイする必要がある場合、アプリケーションをビルドする必要があります。ターゲット環境にインストールし、手動で構成ファイルを変更します。これは、私がいくつかのエントリーを逃す可能性があるので問題があります。設定ファイルが巨大であると状況が悪化します。

質問

1 - VS.からビルドを行う環境名を指定することがとにかくありその環境の構成ファイルが使用されるようにします。

2 - 人間の介入を減らすのに役立つ他の方法は何ですか?

3 - 私のアプリケーション名は「Foo」とします。私はインストール可能なパッケージを作成するソリューションのパッケージプロジェクトを持っています。環境に応じて製品タイトルを指定することはできますか?つまり、SITが選択されていれば、インストール時の製品名は「Foo-SIT」になります。私はこれが環境バージョン1がインストールされているの混乱を避けるだろうと思う。もしあれば、より良い選択肢を聞いて嬉しいです。

答えて

1

これを処理する1つの方法は、3つのプロジェクトを作成し、その環境を新しいプロジェクトの名前に入れることです。ポストビルドイベントを使用して、プロジェクト名に基づいて正しいファイルをコピーします。

ポストビルドイベントの中で、$(ProjectName)マクロに基づいてプロジェクト名を伝えることができます。だから、それはあなたが複数のプロジェクトでの日付に設定を維持する必要がないように、これらのプロジェクトは、単一のプロジェクトに実際の作業(コンパイル)の大半を延期させるのがベストです

IF "$(ProjectName)"="devproject" (
    copy ... 
    copy ... 
) 

のようなものを行うことができます。

2

2 - あなたは正しいです。ビルドとデプロイメントプロセスを可能な限り自動化しようとするべきです。あなたの最善の策は、NAntのようなものを使ってビルド/デプロイスクリプトを自動化することです。スクリプトには、各環境のターゲットを設定することができます。

<project name="MyApp" xmlns="http://nant.sf.net/release/0.85/nant.xsd"> 
    <target name="DEV"> 
     <!-- execute any tasks needed to build the app, such as msbuild(1) --> 

     <!-- execute any tasks needed to build the tweak the config files, such as xmlpeek/xmlpoke(2) --> 

     <!-- execute any tasks needed to copy the now-built and configured project output the tweak the destination server, such as copy(3)--> 
    </target> 

    <target name="SIT">...</target> 
    <target name="UAT">...</target> 

</project> 

あなたがNAntに慣れていない場合は、スクリプトを作成して実行したり書き込んだりするのに1日もかかりません。あなたはVNCをサーバに置く必要はなく、設定ファイルをもう一度調整する必要がないので、即時かつ長持ちします。

2

あなたはEnvRide tool on codeplex.comで見ることができます。その目的は、自動化された方法で複数の設定ファイルを簡単に管理できるようにすることです。

関連する問題