.NET Framework 4.6.x로의 마이그레이션을 위한 런타임 변경 내용

이 문서에는 .NET Framework 4.6, 4.6.14.6.2에서 발생한 앱 호환성 문제가 나열되어 있습니다.

.NET Framework 4.6

ASP.NET

AllowCustomPaging이 true로 설정된 GridView는 보기의 마지막 페이지를 벗어날 때 PageIndexChanging 이벤트를 발생시킬 수 있습니다.

설명

.NET Framework 4.5의 버그로 인해 System.Web.UI.WebControls.GridView.AllowCustomPaging이 활성화된 System.Web.UI.WebControls.GridView에 대해 System.Web.UI.WebControls.GridView.PageIndexChanging이 발생하지 않는 경우가 있습니다.

제안 해결 방법

이 문제는 .NET Framework 4.6에서 해결되었으며, 해당 버전의 .NET Framework로 업그레이드하여 해결할 수 있습니다. 해결 방법으로, 앱은 이러한 조건을 만족하는 Page_Load에 대해 명시적 BindGrid를 수행할 수 있습니다(System.Web.UI.WebControls.GridView은 마지막 페이지에 있고 마지막 System.Web.UI.WebControls.GridView.PageSizeSystem.Web.UI.WebControls.GridView.PageSize과 다름). 또는, 해당 시나리오는 문제를 보여주지 못하므로 (사용자 지정 페이징 대신) 페이징을 허용하도록 앱을 수정할 수 있습니다.

이름
Scope
버전 4.5
형식 런타임

영향을 받는 API

핵심

.NET Framework 4.5에서 NetDataContractSerializer로 직렬화된 ConcurrentDictionary는 .NET Framework 4.5.1 또는 4.5.2에서 역직렬화될 수 없습니다.

세부 정보

이 형식의 내부 변경 내용으로 인해 System.Runtime.Serialization.NetDataContractSerializer을 사용하여 .NET Framework 4.5로 직렬화된 ConcurrentDictionary<TKey,TValue> 개체를 .NET Framework 4.5.1 또는 .NET Framework 4.5.2에서 역직렬화할 수 없습니다. 반대 방향의 경우(.NET Framework 4.5.x로 직렬화하고 .NET Framework 4.5로 역직렬화하는 경우)는 작동합니다. 마찬가지로 .NET Framework 4.6으로 모든 4.x 버전 간 직렬화가 실행됩니다. 단일 버전의 .NET Framework로 직렬화 및 역직렬화하는 것은 영향을 받지 않습니다.

제안

.NET Framework 4.5와 .NET Framework 4.5.1/4.5.2 간에 System.Collections.Concurrent.ConcurrentDictionary<TKey,TValue>를 직렬화/역직렬화해야 하는 경우 System.Runtime.Serialization.DataContractSerializer와 같은 다른 직렬 변환기를 System.Runtime.Serialization.NetDataContractSerializer 대신 사용해야 합니다. 또는 .NET Framework 4.6에서 이 문제가 해결되므로 해당 버전의 .NET Framework로 업그레이드하여 해결할 수 있습니다.

속성
Scope
버전 4.5.1
형식 런타임

영향을 받는 API

API 분석을 통해 검색할 수 없습니다.

AppDomainSetup.DynamicBase는 더 이상 UseRandomizedStringHashAlgorithm에 의해 무작위화되지 않음

세부 정보

.NET Framework 4.6 이전에는, UseRandomizedStringHashAlgorithm이 앱의 구성 파일에서 활성화된 경우 애플리케이션 도메인 간 또는 프로세스 간에 DynamicBase 값이 무작위화되었습니다. .NET Framework 4.6부터 DynamicBase가 실행 중인 앱의 여러 인스턴스와 다른 앱 도메인 간에 안정적인 결과를 반환합니다. 동적 기반은 여전히 앱에 따라 다릅니다. 이 변경은 동일한 앱의 다른 인스턴스에 대한 임의의 이름 지정 요소만 제거합니다.

제안

UseRandomizedStringHashAlgorithm을 사용하도록 설정해도 DynamicBase가 무작위화되지 않습니다. 임의 기반이 필요한 경우 이 API를 통하지 않고 앱의 코드에서 생성해야 합니다.

속성
Scope Microsoft Edge
버전 4.6
형식 런타임

영향을 받는 API

인덱스 형식으로 모호성이 해결될 수 있는 경우 인덱서 속성에서 Attribute.GetCustomAttributes를 호출하면 더 이상 AmbiguousMatchException이 throw되지 않습니다.

세부 정보

.NET Framework 4.6 전에는 인덱스의 형식만 다른 속성과 다른 인덱서 속성에서 GetCustomAttribute(s)을 호출하면 System.Reflection.AmbiguousMatchException에 결과가 발생했습니다. .NET Framework 4.6부터 속성의 특성이 올바르게 반환됩니다.

제안

이제 GetCustomAttribute가 더 자주 작동한다는 것을 기억하십시오. 응용 프로그램이 이전에 System.Reflection.AmbiguousMatchException을 의존한 경우 리플렉션은 대신 다중 인덱서를 명시적으로 찾는 데 사용되어야 합니다.

속성
Scope Microsoft Edge
버전 4.6
형식 런타임

영향을 받는 API

프로파일러에서 COR_PRF_GC_ROOT_HANDLE을 열거하지 않습니다.

설명

.NET Framework v4.5.1에서 프로파일링 API RootReferences2()COR_PRF_GC_ROOT_HANDLE를 절대 반환하지 않습니다(대신 COR_PRF_GC_ROOT_OTHER로 반환). 이 문제는 .NET Framework 4.6부터 해결되었습니다.

제안 해결 방법

이 문제는 .NET Framework 4.6에서 해결되었으며, 해당 버전의 .NET Framework로 업그레이드하여 해결할 수 있습니다.

이름
Scope
버전 4.5.1
형식 런타임

영향을 받는 API

API 분석을 통해 검색할 수 없습니다.

ETW EventListeners는 명시적 키워드를 사용하는 공급자의 이벤트를 캡처하지 않습니다(예: TPL 공급자).

설명

빈 키워드 마스크가 있는 ETW EventListeners는 명시적 키워드를 사용하는 공급자의 이벤트를 제대로 캡처하지 않습니다. .NET Framework 4.5에서 TPL 공급자는 명시적 키워드를 제공하기 시작했고 이 문제를 트리거했습니다. .NET Framework 4.6에서 더 이상 이 문제가 발생하지 않도록 EventListeners 업데이트되었습니다.

제안 해결 방법

이 문제를 해결하려면 EnableEvents(EventSource, EventLevel) 호출을 "모든 키워드" 마스크가 EnableEvents(eventSource, level, unchecked((EventKeywords)0xFFFFffffFFFFffff))를 사용하도록 명시적으로 지정하는 EnableEvents 오버로드 호출로 바꿉니다.

또는 .NET Framework 4.6에서 이 문제가 수정되어 해당 버전의 .NET Framework로 업그레이드하여 해결할 수 있습니다.

이름
Scope Microsoft Edge
버전 4.5
형식 런타임

영향을 받는 API

이제 페르시아력이 회교식 양력 알고리즘을 사용합니다.

세부 정보

.NET Framework 4.6부터는 System.Globalization.PersianCalendar 클래스에서 회교식 양력 알고리즘을 사용합니다. .NET Framework 4.6부터 System.Globalization.PersianCalendar와 다른 달력 간의 날짜 변환은 1800년 전 또는 2023년 후에 대한 날짜에 대해(그레고리오력) 약간 다른 결과를 생성할 수 있습니다. 또한 PersianCalendar.MinSupportedDateTime은 이제 March 21, 0622 대신 March 22, 0622입니다.

제안

.NET Framework 4.6에서 PersianCalendar를 사용할 때 일부 이전 또는 늦은 날짜는 약간 다를 수 있습니다. 또한 다른 .NET Framework 버전에서 실행될 수 있는 프로세스 사이의 날짜를 직렬화할 때 PersianCalendar 날짜 문자열로 저장하지 마십시오(해당 값이 다를 수 있음).

속성
Scope
버전 4.6
형식 런타임

영향을 받는 API

더 이상 리플렉션 개체를 관리 코드에서 out-of-process DCOM 클라이언트로 전달할 수 없습니다

세부 정보

더이상 리플렉션 개체를 관리 코드에서 out-of-process DCOM 클라이언트로 전달할 수 없습니다. 다음 형식이 영향을 받습니다.

개체에 대한 IMarshal을 호출하면 E_NOINTERFACE를 반환합니다.

제안 해결 방법

비리플렉션 개체에서 작동하도록 마샬링 코드를 업데이트합니다.

Name
Scope
버전 4.6
형식 런타임

영향을 받는 API

기본 앱 도메인에 대한 TargetFrameworkName을 설정하지 않으면 더 이상 null을 기본값으로 하지 않습니다

세부 정보

이전에는 System.AppDomainSetup.TargetFrameworkName이 명시적으로 설정되지 않은 경우 기본 앱 도메인에서 null이었습니다. 4.6부터 기본 응용 프로그램 도메인에 대한 System.AppDomainSetup.TargetFrameworkName 속성은 TargetFrameworkAttribute에서 파생된 기본값을 가집니다(있는 경우). 기본이 아닌 앱 도메인은 명시적으로 재정의되지 않으면 해당 System.AppDomainSetup.TargetFrameworkName을 기본 응용 프로그램 도메인(4.6에서 기본값을 null로 하지 않는)에서 계속 상속합니다.

제안

코드는 기본값을 null로 하는 TargetFrameworkName에 종속하지 않도록 업데이트되어야 합니다. 이 속성이 계속 null을 평가해야 하는 경우 명시적으로 해당 값을 설정할 수 있습니다.

속성
Scope Microsoft Edge
버전 4.6
형식 런타임

영향을 받는 API

X509Certificate2.ToString(Boolean)은 .NET이 인증서를 처리할 수 없을 때 throw하지 않습니다

세부 정보

.NET Framework 4.5.2 및 이전 버전에서 verbose 매개 변수에 true가 전달되고 .Net Framework에서 지원하지 않는 인증서가 설치된 경우 이 메서드가 throw되었습니다. 이제 이 메서드는 성공하고 인증서의 액세스할 수 없는 부분을 생략하는 유효한 문자열을 반환합니다.

제안

X509Certificate2.ToString(Boolean)에 종속된 모든 코드는 API가 이전에 throw된 일부 경우에서 반환된 문자열이 일부 인증서 데이터(예: 퍼블릭 키, 프라이빗 키 및 확장명)를 제외하도록 업데이트되어야 합니다.

속성
Scope Microsoft Edge
버전 4.6
형식 런타임

영향을 받는 API

데이터

localhost로 확인된 SQL Server 데이터베이스에 대한 TCP/IP 연결 시도 실패

설명

.NET Framework 4.6 및 4.6.1에서 localhost로 확인된 SQL Server 데이터베이스에 대한 TCP/IP 연결 시도가 오류와 함께 실패합니다. SQL Server에 연결을 설정하는 동안 네트워크 관련 또는 인스턴스 관련 오류가 발생했습니다. 서버를 찾을 수 없거나 액세스할 수 없습니다. 인스턴스 이름이 올바르고 SQL Server가 원격 연결을 허용하도록 구성되어 있는지 확인합니다. (공급자: SQL 네트워크 인터페이스, 오류: 26-지정된 서버/인스턴스를 찾는 동안 오류가 발생했습니다) "

제안 해결 방법

이 문제가 해결되었으며 이전 동작은 .NET Framework 4.6.2에서 복원되었습니다. localhost로 확인된 SQL Server 데이터베이스에 연결하려면 .NET Framework 4.6.2로 업그레이드하세요.

이름
Scope
버전 4.6
형식 런타임

영향을 받는 API

API 분석을 통해 검색할 수 없습니다.

디버거

디버거에서 한 단계가 지날 때까지 null 병합기 값을 볼 수 없습니다.

설명

.NET Framework 4.5의 버그로 인해 64 비트 버전의 Framework에서 실행 중인 경우 할당 작업이 실행된 직후 null 병합 작업을 통해 설정된 값이 디버거에 표시되지 않습니다.

제안 해결 방법

디버거에서 한 단계 더 실행하면 로컬/필드의 값이 올바르게 업데이트됩니다. 또한 이 문제는 .NET Framework 4.6에서 해결되어 해당 버전의 Framework로 업그레이드하여 문제를 해결할 수 있습니다.

이름
Scope Microsoft Edge
버전 4.5
형식 런타임

영향을 받는 API

API 분석을 통해 검색할 수 없습니다.

네트워킹

ContentDisposition DateTimes는 약간 다른 문자열을 반환합니다

세부 정보

4.6부터 System.Net.Mime.ContentDisposition의 문자열 표현이 항상 System.DateTime의 시간 구성 요소를 두 자리로 표시하도록 업데이트되었습니다. 이것은 RFC822RFC2822를 준수하기 위함입니다. 이로 인해 4.6에서 ToString()은 처리 시간 요소 중 하나가 오전 10시 전인 시나리오에서 약간 다른 문자열을 반환합니다. ContentDispositions는 가끔 문자열로 변환하여 직렬화되므로 모든 ToString() 작업, 직렬화 또는 GetHashCode 호출이 검토되어야 합니다.

제안

다른 .NET Framework 버전에서 ContentDispositions의 문자열 표현이 서로 올바르게 비교할 것으로 기대하지 마십시오. 가능하면 비교를 수행하기 전에 문자열을 다시 ContentDispositions로 변환합니다.

속성
Scope
버전 4.6
형식 런타임

영향을 받는 API

Serialization

알 수 없는 형식의 경우 실패한 DataContract serialization에 대한 예외 메시지가 변경되었습니다.

세부 정보

.NET Framework 4.6부터 System.Runtime.Serialization.DataContractSerializer 또는 System.Runtime.Serialization.Json.DataContractJsonSerializer가 누락된 '알려진 형식'으로 인해 직렬화 또는 역직렬화에 실패하는 경우 지정된 예외 메시지는 명확해졌습니다.

제안

앱은 특정 예외 메시지를 사용하지 않아야 합니다. 앱이 이 메시지를 사용하는 경우 새 메시지를 사용하도록 업데이트하거나 예외 형식에서만 사용하도록 변경하는 것이 좋습니다.

속성
Scope Microsoft Edge
버전 4.6
형식 런타임

영향을 받는 API

설치 및 배포

.NET Framework 4.6 및 이후 버전의 제품 버전 관리 변경 내용

세부 정보

제품 버전 관리가 .NET Framework의 이전 릴리스와 특히, .NET Framework 4, 4.5, 4.5.1 및 4.5.2에서 변경되었습니다. 자세한 변경 내용은 다음과 같습니다.

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full 키에서 Version 항목의 값이 .NET Framework 4.6 및 해당 지점 릴리스의 경우 4.6.xxxxx로, .NET Framework 4.7 및 4.7.1의 경우 4.7.xxxxx로 변경되었습니다. .NET Framework 4.5, 4.5.1 및 4.5.2에서는 4.5.xxxxx 형식이었습니다.
  • .NET Framework 파일에 대한 파일 및 제품 버전 관리는 .NET Framework 4.6 및 해당 지점 릴리스의 경우 이전 버전 관리 체계 4.0.30319.x에서 4.6.X.0으로 변경되었으며, .NET Framework 4.7 및 4.7.1의 경우 4.7.X.0으로 변경되었습니다. 파일을 마우스 오른쪽 단추로 클릭한 후 파일의 속성을 보면 이러한 새 값을 확인할 수 있습니다.
  • 관리되는 어셈블리의 AssemblyFileVersionAttributeAssemblyInformationalVersionAttribute 특성은 .NET Framework 4.6 및 해당 지점 릴리스의 경우 4.6.X.0 형식, 그리고 .NET Framework 4.7 및 4.7.1의 경우 4.7.X.0 형식의 버전 값을 포함합니다.
  • .NET Framework 4.6, 4.6.1, 4.6.2, 4.7 및 4.7.1에서 Environment.Version 속성은 최종 버전 문자열 4.0.30319.42000을 반환합니다. .NET Framework 4, 4.5, 4.5.1 및 4.5.2에서는 버전 문자열을 4.0.30319.xxxxx 형식(예: "4.0.30319.18010")으로 반환합니다. Environment.Version 속성에서 새 종속성을 취하는 애플리케이션 코드는 권장하지 않습니다.

자세한 내용은 방법: 설치된 .NET Framework 버전 확인을 참조하세요.

제안

일반적으로 애플리케이션은 .NET Framework 및 설치 디렉터리 검색의 런타임 버전과 같은 항목 검색을 위한 권장 기술에 의존해야 합니다.

  • .NET Framework의 런타임 버전을 검색하려면 방법: 설치된 .NET Framework 버전 확인을 참조하세요.
  • .NET Framework의 설치 경로를 확인하려면HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full 키의 InstallPath 항목 값을 사용합니다.

중요

하위 키 이름은 .NET Framework Setup이 아니라 NET Framework Setup입니다.

  • .NET Framework 공용 언어 런타임에 대한 디렉터리 경로를 확인하려면 RuntimeEnvironment.GetRuntimeDirectory() 메서드를 호출합니다.
  • CLR 버전을 알아보려면 RuntimeEnvironment.GetSystemVersion() 메서드를 호출합니다. .NET Framework 4 및 해당 지점 릴리스(.NET Framework 4.5, 4.5.1, 4.5.2 및 .NET Framework 4.6, 4.6.1, 4.6.2, 4.7 및 4.7.1)의 경우 문자열 v4.0.30319를 반환합니다.
속성
Scope
버전 4.6
형식 런타임

영향을 받는 API

API 분석을 통해 검색할 수 없습니다.

.NET Framework 4.6은 레지스트리에 등록될 때 4.5.x.x 버전을 사용하지 않습니다.

세부 정보

예상할 수 있듯이 .NET Framework 4.6의 레지스트리(HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full)에 설정된 버전 키는 '4.5'가 아니라 '4.6'으로 시작합니다. 이러한 레지스트리 키를 사용하여 컴퓨터에 설치된 .NET Framework 버전을 확인하는 앱은 4.6이 가능한 새 버전이고 이전 4.5.x 릴리스와 호환된다는 것을 이해하도록 업데이트되어야 합니다.

제안

4.5 레지스트리 키를 검색하여 4.6을 수락하도록 .NET Framework 4.5 설치를 검색하는 앱을 업데이트합니다.

속성
Scope Microsoft Edge
버전 4.6
형식 런타임

영향을 받는 API

API 분석을 통해 검색할 수 없습니다.

WCF(Windows Communication Foundation)

SSL 보안 및 MD5 인증서 인증과 함께 NETTCP를 사용하는 WCF 서비스

세부 정보

.NET Framework 4.6은 WCF SSL 기본 프로토콜 목록에 TLS 1.1 및 TLS 1.2를 추가합니다. 클라이언트와 서버 컴퓨터 모두에 .NET Framework 4.6 이상이 설치되어 있으면 TLS 1.2가 협상에 사용됩니다. TLS 1.2는 MD5 인증서 인증을 지원하지 않습니다. 결과적으로, 고객이 MD5 인증서를 사용하는 경우 WCF 클라이언트는 WCF 서비스에 연결하지 못합니다.

제안

다음 중 하나를 수행하여 WCF 클라이언트가 WCF 서버에 연결할 수 있도록 함으로써 이 문제를 해결할 수 있습니다.

  • MD5 알고리즘을 사용 하지 않도록 인증서를 업데이트합니다. 이것은 권장되는 해결 방법입니다.
  • 소스 코드에서 바인딩이 동적으로 구성되지 않은 경우 TLS 1.1 또는 이전 버전의 프로토콜을 사용하도록 애플리케이션의 구성 파일을 업데이트합니다. 이렇게 하면 MD5 해시 알고리즘에서 인증서를 계속 사용할 수 있습니다.

경고

MD5 해시 알고리즘을 사용하는 인증서는 안전하지 않은 것으로 간주되므로 이 해결 방법은 권장되지 않습니다.

다음 구성 파일에 이 내용이 나와 있습니다.

<configuration>
  <system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding>
          <security mode= "None/Transport/Message/TransportWithMessageCredential" >
            <transport clientCredentialType="None/Windows/Certificate"
                       protectionLevel="None/Sign/EncryptAndSign"
                       sslProtocols="Ssl3/Tls1/Tls11">
            </transport>
          </security>
        </binding>
      </netTcpBinding>
    </bindings>
  </system.ServiceModel>
</configuration>

경고

MD5 해시 알고리즘을 사용하는 인증서는 안전하지 않은 것으로 간주되므로 이 해결 방법은 권장되지 않습니다.

속성
Scope
버전 4.6
형식 런타임

영향을 받는 API

API 분석을 통해 검색할 수 없습니다.

WPF(Windows Presentation Foundation)

DataGrid의 UnloadingRow 이벤트 처리기에서 WPF DataGrid의 선택된 항목에 액세스하면 NullReferenceException이 발생할 수 있습니다.

설명

.NET Framework 4.5의 버그로 인해 행 제거와 관련된 DataGrid 이벤트의 이벤트 처리기는 DataGridSystem.Windows.Controls.Primitives.Selector.SelectedItem 또는 System.Windows.Controls.Primitives.MultiSelector.SelectedItems 속성에 액세스하는 경우 System.NullReferenceException이 throw될 수 있습니다.

제안 해결 방법

이 문제는 .NET Framework 4.6에서 해결되었으며, 해당 버전의 .NET Framework로 업그레이드하여 해결할 수 있습니다.

이름
Scope
버전 4.5
형식 런타임

영향을 받는 API

항목이 선택된 WPF ListBox, ListView, 또는 DataGrid에서 Items.Refresh를 호출하면 요소에 중복 항목이 표시될 수 있습니다.

설명

.NET Framework 4.5에서 항목이 System.Windows.Controls.ListBox에 선택되어 있을 때 ListBox.Items.Refresh 코드를 호출하면 선택된 항목이 목록에 중복될 수 있습니다. 유사한 문제가 System.Windows.Controls.ListViewSystem.Windows.Controls.DataGrid에서 발생합니다. 이것은 .NET Framework 4.6에서 수정되었습니다.

제안 해결 방법

이 문제는 System.Windows.Data.CollectionView.Refresh()를 호출하기 전에 프로그래밍 방식으로 항목 선택을 취소하고 호출이 완료된 후에 다시 선택하여 해결할 수 있습니다. 또는 .NET Framework 4.6에서 이 문제가 수정되어 해당 버전의 .NET Framework로 업그레이드하여 해결할 수 있습니다.

범위
버전 4.5
Type 런타임

영향을 받는 API

CoerceIsSelectionBoxHighlighted

세부 정보

System.Windows.Controls.ComboBox 및 해당 데이터 소스와 관련된 작업의 특정 시퀀스는 System.NullReferenceException을 유발할 수 있습니다.

제안

가능한 경우 .NET Framework 4.6.2로 업그레이드하세요.

속성
Scope
버전 4.6
형식 런타임

영향을 받는 API

ObservableCollection<T>.Move의 ListBoxItem IsSelected 바인딩 문제

설명

선택한 항목을 사용하여 System.Windows.Controls.ListBox에 바인딩된 컬렉션에서 Move(Int32, Int32) 또는 MoveItem(Int32, Int32)을 호출하면 이후에 System.Windows.Controls.ListBox 항목을 선택하거나 선택 취소할 때 비정상적인 동작이 발생할 수 있습니다.

제안 해결 방법

Move(Int32, Int32) 대신 System.Collections.ObjectModel.Collection<T>.Remove(T)System.Collections.ObjectModel.Collection<T>.Insert(Int32, T)을 호출하면 이 문제가 해결됩니다. 또는 .NET Framework 4.6에서 이 문제가 수정되어 해당 버전의 .NET Framework로 업그레이드하여 해결할 수 있습니다.

이름
Scope
버전 4.5
형식 런타임

영향을 받는 API

WPF DataGrid 행 머리글에서 마우스 오른쪽 단추로 클릭하면 DataGrid 선택 항목이 변경

설명

여러 행을 선택한 상태에서 선택한 System.Windows.Controls.DataGrid 행 머리글을 마우스 오른쪽 단추로 클릭하면 System.Windows.Controls.DataGrid의 선택이 해당 행으로만 변경됩니다.

제안 해결 방법

이 문제는 .NET Framework 4.6에서 해결되었으며, 해당 버전의 .NET Framework로 업그레이드하여 해결할 수 있습니다.

이름
Scope Microsoft Edge
버전 4.5
형식 런타임

영향을 받는 API

WPF는 마우스를 고정할 수 있는 wisptis.exe 프로세스를 생성함

설명

마우스 입력을 고정할 수 있는 wisptis.exe가 생성되는 문제가 4.5.2에 도입되었습니다.

제안 해결 방법

이 문제에 대한 픽스는 .NET Framework 4.5.2(핫픽스 롤업 3026376)의 서비스 릴리스에서 사용하거나 .NET Framework 4.6으로 업그레이드하여 사용할 수 있습니다.

이름
Scope 주요함
버전 4.5.2
형식 런타임

영향을 받는 API

API 분석을 통해 검색할 수 없습니다.

텍스트 지원 컨트롤의 WPF 맞춤법 검사는 Windows 10에서 OS의 입력된 언어 목록에 없는 언어에 대해서는 작동하지 않습니다.

세부 정보

Windows 10에서 실행하는 경우 플랫폼 맞춤법 검사 기능은 입력된 언어 목록에 있는 언어에 대해서만 사용할 수 있으므로 맞춤법 검사기가 WPF 텍스트 지원 컨트롤에서 작동하지 않을 수 있습니다. Windows 10에서 사용 가능한 키보드 목록에 언어가 추가되면 Windows는 맞춤법 검사 기능을 제공하는 해당 FOD(Feature on Demand) 패키지를 자동으로 다운로드하여 설치합니다. 입력 언어 목록에 언어를 추가하면 맞춤법 검사기가 지원됩니다.

제안

Windows 10에서 맞춤법 검사가 작동하려면 맞춤법을 검사할 언어 또는 텍스트를 입력 언어로 추가해야 합니다.

속성
Scope Microsoft Edge
버전 4.6
형식 런타임

영향을 받는 API

API 분석을 통해 검색할 수 없습니다.

WPF 창이 단일 모니터 외부로 확장될 때 잘림 없이 렌더링됩니다.

세부 정보

Windows 8 이상에서 실행되는 .NET Framework 4.6에서, 다중 모니터 시나리오에서 전체 창이 단일 디스플레이를 벗어나 확장되는 경우 잘림 없이 렌더링됩니다. 이는 단일 디스플레이를 벗어나 확장된 WPF 창을 잘라 냈던 이전 버전의 .NET Framework와 다릅니다.

제안

이 동작(잘라 내는지 여부)은 애플리케이션 구성 파일의 <appSettings>에 있는 <EnableMultiMonitorDisplayClipping> 요소를 사용하거나 앱 시작 시 EnableMultiMonitorDisplayClipping 속성을 설정하여 명시적으로 설정할 수 있습니다.

속성
Scope
버전 4.6
형식 런타임

영향을 받는 API

API 분석을 통해 검색할 수 없습니다.

.NET Framework 4.6.1

도구

Contract.Invariant 또는 Contract.Requires<TException>은 String.IsNullOrEmpty를 순수형으로 간주하지 않습니다.

세부 정보

.NET Framework 4.6.1을 대상으로 하는 앱의 경우 Contract.Invariant의 고정 계약 또는 Requires의 사전 조건 계약이 String.IsNullOrEmpty 메서드를 호출하는 경우 재작성기에서 CC1036 컴파일러 경고: “메서드에서 [순수형] 없이 ‘System.String.IsNullOrWhteSpace(System.String)’ 메서드에 대한 호출이 감지되었습니다.”를 내보냅니다. 이는 컴파일러 오류가 아닌 컴파일러 경고입니다.

제안 해결 방법

이 동작에서는 GitHub 문제 #339가 해결되었습니다. 이 경고를 제거하려면 GitHub에서 코드 계약 도구에 대한 소스 코드를 다운로드 및 컴파일할 수 있습니다. 다운로드 정보는 페이지 하단에서 찾을 수 있습니다.

이름
Scope
버전 4.6.1
형식 런타임

영향을 받는 API

WPF(Windows Presentation Foundation)

픽셀 높이가 다른 항목을 포함하는 단순 목록 항목 스크롤

설명

System.Windows.Controls.ItemsControl이 가상화(IsVirtualizing=true) 및 항목 스크롤(ScrollUnit=Item)을 사용하여 컬렉션을 표시하고 해당 높이(픽셀)가 인접 항목과 다른 항목을 표시하기 위해 컨트롤이 스크롤되는 경우 System.Windows.Controls.VirtualizingStackPanel은 컬렉션의 모든 항목을 반복합니다. 이 반복 중에는 UI가 응답하지 않습니다. 이 반복은 이전 .NET Framework 릴리스에서도 다른 상황에서 발생합니다. 예를 들어 픽셀 높이가 다른 항목이 나타나는 경우 픽셀 스크롤할 때(ScrollUnit=Pixel) 및 하위 항목 수가 인접 항목과 다른 항목이 나타나는 경우 계층적 데이터를 항목 스크롤할 때(예: 그룹화가 사용되는 System.Windows.Controls.TreeView 또는 System.Windows.Controls.ItemsControl) 발생합니다. 항목 스크롤을 사용하고 픽셀 높이가 다른 경우 계층 구조 데이터의 레이아웃에서 버그를 수정하기 위해 .NET Framework 4.6.1에 반복이 도입되었습니다. 데이터가 단일 구조(계층 구조 아님)인 경우 반복이 필요하지 않으며 이 경우 .NET Framework 4.6.2가 반복을 수행하지 않습니다.

제안 해결 방법

반복이 .NET Framework 4.6.1에서 발생하지만 이전 릴리스에서는 발생하지 않는 경우, 즉, System.Windows.Controls.ItemsControl이 항목의 픽셀 높이가 서로 다른 항목의 단순 목록을 항목 스크롤하는 경우 다음과 같은 두 가지 방법으로 해결할 수 있습니다.

  • .NET Framework 4.6.2를 설치합니다.
  • .NET Framework 4.6.1용 핫픽스 HR 1605를 설치합니다.
이름
Scope
버전 4.6.1
형식 런타임

영향을 받는 API

WPF 맞춤법 검사기에 의해 throw된 ObjectDisposedException

설명

WPF 애플리케이션은 애플리케이션 종료 중에 맞춤법 검사기에서 throw된 System.ObjectDisposedException으로 인해 때때로 크래시됩니다. 이는 .NET Framework 4.7 WPF에서 예외를 제대로 처리하여 애플리케이션이 더 이상 부정적인 영향을 받지 않도록 함으로써 해결되었습니다. 디버거에서 실행 중인 애플리케이션에서는 경우에 따라 첫째 예외만 계속 확인될 수 있습니다.

제안 해결 방법

NET Framework 4.7로 업그레이드

이름
Scope Microsoft Edge
버전 4.6.1
형식 런타임

영향을 받는 API

API 분석을 통해 검색할 수 없습니다.

예기치 않은 방식으로 WPF 맞춤법 검사가 실패

설명

여기에는 WPF 맞춤법 검사기의 여러 문제가 포함됩니다.

  • WPF 맞춤법 검사기가 때때로 System.Runtime.InteropServices.COMException을 throw
  • '다른 사용자로 실행'을 사용하여 애플리케이션을 시작하면 WPF 맞춤법 검사기가 UnauthorizedAccessException과 함께 실패
  • WPF 맞춤법 검사기가 독일어의 'Hausnummer'와 같은 복합어의 맞춤법 오류를 잘못 식별합니다.

제안 해결 방법

문제 #1 - .NET Framework 4.6.2에서 해결되었습니다. 문제 #2 - '다른 사용자로 실행'을 사용하여 애플리케이션을 시작할 때 WPF 맞춤법 검사기가 더 이상 지원되지 않습니다. .NET Framework 4.6.2부터 이러한 방식으로 시작된 애플리케이션이 더 이상 예기치 않게 크래시되지 않습니다. - 대신 맞춤법 검사기가 자동으로 비활성화됩니다. 문제 #3 - .NET Framework 4.6.2에서 해결되었습니다.

이름
Scope Microsoft Edge
버전 4.6.1
형식 런타임

영향을 받는 API

API 분석을 통해 검색할 수 없습니다.

.NET Framework 4.6.2

데이터

localhost로 확인된 SQL Server 데이터베이스에 대한 TCP/IP 연결 시도 실패

설명

.NET Framework 4.6 및 4.6.1에서 localhost로 확인된 SQL Server 데이터베이스에 대한 TCP/IP 연결 시도가 오류와 함께 실패합니다. SQL Server에 연결을 설정하는 동안 네트워크 관련 또는 인스턴스 관련 오류가 발생했습니다. 서버를 찾을 수 없거나 액세스할 수 없습니다. 인스턴스 이름이 올바르고 SQL Server가 원격 연결을 허용하도록 구성되어 있는지 확인합니다. (공급자: SQL 네트워크 인터페이스, 오류: 26-지정된 서버/인스턴스를 찾는 동안 오류가 발생했습니다) "

제안 해결 방법

이 문제가 해결되었으며 이전 동작은 .NET Framework 4.6.2에서 복원되었습니다. localhost로 확인된 SQL Server 데이터베이스에 연결하려면 .NET Framework 4.6.2로 업그레이드하세요.

이름
Scope
버전 4.6
형식 런타임

영향을 받는 API

API 분석을 통해 검색할 수 없습니다.

Azure SQL 데이터베이스에 대한 연결 풀 차단 기간이 제거되었습니다.

설명

.NET Framework 4.6.2부터는 알려진 Azure SQL 데이터베이스(*.database.windows.net, *.database.chinacloudapi.cn, *.database.usgovcloudapi.net, *.database.cloudapi.de)에 대한 연결 열기 요청의 경우 연결 풀 차단이 제거되고 연결 열기 오류가 캐시되지 않습니다. 연결 열기 요청 다시 시도는 일시적인 연결 오류 발생 직후에 수행됩니다. 이 변경은 Azure SQL 데이터베이스에 대한 연결 열기 시도를 즉시 다시 시도하도록 하여 클라우드 지원 응용 프로그램의 성능을 향상시킵니다. 다른 모든 연결 시도의 경우 연결 풀 차단 기간이 계속 적용됩니다.

.NET Framework 4.6.1 및 이전 버전에서 데이터베이스에 연결할 때 응용 프로그램에 일시적인 연결 오류가 발생할 경우, 연결 풀이 오류를 캐시하고 5초에서 1분 동안 다시 throw하기 때문에 연결 시도는 신속하게 다시 시도될 수 없습니다. 자세한 내용은 SQL Server 연결 풀링(ADO.NET)을 참조하세요. 이 동작은 일반적으로 몇 초 내에 복구되는 일시적인 오류가 자주 발생하는 Azure SQL 데이터베이스에 대한 연결 문제가 있습니다. 연결 풀 차단 기능은 데이터베이스를 사용할 수 있고 앱을 몇 초 안에 렌더링해야 하더라도 광범위한 기간 동안 응용 프로그램 데이터베이스에 연결할 수 없다는 것을 의미합니다.

제안 해결 방법

이 동작이 필요 없는 경우 .NET Framework 4.6.2에서 새로 추가된 System.Data.SqlClient.SqlConnectionStringBuilder.PoolBlockingPeriod 속성을 설정하여 연결 풀 차단 기간을 구성할 수 있습니다. 속성의 값은 다음의 세 값 중 하나를 사용할 수 있는 System.Data.SqlClient.PoolBlockingPeriod 열거형의 멤버입니다.

System.Data.SqlClient.SqlConnectionStringBuilder.PoolBlockingPeriod 속성을 AlwaysBlock으로 설정하여 이전 동작을 복원할 수 있습니다.

속성
Scope
버전 4.6.2
형식 런타임

영향을 받는 API

전역화

유니코드 표준 버전 8.0 범주가 이제 지원됨

세부 정보

.NET Framework 4.6.2에서 유니코드 데이터가 유니코드 표준 버전 6.3에서 8.0으로 업그레이드되었습니다. .NET Framework 4.6.2에서 유니코드 문자 범주를 요청할 때 일부 결과가 이전 .NET Framework 버전의 결과와 일치하지 않을 수 있습니다. 이러한 변경은 주로 체로키어 음절 및 New Tai Lue 모음 기호 및 성조 표시에 영향을 미칩니다.

제안

코드를 검토하고 하드 코드된 유니코드 문자 범주에 종속된 논리를 제거/변경해야 합니다.

속성
Scope
버전 4.6.2
형식 런타임

영향을 받는 API

보안

RSACng 및 DSACng는 부분 신뢰 시나리오에서 다시 사용할 수 있습니다.

세부 정보

CngLightup(System.Security.Cryptography.Xml.EncryptedXml과 같이 몇 가지 더 높은 수준의 암호화 API에서 사용) 및 System.Security.Cryptography.RSACng은(경우에 따라) 완전 신뢰에 의존합니다. 여기에 SecurityPermissionFlag.UnmanagedCode 권한을 어설션하지 않는 P/Invoke가 포함되며 System.Security.Cryptography.CngKey에는 SecurityPermissionFlag.UnmanagedCode에 대한 권한 요구 사항이 있는 코드 경로가 포함됩니다. .NET Framework 4.6.2부터는 가능하면 CngLightup을 사용하여 System.Security.Cryptography.RSACng으로 전환되었습니다. 결과적으로 System.Security.Cryptography.Xml.EncryptedXml을 성공적으로 사용한 부분 신뢰 앱이 실패하고 SecurityException 예외를 throw합니다. 이 변경은 필요한 어설션을 추가하여 CngLightup을 사용하는 모든 함수에 필요한 권한을 부여합니다.

제안

.NET Framework 4.6.2에서 이러한 변경 내용이 부분 신뢰 앱에 부정적인 영향을 주는 경우 .NET Framework 4.7.1로 업그레이드합니다.

속성
Scope Microsoft Edge
버전 4.6.2
형식 런타임

영향을 받는 API

RSACng.VerifyHash가 이제 확인 실패에 대해 False를 반환합니다.

세부 정보

.NET Framework 4.6.2부터 서명 자체의 형식이 잘못된 경우 이 메서드는 False를 반환합니다. 이제 모든 확인 실패에 대해 false를 반환합니다. .NET Framework 4.6 및 4.6.1에서는 서명 자체의 형식이 잘못된 경우 메서드에서 System.Security.Cryptography.CryptographicException을 throw합니다.

제안

유효성 검사가 실패하고 이 메서드가 False를 반환하는 경우에는 System.Security.Cryptography.CryptographicException 처리에 따라 실행되는 코드를 대신 실행해야 합니다.

속성
Scope
버전 4.6.2
형식 런타임

영향을 받는 API

SignedXml 및 EncryptedXml 주요 변경 내용

세부 정보

.NET Framework 4.6.2에서는 System.Security.Cryptography.Xml.SignedXmlSystem.Security.Cryptography.Xml.EncryptedXml의 보안 수정으로 인해 런타임 동작이 달라집니다. 다음은 그 예입니다.

  • 문서에 동일한 id 특성을 가진 요소가 여러 개 있고 서명에서 해당 요소 중 하나를 서명 루트로 사용하는 경우, 이제는 문서가 잘못된 것으로 간주됩니다.
  • 참조에서 비표준 XPath 변환 알고리즘을 사용하는 문서는 현재 잘못된 것으로 간주됩니다.
  • 참조에서 비표준 XSLT 변환 알고리즘을 사용하는 문서는 현재 잘못된 것으로 간주합니다.
  • 외부 리소스 분리 서명을 사용하는 모든 프로그램은 그렇게 할 수 없습니다.

제안 해결 방법

개발자는 XmlDsigXsltTransformXmlDsigXsltTransformTransform에서 파생된 형식의 사용을 검토해야 합니다. 문서 수신기가 이러한 사용을 처리하지 못할 수도 있기 때문입니다.

속성
Scope
버전 4.6.2
형식 런타임

영향을 받는 API

WCF(Windows Communication Foundation)

WCF TransportDefaults에서 Ssl3 제거

세부 정보

전송 보안 및 자격 증명 유형의 인증서를 지원하는 NetTcp를 사용할 경우 SSL 3 프로토콜은 더 이상 보안 연결을 협상하는 데 사용되는 기본 프로토콜이 아닙니다. 대부분의 경우 TLS 1.0이 항상 NetTcp에 대한 프로토콜 목록에 포함되어 있으므로 기존 앱에는 영향을 주지 않습니다. 모든 기존 클라이언트에서는 TLS 1.0 이상을 사용하여 연결을 협상할 수 있습니다.

제안 해결 방법

Ssl3이 필요한 경우 다음 구성 메커니즘 중 하나를 사용하여 협상된 프로토콜 목록에 Ssl3을 추가합니다.

속성
Scope Microsoft Edge
버전 4.6.2
형식 런타임

영향을 받는 API

WPF(Windows Presentation Foundation)

모든 자식 컨트롤에 영향을 주는 TextBlock 컨트롤의 부모 IsEnabled 속성 변경

세부 정보

.NET Framework 4.6.2부터 System.Windows.Controls.TextBlock 컨트롤의 부모 System.Windows.UIElement.IsEnabled 속성을 변경하면 System.Windows.Controls.TextBlock 컨트롤의 모든 자식 컨트롤(예: 하이퍼링크 및 단추)에 영향이 있습니다. .NET Framework 4.6.1 및 이전 버전에서 System.Windows.Controls.TextBlock 내부의 컨트롤은 항상 System.Windows.Controls.TextBlock 부모의 System.Windows.UIElement.IsEnabled 속성 상태를 반영하지 않습니다.

제안

없음 이 변경은 System.Windows.Controls.TextBlock 컨트롤 내부에 있는 컨트롤의 정상적인 동작을 따릅니다.

속성
Scope
버전 4.6.2
형식 런타임

영향을 받는 API

CoerceIsSelectionBoxHighlighted

세부 정보

System.Windows.Controls.ComboBox 및 해당 데이터 소스와 관련된 작업의 특정 시퀀스는 System.NullReferenceException을 유발할 수 있습니다.

제안

가능한 경우 .NET Framework 4.6.2로 업그레이드하세요.

속성
Scope
버전 4.6
형식 런타임

영향을 받는 API

DataGridCellsPanel.BringIndexIntoView가 ArgumentOutOfRangeException을 throw합니다.

세부 정보

ScrollIntoView(Object)는 열 가상화가 활성화되었지만 열 너비가 아직 결정되지 않았을 때 비동기적으로 작동합니다. 비동기 작업이 실행되기 전에 열이 제거되면 System.ArgumentOutOfRangeException이 발생할 수 있습니다.

제안

다음 중 하나:

  • NET Framework 4.7로 업그레이드합니다.
  • .NET Framework 4.6.2에 대한 최신 서비스 패치를 설치합니다.
  • ScrollIntoView(Object)에 대한 비동기 응답이 완료될 때까지 열이 제거되지 않도록 합니다.
속성
Scope Microsoft Edge
버전 4.6.2
형식 런타임

영향을 받는 API

가로 스크롤 및 가상화

세부 정보

이 변경 내용은 주 스크롤 방향의 직각 방향으로 자체 가상화를 수행하는 System.Windows.Controls.ItemsControl에 적용됩니다(주요 예제는 EnableColumnVirtualization="True"를 사용하는 System.Windows.Controls.DataGrid임). 특정 가로 스크롤 작업의 결과는 보다 직관적이고 비교 가능한 세로 작업의 결과와 좀 더 유사한 결과를 생성하도록 변경되었습니다.

작업으로는 가로 스크롤 막대를 마우스 오른쪽 단추로 클릭할 때 표시되는 메뉴의 이름을 사용하기 위한 "여기로 스크롤" 및 "오른쪽 가장자리"가 있습니다. 이 두 작업 모두에서는 후보 오프셋을 컴퓨팅하고 SetHorizontalOffset(Double)을 호출합니다.

새롭게 가상화가 취소된 콘텐츠에서는 System.Windows.Controls.Primitives.IScrollInfo.ExtentWidth의 값이 변경되었으므로 새 오프셋으로 스크롤한 후에 "여기" 또는 "오른쪽 가장자리"의 개념이 변경되었을 수 있습니다.

.NET Framework 4.6.2 이전에는 "여기" 또는 "오른쪽 가장자리"는 더 이상 아닐 수 있지만 스크롤 작업을 수행하면 후보 오프셋이 사용됩니다. 결과적으로 그림과 같은 스크롤 상자 "바운스"와 같은 결과가 나타납니다. System.Windows.Controls.DataGrid에서 ExtentWidth=1000 및 Width=200이라고 가정합니다. “오른쪽 가장자리”로 스크롤하면 후보 오프셋 1000 - 200 = 800이 사용됩니다. 해당 오프셋으로 스크롤하는 동안 새 열의 가상화가 취소됩니다. 열이 매우 넓어서 System.Windows.Controls.Primitives.IScrollInfo.ExtentWidth가 2000으로 변경된다고 가정하겠습니다. 스크롤은 HorizontalOffset=800에서 종료되며 엄지는 스크롤 막대 가운데 근처로 다시 "바운스"됩니다. 이 위치에 해당하는 값은 800/2000=40%입니다.

이 변경으로 이 상황이 발생할 경우 새 후보 오프셋을 다시 계산하고 다시 시도하게 됩니다. (세로 스크롤도 이미 이와 같이 작동합니다.)

이 변경으로 인해 최종 사용자가 오프셋을 더욱 쉽게 예측할 수 있는 직관적인 환경이 생성됩니다. 하지만 가로 스크롤 이후 System.Windows.Controls.Primitives.IScrollInfo.HorizontalOffset(최종 사용자가 호출하거나 명시적 SetHorizontalOffset(Double) 호출을 통해 호출됨)의 정확한 값에 따라 동작이 달라지는 앱에도 영향을 줄 수 있습니다.

제안 해결 방법

System.Windows.Controls.Primitives.IScrollInfo.HorizontalOffset의 예측 값을 사용하는 앱의 경우 가상화 취소로 인해 System.Windows.Controls.Primitives.IScrollInfo.ExtentWidth가 변경될 수 있는 가로 스크롤 이후 실제 값과 System.Windows.Controls.Primitives.IScrollInfo.ExtentWidth의 값을 페치하도록 변경해야 합니다.

속성
Scope
버전 4.6.2
형식 런타임

영향을 받는 API

Items.Clear는 SelectedItems에서 중복 항목을 제거하지 않습니다.

설명

선택기(다중 항목 선택 가능)의 System.Windows.Controls.Primitives.MultiSelector.SelectedItems 컬렉션에 중복 항목이 있을 경우 동일한 항목이 두 번 이상 나타납니다. 데이터 소스에서 해당 항목을 제거하면(예: Items.Clear를 호출하여) System.Windows.Controls.Primitives.MultiSelector.SelectedItems 컬렉션에서 제거할 수 없으며, 첫 번째 인스턴스만 제거됩니다. 또한 System.Windows.Controls.Primitives.MultiSelector.SelectedItems에 더 이상 데이터 소소에 없는 항목이 있기 때문에, System.Windows.Controls.Primitives.MultiSelector.SelectedItems(예: SelectedItems.Clear())을 계속 사용하면 System.ArgumentException과 같은 문제가 발생할 수 있습니다.

제안 해결 방법

가능한 경우 .NET Framework 4.6.2로 업그레이드하세요.

이름
Scope
버전 4.5
형식 런타임

영향을 받는 API

픽셀 높이가 다른 항목을 포함하는 단순 목록 항목 스크롤

설명

System.Windows.Controls.ItemsControl이 가상화(IsVirtualizing=true) 및 항목 스크롤(ScrollUnit=Item)을 사용하여 컬렉션을 표시하고 해당 높이(픽셀)가 인접 항목과 다른 항목을 표시하기 위해 컨트롤이 스크롤되는 경우 System.Windows.Controls.VirtualizingStackPanel은 컬렉션의 모든 항목을 반복합니다. 이 반복 중에는 UI가 응답하지 않습니다. 이 반복은 이전 .NET Framework 릴리스에서도 다른 상황에서 발생합니다. 예를 들어 픽셀 높이가 다른 항목이 나타나는 경우 픽셀 스크롤할 때(ScrollUnit=Pixel) 및 하위 항목 수가 인접 항목과 다른 항목이 나타나는 경우 계층적 데이터를 항목 스크롤할 때(예: 그룹화가 사용되는 System.Windows.Controls.TreeView 또는 System.Windows.Controls.ItemsControl) 발생합니다. 항목 스크롤을 사용하고 픽셀 높이가 다른 경우 계층 구조 데이터의 레이아웃에서 버그를 수정하기 위해 .NET Framework 4.6.1에 반복이 도입되었습니다. 데이터가 단일 구조(계층 구조 아님)인 경우 반복이 필요하지 않으며 이 경우 .NET Framework 4.6.2가 반복을 수행하지 않습니다.

제안 해결 방법

반복이 .NET Framework 4.6.1에서 발생하지만 이전 릴리스에서는 발생하지 않는 경우, 즉, System.Windows.Controls.ItemsControl이 항목의 픽셀 높이가 서로 다른 항목의 단순 목록을 항목 스크롤하는 경우 다음과 같은 두 가지 방법으로 해결할 수 있습니다.

  • .NET Framework 4.6.2를 설치합니다.
  • .NET Framework 4.6.1용 핫픽스 HR 1605를 설치합니다.
이름
Scope
버전 4.6.1
형식 런타임

영향을 받는 API

RibbonGroup 배경은 지역화된 빌드에서 투명하게 설정됩니다.

세부 정보

지역화된 빌드의 System.Windows.Controls.Ribbon.RibbonGroup 배경은 항상 투명한 브러시로 그려져서 UI 환경이 저하되었습니다. 이 문제는 .NET Framework 4.7 WPF 픽스에서 올바른 브러시가 선택되도록 System.Windows.Controls.Ribbon.RibbonGroup의 지역화된 리소스를 업데이트하여 해결되었습니다.

제안 해결 방법

NET Framework 4.7로 업그레이드

이름
Scope Microsoft Edge
버전 4.6.2
형식 런타임

영향을 받는 API

API 분석을 통해 검색할 수 없습니다.

예기치 않은 방식으로 WPF 맞춤법 검사가 실패

설명

여기에는 WPF 맞춤법 검사기의 여러 문제가 포함됩니다.

  • WPF 맞춤법 검사기가 때때로 System.Runtime.InteropServices.COMException을 throw
  • '다른 사용자로 실행'을 사용하여 애플리케이션을 시작하면 WPF 맞춤법 검사기가 UnauthorizedAccessException과 함께 실패
  • WPF 맞춤법 검사기가 독일어의 'Hausnummer'와 같은 복합어의 맞춤법 오류를 잘못 식별합니다.

제안 해결 방법

문제 #1 - .NET Framework 4.6.2에서 해결되었습니다. 문제 #2 - '다른 사용자로 실행'을 사용하여 애플리케이션을 시작할 때 WPF 맞춤법 검사기가 더 이상 지원되지 않습니다. .NET Framework 4.6.2부터 이러한 방식으로 시작된 애플리케이션이 더 이상 예기치 않게 크래시되지 않습니다. - 대신 맞춤법 검사기가 자동으로 비활성화됩니다. 문제 #3 - .NET Framework 4.6.2에서 해결되었습니다.

이름
Scope Microsoft Edge
버전 4.6.1
형식 런타임

영향을 받는 API

API 분석을 통해 검색할 수 없습니다.