Environment în C# (.NET)

.NET BCL și CLI-ul dotnet .NET Framework 1.0

Informații despre mediul de rulare: variabile de mediu, sistem de operare, număr de procesoare, argumente, dosare speciale, cod de ieșire.

Sintaxă C#
Environment.GetEnvironmentVariable("NUME")   Environment.ProcessorCount   Environment.Exit(1)

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 întoarce null când variabila lipsește; tratează cazul cu ??.
  • Environment.Exit în mijlocul aplicației sare peste blocurile finally rămase pe firul curent. Preferă să returnezi un cod din Main.

Comenzi înrudite