6

同じ設定のセットが必要なC#コンソールアプリケーションがいくつかあります。重複を避けapp.config、アプリケーションごとに個別にしないようにします。

アプリケーション(、)の共通app.configファイル(たとえば)を読み取る方法はありますか?common.configapp1.exeapp2.exe

4

3 に答える 3

8

app.configというファイルを1つ作成します。ソリューションディレクトリなど、プロジェクトのディレクトリ以外の場所に配置します。ファイルへの相対パスを持つリンクされたアイテムとしてプロジェクトに追加します。各プロジェクトで、このアイテム(アプリケーション構成)に適切なビルドアクションを設定します。

これで、各プロジェクトがビルドされるときに、ファイルが正しい名前でプロジェクトの出力ディレクトリにコピーされます。

于 2013-03-03T03:10:31.917 に答える
6

以下のコードを使用して、外部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つにマスター構成を設定し、残りをこれにポイントする必要がある場合があります。ただし、通常、この方法は悪い習慣と見なされます。さまざまなアプリケーションがファイルをロックする際に問題が発生する可能性があります。

于 2013-03-03T03:25:28.650 に答える
4

@Ranの答えはオプションですが、ビルド後も各アプリケーションには独自の構成ファイルがあります。コンパイル時には同じになりますが、デプロイ時にはコピーになります。

次を使用して、あるアプリケーションの構成ファイルを別のアプリケーションから開くこともできます。 ConfigurationManager.OpenExeConfiguration(string)

以下を使用して、すべてのアプリケーションが参照する外部構成ファイルを作成できます。 ConfigurationManager.OpenMappedExeConfiguration

そして、以下を使用してマシン構成ファイルを使用するオプションがあります。 ConfigurationManager.OpenMachineConfiguration()

于 2013-03-03T03:25:51.693 に答える