繁体   English   中英

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

[英]Accessing App.config in a location different from the binary

在 .NET Win 控制台应用程序中,我想访问与控制台应用程序二进制文件不同的位置中的 App.config 文件。 例如,C:\\bin\\Text.exe 如何从 C:\\Test.exe.config 获取其设置?

using System.Configuration;    

Configuration config =
ConfigurationManager.OpenExeConfiguration("C:\Test.exe");

然后,您可以从配置实例访问应用程序设置、连接字符串等。 这当然假设配置文件格式正确并且您的应用程序具有对该目录的读取访问权限。 注意路径不是“C:\\Test.exe.config” 该方法查找与您指定的文件关联的配置文件。 如果您指定“C:\\Test.exe.config”,它将查找“C:\\Test.exe.config.config” 有点蹩脚,但可以理解,我猜。

参考这里: http : //msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.openexeconfiguration.aspx

看来您可以使用AppDomain.SetData方法来实现这一点。 该文件指出:

您不能使用此方法插入或修改系统条目。

无论如何,这样做似乎确实有效。 AppDomain.GetData方法的文档列出了可用的系统条目,感兴趣的是"APP_CONFIG_FILE"条目。

如果我们在使用任何应用程序设置之前设置"APP_CONFIG_FILE" ,我们可以修改app.config的加载位置。 例如:

public class Program
{
    public static void Main()
    {
        AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"C:\Temp\test.config");
        //...
    }
}

我在 此博客中找到了此解决方案,并且可以在此处找到更完整的答案(对相关问题)。

使用以下(记得包括 System.Configuration 程序集)

ConfigurationManager.OpenExeConfiguration(exePath)

您可以通过创建新的应用程序域来设置它:

AppDomainSetup domainSetup = new AppDomainSetup();
domainSetup.ConfigurationFile = fileLocation;
AppDomain add = AppDomain.CreateDomain("myNewAppDomain", securityInfo, domainSetup);
AppDomainSetup domainSetup = new AppDomainSetup();
        domainSetup.ConfigurationFile = @"D:\Mine\Company\";
        string browserName = ConfigurationManager.AppSettings["browser"];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM