今、私は以前にSOでこの質問をさまざまな方法で見ましたが、驚くべきことにこの形式ではありません。
相互に通信する必要のある複数のWebサービス(プロジェクト)を使用したソリューションがあります。これらの各Webサービスを公開した後、データベースが異なる別のマシンに配置される可能性があります。他のすべてのWebサービスがどこにあるかを各Webサービスに伝えるために、開発中に単一の構成ファイルを維持したいと思います。
構成を公開した後、公開された各プロジェクトに存在することを期待したいと思います。また、公開後に構成ファイルを編集できるようにしたいと思います。これにより、特定のWebサービスをすばやく移行してから、他のWebサービスのすべての構成ファイルを編集できます。
私はデータベースでこれを行いたくありません。設定ファイルの場合、それ自体がデータベースへの接続設定も保持する必要があります。
私は次のアイデア/考え/質問に出くわしました:
- 他のプロジェクトから参照されている「common」というdllプロジェクトがあります。その1つにshared.configを指定し、を実行してshared.configを読み取るために使用できるクラスをそのプロジェクトに構築しましょう
System.Configuration.ConfigurationManager.OpenExeConfiguration("shared.config")
。shared.configがDLLと一緒に公開されることを確認する必要があります。
プロジェクト固有の設定だけを持つ各プロジェクト内にweb.configを保持できるので、このソリューションを好みます。そして、共有設定を持つshared.configを用意します。しかし、私はSOについて読んだのですが、これは軽視すべきではなく、ファイルアクセスの問題などの望ましくない副作用が発生する可能性があります。これが私の場合にも当てはまるのだろうかと思いますが。また、Visual StudioがDLLプロジェクトのapp.configをすぐにサポートしているとは思わないので、これを実際に実現する方法について、ここで助けを求めたいと思います。
- また、ソリューションアイテムにshared.configファイルを作成することも考えました。次に、各プロジェクト内でそのファイルをリンクします。そして、各プロジェクトのWeb.configに、次を追加
<appSettings configSource="shared.config" />
します。そのプロジェクト内のリンクされたファイルを指します。
これを行わない理由はわかりませんが、最初の実装は失敗しました。(少なくとも開発中は)c#はリンクされたshared.configファイルを見つけることができないようです。リンクされたファイルを作成した後、ファイルのリンクが即座に実行されたり維持されたりすることはないと思いますが、ファイルは公開時にのみプロジェクトにコピーされます。したがって、開発中にファイルが欠落したままになります。これは正しいです?