Почему мой конфигурационный файл не используется в проекте с одним файлом?

#c# #.net-core #config

#c# #.net-core #конфигурация

Вопрос:

У меня есть файл консольного приложения .NET Core, который использует файл .config.

Это опция «Копировать при необходимости», выбранная в свойствах .config, и код ExcludeFromSingleFile=true, добавленный в проект:

После публикации проекта как отдельного отдельного файла я вижу .exe, .pdb и два файла .config:

Насколько я понимаю, конфигурационный файл не виден для программы. Когда я проверяю значение переменной, оно показывает пустую строку. Это имеет смысл, поскольку я исключаю файл конфигурации из одного файла, хотя есть ли способ иметь один EXE-файл с допустимым файлом .config?

Если я опубликую программу без отмеченной опции «один файл», все работает правильно.

Комментарии:

1. Просто чтобы убедиться. После компиляции значения конфигурации должны быть в MyApp.dll.config. Это тоже одно и то же?

2. Как вы загружаете / считываете конфигурационный файл в своем коде? Кроме того, .NET Core обычно использует файлы appsettings.json для настройки вместо App.config: docs.microsoft.com/en-us/dotnet/core/extensions /…

3. @Fred Да, значения те же, хотя, когда я их изменяю, изменение не видно программе.

4. @devNull Правильно ли я понимаю, что appsettings.json используется только для проектов ASP? У меня возникли проблемы с добавлением его в мое консольное приложение.

5. @Fred Я только что понял, что значения конфигурации вообще не отображаются при публикации в виде одного файла (см. Обновленное Описание проблемы). У вас есть какие-либо мысли? И спасибо за ваш первый комментарий, он помог мне понять ситуацию.