我目前正在尝试使用 launchSettings.json
文件来管理应用程序的环境变量,这样我的 Setup.cs
文件可以通过 env.IsDevelopmentEnvironment()
来管理环境。
在VSTS中,在Azure部署任务中如何设置环境变量 ASPNETCORE_ENVIRONMENT
?或者它应该在我构建步骤中的dotnet publish
任务中出现?
我目前正在尝试使用 launchSettings.json
文件来管理应用程序的环境变量,这样我的 Setup.cs
文件可以通过 env.IsDevelopmentEnvironment()
来管理环境。
在VSTS中,在Azure部署任务中如何设置环境变量 ASPNETCORE_ENVIRONMENT
?或者它应该在我构建步骤中的dotnet publish
任务中出现?
因为ASPNETCORE_ENVIRONMENT
是一个环境变量,你可以在Azure上直接指定它。
请参考Stack Overflow的回答:如何在Azure上定义环境变量。
<aspNetCore targetFramework="x.x">
标记。 public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables(); //override settings with environment variables
var config = builder.Build();
Configuration = config;
}
如果您有一个发布变量:appsetting.ASPNETCORE_ENVIRONMENT = Release,那么如果您正在通过Kudu上的PowerShell控制台进行检查,则会发现$env:ASPNETCORE_ENVIRONMENT确实为“Release”。
实际上,我正在使用此扩展来覆盖所有我的appsettings.json变量以及发布时的ASPNETCORE_ENVIRONMENT,而不是令牌化一些appsettings.{environment}.json文件。我可以通过在我的VSTS Release Variable名称中使用正确的命名约定来使用环境变量进行覆盖。
例如,如果我的appsettings.json具有以下结构:
{
settings: {
secret: {
foo: "bar"
}
}
}
我可以使用类似于发布变量的覆盖方式:
appsetting.settings:secret:foo = "bar"
然后在部署后检查Azure Web应用程序上的$env:settings:secret:foo
不需要在源代码中进行额外的操作或解压Web部署包,标记配置文件并在msdeploy之前重新压缩,即可获得特定于环境的配置。