Подтвердить что ты не робот

Чтение dll.config(не app.config!) Из модуля плагина

Я пишу С#.NET 2.0.dll, который подключается к Более крупное приложение. Проект visual studio для моего модуля имеет файл app.config, который копируется в MyProj.dll.config рядом с MyProj.dll.

План состоит в том, что MyProj.dll.config будет отредактирован после развертывания .dll. Я пытаюсь прочитать мои настройки из этого измененного локального файла. Я попытался вытащить объект LocalFilesSettingsObject и сменить его имя приложения на мой .dll следующим образом:

        Properties.Settings config = Properties.Settings.Default;
        SettingsContext context = config.Context;
        SettingsPropertyCollection properties = config.Properties;
        SettingsProviderCollection providers = config.Providers;
        SettingsProvider configFile = Properties.Settings.Default.Providers["LocalFileSettingsProvider"];
        configFile.ApplicationName = Assembly.GetExecutingAssembly().GetName().Name;
        config.Initialize(context, properties, providers);
        config.Reload();

Это не работает. Я изо всех сил пытаюсь обернуть голову вокруг всего беспорядка .NET Settings. Я бы хотел, чтобы рецепт был закончен. Мне также нужна ссылка на ясное объяснение (с примерами) того, как настройки должны работать в .NET 2.0

4b9b3361

Ответ 1

Вам нужно будет загрузить x.dll.config (с помощью API конфигурации). Вся автоматическая обработка файлов (включая .Settings) относится ко всем параметрам machine.config/y.exe.config/user.

Чтобы открыть именованный файл конфигурации:

  • Ссылка System.Configuration.dll.
  • Использование System.Configuration
  • Создайте код:

    Configuration GetDllConfiguration(Assembly targetAsm) {
      var configFile = targetAsm.Location + ".config";
      var map = new ExeConfigurationFileMap {
        ExeConfigFilename = configFile
      };
      return ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
    }
    

Ответ 2

1- открыть файл app.config в visual studio

2- в теге "configuration" добавьте свои настройки в тег "appSettings", как показано ниже:

<configuration>
    <appSettings>
        <add key="UserName" value="aaa"/>
        <add key="Password" value="111"/>
    </appSettings>
</configuration>

3- в вашем коде С#

var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
string userName = appConfig.AppSettings.Settings["UserName"].Value;
string password = appConfig.AppSettings.Settings["Password"].Value;

и не забывайте добавлять эти 2 приложения для "ConfigurationManager" и для "Assembly"

  • с использованием System.Configuration;
  • с использованием System.Reflection;

если System.Configuration не отображается, вы должны добавить ссылку "System.Configuration" в ссылках

4- вы можете обновить конфигурации для dll, как показано ниже:

  • откройте файл MyProj.dll.config "
  • затем обновите свои настройки