Perubahan runtime untuk migrasi ke .NET Framework 4.6.x

Artikel ini mencantumkan masalah kompatibilitas aplikasi yang diperkenalkan dalam .NET Framework 4.6, 4.6.1, dan 4.6.2.

.NET Framework 4.6

ASP.NET

GridViews dengan AllowCustomPaging yang diatur ke true dapat memicu peristiwa PageIndexChanging saat meninggalkan halaman akhir tampilan

Detail lebih lanjut

Bug di .NET Framework 4.5 menyebabkan System.Web.UI.WebControls.GridView.PageIndexChanging terkadang tidak dijalankan untuk System.Web.UI.WebControls.GridView yang telah mengaktifkan System.Web.UI.WebControls.GridView.AllowCustomPaging.

Saran

Masalah ini telah diperbaiki di .NET Framework 4.6 dan dapat diatasi dengan meningkatkan ke versi .NET Framework tersebut. Sebagai solusinya, aplikasi dapat melakukan BindGrid eksplisit di semua Page_Load yang akan mencapai kondisi ini (System.Web.UI.WebControls.GridView ada di halaman terakhir dan System.Web.UI.WebControls.GridView.PageSize terakhir berbeda dengan System.Web.UI.WebControls.GridView.PageSize). Sebagai alternatif, aplikasi dapat dimodifikasi agar penomoran halaman dapat dilakukan (bukan penomoran halaman kustom), karena skenario tersebut tidak menunjukkan masalah.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.5
Tipe Waktu Operasi

API yang terpengaruh

Inti

ConcurrentDictionary yang telah diserialisasi di .NET Framework 4.5 menggunakan NetDataContractSerializer tidak dapat dideserialisasi oleh .NET Framework 4.5.1 atau 4.5.2

Detail lebih lanjut

Karena perubahan internal pada jenis tersebut, objek ConcurrentDictionary<TKey,TValue> yang diserialisasi dengan .NET Framework 4.5 dengan menggunakan System.Runtime.Serialization.NetDataContractSerializer tidak dapat dideserialisasi di .NET Framework 4.5.1 atau di .NET Framework 4.5.2. Perlu diperhatikan bahwa kebalikan dari upaya ini (serialisasi dengan .NET Framework 4.5.x dan deserialisasi dengan .NET Framework 4.5) dapat dilakukan. Demikian pula, semua serialisasi lintas versi 4.x berfungsi dengan .NET Framework 4.6. Serialisasi dan deserialisasi dengan satu versi .NET Framework tidak terpengaruh.

Saran

Jika perlu untuk menserialisasikan dan mendeserialisasi System.Collections.Concurrent.ConcurrentDictionary<TKey,TValue> antara .NET Framework 4.5 dan .NET Framework 4.5.1/4.5.2, serializer yang berbeda seperti System.Runtime.Serialization.DataContractSerializer harus digunakan alih-alih System.Runtime.Serialization.NetDataContractSerializer. Atau, karena masalah ini dibahas dalam .NET Framework 4.6, masalah ini dapat diselesaikan dengan meningkatkan ke versi .NET Framework tersebut.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.5.1
Tipe Waktu Operasi

API yang terpengaruh

Tidak dapat dideteksi melalui analisis API.

AppDomainSetup.DynamicBase tidak lagi dibuat acak oleh UseRandomizedStringHashAlgorithm

Detail lebih lanjut

Sebelum .NET Framework 4.6, nilai DynamicBase akan diacak antara domain aplikasi, atau di antara proses, jika UseRandomizedStringHashAlgorithm diaktifkan dalam file konfigurasi aplikasi. Dimulai di .NET Framework 4.6, DynamicBase akan mengembalikan hasil yang stabil antara instans aplikasi yang berbeda yang berjalan, dan di antara domain aplikasi yang berbeda. Basis dinamis masih akan berbeda untuk aplikasi yang berbeda; perubahan ini hanya menghapus elemen penamaan acak untuk instans yang berbeda dari aplikasi yang sama.

Saran

Ketahuilah bahwa mengaktifkan UseRandomizedStringHashAlgorithm tidak akan menyebabkan DynamicBase menjadi acak. Jika basis acak diperlukan, basis tersebut harus diproduksi dalam kode aplikasi Anda daripada melalui API ini.

Nama Nilai
Ruang Lingkup Edge
Versi 4.6
Tipe Waktu Operasi

API yang terpengaruh

Memanggil Attribute.GetCustomAttributes pada properti pengindeks tidak lagi melempar AmbiguousMatchException jika ambiguitas dapat diselesaikan berdasarkan jenis indeks

Detail lebih lanjut

Sebelum .NET Framework 4.6, memanggil GetCustomAttribute(s) properti pengindeks yang berbeda dari properti lain hanya berdasarkan jenis indeks akan menghasilkan System.Reflection.AmbiguousMatchException. Dimulai di .NET Framework 4.6, atribut properti akan dikembalikan dengan benar.

Saran

Ketahuilah bahwa GetCustomAttribute akan bekerja lebih sering sekarang. Jika aplikasi sebelumnya mengandalkan System.Reflection.AmbiguousMatchException, pantulan sekarang harus digunakan untuk secara eksplisit mencari beberapa pengindeks, sebagai gantinya.

Nama Nilai
Ruang Lingkup Edge
Versi 4.6
Tipe Waktu Operasi

API yang terpengaruh

COR_PRF_GC_ROOT_HANDLEs tidak didaftar oleh profiler.

Detail lebih lanjut

Di .NET Framework v4.5.1, API profil RootReferences2() tidak pernah mengembalikan COR_PRF_GC_ROOT_HANDLE secara salah (sebagai gantinya, ia dikembalikan sebagai COR_PRF_GC_ROOT_OTHER). Masalah ini diperbaiki mulai dari .NET Framework 4.6.

Saran

Masalah ini telah diperbaiki di .NET Framework 4.6 dan dapat diatasi dengan meningkatkan ke versi .NET Framework tersebut.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.5.1
Tipe Waktu Operasi

API yang terpengaruh

Tidak dapat dideteksi melalui analisis API.

ETW EventListeners tidak menangkap peristiwa dari penyedia dengan kata kunci eksplisit (seperti penyedia TPL)

Detail lebih lanjut

ETW EventListeners dengan masker kata kunci kosong tidak menangkap kejadian dengan tepat dari penyedia yang memiliki kata kunci eksplisit. Di .NET Framework 4.5, penyedia TPL mulai menyediakan kata kunci eksplisit dan memicu masalah ini. Di .NET Framework 4.6, EventListeners telah diperbarui agar tidak lagi mengalami masalah ini.

Saran

Untuk mengatasi masalah ini, ganti panggilan ke EnableEvents(EventSource, EventLevel) dengan panggilan ke overload EnableEvents yang secara eksplisit menentukan masker "kata kunci apa pun" yang akan digunakan: EnableEvents(eventSource, level, unchecked((EventKeywords)0xFFFFffffFFFFffff)).

Sebagai alternatif, masalah ini telah diperbaiki di .NET Framework 4.6 dan dapat diatasi dengan meningkatkan ke versi .NET Framework tersebut.

Nama Nilai
Ruang Lingkup Edge
Versi 4.5
Tipe Waktu Operasi

API yang terpengaruh

Kalender Persia sekarang menggunakan algoritma surya Hijriah

Detail lebih lanjut

Dimulai dengan .NET Framework 4.6, kelas System.Globalization.PersianCalendar menggunakan algoritma kalender surya Hijriah. Mengonversi tanggal antara System.Globalization.PersianCalendar dan kalender lainnya dapat menghasilkan perbedaan kecil mulai dari .NET Framework 4.6 untuk tanggal sebelum 1800 atau setelah 2023 (Gregorian). Selain itu, PersianCalendar.MinSupportedDateTime sekarang March 22, 0622 alih-alih March 21, 0622.

Saran

Ketahuilah bahwa beberapa tanggal awal atau terlambat mungkin sedikit berbeda saat menggunakan PersianCalendar di .NET Framework 4.6. Selain itu, saat menserialisasikan tanggal antara proses yang dapat berjalan pada versi .NET Framework yang berbeda, jangan menyimpannya sebagai string tanggal PersianCalendar (karena nilai tersebut mungkin berbeda).

Nama Nilai
Ruang Lingkup Kecil
Versi 4.6
Tipe Waktu Operasi

API yang terpengaruh

Objek refleksi tidak dapat lagi diteruskan dari kode terkelola ke klien DCOM yang tidak diproses

Detail lebih lanjut

Objek refleksi tidak dapat lagi diteruskan dari kode terkelola ke klien DCOM yang tidak diproses. Jenis berikut terpengaruh:

Panggilan ke IMarshal untuk objek menghasilkan E_NOINTERFACE.

Saran

Perbarui kode marshaling agar berfungsi dengan objek non-refleksi.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.6
Tipe Waktu Operasi

API yang terpengaruh

TargetFrameworkName untuk domain aplikasi bawaan tidak lagi otomatis menjadi null jika tidak ditentukan.

Detail lebih lanjut

System.AppDomainSetup.TargetFrameworkName yang sebelumnya bernilai null dalam domain aplikasi default, kecuali ditetapkan secara eksplisit. Mulai 4.6, System.AppDomainSetup.TargetFrameworkName properti untuk domain aplikasi default akan memiliki nilai default yang berasal dari TargetFrameworkAttribute (jika ada). Domain aplikasi non-default akan terus mewarisi System.AppDomainSetup.TargetFrameworkName dari domain aplikasi default (yang tidak akan menjadi null pada versi 4.6) kecuali jika digantikan secara eksplisit.

Saran

Kode harus diperbarui agar tidak bergantung pada TargetFrameworkName default ke null. Jika diperlukan bahwa properti ini terus bernilai null, dapat secara eksplisit diatur ke nilai tersebut.

Nama Nilai
Ruang Lingkup Edge
Versi 4.6
Tipe Waktu Operasi

API yang terpengaruh

X509Certificate2.ToString(Boolean) tidak melempar sekarang ketika .NET tidak dapat menangani sertifikat

Detail lebih lanjut

Dalam .NET Framework 4.5.2 dan versi yang lebih lama, metode ini akan melempar jika true diteruskan untuk parameter verbose dan ada sertifikat yang diinstal yang tidak didukung oleh .NET Framework. Sekarang, metode akan berhasil dan mengembalikan string valid yang menghilangkan bagian sertifikat yang tidak dapat diakses.

Saran

Kode apa pun yang bergantung pada X509Certificate2.ToString(Boolean) harus diperbarui agar mengantisipasi bahwa string yang dikembalikan dapat mengecualikan beberapa data sertifikat (seperti kunci publik, kunci pribadi, dan ekstensi) dalam beberapa kasus di mana API sebelumnya akan membuang pengecualian.

Nama Nilai
Ruang Lingkup Edge
Versi 4.6
Tipe Waktu Operasi

API yang terpengaruh

Data Informasi

Mencoba koneksi TCP/IP ke database SQL Server yang mengarah ke localhost gagal

Detail lebih lanjut

Dalam .NET Framework 4.6 dan 4.6.1, ketika mencoba koneksi TCP/IP ke database SQL Server yang berujung pada localhost mengalami kegagalan dengan kesalahan, "Terjadi kesalahan terkait jaringan atau khusus instans saat membuat koneksi ke SQL Server." Server tidak ditemukan atau tidak dapat diakses. Verifikasi bahwa nama instans sudah benar dan SQL Server dikonfigurasi untuk memungkinkan koneksi jarak jauh. (penyedia: Antarmuka Jaringan SQL, kesalahan: 26 - Kesalahan Menemukan Server/Instans Ditentukan)"

Saran

Masalah ini telah diatasi dan perilaku sebelumnya dipulihkan di .NET Framework 4.6.2. Untuk menyambungkan ke database SQL Server yang mengarah ke localhost, tingkatkan ke .NET Framework 4.6.2.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.6
Tipe Waktu Operasi

API yang terpengaruh

Tidak dapat dideteksi melalui analisis API.

Pemecah Masalah

Nilai penggabungan null tidak terlihat di debugger hingga satu langkah berikutnya

Detail lebih lanjut

Bug di .NET Framework 4.5 menyebabkan nilai yang ditetapkan melalui operasi penggabungan null tidak langsung terlihat di debugger setelah operasi penetapan dieksekusi saat dijalankan di Framework versi 64-bit.

Saran

Melakukan langkah tambahan dalam debugger akan menyebabkan nilai lokal atau bidang diperbarui secara akurat. Selain itu, masalah ini telah diperbaiki di .NET Framework 4.6; meningkatkan ke versi Framework tersebut akan menyelesaikan masalah.

Nama Nilai
Ruang Lingkup Edge
Versi 4.5
Tipe Waktu Operasi

API yang terpengaruh

Tidak dapat dideteksi melalui analisis API.

Jaringan

ContentDisposition DateTimes mengembalikan string yang sedikit berbeda

Detail lebih lanjut

Representasi string dari System.Net.Mime.ContentDisposition telah diperbarui, mulai dari versi 4.6, untuk selalu mewakili komponen jam dari System.DateTime dengan dua digit. Ini untuk mematuhi RFC822 dan RFC2822. Ini menyebabkan ToString() mengembalikan string yang sedikit berbeda dalam 4,6 dalam skenario di mana salah satu elemen waktu disposisi adalah sebelum pukul 10.00. Perhatikan bahwa ContentDispositions terkadang diserialisasikan dengan mengonversinya menjadi string, sehingga semua operasi, serialisasi, atau panggilan GetHashCode harus diulas.

Saran

Jangan berharap bahwa representasi string ContentDispositions dari versi .NET Framework yang berbeda akan membandingkan satu sama lain dengan benar. Konversi string kembali ke ContentDispositions, jika memungkinkan, sebelum melakukan perbandingan.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.6
Tipe Waktu Operasi

API yang terpengaruh

Serialisasi

Pesan pengecualian telah berubah pada serialisasi *DataContract* yang gagal jika terdapat jenis yang tidak dikenal

Detail lebih lanjut

Dimulai di .NET Framework 4.6, pesan pengecualian yang diberikan jika System.Runtime.Serialization.DataContractSerializer atau System.Runtime.Serialization.Json.DataContractJsonSerializer gagal menserialisasikan atau mendeserialisasi karena hilangnya 'jenis yang diketahui' telah diklarifikasi.

Saran

Aplikasi tidak boleh bergantung pada pesan pengecualian tertentu. Jika aplikasi bergantung pada pesan ini, perbarui untuk mengharapkan pesan baru atau (sebaiknya) mengubahnya agar hanya bergantung pada jenis pengecualian.

Nama Nilai
Ruang Lingkup Edge
Versi 4.6
Tipe Waktu Operasi

API yang terpengaruh

Penyiapan dan Penyebaran

Perubahan penerapan versi produk dalam .NET Framework 4.6 dan versi yang lebih baru

Detail lebih lanjut

Versi produk telah berubah dari rilis .NET Framework sebelumnya, terutama dari .NET Framework 4, 4.5, 4.5.1, dan 4.5.2. Berikut ini adalah perubahan terperinci:

  • Nilai Version entri dalam HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full kunci telah berubah menjadi 4.6.xxxxx untuk .NET Framework 4.6 dan rilis minor, dan menjadi 4.7.xxxxx untuk .NET Framework 4.7 dan 4.7.1. Dalam .NET Framework 4.5, 4.5.1, dan 4.5.2, ia memiliki format 4.5.xxxxx.
  • File dan penentuan versi produk untuk file .NET Framework telah berubah dari skema versi sebelumnya 4.0.30319.x menjadi 4.6.X.0 untuk .NET Framework 4.6 dan rilis minor berikutnya, dan menjadi 4.7.X.0 untuk .NET Framework 4.7 dan 4.7.1. Anda dapat melihat nilai baru ini saat melihat Properti file setelah mengklik kanan file.
  • Atribut AssemblyFileVersionAttribute dan AssemblyInformationalVersionAttribute untuk assembly terkelola memiliki nilai Versi dalam bentuk 4.6.X.0 untuk .NET Framework 4.6 dan versi minor, dan 4.7.X.0 untuk .NET Framework 4.7 dan 4.7.1.
  • Dalam .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, dan 4.7.1, Environment.Version properti mengembalikan string 4.0.30319.42000versi tetap . Dalam .NET Framework 4, 4.5, 4.5.1, dan 4.5.2, ia mengembalikan string versi dalam format 4.0.30319.xxxxx (misalnya, "4.0.30319.18010"). Perhatikan bahwa kami tidak menyarankan kode aplikasi mengambil dependensi baru pada properti Environment.Version.

Untuk informasi selengkapnya, lihat Cara: Menentukan Versi .NET Framework mana yang Diinstal.

Saran

Secara umum, aplikasi harus bergantung pada teknik yang direkomendasikan untuk mendeteksi hal-hal seperti versi runtime dari .NET Framework dan direktori penginstalan:

  • Untuk mendeteksi versi runtime .NET Framework, lihat Cara: Menentukan Versi .NET Framework Mana yang Diinstal.
  • Untuk menentukan jalur penginstalan untuk .NET Framework, gunakan nilai InstallPath entri di kunci HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full .

Penting

Nama subkunci adalah NET Framework Setup, bukan .NET Framework Setup.

  • Untuk menentukan jalur direktori ke runtime bahasa umum dari .NET Framework, panggil metode RuntimeEnvironment.GetRuntimeDirectory().
  • Untuk mendapatkan versi CLR, panggil metode RuntimeEnvironment.GetSystemVersion(). Untuk .NET Framework 4 dan rilis lebih kecil (.NET Framework 4.5, 4.5.1, 4.5.2, dan .NET Framework 4.6, 4.6.1, 4.6.2, 4.7, dan 4.7.1), menghasilkan string v4.0.30319.
Nama Nilai
Ruang Lingkup Kecil
Versi 4.6
Tipe Waktu Operasi

API yang terpengaruh

Tidak dapat dideteksi melalui analisis API.

.NET Framework 4.6 tidak menggunakan versi 4.5.x.x saat mendaftarkan dirinya di registri

Detail lebih lanjut

Seperti yang diharapkan, kunci versi yang diatur dalam registri (pada HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full) untuk .NET Framework 4.6 dimulai dengan '4.6', bukan '4.5'. Aplikasi yang bergantung pada kunci registri ini untuk mengetahui versi .NET Framework mana yang diinstal pada komputer harus diperbarui untuk memahami bahwa 4.6 adalah versi baru yang mungkin, dan yang kompatibel dengan rilis 4.5.x sebelumnya.

Saran

Perbarui aplikasi yang memeriksa pemasangan .NET Framework 4.5 dengan mencari kunci registri 4.5 dan menerima 4.6 juga.

Nama Nilai
Ruang Lingkup Edge
Versi 4.6
Tipe Waktu Operasi

API yang terpengaruh

Tidak dapat dideteksi melalui analisis API.

Windows Communication Foundation (WCF)

Layanan WCF yang menggunakan NETTCP dengan keamanan SSL dan autentikasi sertifikat MD5

Detail lebih lanjut

.NET Framework 4.6 menambahkan TLS 1.1 dan TLS 1.2 ke daftar protokol default WCF SSL. Ketika komputer klien dan server menginstal .NET Framework 4.6 atau yang lebih baru, TLS 1.2 digunakan untuk negosiasi. TLS 1.2 tidak mendukung autentikasi sertifikat MD5. Akibatnya, jika pelanggan menggunakan sertifikat MD5, klien WCF akan gagal terhubung ke layanan WCF.

Saran

Anda dapat mengatasi masalah ini sehingga klien WCF dapat tersambung ke server WCF dengan melakukan salah satu hal berikut:

  • Perbarui sertifikat untuk tidak menggunakan algoritma MD5. Ini adalah solusi yang direkomendasikan.
  • Jika pengikatan tidak dikonfigurasi secara dinamis dalam kode sumber, perbarui file konfigurasi aplikasi untuk menggunakan TLS 1.1 atau versi protokol yang lebih lama. Ini memungkinkan Anda untuk terus menggunakan sertifikat dengan algoritma hash MD5.

Peringatan

Solusi ini tidak disarankan, karena sertifikat dengan algoritma hash MD5 dianggap tidak aman.

File konfigurasi berikut melakukan ini:

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

Peringatan

Solusi ini tidak disarankan, karena sertifikat dengan algoritma hash MD5 dianggap tidak aman.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.6
Tipe Waktu Operasi

API yang terpengaruh

Tidak dapat dideteksi melalui analisis API.

Windows Presentation Foundation (WPF)

Mengakses item yang dipilih WPF DataGrid dari pengendali acara UnloadingRow DataGrid dapat menyebabkan NullReferenceException

Detail lebih lanjut

Dikarenakan bug di .NET Framework 4.5, penanganan aktivitas untuk peristiwa DataGrid yang melibatkan penghapusan baris dapat menyebabkan System.NullReferenceException muncul jika mereka mengakses properti DataGrid atau System.Windows.Controls.Primitives.Selector.SelectedItem milik System.Windows.Controls.Primitives.MultiSelector.SelectedItems.

Saran

Masalah ini telah diperbaiki di .NET Framework 4.6 dan dapat diatasi dengan meningkatkan ke versi .NET Framework tersebut.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.5
Tipe Waktu Operasi

API yang terpengaruh

Memanggil Items.Refresh pada ListBox, ListView, atau DataGrid WPF dengan item yang dipilih dapat menyebabkan item duplikat muncul di elemen

Detail lebih lanjut

Di .NET Framework 4.5, memanggil ListBox.Items.Refresh dari kode saat item dipilih di System.Windows.Controls.ListBox dapat menyebabkan item yang dipilih diduplikasi dalam daftar. Masalah serupa terjadi dengan System.Windows.Controls.ListView dan System.Windows.Controls.DataGrid. Masalah ini diperbaiki di .NET Framework 4.6.

Saran

Masalah ini dapat diatasi dengan membatalkan pilihan item secara terprogram sebelum System.Windows.Data.CollectionView.Refresh() dipanggil lalu memilihnya kembali setelah panggilan selesai. Sebagai alternatif, masalah ini telah diperbaiki di .NET Framework 4.6 dan dapat diatasi dengan meningkatkan ke versi .NET Framework tersebut.

Nilai
Cakupan Kecil
Versi 4.5
Tipe Waktu Operasi

API yang terpengaruh

PaksaApakahKotakPemilihanDisorot

Detail lebih lanjut

Urutan tindakan tertentu yang melibatkan System.Windows.Controls.ComboBox dan sumber datanya dapat menghasilkan System.NullReferenceException.

Saran

Jika memungkinkan, tingkatkan ke .NET Framework 4.6.2.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.6
Tipe Waktu Operasi

API yang terpengaruh

Masalah pengikatan ListBoxItem IsSelected dengan ObservableCollection<T>.Move

Detail lebih lanjut

Memanggil Move(Int32, Int32) atau MoveItem(Int32, Int32) pada koleksi yang terikat ke System.Windows.Controls.ListBox dengan item yang dipilih dapat menyebabkan perilaku tidak terduga dalam pilihan atau pembatalan pilihan item System.Windows.Controls.ListBox di kemudian hari.

Saran

Memanggil System.Collections.ObjectModel.Collection<T>.Remove(T) dan System.Collections.ObjectModel.Collection<T>.Insert(Int32, T) alih-alih Move(Int32, Int32) akan mengatasi masalah ini. Sebagai alternatif, masalah ini telah diperbaiki di .NET Framework 4.6 dan dapat diatasi dengan meningkatkan ke versi .NET Framework tersebut.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.5
Tipe Waktu Operasi

API yang terpengaruh

Mengeklik kanan header baris WPF DataGrid akan mengubah pilihan DataGrid

Detail lebih lanjut

Mengklik kanan header baris System.Windows.Controls.DataGrid yang telah dipilih saat beberapa baris juga dipilih akan mengubah pilihan System.Windows.Controls.DataGrid menjadi hanya pada baris tersebut.

Saran

Masalah ini telah diperbaiki di .NET Framework 4.6 dan dapat diatasi dengan meningkatkan ke versi .NET Framework tersebut.

Nama Nilai
Ruang Lingkup Edge
Versi 4.5
Tipe Waktu Operasi

API yang terpengaruh

WPF menghasilkan proses wisptis.exe yang dapat membekukan mouse

Detail lebih lanjut

Masalah diperkenalkan di 4.5.2 yang menyebabkan wisptis.exe muncul yang dapat membekukan input mouse.

Saran

Perbaikan untuk masalah ini tersedia dalam rilis layanan .NET Framework 4.5.2 (hotfix rollup 3026376), atau dengan meningkatkan ke .NET Framework 4.6

Nama Nilai
Ruang Lingkup Utama
Versi 4.5.2
Tipe Waktu Operasi

API yang terpengaruh

Tidak dapat dideteksi melalui analisis API.

Pemeriksaan ejaan WPF dalam kontrol berkemampuan teks tidak akan berfungsi di Windows 10 untuk bahasa yang tidak ada dalam daftar bahasa input OS

Detail lebih lanjut

Saat berjalan pada Windows 10, pemeriksa ejaan mungkin tidak berfungsi untuk kontrol yang mendukung teks WPF karena kemampuan pemeriksaan ejaan platform hanya tersedia untuk bahasa yang ada dalam daftar bahasa input. Di Windows 10, ketika bahasa ditambahkan ke daftar keyboard yang tersedia, Windows secara otomatis mengunduh dan menginstal paket Fitur sesuai Permintaan (FOD) yang sesuai yang menyediakan kemampuan pemeriksaan ejaan. Dengan menambahkan bahasa ke daftar bahasa input, pemeriksa ejaan akan didukung.

Saran

Ketahuilah bahwa bahasa atau teks yang akan diperiksa ejaan harus ditambahkan sebagai bahasa input agar pemeriksaan ejaan berfungsi di Windows 10.

Nama Nilai
Ruang Lingkup Edge
Versi 4.6
Tipe Waktu Operasi

API yang terpengaruh

Tidak dapat dideteksi melalui analisis API.

Jendela WPF dirender tanpa kliping saat memperluas di luar satu monitor

Detail lebih lanjut

Dalam .NET Framework 4.6 yang berjalan pada Windows 8 ke atas, seluruh jendela dirender tanpa pemotongan ketika melebihi satu tampilan dalam konfigurasi multi-monitor. Ini berbeda dari versi .NET Framework sebelumnya yang akan memotong jendela WPF yang melebar di luar satu layar.

Saran

Perilaku ini (apakah akan mengklip atau tidak) dapat diatur secara eksplisit menggunakan <EnableMultiMonitorDisplayClipping> elemen dalam <appSettings> file konfigurasi aplikasi, atau dengan mengatur EnableMultiMonitorDisplayClipping properti saat pengaktifan aplikasi.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.6
Tipe Waktu Operasi

API yang terpengaruh

Tidak dapat dideteksi melalui analisis API.

Kerangka Kerja .NET 4.6.1

Alat

Contract.Invariant atau Contract.Requires<TException> tidak menganggap String.IsNullOrEmpty murni

Detail lebih lanjut

Untuk aplikasi yang menargetkan .NET Framework 4.6.1, jika kontrak invarian untuk Contract.Invariant atau kontrak prasyarat untuk Requires memanggil metode String.IsNullOrEmpty, penulis ulang mengeluarkan peringatan kompilator CC1036: "Panggilan yang terdeteksi ke metode 'System.String.IsNullOrWhiteSpace(System.String)' tanpa atribut [Pure] di dalam metode." Ini adalah peringatan kompilator daripada kesalahan kompilator.

Saran

Perilaku ini ditangani dalam Masalah GitHub #339. Untuk menghilangkan peringatan ini, Anda dapat mengunduh dan mengkompilasi versi kode sumber yang diperbarui untuk alat Kontrak Kode dari GitHub. Informasi unduhan ditemukan di bagian bawah halaman.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.6.1
Tipe Waktu Operasi

API yang terpengaruh

Windows Presentation Foundation (WPF)

Menggulir daftar item datar dengan tinggi piksel yang berbeda-beda

Detail lebih lanjut

System.Windows.Controls.ItemsControl Ketika menampilkan koleksi menggunakan virtualisasi (IsVirtualizing=true) dan pengguliran item (ScrollUnit=Item), serta saat kontrol menggulir untuk menunjukkan item yang tinggi pikselnya berbeda dari tetangganya, System.Windows.Controls.VirtualizingStackPanel mengiterasi semua item dalam koleksi. UI tidak responsif selama iterasi ini. Iterasi terjadi dalam keadaan lain, bahkan dalam rilis .NET Framework sebelumnya. Misalnya, itu terjadi ketika pengguliran piksel (ScrollUnit=Pixel) saat menemukan item dengan tinggi piksel yang berbeda, dan ketika menggulir item data hierarkis (seperti System.Windows.Controls.TreeView atau System.Windows.Controls.ItemsControl dengan pengelompokan diaktifkan) setelah menemukan item dengan jumlah item turunan yang berbeda dari tetangganya. Untuk kasus pengguliran item dan tinggi piksel yang berbeda, iterasi diperkenalkan dalam .NET Framework 4.6.1 untuk memperbaiki bug dalam tata letak data hierarkis. Tidak diperlukan jika data datar (tidak ada hierarki), dan .NET Framework 4.6.2 tidak melakukannya dalam kasus tersebut.

Saran

Jika iterasi terjadi di .NET Framework 4.6.1 tetapi tidak dalam rilis sebelumnya - yaitu, jika System.Windows.Controls.ItemsControl adalah item - menggulir daftar datar dengan item dengan tinggi piksel yang berbeda - ada dua solusi:

  • Instal .NET Framework 4.6.2.
  • Instal perbaikan HR 1605 untuk .NET Framework 4.6.1.
Nama Nilai
Ruang Lingkup Kecil
Versi 4.6.1
Tipe Waktu Operasi

API yang terpengaruh

ObjectDisposedException dilemparkan oleh pemeriksa ejaan WPF

Detail lebih lanjut

Aplikasi WPF terkadang mengalami crash selama pematian aplikasi dengan kesalahan System.ObjectDisposedException yang dilemparkan oleh pemeriksa ejaan. Ini diperbaiki dalam .NET Framework 4.7 WPF dengan menangani pengecualian dengan baik, oleh karena itu memastikan bahwa aplikasi tidak lagi terpengaruh. Perlu dicatat bahwa pengecualian kesempatan pertama sesekali akan terus diamati dalam aplikasi yang berjalan di bawah debugger.

Saran

Tingkatkan ke .NET Framework 4.7

Nama Nilai
Ruang Lingkup Edge
Versi 4.6.1
Tipe Waktu Operasi

API yang terpengaruh

Tidak dapat dideteksi melalui analisis API.

Pemeriksaan Ejaan WPF gagal dengan cara yang tidak terduga

Detail lebih lanjut

Ini termasuk sejumlah masalah Pemeriksa Ejaan WPF:

Saran

Masalah #1 - Ini telah diperbaiki dalam .NET Framework 4.6.2. Masalah #2 - Pemeriksa Ejaan WPF tidak lagi didukung saat aplikasi diluncurkan menggunakan opsi 'jalankan sebagai pengguna yang berbeda'. Memulai .NET Framework 4.6.2, aplikasi yang diluncurkan dengan cara ini tidak akan lagi mengalami crash secara tiba-tiba - sebagai gantinya Pemeriksa Ejaan akan dinonaktifkan secara diam-diam. Masalah #3 - Ini telah diperbaiki di .NET Framework 4.6.2.

Nama Nilai
Ruang Lingkup Edge
Versi 4.6.1
Tipe Waktu Operasi

API yang terpengaruh

Tidak dapat dideteksi melalui analisis API.

.NET Framework 4.6.2

Data Informasi

Mencoba koneksi TCP/IP ke database SQL Server yang mengarah ke localhost gagal

Detail lebih lanjut

Dalam .NET Framework 4.6 dan 4.6.1, ketika mencoba koneksi TCP/IP ke database SQL Server yang berujung pada localhost mengalami kegagalan dengan kesalahan, "Terjadi kesalahan terkait jaringan atau khusus instans saat membuat koneksi ke SQL Server." Server tidak ditemukan atau tidak dapat diakses. Verifikasi bahwa nama instans sudah benar dan SQL Server dikonfigurasi untuk memungkinkan koneksi jarak jauh. (penyedia: Antarmuka Jaringan SQL, kesalahan: 26 - Kesalahan Menemukan Server/Instans Ditentukan)"

Saran

Masalah ini telah diatasi dan perilaku sebelumnya dipulihkan di .NET Framework 4.6.2. Untuk menyambungkan ke database SQL Server yang mengarah ke localhost, tingkatkan ke .NET Framework 4.6.2.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.6
Tipe Waktu Operasi

API yang terpengaruh

Tidak dapat dideteksi melalui analisis API.

Periode pemblokiran kumpulan koneksi untuk database Azure SQL dihapus

Detail lebih lanjut

Dimulai dengan .NET Framework 4.6.2, untuk permintaan buka koneksi ke database Azure SQL yang diketahui (*.database.windows.net, *.database.chinacloudapi.cn, *.database.usgovcloudapi.net, *.database.cloudapi.de), periode pemblokiran kumpulan koneksi dihapus, dan kesalahan buka koneksi tidak di-cache. Upaya untuk mencoba kembali permintaan terbuka koneksi akan terjadi segera setelah kesalahan koneksi sementara. Perubahan ini memungkinkan upaya terbuka koneksi untuk segera dicoba kembali untuk database Azure SQL, sehingga meningkatkan performa aplikasi dengan dukungan cloud. Untuk semua upaya koneksi lainnya, periode pemblokiran kumpulan koneksi terus diberlakukan.

Dalam .NET Framework 4.6.1 dan versi yang lebih lama, ketika aplikasi mengalami kegagalan koneksi sementara saat menyambungkan ke database, upaya koneksi tidak dapat dicoba kembali dengan cepat, karena kumpulan koneksi menyimpan kesalahan dan menumbuhkannya kembali selama 5 detik hingga 1 menit. Untuk informasi selengkapnya, lihat Kumpulan Koneksi SQL Server (ADO.NET). Perilaku ini menjadi masalah bagi koneksi ke database Azure SQL, yang sering gagal dengan kesalahan sementara yang biasanya dipulihkan dalam beberapa detik. Fitur pemblokiran kumpulan koneksi berarti bahwa aplikasi tidak dapat terhubung ke database untuk periode yang luas, meskipun database tersedia dan aplikasi perlu dirender dalam beberapa detik.

Saran

Jika perilaku ini tidak diinginkan, Anda dapat mengonfigurasi periode pemblokiran kumpulan koneksi dengan mengatur properti yang System.Data.SqlClient.SqlConnectionStringBuilder.PoolBlockingPeriod diperkenalkan dalam .NET Framework 4.6.2. Nilai properti adalah anggota enumerasi System.Data.SqlClient.PoolBlockingPeriod yang dapat berupa salah satu dari tiga nilai:

Anda dapat memulihkan perilaku sebelumnya dengan mengatur properti ke System.Data.SqlClient.SqlConnectionStringBuilder.PoolBlockingPeriodAlwaysBlock.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.6.2
Tipe Waktu Operasi

API yang terpengaruh

Globalisasi

Kategori standar Unicode versi 8.0 sekarang didukung

Detail lebih lanjut

Di .NET Framework 4.6.2, data Unicode telah ditingkatkan dari Unicode Standard versi 6.3 ke versi 8.0. Saat meminta kategori karakter Unicode di .NET Framework 4.6.2, beberapa hasil mungkin tidak cocok dengan hasil dalam versi .NET Framework sebelumnya. Perubahan ini sebagian besar mempengaruhi suku kata Cherokee serta tanda vokal dan tanda nada New Tai Lue.

Saran

Tinjau kode dan hapus/ubah logika yang bergantung pada kategori karakter Unicode yang dikodekan secara permanen.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.6.2
Tipe Waktu Operasi

API yang terpengaruh

Keamanan

RSACng dan DSACng sekali lagi dapat digunakan dalam skenario Kepercayaan Parsial

Detail lebih lanjut

CngLightup (digunakan dalam beberapa api kripto tingkat lebih tinggi, seperti System.Security.Cryptography.Xml.EncryptedXml) dan System.Security.Cryptography.RSACng dalam beberapa kasus mengandalkan kepercayaan penuh. Ini termasuk P/Invokes tanpa menegaskan SecurityPermissionFlag.UnmanagedCode izin, dan jalur kode di mana System.Security.Cryptography.CngKey memiliki permintaan izin untuk SecurityPermissionFlag.UnmanagedCode. Dimulai dengan .NET Framework 4.6.2, CngLightup digunakan untuk beralih ke System.Security.Cryptography.RSACng sedapat mungkin. Akibatnya, aplikasi dengan kepercayaan parsial yang telah berhasil menggunakan System.Security.Cryptography.Xml.EncryptedXml mulai gagal dan melempar pengecualian SecurityException. Perubahan ini menambahkan pernyataan yang diperlukan agar semua fungsi yang menggunakan CngLightup memiliki izin yang diperlukan.

Saran

Jika perubahan ini dalam .NET Framework 4.6.2 berdampak negatif pada aplikasi kepercayaan parsial Anda, tingkatkan ke .NET Framework 4.7.1.

Nama Nilai
Ruang Lingkup Edge
Versi 4.6.2
Tipe Waktu Operasi

API yang terpengaruh

RSACng.VerifyHash sekarang mengembalikan False untuk kegagalan verifikasi apa pun

Detail lebih lanjut

Dimulai dengan .NET Framework 4.6.2, metode ini mengembalikan False jika tanda tangan itu sendiri diformat dengan buruk. Sekarang mengembalikan false untuk kegagalan verifikasi apa pun. Dalam .NET Framework 4.6 dan 4.6.1, metode melemparkan System.Security.Cryptography.CryptographicException jika tanda tangan itu sendiri diformat dengan buruk.

Saran

Kode apa pun yang eksekusinya tergantung pada penanganan System.Security.Cryptography.CryptographicException yang seharusnya dijalankan jika validasi gagal dan metode mengembalikan False.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.6.2
Tipe Waktu Operasi

API yang terpengaruh

Perubahan Pemecahan SignedXml dan EncryptedXml

Detail lebih lanjut

Di .NET Framework 4.6.2, perbaikan keamanan dalam System.Security.Cryptography.Xml.SignedXml dan System.Security.Cryptography.Xml.EncryptedXml mengakibatkan perilaku waktu proses yang berbeda. Contohnya:

  • Jika dokumen memiliki beberapa elemen dengan atribut yang sama id dan tanda tangan menargetkan salah satu elemen tersebut sebagai akar tanda tangan, dokumen sekarang akan dianggap tidak valid.
  • Dokumen yang menggunakan algoritma transformasi XPath non-kanonis dalam referensi sekarang dianggap tidak valid.
  • Dokumen yang menggunakan algoritma transformasi XSLT non-kanonis dalam referensi sekarang dianggap tidak valid.
  • Setiap program yang menggunakan tanda tangan sumber daya eksternal yang terpisah tidak akan dapat melakukannya.

Saran

Pengembang mungkin ingin meninjau penggunaan XmlDsigXsltTransform dan XmlDsigXsltTransform, serta jenis yang berasal dari Transform karena penerima dokumen mungkin tidak dapat memprosesnya.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.6.2
Tipe Waktu Operasi

API yang terpengaruh

Windows Communication Foundation (WCF)

Menghapus Ssl3 dari WCF TransportDefaults

Detail lebih lanjut

Saat menggunakan NetTcp dengan keamanan transportasi dan jenis sertifikat kredensial, protokol SSL 3 tidak lagi menjadi protokol default yang digunakan untuk menegosiasikan koneksi yang aman. Dalam kebanyakan kasus, seharusnya tidak ada dampak pada aplikasi yang ada karena TLS 1.0 selalu disertakan dalam daftar protokol untuk NetTcp. Semua klien yang ada harus dapat menegosiasikan koneksi menggunakan setidaknya TLS1.0.

Saran

Jika Ssl3 diperlukan, gunakan salah satu mekanisme konfigurasi berikut untuk menambahkan Ssl3 ke daftar protokol yang dinegosiasikan.

Nama Nilai
Ruang Lingkup Edge
Versi 4.6.2
Tipe Waktu Operasi

API yang terpengaruh

Windows Presentation Foundation (WPF)

Mengubah properti IsEnabled dari induk kontrol TextBlock akan memengaruhi semua kontrol anak.

Detail lebih lanjut

Dimulai dengan .NET Framework 4.6.2, perubahan pada properti System.Windows.UIElement.IsEnabled dari kontrol induk System.Windows.Controls.TextBlock akan mempengaruhi kontrol turunan mana pun (seperti hyperlink dan tombol) dari kontrol System.Windows.Controls.TextBlock. Dalam .NET Framework 4.6.1 dan versi yang lebih lama, kontrol di dalam System.Windows.Controls.TextBlock tidak selalu mencerminkan status properti System.Windows.UIElement.IsEnabled dari induk System.Windows.Controls.TextBlock.

Saran

Tidak ada. Perubahan ini sesuai dengan perilaku yang diharapkan untuk pengontrol di dalam System.Windows.Controls.TextBlock kontrol.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.6.2
Tipe Waktu Operasi

API yang terpengaruh

PaksaApakahKotakPemilihanDisorot

Detail lebih lanjut

Urutan tindakan tertentu yang melibatkan System.Windows.Controls.ComboBox dan sumber datanya dapat menghasilkan System.NullReferenceException.

Saran

Jika memungkinkan, tingkatkan ke .NET Framework 4.6.2.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.6
Tipe Waktu Operasi

API yang terpengaruh

DataGridCellsPanel.BringIndexIntoView menghasilkan ArgumentOutOfRangeException

Detail lebih lanjut

ScrollIntoView(Object) akan berfungsi secara asinkron ketika virtualisasi kolom diaktifkan tetapi lebar kolom belum ditentukan. Jika kolom dihapus sebelum pekerjaan asinkron terjadi, System.ArgumentOutOfRangeException dapat terjadi.

Saran

Salah satu hal berikut ini:

  • Tingkatkan ke .NET Framework 4.7.
  • Instal patch layanan terbaru untuk .NET Framework 4.6.2.
  • Hindari menghapus kolom sampai respons asinkron ScrollIntoView(Object) selesai.
Nama Nilai
Ruang Lingkup Edge
Versi 4.6.2
Tipe Waktu Operasi

API yang terpengaruh

Pengguliran horizontal dan virtualisasi

Detail lebih lanjut

Perubahan ini berlaku untuk System.Windows.Controls.ItemsControl yang melakukan virtualisasi sendiri ke arah yang tegak lurus terhadap arah pengguliran utama (contoh utamanya adalah System.Windows.Controls.DataGrid dengan EnableColumnVirtualization="True"). Hasil operasi pengguliran horizontal tertentu telah diubah untuk menghasilkan hasil yang lebih intuitif dan lebih analog dengan hasil operasi vertikal yang sebanding.

Operasi yang dimaksud mencakup "Gulir Di Sini" dan "Tepi Kanan", dengan menggunakan nama pada menu yang diperoleh dengan mengklik kanan bilah gulir horizontal. Kedua metode ini menghitung offset kandidat dan memanggil SetHorizontalOffset(Double).

Setelah menggulir ke offset baru, konsep "di sini" atau "tepi kanan" mungkin telah berubah karena konten yang baru dide-virtualisasi telah mengubah nilai System.Windows.Controls.Primitives.IScrollInfo.ExtentWidth.

Sebelum .NET Framework 4.6.2, operasi gulir hanya menggunakan nilai offset kandidat, meskipun mungkin sudah tidak 'di sini' atau di 'tepi kanan' lagi. Ini menghasilkan efek seperti "memantulkan" jempol gulir, paling baik ditunjukkan melalui contoh. Misalkan memiliki System.Windows.Controls.DataGrid ExtentWidth=1000 dan Width=200. Gulir ke "Tepi Kanan" menggunakan offset kandidat 1000 - 200 = 800. Saat menggulir ke offset tersebut, kolom baru tidak divirtualisasi; misalkan mereka sangat luas, sehingga perubahan pada System.Windows.Controls.Primitives.IScrollInfo.ExtentWidth 2000. Gulir berakhir dengan HorizontalOffset=800, dan jempol "memantul" kembali ke dekat tengah bilah gulir - tepatnya pada 800/2000 = 40%.

Perubahannya adalah menghitung ulang offset kandidat baru ketika situasi ini terjadi, dan mencoba lagi. (Inilah cara kerja pengguliran vertikal.)

Perubahan menghasilkan pengalaman yang lebih dapat diprediksi dan intuitif untuk pengguna akhir, tetapi juga dapat memengaruhi aplikasi apa pun yang tergantung pada nilai System.Windows.Controls.Primitives.IScrollInfo.HorizontalOffset yang tepat setelah gulir horizontal, baik dipanggil oleh pengguna akhir atau dengan panggilan eksplisit ke SetHorizontalOffset(Double).

Saran

Aplikasi yang menggunakan nilai System.Windows.Controls.Primitives.IScrollInfo.HorizontalOffset yang diprediksi harus diubah untuk mengambil nilai aktual (dan nilai System.Windows.Controls.Primitives.IScrollInfo.ExtentWidth) setelah gulir horizontal apa pun yang dapat mengubah System.Windows.Controls.Primitives.IScrollInfo.ExtentWidth karena de-virtualisasi.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.6.2
Tipe Waktu Operasi

API yang terpengaruh

Items.Clear tidak menghapus duplikat dari SelectedItems

Detail lebih lanjut

Misalkan Pemilih (dengan beberapa pilihan diaktifkan) memiliki duplikat dalam koleksi System.Windows.Controls.Primitives.MultiSelector.SelectedItems - item yang sama muncul lebih dari sekali. Penghapusan item tersebut dari sumber data (misalnya, dengan memanggil Item.Clear) gagal menghapusnya dari System.Windows.Controls.Primitives.MultiSelector.SelectedItems; hanya instans pertama yang dihapus. Selain itu, penggunaan System.Windows.Controls.Primitives.MultiSelector.SelectedItems berikutnya (misalnya, SelectedItems.Clear()) dapat mengalami masalah seperti System.ArgumentException, karena System.Windows.Controls.Primitives.MultiSelector.SelectedItems berisi item yang tidak lagi berada dalam sumber data.

Saran

Tingkatkan jika memungkinkan ke .NET Framework 4.6.2.

Nama Nilai
Ruang Lingkup Kecil
Versi 4.5
Tipe Waktu Operasi

API yang terpengaruh

Menggulir daftar item datar dengan tinggi piksel yang berbeda-beda

Detail lebih lanjut

System.Windows.Controls.ItemsControl Ketika menampilkan koleksi menggunakan virtualisasi (IsVirtualizing=true) dan pengguliran item (ScrollUnit=Item), serta saat kontrol menggulir untuk menunjukkan item yang tinggi pikselnya berbeda dari tetangganya, System.Windows.Controls.VirtualizingStackPanel mengiterasi semua item dalam koleksi. UI tidak responsif selama iterasi ini. Iterasi terjadi dalam keadaan lain, bahkan dalam rilis .NET Framework sebelumnya. Misalnya, itu terjadi ketika pengguliran piksel (ScrollUnit=Pixel) saat menemukan item dengan tinggi piksel yang berbeda, dan ketika menggulir item data hierarkis (seperti System.Windows.Controls.TreeView atau System.Windows.Controls.ItemsControl dengan pengelompokan diaktifkan) setelah menemukan item dengan jumlah item turunan yang berbeda dari tetangganya. Untuk kasus pengguliran item dan tinggi piksel yang berbeda, iterasi diperkenalkan dalam .NET Framework 4.6.1 untuk memperbaiki bug dalam tata letak data hierarkis. Tidak diperlukan jika data datar (tidak ada hierarki), dan .NET Framework 4.6.2 tidak melakukannya dalam kasus tersebut.

Saran

Jika iterasi terjadi di .NET Framework 4.6.1 tetapi tidak dalam rilis sebelumnya - yaitu, jika System.Windows.Controls.ItemsControl adalah item - menggulir daftar datar dengan item dengan tinggi piksel yang berbeda - ada dua solusi:

  • Instal .NET Framework 4.6.2.
  • Instal perbaikan HR 1605 untuk .NET Framework 4.6.1.
Nama Nilai
Ruang Lingkup Kecil
Versi 4.6.1
Tipe Waktu Operasi

API yang terpengaruh

Latar belakang Grup Pita diatur sebagai transparan pada build yang dilokalkan

Detail lebih lanjut

System.Windows.Controls.Ribbon.RibbonGroup latar belakang pada build yang dilokalkan selalu dicat dengan sikat Transparan, menghasilkan pengalaman UI yang buruk. Ini diperbaiki dalam .NET Framework 4.7 WPF dengan memperbarui sumber daya lokal untuk System.Windows.Controls.Ribbon.RibbonGroup, yang pada gilirannya memastikan pemilihan kuas yang tepat.

Saran

Tingkatkan ke .NET Framework 4.7

Nama Nilai
Ruang Lingkup Edge
Versi 4.6.2
Tipe Waktu Operasi

API yang terpengaruh

Tidak dapat dideteksi melalui analisis API.

Pemeriksaan Ejaan WPF gagal dengan cara yang tidak terduga

Detail lebih lanjut

Ini termasuk sejumlah masalah Pemeriksa Ejaan WPF:

Saran

Masalah #1 - Ini telah diperbaiki dalam .NET Framework 4.6.2. Masalah #2 - Pemeriksa Ejaan WPF tidak lagi didukung saat aplikasi diluncurkan menggunakan opsi 'jalankan sebagai pengguna yang berbeda'. Memulai .NET Framework 4.6.2, aplikasi yang diluncurkan dengan cara ini tidak akan lagi mengalami crash secara tiba-tiba - sebagai gantinya Pemeriksa Ejaan akan dinonaktifkan secara diam-diam. Masalah #3 - Ini telah diperbaiki di .NET Framework 4.6.2.

Nama Nilai
Ruang Lingkup Edge
Versi 4.6.1
Tipe Waktu Operasi

API yang terpengaruh

Tidak dapat dideteksi melalui analisis API.