Microsoft Windows App SDK 1.0 Stabil dirilis, tersedia untuk diunduh (Catatan Rilis)

Ikon waktu membaca 12 menit Baca


Pembaca membantu dukungan MSpoweruser. Kami mungkin mendapat komisi jika Anda membeli melalui tautan kami. Ikon Keterangan Alat

Baca halaman pengungkapan kami untuk mengetahui bagaimana Anda dapat membantu MSPoweruser mempertahankan tim editorial Baca lebih lanjut

winUI

Setelah beberapa versi Pratinjau, Microsoft baru saja merilis Windows App SDK 1.0.0 Stable, sebuah toolkit yang memberdayakan pengembang aplikasi desktop untuk membangun aplikasi dengan UI Windows, API, dan fitur platform modern.

Dalam rilis ini, Microsoft menambahkan beberapa fitur baru dari Windows App SDK 0.8 dan menstabilkan masalah dari rilis 1.0 Preview.

[lwptoc title=”WindowsAppSDK 1.0 Stable” width=”30%” float=”kanan”]

Windows UI 3

WinUI 3 adalah kerangka kerja pengalaman pengguna (UX) asli untuk Windows App SDK.

Fitur dan pembaruan baru:

  • Microsoft telah menambahkan kontrol baru (PipsPager, Expander, BreadcrumbBar) dan memperbarui kontrol yang ada untuk mencerminkan gaya Windows terbaru dari Windows UI 2.6.
  • Pengemasan MSIX proyek tunggal didukung di WinUI dengan membuat aplikasi baru menggunakan templat "Aplikasi Kosong, Dikemas ...".
  • Microsoft sekarang mendukung penggelaran aplikasi WinUI 3 tanpa kemasan MSIX pada Windows versi 1809 dan di atasnya. Silakan lihat Buat aplikasi desktop WinUI 3 yang belum dikemas untuk informasi tambahan.
  • Proyek WinUI 3 sekarang dapat menetapkan versi target mereka ke Windows 10, versi 1809. Sebelumnya, mereka hanya dapat disetel serendah versi 1903.
  • Bilah alat dalam aplikasi, Muat Ulang Panas, & Pohon Visual Langsung untuk aplikasi paket WinUI didukung di Visual Studio 2022 Pratinjau 5 dan GA.

Batasan penting:

  • Masalah yang diketahui untuk aplikasi WinUI yang dikemas dan tidak dikemas:
    • Kesalahan run-time di aplikasi C++ yang mereferensikan C++ Windows Runtime Component: Untuk mengatasinya, tambahkan target di bawah ini ke akhir .vcxproj Komponen Windows Runtime:

      XML

      <Target Name="GetPriIndexName">
      <PropertyGroup>
          <!-- Winmd library targets use the default root namespace of the project for the App package name -->
          <PriIndexName Condition="'$(RootNamespace)' != ''">$(RootNamespace)</PriIndexName>
          <!-- If RootNamespace is empty fall back to TargetName -->
          <PriIndexName Condition="$(PriIndexName) == ''">$(TargetName)</PriIndexName>
      </PropertyGroup>
      </Target>
      
  • Masalah yang diketahui untuk Aplikasi WinUI dengan MSIX proyek tunggal (Aplikasi Kosong, Template yang dikemas):
    • Item menu Paket & Terbitkan Hilang hingga Anda memulai ulang Visual Studio: Saat membuat aplikasi baru dengan MSIX proyek tunggal di Visual Studio 2019 dan Visual Studio 2022 menggunakan templat proyek Aplikasi Kosong, Dikemas (WinUI 3 di Desktop), perintah untuk menerbitkan proyek tidak muncul di menu hingga Anda menutup dan buka kembali Visual Studio.
    • Aplikasi AC# dengan MSIX proyek tunggal tidak akan dikompilasi tanpa komponen opsional "C++ (v14x) Universal Windows Platform Tools" diinstal. Melihat Instal alat pengembang untuk informasi tambahan.
    • Potensi kesalahan waktu proses dalam aplikasi dengan MSIX proyek tunggal yang menggunakan jenis yang ditentukan dalam Komponen Waktu Proses Windows yang direferensikan: Untuk mengatasinya, tambahkan secara manual entri kelas yang dapat diaktifkan ke appxmanifest.xml.
      • Kesalahan yang diharapkan dalam aplikasi C # adalah "COMException: Kelas tidak terdaftar (0x80040154 (REGDB_E_CLASSNOTREG)).
      • Kesalahan yang diharapkan dalam aplikasi C++/WinRT adalah "winrt::hresult_class_not_registered".
  • Masalah yang diketahui untuk Aplikasi WinUI tanpa kemasan MSIX (aplikasi yang tidak dikemas):
  • Masalah yang diketahui untuk pengemasan dan penerapan aplikasi WinUI:
    • Grafik Package perintah tidak didukung di aplikasi WinUI dengan MSIX proyek tunggal (Aplikasi Kosong, Template yang dikemas). Sebagai gantinya, gunakan Package & Publish perintah untuk membuat paket MSIX.
    • Untuk membuat paket NuGet dari C# Class Library dengan Pack perintah, pastikan aktif Configuration is Release.
    • Grafik Pack perintah tidak didukung di C++ Windows Runtime Components untuk membuat paket NuGet.

Jendela

Windows App SDK menyediakan Jendela Aplikasi yang mengembangkan kelas pratinjau Windows.UI.WindowManagement.AppWindow sebelumnya yang mudah digunakan dan membuatnya tersedia untuk semua aplikasi Windows, termasuk Win32, WPF, dan WinForms.

Fitur Baru

  • Jendela Aplikasi adalah API windowing tingkat tinggi yang memungkinkan skenario windowing yang mudah digunakan yang terintegrasi dengan baik dengan pengalaman pengguna Windows dan dengan aplikasi lain. Mewakili abstraksi tingkat tinggi dari wadah konten aplikasi yang dikelola sistem. Ini adalah wadah tempat konten Anda dihosting, dan mewakili entitas yang berinteraksi dengan pengguna saat mereka mengubah ukuran dan memindahkan aplikasi Anda di layar. Untuk pengembang yang akrab dengan Win32, AppWindow dapat dilihat sebagai abstraksi tingkat tinggi dari HWND.
  • Area Tampilan mewakili abstraksi tingkat tinggi dari HMONITOR, mengikuti prinsip yang sama seperti AppWindow.
  • Area TampilanPengawas memungkinkan pengembang untuk mengamati perubahan dalam topologi tampilan dan menghitung Area Tampilan yang saat ini ditentukan dalam sistem.

Memasukkan

Ini adalah API input yang mendukung WinUI dan menyediakan permukaan API tingkat yang lebih rendah bagi pengembang untuk mencapai interaksi input yang lebih maju.

Fitur Baru

  • API Penunjuk: Titik PenunjukProperti PointerPoint, dan PointerEventArgs untuk mendukung pengambilan informasi peristiwa penunjuk dengan API input XAML.
  • API InputPointerSource: Mewakili objek yang terdaftar untuk melaporkan masukan penunjuk, dan menyediakan kursor penunjuk dan penanganan kejadian masukan untuk API SwapChainPanel XAML.
  • API kursor: Memungkinkan pengembang untuk mengubah bitmap kursor.
  • API Pengenal Isyarat: Memungkinkan pengembang mengenali gerakan tertentu seperti seret, tahan, dan klik saat diberikan informasi penunjuk.

Batasan penting

  • Semua Titik Penunjuk fungsi pabrik statis telah dihapus: Dapatkan CurrentPointDapatkan CurrentPoint BertransformasiDapatkan Poin Menengah, dan DapatkanIntermediatePointsDiubah.
  • Windows App SDK tidak mendukung pengambilan Titik Penunjuk objek dengan ID pointer. Sebagai gantinya, Anda dapat menggunakan Titik Penunjuk fungsi anggota DapatkanTransformedPoint untuk mengambil versi yang diubah dari yang sudah ada Titik Penunjuk obyek. Untuk titik perantara, Anda dapat menggunakan PointerEventArgs fungsi anggota Dapatkan Poin Menengah dan DapatkanTransformedIntermediatePoints.
  • Penggunaan langsung platform SDK API Operasi Windows.UI.Core.CoreDrag tidak akan bekerja dengan aplikasi WinUI.
  • Titik Penunjuk properties posisi mentah dan KontakRectRaw dihapus karena merujuk ke nilai yang tidak diprediksi, yang sama dengan nilai normal di OS. Menggunakan Posisi dan KontakRect sebagai gantinya. Prediksi pointer sekarang ditangani dengan Microsoft.UI.Input.PointerPredictor objek API.

Siklus Hidup Aplikasi

Sebagian besar fitur Siklus Hidup Aplikasi sudah ada di platform UWP, dan telah dibawa ke Windows App SDK untuk digunakan oleh jenis aplikasi desktop, terutama aplikasi Konsol yang belum dikemas, aplikasi Win32, aplikasi Windows Forms, dan aplikasi WPF. Implementasi Windows App SDK dari fitur ini tidak dapat digunakan di aplikasi UWP, karena ada fitur yang setara di platform UWP itu sendiri.

 penting

Jika Anda sedang mengerjakan aplikasi UWP, lihat panduan migrasi UWP untuk mempelajari lebih lanjut tentang memigrasikan aplikasi Anda ke Windows App SDK.

Aplikasi non-UWP juga dapat dikemas ke dalam paket MSIX. Meskipun aplikasi ini dapat menggunakan beberapa fitur Siklus Hidup Aplikasi SDK Windows App, mereka harus menggunakan pendekatan manifes jika tersedia. Misalnya, mereka tidak dapat menggunakan Windows App SDK DaftarUntukXXXAktivasi API dan sebagai gantinya harus mendaftar untuk aktivasi kaya melalui manifes.

Semua batasan untuk aplikasi terpaket juga berlaku untuk aplikasi WinUI, yang dikemas, dan ada pertimbangan tambahan seperti yang dijelaskan di bawah ini.

Pertimbangan penting:

  • Aktivasi kaya: DapatkanActivatedEventArgs
  • Daftar/Batalkan pendaftaran untuk aktivasi kaya
    • Aplikasi yang belum dikemas: Dapat digunakan sepenuhnya.
    • Aplikasi yang dikemas: Tidak dapat digunakan, gunakan manifes MSIX aplikasi sebagai gantinya.
    • Untuk info lebih lanjut, lihat Aktivasi kaya.
  • Tunggal/Multi-instans
    • Aplikasi yang belum dikemas: Dapat digunakan sepenuhnya.
    • Aplikasi yang dikemas: Dapat digunakan sepenuhnya.
    • Aplikasi WinUI: Jika aplikasi ingin mendeteksi instance lain dan mengalihkan aktivasi, aplikasi harus melakukannya sedini mungkin, dan sebelum menginisialisasi jendela apa pun, dll. Untuk mengaktifkannya, aplikasi harus mendefinisikan DISABLE_XAML_GENERATED_MAIN, dan menulis Main (C#) atau WinMain (C++) di mana ia dapat melakukan deteksi dan pengalihan.
    • RedirectActivationToAsync adalah panggilan asinkron, dan Anda tidak boleh menunggu panggilan asinkron jika aplikasi Anda berjalan di STA. Untuk aplikasi Windows Forms dan C# WinUI, Anda dapat mendeklarasikan Main sebagai async, jika perlu. Untuk aplikasi C++ WinUI dan C# WPF, Anda tidak dapat mendeklarasikan Main sebagai async, jadi alih-alih Anda perlu memindahkan panggilan pengalihan ke utas lain untuk memastikan Anda tidak memblokir STA.
    • Untuk info lebih lanjut, lihat Instance aplikasi.
  • Pemberitahuan Daya/Negara
    • Aplikasi yang belum dikemas: Dapat digunakan sepenuhnya.
    • Aplikasi yang dikemas: Dapat digunakan sepenuhnya.
    • Untuk info lebih lanjut, lihat Manajemen daya.

Masalah yang diketahui:

  • Asosiasi Jenis File salah mengkodekan %1 menjadi %251 saat menyetel templat baris perintah pengendali kata kerja, yang membuat crash aplikasi Win32 yang belum dikemas. Anda dapat secara manual mengedit nilai Registri menjadi %1 sebagai solusi sebagian. Jika jalur file target memiliki ruang di dalamnya, maka itu akan tetap gagal dan tidak ada solusi untuk skenario itu.
  • Bug Single/Multi-instance ini akan diperbaiki di patch servis yang akan datang:
    • Pengalihan AppInstance tidak berfungsi saat dikompilasi untuk x86
    • Mendaftarkan kunci, membatalkan pendaftaran, dan mendaftar ulang menyebabkan aplikasi mogok

DWriteCore

DWriteCore adalah implementasi Windows App SDK dari Tulis Langsung, yang merupakan DirectX API untuk perenderan teks berkualitas tinggi, font kerangka yang tidak bergantung pada resolusi, dan dukungan penuh teks dan tata letak Unicode. DWriteCore adalah bentuk DirectWrite yang berjalan pada versi Windows hingga Windows 10, versi 1809 (10.0; Build 17763), dan membuka pintu bagi Anda untuk menggunakannya lintas platform.

Fitur DWriteCore berisi semua fitur DirectWrite, dengan beberapa pengecualian.

Batasan penting

  • DWriteCore tidak berisi fitur DirectWrite berikut:
    • Font per sesi
    • Font karakter yang ditentukan pengguna akhir (EUDC)
    • API streaming font
  • Dukungan API rendering tingkat rendah bersifat parsial.
  • DWriteCore tidak beroperasi dengan Direct2D, tetapi Anda dapat menggunakan Analisis IDWriteGlyphRun dan IDWriteBitmapRenderTarget.

Inti MRT

MRT Core adalah versi ramping dari Windows modern Sistem Manajemen Sumber Daya yang didistribusikan sebagai bagian dari Windows App SDK.

Batasan penting

  • Dalam proyek .NET, file sumber daya yang disalin ke dalam folder proyek tidak diindeks pada F5 jika aplikasi sudah dibuat. Sebagai solusinya, buat ulang aplikasi. Melihat masalah 1503 untuk info lebih lanjut.
  • Dalam proyek .NET, ketika file sumber daya ditambahkan ke proyek menggunakan Visual Studio UI, file mungkin tidak diindeks secara default. Melihat masalah 1786 untuk info lebih lanjut. Untuk mengatasi masalah ini, harap hapus entri di bawah ini dalam file CSPROJ:

    XML

    <ItemGroup>
        <Content Remove="<image file name>" />
    </ItemGroup>
    <ItemGroup>
        <PRIResource Remove="<resw file name>" />
    </ItemGroup>
    
  • Untuk aplikasi C++ WinUI yang tidak dikemas, URI sumber daya tidak dibuat dengan benar. Untuk mengatasi masalah ini, tambahkan berikut ini di vcxproj:

    XML

    <!-- Add the following after <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> -->
    
    <PropertyGroup>
        <AppxPriInitialPath></AppxPriInitialPath>   
    </PropertyGroup>
    

Penyebaran

Fitur dan pembaruan baru

  • Anda dapat menginisialisasi Windows App SDK secara otomatis melalui WindowsPackageType project properti untuk memuat waktu proses Windows App SDK dan memanggil API Windows App SDK. Melihat Buat aplikasi WinUI 3 untuk instruksi.
  • Aplikasi yang tidak dikemas dapat menggunakan Windows App SDK dengan mengintegrasikan dalam Windows App SDK yang berdiri sendiri .exe installer ke dalam MSI atau program pengaturan yang ada. Untuk info lebih lanjut, lihat Panduan penerapan Windows App SDK untuk aplikasi yang belum dikemas.
  • Aplikasi .NET yang tidak dikemas juga dapat menggunakan pembungkus .NET untuk bootstrap API untuk secara dinamis mengambil ketergantungan pada paket kerangka kerja Windows App SDK pada waktu proses. Untuk info lebih lanjut tentang pembungkus .NET, lihat Pustaka pembungkus .NET.
  • Aplikasi yang dikemas dapat menggunakan API penerapan untuk memverifikasi dan memastikan bahwa semua paket yang diperlukan telah diinstal pada mesin. Untuk info selengkapnya tentang cara kerja API penerapan, lihat panduan penerapan untuk aplikasi terpaket.

Batasan penting

  • Pembungkus .NET untuk bootstrap API hanya dimaksudkan untuk digunakan oleh aplikasi .NET yang tidak dikemas untuk menyederhanakan akses ke Windows App SDK.
  • Hanya aplikasi terpaket MSIX yang sepenuhnya dipercaya atau memiliki manajemen paket kemampuan terbatas memiliki izin untuk menggunakan API penerapan untuk menginstal dependensi paket utama dan tunggal. Dukungan untuk aplikasi paket kepercayaan sebagian akan hadir dalam rilis selanjutnya.
  • Saat F5 menguji aplikasi x86 yang menggunakan DeploymentManager.Inisialisasi metode pada sistem x64, pastikan kerangka kerja x64 diinstal terlebih dahulu dengan menjalankan WindowsAppRuntimeInstall.exe. Jika tidak, Anda akan menemukan TIDAK DITEMUKAN kesalahan karena Visual Studio tidak menerapkan kerangka kerja x64, yang biasanya terjadi melalui penyebaran Store atau sideloading.

Keterbatasan lain dan masalah yang diketahui

  • Tidak ada dukungan untuk konfigurasi build CPU apa pun: Kapan menambahkan SDK Aplikasi Windows ke aplikasi .NET atau komponen yang mendukung CPU apa saja, Anda harus menentukan arsitektur yang diinginkan: x86x64 or arm64.
  • Memutakhirkan dari .NET 5 ke .NET 6: Saat memutakhirkan di UI Visual Studio, Anda mungkin mengalami kesalahan pembuatan. Sebagai solusinya, perbarui TargetFrameworkPackage file proyek Anda secara manual ke di bawah ini:

    XML

        <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework> 
    
  • C# Aplikasi MSIX proyek tunggal tidak dapat dikompilasi jika Alat C++ UWP tidak diinstal. Jika Anda memiliki proyek MSIX proyek tunggal C#, maka Anda harus menginstal C++ (v14x) Alat Platform Windows Universal komponen opsional.
  • Bahasa berikutnya VSIX gagal untuk menginstal ke Visual Studio 2019 ketika beberapa versi Visual Studio 2019 diinstal. Jika Anda memiliki beberapa versi Visual Studio 2019 yang diinstal (mis. Rilis dan Pratinjau) dan kemudian instal Windows App SDK VSIX untuk kedua C++ dan C#, instalasi kedua akan gagal. Untuk mengatasi, hapus instalan Alat Pembungkus MSIX proyek tunggal untuk Visual Studio 2019 setelah bahasa pertama VSIX. Melihat umpan balik ini untuk informasi tambahan tentang masalah ini.
  • Jika Anda ingin co_await pada DispatcherQueue.TryEnqueue metode, kemudian gunakan resume_latar depan fungsi pembantu dalam Pustaka Implementasi Windows (WIL):
    1. Tambahkan referensi ke Microsoft.Windows.Perpustakaan Implementasi paket NuGet.
    2. Tambahkan #include <wil/cppwinrt_helpers.h> pernyataan ke file kode Anda.
    3. penggunaan wil::resume_foreground(your_dispatcher); untuk co_await hasil.

Baca selengkapnya dan temukan tautan unduhan di Microsoft di sini.

Lebih lanjut tentang topik: SDK Aplikasi Windows 1.0.0, win 3