【问题标题】:C# .NET Core Console Program - How to use GetEnvironmentVariable outside of Visual StudioC# .NET Core 控制台程序 - 如何在 Visual Studio 之外使用 GetEnvironmentVariable
【发布时间】:2018-04-18 21:18:12
【问题描述】:

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

我写了这样的简单代码:

string rdsDatabase = System.Environment.GetEnvironmentVariable("RDSDatabase");

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

【问题讨论】:

  • 可以使用应用配置文件吗?
  • 创建一个 CMD 文件,首先设置变量,然后使用您的 dll 调用 dotnet。但最好使用配置文件。
  • @Yuri - 我“可以”做任何事情,但寻找快速简单的东西(同时平衡最佳实践)。问题是我可以使用 GetEnviornmentVariable 吗?它是否读取 app.config,如果是,格式是什么?
  • @Styxxy - 然后使用set命令创建windows环境变量?
  • 环境变量在 Unix 上是个大问题。用户应该敲入自己的 bash 脚本来做事。由于 .NETCore 预计将在其中一种 Unix 风格上运行,因此环境变量卷土重来,因此必须添加此配置对话框。我猜它们在 Windows 上并不是很受欢迎,这就是这个问题是如何发生的。使用 SET 命令编写一个 .bat 文件。

标签: c# configuration .net-core


【解决方案1】:

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

dotnet 核心应用示例:

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

要调用的示例 cmd(假设编译后的 dll 称为“Foo.dll”):

SET MyEnvironmentVariable=Hello
dotnet Foo.dll

输出应该是“Hello”。

我个人会推荐一个配置文件(可以在部署时配置正确的值)。这(也是)第一个直观地查看配置的地方。环境变量是一种“魔法”。 “run.cmd”也是很容易被忽略的东西。

【讨论】:

  • 好的,谢谢。希望今天会尝试,这应该适用于我的具体案例并回答我提出的具体问题。然后主要考虑的是环境变量应该被适当地命名,以免与其他程序冲突(可能以 ApplicationName 为前缀)我认为最好的企业路线是做一个 config.json 文件。
  • @NealWalters 该值仅在命令运行期间设置。之后,此运行的设置值消失了。我个人尝试使用配置文件,因为这样更清晰,可以在部署时正确设置(环境变量很容易被忽略)。
  • 另一方面,现代容器/云部署更喜欢环境变量。例如:12factor.net/config
猜你喜欢
  • 1970-01-01
  • 2018-09-13
  • 1970-01-01
  • 1970-01-01
  • 2019-11-29
  • 1970-01-01
  • 2018-10-05
  • 2019-12-29
  • 1970-01-01
相关资源
最近更新 更多