Partilhar via


Tutorial: Utilize a API bootstrapper numa aplicação com localização externa ou numa aplicação não empacotada que utilize o Windows App SDK.

Este artigo mostra como configurar uma aplicação que não está instalada usando o MSIX (ou seja, está empacotada com localização externa ou não empacotada) para usar a API bootstrapper, de modo a carregar explicitamente o runtime do Windows App SDK e chamar as APIs do Windows App SDK. As aplicações que não são instaladas através do MSIX incluem aplicações empacotadas com localização externa e aplicações não embaladas.

Importante

A partir do Windows App SDK 1.0, a abordagem padrão para carregar o Windows App SDK a partir de uma aplicação empacotada com localização externa ou não empacotada é usar autoinicialização através da propriedade de projeto <WindowsPackageType> (bem como fazer alterações adicionais na configuração). Para os passos envolvidos na autoinicialização no contexto do WinUI 3 project, veja Crie o seu primeiro WinUI project. Ou, se tiveres um projeto existente que não seja o WinUI, então vê Usa o Windows App SDK num projeto existente.

Se tiver necessidades avançadas (como gestão personalizada de erros ou carregar uma versão específica do Windows App SDK), então pode chamar explicitamente a API do bootstrapper. E é essa a abordagem que este tópico demonstra. Além disso, para mais informações, veja Use o tempo de execução Windows App SDK para aplicações empacotadas com localização externa ou não empacotadas.

Este tópico demonstra como chamar explicitamente a API bootstrapper a partir de um projeto básico de aplicação de linha de comandos. Os passos aplicam-se a qualquer aplicação de ambiente de trabalho não empacotada que utilize o Windows App SDK.

Antes de concluir este tutorial, recomendamos que reveja Runtime architecture para saber mais sobre a dependência de pacotes Framework que a sua aplicação assume ao usar o Windows App SDK, bem como os componentes adicionais necessários para funcionar numa aplicação empacotada com localização externa ou não empacotada.

Pré-requisitos

  1. Instalar ferramentas para o Windows App SDK.
  2. Certifique-se de que todas as dependências para aplicações embaladas com localização externa e não empacotadas estão instaladas (ver guia de implementação Windows App SDK para aplicações dependentes do framework empacotadas com localização externa ou não empacotadas). Uma forma fácil de fazer isso é executar o instalador do tempo de execução do Windows App SDK.

Instruções

Podes seguir este tutorial usando um project em C# ou C++.

Observação

As dependências dinâmicas e as APIs de bootstrapper falham quando chamadas por um processo elevado. Como resultado, o Visual Studio não deveria ser lançado de forma elevada. Veja Dependências Dinâmicas não suporta elevação #567 para mais detalhes.

Siga estas instruções para configurar um project WinUI em C# que seja empacotado com localização externa ou não empacotado.

  1. No Visual Studio, crie um novo projeto de aplicação de consola C#. Nomeie o projeto DynamicDependenciesTest. Depois de criares o projeto, deves ter uma aplicação de consola C# "Olá, Mundo!".

  2. De seguida, configura o teu projeto.

    1. Em Solution Explorer, clique com o botão direito do rato no seu projeto e escolha Editar ficheiro de projeto.
    2. Substitua o valor do elemento TargetFramework por um Target Framework Moniker. Por exemplo, use o seguinte se a sua aplicação tiver como alvo o Windows 10, versão 2004.
    <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
    
    1. Guarde e feche o ficheiro do project.
  3. Altere a plataforma da sua solução para x64. O valor predefinido numa .NET project é AnyCPU, mas o WinUI não suporta essa plataforma.

    1. Selecione Build>Configuration Manager.
    2. Selecione a lista suspensa sob Plataforma de solução ativa e clique em Nova para abrir a caixa de diálogo Nova Plataforma de Solução.
    3. Na lista suspensa em , escolha ou introduza a nova plataforma, e selecione x64.
    4. Clique OK para fechar a caixa de diálogo Nova Plataforma de Solução.
    5. Em Configuration Manager, clique em Fechar.
  4. Instale o pacote NuGet do Windows App SDK no seu projecto.

    1. Em Solution Explorer, clique com o botão direito no nó Dependências e escolha Gerir Pacotes Nuget.
    2. Na janela NuGet Package Manager, selecione o separador Browse e instale o pacote Microsoft.WindowsAppSDK.
  5. Agora está pronto para usar a API do Bootstrapper (veja Use o tempo de execução do Windows App SDK para aplicações com localização externa ou não empacotadas) para adquirir dinamicamente uma dependência do pacote de framework do Windows App SDK. Isto permite-lhe usar as APIs do Windows App SDK na sua aplicação.

    Abra o arquivo de código Program.cs e substitua o código padrão pelo código a seguir para chamar o Bootstrap.Initialize método para inicializar o bootstrapper. Este código define de que versão do Windows App SDK a aplicação depende ao inicializar o bootstrapper.

    Importante

    Você precisará editar o código abaixo para se adequar à sua configuração específica. Veja as descrições dos parâmetros do método Bootstrap.Initialize para que possa especificar uma das versões do Windows App SDK que tem instaladas.

    using System;
    using Microsoft.Windows.ApplicationModel.DynamicDependency;
    
    namespace DynamicDependenciesTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                Bootstrap.Initialize(0x00010002);
                Console.WriteLine("Hello, World!");
    
                // Release the DDLM and clean up.
                Bootstrap.Shutdown();
            }
        }
    }
    

    Na sua essência, a API bootstrapper é uma API nativa C/C++ que lhe permite usar as APIs do Windows App SDK na sua aplicação. Mas numa aplicação .NET que usa a Windows App SDK 1.0 ou posterior, podes usar o wrapper .NET para a API bootstrapper. Esse wrapper oferece uma forma mais fácil de chamar a API bootstrapper numa aplicação .NET do que chamar diretamente as funções nativas C/C++. O exemplo de código anterior invoca os métodos estáticos Initialize e Shutdown da classe Bootstrap na implementação em .NET para a API de arranque.

  6. Para demonstrar que os componentes de execução Windows App SDK foram carregados corretamente, adicione algum código que utilize a classe ResourceManager na Windows App SDK para carregar um recurso de cadeia.

    1. Adicione um novo ficheiro Resources (.resw) ao seu project (mantenha o nome predefinido).

    2. Com o arquivo de recursos aberto no editor, crie um novo recurso de cadeia de caracteres com as seguintes propriedades.

      • Nome: Mensagem
      • Valor: Olá, recursos!
    3. Salve o arquivo de recursos.

    4. Abra o arquivo de código Program.cs e substitua a linha Console.WriteLine("Hello, World!"); pelo código a seguir.

    // Create a resource manager using the resource index generated during build.
       var manager = new Microsoft.Windows.ApplicationModel.Resources.ResourceManager("DynamicDependenciesTest.pri");
    
    // Look up a string in the .resw file using its name.
    Console.WriteLine(manager.MainResourceMap.GetValue("Resources/Message").ValueAsString);
    
    1. Clique Iniciar sem depuração (ou Iniciar a depuração) para compilar e executar a sua aplicação. Você deverá ver a string Hello, resources! exibida com êxito.

Se o seu projeto for WPF

Para uma aplicação Windows Presentation Foundation (WPF), veja Use o Windows App SDK numa aplicação WPF.