Как переписать файл перед публикацией на основе конфигурации сборки?

У меня есть новое приложение asp.net V5, которое на самом деле является просто статическим угловым сайтом, и я пытаюсь сделать эквивалент преобразования web.config. Мой файл app.js имеет константу, определенную как serviceUrl, которая указывает на URL нашего API (не на том же сайте)

Я использовал gulp-replace и создал задачи для каждой из наших целей сборки, которые успешно заменяют одну строку, которую нужно заменить.

Проблема, с которой я столкнулся, заключается в том, что мне нужно иметь возможность изменять этот URL-адрес службы на основе конфигурации сборки, выбранной таким образом, чтобы мы могли автоматизировать развертывание и т. Д., И не нужно было изменять этот URL-адрес для каждой отдельной цели. (то есть dev переходит на devapi.xxx.com, а релиз - на https://api.xxx.com/ и т. д.)

Я нашел раздел сценариев предварительной публикации, но он не позволяет мне быть конкретным в зависимости от конфигурации. И секция конфигурации, кажется, не позволяет мне определять скрипты, которые будут работать.

Итак, мой вопрос, как сделать шаг перед публикацией, который находит и заменяет эту строку в зависимости от конфигурации?

1 ответ

Вы должны взглянуть на работу с несколькими средами.

В основном, ваш appsettings.json это то, что вы ищете. В вашем Startup.cs у вас должна быть строка, которая выглядит примерно так:

var builder = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);

По умолчанию в Visual Studio ASPNET_ENV переменная окружения будет установлена ​​в Development, Когда Visual Studio не запускается, по умолчанию Production,

Таким образом, по определению, при запуске приложения в рабочем режиме оно автоматически переопределит appsettings.json значения с appsettings.Production.json,

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

Однако если вы храните пароли и строки подключения, я настоятельно рекомендую прочитать о безопасном хранении секретов приложений.

Другие вопросы по тегам