在.NET Win控制台应用程序中,我想在与控制台应用程序二进制文件不同的位置访问App.config文件。 例如,C: bin Text.exe如何从C: Test.exe.config获取其设置?
1 2 3 4
| using System.Configuration;
Configuration config =
ConfigurationManager.OpenExeConfiguration("C:\Test.exe"); |
然后,您可以从配置实例访问应用程序设置,连接字符串等。当然,这假设配置文件的格式正确,并且您的应用具有对该目录的读取权限。请注意,该路径不是" C: Test.exe.config"。该方法将查找与您指定的文件关联的配置文件。如果您指定" C: Test.exe.config",它将查找" C: Test.exe.config.config"有点da脚,但是我想这是可以理解的。
此处参考:http://msdn.microsoft.com/zh-cn/library/system.configuration.configurationmanager.openexeconfiguration.aspx
看来您可以使用AppDomain.SetData方法来实现此目的。该文档指出:
You cannot insert or modify system entries with this method.
无论如何,这样做确实可行。 AppDomain.GetData方法的文档列出了可用的系统条目,感兴趣的是"APP_CONFIG_FILE"条目。
如果在使用任何应用程序设置之前设置"APP_CONFIG_FILE",我们可以修改从中加载app.config的位置。例如:
1 2 3 4 5 6 7 8
| public class Program
{
public static void Main()
{
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"C:\Temp\test.config");
//...
}
} |
我发现此解决方案已记录在此博客中,并且可以在此处找到更完整的答案(针对相关问题)。
使用以下内容(请记住包括System.Configuration程序集)
1
| ConfigurationManager.OpenExeConfiguration(exePath) |
您可以通过创建一个新的应用程序域来进行设置:
1 2 3
| AppDomainSetup domainSetup = new AppDomainSetup();
domainSetup.ConfigurationFile = fileLocation;
AppDomain add = AppDomain.CreateDomain("myNewAppDomain", securityInfo, domainSetup); |