Bagikan melalui


Menggunakan SDK Aplikasi Windows di aplikasi Formulir Windows (WinForms)

SDK Aplikasi Windows adalah evolusi berikutnya di platform pengembangan aplikasi Windows. Tetapi topik ini menunjukkan bagaimana Anda dapat menggunakan API SDK Aplikasi Windows (dan API Runtime Windows) di aplikasi Formulir Windows (WinForms) !

  • Dalam banyak kasus, Anda harus membuat ulang aplikasi WinForms dalam bentuk aplikasi WinUI 3 . Hanya salah satu keuntungan pindah ke WinUI 3 adalah memiliki akses ke Sistem Fluent Design (juga lihat Desain dan kode aplikasi Windows). Dan WinUI 3 adalah bagian dari SDK Aplikasi Windows—jadi, secara alami, aplikasi WinUI 3 juga dapat menggunakan fitur dan API SDK Aplikasi Windows lainnya. Topik ini tidak mencakup proses migrasi aplikasi WinForms Anda ke WinUI 3.
  • Tetapi jika Anda menemukan bahwa Anda menggunakan fitur WinForms yang belum tersedia di WinUI 3, maka Anda masih dapat menggunakan fitur SDK Aplikasi Windows (seperti Siklus Hidup Aplikasi, MRT Core, DWriteCore, dan lainnya) di aplikasi WinForms Anda. Topik ini menunjukkan caranya.

Dan jika Anda belum memiliki proyek WinForms yang sudah ada—atau Anda ingin mempraktikkan prosesnya—topik ini mencakup langkah-langkah untuk membuat proyek WinForms sehingga Anda dapat mengikuti dan mengonfigurasinya untuk memanggil API SDK Aplikasi Windows.

Prasyarat

  1. Instal alat untuk SDK Aplikasi Windows.
  2. Topik ini mencakup aplikasi WinForms yang tidak dikemas dan dikemas. Jika aplikasi WinForms Anda tidak dikemas (aplikasi WinForms mana secara default), pastikan bahwa semua dependensi untuk aplikasi yang tidak dikemas diinstal (lihat panduan penyebaran SDK Aplikasi Windows untuk aplikasi yang bergantung pada kerangka kerja yang dikemas dengan lokasi eksternal atau tidak dikemas). Cara cepat untuk melakukannya adalah dengan mengunjungi Unduhan terbaru untuk SDK Aplikasi Windows, lalu unduh dan unzip dan jalankan salah satu unduhan Runtime rilis yang stabil.

Penting

Versi Runtime yang Anda instal harus sesuai dengan versi paket NuGet Microsoft.WindowsAppSDK yang akan Anda instal di langkah selanjutnya.

Untuk informasi selengkapnya tentang istilah yang tidak dikemas dan dikemas, lihat Keuntungan dan kekurangan pengemasan aplikasi Anda.

Membuat proyek WinForms jika Anda belum memilikinya

Jika Anda sudah memiliki proyek WinForms, maka Anda dapat melanjutkan ke bagian berikutnya.

  1. Di Visual Studio, buat proyek Aplikasi Formulir Windows C# baru (yang merupakan proyek .NET). Berhati-hatilah bahwa Anda memilih templat proyek dengan nama yang tepat Formulir Windows App, dan bukan aplikasi Formulir Windows (.NET Framework) satu.
  2. Beri nama proyek, dan terima opsi default apa pun.

Anda sekarang memiliki proyek yang membangun aplikasi WinForms yang tidak dikemas.

Mengonfigurasi proyek WinForms Anda untuk dukungan SDK Aplikasi Windows

Pertama, kita akan mengedit file proyek.

  1. Di Penjelajah Solusi, klik kanan proyek Anda, dan pilih Edit File Proyek.

  2. Langkah ini memungkinkan Anda memanggil API Windows Runtime (WinRT) (termasuk API SDK Aplikasi Windows). Di dalam elemen PropertyGroup adalah elemen TargetFramework, yang diatur ke nilai seperti net6.0. Tambahkan ke nilai kerangka kerja target moniker (khususnya, Moniker Kerangka Kerja Target). Misalnya, gunakan yang berikut ini jika aplikasi Anda menargetkan Windows 10, versi 2004:

    <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
    
  3. Juga di dalam elemen PropertyGroup , tambahkan elemen RuntimeIdentifiers , seperti ini:

    <RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
    
  4. Secara default, aplikasi WinForms tidak dikemas (artinya tidak diinstal dengan menggunakan MSIX). Aplikasi yang tidak dikemas harus menginisialisasi runtime SDK Aplikasi Windows sebelum menggunakan fitur lain dari SDK Aplikasi Windows. Anda dapat melakukannya secara otomatis saat aplikasi dimulai melalui inisialisasi otomatis. Anda baru saja mengatur (juga di dalam elemen PropertyGroup ) WindowsPackageType properti proyek dengan tepat, seperti ini:

    <WindowsPackageType>None</WindowsPackageType>
    

    Jika Anda memiliki kebutuhan lanjutan (seperti penanganan kesalahan kustom, atau untuk memuat versi SDK Aplikasi Windows tertentu), maka alih-alih inisialisasi otomatis, Anda dapat memanggil API bootstrapper secara eksplisit—untuk informasi selengkapnya, lihat Menggunakan runtime SDK Aplikasi Windows untuk aplikasi yang dikemas dengan lokasi eksternal atau tidak dikemas.

  5. Simpan dan tutup file proyek.

Selanjutnya, kita akan menginstal paket NuGet SDK Aplikasi Windows dalam proyek.

  1. Di Penjelajah Solusi, klik kanan simpul Dependensi proyek Anda, dan pilih Kelola Paket Nuget....
  2. Di jendela Pengelola Paket NuGet, pilih tab Telusuri, dan instal paket Microsoft.WindowsAppSDK stabilterbaru.

Menggunakan beberapa fitur SDK Aplikasi Windows di aplikasi WinForms Anda

Bagian ini menawarkan contoh yang sangat sederhana untuk memanggil API SDK Aplikasi Windows dari aplikasi WinForms. Ini menggunakan fitur MRT Core (lihat Mengelola sumber daya dengan MRT Core). Jika contoh ini berfungsi untuk proyek WinForms Anda (dan jika Anda membuat yang baru untuk panduan ini, maka itu akan), maka Anda dapat mengikuti langkah-langkah ini.

  1. Buka Form1.cs (menggunakan perintah Perancang Tampilan), dan seret Tombol dan Label keluar dari Kotak Alat dan ke perancang.

  2. Klik dua kali tombol1 untuk menghasilkan penanganan aktivitas.

  3. Sekarang kita akan menambahkan beberapa kode yang menggunakan kelas ResourceManager di SDK Aplikasi Windows untuk memuat sumber daya string.

    1. Tambahkan item File Sumber Daya (.resw) baru ke proyek Anda (biarkan dengan nama default Resources.resw).

    2. Dengan file sumber daya terbuka di editor, buat sumber daya string baru dengan properti berikut.

      • Nama: Pesan
      • Nilai: Halo, sumber daya!
    3. Simpan dan tutup file sumber daya.

    4. Buka Form1.cs (menggunakan perintah Tampilkan Kode ), dan edit penanganan aktivitas agar terlihat seperti ini:

    private void button1_Click(object sender, EventArgs e)
    {
        // Construct a resource manager using the resource index generated during build.
        var manager =
            new Microsoft.Windows.ApplicationModel.Resources.ResourceManager();
    
        // Look up a string in the resources file using the string's name.
        label1.Text = manager.MainResourceMap.GetValue("Resources/Message").ValueAsString;
    }
    
  4. Buat proyek, dan jalankan aplikasi. Klik tombol untuk melihat string Hello, resources! yang ditampilkan.

Tip

Jika pada runtime Anda melihat kotak pesan yang menunjukkan bahwa aplikasi memerlukan versi tertentu dari Windows App Runtime, dan menanyakan apakah Anda ingin menginstalnya sekarang, lalu klik Ya. Itu akan membawa Anda ke Unduhan terbaru untuk SDK Aplikasi Windows. Untuk informasi selengkapnya, lihat bagian Prasyarat di atas.

Lihat juga Arsitektur runtime untuk mempelajari selengkapnya tentang dependensi paket Framework yang dibutuhkan aplikasi Anda saat menggunakan SDK Aplikasi Windows, dan komponen tambahan yang diperlukan untuk bekerja di aplikasi yang tidak dikemas.

Mengemas dan menyebarkan aplikasi WinForms Anda dengan MSIX

Beberapa fitur dan API Windows (termasuk API pemberitahuan SDK Aplikasi Windows) mengharuskan aplikasi Anda memiliki identitas paket saat runtime (dengan kata lain, aplikasi Anda perlu dipaketkan). Untuk informasi selengkapnya, lihat Fitur yang memerlukan identitas paket.

  1. Di Penjelajah Solusi di Visual Studio, klik kanan solusi, dan pilih Tambahkan>Proyek Baru....
  2. Dalam kotak dialog Tambahkan proyek baru, cari kemasan, pilih templat proyek Proyek Pengemasan Aplikasi C# Windows, dan klik Berikutnya.
  3. Beri nama proyek, dan klik Buat.
  4. Kami ingin menentukan aplikasi mana dalam solusi yang akan disertakan dalam paket. Jadi dalam proyek pengemasan (bukan proyek WinForms), klik kanan simpul Dependensi , dan pilih Tambahkan Referensi Proyek....
  5. Dalam daftar proyek dalam solusi, pilih proyek WinForms Anda, dan klik OK.
  6. Perluas node Aplikasi Dependensi>proyek pengemasan, dan konfirmasikan bahwa proyek WinForms Anda direferensikan dan disorot dengan tebal. Ini berarti bahwa itu akan digunakan sebagai titik awal untuk paket.
  7. Klik kanan proyek pengemasan, dan pilih Atur Sebagai Proyek Startup.
  8. Klik kanan proyek WinForms, dan pilih Edit File Proyek.
  9. Hapus <WindowsPackageType>None</WindowsPackageType>, simpan, dan tutup.
  10. Di menu drop-down Platform Solusi, pilih x64 (bukan Cpu Apa pun).
  11. Konfirmasikan bahwa Anda dapat membuat dan menjalankan.

Setelah mengemas aplikasi WinForms, Anda dapat memanggil API yang memerlukan identitas paket. Jadi buka Form1.cs (menggunakan perintah Tampilkan Kode ), dan edit penanganan aktivitas agar terlihat seperti ini:

private void button1_Click(object sender, EventArgs e)
{
    var notification = new AppNotificationBuilder()
        .AddArgument("action", "viewConversation")
        .AddArgument("conversationId", "9813")
        .AddText("Andrew sent you a picture")
        .AddText("Check this out, The Enchantments in Washington!")
        .BuildNotification();

    AppNotificationManager.Default.Show(notification);
}

Bangun dan jalankan lagi. Klik tombol , dan konfirmasikan bahwa pemberitahuan toast ditampilkan. Ketika dipanggil dari proses yang tidak memiliki identitas paket pada runtime, API pemberitahuan melemparkan pengecualian.

Catatan

Langkah-langkah di bagian ini menunjukkan kepada Anda cara membuat aplikasi paket. Alternatifnya adalah membuat aplikasi paket dengan lokasi eksternal. Untuk pengingat semua istilah ini, lihat Keuntungan dan kekurangan kemasan aplikasi Anda.