создать файл appsettings.Release при публикации веб приложения и скопировать данные с файла appsettings.Developpement
при публикации сайта на сервер мне приходится в ручную копировать appsettings настройки из файла appsettings.Developpement в файл appsettings, как и где можно контролировать эту часть ?
Чтоб при публикации приложение создавало файл appsettings.Release и по умолчанию копировало данные с appsettings.Developpement например
приложение Blazor Web Assembly
Ответы (2 шт):
Для удобства разработки существует механизм разделения конфигурационного файла на несколько частей:
- Общая - appsettings.json (можно задать все настройки приложения тут)
- Зависимая - appsettings.{name}.json (можно переопределить настройки из общей части или добавить новые)
Имя зависимой части - {name} может задаваться в переменной окружения (например в DOTNET_ENVIRONMENT=Development) или даже переопределяться самим приложением
Основные виды окружений:
- Development - запуск приложения в среде разработки или тестирования
- Staging - запуск приложения в среде приближенном к продуктовом (аналог закрытой беты)
- Production - запуск в продуктовой среде
Всё это условности и можно добавлять любые свои окружения, например:
- Testing - окружение для интеграционных или юнит тестов
- Local - локальное окружение (запуск на машине разработчика в режиме debug например)
И конечно всё это просто базовые настройки, которые вы можете поменять под себя. Например загружать конфигурацию из базы, etcd, zookeeper из переменных окружения, из командной строки запуска самого приложения, из xml файла или yaml
Отвечая на ваш вопрос. Не надо ничего копировать после публикации. Один раз перенесите все общие настройки из appsettings.Development.json в appsettings.json, а частные (например строка подключения к БД) оставте.
Мне понравилось решение, оставлю здесь, переведу ответ как есть в источнике
Для .NET 6 я нашел это лучшим решением:
var webAppOptions = new WebApplicationOptions()
{
Args = args,
#if DEBUG
EnvironmentName = Environments.Development,
#else
EnvironmentName = Environments.Production,
#endif
};
var builder = WebApplication.CreateBuilder(webAppOptions);
Мы также можем прочитать EnvironmentName из файла конфигурации и установить его WebApplicationOptions перед вызовом WebApplication.CreateBuilder
Теперь мы также можем протестировать производственную среду на нашей машине разработки. Нам просто нужно переключиться на release сборку, и у нас есть производственная среда.
Нет необходимости устанавливать какие-либо переменные ОКРУЖАЮЩЕЙ СРЕДЫ.
Преимущество такого подхода также в том, что мы не можем случайно создать сборку релиза, работающую в Development среде.
пример на гитхаб https://github.com/Dev18000/ExampleAppsettings/blob/master/ExampleAppsettings/Program.cs