Partilhar via


Manifestos de aplicação

Um manifesto de aplicativo (também conhecido como manifesto de aplicativo lado a lado ou manifesto de fusão ) é um arquivo XML que descreve e identifica os assemblies lado a lado compartilhados e privados aos quais um aplicativo deve se vincular em tempo de execução. Estas devem ser as mesmas versões de assembly que foram usadas para testar o aplicativo. Os manifestos do aplicativo também podem descrever metadados para arquivos que são privados para o aplicativo.

Para obter uma lista completa do esquema XML, consulte Esquema de arquivo de manifesto.

Os manifestos do aplicativo têm os seguintes elementos e atributos.

Elemento Atributos Necessário
montagem Sim
manifestVersion Sim
noHerdar Não
assemblyIdentity Sim
tipo Sim
Designação Sim
Idioma Não
processadorArquitetura Não
Versão Sim
publicKeyToken Não
compatibilidade Não
Aplicação Não
SO suportado Não
Id Sim
maxversiontestado Não
Id Sim
dependência Não
dependenteAssembleia Não
arquivo Não
Designação Sim
HaShafalg Não
hash Não
activatableClass Não
Designação Sim
modelo de threading Sim
activeCodePage Não
autoElevate Não
desativarTemática Não
disableWindowFiltering Não
dpiAware Não
dpiConsciência Não
gdiDimensionamento Não
highResolutionScrollingAware Não
longPathAware Não
printerDriverIsolation Não
ultraHighResolutionScrollingAware Não
Msix Não
heapType Não
supportedArchitectures Não
ConsoleAllocationPolicy Não
trustInfo Não

Localização do ficheiro

Se possível, você deve incorporar o manifesto do aplicativo como um recurso no arquivo de .exe ou .dlldo aplicativo. Se você não pode fazer isso, então você pode colocar o arquivo de manifesto do aplicativo no mesmo diretório que o .exe ou .dll.

Para obter mais informações, consulte Instalando assemblies lado a lado.

Nome do ficheiro

Por convenção, um manifesto do aplicativo deve ter o mesmo nome do arquivo executável do aplicativo, com a extensão .manifest anexada a ele.

Por exemplo, um manifesto de aplicativo que se refere ou example.exeexample.dll deve usar a seguinte sintaxe de nome de arquivo (se ID de recurso for 1, você poderá omitir o < segmento ID> de recurso da sintaxe).

example.exe.<ID> do recurso. manifesto

example.dll.<ID> do recurso. manifesto

Elementos

Os nomes dos elementos e atributos diferenciam maiúsculas de minúsculas. Os valores dos elementos e atributos não diferenciam maiúsculas de minúsculas, exceto para o valor do atributo type.

assemblagem

Um elemento de contêiner. Seu primeiro subelemento deve ser um elemento noInherit ou assemblyIdentity . Necessário.

O elemento assembly deve estar no namespace urn:schemas-microsoft-com:asm.v1. Os elementos filho do assembly também devem estar nesse namespace, por herança ou marcação.

O elemento assembly tem os seguintes atributos.

Atributo Descrição
manifestVersion O atributo manifestVersion deve ser definido como 1.0.

noHerdar

Inclua esse elemento em um manifesto do aplicativo para definir os contextos de ativação gerados a partir do manifesto com o sinalizador "no inherit". Quando esse sinalizador não é definido em um contexto de ativação e o contexto de ativação está ativo, ele é herdado por novos threads no mesmo processo, janelas, procedimentos de janela e chamadas de procedimento assíncronas. A definição desse sinalizador impede que o novo objeto herde o contexto ativo.

O elemento noInherit é opcional e normalmente omitido. A maioria dos assemblies não funciona corretamente usando um contexto de ativação sem herdar porque o assembly deve ser explicitamente projetado para gerenciar a propagação de seu próprio contexto de ativação. O uso do elemento noInherit requer que todos os assemblies dependentes referenciados pelo manifesto do aplicativo tenham um elemento noInherit em seu manifesto de assembly.

Se noInherit for usado em um manifesto, ele deve ser o primeiro subelemento do elemento assembly . O elemento assemblyIdentity deve vir imediatamente após o elemento noInherit . Se noInherit não for usado, assemblyIdentity deverá ser o primeiro subelemento do elemento assembly . O elemento noInherit não tem elementos filho. Não é um elemento válido em manifestos de montagem.

assemblyIdentity

Como o primeiro subelemento de um elemento assembly , assemblyIdentity descreve e identifica exclusivamente o aplicativo que possui esse manifesto de aplicativo. Como o primeiro subelemento de um elemento dependentAssembly , assemblyIdentity descreve um assembly lado a lado exigido pelo aplicativo. Observe que cada assembly referenciado no manifesto do aplicativo requer um assemblyIdentity que corresponda exatamente ao assemblyIdentity no próprio manifesto do assembly referenciado.

O elemento assemblyIdentity tem os seguintes atributos. Não tem subelementos.

Atributo Descrição
tipo Especifica o tipo de aplicativo ou assembly. O valor deve ser win32 e tudo em minúsculas. Necessário.
Designação Nomeia exclusivamente o aplicativo ou assembly. Use o seguinte formato para o nome: Organization.Division.Name. Por exemplo, Microsoft.Windows.mysampleApp. Necessário.
Idioma Identifica o idioma do aplicativo ou assembly. Se o aplicativo ou assembly for específico do idioma, especifique o código do idioma DHTML. No assemblyIdentity de um aplicativo destinado ao uso mundial (idioma neutro), omita o atributo language.
Em um assemblyIdentity de um assembly destinado ao uso mundial (idioma neutro), defina o valor do idioma como *. Opcional.
processadorArquitetura Especifica o processador. Os valores válidos incluem x86, amd64, arm e arm64. Você também pode especificar *, o que garante que todas as plataformas sejam direcionadas. Opcional.
Versão Especifica a versão do aplicativo ou do assembly. Use o formato de versão em quatro partes: mmmmm.nnnnn.ooooo.ppppp. Cada uma das partes separadas por pontos pode ser 0-65535 inclusive. Para obter mais informações, consulte Versões de assembly. Necessário.
publicKeyToken Uma cadeia de caracteres hexadecimal de 16 caracteres que representa os últimos 8 bytes do hash SHA-1 da chave pública sob a qual o aplicativo ou assembly está assinado. A chave pública usada para assinar o catálogo deve ser de 2048 bits ou superior. Necessário para todas as montagens lado a lado compartilhadas.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 ...
<dependency>
   <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
       />
   </dependentAssembly>
</dependency>
...
</assembly>

compatibilidade

Contém pelo menos uma aplicação. Não tem atributos. Opcional. A aplicação manifesta-se sem elemento de compatibilidade, por defeito a compatibilidade com Windows Vista no Windows 7.

O elemento de compatibilidade deve estar no namespace urn:schemas-microsoft-com:compatibility.v1. Os elementos filho da compatibilidade também devem estar nesse namespace, por herança ou marcação.

aplicação

Contém pelo menos um elemento supportedOS. A partir de Windows 10, versão 1903, pode também conter um elemento opcional maxversiontested. Não tem atributos. Opcional.

SO suportado

O elemento supportedOS tem o seguinte atributo. Não tem subelementos.

Atributo Descrição
Id Defina o atributo Id como {e2011457-1546-43c5-a5fe-008deee3d3f0} para executar o aplicativo usando a funcionalidade do Vista. Isto pode permitir que uma aplicação concebida para o Windows Vista corra num sistema operativo posterior.
Defina o atributo Id para {35138b9a-5d96-4fbd-8e2d-a2440225f93a} para executar a aplicação usando Windows 7 funcionalidade.
As aplicações que suportam funcionalidades do Windows Vista, Windows 7 e Windows 8 não requerem manifestos separados. Neste caso, adiciona os GUIDs para todos os sistemas operativos Windows.
Para informações sobre o comportamento dos atributos Id no Windows, consulte o Windows 8 e Windows Server 2012 Compatibility Cookbook.
Os GUIDs a seguir correspondem aos sistemas operacionais indicados:
{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a} -> Windows 10, Windows 11, Windows Server 2016, Windows Server 2019 e Windows Server 2022
{1f676c76-80e1-4239-95bb-83d0f6d0da78} -> Windows 8.1 e Windows Server 2012 R2
{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38} -> Windows 8 e Windows Server 2012
{35138b9a-5d96-4fbd-8e2d-a2440225f93a} -> Windows 7 e Windows Server 2008 R2
{e2011457-1546-43c5-a5fe-008deee3d3f0} -> Windows Vista e Windows Server 2008
Pode testar isto no Windows 7 ou Windows 8.x executando o Resource Monitor (resmon), indo ao separador da CPU, clicando com o botão direito nos rótulos das colunas, "Selecionar Coluna... ", e verifica "Contexto do Sistema Operativo". No Windows 8.x, também pode encontrar esta coluna disponível no Gestor de Tarefas (taskmgr). O conteúdo da coluna mostra o valor mais alto encontrado ou "Windows Vista" como padrão.

maxversiontestado

O elemento maxversiontested especifica as versões de Windows contra as quais a aplicação foi testada, começando pela versão mínima do sistema operativo suportada até à versão máxima. O conjunto completo de versões pode ser encontrado aqui. Isso destina-se a ser usado por aplicativos de área de trabalho que usam ilhas XAML e que não são implantados em um pacote MSIX. Este elemento é suportado no Windows 10, versão 1903 e versões posteriores.

O elemento maxversiontested tem o seguinte atributo. Não tem subelementos.

Atributo Descrição
Id Defina o atributo Id para uma cadeia de 4 versões que especifica a versão máxima do Windows contra a qual a aplicação foi testada. Por exemplo, "10.0.18362.1" para Windows 10, versão 1903. Necessário.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
...
    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
        <application>
            <!-- Windows 10, version 1903 -->
            <maxversiontested Id="10.0.18362.1"/>
            <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
        </application>
    </compatibility>
...
</assembly>

dependência

Contém pelo menos um dependentAssembly. Não tem atributos. Opcional.

dependenteAssembleia

O primeiro subelemento de dependentAssembly deve ser um elemento assemblyIdentity que descreve um assembly lado a lado exigido pelo aplicativo. Cada dependente deve estar dentro de exatamente uma dependência. Não tem atributos.

ficheiro

Especifica os arquivos que são privados para o aplicativo. Opcional.

O arquivo elemento tem os atributos mostrados na tabela a seguir.

Atributo Descrição
Designação Nome do ficheiro. Por exemplo, Comctl32.dll. Necessário.
HaShafalg Algoritmo usado para criar um hash do arquivo. Esse valor deve ser SHA1. Opcional.
hash Um hash do arquivo referido pelo nome. Uma cadeia hexadecimal de comprimento dependendo do algoritmo de hash. Opcional.

activatableClass

Permite que aplicações de ambiente de trabalho não embaladas utilizem Componentes Windows Runtime (WinRT) definidos pelo utilizador. Este elemento é suportado no Windows 10, versão 1903 e versões posteriores. Para obter mais informações, consulte este artigo.

O elemento activatableClass deve estar no namespace urn:schemas-microsoft-com:winrt.v1.

O elemento activatableClass tem os seguintes atributos.

Atributo Descrição
Designação Especifica o identificador de classe para a classe ativável. Necessário.
modelo de threading Representa o modelo de threading de apartamento a ser usado para ativar um servidor em processo. Os valores válidos incluem both, STAou MTA. Consulte este artigo para obter mais informações. Necessário.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
...
<file name="WinRTComponent.dll">
    <activatableClass
        name="WinRTComponent.MessageHolder"
        threadingModel="both"
        xmlns="urn:schemas-microsoft-com:winrt.v1"
     />
</file>
...
</assembly>

activeCodePage

No Windows 10, este elemento obriga um processo a usar o UTF-8 como página de código do processo. Para obter mais informações, consulte Usar a página de código UTF-8. No Windows 10, o único valor válido para activeCodePage é UTF-8.

A partir do Windows 11, este elemento também permite a seleção da página de código legada não UTF-8, ou das páginas de código para uma localização específica para compatibilidade com aplicações legadas. As aplicações modernas são fortemente encorajadas a usar Unicode. No Windows 11, activeCodePage também pode ser definido para o valor Legacy ou para um nome local como en-US ou ja-JP.

  • Em máquinas configuradas para uma página de código ativo do sistema UTF-8, herdado reverterá o processo para as páginas de código de localidade do sistema. Se a localidade do sistema não tiver páginas de código definidas, então o Windows-1252/437 será utilizado. A definição de página de código Legacy é suportada apenas em manifestos do Fusion e só começa com Windows 11.
  • Quando um nome de localidade como en-US é fornecido, a página de código do processo será definida adequadamente para essa página de código de localidade. Por exemplo, Windows-1252 e 437 para en-US, ou 932 para ja-JP.

Este elemento foi adicionado pela primeira vez na versão 1903 do Windows 10 (Atualização de maio de 2019). Podes declarar esta propriedade e direcionar/executar em versões anteriores do Windows, mas tens de tratar da deteção e conversão de páginas de código legadas como habitualmente. Este elemento não tem atributos.

O exemplo a seguir demonstra como usar esse elemento para forçar o processo atual a usar UTF-8 como a página de código do processo.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings"> 
      <activeCodePage>UTF-8</activeCodePage> 
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

autoElevate

Especifica se a elevação automática está habilitada. TRUE indica que está habilitado. Não tem atributos. O ficheiro executável deve ser assinado digitalmente por Windows Publisher. Para uso interno.

desativarTemática

Especifica se a atribuição de um tema a elementos da IU está desativada. TRUE indica desativado. Não tem atributos.

disableWindowFiltering

Especifica se a filtragem de janelas deve ser desabilitada. TRUE desativa a filtragem de janelas para que você possa enumerar janelas imersivas da área de trabalho. disableWindowFiltering foi adicionado em Windows 8 e não tem atributos.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">
      <disableWindowFiltering>true</disableWindowFiltering>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

dpiAware

Especifica se o processo atual reconhece pontos por polegada (dpi).

Windows 10, versão 1607: O elemento dpiAware é ignorado se o elemento dpiAwareness estiver presente. Pode incluir ambos os elementos num manifesto se quiser especificar um comportamento diferente para o Windows 10, versão 1607 do que para uma versão anterior do sistema operativo.

A tabela a seguir descreve o comportamento que resulta com base na presença do elemento dpiAware e no texto que ele contém. O texto dentro do elemento não diferencia maiúsculas de minúsculas.

Estado do elemento dpiAware Descrição
Ausente O processo atual é dpi inconsciente por padrão. Você pode alterar programaticamente essa configuração chamando a função SetProcessDpiAwareness ou SetProcessDPIAware .
Contém "true" O processo atual é o sistema dpi consciente.
Contém "falso" Windows Vista, Windows 7 e Windows 8: O comportamento é o mesmo que quando o dpiAware está ausente.
Windows 8.1 e Windows 10: O processo atual não está informado, e não se pode alterar programaticamente esta definição chamando a função SetProcessDpiAwareness ou SetProcessDPIAware.
Contém "true/pm" Windows Vista, Windows 7 e Windows 8: O processo atual é consciente do dpi do sistema.
Windows 8.1 e Windows 10: O processo atual é consciente de dpi por monitor.
Contém "por monitor" Windows Vista, Windows 7 e Windows 8: O comportamento é o mesmo que quando o dpiAware está ausente.
Windows 8.1 e Windows 10: O processo atual é consciente de dpi por monitor.
Contém qualquer outra cadeia de caracteres Windows Vista, Windows 7 e Windows 8: O comportamento é o mesmo que quando o dpiAware está ausente.
Windows 8.1 e Windows 10: O processo atual não está informado, e não se pode alterar programaticamente esta definição chamando a função SetProcessDpiAwareness ou SetProcessDPIAware.

Para mais informações sobre as definições de consciência de dpi, consulte High DPI Desktop Application Development on Windows.

dpiAware não tem atributos.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>true</dpiAware>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

dpiConsciência

Especifica se o processo atual reconhece pontos por polegada (dpi).

A versão mínima do sistema operativo que suporta o elemento dpiAwareness é Windows 10, versão 1607. Para versões que suportam o elemento dpiAwareness , o dpiAwareness substitui o elemento dpiAware . Pode incluir ambos os elementos num manifesto se quiser especificar um comportamento diferente para o Windows 10, versão 1607 do que para uma versão anterior do sistema operativo.

O elemento dpiAwareness pode conter um único item ou uma lista de itens separados por vírgula. Neste último caso, é utilizado o primeiro item (mais à esquerda) da lista reconhecido pelo sistema operativo. Desta forma, pode especificar diferentes comportamentos suportados em futuras versões do sistema operativo Windows.

A tabela a seguir descreve o comportamento que resulta com base na presença do elemento dpiAwareness e no texto que ele contém em seu item reconhecido mais à esquerda. O texto dentro do elemento não diferencia maiúsculas de minúsculas.

Status do elemento dpiAwareness: Descrição
O elemento está ausente O elemento dpiAware especifica se o processo reconhece dpi.
Não contém itens reconhecidos O processo atual é dpi inconsciente por padrão. Você pode alterar programaticamente essa configuração chamando a função SetProcessDpiAwareness ou SetProcessDPIAware .
Primeiro item reconhecido é "sistema" O processo atual é o sistema dpi consciente.
Primeiro item reconhecido é "permonitor" O processo atual é ciente de dpi por monitor.
O primeiro item reconhecido é "permonitorv2" O processo atual usa o contexto de reconhecimento de dpi por monitor-v2. Este item só será reconhecido no Windows 10 versão 1703 ou posterior.
Primeiro item reconhecido é "inconsciente" O processo atual é dpi inconsciente. Não é possível alterar programaticamente essa configuração chamando a função SetProcessDpiAwareness ou SetProcessDPIAware .

Para obter mais informações sobre as configurações de reconhecimento de dpi suportadas por esse elemento, consulte DPI_AWARENESS e DPI_AWARENESS_CONTEXT.

dpiAwareness não tem atributos.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
      <dpiAwareness>PerMonitorV2, unaware</dpiAwareness>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

gdiDimensionamento

Especifica se o dimensionamento GDI está habilitado. A versão mínima do sistema operativo que suporta o elemento gdiScaling é Windows 10 versão 1703.

A estrutura GDI (graphics device interface) pode aplicar o dimensionamento de DPI a primitivos e texto por monitor sem atualizações no próprio aplicativo. Isso pode ser útil para aplicativos GDI que não estão mais sendo atualizados ativamente.

Gráficos não vetoriais (como bitmaps, ícones ou barras de ferramentas) não podem ser dimensionados por esse elemento. Além disso, gráficos e texto que aparecem em bitmaps construídos dinamicamente por aplicativos também não podem ser dimensionados por esse elemento. Para obter mais informações, consulte Melhorando a experiência de alto DPI em aplicativos de área de trabalho baseados em GDI.

Você pode alterar programaticamente essa configuração chamando a função SetThreadDpiAwarenessContext ou SetProcessDpiAwarenessContext com DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED valor.

TRUE indica que esse elemento está habilitado. Não tem atributos.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2017/WindowsSettings">
      <gdiScaling>true</gdiScaling>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

highResolutionScrollingAware

Especifica se o reconhecimento de rolagem de alta resolução está habilitado. TRUE indica que está habilitado. Não tem atributos.

longPathAware

Permite caminhos longos que excedem MAX_PATH de comprimento. Este elemento é suportado no Windows 10, versão 1607 e posteriores. Para obter mais informações, consulte este artigo.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
      <ws2:longPathAware>true</ws2:longPathAware>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

printerDriverIsolation

Especifica se o isolamento do driver de impressora está habilitado. TRUE indica que está habilitado. Não tem atributos. O isolamento dos drivers de impressora melhora a fiabilidade do serviço de impressão Windows ao permitir que os drivers de impressora corram em processos separados do processo em que o spooler de impressão funciona. O suporte para isolamento de drivers de impressora começou no Windows 7 e no Windows Server 2008 R2. Um aplicativo pode declarar o isolamento do driver de impressora em seu manifesto de aplicativo para se isolar do driver de impressora e melhorar sua confiabilidade. Ou seja, o aplicativo não falhará se o driver da impressora tiver um erro.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">
      <printerDriverIsolation>true</printerDriverIsolation>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

ultraHighResolutionScrollingAware

Especifica se o reconhecimento de rolagem de resolução ultra-alta está habilitado. TRUE indica que está habilitado. Não tem atributos.

Msix

Especifica as informações de identidade de um pacote com local externo para o aplicativo atual (consulte Conceder identidade do pacote empacotando com local externo). Este elemento é suportado no Windows 10, versão 2004 e versões posteriores.

O elemento msix deve estar no namespace urn:schemas-microsoft-com:msix.v1. Ele tem os atributos mostrados na tabela a seguir.

Atributo Descrição
editora Descreve as informações do editor. Este valor deve corresponder ao atributo Publisher no elemento Identidade no manifesto do pacote da sua aplicação empacotada com localização externa.
Nome do pacote Descreve o conteúdo do pacote. Esse valor deve corresponder ao atributo Name no elemento Identity no manifesto do pacote do seu aplicativo empacotado com local externo.
applicationId O identificador exclusivo do aplicativo. Esse valor deve corresponder ao atributo Id no elemento Application no manifesto do pacote do seu aplicativo empacotado com local externo.
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <assemblyIdentity version="1.0.0.0" name="Contoso.PhotoStoreApp"/>
  <msix xmlns="urn:schemas-microsoft-com:msix.v1"
          publisher="CN=Contoso"
          packageName="ContosoPhotoStore"
          applicationId="ContosoPhotoStore"
        />
</assembly>

heapType

Substitui a implementação de heap padrão para as APIs de heap do Win32 a serem usadas.

  • O valor SegmentHeap indica que a pilha de segmento será usada. O heap de segmento é uma implementação de heap moderna que geralmente reduzirá o uso geral de memória. Este elemento é suportado no Windows 10, versão 2004 (build 19041) e posteriores.
  • Todos os outros valores são ignorados.

Este elemento não tem atributos.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2020/WindowsSettings">
      <heapType>SegmentHeap</heapType>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

supportedArchitectures

Para executáveis .NET Framework apenas para IL, especifica uma lista de arquiteturas nativas de processadores com as quais a aplicação é compatível. Pode conter um ou mais dos seguintes valores, separados por espaços:

  • AMD64
  • braço64

Este elemento não tem atributos.

Este elemento é suportado no Windows 11, versão 24H2 e posteriores.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2024/WindowsSettings">
      <supportedArchitectures>amd64 arm64</supportedArchitectures>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

ConsoleAllocationPolicy

As aplicações de consola geram automaticamente uma janela de terminal (um host de consola) quando lançadas a partir do Explorador ou similar. Definir este elemento para detached evitar isto. Isto pode ser usado para criar uma aplicação que se comporta como uma aplicação puramente com interface gráfica quando lançada a partir do Explorador, permitindo a saída do terminal quando lançada a partir de uma sessão de terminal existente.

Consulte Política de Alocação de Consolas.

Este elemento não tem atributos.

Este elemento é suportado no Windows 11 24H2 e no Windows Server 2025, ou versões posteriores.

<assembly manifestVersion="1.0">
  <application>
    <windowsSettings>
      <consoleAllocationPolicy xmlns="http://schemas.microsoft.com/SMI/2024/WindowsSettings">detached</consoleAllocationPolicy>
    </windowsSettings>
  </application>
</assembly>

trustInfo

Todos os aplicativos compatíveis com UAC devem ter um nível de execução solicitado adicionado ao manifesto do aplicativo. Os níveis de execução solicitados especificam os privilégios necessários para um aplicativo. Para obter mais informações, consulte Como o controle de conta de usuário (UAC) afeta seu aplicativo.

O nível de execução solicitado é especificado com o atributo level do descendente requestedExecutionLevel do elemento trustInfo . Os valores permitidos para o nível são:

Valor Descrição
asInvoker O aplicativo é executado no mesmo nível de permissão que o processo que o iniciou. Você pode elevar o aplicativo a um nível de permissão mais alto selecionando Executar como administrador.
requireAdministrador O aplicativo é executado usando permissões de administrador. O usuário que inicia o aplicativo deve ser membro do grupo Administradores. Se o processo de abertura não estiver sendo executado com permissões administrativas, o sistema solicitará credenciais.
mais altoDisponível O aplicativo é executado no nível de permissão mais alto possível. Se o usuário que inicia o aplicativo for membro do grupo Administradores, essa opção será a mesma que level="requireAdministrator". Se o nível de permissão mais alto disponível for maior do que o nível do processo de abertura, o sistema solicitará credenciais.

Definir o nível como highestAvailable garante que o aplicativo será executado com êxito com os usuários que são membros do grupo Administradores e aqueles que não são. Se o aplicativo só pode funcionar com acesso administrativo ao sistema, marcar o aplicativo com um nível de execução solicitado de requireAdministrator garante que o sistema identifique este programa como um aplicativo administrativo e execute as etapas de elevação necessárias.

Por padrão, o vinculador do Visual C++ incorpora um fragmento do UAC no manifesto de um aplicativo com um nível de execução de asInvoker.

O elemento requestedExecutionLevel também tem um atributo opcional uiAccess. Defina esse valor como true se desejar que o aplicativo ignore os níveis de proteção da interface do usuário e direcione a entrada para janelas de permissão mais alta na área de trabalho. Defina esse atributo como true somente para aplicativos de acessibilidade da interface do usuário. O padrão é false. Restrições adicionais das configurações de diretiva de segurança podem ser aplicadas, consulte Controle de Conta de Usuário: Elevar apenas os aplicativos UIAccess instalados em locais seguros. Para obter mais informações, consulte Considerações de segurança para tecnologias assistenciais.

Especificar o nó requestedExecutionLevel desabilitará a virtualização de arquivos e registros. Se você quiser utilizar a virtualização de arquivo e registro para compatibilidade com versões anteriores, omita o nó requestedExecutionLevel.

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
  <security>
    <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
      <requestedExecutionLevel level="asInvoker" uiAccess="false" />
    </requestedPrivileges>
  </security>
</trustInfo>

Exemplo

A seguir está um exemplo de um manifesto de aplicativo para um aplicativo chamado MySampleApp.exe. O aplicativo consome o assembly lado a lado SampleAssembly.

<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <assemblyIdentity type="win32" name="MyOrganization.MyDivision.MySampleApp" version="6.0.0.0" processorArchitecture="*" />
   <dependency>
      <dependentAssembly>
         <assemblyIdentity type="win32" name="Proseware.Research.SampleAssembly" version="6.0.0.0" processorArchitecture="*" publicKeyToken="0000000000000000" />
      </dependentAssembly>
   </dependency>
   <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
      <application>
         <!-- Windows 10 and Windows 11 -->
         <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
         <!-- Windows 8.1 -->
         <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
         <!-- Windows 8 -->
         <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
         <!-- Windows 7 -->
         <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
         <!-- Windows Vista -->
         <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
      </application>
   </compatibility>
</assembly>