同じ設定のセットが必要なC#コンソールアプリケーションがいくつかあります。重複を避けapp.config
、アプリケーションごとに個別にしないようにします。
アプリケーション(、)の共通app.config
ファイル(たとえば)を読み取る方法はありますか?common.config
app1.exe
app2.exe
同じ設定のセットが必要なC#コンソールアプリケーションがいくつかあります。重複を避けapp.config
、アプリケーションごとに個別にしないようにします。
アプリケーション(、)の共通app.config
ファイル(たとえば)を読み取る方法はありますか?common.config
app1.exe
app2.exe
app.configというファイルを1つ作成します。ソリューションディレクトリなど、プロジェクトのディレクトリ以外の場所に配置します。ファイルへの相対パスを持つリンクされたアイテムとしてプロジェクトに追加します。各プロジェクトで、このアイテム(アプリケーション構成)に適切なビルドアクションを設定します。
これで、各プロジェクトがビルドされるときに、ファイルが正しい名前でプロジェクトの出力ディレクトリにコピーされます。
以下のコードを使用して、外部app.configをロードできます。
config = ConfigurationManager.OpenExeConfiguration(Path.Combine("C:\test\root", "Master.exe"));
string logpath = config.AppSettings.Settings["Log.Path"].Value;
そして、そのように設定を保存します。
config = ConfigurationManager.OpenExeConfiguration(Path.Combine("C:\test\root", "Master.exe"));
config.AppSettings.Settings["Log.Path"].Value = "C:\newpath";
config.Save();
アプリケーションの1つにマスター構成を設定し、残りをこれにポイントする必要がある場合があります。ただし、通常、この方法は悪い習慣と見なされます。さまざまなアプリケーションがファイルをロックする際に問題が発生する可能性があります。
@Ranの答えはオプションですが、ビルド後も各アプリケーションには独自の構成ファイルがあります。コンパイル時には同じになりますが、デプロイ時にはコピーになります。
次を使用して、あるアプリケーションの構成ファイルを別のアプリケーションから開くこともできます。
ConfigurationManager.OpenExeConfiguration(string)
以下を使用して、すべてのアプリケーションが参照する外部構成ファイルを作成できます。
ConfigurationManager.OpenMappedExeConfiguration
そして、以下を使用してマシン構成ファイルを使用するオプションがあります。
ConfigurationManager.OpenMachineConfiguration()