Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Panduan ini menunjukkan cara menggunakan CLI winapp di seluruh siklus inner loop aplikasi WinUI 3: membuat proyek dari templat resmi, membangun dan meluncurkannya dengan identitas paket, men-debug crash, menemukan kontrol dan API, mengotomatiskan UI, dan menghasilkan paket MSIX yang ditandatangani. Setiap langkah dijalankan melalui baris perintah, sehingga berfungsi di editor apa pun, di CI, dan dengan agen pengkodian AI.
Templat proyek WinUI sudah menyertakan Package.appxmanifest, sehingga Anda tidak perlu menjalankan winapp init untuk aplikasi WinUI. Jika Anda menambahkan identitas paket ke aplikasi .NET yang sudah ada yang tidak menggunakan WinUI, lihat Menggunakan CLI winapp dengan .NET sebagai gantinya.
Prerequisites
Windows 10 versi 1809 atau yang lebih baru, atau Windows 11.
SDK .NET, versi 8.0.100 atau yang lebih baru. Templat Reaktor eksperimental memerlukan .NET 10 SDK. winapp CLI tidak menginstal toolchain, jadi
winapp newdanwinapp runberhenti dengan panduan jika SDK .NET hilang.winapp CLI:
winget install Microsoft.winappcli --source wingetMode Pengembang, yang diperlukan Windows untuk mendaftarkan aplikasi dari hasil build Anda. Aktifkan di Pengaturan > Sistem > Untuk pengembang. Untuk mengetahui perubahan yang dilakukan ini pada komputer Anda, lihat Keamanan.
Membuat aplikasi WinUI
winapp new membuat kerangka aplikasi WinUI dari paket resmi Microsoft.WindowsAppSDK.WinUI.CSharp.Templates. Ini menginstal atau memperbarui paket templat sesuai permintaan dan kemudian memanggil dotnet new untuk Anda.
# Pick a template and a name interactively
winapp new
# Or create a NavigationView app without prompts
winapp new --name MyApp --template winui-navview --use-defaults
Jalankan winapp new --list untuk melihat templat dalam paket yang diinstal. Paket ini mencakup templat-templat berikut:
| Template | Description |
|---|---|
winui |
Aplikasi XAML kosong minimal (default). Lihat cuplikan layar |
winui-navview |
Aplikasi XAML dengan shell NavigationView. Lihat cuplikan layar |
winui-tabview |
Aplikasi XAML dengan shell TabView. Lihat cuplikan layar |
winui-mvvm |
Aplikasi XAML yang menggunakan pola MVVM dengan CommunityToolkit.Mvvm. Lihat cuplikan layar |
winui-lib |
Pustaka kelas WinUI |
winui-unittest |
Proyek MSTest paket untuk pengujian unit WinUI |
reactor,reactor-mvu,reactor-navview,reactor-tabview |
Eksperimen. Hanya aplikasi WinUI yang ditulis dalam C#, tanpa XAML |
Note
Templat Reactor mereferensikan Microsoft.UI.Reactor paket prarilis. API mereka dapat berubah atau dihapus dalam rilis mendatang.
Untuk setiap opsi, lihat new referensi perintah.
Build dan jalankan dengan identitas
Dari folder proyek, perintah winapp run membangun proyek, menginstal runtime SDK Aplikasi Windows yang cocok dengan arsitektur Anda jika belum terpasang, mendaftarkan aplikasi dengan identitas paket, dan meluncurkannya.
cd MyApp
winapp run
winapp run menerima file proyek, file solusi, folder yang berisi salah satunya, atau folder output build:
# A specific project and configuration
winapp run .\MyApp.csproj -c Release --arch arm64
# A solution: winapp CLI finds the single app project and skips libraries and tests
winapp run .\MySolution.sln
# A solution with more than one app project
winapp run .\MySolution.sln --project MyApp
# Build output that you produced yourself
winapp run .\bin\x64\Debug\net10.0-windows10.0.26100.0\win-x64
winapp CLI membaca properti proyek WindowsPackageType untuk memutuskan cara meluncurkannya. Proyek paket berjalan dengan package identity. Proyek yang menetapkan WindowsPackageType ke None berjalan sebagai aplikasi yang tidak dikemas tanpa identitas. Untuk menjalankan proyek yang dikemas sebagai proyek tanpa paket, teruskan properti pada baris perintah:
winapp run -p WindowsPackageType=None
Opsi berguna lainnya termasuk --clean untuk menghapus pendaftaran sebelumnya dan data tersimpan aplikasi (LocalState dan pengaturan) agar aplikasi berjalan pertama kali dari awal, --no-launch untuk mendaftar tanpa memulai aplikasi, dan --detach --json untuk mengembalikan ID proses dan keluar sehingga skrip dan agen dapat tetap berfungsi saat aplikasi berjalan. Untuk daftar lengkapnya, lihat mode Proyek (proyek .NET SDK).
Gunakan dotnet run sebagai gantinya
Jika Anda lebih suka dotnet run, gunakan paket NuGet Microsoft.Windows.SDK.BuildTools.WinApp. Paket memasang hook pada dotnet run sehingga memanggil winapp run dan meluncurkan aplikasi dengan identitas. Proyek yang Anda buat dengan winapp new sudah mereferensikan paket, jadi dotnet run berfungsi tanpa penyiapan tambahan. Untuk proyek lain, tambahkan paket terlebih dahulu:
dotnet add package Microsoft.Windows.SDK.BuildTools.WinApp --prerelease
dotnet run
Anda dapat meneruskan winapp run opsi sebagai WinAppRun* properti MSBuild, misalnya dotnet run -p:WinAppRunDebugOutput=true. Untuk menonaktifkan integrasi, atur EnableWinAppRunSupport ke false dalam file proyek. Untuk detailnya, lihat dukungan dotnet run.
Debug kerusakan aplikasi
Tambahkan --debug-output untuk merekam pesan OutputDebugString dan pengecualian kesempatan pertama saat aplikasi berjalan. Ketika aplikasi WinUI gagal dengan pengecualian tersimpan, winapp CLI menganalisis crash dump dan mencetak kesalahan asli dan tumpukan panggilan alih-alih kode kegagalan generik.
winapp run --debug-output
Tambahkan --symbols untuk mengunduh simbol untuk nama fungsi native lengkap. Karena --debug-output melampirkan winapp CLI sebagai debugger, Anda tidak dapat melampirkan Visual Studio atau debugger lain ke proses yang sama. Untuk men-debug dengan IDE Anda, lihat Penelusuran kesalahan dengan CLI winapp. Untuk detail tentang analisis stowed-exception, lihat Triase stowed-exception WinUI.
Menemukan kontrol dan API
winapp find-uimencari sampel XAML dan C# dari Galeri WinUI dan Windows Community Toolkit berdasarkan tujuan pencarian, dan mengembalikan kode untuk skenario yang Anda pilih.
winapp find-apimenelusuri permukaan API Windows dan WinRT yang dirujuk proyek Anda, seperti jenis, anggota, dan enum SDK Aplikasi Windows dan Windows SDK.
# Find a control by what you want to build
winapp find-ui "tabbed layout"
# Get the XAML and C# for one of the returned scenarios
winapp find-ui --id gallery-tabview-1
# Look up an API
winapp find-api NavigationView
Kedua perintah mendukung --json, sehingga agen pengkodian AI dapat menggunakannya untuk memilih kontrol dan memverifikasi nama API. Untuk informasi selengkapnya, lihat referensi find-ui dan find-api.
Mengotomatisasi dan memverifikasi UI
winapp ui mengontrol aplikasi yang sedang berjalan melalui Microsoft UI Automation. Gunakan untuk memeriksa pohon elemen, memanggil kontrol, menunggu perubahan status, dan mengambil cuplikan layar. Agen dapat menggunakan perintah yang sama untuk memeriksa suntingan mereka sendiri.
winapp run --detach
winapp ui inspect -a MyApp
winapp ui search Button -a MyApp
winapp ui invoke PART_PaneToggleButton -a MyApp
winapp ui screenshot -a MyApp
Pemilih PART_PaneToggleButton menargetkan tombol menu dalam winui-navview templat. Untuk kontrol Anda sendiri, salin pemilih dari output winapp ui inspect atau winapp ui search.
Untuk menjalankan aplikasi di Windows Sandbox alih-alih di desktop Anda, tambahkan --on sandbox ke winapp run dan winapp ui. Untuk informasi selengkapnya, lihat Otomatisasi UI dan eksekusi Sandbox.
Kemas dan tandatangani
Saat Anda siap untuk menguji paket secara lokal, buat sertifikat pengembangan yang penerbitnya cocok dengan manifes Anda, lalu buat dan kemas proyek dalam satu langkah:
winapp cert generate --manifest .\Package.appxmanifest
winapp pack .\MyApp.csproj -c Release --arch x64 --cert .\devcert.pfx
winapp pack membangun proyek dan menghasilkan .msix yang ditandatangani. Untuk menggabungkan build untuk beberapa arsitektur menjadi satu .msixbundle, lihat Bundel multi-arsitektur. Proyek harus dikemas, sehingga proyek yang menetapkan WindowsPackageType ke None tidak dapat dikemas. Untuk proyek WinUI, build SDK Aplikasi Windows mengelola manifes, titik masuk, dan pembuatan sumber daya, jadi --manifest, --executable, dan --skip-pri tidak diterima.
Sertifikat pengembangan hanya untuk pengujian lokal, dan menggunakan kata sandi default. Sebelum mendistribusikan aplikasi Anda, tanda tangani aplikasi Anda dengan sertifikat tepercaya, misalnya dengan winapp az-sign dan Penandatanganan Tepercaya Azure. Untuk informasi selengkapnya, lihat Mengemas proyek secara langsung dan Keamanan.
Proyek WinUI yang ada
winapp CLI bekerja dengan proyek WinUI yang Anda buat di Visual Studio. Arahkan winapp run ke file proyek, file solusi, atau folder yang berisi file tersebut. Untuk winapp pack, teruskan .csproj. Anda dapat terus membangun dan menelusuri kesalahan di Visual Studio dan menggunakan CLI winapp untuk alur kerja skrip, CI, dan agen.
WinUI dengan C++
winapp runjuga membangun dan meluncurkan proyek C++/WinRT WinUI (.vcxproj) yang Anda buat dari templat Visual Studio WinUI Blank App (Packaged). Ini membangun proyek dengan MSBuild Visual Studio, mendaftarkan aplikasi dengan identitas paket, dan meluncurkannya:
winapp run .\MyApp.vcxproj
# Or from the folder that contains the project
winapp run .
Proyek C++ memerlukan Visual Studio atau Build Tools untuk Visual Studio dengan pengembangan Desktop dengan workload C++ dan alat pengembangan aplikasi C++ WinUI.
winapp pack tidak dapat mengompilasi .vcxproj proyek, jadi buat paket MSIX di Visual Studio. Untuk prasyarat dan opsi, lihat proyek C++ (.vcxproj). Untuk aplikasi C++ yang tidak menggunakan WinUI, lihat Menggunakan CLI winapp dengan C++.
Samples
-
winui-app: aplikasi WinUI dalam paket dengan kontrol yang disiapkan untuk otomatisasiwinapp ui -
winui-unpackaged-app: aplikasi WinUI yang berjalan tanpa identitas paket -
winui-solution: solusi multi-proyek yang menunjukkan bagaimanawinapp runmemilih proyek aplikasi -
cpp-winui-app: aplikasi C++/WinRT WinUI paket (Visual Studio.vcxprojdengan XAML) yang berjalan denganwinapp run
Langkah berikutnya
Windows developer