在 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的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Rider 中调试类库项目

测试会话不会结束 Rider

JETBRAINS RIDER:剖析 Rider 2017.3新功能

Rider “未找到 Android Sdk”,即使它在那里

UWP 单元测试不会出现在 Rider 中

在 Rider 中发布 Visual Studio 的数据库功能