Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico descreve as propriedades do projeto que você pode definir em seu arquivo de projeto do Visual Studio (como .csproj ou .vcxproj) para personalizar como seu aplicativo é implantado, incluindo a configuração de inicializadores automáticos.
Inicializadores automáticos no SDK do Aplicativo do Windows
No SDK do Aplicativo do Windows, há várias rotinas cujo trabalho é garantir que o Windows App Runtime seja inicializado corretamente. Essas rotinas são conhecidas como inicializadores automáticos, pois são executadas automaticamente antes do ponto de entrada do aplicativo e fazem o trabalho de inicialização para você.
Dica
Caso esteja curioso sobre detalhes técnicos. No C++, um inicializador automático é implementado com um construtor de classe estático. No C#, um inicializador automático é implementado com um inicializador de módulo .NET. Portanto, às vezes, você pode ouvir o inicializador de módulo usado quando o termo apropriado for inicializador automático.
Todos os inicializadores automáticos são habilitados condicionalmente por padrão, com base na configuração de empacotamento e implantação do aplicativo. Aqui estão os detalhes sobre eles:
- Inicializador automático bootstrapper (também conhecido como dependências dinâmicas). Esse inicializador automático chama a API bootstrapper automaticamente na inicialização do aplicativo. Ele é necessário para aplicativos não empacotados dependentes da estrutura, a fim de garantir que o Windows App Runtime seja adicionado ao grafo de pacotes do aplicativo. Para obter informações sobre aplicativos dependentes da estrutura (e autocontidos), consulte a visão geral da implantação do SDK do Aplicativo do Windows. Para obter informações sobre aplicativos não empacotados (e empacotados), consulte os aplicativos do Windows: empacotamento, implantação e processo.
- Para um aplicativo empacotado, você não precisa do inicializador automático de dependências dinâmicas/bootstrapper porque o
appxmanifest.xmlarquivo expressa a dependência da estrutura. E para um aplicativo autocontido, você não precisa do inicializador automático de dependências/dependências dinâmicas porque esses aplicativos não usam a estrutura. - Você pode recusar o inicializador automático de dependências dinâmicas/bootstrapper no arquivo
.csprojou.vcxprojno arquivo por meio de<WindowsAppSdkBootstrapInitialize>false</WindowsAppSdkBootstrapInitialize>.
- Para um aplicativo empacotado, você não precisa do inicializador automático de dependências dinâmicas/bootstrapper porque o
- Inicializador automático do Gerenciador de Implantação. Isso é necessário para aplicativos empacotados dependentes da estrutura que usam a funcionalidade principal/singleton (por exemplo, notificações por push), porque o
appxmanifest.xmlarquivo não pode expressar essas dependências.- Para um aplicativo autocontido, você não precisa do inicializador automático do Deployment Manager porque esses aplicativos não dão suporte à funcionalidade principal/singleton.
- Para obter informações mais importantes, consulte a seção O inicializador automático do Gerenciador de Implantação posteriormente neste tópico.
- Inicializador automático de ativação sem registro. Isso é necessário para que um aplicativo autocontido use a ativação winRT (UndockedRegFreeWinRT) sem registro baseado em manifesto, se o aplicativo estiver executando um downlevel em uma versão do sistema operacional anterior à Atualização do Windows 10 de maio de 2019 (versão 1903; codinome "19H1").
- Para aplicativos dependentes de estrutura e para aplicativos autocontidos destinados ao Windows 10, versão 1903 ou posterior, você não precisa do inicializador automático de ativação sem registro. Esses aplicativos podem recusar por meio de
<WindowsAppSdkUndockedRegFreeWinRTInitialize>false</WindowsAppSdkUndockedRegFreeWinRTInitialize>.
- Para aplicativos dependentes de estrutura e para aplicativos autocontidos destinados ao Windows 10, versão 1903 ou posterior, você não precisa do inicializador automático de ativação sem registro. Esses aplicativos podem recusar por meio de
- Inicializador automático de compatibilidade. Isso é necessário para que um aplicativo use instalações de contenção A/B para controlar o comportamento de versão de manutenção. Para obter mais informações, consulte RuntimeCompatibilityOptions.
- Para aplicativos que não usam a contenção A/B (que é o padrão), você não precisa do inicializador automático de compatibilidade.
O inicializador automático do Gerenciador de Implantação
Quando um aplicativo que usa o SDK do Aplicativo do Windows 1.8 ou posterior é iniciado, o inicializador automático do Gerenciador de Implantação é executado por padrão. Mas você pode recusar que isso aconteça. Esta seção explica os benefícios e as limitações de permitir que o inicializador automático do Gerenciador de Implantação seja executado e ajuda você a decidir se deseja ou não recusar.
Para que seu aplicativo use a funcionalidade nos pacotes Main/Singleton (por exemplo, notificações por push): 1. Você deve usar a API de Implantação para garantir que esses pacotes sejam implantados (porque os pacotes Main/Singleton não são estruturas, mas pacotes "principais", como aplicativos; portanto, eles não podem ser registrados como dependências no manifesto appx do aplicativo. Em vez disso, a API de Implantação fornece a funcionalidade para implantar esses pacotes). 2. Por causa de 1), seu aplicativo precisa inicializar o Gerenciador de Implantação fazendo com que DeploymentManager.Initialize seja chamado. Seu aplicativo pode fazer isso automaticamente ou explicitamente, como veremos. 3. O aplicativo precisa ser um aplicativo empacotado dependente do framework para que ele tenha uma dependência dos pacotes Main/Singleton.
Uma maneira de inicializar o Gerenciador de Implantação é permitir que o inicializador automático do Gerenciador de Implantação seja executado (consulte a seção Inicializadores automáticos no SDK do Aplicativo do Windows anteriormente neste tópico). O inicializador automático do Gerenciador de Distribuição chama DeploymentManager.Initialize para você. A outra maneira de inicializar o Gerenciador de Implantação é chamar explicitamente DeploymentManager.Initialize por conta própria.
Se o aplicativo (usando o SDK do Aplicativo do Windows 1.8 ou posterior) não precisar dos pacotes Main/Singleton, você deverá recusar o inicializador automático do Gerenciador de Implantação definindo a propriedade WindowsAppSdkDeploymentManagerInitialize como false no arquivo de projeto do seu aplicativo.
Se o seu aplicativo (usando o Windows App SDK 1.8 ou posterior) precisar dos pacotes Main/Singleton, você pode:
- Permitir que o inicializador automático do Gerenciador de Implantação seja executado (o que ele faz por padrão),
- ou opte por sair do inicializador automático do Gerenciador de Implantação definindo a propriedade WindowsAppSdkDeploymentManagerInitialize como false no arquivo de projeto do aplicativo. Em seguida, você deve chamar explicitamente DeploymentManager.Initialize por conta própria.
Importante
Para qualquer processo em execução no AppContainer, se você fizer com que DeploymentManager.Initialize seja chamado, seu aplicativo precisará declarar a packageManagementfuncionalidade restrita no manifesto do pacote.
Propriedades do projeto
Na tabela abaixo estão as propriedades que você pode definir no arquivo de projeto do aplicativo. Consulte a seção anterior (acima) para obter detalhes sobre os inicializadores automáticos no SDK do Aplicativo do Windows.
| Nome e descrição da propriedade | Valores | Para obter mais informações |
|---|---|---|
| AppxPackage. Especifica se um aplicativo WinUI 3 está ou não empacotado. | false (para um aplicativo não empacotado) ou ausente (para um aplicativo empacotado) | Desempacotar um aplicativo WinUI |
| EnableMsixTooling. Habilita o recurso MSIX de projeto único para um projeto. | true (para habilitar) ou ausente (para desabilitar) | Empacotar seu aplicativo usando o MSIX de projeto único |
| UseWinUI. Especifica se você está usando a estrutura de interface do usuário do WinUI 3 em seu aplicativo. | true ou ausente (para false) | WinUI no SDK do Aplicativo do Windows (WinUI 3) |
| WindowsAppSdkBootstrapInitialize. Determina se o SDK do Aplicativo do Windows aproveita ou não o inicializador automático de dependências dinâmicas/bootstrapper. | true (o padrão para executáveis), false (o padrão para não executáveis) | Recusar (ou entrar) inicializadores automáticos |
| WindowsAppSdkDeploymentManagerInitialize. Determina se o SDK do Aplicativo do Windows aproveita ou não o inicializador automático do Gerenciador de Implantação. | true (o padrão), false | |
| WindowsAppSDKRuntimePatchLevel1, WindowsAppSDKRuntimePatchLevel2 e WindowsAppSDKDisabledChanges. Determina se o SDK do Aplicativo do Windows aproveita ou não o inicializador automático de compatibilidade e configura as opções de compatibilidade desejadas para o comportamento do Windows App Runtime das alterações adicionadas nas atualizações de manutenção. | Vários ou ausentes (para desabilitar o inicializador automático) | RuntimeCompatibilityOptions |
| WindowsAppSdkSelfContained. Determina se um aplicativo é implantado independentemente ou não. | true ou ausente (para false) | Guia de implantação do SDK de Aplicativos do Windows para aplicativos autônomos |
| WindowsAppSdkUndockedRegFreeWinRTInitialize. Determina se o SDK do Aplicativo do Windows aproveita ou não o inicializador automático de ativação sem registro. | true (o padrão para executáveis), false (o padrão para não executáveis) | Como recusar (ou entrar) o suporte automático DesencaixadoRegFreeWinRT |
WindowsPackageType. A configuração <WindowsPackageType>None</WindowsPackageType> de um aplicativo não empacotado faz com que o inicializador automático de dependências dinâmicas/bootstrapper localize e carregue uma versão da versão do SDK do Aplicativo do Windows mais apropriada para seu aplicativo. |
Nenhum ou ausente (para desabilitar o inicializador automático) |
Desempacotar um aplicativo WinUI Nos bastidores e recusando inicializadores automáticos |
Example
Aqui está um trecho de um arquivo típico .csproj para um projeto do WinUI 3 em C#, mostrando algumas das propriedades do projeto da tabela acima em 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>
...
Tópicos relacionados
- Visão geral da implantação
- Criar seu primeiro projeto do WinUI 3 (SDK de Aplicativo do Windows)
- Empacotar seu aplicativo usando o MSIX de projeto único
- RuntimeCompatibilityOptions
- Usar o runtime SDK do Aplicativo do Windows para aplicativos empacotados com localização externa ou não empacotado
- Guia de implantação do SDK de Aplicativos do Windows para aplicativos autônomos
- Visão geral da implantação do SDK do Aplicativo windows
- Aplicativos do Windows: empacotamento, implantação e processo
- WinUI no SDK do Aplicativo do Windows (WinUI 3)
Windows developer