В документации для ConfigurationManager.OpenExeConfiguration(string exePath)
указано:
Открывает указанный файл конфигурации клиента как объект конфигурации.
Там же указано, что exePath
— это «Путь к исполняемому (exe) файлу»
Предполагается, что метод открывает файл *.exe.config
для исполняемого файла по пути, указанному exePath
, и что ConfigurationErrorsException
будет выдано, если «Файл конфигурации не может быть загружен».
В следующем коде используется путь к неисполняемому файлу, и каталог этого пути не содержит файлов *.exe.config. Тем не менее, код выполняется без каких-либо исключений и других признаков недопустимого аргумента.
var configs = Directory.GetFiles("C:\\NoConfig", "*.config");
Debug.Assert(configs.Length == 0);
File.WriteAllText("C:\\NoConfig\\notes.txt", "This is not an executable, and there is no .config file in its folder.");
var config = ConfigurationManager.OpenExeConfiguration("c:\\notes.txt");
Debug.Assert(config != null);
Тем не менее, теперь он постепенно устаревает для новой конфигурации .NET Core на основе JSON и в любом случае не будет пересматриваться или исправляться.
Итак, это из-за ошибки в этой перегрузке метода OpenExeConfiguration
?
Я просто хотел 2-е и n-е мнение, прежде чем поднять его на MS Connect. И Connect в данный момент не работает.
ДОБАВЛЕНО: Если я вызываю OpenExeConfiguration
с действительным exePath
к реальному исполняемому файлу (проверенному) с действительным файлом .config
, он читает, но не анализирует файл. Я должен запросить xml для раздела appSettings
и проанализировать его самостоятельно, используя обходной путь из этого ответа на AppSettings из пользовательских файлов . Это усиливает мое подозрение, что этот код обычно не используется в этом режиме, считается рабочим, но не проверенным и, следовательно, может содержать ошибки.
Я уверен, что он получит мало внимания, так как новый API конфигурации .NET Core заменит только старый XML.