C#.NET核心控制台程序 - 如何在Visual Studio外部使用GetEnvironmentVariable

Nea*_*ers 0 c# configuration .net-core

我正在编写一个.Net Core C#控制台程序.在测试时,使用项目属性中定义的环境变量很方便:

在此输入图像描述

我写了这样简单的代码:

string rdsDatabase = System.Environment.GetEnvironmentVariable("RDSDatabase");
Run Code Online (Sandbox Code Playgroud)

我刚刚了解到没有.exe创建,你必须使用"DotNet"来运行.net核心控制台程序(https://blogs.msdn.microsoft.com/benjaminperkins/2017/03/07/net-core -application-where-my-exe-how-to-publish /).在那种情况下,我在哪里将这些环境变量放在运行时?我知道有一些替代方法,如本文所述:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration?tabs=basicconfiguration.我可以保持简单并使用GetEnvironmentVariable吗?

Sty*_*xxy 5

创建一个设置变量的cmd文件.它只会在执行cmd时设置为"环境变量",之后不再设置"环境变量".

示例dotnet核心应用程序:

class Program
{
    static void Main(string[] args)
    {
        string myvar = System.Environment.GetEnvironmentVariable("MyEnvironmentVariable");
        Console.WriteLine(myvar);
    }
}
Run Code Online (Sandbox Code Playgroud)

要调用的cmd示例(假设已编译的dll称为"Foo.dll"):

SET MyEnvironmentVariable=Hello
dotnet Foo.dll
Run Code Online (Sandbox Code Playgroud)

输出应为"Hello".

我个人会推荐一个配置文件(可以在部署时配置正确的值).这也是(直接)查看配置的第一个地方.环境变量有点"神奇"."run.cmd"也很容易被忽视.

  • 另一方面,现代容器/云部署广泛地更喜欢环境变量.例如:https://12factor.net/config (2认同)