2009-07-03 33 views
0

他のクラスが接続する必要のある3つのデータベースの3つのエンティティモデルを含むクラスライブラリを作成しました。このクラスライブラリは、3つの異なるWebサービスとWebサイトで使用されます。これらはすべて自分のサーバーにインストールされているため、同じ接続データを簡単に共有することはできません。接続文字列の切り替え

<connectionStrings configSource="Dependencies.ConnectionStrings.Config"/> 

これは別のXMLファイルから接続文字列をロードします:私はこのラインを持っている私のweb.configファイルで

。それは正常に動作しますが、私は今このDependencies.ConnectionStrings.Configファイルの5つの異なるコピーを持っていることを意味します。私は開発中に単一のファイルを使用することを好むでしょう。

しかし、私のソリューションには4つのセットアッププロジェクトも含まれています。これらの設定では、設定ファイルは互いに隣り合っている必要があります。

VSにweb.configを変更せずに複数のプロジェクト間で単一の設定ファイルを共有するようにVSに指示するにはどうすればよいですか?


もう少し複雑にするため、クラスライブラリはapp.configを使用して接続文字列を格納します。そして、私はapp.configに、接続文字列を別の設定ファイルにリンクするように言うことはできません... さらに、インストール後にシステム管理によって接続文字列を変更する必要があるという複雑さがあります。それは、開発データベースとは異なるデータベースを探す必要があるからです。 (実際には、開発中にエンティティロジックを分割するために3つのデータベースを使用しますが、テスト環境と本番環境では単一のデータベースを使用します)
私の現在のソリューションは簡単です。 Dependencies.ConnectionStrings.Configファイルを私のソリューションの別のフォルダに追加し、定期的に&をドラッグして他のプロジェクトにドラッグして更新します。これは動作しますが、エラーが発生しやすいです...

答えて

1

大きな問題は、現在のメイン設定ファイルの上のフォルダ階層にリンクされた設定ファイルを持つことができないためです。

root web.configまたはmachine.configの設定階層の上位に配置してみましたか?

別のオプションは、いくつかのビルド前イベントがこれらのファイルをビルドすることです。そのため、複数のコピーを作成する心配はありません。開発者ごとに異なる接続文字列を作成する必要がある場合、私はprebuildオプションをかなりうまく使用しました。

+0

ルートweb.configも適切な場所になりますが、開発時とテスト時に接続文字列が変更されることがあります。単純なXMLファイルの変更は、IIS自体の経験がないテスターに​​とっては少し簡単です。 (これがセットアップの作成に必要な理由です)。 –

1

ファイルを変更せずに求めていることを実行できるかどうかわかりません。

私は正直に言うと

など、あなたがすべてのサーバーで使用することができ、一つのファイルを持っていた場合、その後、あなたが問題をバージョン管理はありませんはるかに良いだろうに同意し、全体のセットアップはかなり複雑に聞こえるとおそらく間違った設定ファイルが間違ったサーバで終了したとするとエラーになりやすいでしょう。

接続情報を共有データベースに集中させたいと思うでしょう。各サーバーが使用する接続文字列を記録することができます(サーバー名に対して格納されます)。このようにして、各サーバーは使用する接続文字列を認識します。これはもちろん、サーバーがすべて1つの中央データベースサーバーに接続できることを前提としています(セットアップによって異なります)。

もちろん、望みの結果を得るには他の方法もありますが、あなたが望むことをするために組み込みのアプリケーション設定を曲げようとするよりも、あなた自身が「ロールを張ってください。

関連する問題