Ce face Environment
Clasa statică Environment dă acces la variabilele de mediu (GetEnvironmentVariable, SetEnvironmentVariable), la date despre sistem (OSVersion, ProcessorCount, MachineName, UserName, Is64BitProcess) și despre runtime (Version).
GetCommandLineArgs() întoarce argumentele programului, primul element fiind calea programului. Environment.Exit(cod) oprește procesul cu un cod de ieșire, iar GetFolderPath(Environment.SpecialFolder.UserProfile) dă dosare standard (profil, documente, date aplicație). Environment.NewLine este terminatorul de linie al sistemului.
SetEnvironmentVariable schimbă variabila doar pentru procesul curent și pentru procesele pornite de el, nu pentru tot sistemul.
Exemple
Exemplul 1: Informații despre sistem
Console.WriteLine(Environment.OSVersion);
Console.WriteLine(Environment.Version);
Console.WriteLine(Environment.ProcessorCount);
Console.WriteLine(Environment.Is64BitProcess);
Console.WriteLine(Environment.UserName);
Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile));
Rezultat posibil (depinde de calculator)
Unix 6.8.0.45
10.0.0
8
True
ana
/home/ana
Exemplul 2: Variabile de mediu și argumente
Programul a fost pornit cu dotnet run -- --port 8080, fără variabila ASPNETCORE_ENVIRONMENT setată.
string mediu = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production";
Console.WriteLine($"Mediu: {mediu}");
Environment.SetEnvironmentVariable("APP_TEMA", "intunecat");
Console.WriteLine(Environment.GetEnvironmentVariable("APP_TEMA"));
string[] argumente = Environment.GetCommandLineArgs();
Console.WriteLine($"Argumente: {string.Join(" ", argumente.Skip(1))}");
if (argumente.Length < 3)
Environment.Exit(1);
Console.WriteLine("Pornit");
Rezultat posibil (depinde de mediu)
Mediu: Production
intunecat
Argumente: --port 8080
Pornit
Greșeli frecvente
- Parole și chei de API scrise în cod în loc să fie citite din variabile de mediu sau dintr-un manager de secrete.
GetEnvironmentVariableîntoarcenullcând variabila lipsește; tratează cazul cu??.Environment.Exitîn mijlocul aplicației sare peste blocurilefinallyrămase pe firul curent. Preferă să returnezi un cod dinMain.
Comenzi înrudite
Path (Combine, GetFileName, GetExtension): Construiește și desface căi de fișiere fără să lucrezi cu text manual: Combine, GetFileName, GetExtension, GetDirectoryName, ChangeExtension.