.NET Framework 4.6.x'e geçiş için çalışma zamanı değişiklikleri

Bu makalede .NET Framework 4.6, 4.6.1 ve 4.6.2'de sunulan uygulama uyumluluğu sorunları listelenmektedir.

.NET Framework 4.6

ASP.NET

AllowCustomPaging değeri true olarak ayarlanmış GridViews, görünümün son sayfasından ayrılırken PageIndexChanging olayını başlatabilir

Ayrıntılar

.NET Framework 4.5'teki bir hata bazen etkinleştirilenler System.Web.UI.WebControls.GridView.AllowCustomPagingiçin System.Web.UI.WebControls.GridViewtetiklenmemeye neden oluyorSystem.Web.UI.WebControls.GridView.PageIndexChanging.

Öneri

Bu sorun .NET Framework 4.6'da düzeltilmiştir ve .NET Framework'ün bu sürümüne yükseltilerek giderilebilir. Geçici bir çözüm olarak, uygulama bu koşullara isabet edecek herhangi Page_Load bir üzerinde açık bir BindGrid yapabilir ( System.Web.UI.WebControls.GridView son sayfadadır ve LastSystem.Web.UI.WebControls.GridView.PageSize seçeneğinden System.Web.UI.WebControls.GridView.PageSizefarklıdır). Alternatif olarak, bu senaryo sorunu göstermediğinden uygulama disk belleğine izin verecek şekilde değiştirilebilir (özel disk belleği yerine).

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4,5
Tür Çalışma Zamanı

Etkilenen API’ler

Temel

.NET Framework 4.5'te NetDataContractSerializer ile seri hale getirilmiş bir ConcurrentDictionary, .NET Framework 4.5.1 veya 4.5.2 tarafından seri durumdan çıkarılamaz

Ayrıntılar

Türündeki iç değişiklikler nedeniyle, ConcurrentDictionary<TKey,TValue> kullanılarak .NET Framework 4.5 ile seri hale getirilen nesneler .NET Framework 4.5.1 System.Runtime.Serialization.NetDataContractSerializer veya .NET Framework 4.5.2'de seri durumdan çıkarılamaz. Diğer yönde hareket etme (.NET Framework 4.5.x ile seri hale getirme ve .NET Framework 4.5 ile seri durumdan çıkarma) çalışır. Benzer şekilde, tüm 4.x sürümleri arası serileştirme .NET Framework 4.6 ile çalışır. .NET Framework'ün tek bir sürümüyle seri hale getirme ve seri durumdan çıkarma etkilenmez.

Öneri

.NET Framework 4.5 ile .NET Framework 4.5.1/4.5.2 arasında seri System.Collections.Concurrent.ConcurrentDictionary<TKey,TValue> hale getirmek ve seri durumdan çıkarmak gerekiyorsa, yerine gibi System.Runtime.Serialization.DataContractSerializer farklı bir seri hale getirici kullanılmalıdır System.Runtime.Serialization.NetDataContractSerializer. Alternatif olarak, bu sorun .NET Framework 4.6'da giderildiğinden, .NET Framework'ün bu sürümüne yükseltilerek çözülebilir.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.5.1
Tür Çalışma Zamanı

Etkilenen API’ler

API analizi aracılığıyla algılanamaz.

AppDomainSetup.DynamicBase artık UseRandomizedStringHashAlgorithm tarafından rastgele değil

Ayrıntılar

.NET Framework 4.6'nın öncesinde, DynamicBase useRandomizedStringHashAlgorithm uygulamanın yapılandırma dosyasında etkinleştirildiyse değeri uygulama etki alanları arasında veya işlemler arasında rastgele oluşturulabilirdi. .NET Framework 4.6 sürümünden başlayarak, DynamicBase çalışan bir uygulamanın farklı örnekleri arasında ve farklı uygulama etki alanları arasında kararlı bir sonuç döndürür. Dinamik temeller farklı uygulamalar için yine de farklılık gösterir; bu değişiklik yalnızca aynı uygulamanın farklı örnekleri için rastgele adlandırma öğesini kaldırır.

Öneri

Etkinleştirmenin UseRandomizedStringHashAlgorithm rastgele olarak sonuçlanmayacağını DynamicBase unutmayın. Rastgele bir temel gerekiyorsa, bu API yerine uygulamanızın kodunda üretilmesi gerekir.

Veri Akışı Adı Değer
Kapsam Edge
Sürüm 4.6
Tür Çalışma Zamanı

Etkilenen API’ler

Bir dizin oluşturucu özelliğindeki Attribute.GetCustomAttributes çağrısı, belirsizlik dizinin türüne göre çözümlenebiliyorsa artık AmbiguousMatchException oluşturmuyor

Ayrıntılar

.NET Framework 4.6'dan önce, başka bir özellikten yalnızca dizinin türüne göre farklı olan bir dizin oluşturucu özelliğinde çağrılması GetCustomAttribute(s) bir System.Reflection.AmbiguousMatchExceptionile sonuçlanır. .NET Framework 4.6 sürümünden başlayarak özelliğin öznitelikleri doğru şekilde döndürülür.

Öneri

GetCustomAttribute(lar) öğesinin artık daha sık çalışacağını unutmayın. Bir uygulama daha önce öğesine bağlıysa System.Reflection.AmbiguousMatchException, yansıma artık açıkça birden çok dizin oluşturucu aramak için kullanılmalıdır.

Veri Akışı Adı Değer
Kapsam Edge
Sürüm 4.6
Tür Çalışma Zamanı

Etkilenen API’ler

COR_PRF_GC_ROOT_HANDLEs profil oluşturucular tarafından numaralandırılmıyor

Ayrıntılar

.NET Framework v4.5.1'de profil oluşturma API'sinin RootReferences2() hatalı bir şekilde hiçbir zaman döndürmediği COR_PRF_GC_ROOT_HANDLE (bunun yerine döndürülür COR_PRF_GC_ROOT_OTHER ). Bu sorun .NET Framework 4.6'nın başlangıcında düzeltildi.

Öneri

Bu sorun .NET Framework 4.6'da düzeltilmiştir ve .NET Framework'ün bu sürümüne yükseltilerek giderilebilir.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.5.1
Tür Çalışma Zamanı

Etkilenen API’ler

API analizi aracılığıyla algılanamaz.

ETW EventListeners, açık anahtar sözcüklerle (TPL sağlayıcısı gibi) sağlayıcılardan olay yakalamaz

Ayrıntılar

Boş anahtar sözcük maskesine sahip ETW EventListeners, açık anahtar sözcüklerle sağlayıcılardan gelen olayları düzgün yakalamaz. .NET Framework 4.5'te, TPL sağlayıcısı açık anahtar sözcükler sağlamaya başladı ve bu sorunu tetikledi. .NET Framework 4.6'da EventListeners artık bu soruna sahip olmayacak şekilde güncelleştirildi.

Öneri

Bu soruna geçici bir çözüm olarak, çağrısı EnableEvents(EventSource, EventLevel) yerine EnableEvents aşırı yüklemesine yapılan ve kullanılacak "herhangi bir anahtar sözcük" maskesini açıkça belirten çağrılarla değiştirin: EnableEvents(eventSource, level, unchecked((EventKeywords)0xFFFFffffFFFFffff)).

Alternatif olarak, bu sorun .NET Framework 4.6'da düzeltilmiştir ve .NET Framework'ün bu sürümüne yükseltilerek giderilebilir.

Veri Akışı Adı Değer
Kapsam Edge
Sürüm 4,5
Tür Çalışma Zamanı

Etkilenen API’ler

Fars takvimi artık Hicri güneş algoritmasını kullanıyor

Ayrıntılar

.NET Framework 4.6'dan başlayarak sınıfı Hicri System.Globalization.PersianCalendar güneş algoritmasını kullanır. ve diğer takvimler arasında System.Globalization.PersianCalendar tarihlerin dönüştürülmesi, 1800 veya 2023'ten (Gregoryen) önceki tarihler için .NET Framework 4.6'dan başlayarak biraz farklı bir sonuç üretebilir. Ayrıca, PersianCalendar.MinSupportedDateTime artık March 22, 0622 yerine March 21, 0622olur.

Öneri

.NET Framework 4.6'da PersianCalendar kullanılırken bazı erken veya geç tarihlerin biraz farklı olabileceğini unutmayın. Ayrıca, farklı .NET Framework sürümlerinde çalışabilen işlemler arasında tarihleri seri hale getirirken, bunları FarsçaCalendar tarih dizeleri olarak depolamayın (çünkü bu değerler farklı olabilir).

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.6
Tür Çalışma Zamanı

Etkilenen API’ler

Düşünceler ion nesneleri artık yönetilen koddan işlem dışı DCOM istemcilerine geçirilemiyor

Ayrıntılar

Düşünceler ion nesneleri artık yönetilen koddan işlem dışı DCOM istemcilerine geçirilemiyor. Aşağıdaki türler etkilenir:

nesnesi için çağrısı IMarshal döndürür E_NOINTERFACE.

Öneri

Hazırlama kodunu yansıma olmayan nesnelerle çalışacak şekilde güncelleştirin.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.6
Tür Çalışma Zamanı

Etkilenen API’ler

Varsayılan uygulama etki alanı için TargetFrameworkName artık ayarlanmadıysa null olarak ayarlanmaz

Ayrıntılar

System.AppDomainSetup.TargetFrameworkName açıkça ayarlanmadığı sürece varsayılan uygulama etki alanında önceden nulltı. 4.6'dan başlayarak, System.AppDomainSetup.TargetFrameworkName varsayılan uygulama etki alanının özelliği TargetFrameworkAttribute'tan türetilmiş bir varsayılan değere sahip olur (varsa). Varsayılan olmayan uygulama etki alanları, açıkça geçersiz kılınmadığı sürece varsayılan System.AppDomainSetup.TargetFrameworkName uygulama etki alanından (4.6'da varsayılan olarak null olarak ayarlanmaz) devralmaya devam eder.

Öneri

Kod, varsayılan olarak null olarak ayarlanacak şekilde güncelleştirilmemelidir TargetFrameworkName . Bu özelliğin null olarak değerlendirilmeye devam etmesi gerekiyorsa, açıkça bu değere ayarlanabilir.

Veri Akışı Adı Değer
Kapsam Edge
Sürüm 4.6
Tür Çalışma Zamanı

Etkilenen API’ler

X509Certificate2.ToString(Boolean), .NET sertifikayı işleyemediğinde şimdi atmıyor

Ayrıntılar

.NET Framework 4.5.2 ve önceki sürümlerinde, bu yöntem ayrıntılı parametre için geçirildiyse ve .NET Framework tarafından desteklenmeyen sertifikaların yüklü olması durumunda true atılır. Şimdi yöntemi başarılı olur ve sertifikanın erişilemez bölümlerini atlayan geçerli bir dize döndürür.

Öneri

Bağlı X509Certificate2.ToString(Boolean) olan tüm kodlar, döndürülen dizenin API'nin daha önce oluşturulacağı bazı durumlarda bazı sertifika verilerini (ortak anahtar, özel anahtar ve uzantılar gibi) hariç tutabileceğini bekleyecek şekilde güncelleştirilmelidir.

Veri Akışı Adı Değer
Kapsam Edge
Sürüm 4.6
Tür Çalışma Zamanı

Etkilenen API’ler

Veri

Başarısız olan bir SQL Server veritabanına TCP/IP bağlantısı deneniyor localhost

Ayrıntılar

.NET Framework 4.6 ve 4.6.1'de, BIR SQL Server veritabanına localhost TCP/IP bağlantısı denenirken şu hatayla başarısız oluyor: "SQL Server bağlantısı oluşturulurken ağ ile ilgili veya örneğe özgü bir hata oluştu. Sunucu bulunamadı veya erişilebilir değildi. Örnek adının doğru olduğundan ve SQL Server'ın uzak bağlantılara izin verecek şekilde yapılandırıldığından emin olun. (sağlayıcı: SQL Ağ Arabirimleri, hata: 26 - Sunucu/Belirtilen Örneği Bulma Hatası)"

Öneri

Bu sorun giderildi ve .NET Framework 4.6.2'de önceki davranış geri yüklendi. çözümleyen bir SQL Server veritabanına bağlanmak için localhost.NET Framework 4.6.2'ye yükseltin.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.6
Tür Çalışma Zamanı

Etkilenen API’ler

API analizi aracılığıyla algılanamaz.

Hata Ayıklayıcı

Null birleşim değerleri bir adım sonraya kadar hata ayıklayıcıda görünmez

Ayrıntılar

.NET Framework 4.5'teki bir hata, null birleştirme işlemi aracılığıyla ayarlanan değerlerin, Framework'ün 64 bit sürümünde çalıştırılırken atama işlemi yürütüldükten hemen sonra hata ayıklayıcıda görünür olmamasına neden olur.

Öneri

Hata ayıklayıcıda bir kez daha adım atılması, yerel/alan değerinin doğru güncelleştirilmasına neden olur. Ayrıca bu sorun .NET Framework 4.6'da düzeltilmiştir; Framework'ün bu sürümüne yükseltmek sorunu çözmelidir.

Veri Akışı Adı Değer
Kapsam Edge
Sürüm 4,5
Tür Çalışma Zamanı

Etkilenen API’ler

API analizi aracılığıyla algılanamaz.

ContentDisposition DateTimes biraz farklı bir dize döndürür

Ayrıntılar

dize gösterimleri System.Net.Mime.ContentDisposition, 4,6 sürümünden itibaren her zaman iki basamaklı bir System.DateTime öğesinin saat bileşenini temsil etmek üzere güncelleştirilmiştir. Bu, RFC822 ve RFC2822 ile uyumlu olmaktır. Bu durum, 4.6'da, 10:00'ın öncesinde olan değerlendirme zaman öğelerinden birinin olduğu senaryolarda biraz farklı bir dize döndürmeye neden olur ToString() . ContentDispositions'ın bazen dizelere dönüştürülerek seri hale getirildiğini, bu nedenle tüm ToString() işlemlerin, serileştirmenin veya GetHashCode çağrılarının gözden geçirilmesi gerektiğini unutmayın.

Öneri

Farklı .NET Framework sürümlerinden ContentDispositions dize gösterimlerinin birbiriyle doğru karşılaştırılacağını beklemeyin. Karşılaştırma gerçekleştirmeden önce mümkünse dizeleri ContentDispositions'a geri dönüştürün.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.6
Tür Çalışma Zamanı

Etkilenen API’ler

Serileştirme

Bilinmeyen bir tür olması durumunda başarısız DataContract serileştirmesi için özel durum iletisi değiştirildi

Ayrıntılar

.NET Framework 4.6'dan başlayarak, eksik 'bilinen türler' nedeniyle veya System.Runtime.Serialization.DataContractSerializerSystem.Runtime.Serialization.Json.DataContractJsonSerializer seri durumdan çıkarılamazsa verilen özel durum iletisi netleştirilmiştir.

Öneri

Uygulamalar belirli özel durum iletilerine bağımlı olmamalıdır. Bir uygulama bu iletiye bağımlıysa, yeni iletiyi bekleyecek şekilde güncelleştirin veya (tercihen) yalnızca özel durum türüne bağlı olarak değiştirin.

Veri Akışı Adı Değer
Kapsam Edge
Sürüm 4.6
Tür Çalışma Zamanı

Etkilenen API’ler

Kurulum ve Dağıtım

.NET Framework 4.6 ve sonraki sürümlerde ürün sürümü oluşturma değişiklikleri

Ayrıntılar

Ürün sürümü oluşturma, .NET Framework'ün önceki sürümlerinden ve özellikle .NET Framework 4, 4.5, 4.5.1 ve 4.5.2 sürümlerinden değiştirildi. Ayrıntılı değişiklikler şunlardır:

  • Anahtardaki girdinin Version değeri .NET Framework 4.6 ve nokta sürümleri için ve 4.7.xxxxx .NET Framework 4.7 ve 4.7.1 için olarak değiştirildi4.6.xxxxx.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full .NET Framework 4.5, 4.5.1 ve 4.5.2'de biçimindedir 4.5.xxxxx.
  • .NET Framework dosyaları için dosya ve ürün sürümü oluşturma, .NET Framework 4.6 ve nokta sürümleri için önceki sürüm oluşturma düzeni olan 4.0.30319.x'ten 4.6.X.0'a ve .NET Framework 4.7 ve 4.7.1 için 4.7.X.0'a değiştirildi. Bir dosyaya sağ tıkladıktan sonra dosyanın Özellikleri'ni görüntülediğinizde bu yeni değerleri görebilirsiniz.
  • AssemblyFileVersionAttribute Yönetilen derlemeler için ve AssemblyInformationalVersionAttribute öznitelikleri,.NET Framework 4.6 ve onun nokta sürümleri için 4.6.X.0 biçiminde sürüm değerlerine ve .NET Framework 4.7 ve 4.7.1 için 4.7.X.0'a sahiptir.
  • .NET Framework 4.6, 4.6.1, 4.6.2, 4.7 ve 4.7.1 sürümlerinde, Environment.Version özelliği sabit sürüm dizesini 4.0.30319.42000döndürür. .NET Framework 4, 4.5, 4.5.1 ve 4.5.2 sürümlerinde, sürüm dizelerini biçiminde 4.0.30319.xxxxx döndürür (örneğin, "4.0.30319.18010"). Uygulama kodunun Environment.Version özelliğine yeni bir bağımlılık almasını önermediğimize dikkat edin.

Daha fazla bilgi için bkz . Nasıl yapılır: Hangi .NET Framework Sürümlerinin Yüklü Olduğunu Belirleme.

Öneri

Genel olarak, uygulamalar .NET Framework'ün çalışma zamanı sürümü ve yükleme dizini gibi şeyleri algılamak için önerilen tekniklere bağımlı olmalıdır:

  • .NET Framework'ün çalışma zamanı sürümünü algılamak için bkz . Nasıl yapılır: Hangi .NET Framework Sürümlerinin Yüklü Olduğunu Belirleme.
  • .NET Framework yükleme yolunu belirlemek için anahtardaki HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full girdinin InstallPath değerini kullanın.

Önemli

Alt anahtar adı, değil .NET Framework SetupşeklindedirNET Framework Setup.

  • .NET Framework ortak dil çalışma zamanının dizin yolunu belirlemek için yöntemini çağırın RuntimeEnvironment.GetRuntimeDirectory() .
  • CLR sürümünü almak için yöntemini çağırın RuntimeEnvironment.GetSystemVersion() . .NET Framework 4 ve onun noktası sürümleri (.NET Framework 4.5, 4.5.1, 4.5.2 ve .NET Framework 4.6, 4.6.1, 4.6.2, 4.7 ve 4.7.1) için v4.0.30319 dizesini döndürür.
Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.6
Tür Çalışma Zamanı

Etkilenen API’ler

API analizi aracılığıyla algılanamaz.

.NET Framework 4.6, kendisini kayıt defterine kaydederken 4.5.x.x sürümünü kullanmaz

Ayrıntılar

Beklenebileceği gibi, .NET Framework 4.6 için kayıt defterinde (konumunda HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full) ayarlanan sürüm anahtarı '4.5' ile değil '4.6' ile başlar. Bir makinede hangi .NET Framework sürümlerinin yüklü olduğunu bilmek için bu kayıt defteri anahtarlarına bağımlı uygulamalar, 4.6'nın yeni bir olası sürüm ve önceki 4.5.x sürümleriyle uyumlu bir sürüm olduğunu anlamak için güncelleştirilmelidir.

Öneri

4.6'nın da kabul edildiği 4.5 kayıt defteri anahtarlarını arayarak .NET Framework 4.5 yüklemesini yoklayan uygulamaları güncelleştirin.

Veri Akışı Adı Değer
Kapsam Edge
Sürüm 4.6
Tür Çalışma Zamanı

Etkilenen API’ler

API analizi aracılığıyla algılanamaz.

Windows Communication Foundation (WCF)

SSL güvenliği ve MD5 sertifika kimlik doğrulaması ile NETTCP kullanan WCF hizmetleri

Ayrıntılar

.NET Framework 4.6, TLS 1.1 ve TLS 1.2'yi WCF SSL varsayılan protokol listesine ekler. hem istemci hem de sunucu makinelerinde .NET Framework 4.6 veya üzeri yüklü olduğunda, anlaşma için TLS 1.2 kullanılır. TLS 1.2, MD5 sertifika kimlik doğrulamayı desteklemez. Sonuç olarak, müşteri bir MD5 sertifikası kullanıyorsa WCF istemcisi WCF hizmetine bağlanamaz.

Öneri

WcF istemcisinin aşağıdakilerden birini yaparak bir WCF sunucusuna bağlanabilmesi için bu soruna geçici bir çözüm bulabilirsiniz:

  • MD5 algoritmasını kullanmamak için sertifikayı güncelleştirin. Önerilen çözüm budur.
  • Bağlama kaynak kodda dinamik olarak yapılandırılmamışsa, uygulamanın yapılandırma dosyasını TLS 1.1 veya protokolün önceki bir sürümünü kullanacak şekilde güncelleştirin. Bu, MD5 karma algoritmasıyla sertifika kullanmaya devam etmenizi sağlar.

Uyarı

MD5 karma algoritmasına sahip bir sertifika güvenli olmadığı kabul edildiği için bu geçici çözüm önerilmez.

Aşağıdaki yapılandırma dosyası bunu yapar:

<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>

Uyarı

MD5 karma algoritmasına sahip bir sertifika güvenli olmadığı kabul edildiği için bu geçici çözüm önerilmez.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.6
Tür Çalışma Zamanı

Etkilenen API’ler

API analizi aracılığıyla algılanamaz.

Windows Presentation Foundation (WPF)

DataGrid'in UnloadingRow olayının işleyicisinden WPF DataGrid'in seçili öğelerine erişmek NullReferenceException'a neden olabilir

Ayrıntılar

.NET Framework 4.5'teki bir hata nedeniyle, bir satırın kaldırılmasını içeren olaylara DataGrid yönelik olay işleyicileri, 'lere veya System.Windows.Controls.Primitives.MultiSelector.SelectedItems özelliklerine erişirlerse DataGridbir'in System.NullReferenceExceptionSystem.Windows.Controls.Primitives.Selector.SelectedItem atılmasına neden olabilir.

Öneri

Bu sorun .NET Framework 4.6'da düzeltilmiştir ve .NET Framework'ün bu sürümüne yükseltilerek giderilebilir.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4,5
Tür Çalışma Zamanı

Etkilenen API’ler

Öğeler seçiliyken WPF ListBox, ListView veya DataGrid üzerinde Items.Refresh öğesini çağırmak öğede yinelenen öğelerin görünmesine neden olabilir

Ayrıntılar

.NET Framework 4.5'te, içinde öğeler seçiliyken System.Windows.Controls.ListBox ListBox.Items.Refresh dosyasının koddan çağrılması, seçilen öğelerin listede yinelenmesine neden olabilir. ve System.Windows.Controls.DataGridile System.Windows.Controls.ListView benzer bir sorun oluşur. Bu, .NET Framework 4.6'da düzeltildi.

Öneri

Bu sorun, çağrılmadan önce System.Windows.Data.CollectionView.Refresh() program aracılığıyla öğelerin seçimini kaldırıp arama tamamlandıktan sonra yeniden seçilerek çözülebilir. Alternatif olarak, bu sorun .NET Framework 4.6'da düzeltilmiştir ve .NET Framework'ün bu sürümüne yükseltilerek giderilebilir.

Değer
Scope İkincil
Sürüm 4,5
Tür Çalışma Zamanı

Etkilenen API’ler

CoerceIsSelectionBoxHighlighted

Ayrıntılar

ve veri kaynağıyla System.Windows.Controls.ComboBox ilgili belirli eylem dizileri ile System.NullReferenceExceptionsonuçlanabilir.

Öneri

Mümkünse .NET Framework 4.6.2'ye yükseltin.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.6
Tür Çalışma Zamanı

Etkilenen API’ler

ObservableCollection<T> ile ListBoxItem IsSelected bağlama sorunu. Hareket

Ayrıntılar

Öğesinin seçili olduğu bir koleksiyonda veya MoveItem(Int32, Int32) öğesine bağlı bir System.Windows.Controls.ListBox koleksiyonda çağrılmasıMove(Int32, Int32), gelecekteki seçimlerde veya öğelerin görünmemesinde hatalı davranışlara System.Windows.Controls.ListBox yol açabilir.

Öneri

Çağrısı System.Collections.ObjectModel.Collection<T>.Remove(T) yapmak ve System.Collections.ObjectModel.Collection<T>.Insert(Int32, T) yerine Move(Int32, Int32) bu soruna geçici bir çözüm olacaktır. Alternatif olarak, bu sorun .NET Framework 4.6'da düzeltilmiştir ve .NET Framework'ün bu sürümüne yükseltilerek giderilebilir.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4,5
Tür Çalışma Zamanı

Etkilenen API’ler

WPF DataGrid satır üst bilgisine sağ tıklanması DataGrid seçimini değiştirir

Ayrıntılar

Birden çok satır seçiliyken seçili System.Windows.Controls.DataGrid satır üst bilgisine sağ tıklanması, 'nin seçiminin System.Windows.Controls.DataGridyalnızca bu satıra değişmesine neden olur.

Öneri

Bu sorun .NET Framework 4.6'da düzeltilmiştir ve .NET Framework'ün bu sürümüne yükseltilerek giderilebilir.

Veri Akışı Adı Değer
Kapsam Edge
Sürüm 4,5
Tür Çalışma Zamanı

Etkilenen API’ler

WPF, fareyi dondurabilen bir wisptis.exe işlemi oluşturur

Ayrıntılar

4.5.2'de wisptis.exe fare girişini dondurabilen bir sorun ortaya çıkmıştır.

Öneri

Bu soruna yönelik bir düzeltme .NET Framework 4.5.2'nin (düzeltme paketi 3026376) bir hizmet sürümünde veya .NET Framework 4.6'ya yükseltilerek kullanılabilir

Veri Akışı Adı Değer
Kapsam Ana
Sürüm 4.5.2
Tür Çalışma Zamanı

Etkilenen API’ler

API analizi aracılığıyla algılanamaz.

Metin etkin denetimlerde WPF yazım denetimi, işletim sisteminin giriş dili listesinde bulunmayan diller için Windows 10'da çalışmaz

Ayrıntılar

Windows 10'da çalışırken, platform yazım denetimi özellikleri yalnızca giriş dilleri listesinde bulunan diller için kullanılabildiğinden yazım denetleyicisi WPF metin özellikli denetimler için çalışmayabilir. Windows 10'da, kullanılabilir klavyeler listesine bir dil eklendiğinde Windows, yazım denetimi özellikleri sağlayan ilgili İsteğe Bağlı Özellik (FOD) paketini otomatik olarak indirir ve yükler. Dili giriş dilleri listesine ekleyerek yazım denetleyicisi desteklenir.

Öneri

Yazım denetiminin Windows 10'da çalışması için yazım denetimi yapılacak dilin veya metnin giriş dili olarak eklenmesi gerektiğini unutmayın.

Veri Akışı Adı Değer
Kapsam Edge
Sürüm 4.6
Tür Çalışma Zamanı

Etkilenen API’ler

API analizi aracılığıyla algılanamaz.

WPF pencereleri tek bir izleyicinin dışına genişletilirken kırpma olmadan işlenir

Ayrıntılar

Windows 8 ve üzeri üzerinde çalışan .NET Framework 4.6'da, çok monitörlü bir senaryoda tek bir ekranın dışına çıktığında tüm pencere kırpma olmadan işlenir. Bu, .NET Framework'ün önceki sürümlerinden farklıdır ve bu sürümler tek bir görüntülemenin ötesine genişletilen WPF pencerelerini kırpabilir.

Öneri

Bu davranış (kırpılıp kırpılmayacağı) bir uygulamanın yapılandırma dosyasındaki <appSettings> öğesi kullanılarak <EnableMultiMonitorDisplayClipping> veya uygulama başlangıcında özelliği ayarlanarak EnableMultiMonitorDisplayClipping açıkça ayarlanabilir.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.6
Tür Çalışma Zamanı

Etkilenen API’ler

API analizi aracılığıyla algılanamaz.

.NET Framework 4.6.1

Araçlar

Contract.Invariant veya Contract.Requires<TException> , String.IsNullOrEmpty'yi saf olarak değerlendirmez

Ayrıntılar

.NET Framework 4.6.1'i hedefleyen uygulamalar için Contract.InvariantRequires sabit sözleşme veya ön koşul sözleşmesi yöntemini çağırırsa String.IsNullOrEmpty , yeniden yazan derleyici uyarısı CC1036 gönderir: "Yöntemde [Pure] olmadan 'System.String.IsNullOrWhiteSpace(System.String)' yöntemine çağrı algılandı." Bu, derleyici hatası yerine derleyici uyarısıdır.

Öneri

Bu davranış GitHub Sorunu #339'da giderildi. Bu uyarıyı ortadan kaldırmak için GitHub'dan Kod Sözleşmeleri aracının kaynak kodunun güncelleştirilmiş bir sürümünü indirip derleyebilirsiniz. İndirme bilgileri sayfanın en altında bulunur.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.6.1
Tür Çalışma Zamanı

Etkilenen API’ler

Windows Presentation Foundation (WPF)

Farklı piksel yüksekliğindeki öğelerle düz listeyi kaydırma

Ayrıntılar

sanallaştırma System.Windows.Controls.ItemsControl () ve öğe kaydırma ()IsVirtualizing=trueScrollUnit=Item kullanarak bir koleksiyon görüntülendiğinde ve piksel cinsinden yüksekliği komşularından farklı olan bir öğeyi görüntülemek için denetim kaydırıldığında, System.Windows.Controls.VirtualizingStackPanel koleksiyondaki tüm öğeler yinelenir. Bu yineleme sırasında kullanıcı arabirimi yanıt vermiyor. Yineleme, önceki .NET Framework sürümlerinde bile başka durumlarda gerçekleşir. Örneğin, farklı piksel yüksekliğine sahip bir öğeyle karşılaşıldığında piksel kaydırma (ScrollUnit=Pixel) ve komşularından farklı sayıda alt öğeye sahip bir öğeyle karşılaşıldığında öğe kaydırma hiyerarşik verileri (gruplama etkin veya System.Windows.Controls.ItemsControl gruplama etkin gibiSystem.Windows.Controls.TreeView) olduğunda oluşur. Öğe kaydırma ve farklı piksel yüksekliği söz konusu olduğunda, hiyerarşik verilerin düzenindeki hataları düzeltmek için .NET Framework 4.6.1'de yineleme kullanıma sunulmuştur. Veriler düzse (hiyerarşi yoksa) gerekli değildir ve .NET Framework 4.6.2 bu durumda bunu yapmaz.

Öneri

Yineleme .NET Framework 4.6.1'de gerçekleşiyorsa ancak önceki sürümlerde gerçekleşmiyorsa ( öğeyse System.Windows.Controls.ItemsControl - farklı piksel yüksekliğindeki öğelerle düz bir listeyi kaydırmak) iki çözüm vardır:

  • .NET Framework 4.6.2'yi yükleyin.
  • .NET Framework 4.6.1 için düzeltme HR 1605'i yükleyin.
Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.6.1
Tür Çalışma Zamanı

Etkilenen API’ler

WPF yazım denetleyicisi tarafından objectDisposedException oluşturuldu

Ayrıntılar

WPF uygulamaları, yazım denetleyicisi tarafından oluşturulan bir System.ObjectDisposedException uygulama kapatma işlemi sırasında zaman zaman kilitlenir. Bu, .NET Framework 4.7 WPF'de özel durumu düzgün bir şekilde işleyerek ve dolayısıyla uygulamaların artık olumsuz etkilenmediğinden emin olarak düzeltilir. Hata ayıklayıcı altında çalışan uygulamalarda zaman zaman ilk şans özel durumlarının gözlemlenmeye devam edeceğinin belirtilmesi gerekir.

Öneri

.NET Framework 4.7'ye yükseltme

Veri Akışı Adı Değer
Kapsam Edge
Sürüm 4.6.1
Tür Çalışma Zamanı

Etkilenen API’ler

API analizi aracılığıyla algılanamaz.

WPF Yazım Denetimi beklenmeyen yollarla başarısız oluyor

Ayrıntılar

Buna bir dizi WPF Yazım Denetleyicisi sorunu dahildir:

  • WPF Yazım Denetleyicisi bazen System.Runtime.InteropServices.COMException
  • WPF Yazım Denetleyicisi, uygulamalar 'farklı kullanıcı olarak çalıştır' kullanılarak başlatıldığında başarısız oluyor UnauthorizedAccessException
  • WPF Yazım Denetleyicisi, Almanca 'Hausnummer' gibi bileşik sözcüklerde yazım hatalarını yanlış tanımlar.

Öneri

Sorun 1 - Bu sorun .NET Framework 4.6.2 Sorun #2 ile düzeltildi - UYGULAMALAR 'farklı kullanıcı olarak çalıştır' kullanılarak başlatıldığında WPF Yazım Denetleyicisi artık desteklenmiyor. .NET Framework 4.6.2'den başlayarak, bu şekilde başlatılan uygulamalar artık beklenmedik bir şekilde kilitlenmeyecek; bunun yerine Yazım Denetleyicisi sessizce devre dışı bırakılacaktır. Sorun 3 - Bu sorun .NET Framework 4.6.2'de düzeltilmiştir.

Veri Akışı Adı Değer
Kapsam Edge
Sürüm 4.6.1
Tür Çalışma Zamanı

Etkilenen API’ler

API analizi aracılığıyla algılanamaz.

.NET Framework 4.6.2

Veri

Başarısız olan bir SQL Server veritabanına TCP/IP bağlantısı deneniyor localhost

Ayrıntılar

.NET Framework 4.6 ve 4.6.1'de, BIR SQL Server veritabanına localhost TCP/IP bağlantısı denenirken şu hatayla başarısız oluyor: "SQL Server bağlantısı oluşturulurken ağ ile ilgili veya örneğe özgü bir hata oluştu. Sunucu bulunamadı veya erişilebilir değildi. Örnek adının doğru olduğundan ve SQL Server'ın uzak bağlantılara izin verecek şekilde yapılandırıldığından emin olun. (sağlayıcı: SQL Ağ Arabirimleri, hata: 26 - Sunucu/Belirtilen Örneği Bulma Hatası)"

Öneri

Bu sorun giderildi ve .NET Framework 4.6.2'de önceki davranış geri yüklendi. çözümleyen bir SQL Server veritabanına bağlanmak için localhost.NET Framework 4.6.2'ye yükseltin.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.6
Tür Çalışma Zamanı

Etkilenen API’ler

API analizi aracılığıyla algılanamaz.

Azure SQL veritabanları için Bağlan havuzu engelleme süresi kaldırıldı

Ayrıntılar

.NET Framework 4.6.2'den başlayarak, bilinen Azure SQL veritabanlarına (*.database.windows.net, *.database.chinacloudapi.cn, *.database.usgovcloudapi.net, *.database.cloudapi.de), bağlantı havuzu engelleme süresi kaldırılır ve bağlantı açma hataları önbelleğe alınmaz. Bağlantı açma isteklerini yeniden deneme girişimleri, geçici bağlantı hatalarından hemen sonra gerçekleşir. Bu değişiklik, bağlantı açma girişiminin Azure SQL veritabanları için hemen yeniden denenmesini ve böylece bulut özellikli uygulamaların performansının artırılmasını sağlar. Diğer tüm bağlantı girişimleri için bağlantı havuzu engelleme süresi uygulanmaya devam eder.

.NET Framework 4.6.1 ve önceki sürümlerde, bir uygulama veritabanına bağlanırken geçici bir bağlantı hatasıyla karşılaştığında, bağlantı havuzu hatayı önbelleğe alıp 5 saniye ile 1 dakika arasında yeniden attığından bağlantı girişimi hızlı bir şekilde yeniden denenemez. Daha fazla bilgi için bkz. SQL Server Bağlan ion Pooling (ADO.NET). Bu davranış, genellikle birkaç saniye içinde kurtarılan geçici hatalarla başarısız olan Azure SQL veritabanlarına yapılan bağlantılar için sorunludur. Bağlantı havuzu engelleme özelliği, veritabanı kullanılabilir olsa ve uygulamanın birkaç saniye içinde işlenmesi gerekse bile uygulamanın veritabanına kapsamlı bir süre bağlanamadığı anlamına gelir.

Öneri

Bu davranış istenmeyen bir davranışsa, bağlantı havuzu engelleme süresi .NET Framework 4.6.2'de tanıtılan özellik ayarlanarak System.Data.SqlClient.SqlConnectionStringBuilder.PoolBlockingPeriod yapılandırılabilir. özelliğinin değeri, numaralandırmanın System.Data.SqlClient.PoolBlockingPeriod üç değerden birini alabilen bir üyesidir:

Önceki davranış, özelliği AlwaysBlockolarak ayarlanarak System.Data.SqlClient.SqlConnectionStringBuilder.PoolBlockingPeriod geri yüklenebilir.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.6.2
Tür Çalışma Zamanı

Etkilenen API’ler

Globalleştirme

Unicode standart sürüm 8.0 kategorileri artık destekleniyor

Ayrıntılar

.NET Framework 4.6.2'de Unicode verileri Unicode Standart sürüm 6.3'ten sürüm 8.0'a yükseltildi. .NET Framework 4.6.2'de Unicode karakter kategorileri istenirken, bazı sonuçlar önceki .NET Framework sürümlerindeki sonuçlarla eşleşmeyebilir. Bu değişiklik çoğunlukla Cherokee hecelerini ve Yeni Tai Lue sesli harf işaretlerini ve ton işaretlerini etkiler.

Öneri

Kodu gözden geçirin ve sabit kodlanmış Unicode karakter kategorilerine bağlı mantığı kaldırın/değiştirin.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.6.2
Tür Çalışma Zamanı

Etkilenen API’ler

Güvenlik

Kısmi Güven senaryolarında RSACng ve DSACng bir kez daha kullanılabilir

Ayrıntılar

CngLightup (gibi System.Security.Cryptography.Xml.EncryptedXmlbirkaç üst düzey şifreleme api'sinde kullanılır) ve System.Security.Cryptography.RSACng bazı durumlarda tam güvene dayanır. Bunlar, izinleri onaylamadan SecurityPermissionFlag.UnmanagedCode P/Invoke'ları ve için SecurityPermissionFlag.UnmanagedCodeizin talepleri olan System.Security.Cryptography.CngKey kod yollarını içerir. .NET Framework 4.6.2'den başlayarak mümkün olan her yere geçiş System.Security.Cryptography.RSACng yapmak için CngLightup kullanıldı. Sonuç olarak, başarıyla kullanılan System.Security.Cryptography.Xml.EncryptedXml kısmi güven uygulamaları başarısız olmaya ve özel durumlar atmaya SecurityException başladı. Bu değişiklik, CngLightup kullanan tüm işlevlerin gerekli izinlere sahip olması için gerekli onayları ekler.

Öneri

.NET Framework 4.6.2'deki bu değişiklik kısmi güven uygulamalarınızı olumsuz etkilediyse, .NET Framework 4.7.1'e yükseltin.

Veri Akışı Adı Değer
Kapsam Edge
Sürüm 4.6.2
Tür Çalışma Zamanı

Etkilenen API’ler

RSACng.VerifyHash artık herhangi bir doğrulama hatası için False döndürüyor

Ayrıntılar

.NET Framework 4.6.2'den başlayarak, imzanın kendisi hatalı biçimlendirilmişse bu yöntem False döndürür. Artık herhangi bir doğrulama hatası için false döndürür. .NET Framework 4.6 ve 4.6.1'de, imzanın kendisi hatalı biçimlendirilmişse yöntemi bir System.Security.Cryptography.CryptographicException oluşturur.

Öneri

Yürütmesi işlemeye System.Security.Cryptography.CryptographicException bağlı olan tüm kodlar, doğrulama başarısız olursa ve yöntem False döndürürse yürütülmelidir.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.6.2
Tür Çalışma Zamanı

Etkilenen API’ler

SignedXml ve EncryptedXml Hataya Neden Olan Değişiklikler

Ayrıntılar

.NET Framework 4.6.2'de, içindeki System.Security.Cryptography.Xml.SignedXml güvenlik düzeltmeleri ve System.Security.Cryptography.Xml.EncryptedXml farklı çalışma zamanı davranışlarına yol açar. Örneğin:

  • Bir belgede aynı id özniteliğe sahip birden çok öğe varsa ve imza, imzanın kökü olarak bu öğelerden birini hedeflerse, belge artık geçersiz kabul edilir.
  • Başvurularda kurallı olmayan XPath dönüştürme algoritmaları kullanan belgeler artık geçersiz olarak kabul edilir.
  • Başvurularda kurallı olmayan XSLT dönüştürme algoritmaları kullanan belgeler artık geçersiz kabul edilir.
  • Dış kaynak ayrılmış imzalarını kullanan herhangi bir program bunu yapamaz.

Öneri

Geliştiriciler, belge alıcısı XmlDsigXsltTransform işleyemeyebileceği için ve XmlDsigXsltTransformkullanımını ve türetilen Transform türleri gözden geçirmek isteyebilir.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.6.2
Tür Çalışma Zamanı

Etkilenen API’ler

Windows Communication Foundation (WCF)

WCF TransportDefaults'tan Ssl3'i kaldırma

Ayrıntılar

NetTcp'yi aktarım güvenliği ve kimlik bilgisi türü sertifika ile kullanırken SSL 3 protokolü artık güvenli bağlantı anlaşması için kullanılan varsayılan bir protokol değildir. TlS 1.0 her zaman NetTcp protokol listesine eklendiğinden, çoğu durumda mevcut uygulamaları etkilememelidir. Mevcut tüm istemcilerin en az TLS1.0 kullanarak bağlantı anlaşması yapabilmesi gerekir.

Öneri

Ssl3 gerekiyorsa, anlaşmalı protokoller listesine Ssl3 eklemek için aşağıdaki yapılandırma mekanizmalarından birini kullanın.

Veri Akışı Adı Değer
Kapsam Edge
Sürüm 4.6.2
Tür Çalışma Zamanı

Etkilenen API’ler

Windows Presentation Foundation (WPF)

TextBlock denetiminin üst öğesinin IsEnabled özelliğinin değiştirilmesi tüm alt denetimleri etkiler

Ayrıntılar

.NET Framework 4.6.2'den başlayarak, denetimin System.Windows.Controls.TextBlock üst öğesinin özelliğini değiştirmekSystem.Windows.UIElement.IsEnabled, denetimin alt denetimlerini (köprüler ve düğmeler gibi) System.Windows.Controls.TextBlock etkiler. .NET Framework 4.6.1 ve önceki sürümlerinde, içindeki System.Windows.Controls.TextBlock denetimler her zaman üst öğesinin özelliğinin System.Windows.UIElement.IsEnabledSystem.Windows.Controls.TextBlock durumunu yansıtmaz.

Öneri

Yok. Bu değişiklik, denetimin System.Windows.Controls.TextBlock içindeki denetimler için beklenen davranışa uygundur.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.6.2
Tür Çalışma Zamanı

Etkilenen API’ler

CoerceIsSelectionBoxHighlighted

Ayrıntılar

ve veri kaynağıyla System.Windows.Controls.ComboBox ilgili belirli eylem dizileri ile System.NullReferenceExceptionsonuçlanabilir.

Öneri

Mümkünse .NET Framework 4.6.2'ye yükseltin.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.6
Tür Çalışma Zamanı

Etkilenen API’ler

DataGridCellsPanel.BringIndexIntoView, ArgumentOutOfRangeException oluşturur

Ayrıntılar

ScrollIntoView(Object) sütun sanallaştırma etkinleştirildiğinde ancak sütun genişlikleri henüz belirlenmediğinde zaman uyumsuz olarak çalışır. Zaman uyumsuz çalışma gerçekleşmeden önce sütunlar kaldırılırsa, bir System.ArgumentOutOfRangeException oluşabilir.

Öneri

Aşağıdakilerden herhangi biri:

  • .NET Framework 4.7'ye yükseltin.
  • .NET Framework 4.6.2 için en son hizmet düzeltme ekini yükleyin.
  • zaman uyumsuz yanıtı tamamlanana ScrollIntoView(Object) kadar sütunları kaldırmaktan kaçının.
Veri Akışı Adı Değer
Kapsam Edge
Sürüm 4.6.2
Tür Çalışma Zamanı

Etkilenen API’ler

Yatay kaydırma ve sanallaştırma

Ayrıntılar

Bu değişiklik, kendi sanallaştırmasını ana kaydırma yönüne ortogonal yönde (en büyük örnek System.Windows.Controls.DataGrid EnableColumnVirtualization="True" ile birlikte) uygulayan bir System.Windows.Controls.ItemsControl için geçerlidir. Belirli yatay kaydırma işlemlerinin sonucu, daha sezgisel ve benzer dikey işlemlerin sonuçlarına daha benzer sonuçlar üretecek şekilde değiştirildi.

İşlemler, yatay kaydırma çubuğuna sağ tıklayarak elde edilen menüden adları kullanmak için "Buraya Kaydır" ve "Sağ Kenar" içerir. Bunların her ikisi de bir aday uzaklığını hesaplar ve öğesini çağırır SetHorizontalOffset(Double).

Yeni uzaklık konumuna kaydırdıktan sonra, yeni sanallaştırılan içerik değerini System.Windows.Controls.Primitives.IScrollInfo.ExtentWidthdeğiştirdiğinden "burada" veya "sağ kenar" ifadesi değişmiş olabilir.

.NET Framework 4.6.2'den önce, kaydırma işlemi artık "burada" veya "sağ kenarda" olmasa bile yalnızca aday uzaklığını kullanır. Bu, en iyi örnekle gösterildiği gibi kaydırma başparmağını "zıplatma" gibi efektlerle sonuçlanıyor. a System.Windows.Controls.DataGrid öğesinin ExtentWidth=1000 ve Width=200 olduğunu varsayalım. "Sağ Kenar" kaydırması 1000 - 200 = 800 aday uzaklığını kullanır. Bu uzaklığı kaydırırken yeni sütunlar sanallaştırılır; 2000'de yapılan değişikliklerin çok geniş olduğunu System.Windows.Controls.Primitives.IScrollInfo.ExtentWidth varsayalım. Kaydırma, HorizontalOffset=800 ile sona erer ve başparmak kaydırma çubuğunun ortasına doğru "geri döner" ve tam olarak 800/2000 = %40 olur.

Değişiklik, bu durum oluştuğunda yeni bir aday uzaklığını yeniden derlemek ve yeniden denemektir. (Dikey kaydırma zaten böyle çalışır.)

Değişiklik, son kullanıcı için daha öngörülebilir ve sezgisel bir deneyim oluşturur, ancak son kullanıcı tarafından veya açık bir çağrısıyla SetHorizontalOffset(Double)yatay kaydırmadan sonra tam değerine System.Windows.Controls.Primitives.IScrollInfo.HorizontalOffset bağlı olan tüm uygulamaları da etkileyebilir.

Öneri

için tahmin edilen değer System.Windows.Controls.Primitives.IScrollInfo.HorizontalOffset kullanan bir uygulama, sanallaştırmayı kaldırma nedeniyle değişebilecek System.Windows.Controls.Primitives.IScrollInfo.ExtentWidth herhangi bir yatay kaydırmadan sonra gerçek değeri (ve değeriniSystem.Windows.Controls.Primitives.IScrollInfo.ExtentWidth) getirecek şekilde değiştirilmelidir.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.6.2
Tür Çalışma Zamanı

Etkilenen API’ler

Items.Clear, SelectedItems öğesinden yinelenenleri kaldırmaz

Ayrıntılar

Bir Seçicinin (birden çok seçimin etkin olduğu) koleksiyonunda System.Windows.Controls.Primitives.MultiSelector.SelectedItems yinelenen öğeler olduğunu ve aynı öğenin birden çok kez göründüğünü varsayalım. Bu öğelerin veri kaynağından kaldırılması (ör. Items.Clear çağrısıyla) öğesinden System.Windows.Controls.Primitives.MultiSelector.SelectedItemskaldırılamaz; yalnızca ilk örnek kaldırılır. Ayrıca, sonraki kullanımı System.Windows.Controls.Primitives.MultiSelector.SelectedItems (ör. SelectedItems.Clear()), artık veri kaynağında olmayan öğeler içerdiğinden gibi System.ArgumentExceptionSystem.Windows.Controls.Primitives.MultiSelector.SelectedItems sorunlarla karşılaşabilir.

Öneri

Mümkünse .NET Framework 4.6.2'ye yükseltin.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4,5
Tür Çalışma Zamanı

Etkilenen API’ler

Farklı piksel yüksekliğindeki öğelerle düz listeyi kaydırma

Ayrıntılar

sanallaştırma System.Windows.Controls.ItemsControl () ve öğe kaydırma ()IsVirtualizing=trueScrollUnit=Item kullanarak bir koleksiyon görüntülendiğinde ve piksel cinsinden yüksekliği komşularından farklı olan bir öğeyi görüntülemek için denetim kaydırıldığında, System.Windows.Controls.VirtualizingStackPanel koleksiyondaki tüm öğeler yinelenir. Bu yineleme sırasında kullanıcı arabirimi yanıt vermiyor. Yineleme, önceki .NET Framework sürümlerinde bile başka durumlarda gerçekleşir. Örneğin, farklı piksel yüksekliğine sahip bir öğeyle karşılaşıldığında piksel kaydırma (ScrollUnit=Pixel) ve komşularından farklı sayıda alt öğeye sahip bir öğeyle karşılaşıldığında öğe kaydırma hiyerarşik verileri (gruplama etkin veya System.Windows.Controls.ItemsControl gruplama etkin gibiSystem.Windows.Controls.TreeView) olduğunda oluşur. Öğe kaydırma ve farklı piksel yüksekliği söz konusu olduğunda, hiyerarşik verilerin düzenindeki hataları düzeltmek için .NET Framework 4.6.1'de yineleme kullanıma sunulmuştur. Veriler düzse (hiyerarşi yoksa) gerekli değildir ve .NET Framework 4.6.2 bu durumda bunu yapmaz.

Öneri

Yineleme .NET Framework 4.6.1'de gerçekleşiyorsa ancak önceki sürümlerde gerçekleşmiyorsa ( öğeyse System.Windows.Controls.ItemsControl - farklı piksel yüksekliğindeki öğelerle düz bir listeyi kaydırmak) iki çözüm vardır:

  • .NET Framework 4.6.2'yi yükleyin.
  • .NET Framework 4.6.1 için düzeltme HR 1605'i yükleyin.
Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.6.1
Tür Çalışma Zamanı

Etkilenen API’ler

RibbonGroup arka planı yerelleştirilmiş derlemelerde saydam olarak ayarlandı

Ayrıntılar

System.Windows.Controls.Ribbon.RibbonGroup yerelleştirilmiş derlemelerde arka plan her zaman Saydam fırçayla boyanarak kullanıcı arabirimi deneyimi kötüleştirildi. Bu, için yerelleştirilmiş kaynaklar System.Windows.Controls.Ribbon.RibbonGroupgüncelleştirilerek .NET Framework 4.7 WPF düzeltmesinde düzeltilir ve bu da doğru fırçanın seçilmesini sağlar.

Öneri

.NET Framework 4.7'ye yükseltme

Veri Akışı Adı Değer
Kapsam Edge
Sürüm 4.6.2
Tür Çalışma Zamanı

Etkilenen API’ler

API analizi aracılığıyla algılanamaz.

WPF Yazım Denetimi beklenmeyen yollarla başarısız oluyor

Ayrıntılar

Buna bir dizi WPF Yazım Denetleyicisi sorunu dahildir:

  • WPF Yazım Denetleyicisi bazen System.Runtime.InteropServices.COMException
  • WPF Yazım Denetleyicisi, uygulamalar 'farklı kullanıcı olarak çalıştır' kullanılarak başlatıldığında başarısız oluyor UnauthorizedAccessException
  • WPF Yazım Denetleyicisi, Almanca 'Hausnummer' gibi bileşik sözcüklerde yazım hatalarını yanlış tanımlar.

Öneri

Sorun 1 - Bu sorun .NET Framework 4.6.2 Sorun #2 ile düzeltildi - UYGULAMALAR 'farklı kullanıcı olarak çalıştır' kullanılarak başlatıldığında WPF Yazım Denetleyicisi artık desteklenmiyor. .NET Framework 4.6.2'den başlayarak, bu şekilde başlatılan uygulamalar artık beklenmedik bir şekilde kilitlenmeyecek; bunun yerine Yazım Denetleyicisi sessizce devre dışı bırakılacaktır. Sorun 3 - Bu sorun .NET Framework 4.6.2'de düzeltilmiştir.

Veri Akışı Adı Değer
Kapsam Edge
Sürüm 4.6.1
Tür Çalışma Zamanı

Etkilenen API’ler

API analizi aracılığıyla algılanamaz.