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.
Um projeto do SDK de Aplicativo do Windows, por padrão, é dependente de uma estrutura. Para alternar para a implantação autocontida, siga as etapas abaixo (os termos dependente do framework e independente são descritos na Visão geral sobre a implantação do SDK do Aplicativo Windows).
- No Visual Studio, clique com o botão direito do mouse no nó do projeto do aplicativo e clique em Editar Arquivo de Projeto para abrir o arquivo de projeto do aplicativo para edição. Para um projeto C++, primeiro clique em Descarregar Projeto.
- No arquivo de projeto do aplicativo, dentro do principal
PropertyGroup, adicione<WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>conforme mostrado na captura de tela abaixo.
- Salve e feche o arquivo de projeto.
- Clique em Recarregar Projeto.
- Se você estiver usando um Projeto de Empacotamento de Aplicativos do Windows (em vez do MSIX de projeto único obtido com o Aplicativo WinUI em Branco (Empacotado), faça todas as alterações acima no arquivo de projeto para o projeto de empacotamento também.
Observação
Projetos de biblioteca não devem ser alterados. A implantação independente só deve ser configurada em projetos de aplicativo (e, quando aplicável, em um Projeto de Empacotamento de Aplicativos Windows ).
Para ver aplicativos de exemplo, consulte Exemplos independentes de implantação do SDK de Aplicativos do Windows.
Depois de definir a propriedade WindowsAppSDKSelfContained como true no arquivo de projeto, o conteúdo do pacote do SDK do Aplicativo Windows Framework será extraído para o resultado da compilação e implantado como parte do aplicativo.
Observação
Os aplicativos .NET precisam ser publicados como independentes para serem totalmente independentes. Consulte este exemplo para saber como configurar o .NET independentes com perfis de publicação.
Observe que dotnet publish agrupa assemblies gerenciados, mas não pode produzir um EXE em arquivo único para aplicativos WinUI 3 — as dependências nativas de runtime do SDK do Aplicativo Windows devem permanecer como arquivos separados. Consulte EXE de arquivo único para obter detalhes.
Observação
Os aplicativos C++ precisam usar o CRT híbrido também para serem totalmente auto-suficientes. Importar HybridCRT.props de Directory.Build.props é a maneira recomendada de configurá-lo para todos os projetos em uma solução (consulte um exemplo em Directory.Build.props). Um aplicativo empacotado também deve definir <UseCrtSDKReferenceStaticWarning>false</UseCrtSDKReferenceStaticWarning> em seu arquivo de projeto. Consulte o exemplo de aplicativo de implantação independente para saber como usar o CRT híbrido.
Se o seu aplicativo estiver empacotado (para obter mais informações, consulte Visão geral de empacotamento e implantação), as dependências do SDK do Aplicativo Windows serão incluídas como conteúdo dentro do pacote MSIX. A implantação do aplicativo ainda requer o registro do pacote MSIX como qualquer outro aplicativo empacotado.
Se o aplicativo estiver empacotado com local externo ou desempacotado, as dependências do SDK do Aplicativo do Windows serão copiadas ao lado do .exe na saída da compilação. Você pode implantar os arquivos resultantes usando xcopy ou incluí-los em um instalador personalizado.
Dependências de pacotes MSIX adicionais
Um pequeno número de APIs no SDK de Aplicativo do Windows depende de pacotes MSIX adicionais que representam a funcionalidade crítica do sistema operacional (SO).
- Por exemplo, as APIs de notificação por push (PushNotificationManager) têm uma dependência no pacote Singleton (APIs de notificação de aplicativo, como AppNotificationManager , não exigem esse pacote). Consulte a arquitetura de implantação para o SDK do Aplicativo Windows.
Para usar APIs que dependem de pacotes MSIX adicionais em um aplicativo autossuficiente, você tem as seguintes opções:
- Você pode tornar sua funcionalidade opcional e ativá-la somente se e quando possível. Chamar o método IsSupported das APIs (PushNotificationManager.IsSupported) permitirá verificar dinamicamente em runtime se as APIs estão disponíveis ou não para o aplicativo de chamada no sistema em que ele está em execução.
- Isso possibilita o uso seguro, condicional e opcional das APIs, sem comprometer a simplicidade da sua implantação independente.
- Somente se os serviços de sistema operacional estiverem instalados fora da implantação do aplicativo o aplicativo acenderá a funcionalidade apropriada. Mas, na verdade, há alguns casos em que as APIs funcionarão mesmo sem que o pacote Singleton esteja presente; portanto, chamar IsSupported para verificar geralmente é uma boa ideia.
- Implante os pacotes MSIX necessários como parte da instalação do aplicativo.
- Isso permite que você dependa da API em todos os cenários. Mas exigir a implantação de dependências do pacote MSIX como parte da implantação do aplicativo pode comprometer a simplicidade da implantação independente.
- Não use a API.
- Considere APIs alternativas que fornecem funcionalidade semelhante sem requisitos de implantação adicionais.
Desativar (ou ativar) no suporte automático ao UndockedRegFreeWinRT
A propriedade do projeto WindowsAppSdkUndockedRegFreeWinRTInitialize controla se a implementação do SDK do Aplicativo Windows para Windows Runtime sem registro e não acoplado (UndockedRegFreeWinRT) é habilitada automaticamente na inicialização do aplicativo. Esse suporte é necessário para aplicativos independentes não empacotados.
WindowsAppSdkUndockedRegFreeWinRTInitialize tem como padrão true se WindowsAppSDKSelfContained for true, WindowsPackageType for None e a propriedade do projeto OutputType estiver definida como Exe ou WinExe (ou seja, o projeto produz um executável). Essa última condição impede, por padrão, a adição de suporte automático a UndockedRegFreeWinRT em DLLs de bibliotecas de classes e outros arquivos não executáveis. Se você precisar de suporte automático para UndockedRegFreeWinRT em um arquivo que não é executável (por exemplo, uma DLL de teste carregada por um executável de processo de host que não inicializa UndockedRegFreeWinRT), você pode habilitá-la explicitamente em seu projeto com <WindowsAppSdkUndockedRegFreeWinRTInitialize>true</WindowsAppSdkUndockedRegFreeWinRTInitialize>.
Tópicos relacionados
Windows developer