Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Um projeto SDK de Aplicativo Windows é dependente da estrutura por padrão. Para alternar para a implantação independente, siga as etapas abaixo (os termos dependente da estrutura e autônomos são descritos em visão geral da implantação do SDK de Aplicativo Windows).
- No Visual Studio, clique com o botão direito do mouse no nó do projeto de 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 da
PropertyGroupprincipal, adicione<WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>conforme mostrado na captura de tela abaixo.
- Salve e feche o arquivo de projeto.
- Clique Recarregar projeto.
- Se você estiver usando um de Projeto de Empacotamento de Aplicativos do Windows (em vez do MSIX de projeto único que você obtém com Aplicativo em Branco, Empacotado (WinUI 3 na Área de Trabalho)), faça todas as alterações acima no arquivo de projeto para o projeto de empacotamento também.
Observação
Os projetos de bibliotecas não devem ser alterados. A implantação autônoma só deve ser configurada em projetos de aplicativo (e, quando aplicável, em um Windows Application Packaging Project).
Para aplicações de exemplo, consulte os exemplos de implantação autónoma do SDK de Aplicações Windows.
Depois de definir a propriedade WindowsAppSDKSelfContained para true em seu arquivo de projeto, o conteúdo do pacote do Windows App SDK Framework será extraído para sua saída de compilação e implantado como parte de seu aplicativo.
Observação
Os aplicativos .NET precisam ser publicados como autónomos para serem totalmente autónomos. Consulte este exemplo para configurar o .NET autónomo com perfis de publicação.
dotnet publish ainda não é compatível com o Windows App SDK 1.1.
Observação
As aplicações C++ precisam usar o CRT híbrido também para serem totalmente independentes. Importar HybridCRT.props de Directory.Build.props é a maneira recomendada de configurá-lo para todos os projetos em uma solução (veja um exemplo em Directory.Build.props). Uma aplicação empacotada também deve definir <UseCrtSDKReferenceStaticWarning>false</UseCrtSDKReferenceStaticWarning> no seu ficheiro de projeto. Consulte o Aplicativo de exemplo de implantação autônoma para saber como usar o CRT híbrido.
Se seu aplicativo estiver empacotado (para obter mais informações, consulte Visão geral da 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 a sua aplicação estiver empacotada com uma localização externa ou não empacotada, as dependências do Windows App SDK serão copiadas ao lado do .exe na saída da compilação. Você pode xcopy-deploy os arquivos resultantes ou incluí-los em um instalador personalizado.
Dependências em pacotes MSIX adicionais
Um pequeno número de APIs no SDK de aplicativos Windows depende de pacotes MSIX adicionais que representam a funcionalidade crítica do sistema operacional (SO).
- Por exemplo (a partir do SDK de Aplicativo Windows 1.1), as APIs de notificações por push (PushNotificationManager) e as APIs de notificações de aplicativo (AppNotificationManager) dependem do pacote Singleton (consulte Arquitetura de implantação para o SDK de Aplicativo Windows).
Isso significa que, se você quiser usar essas APIs em um aplicativo independente, terá as seguintes opções:
- Você pode tornar sua funcionalidade opcional e iluminá-la somente se e quando possível. Chamar o método IsSupported das APIs (PushNotificationManager.IsSupported e AppNotificationManager.IsSupported) permitirá que o utilizador verifique dinamicamente, em tempo de execução, se as APIs estão disponíveis para a aplicação chamadora no sistema onde está a ser executado.
- Isso permite o uso seguro, condicional e opcional das APIs sem comprometer a simplicidade de sua implantação independente.
- Somente se os serviços do sistema operacional estiverem instalados fora da implantação do aplicativo é que o aplicativo acenderá a funcionalidade apropriada. Mas, na verdade, há alguns casos em que as APIs funcionarão mesmo sem o pacote Singleton estar presente; portanto, invocar IsSupported para verificar é frequentemente 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 seu aplicativo pode comprometer a simplicidade da implantação independente.
- Não use a API.
- Considere APIs alternativas que forneçam funcionalidade semelhante sem requisitos adicionais de implantação.
Optar por desativar (ou ativar) o suporte automático a UndockedRegFreeWinRT
A propriedade de projeto WindowsAppSdkUndockedRegFreeWinRTInitialize foi introduzida na versão 1.2 do SDK de Aplicativo do Windows (do canal estável). Se essa propriedade estiver definida como true, garantirá que a implementação do Windows App SDK do Runtime do Windows sem registo acoplado (UndockedRegFreeWinRT) seja ativada automaticamente no arranque da aplicação. Esse suporte é necessário para aplicativos autônomos não empacotados.
WindowsAppSdkUndockedRegFreeWinRTInitialize assume como padrão true se WindowsAppSDKSelfContained for true e WindowsPackageType estiver None e (a partir da versão 1.2 do SDK do Windows App) OutputType propriedade do projeto estiver definida como Exe ou WinExe (ou seja, o projeto produz um executável). Essa última condição é impedir a adição do suporte automático para UndockedRegFreeWinRT em DLLs de biblioteca de classes e outros não executáveis como padrão. Se você precisa de suporte automático a UndockedRegFreeWinRT em um não executável (por exemplo, uma DLL de teste carregada por um executável de processo de host que não inicializa UndockedRegFreeWinRT), então você pode habilitá-lo explicitamente em seu projeto com <WindowsAppSdkUndockedRegFreeWinRTInitialize>true</WindowsAppSdkUndockedRegFreeWinRTInitialize>.
Tópicos relacionados
Windows developer