환경 변수 접두사
계층적 데이터는 :
를 수준 구분 기호로 사용하여 나타냅니다. 그러나 환경 변수의 경우 :
문자는 모든 플랫폼에서 지원되는 __
로 정규화됩니다. 이 변경 내용은 정규화된 접두사 및 정규화되지 않은 접두사와 키를 비교하는 방법에 영향을 줍니다. 특히 이제 :
또는 __
을 구분 기호로 포함하는 접두사를 지정하여 환경 변수를 추가할 수 있습니다. 두 구문은 일치하는 접두사와 :
또는 __
이 오는 경우와 일치하는 환경 변수를 찾습니다. 이론적으로 이전에 해당 필터와 일치하지 않았던 일부 환경 변수는 이제 필터와 일치할 수 있습니다.
도입된 버전
.NET 7 미리 보기 4
이전 동작
이전에는 다음 코드가 False
를 출력했습니다.
using Microsoft.Extensions.Configuration;
const string myValue = "value1";
Environment.SetEnvironmentVariable("MY_PREFIX__ConfigKey", myValue);
IConfiguration config = new ConfigurationBuilder()
.AddEnvironmentVariables(prefix: "MY_PREFIX__")
.Build();
var loadedValue = config.GetValue<string?>("ConfigKey", null);
Console.WriteLine(String.Equals(myValue, loadedValue));
// False
MY_PREFIX__ConfigKey
환경 변수를 구성에 추가하려면 __
대신 :
구분 기호를 사용하여 환경 변수를 추가해야 했습니다.
using Microsoft.Extensions.Configuration;
const string myValue = "value1";
Environment.SetEnvironmentVariable("MY_PREFIX__ConfigKey", myValue);
IConfiguration config = new ConfigurationBuilder()
.AddEnvironmentVariables(prefix: "MY_PREFIX:")
.Build();
var loadedValue = config.GetValue<string?>("ConfigKey", null);
Console.WriteLine(String.Equals(myValue, loadedValue));
// True
새 동작
.NET 7부터 다음 코드는 True
를 출력합니다.
using Microsoft.Extensions.Configuration;
const string myValue = "value1";
Environment.SetEnvironmentVariable("MY_PREFIX__ConfigKey", myValue);
IConfiguration config = new ConfigurationBuilder()
.AddEnvironmentVariables(prefix: "MY_PREFIX__")
.Build();
var loadedValue = config.GetValue<string?>("ConfigKey", null);
Console.WriteLine(String.Equals(myValue, loadedValue));
// True
호환성이 손상되는 변경의 형식
이 변경은 이진 호환성에 영향을 줄 수 있습니다.
변경 이유
이 변경은 .NET 6에서 환경 변수 접두사 필터를 정규화하기 위한 의도하지 않은 동작 변경을 수정하기 위해 수행되었습니다. 새 동작은 .NET 5 동작과 일치합니다.
권장 조치
대부분의 개발자는 이전에 잘못된 동작이 수정되므로 이 변경의 영향을 받지 않습니다. 드문 경우지만 __
이 포함된 접두사가 __
이 포함된 환경 변수와 일치하지 않는다는 사실이 중요하다면 해당 변수의 접두사를 변경하는 것이 좋습니다.
영향을 받는 API
참고 항목
.NET
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기