我正在通过包含2个任务的Azure发布管道将Web应用程序部署到主要Windows服务器上。 IIS Web App管理和IIS Web App部署。
我遇到的问题是,我需要用完全不同的文件替换appsettings.json。我们有3个环境(dev / test / prod),并且每个环境在源代码管理中都有自己的appsettings.json。
[我看到有一个JSON变量替换,但是我不想替换变量,我想说“嘿,使用这个文件而不是这个文件”。
我如何在Azure Devops中执行此操作?如果我要解决所有这些错误,请告诉我。这是我公司多年来所做的事情,我真的不想在管道中创建变量来更新我的appsettings.json。
谢谢!
您是否要根据不同的环境使用相应的appsettings.json?如果是这样,核心项目可以从appsettings.[environment].json
文件中的每个数据检索到ASPNETCORE_ENVIRONMENT
environment variable。
1。将相应的appsettings.[environment].json
文件添加到项目中,例如appsettings.Production.json
,appsettings.Development.json
,并在每个文件中设置相应的值。
2。启动文件中的代码:
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
3。在每个环境机器上设置/添加ASPNETCORE_ENVIRONMENT
环境变量(只需设置/添加一次)
您需要为每个环境创建appsettings.json
,然后以这种方式更改您的代码:
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
this.configuration = builder.Build();
}
您需要使用环境ASPNETCORE_ENVIRONMENT
,Dev
,Staging
的值定义名为Wahtever you like env name
的环境变量。
如果您需要更多信息,在这里您会发现不错的blog post。
这里您也有很多有关设置环境文件的信息。 Automatically set appsettings.json for dev and release environments in asp.net core?