Я использую DevOps Azure для создания и выпуска веб-приложения .NET Core MVC для экземпляра Windows Server 2016 EC2 в AWS.
У меня разные среды, поэтому я создал следующие наборы приложений.json файлы:
- appsettings.DEV.json
- appsettings.STG.json
- appsettings.PRD.json
Через некоторое времяВ ходе исследования я вижу, что мы можем установить переменную ASPNETCORE_ENVIRONMENT в файле web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\www.MyApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="[ENV]" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
</configuration>
Затем я могу загрузить соответствующий файл appsetting.json соответствующей среды, используя следующий код в Program.cs:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(ConfigConfiguration)
.UseStartup<Startup>();
static void ConfigConfiguration(WebHostBuilderContext ctx, IConfigurationBuilder config)
{
config.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{ctx.HostingEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true);
}
}
Для каждого развертывания я хотел бы контролировать развертываемый web.config, чтобы я мог контролировать значение ASPNETCORE_ENVIRONMENT.Подобно преобразованию web.config в традиционной среде ASP.NET.
Есть ли способ сделать это в DevOps Azure или с помощью параметра в Visual Studio?Я читал, что .NET Core 2.2 предложит решение для этого, но что можно сделать за это время?