Где находятся настройки приложений после компиляции в ядре dotnet 2.1? - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь понять, как appsettings.json и appsettings.{Environment}.json и переменные окружения играют в приложении dotnet core 2.1, но я не знаю, как во время выполнения к настройкам приложения (каким бы ни было окончательное преобразование) получают доступприложение.

Я бы ожидал, что набор приложений будет скомпилирован в dll (например: MyWebApiApp\bin\Debug\netcoreapp2.1), но я его там не вижу.

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

Спасибо!

1 Ответ

0 голосов
/ 28 сентября 2018

Вы запускаете код из Visual Studio?По умолчанию CreateDefaultBuilder использует Directory.GetCurrentDirectory(), чтобы определить, из какой папки загружать файлы настроек.Когда вы работаете из Visual Studio, текущим каталогом является каталог вашего проекта, поэтому при запуске / отладке программы он находит правильный файл настроек.

Один из способов проверить это - перейти в командную строку изапустите ваши приложения, используя dotnet myapp.dll.Если вы загружаете настройки из файла appsettings, он не найдет файл, и настройки будут иметь значение null.

Если вы измените свойства файла appsettings на copy if newer и перестройте приложение,когда вы запускаете его из командной строки, он правильно найдет файл настроек.

Вы можете посмотреть, как веб-хост определяет, какие настройки использовать, просмотрев файл реализации .Но, короче говоря, dotnetcore будет использовать настройки в следующем порядке:

  • appsettings.json
  • переменные окружения
  • командная строка

Документация для этого здесь

Итак, если есть настройки, которые могут измениться после развертывания приложения, вы можете перезаписать их через переменные окружения.Вы можете повторно развернуть файлы appsettings, если хотите настроить их таким образом, но, по моему опыту, гораздо проще обрабатывать производственные параметры через переменные среды, возможно, с помощью стороннего инструмента, например, puppet.

Надеюсь, чтопомогает.

...