Bagikan melalui


Properti proyek dan penginisialisasi otomatis

Topik ini menjelaskan properti proyek yang dapat Anda atur dalam file proyek Visual Studio (seperti .csproj atau .vcxproj) untuk menyesuaikan cara aplikasi Anda disebarkan, termasuk mengonfigurasi penginisialisasi otomatis.

Penginisialisasi otomatis di Windows App SDK

Di Windows App SDK, ada beberapa rutinitas yang tugasnya adalah memastikan bahwa Windows App Runtime diinisialisasi dengan benar. Rutinitas ini dikenal sebagai penginisialisasi otomatis, karena berjalan secara otomatis sebelum titik masuk aplikasi Anda, dan melakukan pekerjaan inisialisasi untuk Anda.

Tip

Jika Anda ingin tahu tentang detail teknis. Di C++, penginisialisasi otomatis diimplementasikan dengan konstruktor kelas statis. Di C#, penginisialisasi otomatis diimplementasikan dengan penginisialisasi modul .NET. Jadi Anda mungkin terkadang mendengar penginisialisasi modul yang digunakan saat istilah yang tepat adalah penginisialisasi otomatis.

Semua penginisialisasi otomatis diaktifkan secara kondisional secara default, berdasarkan konfigurasi pengemasan dan penyebaran aplikasi Anda. Berikut adalah detailnya:

  • Bootstrapper (juga dikenal sebagai dependensi dinamis) penginisialisasi otomatis. Penginisialisasi otomatis ini memanggil API bootstrapper secara otomatis saat memulai aplikasi. Ini diperlukan untuk aplikasi yang tidak dikemas tergantung kerangka kerja, untuk memastikan bahwa Windows App Runtime ditambahkan ke grafik paket aplikasi. Untuk informasi tentang aplikasi yang bergantung pada kerangka kerja (dan mandiri), lihat Gambaran umum penyebaran Windows App SDK. Untuk informasi tentang aplikasi yang tidak dikemas (dan dikemas), lihat Aplikasi Windows: pengemasan, penyebaran, dan proses.
    • Untuk aplikasi paket, Anda tidak memerlukan penginisialisasi otomatis dependensi bootstrapper/dinamis karena appxmanifest.xml file mengekspresikan dependensi kerangka kerja. Dan untuk aplikasi mandiri, Anda tidak memerlukan penginisialisasi otomatis bootstrapper/dependensi dinamis karena aplikasi tersebut tidak menggunakan kerangka kerja.
    • Anda dapat memilih keluar dari penginisialisasi otomatis dependensi bootstrapper/dinamis di file atau .csproj Anda .vcxproj melalui <WindowsAppSdkBootstrapInitialize>false</WindowsAppSdkBootstrapInitialize>.
  • Penginisialisasi otomatis Deployment Manager. Ini diperlukan untuk aplikasi paket yang bergantung pada kerangka kerja yang menggunakan fungsionalitas utama/singleton (misalnya, pemberitahuan push), karena file tidak dapat mengekspresikan dependensi tersebut appxmanifest.xml .
    • Untuk aplikasi mandiri, Anda tidak memerlukan penginisialisasi otomatis Deployment Manager karena aplikasi tersebut tidak mendukung fungsionalitas utama/singleton.
    • Untuk informasi yang lebih penting, lihat bagian Penginisialisasi otomatis Deployment Manager nanti dalam topik ini.
  • Penginisialisasi otomatis aktivasi bebas pendaftaran. Ini diperlukan untuk aplikasi mandiri untuk menggunakan aktivasi Windows Runtime (WinRT) bebas pendaftaran bebas manifes berbasis manifes (UndockedRegFreeWinRT), jika aplikasi berjalan downlevel pada versi sistem operasi yang lebih lama dari Pembaruan Windows 10 Mei 2019 (versi 1903; nama kode "19H1").
    • Untuk aplikasi yang bergantung pada kerangka kerja, dan untuk aplikasi mandiri yang menargetkan Windows 10, versi 1903, atau yang lebih baru, Anda tidak memerlukan inisialisasi otomatis aktivasi bebas pendaftaran. Aplikasi tersebut dapat memilih keluar melalui <WindowsAppSdkUndockedRegFreeWinRTInitialize>false</WindowsAppSdkUndockedRegFreeWinRTInitialize>.
  • Penginisialisasi otomatis kompatibilitas. Ini diperlukan agar aplikasi menggunakan fasilitas penahanan A/B untuk mengontrol perilaku rilis layanan. Untuk informasi selengkapnya, lihat RuntimeCompatibilityOptions.
    • Untuk aplikasi yang tidak menggunakan penahanan A/B (yang merupakan default), Anda tidak memerlukan penginisialisasi otomatis kompatibilitas.

Penginisialisasi otomatis Deployment Manager

Saat aplikasi yang menggunakan Windows App SDK 1.8 atau yang lebih baru dimulai, penginisialisasi otomatis Deployment Manager berjalan secara default. Tetapi Anda dapat memilih keluar dari yang terjadi. Bagian ini menjelaskan manfaat dan peringatan yang memungkinkan penginisialisasi otomatis Deployment Manager berjalan, dan membantu Anda memutuskan apakah akan memilih keluar atau tidak.

Agar aplikasi Anda menggunakan fungsionalitas dalam paket Main/Singleton (misalnya, pemberitahuan push): 1. Anda harus menggunakan API Penyebaran untuk memastikan bahwa paket tersebut disebarkan (karena paket Main/Singleton bukan kerangka kerja, tetapi paket "utama", seperti aplikasi; sehingga paket tersebut tidak dapat didaftarkan sebagai dependensi dalam manifes appx aplikasi Anda. Sebagai gantinya, API Penyebaran menyediakan fungsionalitas untuk menyebarkan paket tersebut). 2. Karena 1), aplikasi Anda perlu menginisialisasi Deployment Manager dengan menyebabkan DeploymentManager.Initialize dipanggil. Aplikasi Anda dapat melakukannya secara otomatis, atau eksplisit, seperti yang akan kita lihat. 3. Aplikasi Anda harus menjadi aplikasi paket yang bergantung pada kerangka kerja sehingga membutuhkan dependensi pada paket Main/Singleton.

Salah satu cara menginisialisasi Manajer Penyebaran adalah dengan memungkinkan penginisialisasi otomatis Deployment Manager berjalan (lihat bagian Penginisialisasi otomatis di Windows App SDK sebelumnya dalam topik ini). Penginisialisasi otomatis dari Deployment Manager secara otomatis memanggil DeploymentManager.Initialize untuk Anda. Cara lain menginisialisasi Deployment Manager adalah dengan secara eksplisit memanggil DeploymentManager.Initialize sendiri.

Jika aplikasi Anda (menggunakan Windows App SDK 1.8 atau yang lebih baru) tidak memerlukan paket Main/Singleton, maka Anda harus memilih keluar dari penginisialisasi otomatis Deployment Manager dengan mengatur properti WindowsAppSdkDeploymentManagerInitialize ke false dalam file proyek aplikasi Anda.

Jika aplikasi Anda (menggunakan Windows App SDK 1.8 atau yang lebih baru) memerlukan paket Main/Singleton, maka Anda dapat:

  • Izinkan penginisialisasi otomatis Deployment Manager berjalan (yang dilakukannya secara default),
  • atau menolak penginisialisasi otomatis Deployment Manager dengan mengatur properti WindowsAppSdkDeploymentManagerInitialize ke false dalam file proyek aplikasi Anda. Anda kemudian harus secara eksplisit memanggil DeploymentManager.Initialize sendiri.

Penting

Untuk proses apa pun yang berjalan di AppContainer, jika Anda menyebabkan DeploymentManager.Initialize dipanggil, aplikasi Anda perlu mendeklarasikan packageManagementkemampuan terbatas dalam manifes paket Anda.

Properti proyek

Dalam tabel di bawah ini adalah properti yang dapat Anda atur dalam file proyek aplikasi Anda. Lihat bagian sebelumnya (di atas) untuk detail tentang penginisialisasi otomatis di Windows App SDK.

Nama dan deskripsi properti Nilai Untuk informasi selengkapnya
AppxPackage. Menentukan apakah aplikasi WinUI 3 dipaketkan atau tidak. false (untuk aplikasi yang tidak dikemas), atau tidak ada (untuk aplikasi yang dikemas) Membuka kemasan aplikasi WinUI
EnableMsixTooling. Mengaktifkan fitur MSIX proyek tunggal untuk proyek. true (untuk mengaktifkan), atau tidak ada (untuk menonaktifkan) Mengemas aplikasi Anda menggunakan MSIX proyek tunggal
GunakanWinUI. Menentukan apakah Anda menggunakan kerangka kerja antarmuka pengguna WinUI 3 di aplikasi Anda. benar, atau tidak ada (untuk false) WinUI di Windows App SDK (WinUI 3)
WindowsAppSdkBootstrapInitialize. Menentukan apakah Windows App SDK memanfaatkan penginisialisasi otomatis bootstrapper/dependensi dinamis atau tidak. true (default untuk executables), false (default untuk non-executables) Memilih keluar dari (atau ke) penginisialisasi otomatis
WindowsAppSdkDeploymentManagerInitialize. Menentukan apakah Windows App SDK memanfaatkan penginisialisasi otomatis Deployment Manager atau tidak. true (default), false
WindowsAppSDKRuntimePatchLevel1, WindowsAppSDKRuntimePatchLevel2, dan WindowsAppSDKDisabledChanges. Menentukan apakah Windows App SDK memanfaatkan penginisialisasi otomatis kompatibilitas atau tidak, dan mengonfigurasi opsi kompatibilitas yang diinginkan untuk perilaku Windows App Runtime perubahan yang ditambahkan dalam pembaruan layanan. Berbagai, atau tidak ada (untuk menonaktifkan penginisialisasi otomatis) RuntimeCompatibilityOptions
WindowsAppSdkSelfContained. Menentukan apakah aplikasi disebarkan mandiri atau tidak. benar, atau tidak ada (untuk false) Panduan penyebaran Windows App SDK untuk aplikasi mandiri
WindowsAppSdkUndockedRegFreeWinRTInitialize. Menentukan apakah Windows App SDK memanfaatkan penginisialisasi otomatis aktivasi bebas Pendaftaran atau tidak. true (default untuk executables), false (default untuk non-executables) Memilih keluar dari (atau ke) dukungan UndockedRegFreeWinRT otomatis
WindowsPackageType. Pengaturan <WindowsPackageType>None</WindowsPackageType> untuk aplikasi yang tidak dikemas menyebabkan penginisialisasi otomatis dependensi bootstrapper/dinamis menemukan dan memuat versi Windows App SDK yang paling sesuai untuk aplikasi Anda. Tidak ada, atau tidak ada (untuk menonaktifkan penginisialisasi otomatis) Membuka kemasan aplikasi WinUI

Di balik layar, dan memilih keluar dari penginisialisasi otomatis

Example

Berikut adalah kutipan dari file umum .csproj untuk proyek C# WinUI 3, memperlihatkan beberapa properti proyek dari tabel di atas yang digunakan.

...
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
    <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
    ...
    <UseWinUI>true</UseWinUI>
    <EnableMsixTooling>true</EnableMsixTooling>
  </PropertyGroup>
...