XAML Hot Reload untuk Xamarin.Forms

XAML Hot Reload tersambung ke alur kerja yang ada untuk meningkatkan produktivitas dan menghemat waktu Anda. Tanpa XAML Hot Reload, Anda harus membuat dan menyebarkan aplikasi setiap kali Anda ingin melihat perubahan XAML. Dengan Hot Reload, saat Anda menyimpan file XAML, perubahan akan tercermin secara langsung di aplikasi yang sedang berjalan. Selain itu, status navigasi dan data Anda akan dipertahankan, memungkinkan Anda untuk dengan cepat melakukan iterasi pada UI Anda tanpa kehilangan tempat Anda di aplikasi. Oleh karena itu, dengan XAML Hot Reload, Anda akan menghabiskan lebih sedikit waktu untuk membangun kembali dan menyebarkan aplikasi Anda untuk memvalidasi perubahan UI.

Catatan

Jika Anda menulis aplikasi UWP atau WPF asli, tidak menggunakan Xamarin.Forms, lihat XAML Hot Reload untuk UWP dan WPF.

Persyaratan sistem

IDE/Kerangka Kerja Versi Minimum Diperlukan
Visual Studio 2019 16.9 untuk mode hanya perubahan, 16.4 untuk mode halaman penuh
Visual Studio 2019 untuk Mac 8.9 untuk mode hanya perubahan, 8.4 untuk mode halaman penuh
Xamarin.Forms 5.0.0.2012 untuk mode hanya perubahan; 4.1 untuk mode halaman penuh

Aktifkan XAML Hot Reload untuk Xamarin.Forms

Jika Anda memulai dari templat, XAML Hot Reload aktif secara default dan proyek dikonfigurasi untuk bekerja tanpa penyiapan tambahan. Debug aplikasi Android, iOS, atau UWP Anda di emulator atau perangkat fisik dan ubah XAML Anda untuk memicu XAML Hot Reload.

Jika Anda bekerja dari solusi yang ada Xamarin.Forms , tidak ada penginstalan tambahan yang diperlukan untuk menggunakan XAML Hot Reload, tetapi Anda mungkin harus memeriksa kembali konfigurasi Anda untuk memastikan pengalaman terbaik. Pertama, aktifkan di pengaturan IDE Anda:

  • Di Windows, centang kotak Aktifkan XAML Hot Reload (dan platform yang diperlukan) di Opsi>Alat>Men-debug>Hot Reload.
    • Di versi Visual Studio 2019 sebelumnya, kotak centang ada di Opsi>Alat>Xamarin>Hot Reload.
  • Di Mac, centang kotak Aktifkan Xamarin Hot Reload di Alat Preferensi>Visual Studio>untuk Xamarin>XAML Hot Reload.
    • Di versi Visual Studio untuk Mac sebelumnya, kotak centang ada di Visual Studio>Preferences Projects>>Xamarin Hot Reload.

Kemudian, di pengaturan build Android dan iOS Anda, periksa apakah Linker diatur ke "Jangan Tautkan" atau "Tautkan Tidak Ada". Untuk menggunakan XAML Hot Reload dengan perangkat iOS fisik, Anda juga harus memeriksa Aktifkan penerjemah Mono (Visual Studio 16.4 ke atas) atau tambahkan --interpreter ke arg mtouch tambahan Anda (Visual Studio 16.3 ke bawah).

Anda dapat menggunakan diagram alur berikut untuk memeriksa penyiapan proyek yang ada untuk digunakan dengan XAML Hot Reload:

XAML Hot Reload Setup

Mode Isi Ulang Panas

XAML Hot Reload dapat berfungsi dalam dua mode berbeda - mode hanya perubahan yang lebih baru dan mode halaman penuh yang lebih lama.

Dari Visual Studio 16.9 dan Visual Studio untuk Mac 8.9, perilaku default adalah untuk mengubah hanya mode yang akan digunakan untuk semua aplikasi yang menggunakan Xamarin.Forms 5.0 atau yang lebih baru. Untuk versi Xamarin.Formslama, mode halaman penuh digunakan. Namun, Anda dapat memaksa penggunaan mode halaman penuh untuk semua aplikasi di pengaturan Hot Reload IDE (Opsi>Alat>Men-debug>Hot Reload di Windows atau Alat Preferensi>Visual Studio>untuk Xamarin>XAML Hot Reload di Mac).

Perubahan hanya mode mengurai XAML untuk melihat dengan tepat apa yang berubah saat Anda melakukan pengeditan, dan hanya mengirim perubahan tersebut ke aplikasi yang sedang berjalan. Ini adalah teknologi yang sama yang digunakan untuk WPF dan UWP Hot Reload. Ini mempertahankan status UI, karena tidak membuat ulang UI untuk halaman lengkap, hanya memperbarui properti yang diubah pada kontrol yang terpengaruh oleh pengeditan. Mode hanya perubahan juga memungkinkan penggunaan Live Visual Tree.

Secara default, dengan mode hanya perubahan, Anda tidak perlu menyimpan file untuk melihat perubahan - pembaruan segera diterapkan, saat Anda mengetik. Namun, Anda dapat mengubah perilaku ini untuk memperbarui hanya pada penyimpanan file. Ini dapat dicapai dengan memeriksa kotak centang Terapkan XAML Hot Reload pada penyimpanan dokumen (saat ini hanya tersedia di Windows) di pengaturan Ide Hot Reload. Hanya memperbarui penyimpanan dokumen terkadang dapat berguna jika Anda membuat pembaruan XAML yang lebih besar dan tidak ingin ditampilkan hingga selesai.

Mode halaman penuh mengirimkan file XAML lengkap ke aplikasi yang sedang berjalan setelah Anda mengedit dan menyimpan. Aplikasi yang sedang berjalan kemudian memuat ulang halaman, membuat ulang kontrolnya - Anda akan melihat refresh UI.

Perubahan hanya mode adalah masa depan Hot Reload dan kami sarankan menggunakannya jika memungkinkan. Ini cepat, mempertahankan status UI, dan mendukung Live Visual Tree. Mode halaman penuh masih disediakan untuk aplikasi yang belum diperbarui ke Xamarin.Forms 5.0.

Catatan

Anda harus memulai ulang sesi debug saat beralih mode.

Kesalahan XAML

Mode hanya perubahan: Jika Anda membuat perubahan yang dilihat pengurai XAML Hot Reload sebagai tidak valid, itu akan menampilkan kesalahan yang digarisbawaahkan di editor dan menyertakannya di jendela kesalahan. Kesalahan Hot Reload ini memiliki kode kesalahan yang dimulai dengan "XHR" (untuk XAML Hot Reload). Jika ada kesalahan seperti itu di halaman, Hot Reload tidak akan menerapkan perubahan, bahkan jika dibuat di bagian lain halaman. Perbaiki semua kesalahan untuk Hot Reload untuk mulai bekerja lagi untuk halaman.

Mode halaman penuh: Jika Anda membuat perubahan yang tidak dapat dimuat ulang oleh XAML Hot Reload, itu akan menampilkan kesalahan yang digaris bawahi di editor dan menyertakannya di jendela kesalahan. Perubahan ini, yang dikenal sebagai pengeditan kasar, termasuk salah mengetik XAML Anda atau mengabeli kontrol ke penanganan aktivitas yang tidak ada. Bahkan dengan pengeditan yang kasar, Anda dapat terus memuat ulang tanpa memulai ulang aplikasi - membuat perubahan lain di tempat lain dalam file XAML dan menekan simpan. Pengeditan kasar tidak akan dimuat ulang, tetapi perubahan Anda yang lain akan terus diterapkan.

Muat ulang pada beberapa platform sekaligus

XAML Hot Reload mendukung debugging simultan di Visual Studio dan Visual Studio untuk Mac. Anda dapat menyebarkan target Android dan iOS secara bersamaan untuk melihat perubahan yang tercermin pada kedua platform sekaligus. Untuk men-debug di beberapa platform, lihat:

Batasan umum

  • Xamarin.Forms target di luar Android, iOS, dan UWP (misalnya, macOS) saat ini tidak didukung.
  • Penggunaan [XamlCompilation(XamlCompilationOptions.Skip)], menonaktifkan kompilasi XAML, tidak didukung dan dapat menyebabkan masalah dengan Live Visual Tree.
  • Anda tidak dapat menambahkan, menghapus, atau mengganti nama file atau paket NuGet selama sesi XAML Hot Reload. Jika Anda menambahkan atau menghapus file atau paket NuGet, bangun kembali dan sebarkan ulang aplikasi Anda untuk terus menggunakan XAML Hot Reload.
  • Atur linker Anda ke Jangan Tautkan atau Tautkan Tidak Ada untuk pengalaman terbaik. Pengaturan Tautkan SDK hanya berfungsi sebagian besar waktu, tetapi mungkin gagal dalam kasus tertentu. Pengaturan linker dapat ditemukan di opsi build Android dan iOS Anda.
  • Penelusuran kesalahan pada i fisik Telepon mengharuskan penerjemah untuk menggunakan XAML Hot Reload. Untuk melakukan ini, buka pengaturan proyek, pilih tab Build iOS, dan pastikan Aktifkan pengaturan Penerjemah Mono diaktifkan. Anda mungkin perlu mengubah opsi Platform di bagian atas halaman properti menjadi i Telepon.
  • XAML Hot Reload tidak dapat memuat ulang kode C#, termasuk penanganan aktivitas, kontrol kustom, kode halaman di belakang, dan kelas tambahan.

Pemecahan Masalah

  • Munculkan output XAML Hot Reload untuk melihat pesan status, yang dapat membantu dalam pemecahan masalah:
    • Windows: memunculkan Output dengan Output Tampilan>dan pilih Xamarin Hot Reload di bawah Tampilkan output dari: di bagian atas
    • Mac: arahkan mouse ke atas XAML Hot Reload di bilah status untuk menunjukkan pad tersebut
  • Jika XAML Hot Reload gagal menginisialisasi:
    • Perbarui versi Anda Xamarin.Forms .
    • Pastikan Anda berada di versi terbaru IDE.
    • Atur pengaturan Android atau iOS Linker Anda ke Jangan Tautkan di pengaturan build proyek.
  • Jika tidak ada yang terjadi saat menyimpan file XAML Anda, pastikan bahwa XAML Hot Reload diaktifkan di IDE.
  • Jika Anda menelusuri kesalahan pada i fisik Telepon dan aplikasi Anda menjadi tidak responsif, periksa apakah interpreter diaktifkan. Untuk mengaktifkannya, centang Aktifkan penerjemah Mono (Visual Studio 16.4/8.4 dan yang lebih baru) atau tambahkan --interpreter ke bidang Argumen mtouch tambahan (Visual Studio 16.3/8.3 dan sebelumnya) di pengaturan Build iOS Anda.

Untuk melaporkan bug, gunakan Bantuan>Kirim Umpan Balik>Laporkan Masalah di Windows, dan Bantu>Laporkan Masalah di Mac.