Compartilhar via


Pacotes opcionais com código executável

Pacotes opcionais com código executável são úteis para dividir um aplicativo grande ou complexo ou para adicionar um aplicativo que já foi publicado. Com o Visual Studio 2017, versão 15.7 e .NET Native 2.1, é possível carregar código executável de pacotes opcionais C++ e C#.

Pré-requisitos

  • Visual Studio 2019 ou Visual Studio 2017 (versão 15.7 ou posterior)
  • Windows 10, versão 1709 ou posterior
  • SDK do Windows 10, versão 1709 ou posterior

Para obter as ferramentas de desenvolvimento mais recentes, consulte Downloads e ferramentas para o Windows 10.

Observação

Para enviar à Store um aplicativo que usa pacotes opcionais e/ou conjuntos relacionados, você precisará de permissão. Pacotes opcionais e conjuntos relacionados podem ser usados para aplicativos de LOB (Linha de Negócios) ou corporativos sem permissão do Partner Center se não forem enviados à Store. Consulte Suporte ao desenvolvedor do Windows a fim de obter permissão para enviar um aplicativo que usa pacotes opcionais e conjuntos relacionados.

Observação

Pacotes opcionais que contêm código executável devem fazer parte de um conjunto relacionado. Você não poderá executar código de um pacote opcional, a menos que ele faça parte de um conjunto relacionado.

Pacotes opcionais C++ com código executável

Para carregar código de um pacote opcional C++, consulte o repositório OptionalPackageSample no GitHub. OptionalPackageDLL mostra como criar um projeto com código que pode ser executado por meio do pacote principal. O projeto MyMainApp demonstra como carregar código do arquivo OptionalPackageDLL.dll

Pacotes opcionais C# com código executável

Para começar a criar um pacote de código opcional em C#, siga as etapas abaixo para configurar sua solução:

  1. Crie um novo aplicativo UWP com a versão mínima definida como o SDK do Windows 10 Fall Creators Update (Compilação 16299) ou posterior.

  2. Adicione um novo projeto de Pacote de Código Opcional (Universal Windows) à solução. Verifique se a Versão Mínima e a Versão de Destino correspondem às do seu aplicativo principal.

  3. Se você planeja enviar seus aplicativos para a Store, clique com o botão direito do mouse em ambos os projetos e selecione Store —> Associar aplicativo à Store...

  4. Abra o arquivo Package.appxmanifest do aplicativo principal e encontre o valor Identity Name. Anote esse valor para a próxima etapa.

  5. Abra o arquivo Package.appxmanifest do pacote do aplicativo opcional e localize o valor uap3:MainAppPackageDependency Name. Atualize o valor uap3:MainAppPackageDependency Name para corresponder ao valor Identity Name do pacote do aplicativo principal da etapa anterior.

    Aqui está um exemplo do Identity do Package.appxmanifest do aplicativo principal.

    <Identity Name="12345.MainAppProject" Publisher="CN=PublisherName" Version="1.0.0.0" />
    

    O uap3:MainPackageDependency do pacote de aplicativos opcional precisa ser atualizado para corresponder ao Identity do aplicativo principal.

    <uap3:MainPackageDependency Name="12345.MainAppProjectTest" />
    
  6. Adicione um arquivo Bundle.mapping.txt ao aplicativo principal. Siga as etapas nesta seção Conjuntos relacionados para criar um conjunto relacionado que contenha ambos os aplicativos.

  7. Crie o projeto de pacote opcional e navegue até a pasta Referência do pacote na saída da compilação encontrada em ..\[PathToOptionalPackageProject]\bin\[architecture]\[configuration]\Reference. Observe que você pode escolher qualquer arquitetura no caminho para a pasta Referência, já que o arquivo .winmd (etapa 8) é independente da arquitetura.

  8. Adicione uma referência do projeto de aplicativo principal ao arquivo .winmd encontrado nessa pasta. Sempre que você alterar a área de superfície da API no projeto de pacote opcional, esse arquivo .winmddeverá ser atualizado. Essa referência fornece ao projeto de aplicativo principal as informações necessárias para compilação.

  9. No projeto de aplicativo principal, navegue até as propriedades de compilação do projeto e selecione Compilar com a cadeia de ferramentas nativa do .NET. Atualmente, apenas a depuração no .NET Native tem suporte para a criação de pacotes de código opcionais em C#. Vá para as propriedades de depuração do projeto e selecione Implantar pacotes opcionais. Isso garantirá que ambos os pacotes estejam sincronizados sempre que você implantar o projeto de aplicativo principal.

Depois de concluir essas etapas, você pode adicionar código ao projeto de pacote opcional como se fosse um projeto de componente WinRT gerenciado. Para acessar o código no projeto de aplicativo principal, chame os métodos públicos expostos no projeto de pacote opcional.