Memulai dengan .NET Native

Baik Anda menulis aplikasi UWP baru atau memigrasikan aplikasi Windows 8.x yang ada (sebelumnya juga disebut aplikasi Microsoft Store), Anda dapat mengikuti serangkaian prosedur yang sama. Untuk membuat aplikasi .NET Native, ikuti langkah-langkah berikut:

  1. Kembangkan aplikasi Platform Windows Universal (UWP), dan uji build debug aplikasi Anda untuk memastikan bahwa aplikasi berfungsi dengan baik.

  2. Tangani refleksi tambahan dan penggunaan serialisasi.

  3. Terapkan dan uji build rilis aplikasi Anda.

  4. Atasi metadata yang hilang secara manual, dan ulangi langkah 3 hingga semua masalah diselesaikan.

Catatan

Jika Anda memigrasikan aplikasi Windows 8.x yang ada ke .NET Native, pastikan untuk meninjau Migrasi Aplikasi Windows 8.x Anda ke .NET Native.

Langkah 1: Mengembangkan dan menguji build debug aplikasi UWP Anda

Baik Anda mengembangkan aplikasi baru atau memigrasikan aplikasi yang sudah ada, Anda mengikuti proses yang sama seperti untuk aplikasi Windows apa pun.

  1. Buat proyek UWP baru di Visual Studio dengan menggunakan templat aplikasi Universal Windows untuk Visual C# atau Visual Basic. Secara default, semua aplikasi UWP menargetkan CoreCLR dan build rilisnya dikompilasi dengan menggunakan rantai alat .NET Native.

  2. Perhatikan bahwa ada beberapa masalah kompatibilitas yang diketahui antara mengkompilasi proyek aplikasi UWP dengan rantai alat .NET Native dan tanpanya. Lihat panduan migrasi untuk informasi selengkapnya.

Anda sekarang dapat menulis kode C# atau Visual Basic terhadap area permukaan .NET Native yang berjalan pada sistem lokal (atau di simulator).

Penting

Saat Anda mengembangkan aplikasi, perhatikan penggunaan serialisasi atau refleksi apa pun dalam kode Anda.

Secara default, build debug dikompilasi JIT untuk mengaktifkan penyebaran F5 yang cepat, sementara build rilis dikompilasi dengan menggunakan teknologi prakompilasi .NET Native. Ini berarti Anda harus membangun dan menguji build debug aplikasi Anda untuk memastikan bahwa mereka bekerja secara normal sebelum mengkompilasinya dengan rantai alat .NET Native.

Langkah 2: Menangani refleksi tambahan dan penggunaan serialisasi

File arahan runtime, Default.rd.xml, secara otomatis ditambahkan ke proyek Anda saat Anda membuatnya. Jika Anda mengembangkan di C#, itu ditemukan di folder Properti proyek Anda. Jika Anda mengembangkan di Visual Basic, itu ditemukan di folder Proyek Saya proyek Anda.

Catatan

Untuk gambaran umum proses kompilasi .NET Native yang menyediakan latar belakang mengapa file arahan runtime diperlukan, lihat .NET Native dan Kompilasi.

File arahan runtime digunakan untuk menentukan metadata yang dibutuhkan aplikasi Anda pada durasi. Dalam beberapa kasus, versi default file mungkin memadai. Namun, beberapa kode yang bergantung pada serialisasi atau pantulan mungkin memerlukan entri tambahan dalam file arahan runtime.

Serialisasi

Ada dua kategori serializer, dan keduanya mungkin memerlukan entri tambahan dalam file arahan runtime:

  • Serializer berbasis non-refleksi. Serializer yang ditemukan di pustaka kelas .NET Framework, seperti DataContractSerializerkelas , , DataContractJsonSerializerdan XmlSerializer , tidak bergantung pada refleksi. Namun, mereka mengharuskan kode dihasilkan berdasarkan objek yang akan diserialisasikan atau dideserialisasi. Untuk informasi selengkapnya, lihat bagian "Microsoft Serializers" di Serialisasi dan Metadata.

  • Serializer pihak ketiga. Pustaka serialisasi pihak ketiga, yang paling umum adalah serializer Newtonsoft JSON, umumnya berbasis refleksi dan memerlukan entri dalam file *.rd.xml untuk mendukung serialisasi dan deserialisasi objek. Untuk informasi selengkapnya, lihat bagian "Serializer Pihak Ketiga" di Serialisasi dan Metadata.

Metode yang mengandalkan refleksi

Dalam beberapa kasus, penggunaan refleksi dalam kode tidak jelas. Beberapa API umum atau pola pemrograman tidak dianggap sebagai bagian dari API refleksi tetapi mengandalkan refleksi untuk mengeksekusi dengan sukses. Ini termasuk jenis instansiasi dan metode konstruksi metode berikut:

Untuk informasi selengkapnya, lihat API yang Mengandalkan Refleksi.

Catatan

Nama jenis yang digunakan dalam file arahan runtime harus sepenuhnya memenuhi syarat. Misalnya, file harus menentukan "System.String" alih-alih "String".

Langkah 3: Menyebarkan dan menguji build rilis aplikasi Anda

Setelah memperbarui file arahan runtime, Anda dapat membangun kembali dan menyebarkan build rilis aplikasi Anda. Biner .NET Native ditempatkan di subdirektori ILC.out dari direktori yang ditentukan dalam kotak teks Jalur output build dari kotak dialog Properti proyek, tab Kompilasi . Biner yang tidak ada di folder ini belum dikompilasi dengan .NET Native. Uji aplikasi Anda secara menyeluruh, dan uji semua skenario, termasuk skenario kegagalan, pada setiap platform targetnya.

Jika aplikasi Anda tidak berfungsi dengan baik (terutama dalam kasus di mana aplikasi melempar pengecualian MissingMetadataException atau MissingInteropDataException pada durasi), ikuti instruksi di bagian berikutnya, Langkah 4: Selesaikan metadata yang hilang secara manual. Mengaktifkan pengecualian kesempatan pertama dapat membantu Anda menemukan bug ini.

Ketika Anda telah menguji dan men-debug build debug aplikasi Anda dan Anda yakin bahwa Anda telah menghilangkan pengecualian MissingMetadataException dan MissingInteropDataException , Anda harus menguji aplikasi Anda sebagai aplikasi .NET Native yang dioptimalkan. Untuk melakukan ini, ubah konfigurasi proyek aktif Anda dari Debug ke Rilis.

Langkah 4: Mengatasi metadata yang hilang secara manual

Kegagalan paling umum yang akan Anda temui dengan .NET Native yang tidak Anda temui di desktop adalah pengecualian MissingMetadataException runtime, MissingInteropDataException, atau MissingRuntimeArtifactException . Dalam beberapa kasus, tidak adanya metadata dapat memanifestasikan dirinya dalam perilaku yang tidak dapat diprediksi atau bahkan dalam kegagalan aplikasi. Bagian ini membahas bagaimana Anda dapat men-debug dan menyelesaikan pengecualian ini dengan menambahkan direktif ke file arahan runtime. Untuk informasi tentang format arahan runtime, lihat Referensi File Konfigurasi Petunjuk Runtime (rd.xml). Setelah menambahkan arahan runtime, Anda harus menyebarkan dan menguji aplikasi lagi dan menyelesaikan pengecualian MissingMetadataException, MissingInteropDataException, dan MissingRuntimeArtifactException baru hingga Anda tidak menemukan pengecualian lagi.

Tip

Tentukan arahan runtime pada tingkat tinggi untuk memungkinkan aplikasi Anda tahan terhadap perubahan kode. Sebaiknya tambahkan arahan runtime di namespace layanan dan tingkat jenis daripada tingkat anggota. Perhatikan bahwa mungkin ada tradeoff antara ketahanan dan biner yang lebih besar dengan waktu kompilasi yang lebih lama.

Saat mengatasi pengecualian metadata yang hilang, pertimbangkan masalah ini:

  • Apa yang coba dilakukan aplikasi sebelum pengecualian?

    • Misalnya, apakah data mengikat, membuat serialisasi, atau mendeserialisasi data, atau langsung menggunakan API pantulan?
  • Apakah ini kasus yang terisolasi, atau apakah Anda yakin akan mengalami masalah yang sama untuk jenis lain?

    • Misalnya, pengecualian MissingMetadataException dilemparkan saat membuat serialisasi jenis dalam model objek aplikasi. Jika Anda mengetahui jenis lain yang akan diserialisasikan, Anda dapat menambahkan arahan runtime untuk jenis tersebut (atau untuk yang berisi namespace layanan, tergantung pada seberapa baik kode diatur) secara bersamaan.
  • Dapatkah Anda menulis ulang kode sehingga tidak menggunakan pantulan?

    • Misalnya, apakah kode menggunakan dynamic kata kunci saat Anda tahu jenis apa yang diharapkan?

    • Apakah kode memanggil metode yang bergantung pada pantulan ketika beberapa alternatif yang lebih baik tersedia?

Catatan

Untuk informasi tambahan tentang penanganan masalah yang berasal dari perbedaan refleksi dan ketersediaan metadata di aplikasi desktop dan .NET Native, lihat API yang Mengandalkan Refleksi.

Untuk beberapa contoh spesifik penanganan pengecualian dan masalah lain yang terjadi saat menguji aplikasi Anda, lihat:

Lihat juga