Bagikan melalui


Mitigasi: Normalisasi Jalur

Dimulai dari aplikasi yang menargetkan .NET Framework 4.6.2, normalisasi jalur di .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 (..) pada jalur.

  • Memangkas karakter yang ditentukan.

Perubahan

Dimulai dari aplikasi yang menargetkan .NET Framework 4.6.2, normalisasi jalur telah berubah dengan cara berikut:

  • Runtime menunda fungsi GetFullPathName sistem operasi untuk menormalkan jalur.

  • Normalisasi tidak lagi melibatkan pemangkasan akhir segmen direktori (seperti spasi di akhir nama direktori).

  • Dukungan untuk sintaks jalur perangkat dengan kepercayaan penuh, 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 versi setelahnya, perubahan ini aktif secara default. Perubahan ini meningkatkan performa sekaligus 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 versi setelahnya dapat menolak perubahan ini dan menggunakan normalisasi lama dengan menambahkan baris berikut ke bagian <runtime> file konfigurasi aplikasi:

<runtime>  
    <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=true" />
</runtime>  

Aplikasi yang menargetkan .NET Framework 4.6.1 atau versi sebelumnya, tetapi berjalan di .NET Framework 4.6.2 atau versi setelahnya dapat mengaktifkan perubahan ke jalur normalisasi dengan menambahkan baris berikut ke bagian <runtime> file .configuration aplikasi:

<runtime>  
    <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false" />
</runtime>  

Lihat juga