Вопрос

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

Планируется, что файл MyProj.dll.config будет отредактирован после развертывания .dll.Я пытаюсь прочитать свои настройки из этого измененного локального файла.Я попытался извлечь LocalFilesSettingsObject и изменить имя его приложения на my .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 2.0

Это было полезно?

Решение

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

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

  • Ссылка 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);
    }
    

Другие советы

1- откройте файл app.config в Visual Studio

2- в теге "configuration" добавьте свои конфигурации в тег "AppSettings", как показано ниже:

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

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

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.не отображается, необходимо добавить ссылку "System.Configuration" в список ссылок

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

  • откройте файл "MyProj.dll.config"
  • затем обновите свои конфигурации
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top