Como o Visual Studio gera um manifesto do pacote de aplicativos

Quando você cria um projeto com Visual Studio, Visual Studio gera um manifesto do pacote (AppxManifest.xml), que contém informações que o sistema precisa para implantar, exibir ou atualizar um aplicativo Plataforma Universal do Windows (UWP).

Há duas variedades de arquivos de manifesto do pacote de aplicativos que você encontrará se estiver desenvolvendo um aplicativo com Visual Studio

  • Package.appxmanifest
    Este é um arquivo de estilo XML que os desenvolvedores usam para configurar os detalhes de um aplicativo, como informações do editor, logotipos, arquiteturas de processador etc. Essa é uma versão temporária e facilmente configurável do manifesto do pacote do aplicativo usado durante o desenvolvimento do aplicativo.
  • AppxManifest.xml
    Esse arquivo é gerado pelo processo de compilação Visual Studio e é baseado nas informações no arquivo Package.appxmanifest. Esta é a versão final do manifesto do pacote de aplicativos usado por aplicativos publicados e instalados por sideload. Se forem feitas atualizações no arquivo Package.appxmanifest, você deverá recompilar o projeto para ver as atualizações no arquivo AppxManifest.xml.

Para obter uma visão geral do processo de empacotamento, consulte Pacote um aplicativo UWP com Visual Studio.

Validando o manifesto do aplicativo

Antes de publicar seu aplicativo, você deve corrigir erros que causem falha em qualquer uma das verificações de validação Visual Studio. Quando Visual Studio gera o manifesto, Visual Studio valida o aplicativo das seguintes maneiras:

  • Validação sintactica
    Visual Studio confirma se todos os dados no manifesto do aplicativo estão em conformidade com o esquema de manifesto do aplicativo.
  • Validação semântica
    Visual Studio fornece diretrizes sobre os dados esperados, com base no contexto das informações.

Note

Se essas seções não mencionarem o campo que você está procurando, ele será gerado a partir de dados que podem ter sido configurados separadamente ou um valor padrão do esquema de manifesto.

Gerando o conteúdo do manifesto

Visual Studio popula os campos nas tabelas a seguir quando gera o arquivo AppxManifest.xml para o pacote do aplicativo.

Identidade

A Identity seção do manifesto do aplicativo contém os campos a seguir.

Campo Descrição
Nome O nome do pacote, que é preenchido de forma diferente nos seguintes cenários:
  • Por padrão, o valor desse campo é um GUID gerado.
  • Se você associar o aplicativo ao Microsoft Store ou se invocar o Store -> Criar Pacotes de Aplicativos... comando e, em seguida, entrar com uma conta de desenvolvedor, o valor desse campo é recuperado do aplicativo associado no Microsoft Store ou Partner Center.
  • Se você invocar o comando Store –> Criar Pacotes de Aplicativos... mas não entrar com uma conta de desenvolvedor, o valor desse campo será retirado do manifesto de origem.
Publicador O nome da editora. Esse nome é preenchido de forma diferente nos seguintes cenários:
  • Por padrão, o valor desse campo é o nome de usuário.
  • Se você associar o aplicativo ao Microsoft Store ou se invocar o Store -> Criar Pacotes de Aplicativos... comando e, em seguida, entrar com uma conta de desenvolvedor, o valor desse campo é o publicador associado à conta.
  • Se você invocar o comando Store –> Criar Pacotes de Aplicativos... mas não entrar com uma conta de desenvolvedor, o valor desse campo corresponderá ao campo de assunto do certificado de teste usado para assinar o pacote do aplicativo.
Visual Studio dá suporte apenas ao formulário cn (nome comum) para o publicador e adicionará o prefixo "CN=" ao campo publicador no manifesto.
Versão A versão do aplicativo que está sendo criado. Normalmente, isso é incrementado sempre que o aplicativo é modificado e empacotado. Para garantir que Version seja incrementado corretamente, use a caixa de diálogo fornecida ao abrir Store -> Criar Pacotes de Aplicativo... para realizar atualizações.
Arquitetura do Processador Um valor gerado com base na configuração de build especificada para o projeto. Se referências de projeto ou referências de arquivo no projeto forem direcionadas a uma arquitetura específica diferente do pacote do aplicativo, um erro de build será gerado e você deverá alterar a arquitetura de destino do pacote do aplicativo para funcionar para todas as referências.

Aqui está um exemplo do Identity XML de saída:

<Identity Name="Microsoft.UWPAppExample"
          Publisher="CN=Microsoft Corporation"
          Version="1.0.0.0"
          ProcessorArchitecture="x86" />

Propriedades

A Properties seção do manifesto do aplicativo contém os campos na tabela a seguir.

Campo Descrição
PublisherDisplayName Essa cadeia de caracteres é preenchida de forma diferente nos seguintes cenários:
  • Por padrão, o valor desse campo é o nome de usuário.
  • Se você associar o aplicativo ao Microsoft Store ou se invocar o Store -> Criar Pacotes de Aplicativos... comando e, em seguida, entrar com uma conta de desenvolvedor, esse valor desse campo corresponde à cadeia de caracteres PublisherDisplayName associada à sua conta de desenvolvedor.
  • Se você invocar o comando Store –> Criar Pacotes de Aplicativos... mas não entrar com uma conta de desenvolvedor, o valor desse campo será o nome de usuário, a menos que você especifique o contrário no arquivo Package.appxmanifest.
DisplayName Essa cadeia de caracteres é preenchida de forma diferente nos seguintes cenários:
  • Por padrão, o valor desse campo é o nome do projeto.
  • Se você associar o aplicativo ao Microsoft Store ou se invocar o Store -> Criar Pacotes de Aplicativos... comando e, em seguida, entrar com uma conta de desenvolvedor, o valor desse campo é preenchido de acordo com as seguintes regras:
    • Se você especificar esse valor no manifesto de origem e o valor começar @ (o que indica que você deseja localizar esse valor), o valor desse campo corresponderá ao que você especificou.
    • Se o aplicativo selecionado tiver apenas um nome, o valor será esse nome.
    • Se o aplicativo selecionado tiver vários nomes, mas o manifesto de origem não for localizado, o valor será definido como o nome de exibição no manifesto de origem. Caso contrário, o valor será definido como o primeiro nome reservado.
  • Se você invocar o comando Store –> Criar Pacotes de Aplicativos... mas não entrar com uma conta de desenvolvedor, o valor desse campo será retirado do manifesto de origem.
Logotipo Um modelo de Visual Studio usará Assets\StoreLogo.png por padrão. Esse valor deve ser personalizado pelo desenvolvedor no arquivo Package.appxmanifest.

Aqui está um exemplo do Properties XML de saída:

<Properties>
    <DisplayName>UWP App Example</DisplayName>
    <PublisherDisplayName>Microsoft Corporation</PublisherDisplayName>
    <Logo>Assets\StoreLogo.png</Logo>
</Properties>

Application

Um manifesto do aplicativo pode conter vários elementos Application, cada um com um nome de exibição que aparece no bloco no cliente. A Application seção do manifesto do aplicativo contém os campos na tabela a seguir.

Campo Descrição
ID Essa cadeia de caracteres é preenchida de forma diferente nos seguintes cenários:
  • Por padrão, o valor desse campo é o nome do projeto.
  • Se você associar o aplicativo ao Microsoft Store ou se invocar o Store -> Criar Pacotes de Aplicativos... comando e, em seguida, entrar com uma conta de desenvolvedor, o valor desse campo será o nome do aplicativo selecionado se o /Properties[@DisplayName] e o /Applications/Application[@DisplayName] na correspondência do manifesto de origem. Caso contrário, o valor permanecerá o mesmo que no manifesto de origem.
  • Se você invocar o comando Store –> Criar Pacotes de Aplicativos... mas não entrar com uma conta de desenvolvedor, o valor desse campo será o mesmo que no manifesto de origem.
Executável O valor desse campo é o nome de saída do assembly do projeto. O token executável $targetnametoken$.exe usado no arquivo de manifesto de origem (Package.appxmanifest) é substituído pelo nome do arquivo real quando o manifesto é compilado.
EntryPoint Esse valor é baseado nos valores gerados Executable e Id.

Exemplo Application de saída:

<Applications>
    <Application Id="App" Executable="UWPAppExample.exe" EntryPoint="UWPAppExample.App">
        <!-- Other elements configured within the Application, such as Extensions, VisualElements, etc. -->
</Applications>

PackageDependency

A seção PackageDependency contém todas as dependências da biblioteca de componentes Windows para esse pacote. Por exemplo, se o projeto tiver uma referência ao WinJS, Visual Studio recuperará as informações de identidade do pacote das dependências quando o manifesto for gerado. Visual Studio preenche esta seção com os campos Name e MinVersion para cada pacote dependente.

Em um projeto C++ nativo, Visual Studio adicionará uma referência ao Runtime do Visual C/C++:

<Dependencies>
    <PackageDependency Name="Microsoft.VCLibs.140.00.Debug" MinVersion="14.0.30035.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
</Dependencies>

extensões de registro do Windows Runtime

Você pode implementar Windows Runtime componentes para seus aplicativos, mas precisará registrar esses componentes no sistema operacional para que eles sejam executados corretamente. Para registrar um componente Windows Runtime, você deve colocar as informações de registro nos arquivos WinMD e no manifesto do aplicativo. Se um projeto implementar um componente Windows Runtime, a saída de build do projeto conterá um arquivo WinMD. Visual Studio extrai as informações de registro Windows Runtime do arquivo WinMD e gera os elementos Extension apropriados no manifesto do aplicativo.

O sistema dá suporte a duas formas de servidores: servidores .dll (em processo) e servidores .exe (fora do processo). Esses servidores exigem informações de registro semelhantes, mas diferentes, que devem ser copiadas no manifesto do aplicativo. Visual Studio dá suporte à geração de manifesto apenas para servidores .dll e a extensão DLLServer é necessária para registrar .dll servidores. Os seguintes valores no manifesto do aplicativo são obtidos dos arquivos WinMD para construir a extensão DLLServer:

  • DllPath
  • ActivatableClassId
  • ThreadingModel
  • ActivatableClass (atributo ActivatableClassId)

Aqui está um exemplo do XML de saída:

<extension category="Microsoft.Windows.ActivatableClass">
    <dllServer>
        <dllPath>Fabrikam.dll</dllPath>
        <activatableClass activatableClassId="Fabrikam.MyClass" threadingModel="sta" />
    </dllServer>
</extension>

Para obter mais informações sobre este tópico, consulte Windows Runtime componentes.

Recursos

A Resources seção contém uma entrada para cada idioma compatível com o aplicativo. Você deve ter pelo menos um idioma de recurso especificado no manifesto do aplicativo. Visual Studio gera automaticamente a lista de idiomas com suporte com base nas informações de localização no projeto. O token de linguagem de recurso "x-generate" que é usado no arquivo de manifesto de origem (Package.appxmanifest) é substituído pelo código de idioma real quando o manifesto é compilado. Aqui está um exemplo do XML de saída:

<Resources>
    <Resource Language="en-us">
    <Resource Language="fr-fr">
</Resources>

A primeira entrada na lista é o idioma padrão do aplicativo.

TargetDeviceFamily

A TargetDeviceFamily seção contém os seguintes campos:

  • Nome
  • MinVersion
  • MaxVersionTested
<Dependencies>
    <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.22000.0" />
</Dependencies>

Esses elementos são preenchidos a partir de propriedades do MSBuild.

Consulte também

Pacote um aplicativo UWP com Visual Studio
Arquiteturas de pacote de aplicativos
Referência do esquema do manifesto de pacote do Windows 10