Как переписать файл перед публикацией на основе конфигурации сборки?
У меня есть новое приложение 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
,
Этот файл, конечно, будет необязательным и может храниться вашим ИТ-отделом со всеми ценными паролями внутри него.
Однако если вы храните пароли и строки подключения, я настоятельно рекомендую прочитать о безопасном хранении секретов приложений.