关于c#:在不同于二进制文件的位置访问App.config

关于c#:在不同于二进制文件的位置访问App.config

Accessing App.config in a location different from the binary

在.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);


推荐阅读

    linux文件异或命令?

    linux文件异或命令?,数字,系统,工作,管理,命令,数据,网络,文件,第一,单位,基

    linux文件复制的命令?

    linux文件复制的命令?,系统,文件,命令,目录,源文件,基本知识,位置,目标,选

    linux写文件命令行?

    linux写文件命令行?,工作,系统,命令,信息,名字,文件,目录,资料,标准,时间,lin

    linux复制命令文件?

    linux复制命令文件?,系统,文件,命令,目录,基本知识,源文件,目标,文件夹,路

    linux下文件均分命令?

    linux下文件均分命令?,管理,情况,系统,工作,信息,地址,命令,目录,单位,设备,L

    linux的文件替换命令?

    linux的文件替换命令?,系统,工作,实时,命令,文件,批量,字符串,内容,方法,表

    linux查文件数量命令?

    linux查文件数量命令?,系统,数据,电脑,命令,文件,信息,代码,对比,软件,第三,l

    linux命令去重文件?

    linux命令去重文件?,系统,工作,命令,信息,数据,环境,代码,文件,目录,操作,Lin

    linux写大文件命令?

    linux写大文件命令?,服务,数据,第三,较大,基础,工具,设备,文件,大小,命令,lin

    linux查询文件夹命令?

    linux查询文件夹命令?,系统,软件,电脑,命令,文件,文件夹,单位,第三,档案,数

    linux多文件打包命令?

    linux多文件打包命令?,系统,工具,时间,代码,文件,命令,文件夹,目录,指令,格

    linux命令的头文件?

    linux命令的头文件?,系统,单位,信息,代码,情况,位置,时报,项目,百度,命令,lin

    linux匹配文件名命令?

    linux匹配文件名命令?,系统,时间,发行,位置,工具,软件,名称,盘后,电脑,盘中,l

    linux上编辑文件命令?

    linux上编辑文件命令?,系统,信息,工作,状态,命令,文件,标准,检测,工具,设备,L

    改文件名linux命令?

    改文件名linux命令?,名字,软件,文件,命令,位置,系统,文件名,目录,指令,方面,l

    linux命令文件加锁?

    linux命令文件加锁?,数据,密码,系统,设备,代码,地址,名单,信息,数字,统一,请

    linux拼接文件命令?

    linux拼接文件命令?,文件,数据,命令,代码,时间,信息,系统,情况,管理,标准,Lin

    linux文件常用命令?

    linux文件常用命令?,工作,地址,信息,系统,命令,目录,标准,情况,管理,常用命

    文件写入linux命令?

    文件写入linux命令?,文件,命令,状态,系统,名称,时间,首次,数据,数字,内容,在l

    linux命令写满文件?

    linux命令写满文件?,地址,工作,命令,系统,管理,文件,目录,标准,电脑,信息,Lin