Melakukan debug aplikasi ClickOnce yang menggunakan System.Deployment.application

Dalam Visual Studio, penyebaran ClickOnce mengizinkan Anda mengonfigurasi cara aplikasi diperbarui. Namun, jika Anda perlu menggunakan dan menyesuaikan fitur penyebaran ClickOnce tingkat lanjut, Anda harus mengakses model objek penyebaran yang disediakan oleh System.Deployment.Application. Anda dapat menggunakan AIPI System.Deployment.Application untuk tugas tingkat lanjut seperti:

  • Membuat opsi “Perbarui Sekarang” di aplikasi Anda

  • Unduhan kondisional sesuai permintaan dari berbagai komponen aplikasi

  • Pembaruan terintegrasi langsung ke dalam aplikasi

  • Menjamin bahwa aplikasi klien selalu diperbarui

    Karena API System.Deployment.Application hanya berfungsi ketika aplikasi disebarkan dengan teknologi ClickOnce, satu-satunya cara untuk melakukan debug adalah dengan menyebarkan aplikasi menggunakan ClickOnce, melampirkannya, lalu melakukan debug. Mungkin sulit untuk melampirkan debugger cukup awal, karena kode ini sering kali berjalan ketika aplikasi dimulai dan dijalankan sebelum Anda dapat melampirkan debugger. Solusinya adalah menempatkan jeda (atau berhenti, untuk proyek Visual Basic) sebelum kode pemeriksaan pembaruan atau kode sesuai permintaan Anda.

    Teknik penelusuran kesalahan yang direkomendasikan adalah sebagai berikut:

Catatan

Kelas ApplicationDeployment dan API di System.Deployment.Application namespace tidak didukung dalam .NET Core dan .NET 5 dan versi yang lebih baru. Di .NET 7, metode baru untuk mengakses properti penyebaran aplikasi didukung. Untuk informasi selengkapnya, lihat Properti penyebaran Access ClickOnce di .NET. .NET 7 tidak mendukung metode ApplicationDeployment yang setara.

  1. Sebelum memulai, pastikan file simbol (.pdb) dan file sumber diarsipkan.

  2. Sebarkan aplikasi versi 1.

  3. Buat solusi kosong baru. Dari menu File, klik Baru, lalu Proyek. Dalam kotak dialog Project Baru, buka node Jenis Project Lainnya, lalu pilih folder Solusi Visual Studio. Di panel Templat, pilih Solusi Kosong.

  4. Tambahkan lokasi sumber yang diarsipkan ke properti untuk solusi baru ini. Di Penjelajah Solusi, klik kanan simpul solusi, lalu klik Properti. Dalam kotak dialog Halaman Properti, pilih Debug File Sumber, lalu tambahkan direktori kode sumber yang diarsipkan. Jika tidak, debugger akan menemukan file sumber yang sudah kedaluwarsa, karena jalur file sumber direkam dalam file .pdb. Jika debugger menggunakan file sumber kedaluarsa, Anda akan melihat pesan yang memberi tahu Anda bahwa sumber tidak cocok.

  5. Pastikan debugger dapat menemukan file .pdb. Jika Anda telah menyebarkannya dengan aplikasi Anda, debugger akan menemukannya secara otomatis. Itu selalu terlihat di samping perakitan yang dimaksud terlebih dahulu. Jika tidak, Anda harus menambahkan jalur arsip ke lokasi File simbol (.pdb) (untuk mengakses opsi ini, dari menu Alat , klik Opsi, lalu buka simpul Debugging , dan klik Simbol).

  6. Debug apa yang terjadi antara panggilan metode CheckForUpdate danDownload/Update.

    Misalnya, kode pembaruan mungkin sebagai berikut:

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If My.Application.Deployment.IsNetworkDeployed Then
    
                If (My.Application.Deployment.CheckForUpdate()) Then
    
                    My.Application.Deployment.Update()
                    Application.Restart()
    
                End If
    
            End If
        End Sub
    
  7. Sebarkan versi 2.

  8. Coba lampirkan debugger ke aplikasi versi 1 saat mengunduh pembaruan untuk versi 2. Atau, Anda dapat menggunakan System.Diagnostics.Debugger.Break metode atau hanya Stop di Visual Basic. Tentu saja, Anda tidak boleh meninggalkan panggilan metode ini dalam kode produksi.

    Misalnya, asumsikan Anda mengembangkan aplikasi Formulir Windows, dan Anda memiliki penanganan aktivitas untuk metode ini dengan logika pembaruan di dalamnya. Untuk men-debug ini, cukup lampirkan sebelum tombol ditekan, lalu atur titik henti (pastikan Anda membuka file yang diarsipkan yang sesuai dan mengatur titik henti di sana).

    IsNetworkDeployed Gunakan properti untuk memanggil System.Deployment.Application API hanya saat aplikasi disebarkan; API tidak boleh dipanggil selama penelusuran kesalahan di Visual Studio.