programing

C#에서 환경 변수를 가져오고 설정하는 방법은 무엇입니까?

powerit 2023. 5. 8. 22:29
반응형

C#에서 환경 변수를 가져오고 설정하는 방법은 무엇입니까?

환경 변수를 가져오려면 어떻게 해야 하며 누락된 항목이 있으면 값을 설정해야 합니까?

시스템을 사용합니다.환경 클래스.

방법들

var value = System.Environment.GetEnvironmentVariable(variable [, Target])

그리고.

System.Environment.SetEnvironmentVariable(variable, value [, Target])

당신을 위해 그 일을 할 것입니다.

선택적 매개 변수Target형식의 열거형입니다.EnvironmentVariableTarget다음 중 하나일 수 있습니다.Machine,Process또는User생략할 경우 기본 대상은 현재 프로세스입니다.

가져오기 및 설정

얻다

string getEnv = Environment.GetEnvironmentVariable("envVar");

세트

string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);

작업 중에 우연히 이것을 발견했습니다.PATH 환경 변수를 읽기 위한 NET 콘솔 앱이며, 시스템을 사용하여 이를 찾았습니다.환경.GetEnvironmentVariable은 환경 변수를 자동으로 확장합니다.

그런 일이 일어나지 않길 바랬어요즉, '%SystemRoot%\system32'와 같은 경로의 폴더가 'C:\Windows\system32'입니다.확장되지 않은 경로를 얻으려면 다음을 사용해야 했습니다.

string keyName = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment\";
string existingPathFolderVariable = (string)Registry.LocalMachine.OpenSubKey(keyName).GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames);

저한테는 매력적으로 작용했어요.

이것은 기계 설정인 환경 변수에 적용됩니다.Users(사용자)의 경우 User(사용자)로 변경합니다.

String EnvironmentPath = System.Environment
                .GetEnvironmentVariable("Variable_Name", EnvironmentVariableTarget.Machine);
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);

환경 변수를 읽는 목적이 appsetting.json 또는 다른 구성 파일의 값을 재정의하는 것이라면 EnvironmentVariables를 통해 보관할 수 있습니다.내선 번호.

var builder = new ConfigurationBuilder()
                .AddJsonFile("appSettings.json")
                .AddEnvironmentVariables(prefix: "ABC_")

var config = builder.Build();

여기에 이미지 설명 입력

이 예에 따르면 환경의 URL은 appsettings.json.에서 읽지만 다음과 같은 경우AddEnvironmentVariables(prefix: "ABC_")라인이 ConfigurationBuilder에 추가되었습니다. appsettings.json 값은 환경 변수 값에서 재정의됩니다.

환경 변수를 응용프로그램에 배치할 수도 있습니다.app.config또는web.config파일, 백분율로 경계가 지정된 이름(%), 코드로 확장됩니다.

  • 환경 변수 값이 변경되거나 새 값이 설정되면 Visual Studio를 닫았다가 다시 열어야 합니다.

예를 들어,app.config:

<connectionStrings>
    <add name="myConnectionString" connectionString="%DEV_SQL_SERVER_CONNECTION_STRING%" providerName="System.Data.SqlClient" />
</connectionStrings>

그리고 코드에서:

string connectionStringEnv = ConfigurationManager.AppSettings["myConnectionString"];
string connectionString = System.Environment.ExpandEnvironmentVariables(connectionStringEnv); 

다음을 사용하여 환경 변수를 업데이트할 수 있었습니다.

string EnvPath = System.Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine) ?? string.Empty;
if (!string.IsNullOrEmpty(EnvPath) && !EnvPath .EndsWith(";"))
    EnvPath = EnvPath + ';';
EnvPath = EnvPath + @"C:\Test";
Environment.SetEnvironmentVariable("PATH", EnvPath , EnvironmentVariableTarget.Machine);

Visual Studio 2019 -- 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성 > 설정을 선택한 다음 이름(예: 연결 문자열), 유형 및 값을 지정하여 새 변수를 추가합니다.그런 다음 코드에서 다음과 같이 읽습니다.

var sConnectionStr = Properties.Settings.Default.ConnectionString;

이러한 변수는 프로젝트 유형에 따라 구성 파일(web.config 또는 app.config)에 저장됩니다.다음은 이 솔루션의 예입니다.

  <applicationSettings>
    <Testing.Properties.Settings>
      <setting name="ConnectionString" serializeAs="String">
        <value>data source=blah-blah;etc-etc</value>
      </setting>
    </Testing.Properties.Settings>
  </applicationSettings>

언급URL : https://stackoverflow.com/questions/185208/how-do-i-get-and-set-environment-variables-in-c

반응형