读取环境变量
using System.Collections;
namespace AppEnvironment
{
internal class Program
{
static void Main(string[] args)
{
// 获取特定的系统环境变量
string systemPath = Environment.GetEnvironmentVariable("PATH");
Console.WriteLine("系统PATH:" + systemPath);
// 获取所有环境变量
foreach (DictionaryEntry env in Environment.GetEnvironmentVariables())
{
Console.WriteLine($"{env.Key} = {env.Value}");
}
}
}
}
按作用域获取环境变量
using System.Collections;
namespace AppEnvironment
{
internal class Program
{
static void Main(string[] args)
{
// 获取机器级环境变量
string machineVar = Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine);
// 获取用户级环境变量
string userVar = Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.User);
// 获取进程级环境变量
string processVar = Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Process);
Console.WriteLine("Machine Variable: " + machineVar);
Console.WriteLine("User Variable: " + userVar);
Console.WriteLine("Process Variable: " + processVar);
}
}
}
临时设置环境变量
using System.Collections;
namespace AppEnvironment
{
internal class Program
{
static void Main(string[] args)
{
// 设置进程级环境变量(仅对当前进程有效)
Environment.SetEnvironmentVariable("MY_APP_CONFIG", "Development");
// 读取刚设置的环境变量
string appConfig = Environment.GetEnvironmentVariable("MY_APP_CONFIG");
Console.WriteLine("应用配置:" + appConfig);
}
}
}
永久设置环境变量
由于没给管理权限,下面的机器级环境变量会出错
using System.Collections;
namespace AppEnvironment
{
internal class Program
{
static void Main(string[] args)
{
try
{
// 设置用户级环境变量
Environment.SetEnvironmentVariable(
"DATABASE_CONNECTION",
"Server=myServerAddress;Database=myDataBase;",
EnvironmentVariableTarget.User
);
// 设置机器级环境变量(需要管理员权限)
Environment.SetEnvironmentVariable(
"GLOBAL_APP_SETTING",
"SomeGlobalValue",
EnvironmentVariableTarget.Machine
);
}
catch (Exception ex)
{
Console.WriteLine("设置环境变量失败:" + ex.Message);
}
}
}
}
多环境配置
using System.Collections;
namespace AppEnvironment
{
internal class Program
{
static void Main()
{
// 根据环境变量选择配置
string environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production";
switch (environment)
{
case "Development":
Console.WriteLine("开发环境配置");
break;
case "Staging":
Console.WriteLine("预发布环境配置");
break;
case "Production":
Console.WriteLine("生产环境配置");
break;
}
}
}
}