繁体   English   中英

".NET Core 控制台应用程序和 aspnetcore_environment 变量"

[英].NET Core console app and aspnetcore_environment variable

我有一个 .net 核心控制台应用程序。 在我正在阅读的代码中,特定于 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 文件。

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

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

我发现如果我更改实际的机器环境变量 (ASPNETCORE_ENVIRONMENT),部署的应用程序会相应地进行调整。

记住! (此应用程序已经发布 - 当我更新盒子上的变量并重新启动应用程序时,它的行为会发生变化)

点击查看下图

在此处输入图像描述<\/a>

ASPNETCORE_ENVIRONMENT<\/strong> :当它设置为生产时,我的应用程序使用 appsettings.production.json 文件

ASPNETCORE_ENVIRONMENT<\/strong> :当它设置为开发时,我的应用程序使用 appsettings.Development.json 文件

点击查看下面的图片 在此处输入图片描述<\/a>

我还发现实际上我必须重新启动 Visual Studio 2019 才能使新添加的环境变量生效。 基本上,我相信环境变量在幕后被缓存了一些。 因此,如果您确实添加了另一个变量,您可能必须重新启动 Visual Studio 才能使它们生效。 ...嗯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM