C# .NET核心控制台应用程序和aspnetcore_环境变量

C# .NET核心控制台应用程序和aspnetcore_环境变量,c#,.net-core,console-application,C#,.net Core,Console Application,我有一个.net核心控制台应用程序。在我正在阅读的代码中,有相应的特定于环境的appsettings.dev.json、appsettings.uat.json等 var environmentName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); configuration = new ConfigurationBuilder() .SetBasePat

我有一个.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中运行时,将从launchSettings.json文件或修改项目属性的“调试”选项卡设置ASPNETCORE_环境变量,并读取正确的appsettings.ENVIRONMENT.json文件

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

  <EnvironmentName>dev</EnvironmentName>
dev

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

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


我不想在运行exe时传入变量值,我希望使用此适当的值集发布它,这就是我认为在pubxml文件中设置它的目的。这是关于要运行应用程序的操作系统的环境变量,因此您应该为您的计算机设置环境变量,请查看此链接s、 我意识到这一点,但我希望将其设置为Visual Studio中发布过程的一部分(而不是通过命令行发布)。已经阅读了该文章。它与如何从环境主机发布应用程序和应用程序读取变量无关。
$env:ASPNETCORE_ENVIRONMENT="dev";yourfile.exe