Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dimulai dengan aplikasi yang menargetkan .NET Framework 4.6.2, normalisasi jalur dalam .NET Framework telah berubah.
Apa itu normalisasi jalur?
Menormalkan jalur melibatkan modifikasi string yang mengidentifikasi jalur atau file sehingga sesuai dengan jalur yang valid pada sistem operasi target. Normalisasi biasanya melibatkan:
Kanonikalisasi komponen dan pemisah direktori.
Menerapkan direktori saat ini ke jalur relatif.
Mengevaluasi direktori relatif (
.) atau direktori induk (..) dalam jalur.Memangkas karakter yang ditentukan.
Perubahan
Dimulai dengan aplikasi yang menargetkan .NET Framework 4.6.2, normalisasi jalur telah berubah dengan cara berikut:
Runtime mengandalkan pada fungsi GetFullPathName dari sistem operasi untuk menormalkan jalur.
Normalisasi tidak lagi melibatkan pemangkasan akhir segmen direktori (seperti spasi di akhir nama direktori).
Dukungan untuk sintaks jalur perangkat dalam mode kepercayaan penuh (full trust), termasuk
\\.\dan, untuk API I/O file di mscorlib.dll,\\?\.Runtime tidak memvalidasi jalur sintaks perangkat.
Penggunaan sintaks perangkat untuk mengakses aliran data alternatif didukung.
Dampak
Untuk aplikasi yang menargetkan .NET Framework 4.6.2 atau yang lebih baru, perubahan ini aktif secara default. Mereka harus meningkatkan performa sambil memungkinkan metode untuk mengakses jalur yang sebelumnya tidak dapat diakses.
Aplikasi yang menargetkan .NET Framework 4.6.1 dan versi yang lebih lama, tetapi berjalan di versi .NET Framework 4.6.2 atau versi yang lebih baru tidak terpengaruh oleh perubahan ini.
Mitigasi
Aplikasi yang menargetkan .NET Framework 4.6.2 atau yang lebih baru dapat menolak perubahan ini dan menggunakan normalisasi warisan dengan menambahkan yang berikut ke <bagian runtime> dari file konfigurasi aplikasi:
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=true" />
</runtime>
Aplikasi yang menargetkan .NET Framework 4.6.1 atau yang lebih lama tetapi berjalan pada .NET Framework 4.6.2 atau yang lebih baru dapat mengaktifkan perubahan pada normalisasi jalur dengan menambahkan baris berikut ke <bagian runtime> dari file .configuration aplikasi:
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false" />
</runtime>