Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
- Attribute.GetCustomAttribute(MemberInfo, Type)
- Attribute.GetCustomAttribute(MemberInfo, Type, Boolean)
- Attribute.GetCustomAttributes(MemberInfo)
- Attribute.GetCustomAttributes(MemberInfo, Boolean)
- Attribute.GetCustomAttributes(MemberInfo, Type)
- Attribute.GetCustomAttributes(MemberInfo, Type, Boolean)
- CustomAttributeExtensions.GetCustomAttribute(MemberInfo, Type)
- CustomAttributeExtensions.GetCustomAttribute(MemberInfo, Type, Boolean)
- CustomAttributeExtensions.GetCustomAttribute<T>(MemberInfo)
- CustomAttributeExtensions.GetCustomAttribute<T>(MemberInfo, Boolean)
- CustomAttributeExtensions.GetCustomAttributes(MemberInfo)
- CustomAttributeExtensions.GetCustomAttributes(MemberInfo, Boolean)
- CustomAttributeExtensions.GetCustomAttributes(MemberInfo, Type)
- CustomAttributeExtensions.GetCustomAttributes(MemberInfo, Type, Boolean)
- CustomAttributeExtensions.GetCustomAttributes<T>(MemberInfo)
- CustomAttributeExtensions.GetCustomAttributes<T>(MemberInfo, Boolean)
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:
- System.Reflection.Assembly
- System.Reflection.MemberInfo (ve türetilmiş türleri, System.Reflection.FieldInfo, System.Reflection.MethodInfo, System.Type ve System.Reflection.TypeInfo dahil)
- System.Reflection.MethodBody
- System.Reflection.Module
- System.Reflection.ParameterInfo
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
- System.Reflection.Assembly
- System.Reflection.FieldInfo
- System.Reflection.MemberInfo
- System.Reflection.MethodBody
- System.Reflection.MethodInfo
- System.Reflection.Module
- System.Reflection.ParameterInfo
- System.Reflection.TypeInfo
- System.Type
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
- DataContractJsonSerializer(Type)
- DataContractJsonSerializer(Type, IEnumerable<Type>)
- DataContractJsonSerializer(Type, DataContractJsonSerializerSettings)
- DataContractJsonSerializer(Type, String)
- DataContractJsonSerializer(Type, String, IEnumerable<Type>)
- DataContractJsonSerializer(Type, XmlDictionaryString)
- DataContractJsonSerializer(Type, XmlDictionaryString, IEnumerable<Type>)
- DataContractJsonSerializer(Type, IEnumerable<Type>, Int32, Boolean, IDataContractSurrogate, Boolean)
- DataContractJsonSerializer(Type, String, IEnumerable<Type>, Int32, Boolean, IDataContractSurrogate, Boolean)
- DataContractJsonSerializer(Type, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, IDataContractSurrogate, Boolean)
- DataContractSerializer(Type)
- DataContractSerializer(Type, DataContractSerializerSettings)
- DataContractSerializer(Type, IEnumerable<Type>)
- DataContractSerializer(Type, String, String)
- DataContractSerializer(Type, String, String, IEnumerable<Type>)
- DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString)
- DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>)
- DataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate)
- DataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver)
- DataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate)
- DataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver)
- DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate)
- DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver)
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
VersiongirişininHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Fullanahtarındaki değeri4.6.xxxxxolarak değiştirildi ve .NET Framework 4.7 ve 4.7.1 için4.7.xxxxxolarak güncellendi. .NET Framework 4.5, 4.5.1 ve 4.5.2'de biçimindedir4.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çiminde4.0.30319.xxxxxdö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
InstallPathgirdininHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Fulldeğerini kullanın.
Önemli
Alt anahtar adı NET Framework Setup'dir, .NET Framework Setup değildir.
- .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 RuntimeEnvironment.GetSystemVersion() yöntemini çağırın. .NET Framework 4 ve alt sürümleri (4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7 ve 4.7.1) için v4.0.30319 dizesini döndürür.
| İ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>
- Bağlama kaynak kodda dinamik olarak yapılandırılmışsa, tls 1.1 (TcpTransportSecurity.SslProtocols veya kaynak kodunda protokolün önceki bir sürümünü) kullanmak için özelliğini güncelleştirinSslProtocols.Tls11.
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
- Char.GetUnicodeCategory(Char)
- CharUnicodeInfo.GetUnicodeCategory(Char)
- CharUnicodeInfo.GetUnicodeCategory(String, Int32)
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
- DSACng(CngKey)
- DSACng.Key
- DSACng.LegalKeySizes
- DSACng.CreateSignature(Byte[])
- DSACng.VerifySignature(Byte[], Byte[])
- RSACng(CngKey)
- RSACng.Key
- RSACng.Decrypt(Byte[], RSAEncryptionPadding)
- RSACng.SignHash(Byte[], HashAlgorithmName, RSASignaturePadding)
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
- System.Security.Cryptography.Xml.Transform
- System.Security.Cryptography.Xml.XmlDsigXPathTransform
- System.Security.Cryptography.Xml.XmlDsigXsltTransform
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.