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
'programing' 카테고리의 다른 글
pg_restore를 실행할 때 "[archiver] 지원되지 않는 버전(1.13) 파일 헤더"를 가져오는 중 (0) | 2023.05.08 |
---|---|
콘솔 앱의 'Main' 메서드에 'async' 한정자를 지정할 수 없습니다. (0) | 2023.05.08 |
문자열을 날짜/시간으로 변환 (0) | 2023.05.08 |
Postgre에서 'user'라는 이름의 데이터베이스 테이블을 만들 수 없습니다.SQL (0) | 2023.05.08 |
Git의 빠른 전달이란 무엇입니까? (0) | 2023.05.08 |