我正在通过包含2个任务的Azure发布管道将Web应用程序部署到主要Windows服务器上。 IIS Web App管理和IIS Web App部署。
我遇到的问题是我需要用完全不同的文件替换appsettings.json。我们有3个环境(dev / test / prod),每个环境在源代码管理中都有自己的appsettings.json。
我看到有一个JSON变量替换,但是我不想替换变量,我想说“嘿,用这个文件代替这个文件”。
如何在Azure Devops中执行此操作?如果我要解决所有这些错误,请告诉我。这是我公司多年来所做的事情,我真的不想在管道中创建变量来更新我的appsettings.json。
谢谢!
答案 0 :(得分:0)
您需要为每个环境创建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?
答案 1 :(得分:0)
是否要根据不同的环境使用相应的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
环境变量设置/添加到每台环境计算机(只需设置/添加一次)