gpt4 book ai didi

.net-core - 如何使用通用主机(HostBuilder)为.net核心控制台应用程序设置托管环境名称

转载 作者:行者123 更新时间:2023-12-01 10:18:46 25 4
gpt4 key购买 nike

我正在将.net core 2.x控制台应用程序设置为Windows服务,并且需要根据环境加载一个appsettings json文件。我当时正在考虑使用标识环境的命令行参数来启动服务。如何在Visual Studio中做到这一点?无论我在项目设置中设置什么,EnvironmentName值始终为“Production”

如何从命令行参数设置环境?

var hostBuilder = new HostBuilder()
.UseContentRoot(Directory.GetCurrentDirectory())
.ConfigureAppConfiguration((hostingContext, config) =>
{
var env = hostingContext.HostingEnvironment;
config.AddCommandLine(args);
config.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: false, reloadOnChange: true);
config.AddEnvironmentVariables();
})
.ConfigureServices((hostContext, services) =>
{
//Inject additional services as needed
services.AddHostedService<JobRunner>();
});

enter image description here

最佳答案

您可以通过ConfigureHostConfiguration扩展方法从命令行变量设置环境。

设置构建器本身的配置。这将用于
初始化Microsoft.Extensions.Hosting.IHostEnvironment以供使用
稍后在构建过程中。

var hostBuilder = new HostBuilder()
.UseContentRoot(Directory.GetCurrentDirectory())
.ConfigureHostConfiguration(configurationBuilder => {
configurationBuilder.AddCommandLine(args);
})
.ConfigureAppConfiguration((hostingContext, cfg) =>
{
// ...

var env = hostingContext.HostingEnvironment;
Console.WriteLine(env.EnvironmentName); // Test
// ...
});

// ...

hostBuilder.Build();

在Visual Studio中,您将应用程序参数配置为与 使用的参数相同,后者是 dotnet run
例如。 --environment

如果没有此应用程序参数,则托管环境默认返回dotnet run --environment Test

enter image description here

关于.net-core - 如何使用通用主机(HostBuilder)为.net核心控制台应用程序设置托管环境名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58105146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com