Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo argomento descrive le proprietà del progetto che è possibile impostare nel file di progetto di Visual Studio (ad esempio .csproj o .vcxproj) per personalizzare la modalità di distribuzione dell'app, inclusa la configurazione degli inizializzatori automatici.
Inizializzatori automatici in Windows App SDK
In Windows App SDK esistono diverse routine il cui processo consiste nel garantire che Windows App Runtime sia inizializzato correttamente. Queste routine sono note come inizializzatori automatici, perché vengono eseguite automaticamente prima del punto di ingresso dell'applicazione e funzionano automaticamente per l'inizializzazione.
Suggerimento
In caso di curiosità sui dettagli tecnici. In C++, un inizializzatore automatico viene implementato con un costruttore di classe statico. In C#, un inizializzatore automatico viene implementato con un inizializzatore di modulo .NET. È quindi possibile che a volte si senta l'inizializzatore di modulo usato quando il termine corretto è l'inizializzatore automatico.
Tutti gli inizializzatori automatici sono abilitati in modo condizionale per impostazione predefinita, in base alla configurazione di creazione di pacchetti e distribuzione dell'app. Ecco i dettagli su di essi:
- Bootstrapper (noto anche come dipendenze dinamiche) inizializzatore automatico. Questo inizializzatore automatico chiama automaticamente l'API del programma di avvio automatico all'avvio dell'app. È necessario per le app non in pacchetto dipendenti dal framework, per assicurarsi che Windows App Runtime venga aggiunto al grafico dei pacchetti dell'app. Per informazioni sulle app dipendenti dal framework e autonome, vedi Panoramica della distribuzione di Windows App SDK. Per informazioni sulle app senza pacchetto e con pacchetto, vedi App di Windows: creazione di pacchetti, distribuzione e processi.
- Per un'applicazione confezionata, non è necessario l'auto-inizializzatore delle dipendenze dinamiche del bootstrapper perché il file
appxmanifest.xmlesprime la dipendenza del framework. E per un'app autonoma, non è necessario l'auto-initializzatore del bootstrapper/dipendenze dinamiche perché tali app non usano il framework. - È possibile disattivare l'inizializzatore automatico di bootstrapper/dipendenze dinamiche nel file
.csprojo.vcxprojtramite<WindowsAppSdkBootstrapInitialize>false</WindowsAppSdkBootstrapInitialize>.
- Per un'applicazione confezionata, non è necessario l'auto-inizializzatore delle dipendenze dinamiche del bootstrapper perché il file
- Inizializzatore automatico di Deployment Manager. Questa operazione è necessaria per le app in pacchetto dipendenti dal framework che usano la funzionalità main/singleton (ad esempio, le notifiche push), perché il
appxmanifest.xmlfile non può esprimere tali dipendenze.- Per un'app autonoma, non è necessario l'inizializzatore automatico di Deployment Manager perché tali app non supportano la funzionalità main/singleton.
- Per informazioni più importanti, vedere la sezione Inizializzatore automatico di Deployment Manager più avanti in questo argomento.
- Inizializzatore automatico di attivazione senza registrazione. Questa operazione è necessaria per consentire a un'app autonoma di utilizzare l'attivazione di Windows Runtime (WinRT) senza registrazione basata su manifesto (UndockedRegFreeWinRT), se l'app è in esecuzione in una versione del sistema operativo precedente all'aggiornamento di Windows 10, maggio 2019 (versione 1903, con nome in codice "19H1").
- Per le app dipendenti dal framework e per le app autonome destinate a Windows 10, versione 1903 o successiva, non è necessario l'inizializzatore automatico di attivazione senza registrazione. Queste app possono annullare l'iscrizione tramite
<WindowsAppSdkUndockedRegFreeWinRTInitialize>false</WindowsAppSdkUndockedRegFreeWinRTInitialize>.
- Per le app dipendenti dal framework e per le app autonome destinate a Windows 10, versione 1903 o successiva, non è necessario l'inizializzatore automatico di attivazione senza registrazione. Queste app possono annullare l'iscrizione tramite
- Inizializzatore automatico di compatibilità. Questo è necessario per consentire a un'app di utilizzare le strutture di contenimento A/B per controllare il comportamento di rilascio di assistenza. Per altre info, vedi RuntimeCompatibilityOptions.
- Per le app che non usano il contenimento A/B (ovvero l'impostazione predefinita), non è necessario l'inizializzatore automatico di compatibilità.
Inizializzatore automatico di Deployment Manager
Quando un'app che usa Windows App SDK 1.8 o versione successiva viene avviata, l'inizializzatore automatico di Deployment Manager viene eseguito per impostazione predefinita. Ma puoi scegliere di non farlo accadere. Questa sezione illustra i vantaggi e le limitazioni di consentire l'esecuzione dell'inizializzatore automatico di Deployment Manager e aiuta a decidere se rinunciare.
Per consentire all'app di usare le funzionalità nei pacchetti Main/Singleton (ad esempio, notifiche push): 1. È necessario usare l'API di distribuzione per assicurarsi che tali pacchetti vengano distribuiti (perché i pacchetti Main/Singleton non sono framework, ma pacchetti "main", ad esempio le app, in modo che non possano essere registrati come dipendenze nel manifesto appx dell'app. L'API di distribuzione offre invece la funzionalità per distribuire tali pacchetti. 2. A causa di 1), l'app deve inizializzare Deployment Manager causando la chiamata di DeploymentManager.Initialize . L'app può eseguire questa operazione automaticamente o in modo esplicito, come vedremo. 3. L'app deve essere un'app in pacchetto dipendente dal framework in modo che richieda una dipendenza dai pacchetti Main/Singleton.
Un modo per inizializzare Deployment Manager consiste nel consentire l'esecuzione dell'inizializzatore automatico di Deployment Manager (vedere la sezione Inizializzatori automatici in Windows App SDK più indietro in questo argomento). L'inizializzatore automatico di Deployment Manager chiama DeploymentManager.Initialize automaticamente. L'altro modo per inizializzare Deployment Manager consiste nel chiamare in modo esplicito DeploymentManager.Initialize manualmente.
Se l'app (usando Windows App SDK 1.8 o versione successiva) non richiede i pacchetti Main/Singleton, devi rifiutare esplicitamente l'inizializzatore automatico di Deployment Manager impostando la proprietà WindowsAppSdkDeploymentManagerInitialize su false nel file di progetto dell'app.
Se l'app (con Windows App SDK 1.8 o versione successiva) richiede i pacchetti Main/Singleton, è possibile:
- Consentire l'esecuzione dell'inizializzatore automatico di Deployment Manager (operazione eseguita per impostazione predefinita)
- o rifiutare esplicitamente l'inizializzatore automatico di Deployment Manager impostando la proprietà WindowsAppSdkDeploymentManagerInitialize su false nel file di progetto dell'app. È quindi necessario chiamare in modo esplicito DeploymentManager.Initialize manualmente.
Importante
Per qualsiasi processo in esecuzione in AppContainer, se si fa in modo che DeploymentManager.Initialize venga chiamato, l'app deve dichiarare la packageManagementfunzionalità con restrizioni nel manifesto del pacchetto.
Proprietà del progetto
Nella tabella seguente sono riportate le proprietà che è possibile impostare nel file di progetto dell'app. Vedere la sezione precedente (sopra) per informazioni dettagliate sugli inizializzatori automatici in Windows App SDK.
| Nome e descrizione della proprietà | Valori | Per altre info |
|---|---|---|
| AppxPackage. Specifica se un'app WinUI è in pacchetto o meno. | false (per un'app non in pacchetto) o assente (per un'app in pacchetto) | Annullare il pacchetto di un'app WinUI |
| EnableMsixTooling. Abilita la funzionalità MSIX a progetto singolo per un progetto. | true (per abilitare) o assente (per disabilitare) | Confezionare la tua app utilizzando MSIX con progetto singolo |
| UseWinUI. Specifica se si usa il framework dell'interfaccia utente WinUI nell'app. | true, o assente (per false) | WinUI nel SDK per App di Windows (WinUI) |
| WindowsAppSdkBootstrapInitialize. Determina se Windows App SDK utilizza o no il bootstrapper/l'inizializzatore delle dipendenze dinamiche. | true (impostazione predefinita per i file eseguibili), false (impostazione predefinita per i file non eseguibili) | Esclusione (o inclusione) degli inizializzatori automatici |
| WindowsAppSdkDeploymentManagerInitialize. Determina se Windows App SDK usa o meno l'inizializzatore automatico di Deployment Manager. | true (impostazione predefinita), false | |
| WindowsAppSDKRuntimePatchLevel1, WindowsAppSDKRuntimePatchLevel2 e WindowsAppSDKDisabledChanges. Determina se Windows App SDK sfrutta o meno l'inizializzatore automatico di compatibilità e configura le opzioni di compatibilità desiderate per il comportamento di Windows App Runtime delle modifiche aggiunte negli aggiornamenti di manutenzione. | Vari o assenti (per disabilitare l'inizializzatore automatico) | RuntimeCompatibilityOptions |
| WindowsAppSdkSelfContained. Determina se un'app viene distribuita autonomamente. | true, o assente (per false) | Guida alla distribuzione di Windows App SDK per le app autonome |
| WindowsAppSdkUndockedRegFreeWinRTInitialize. Determina se Windows App SDK usa o meno l'inizializzatore automatico di attivazione senza registrazione. | true (impostazione predefinita per i file eseguibili), false (impostazione predefinita per i file non eseguibili) | Scelta di rinunciare a (o aderire a) il supporto automatico per UndockedRegFreeWinRT |
WindowsPackageType. L'impostazione <WindowsPackageType>None</WindowsPackageType> per un'app non in pacchetto causa l'inizializzatore automatico delle dipendenze dinamiche o del bootstrapper a individuare e caricare la versione di Windows App SDK più appropriata per la tua app. |
Nessuno o assente (per disabilitare l'inizializzatore automatico) |
Annullare il pacchetto di un'app WinUI Dietro le quinte e scegliere di non utilizzare gli inizializzatori automatici |
Example
Ecco un estratto da un file tipico .csproj per un progetto WinUI C#, che mostra alcune delle proprietà del progetto della tabella precedente in uso.
...
<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>
...
Argomenti correlati
- Panoramica della distribuzione
- Creare il primo progetto WinUI (Windows App SDK)
- Confezionare la tua app utilizzando MSIX con progetto singolo
- RuntimeCompatibilityOptions
- Usare il runtime di Windows App SDK per le app confezionate con destinazione esterna o non confezionate
- Guida alla distribuzione di Windows App SDK per le app autonome
- Panoramica della distribuzione di Windows App SDK
- App di Windows: creazione di pacchetti, distribuzione ed elaborazione
- WinUI nel SDK per App di Windows (WinUI)