我有几个C#控制台应用程序,需要具有相同的设置集。我想避免重复,并避免为每个应用程序单独app.config
。
是否有办法为应用程序(app.config
,common.config
)阅读常见的app1.exe
文件(例如app2.exe
)。
答案 0 :(得分:8)
创建一个名为app.config的文件。将它放在项目目录之外的某个位置,例如在解决方案目录中。将其作为链接项添加到项目中,并带有文件的相对路径。在每个项目中为此项目(应用程序配置)设置正确的构建操作。
现在,当每个项目构建时,文件将以正确的名称复制到项目的输出目录。
答案 1 :(得分:5)
您可以使用以下代码加载外部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();
您可能必须在其中一个应用程序中拥有主配置,并将其余部分指向此配置。通常,这种方法被认为是不好的做法。锁定文件的不同应用程序可能存在问题。
答案 2 :(得分:4)
@ Ran的答案是一个选项,但是每个应用程序在构建之后仍然会有自己的配置文件。在编译时它们将是相同的,但在部署时它们是副本。
您还可以使用以下命令从其他应用程序打开一个应用程序的配置文件:
ConfigurationManager.OpenExeConfiguration(string)
您可以使用所有应用程序引用的外部配置文件:
ConfigurationManager.OpenMappedExeConfiguration
可以选择使用Machine配置文件:
ConfigurationManager.OpenMachineConfiguration()