6

我有几个 C# 控制台应用程序,它们需要具有相同的设置集。我想避免重复并避免app.config每个应用程序分开。

有什么方法可以读取应用程序(, )的通用app.config文件(比如)。common.configapp1.exeapp2.exe

4

3 回答 3

8

创建一个名为 app.config 的文件。将它放在项目目录之外的某个位置,例如在解决方案目录中。将其作为具有文件相对路径的链接项添加到您的项目中。在每个项目中为此项(应用程序配置)设置正确的构建操作。

现在,当每个项目构建时,文件将被复制到项目的输出目录,并具有正确的名称。

于 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();

您可能必须在其中一个应用程序中拥有一个主配置,并将其余部分指向此。通常,这种方法被认为是不好的做法。锁定文件的不同应用程序可能存在问题。

于 2013-03-03T03:25:28.650 回答
4

@Ran 的答案是一个选项,但每个应用程序在构建后仍然会有自己的配置文件。在编译时它们是相同的,但在部署时它们是副本。

您还可以使用以下方法从另一个应用程序打开一个应用程序的配置文件: ConfigurationManager.OpenExeConfiguration(string)

您可以使用所有应用程序引用的外部配置文件: ConfigurationManager.OpenMappedExeConfiguration

并且可以选择使用机器配置文件: ConfigurationManager.OpenMachineConfiguration()

于 2013-03-03T03:25:51.693 回答