Как получить имя файла конфигурации компьютера в .NET Core - PullRequest
0 голосов
/ 25 июня 2018

Я портирую приложение из .NET Framework на .NET Core (Standard).

Внутри приложения у нас есть следующий код

   public LogMessageListenerFromConfig()
        : this(AppDomain.CurrentDomain.BaseDirectory.ConfigurationFile, LoggingSection.DefaultName)
    { }

    public LogMessageListenerFromConfig(string section)
        : this(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile, section)
    { }

    public LogMessageListenerFromConfig(string filename, string section)
    {
        // todo: set up a file watcher and refresh the listeners (etc.) when it changes.
        var fileMap = new ExeConfigurationFileMap { ExeConfigFilename = filename };
        var configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);

        _section = LoggingSection.Section(configuration, section);
        Refresh();
    }

Это похоже на совместимость с.NET Core, кроме следующего утверждения

AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

В домене приложений больше нет SetupInformation.Честно говоря, я читал, что это может вызвать проблемы и т. Д. Однако, как еще я могу получить имя файла конфигурации приложения в служебном классе?

Обратите внимание, что этот класс будет использоваться как в консоли, так и в asp.net.(основные) приложения.

Любая помощь приветствуется

Стивен

1 Ответ

0 голосов
/ 26 июня 2019

Та же проблема, если вы переносите библиотеку на .Net Standard. Решение это; установите этот пакет nuget system.configuration.configurationmanager, затем вы можете использовать:

 var conf = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
 var configFilePath = conf.FilePath;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...