.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
- 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 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, 0622
olur.
Ö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:
- System.Reflection.Assembly
- System.Reflection.MemberInfo(ve , System.Reflection.MethodInfo, System.Typeve System.Reflection.TypeInfodahil olmak üzere System.Reflection.FieldInfotüretilmiş türleri )
- System.Reflection.MethodBody
- System.Reflection.Module
- System.Reflection.ParameterInfo
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
- 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
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.
Ağ
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
- 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ü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 ve4.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ç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.42000
dö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.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
girdininInstallPath
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>
- Bağlama kaynak kodda dinamik olarak yapılandırılmışsa, tls 1.1 (SslProtocols.Tls11 veya kaynak kodunda protokolün önceki bir sürümünü) kullanmak için özelliğini güncelleştirinTcpTransportSecurity.SslProtocols.
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=true
ScrollUnit=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
- 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 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
- 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ö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
- 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.
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=true
ScrollUnit=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.