在 Rider 中将 HostingEnvironment.EnvironmentName 设置为 Development
Posted
技术标签:
【中文标题】在 Rider 中将 HostingEnvironment.EnvironmentName 设置为 Development【英文标题】:Setting HostingEnvironment.EnvironmentName to Development in Rider 【发布时间】:2019-08-04 14:30:26 【问题描述】:我的代码:
public static async Task Main(string[] args)
var host = new HostBuilder()
.ConfigureAppConfiguration(
(hostContext, configApp) =>
configApp.SetBasePath(Directory.GetCurrentDirectory());
configApp.AddJsonFile("appsettings.json");
configApp.AddJsonFile(
$"appsettings.hostContext.HostingEnvironment.EnvironmentName.json",
optional: true);
)
.Build();
await host.RunAsync();
在运行时我看到HostingEnvironment.EnvironmentName
的值是Production
。
我尝试在运行配置中设置以下环境变量,但它并没有改变运行时:ASPNETCORE_ENVIRONMENT=Development
。
在哪里可以配置?
【问题讨论】:
您有没有机会在文档中查看以下内容docs.microsoft.com/en-us/aspnet/core/fundamentals/… 有一种方法可以直接从 Rider 使用 launch settings profiles 设置环境变量。无需创建系统范围的环境变量即可在 Rider 中运行或调试项目。您可以快速轻松地在不同环境的多个配置文件之间切换。 【参考方案1】:添加以下解决了这个问题,我在使用反编译的 .NET 源代码调试后发现它。它似乎没有记录在任何地方,或者我遗漏了一些东西。
public static async Task Main(string[] args)
var host = new HostBuilder()
.ConfigureHostConfiguration(configHost => configHost.AddEnvironmentVariables())
.ConfigureAppConfiguration(
(hostContext, configApp) =>
configApp.SetBasePath(Directory.GetCurrentDirectory());
configApp.AddJsonFile("appsettings.json");
configApp.AddJsonFile(
$"appsettings.hostContext.HostingEnvironment.EnvironmentName.json",
optional: true);
)
.Build();
await host.RunAsync();
添加的行是ConfigureHostConfiguration
call。
【讨论】:
docs.microsoft.com/en-us/aspnet/core/fundamentals/host/… 是的,我阅读了所有这些文档。它的误导。看到这个 sn-p:docs.microsoft.com/en-us/aspnet/core/fundamentals/host/…,这是我用的那个。如果不先调用ConfigureHostConfiguration
,它根本无法工作,据我所知,本文档中没有提到。
我明白你的意思。我可以看到这会很快变得混乱。很高兴您找到了解决问题的方法。快乐编码。以上是关于在 Rider 中将 HostingEnvironment.EnvironmentName 设置为 Development的主要内容,如果未能解决你的问题,请参考以下文章
JETBRAINS RIDER:剖析 Rider 2017.3新功能