ExeConfigurationFileMap не находит раздел в файле, но ConfigurationFileMap

62
7

Поиск пользовательского раздела в файле конфигурации работает, когда я использую путь к файлу, но когда я передаю конфигурационную карту exe с той же самой записью, она терпит неудачу. Зачем?

string file = System.Reflection.Assembly.GetAssembly(typeof(PhotoComparison)).Location + ".config";

var efm = new ExeConfigurationFileMap() { ExeConfigFilename = file };
var cfm new ConfigurationFileMap(file)

//returns entry
var o2 = ConfigurationManager.OpenMappedMachineConfiguration(cfm).GetSection("presetFilters");

//returns null
var o3 = ConfigurationManager.OpenMappedMachineConfiguration(efm).GetSection("presetFilters");

спросил(а) 2021-01-19T16:55:13+03:00 2 месяца, 4 недели назад
1
Решение
62

Приложения.NET используют иерархию конфигурационных файлов. Я нахожу, что эта диаграмма хорошо описывает ситуацию.

Как вы используете ExeConfigurationFileMap, вы устанавливаете исполняемый файл конфигурации. Однако вы вызываете метод OpenMappedMachineConfiguration который должен загружать только файл конфигурации машины.

Я думаю, вы не загружаете файл, который хотите. Возможно, это сработает для вас:

string file = "some config ...";    
// ExeConfigFilename => MachineConfigFilename
var efm = new ExeConfigurationFileMap() { MachineConfigFilename = file };
var o3 = ConfigurationManager.OpenMappedMachineConfiguration(efm).GetSection("presetFilters");

ответил(а) 2021-01-19T16:55:13+03:00 2 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема