Bagikan melalui


Gunakan Paket Kompatibilitas Windows untuk kode port ke .NET

Beberapa masalah paling umum yang ditemukan saat memindahkan kode yang ada dari .NET Framework ke .NET adalah dependensi pada API dan teknologi yang hanya ditemukan di .NET Framework. Paket Kompatibilitas Windows menyediakan banyak teknologi ini, sehingga jauh lebih mudah untuk membangun aplikasi .NET dan pustaka .NET Standard.

Paket kompatibilitas adalah ekstensi logis dari .NET Standard 2.0 yang secara signifikan meningkatkan set API. Kode yang ada dikompilasi dengan hampir tanpa modifikasi. Untuk menepati janji "set API yang disediakan semua implementasi .NET", .NET Standard tidak menyertakan teknologi yang tidak dapat berfungsi di semua platform, seperti registri, Windows Management Instrumentation (WMI), atau API pantulan. Paket Kompatibilitas Windows berada di atas .NET Standard dan menyediakan akses ke teknologi khusus Windows ini. Ini sangat berguna bagi pelanggan yang ingin pindah ke .NET tetapi berencana untuk tetap berada di Windows, setidaknya sebagai langkah pertama. Dalam skenario itu, Anda dapat menggunakan teknologi khusus Windows menghapus rintangan migrasi.

Konten paket

Paket Kompatibilitas Windows disediakan melalui paket NuGet Microsoft.Windows.Compatibility dan dapat dirujuk dari proyek yang menargetkan .NET atau .NET Standard.

Ini menyediakan sekitar 20.000 API, termasuk API khusus Windows dan lintas platform dari area teknologi berikut:

  • Halaman Kode
  • CodeDom
  • Konfigurasi
  • Layanan Direktori
  • Menggambar
  • ODBC
  • Izin
  • Port
  • Daftar Kontrol Akses Windows (ACL)
  • Windows Communication Foundation (WCF)
  • Kriptografi Windows
  • EventLog Windows
  • Instrumentasi Manajemen Windows (WMI/Windows Management Instrumentation)
  • Penghitung kinerja Windows
  • Registri Windows
  • Penembolokan Runtime Windows
  • Layanan Windows

Untuk informasi selengkapnya, lihat spesifikasi paket kompatibilitas.

Memulai

  1. Sebelum porting, pastikan untuk melihat proses Porting.

  2. Saat memindahkan kode yang ada ke .NET atau .NET Standard, instal paket NuGet Microsoft.Windows.Compatibility.

    Jika Anda ingin tetap menggunakan Windows, Anda sudah siap.

  3. Jika Anda ingin menjalankan aplikasi .NET atau pustaka .NET Standard di Linux atau macOS, gunakan penganalisis kompatibilitas Platform untuk menemukan penggunaan API yang tidak akan berfungsi lintas platform.

  4. Hapus penggunaan API tersebut, ganti dengan alternatif lintas platform, atau jaga menggunakan pemeriksaan platform, seperti:

    private static string GetLoggingPath()
    {
        // Verify the code is running on Windows.
        if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
        {
            using (var key = Registry.CurrentUser.OpenSubKey(@"Software\Fabrikam\AssetManagement"))
            {
                if (key?.GetValue("LoggingDirectoryPath") is string configuredPath)
                    return configuredPath;
            }
        }
    
        // This is either not running on Windows or no logging path was configured,
        // so just use the path for non-roaming user-specific data files.
        var appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
        return Path.Combine(appDataPath, "Fabrikam", "AssetManagement", "Logging");
    }
    

Untuk demo, lihat video Channel 9 dari Paket Kompatibilitas Windows.