Доступ к App.config в месте, отличном от двоичного - PullRequest
5 голосов
/ 16 сентября 2008

В консольном приложении .NET Win я хотел бы получить доступ к файлу App.config в месте, отличном от двоичного файла консольного приложения. Например, как C: \ bin \ Text.exe получить свои настройки из C: \ Test.exe.config?

Ответы [ 4 ]

12 голосов
/ 16 сентября 2008
using System.Configuration;    

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

Затем вы можете получить доступ к настройкам приложения, строкам подключения и т. Д. Из экземпляра config. Это предполагает, конечно, что файл конфигурации правильно отформатирован и ваше приложение имеет доступ для чтения к каталогу. Обратите внимание, что путь , а не "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

8 голосов
/ 13 августа 2013

Похоже, что вы можете использовать метод 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");
        //...
    }
}

Я нашел это решение, задокументированное в этом блоге , и более полный ответ (на связанный вопрос) можно найти здесь .

5 голосов
/ 16 сентября 2008

Используйте следующее (не забудьте включить сборку System.Configuration)

ConfigurationManager.OpenExeConfiguration(exePath)
3 голосов
/ 16 сентября 2008

Вы можете установить его, создав новый домен приложения:

AppDomainSetup domainSetup = new AppDomainSetup();
domainSetup.ConfigurationFile = fileLocation;
AppDomain add = AppDomain.CreateDomain("myNewAppDomain", securityInfo, domainSetup);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...