как работают launchSettings. json и appSettings. json? - PullRequest
2 голосов
/ 29 мая 2020

При создании нового. NET основного проекта Rider генерирует мне файлы launchSettings.json, appSettings.json и appSettings.Development.json. . NET Core, кажется, может обрабатывать эти конфигурации самостоятельно, мне нечего кодировать самому. Ни один из этих файлов не игнорируется системой контроля версий.

. NET Ядро для меня ново, я пока знаю только бэкенды Node. В Node я бы установил пакет dotenv, создал новый .env файл с содержимым PORT=3000, добавил .env файлы в мой .gitignore и получил доступ к порту через process.env.PORT в моем коде. Эти значения конфигурации работают только для меня, потому что они находятся вне контроля версий.

Сравнивая подходы, есть некоторые вещи, которые я не понял:

  • .env файлы должны оставаться вне из системы контроля версий, а в этих файлах нет? А как насчет конфиденциальной информации? Или я должен просто добавить их в .gitignore вручную?
  • Взято из здесь явно рекомендуется избегать нескольких файлов конфигурации.

    В В приложении с двенадцатью факторами env vars являются детализированными элементами управления, каждый из которых полностью ортогонален другим env vars. Они никогда не группируются как «среды», а вместо этого управляются независимо для каждого развертывания. Это модель, которая плавно масштабируется, поскольку приложение естественным образом расширяется до большего количества развертываний за время своего существования.

    Так что, не лучше ли удалить файл appSettings.Development.json и оставить appSettings.json?

  • launchSettings.json содержит информацию о конфигурации приложения (например, "applicationUrl": "https://localhost:5001;http://localhost:5000",) и принимается системой контроля версий. Что, если я захочу изменить порт или другие настройки? И поскольку вы знаете, что это файл json, я не смогу добавлять заполнители для переменных env, например http://{{baseUrl}}:{{port}}. Как с этим бороться?
  • Профили launchSettings.json имеют раздел environmentVariables с начальным значением "ASPNETCORE_ENVIRONMENT": "Development", но какова тогда цель appSettings.json?

Я думаю, что все проще, чем кажется, но меня это смущает. Не мог бы кто-нибудь объяснить это?

1 Ответ

2 голосов
/ 29 мая 2020

Хотя я не знаю файлов .env, мои ответы на остальные следующие:

Если у вас есть appsettings. json и appsettings.development. json и вы указываете в своем ASPNETCORE_ENVIRONMENT, что вы запускаете разработку, настройки в appsettings.development. json должны перезаписать настройки в appsettings. json, а те, которые не были перезаписаны, будут считаны из appsettings. json. Однако я почти всегда использую appsettings. json, содержащий только {}, а затем использую appsettings.production. json и appsettings.development. json, чтобы точно указать, какие настройки go где.

Что касается безопасности, я думаю, что намерение состоит в том, чтобы оставить добавление секретов для системы CD, таких как Octopus deploy или teamcity, которые затем будут обменивать секреты-заполнители на настоящие при развертывании решения.

Launchsettings. json only относится к запуску проекта локально без публикации, будь то через Rider или Visual Studio, он сообщает системе, запускать ли браузер и какой URL-адрес искать приложение, порты - это просто значения по умолчанию, которые можно перезаписать в коде, где затем вам нужно сопоставить вновь выбранные порты в настройках запуска, чтобы отладка работала должным образом.

Надеюсь, это имеет смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...