Чтение dll.config (не app.config!) из модуля плагина
-
05-07-2019 - |
Вопрос
Я пишу 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"
- затем обновите свои конфигурации