【问题标题】:.NET Core console app and aspnetcore_environment variable.NET Core 控制台应用程序和 aspnetcore_environment 变量
【发布时间】:2021-01-29 06:36:58
【问题描述】:

我有一个 .net core CONSOLE 应用程序。在我正在阅读的代码中,特定于 appsettings.dev.json、appsettings.uat.json 等的适当环境中。

  var environmentName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
  configuration = new ConfigurationBuilder()
                .SetBasePath(Directory.GetParent(AppContext.BaseDirectory).FullName)
                .AddJsonFile("appsettings.json", false)
                .AddJsonFile($"appsettings.{environmentName}.json", optional: true)
                .AddEnvironmentVariables()
                .Build();

当它直接在 Visual Studio 中运行时,ASPNETCORE_ENVIRONMENT 变量是从 launchSettings.json 文件或修改项目属性、调试选项卡并读取正确的 appsettings.environment.json 文件来设置的。

当我想通过 Visual Studio 发布项目时,即右键单击项目并发布(即我不想通过命令行执行此操作),我选择保存在 PublishProfile 文件夹中的适当 .pubxml 文件。在这个 .pubxml 文件中,我设置了 environmentName。

  <EnvironmentName>dev</EnvironmentName>

但是,当运行由发布进程生成的 exe 时 - 上面指定的 environmentName 变量始终为空白,因此它不会选择正确的 environmentName 设置,因此不会读取相应的 appsettings.environment.json 文件在。

【问题讨论】:

    标签: c# .net-core console-application


    【解决方案1】:

    当您想运行已发布的 .exe 文件时,请在命令行(powershell)中尝试这种方式:

    $env:ASPNETCORE_ENVIRONMENT="dev";yourfile.exe
    

    【讨论】:

    • 我不想在运行 exe 时传入变量值,我希望它以这个适当的值集发布,这就是我认为在 pubxml 文件中设置它的目的是。
    • 这是关于你要运行你的应用程序的操作系统的环境变量,所以你应该为你的机器设置环境变量,请看这个链接docs.microsoft.com/en-us/aspnet/core/fundamentals/…
    • 是的,我意识到这一点,但我希望将其设置为 Visual Studio 中发布过程的一部分(而不是通过命令行发布)。已经读过那篇文章了。
    • 这与你如何发布你的应用程序以及你的应用程序从你的环境主机读取变量无关。
    猜你喜欢
    • 2019-07-16
    • 2023-01-24
    • 2016-11-02
    • 1970-01-01
    • 2023-04-10
    • 2018-04-11
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多