создать файл appsettings.Release при публикации веб приложения и скопировать данные с файла appsettings.Developpement

при публикации сайта на сервер мне приходится в ручную копировать appsettings настройки из файла appsettings.Developpement в файл appsettings, как и где можно контролировать эту часть ?

Чтоб при публикации приложение создавало файл appsettings.Release и по умолчанию копировало данные с appsettings.Developpement например

приложение Blazor Web Assembly


Ответы (2 шт):

Автор решения: Nikolay

Для удобства разработки существует механизм разделения конфигурационного файла на несколько частей:

  • Общая - appsettings.json (можно задать все настройки приложения тут)
  • Зависимая - appsettings.{name}.json (можно переопределить настройки из общей части или добавить новые)

Имя зависимой части - {name} может задаваться в переменной окружения (например в DOTNET_ENVIRONMENT=Development) или даже переопределяться самим приложением

Основные виды окружений:

  • Development - запуск приложения в среде разработки или тестирования
  • Staging - запуск приложения в среде приближенном к продуктовом (аналог закрытой беты)
  • Production - запуск в продуктовой среде

Всё это условности и можно добавлять любые свои окружения, например:

  • Testing - окружение для интеграционных или юнит тестов
  • Local - локальное окружение (запуск на машине разработчика в режиме debug например)

И конечно всё это просто базовые настройки, которые вы можете поменять под себя. Например загружать конфигурацию из базы, etcd, zookeeper из переменных окружения, из командной строки запуска самого приложения, из xml файла или yaml

Отвечая на ваш вопрос. Не надо ничего копировать после публикации. Один раз перенесите все общие настройки из appsettings.Development.json в appsettings.json, а частные (например строка подключения к БД) оставте.

→ Ссылка
Автор решения: Dev18

источник

Мне понравилось решение, оставлю здесь, переведу ответ как есть в источнике

Для .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

→ Ссылка