다음을 통해 공유


세계화 불변 모드의 문화 창조 및 대/소문자 매핑

이 중대한 변경은 두 가지 방법으로 글로벌 고정 모드에 영향을 줍니다.

  • 이전에 .NET에서는 문화권 이름이 BCP-47을 준수하는 한 모든 문화권을 세계화 고정 모드로 만들 수 있도록 허용했습니다. 그러나 불변 문화 데이터가 실제 문화 데이터 대신 사용되었습니다. .NET 6부터는 세계화 불변 모드에서 불변 문화권 이외의 문화권을 만드는 경우 예외가 발생합니다.
  • 이전에는 세계화 고정 모드에서 ASCII 문자에 대한 대/소문자 매핑만 지원했습니다. .NET 6부터 세계화 고정 모드는 모든 유니코드 정의 문자에 대한 전체 대/소문자 매핑 지원을 제공합니다. 대소문자 매핑은 문자열 비교, 문자열 검색, 그리고 문자열을 대문자 또는 소문자로 변환하는 작업에 사용됩니다.

세계화 불변 모드는 세계화 지원이 필요하지 않은 앱에서 사용하는 모드입니다. 즉, 앱은 문화권별 데이터 및 동작에 액세스하지 않고 실행됩니다. 글로벌 불변 모드는 일부 Docker 컨테이너, 예를 들어 Alpine 컨테이너에서 기본적으로 활성화됩니다.

기존 동작

이전 .NET 버전에서는 세계화 불변 모드를 사용하도록 설정한 경우:

  • 앱이 고정 문화권이 아닌 문화권을 만드는 경우 작업은 성공하지만 반환된 문화권은 항상 실제 문화권 데이터 대신 고정 문화권 데이터를 사용합니다.

  • 대/소문자 매핑은 ASCII 문자에 대해서만 수행되었습니다. 다음은 그 예입니다.

    if ("Á".Equals("á", StringComparison.CurrentCultureIgnoreCase)) // Evaluates to false.
    

새 동작

세계화 고정 모드를 사용하는 경우 .NET 6부터:

  • 앱이 불변 문화권이 아닌 문화권을 만들려고 하면 CultureNotFoundException 예외가 발생합니다.

  • 대/소문자 매핑은 모든 유니코드 정의 문자에 대해 수행됩니다. 다음은 그 예입니다.

    if ("Á".Equals("á", StringComparison.CurrentCultureIgnoreCase)) // Evaluates to true.
    

도입된 버전

.NET 6

변경 이유

문화 만들기 변화는 문화 관련 문제를 보다 쉽게 진단하기 위해 도입되었습니다. 일부 사용자는 세계화 고정 모드가 활성화된 환경에서 앱이 실행되고 있음을 인식하지 못합니다. 예기치 않은 동작이 발생할 수 있으며 세계화 고정 모드와 연결하지 않으므로 문제를 진단하기가 어렵습니다.

전체 사례 매핑 지원은 세계화 고정 모드에서 유용성과 환경을 향상하기 위해 도입되었습니다.

대부분의 경우 아무 작업도 필요하지 않습니다. 그러나 이전 문화권 생성 동작을 원하는 경우 세계화 고정 모드에서 문화권을 만들 수 있도록 런타임 구성 옵션을 설정할 수 있습니다. 자세한 내용은 미리 정의된 문화권을 참조하세요.

영향을 받는 API

참고하십시오