Aracılığıyla paylaş


.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, System.Web.UI.WebControls.GridView.PageIndexChanging etkinleştirilmiş System.Web.UI.WebControls.GridViewların bazen System.Web.UI.WebControls.GridView.AllowCustomPaging'nin tetiklenmemesine neden oluyor.

Ö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 bir Page_Load üzerinde açık bir BindGrid yapabilir (System.Web.UI.WebControls.GridView son sayfadadır ve LastSystem.Web.UI.WebControls.GridView.PageSize'den System.Web.UI.WebControls.GridView.PageSize farklıdır). Alternatif olarak, bu senaryonun sorunu göstermediği durumlarda, uygulama sayfalama (özel sayfalama yerine) yapacak şekilde değiştirilebilir.

İsim Değer
Kapsam Önemsiz
Sürüm 4,5
Türü Çalışma zamanı

Etkilenen API'ler

Çekirdek

.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ürdeki iç değişiklikler nedeniyle ConcurrentDictionary<TKey,TValue> kullanılarak .NET Framework 4.5 ile seri hale getirilen nesneler, .NET Framework 4.5.1 veya 4.5.2'de System.Runtime.Serialization.NetDataContractSerializer kullanılarak seri durumdan çıkarılamaz. Ancak, diğer yönde hareket etmek (.NET Framework 4.5.x ile seri hale getirilip .NET Framework 4.5 ile seri durumdan çıkarılmak) mümkündür. Benzer şekilde, tüm 4.x sürümler arası serileştirme .NET Framework 4.6 ile çalışır. .NET Framework'ün tek bir sürümü kullanılarak yapılan serileştirme ve seriden çıkarma etkilenmez.

Öneri

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

İsim Değer
Kapsam Önemsiz
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 hale getirilmiyor.

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

UseRandomizedStringHashAlgorithm etkinleştirmenin, DynamicBase'in rastgele hale gelmesiyle sonuçlanmayacağını unutmayın. Rastgele bir temel gerekiyorsa, bu API yerine uygulamanızın kodunda üretilmesi gerekir.

İsim Değer
Kapsam Kenar
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, yalnızca dizinin türüyle diğer bir özellikten farklı olan bir dizin oluşturucu özelliğinde GetCustomAttribute(s) çağrılması bir System.Reflection.AmbiguousMatchException ile sonuçlanıyordu. .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. Eğer bir uygulama daha önce System.Reflection.AmbiguousMatchException üzerine bağlıysa, artık açıkça yansımayı kullanarak birden çok dizin oluşturucu araması yapılmalıdır.

İsim Değer
Kapsam Kenar
Sürüm 4.6
Türü Çalışma zamanı

Etkilenen API'ler

COR_PRF_GC_ROOT_HANDLEs profilleyiciler tarafından numaralandırılmıyor.

Ayrıntılar

.NET Framework v4.5.1'de profil oluşturma API'si, hatalı bir şekilde RootReferences2()'yi hiçbir zaman döndürmez, bunun yerine ise COR_PRF_GC_ROOT_HANDLE döndürülür. 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.

İsim Değer
Kapsam Önemsiz
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 sorunu çözmek için, EnableEvents(EventSource, EventLevel) çağrılarını, kullanılacak olan "herhangi bir anahtar sözcük" maskesini açıkça belirten EnableEvents aşırı yüklemesinin çağrılarıyla 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.

İsim Değer
Kapsam Kenar
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).

İsim Değer
Kapsam Önemsiz
Sürüm 4.6
Türü Çalışma zamanı

Etkilenen API'ler

Yansıma nesneleri artık yönetilen koddan işlem dışı DCOM istemcilerine geçirilemiyor

Ayrıntılar

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

IMarshal için nesne çağrıları E_NOINTERFACE döndürür.

Öneri

Yeniden biçimlendirme kodunu yansıma olmadan çalışan nesnelerle uyumlu hale getirin.

İsim Değer
Kapsam Önemsiz
Sürüm 4.6
Türü Çalışma zamanı

Etkilenen API'ler

Artık varsayılan uygulama etki alanı için TargetFrameworkName ayarlanmadığında null olarak kabul edilmez.

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, TargetFrameworkName varsayılan olarak null'a bağımlı olmamak için güncellenmelidir. Bu özelliğin null olarak değerlendirilmeye devam etmesi gerekiyorsa, açıkça bu değere ayarlanabilir.

İsim Değer
Kapsam Kenar
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öntem başarılı olacak ve sertifikanın erişilemez bölümlerini çıkararak geçerli bir dize döndürecek.

Öneri

X509Certificate2.ToString(Boolean) bağımlı olan tüm kodlar, geri döndürülen dizenin bazı durumlarda (API'nin önceden bir hata vereceği durumlarda) bazı sertifika verilerini (ortak anahtar, özel anahtar ve uzantılar gibi) hariç tutabileceğini bekleyecek şekilde güncellenmelidir.

İsim Değer
Kapsam Kenar
Sürüm 4.6
Türü Çalışma zamanı

Etkilenen API'ler

Veri

SQL Server veritabanına localhost adresine çözümlenen bir TCP/IP bağlantısı kurulmaya çalışıldığında başarısız oluyor.

Ayrıntılar

SQL Server veritabanına TCP/IP ile bağlanmaya çalışıldığında, .NET Framework 4.6 ve 4.6.1'de, localhost çözümlemesi başarısız oluyor ve şu hata iletiliyor: "SQL Server bağlantısı kurarken ağ ile ilgili ya da örneğe özgü bir hata oluştu. Sunucu bulunamadı veya erişilebilir değil. Ö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.

İsim Değer
Kapsam Önemsiz
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 biçimde güncellenmesini sağlar. Ayrıca bu sorun .NET Framework 4.6'da düzeltilmiştir; Framework'ün bu sürümüne yükseltmek sorunu çözmelidir.

İsim Değer
Kapsam Kenar
Sürüm 4,5
Türü Çalışma zamanı

Etkilenen API'ler

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

Ağ Kurma

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

Ayrıntılar

System.Net.Mime.ContentDisposition'nin dize gösterimleri, 4.6 sürümünden itibaren bir System.DateTime'nin saat bileşenini her zaman iki basamaklı olarak temsil etmek üzere güncellenmiştir. Bu, RFC822 ve RFC2822 ile uyumlu olmaktır. Bu durum, 4.6'da, saat 10:00'dan önce olan dağıtım zaman öğelerinden birinin bulunduğu senaryolarda ToString() 'ın biraz farklı bir dize döndürmesine neden olur. 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.

İsim Değer
Kapsam Önemsiz
Sürüm 4.6
Türü Çalışma zamanı

Etkilenen API'ler

Seri -leştirme

Bilinmeyen bir türle karşılaşıldığında başarısız olan DataContract serileştirmesi için hata mesajı değiştirildi.

Ayrıntılar

.NET Framework 4.6'dan başlayarak, eksik 'bilinen türler' nedeniyle System.Runtime.Serialization.DataContractSerializer veya System.Runtime.Serialization.Json.DataContractJsonSerializer nesnelerinin serileştirilmesi ya da seri durumdan çıkarılması başarısız olursa verilen hata mesajı 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.

İsim Değer
Kapsam Kenar
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ümleme yöntemleri, önceki .NET Framework sürümlerinden, özellikle .NET Framework 4, 4.5, 4.5.1 ve 4.5.2'den farklıdır. Ayrıntılı değişiklikler şunlardır:

  • .NET Framework 4.6 ve nokta sürümleri için Version girişinin HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full anahtarındaki değeri 4.6.xxxxx olarak değiştirildi ve .NET Framework 4.7 ve 4.7.1 için 4.7.xxxxx olarak güncellendi. .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:

Önemli

Alt anahtar adı NET Framework Setup'dir, .NET Framework Setup değildir.

İsim Değer
Kapsam Önemsiz
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

.NET Framework 4.5 yüklemesini kontrol etmek için 4.5 kayıt defteri anahtarlarını arayan uygulamaları güncelleyerek, 4.6'yı da kabul edebilir hale getirin.

İsim Değer
Kapsam Kenar
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.

İsim Değer
Kapsam Önemsiz
Sürüm 4.6
Türü Çalışma zamanı

Etkilenen API'ler

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

Windows Presentation Foundation (WPF)

WPF DataGrid'in UnloadingRow olayı işleyicisinden seçili öğelere 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 DataGrid olaylarına yönelik olay işleyicileri, System.NullReferenceException'nin DataGrid veya System.Windows.Controls.Primitives.Selector.SelectedItem özelliklerine erişirse, bir System.Windows.Controls.Primitives.MultiSelector.SelectedItems'ın 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.

İsim Değer
Kapsam Önemsiz
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. System.Windows.Controls.ListView ile System.Windows.Controls.DataGrid benzer bir sorun oluşur. Bu, .NET Framework 4.6'da düzeltildi.

Öneri

Bu sorun, System.Windows.Data.CollectionView.Refresh() çağrılmadan önce programlama ile öğelerin seçimini kaldırıp, çağrı tamamlandıktan sonra yeniden seçerek giderilebilir. 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
Kapsam Önemsiz
Sürüm 4,5
Türü Çalışma zamanı

Etkilenen API'ler

ZorlaSeçimKutusuVurgulandıMı

Ayrıntılar

System.Windows.Controls.ComboBox ve onun veri kaynağını içeren belirli eylem dizileri, System.NullReferenceException ile sonuçlanabilir.

Öneri

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

İsim Değer
Kapsam Önemsiz
Sürüm 4.6
Türü Çalışma zamanı

Etkilenen API'ler

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

Ayrıntılar

Bir koleksiyonda seçili öğeler varken Move(Int32, Int32) veya MoveItem(Int32, Int32) çağrılması, öğelerin gelecekte seçilmesi veya seçilmemesi durumunda System.Windows.Controls.ListBox öğeleriyle düzensiz davranışlara yol açabilir.

Öneri

System.Collections.ObjectModel.Collection<T>.Remove(T) ve System.Collections.ObjectModel.Collection<T>.Insert(Int32, T), Move(Int32, Int32) yerine çağrılması, 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.

İsim Değer
Kapsam Önemsiz
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.

İsim Değer
Kapsam Kenar
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

İsim Değer
Kapsam Binbaşı
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.

İsim Değer
Kapsam Kenar
Sürüm 4.6
Türü Çalışma zamanı

Etkilenen API'ler

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

WPF pencereleri tek bir monitörün dışına genişletildiğinde kırpılmadan 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, bu sürümler tek bir ekranın ötesine geçen WPF pencerelerini kırpıyordu.

Öneri

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

İsim Değer
Kapsam Önemsiz
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.Invariant için sabit sözleşme veya Requires için ön koşul sözleşmesi String.IsNullOrEmpty yöntemini çağırıyorsa, yeniden yazıcı derleyici uyarısı CC1036'yı gönderir: "Yöntemde [Pure] olmadan 'System.String.IsNullOrWhiteSpace(System.String)' yöntemine çağrı algılandı." Bu, derleyici hatası değil, 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.

İsim Değer
Kapsam Önemsiz
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

System.Windows.Controls.ItemsControl sanallaştırmayı (IsVirtualizing=true) ve öğe kaydırmayı (ScrollUnit=Item) kullanarak bir koleksiyon görüntülediğinde ve kontrol, piksel yüksekliği komşularından farklı olan bir öğeyi görüntülemek için kaydırıldığında, System.Windows.Controls.VirtualizingStackPanel koleksiyondaki tüm öğeler üzerinde 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 hiyerarşik veri içeren öğe kaydırma (gruplama etkin bir System.Windows.Controls.TreeView veya System.Windows.Controls.ItemsControl gibi) durumlarında 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 tanıtıldı. 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şiyor ancak önceki sürümlerde gerçekleşmiyorsa, yani System.Windows.Controls.ItemsControl farklı piksel yüksekliklerine sahip öğelerden oluşan düz bir listeyi kaydırıyorsa, iki çare vardır:

  • .NET Framework 4.6.2'yi yükleyin.
  • .NET Framework 4.6.1 için düzeltme HR 1605'i yükleyin.
İsim Değer
Kapsam Önemsiz
Sürüm 4.6.1
Türü Çalışma zamanı

Etkilenen API'ler

WPF yazım denetleyicisi tarafından ObjectDisposedException atıldı.

Ayrıntılar

WPF uygulamaları, uygulama kapatma işlemi sırasında, yazım denetleyicisi tarafından tetiklenen bir System.ObjectDisposedException yüzünden 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. Bir ayıklayıcı altında çalışan uygulamalarda zaman zaman ilk fırsat istisnalarının gözlemlenmeye devam edeceğini belirtmek gerekir.

Öneri

.NET Framework 4.7'ye yükseltme

İsim Değer
Kapsam Kenar
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 hatalar verir 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.

İsim Değer
Kapsam Kenar
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

SQL Server veritabanına localhost adresine çözümlenen bir TCP/IP bağlantısı kurulmaya çalışıldığında başarısız oluyor.

Ayrıntılar

SQL Server veritabanına TCP/IP ile bağlanmaya çalışıldığında, .NET Framework 4.6 ve 4.6.1'de, localhost çözümlemesi başarısız oluyor ve şu hata iletiliyor: "SQL Server bağlantısı kurarken ağ ile ilgili ya da örneğe özgü bir hata oluştu. Sunucu bulunamadı veya erişilebilir değil. Ö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.

İsim Değer
Kapsam Önemsiz
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ğlantı 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ı açma istekleri için, 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 dağıttığından bağlantı girişimi hızlı bir şekilde yeniden denenemez. Daha fazla bilgi için bkz. SQL Server Bağlantı Havuzu (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, .NET Framework 4.6.2'de kullanıma sunulan özelliği ayarlayarak System.Data.SqlClient.SqlConnectionStringBuilder.PoolBlockingPeriod bağlantı havuzu engelleme süresini yapılandırabilirsiniz. özelliğinin değeri, üç değerden herhangi birini alabilen numaralandırmanın bir üyesidir System.Data.SqlClient.PoolBlockingPeriod :

System.Data.SqlClient.SqlConnectionStringBuilder.PoolBlockingPeriod özelliğini AlwaysBlock olarak ayarlayarak önceki davranışı geri yükleyebilirsiniz.

İsim Değer
Kapsam Önemsiz
Sürüm 4.6.2
Türü Çalışma zamanı

Etkilenen API'ler

Küreselleşme

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.

İsim Değer
Kapsam Önemsiz
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 sağlamadan SecurityPermissionFlag.UnmanagedCode P/Invoke'ları ve System.Security.Cryptography.CngKey için izin talepleri olan SecurityPermissionFlag.UnmanagedCode kod yolları içerir. .NET Framework 4.6.2'den itibaren CngLightup, mümkün olan her yere System.Security.Cryptography.RSACng ile geçiş yapmak için 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.

İsim Değer
Kapsam Kenar
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öntem bir System.Security.Cryptography.CryptographicException dışarı fırlatır.

Öneri

Doğrulama başarısız olursa ve yöntem System.Security.Cryptography.CryptographicException döndürürse, yürütmesi 'nin işlenmesine bağlı olan herhangi bir kod yürütülmelidir.

İsim Değer
Kapsam Önemsiz
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ının bunları işleyemeyebileceği için `XmlDsigXsltTransform` ve `XmlDsigXsltTransform` kullanımını, ayrıca `Transform`'den türetilen türleri gözden geçirmek isteyebilir.

İsim Değer
Kapsam Önemsiz
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.

İsim Değer
Kapsam Kenar
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, bir System.Windows.UIElement.IsEnabled denetiminin üst öğesinin System.Windows.Controls.TextBlock özelliğini değiştirmek, o denetimin alt denetimlerini (köprüler ve düğmeler gibi) etkiler. .NET Framework 4.6.1 ve önceki sürümlerinde, bir System.Windows.Controls.TextBlock içindeki denetimler her zaman üst öğesinin System.Windows.Controls.TextBlockSystem.Windows.UIElement.IsEnabled özelliğinin durumunu yansıtmazdı.

Öneri

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

İsim Değer
Kapsam Önemsiz
Sürüm 4.6.2
Türü Çalışma zamanı

Etkilenen API'ler

ZorlaSeçimKutusuVurgulandıMı

Ayrıntılar

System.Windows.Controls.ComboBox ve onun veri kaynağını içeren belirli eylem dizileri, System.NullReferenceException ile sonuçlanabilir.

Öneri

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

İsim Değer
Kapsam Önemsiz
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. Asenkron ç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.
  • ScrollIntoView(Object) asenkron yanıtı tamamlanana kadar sütunları kaldırmaktan kaçının.
İsim Değer
Kapsam Kenar
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ı yapan ve ana kaydırma yönüne dik yönde çalışan bir System.Windows.Controls.ItemsControl için geçerlidir (başlıca örnek, EnableColumnVirtualization="True" olan System.Windows.Controls.DataGrid). 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ünün adlarını kullanmak için "Buraya Kaydırma" ve "Sağ Kenar" seçeneklerini içerir. Her ikisi de bir aday ofsetini hesaplar ve SetHorizontalOffset(Double)'yi çağırır.

Yeni ofset konumuna kaydırdıktan sonra, yeni sanallaştırılmayan içerik System.Windows.Controls.Primitives.IScrollInfo.ExtentWidth değerini değ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ılmaktan çıkarılır; sütunların çok geniş olduğunu, bu yüzden System.Windows.Controls.Primitives.IScrollInfo.ExtentWidth'inin 2000'e değiştiğini varsayalım. Kaydırma, HorizontalOffset=800 ile sona erer ve başparmak kaydırma çubuğunun ortasına "geri döner", tam olarak 800/2000 = 40%.

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 gerçekleştirilen veya System.Windows.Controls.Primitives.IScrollInfo.HorizontalOffset'e yapılan açık bir çağrı ile tetiklenen yatay kaydırmadan sonra SetHorizontalOffset(Double)'in tam değerine bağlı olan tüm uygulamaları da etkileyebilir.

Öneri

Tahmin edilen bir değer kullanan System.Windows.Controls.Primitives.IScrollInfo.HorizontalOffset için bir uygulama, yatay kaydırma nedeniyle sanallaştırmanın kaldırılması sonucu değişebilecek System.Windows.Controls.Primitives.IScrollInfo.ExtentWidth'i değiştirdikten sonra, gerçek değeri (ve System.Windows.Controls.Primitives.IScrollInfo.ExtentWidth değerini) getirecek şekilde değiştirilmelidir.

İsim Değer
Kapsam Önemsiz
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) System.Windows.Controls.Primitives.MultiSelector.SelectedItems'dan tamamen kaldırılamaz; yalnızca ilk örneklem kaldırılır. Ayrıca, System.Windows.Controls.Primitives.MultiSelector.SelectedItems'nun sonraki kullanımı (ör. SelectedItems.Clear()), System.ArgumentException artık veri kaynağında olmayan öğeler içerdiğinden dolayı System.Windows.Controls.Primitives.MultiSelector.SelectedItems gibi sorunlarla karşılaşabilir.

Öneri

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

İsim Değer
Kapsam Önemsiz
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

System.Windows.Controls.ItemsControl sanallaştırmayı (IsVirtualizing=true) ve öğe kaydırmayı (ScrollUnit=Item) kullanarak bir koleksiyon görüntülediğinde ve kontrol, piksel yüksekliği komşularından farklı olan bir öğeyi görüntülemek için kaydırıldığında, System.Windows.Controls.VirtualizingStackPanel koleksiyondaki tüm öğeler üzerinde 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 hiyerarşik veri içeren öğe kaydırma (gruplama etkin bir System.Windows.Controls.TreeView veya System.Windows.Controls.ItemsControl gibi) durumlarında 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 tanıtıldı. 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şiyor ancak önceki sürümlerde gerçekleşmiyorsa, yani System.Windows.Controls.ItemsControl farklı piksel yüksekliklerine sahip öğelerden oluşan düz bir listeyi kaydırıyorsa, iki çare vardır:

  • .NET Framework 4.6.2'yi yükleyin.
  • .NET Framework 4.6.1 için düzeltme HR 1605'i yükleyin.
İsim Değer
Kapsam Önemsiz
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, System.Windows.Controls.Ribbon.RibbonGroup için yerelleştirilmiş kaynaklar güncelleştirilerek .NET Framework 4.7 WPF düzeltmesinde düzeltilir, böylece doğru fırça seçilmiş olur.

Öneri

.NET Framework 4.7'ye yükseltme

İsim Değer
Kapsam Kenar
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 hatalar verir 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.

İsim Değer
Kapsam Kenar
Sürüm 4.6.1
Türü Çalışma zamanı

Etkilenen API'ler

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