Partilhar via


Manifestos da Assembleia

Um manifesto de assembly é um arquivo XML que descreve um assembly lado a lado. Os manifestos de assembly descrevem os nomes e versões de assemblies lado a lado, arquivos e recursos do assembly, bem como a dependência do assembly de outros assemblies lado a lado. A instalação, ativação e execução corretas de montagens lado a lado requer que o manifesto de montagem sempre acompanhe uma montagem no sistema.

Para obter uma lista completa do esquema XML, consulte Manifest File Schema.

Os manifestos de assembly têm os seguintes elementos e atributos.

Elemento Atributos Necessário
de montagem Sim
manifestVersion Sim
não hereditário Não
assemblyIdentity Sim
tipo Sim
nome Sim
língua Não
processorArchitecture Não
versão Sim
publicKeyToken Não
dependência Não
dependentesAssembleia Não
arquivo Não
nome Sim
hashalg Não
hash Não
comClass Não
descrição Não
clsid Sim
threadingModelo Não
TLBID Não
progid Não
miscStatus Não
miscStatusIcon Não
miscStatusContent Não
miscStatusDocPrint Não
miscStatusThumbnail Não
typelib Não
TLBID Sim
versão Sim
helpdir Sim
resourceid Não
bandeiras Não
comInterfaceExternalProxyStub Não
iid Sim
baseInterface Não
numMethods Não
nome Não
TLBID Não
proxyStubClsid32 Não
comInterfaceProxyStub Não
iid Sim
nome Sim
TLBID Não
baseInterface Não
numMethods Não
proxyStubClsid32 Não
threadingModelo Não
windowClass Não
versão Não

Localização do ficheiro

Os manifestos de montagem podem ser instalados em três locais:

  • Como manifestos que acompanham assemblies compartilhados, os manifestos de assembly devem ser instalados como um arquivo separado no cache de assembly lado a lado. Isso geralmente é a pasta WinSxS no diretório do Windows.
  • Como manifestos que acompanham assemblies privados, os manifestos de assembly devem ser instalados na estrutura de diretórios do aplicativo. Isso geralmente é um arquivo separado na mesma pasta que o arquivo executável do aplicativo.
  • Como um recurso em uma DLL, o assembly está disponível para o uso privado da DLL. Um manifesto de assembly não pode ser incluído como um recurso em um EXE. Um arquivo EXE pode incluir um manifesto de aplicativo como um recurso.

Sintaxe do nome do arquivo

O nome de um manifesto de assembly é qualquer nome de arquivo válido seguido por .manifest.

Por exemplo, um manifesto de assembly que se refere a myassembly usaria a seguinte sintaxe de nome de arquivo: myassembly.<resource ID>.manifest. Você pode omitir o campo <resource ID> se o manifesto do assembly estiver sendo instalado como um arquivo separado ou se a ID do recurso for 1.

Observação

Devido à maneira como pesquisas lado a lado para assemblies privados, as restrições de nomenclatura a seguir se aplicam ao empacotar uma DLL como um assembly privado. Uma maneira recomendada de fazer isso é colocar o manifesto do assembly na DLL como um recurso. Nesse caso, a ID do recurso deve ser igual a 1 e o nome do assembly privado pode ser o mesmo que o nome da DLL. Por exemplo, se o nome da DLL for Microsoft.Windows.mysample.dll, o valor do atributo name usado no elemento assemblyIdentity do manifesto também pode ser Microsoft.Windows.mysample. Uma maneira alternativa é colocar o manifesto do assembly em um arquivo separado. Nesse caso, o nome do assembly e seu manifesto devem ser diferentes do nome da DLL. Por exemplo, Microsoft.Windows.mysampleAsm, Microsoft.Windows.mysampleAsm.manifest e Microsoft.Windows.Mysample.dll. Para obter mais informações sobre como pesquisas lado a lado por assemblies privados, consulte Assembly Searching Sequence.

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.

de montagem

Um elemento de contêiner. Seu primeiro subelemento deve ser um assemblyIdentity ou noInheritable elemento. O manifesto do assembly descreve exclusivamente o assembly lado a lado identificado pelo 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 o seguinte atributo.

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

não hereditário

Inclua esse elemento em um manifesto de assembly para indicar que o assembly gerencia os contextos de ativação e seus objetos. O elemento noInheritable deve ser um subelemento de um elemento assembly. O elemento assemblyIdentity deve vir depois de qualquer elemento noInheritable. O elemento noInheritable é necessário no manifesto do assembly se o assembly for usado por qualquer manifesto de aplicativo que inclua o elemento noInherit. Um elemento noInheritable em um manifesto de aplicativo não tem efeito. Um elemento noInheritable não tem elementos filho.

assemblyIdentity

Descreve e identifica exclusivamente um conjunto lado a lado.

Como o primeiro subelemento de um assembly elemento, assemblyIdentity descreve e identifica exclusivamente o assembly lado a lado que possui esse manifesto de assembly. Isso é chamado de contexto DEF-assemblyIdentity do manifesto do assembly.

Como o primeiro subelemento de um elemento dependentAssembly, assemblyIdentity descreve e identifica exclusivamente um assembly lado a lado que é usado pelo contexto DEF-assemblyIdentity. Isso é chamado de contexto REF assemblyIdentity do manifesto do assembly. O assembly DEF-context requer que o assembly REF-context funcione corretamente. Observe que cada contexto REF assemblyIdentity deve corresponder exatamente a um contexto DEF correspondente assemblyIdentity no próprio manifesto de assembly do assembly referenciado.

Este elemento não tem subelementos. O elemento assemblyIdentity tem os seguintes atributos.

Atributo Descrição
tipo Especifica o tipo de montagem. O valor deve ser win32 e em minúsculas. Necessário.
nome Nomeia exclusivamente o assembly. Use o seguinte formato para o nome do assembly: Organization.Division.Name. Por exemplo, Microsoft.Windows.mysampleAsm. Necessário. Observe que, no caso de uma DLL empacotada como um assembly privado com um arquivo de manifesto separado, o nome do assembly deve ser diferente do nome da DLL e do manifesto.
língua Identifica o idioma da montagem. Opcional. Se o assembly for específico do idioma, especifique o código do idioma DHTML. No contexto DEF-assemblyIdentity de um manifesto de assembly destinado ao uso mundial (idioma neutro) omite o atributo language.
Em um contexto REF-assemblyIdentity de um manifesto de assembly destinado ao uso mundial (idioma neutro) defina o valor de idioma como "*".
processorArchitecture Especifica o processador. Os valores válidos são x86 para Windows de 32 bits e ia64 para Windows de 64 bits. Opcional.
versão Especifica a versão 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 Assembly Versions. 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 assembly é assinado. A chave pública usada para assinar o catálogo deve ser de 2048 bits ou superior. Necessário para montagens lado a lado compartilhadas.

dependência

Um elemento container que inclua pelo menos um dependentAssembly. O primeiro subelemento deve ser um elemento dependentAssembly. Um de dependência não tem atributos. Opcional.

dependenteAssembly

O primeiro subelemento deve ser um elemento assemblyIdentity que descreve e identifica exclusivamente um assembly lado a lado que é usado pelo assembly lado a lado que possui esse manifesto de assembly. Cada dependente deve estar dentro exatamente de uma dependência. Opcional.

arquivo

Contém arquivos usados por um assembly lado a lado. Contém comClass, typelib, windowClasscomInterfaceProxyStub subelementos. Opcional.

O arquivo elemento tem os seguintes atributos.

Atributo Descrição
nome Nome do arquivo, por exemplo, Conctl32.dll.
hashalg Algoritmo usado para criar um hash do arquivo. Esse valor deve ser SHA1.
hash Um hash do arquivo referido pelo nome. Uma cadeia hexadecimal de comprimento dependendo do algoritmo de hash.

comClass

Um subelemento de um arquivo elemento. Opcional.

O elemento comClass tem os seguintes atributos.

Atributo Descrição
descrição Nome da classe.
clsid O GUID que identifica exclusivamente a classe. Necessário. O valor deve estar no formato de um GUID válido.
threadingModelo O modelo de threading usado por classes COM em processo. Se essa propriedade for null, nenhum modelo de threading será usado. O componente é criado no thread principal do cliente e as chamadas de outros threads são empacotadas para esse thread. Opcional. Os valores válidos são: "Apartamento", "Grátis", "Ambos" e "Neutro".
TLBID GUID para a biblioteca de tipos para este componente COM. O valor deve estar no formato de um GUID. Opcional.
progid Identificador programático dependente da versão associado ao componente COM. O formato de um ProgID é <fornecedor>.<componente>.<versão>.
miscStatus Duplicados no assembly manifestam as informações fornecidas pela chave do Registro MiscStatus. Se os valores dos miscStatusIcon , miscStatusContent, miscStatusDocprintou atributos de miscStatusThumbnail não forem encontrados, o valor padrão correspondente listado em miscStatus será usado para os atributos ausentes. O valor pode ser uma lista delimitada por vírgulas dos valores de atributos da tabela abaixo. Você pode usar esse atributo se a classe COM for uma classe OCX que requer valores de chave do Registro Miscstatus.
miscStatusIcon Duplicatas no assembly manifestam as informações fornecidas por DVASPECT_ICON. Ele pode fornecer um ícone de um objeto. O valor pode ser uma lista delimitada por vírgulas dos valores de atributos da tabela abaixo. Você pode usar esse atributo se a classe COM for uma classe OCX que requer valores de chave do Registro Miscstatus.
miscStatusContent Duplicatas no assembly manifestam as informações fornecidas por DVASPECT_CONTENT. Ele pode fornecer um documento composto exibivel para uma tela ou impressora. O valor pode ser uma lista delimitada por vírgulas dos valores de atributos da tabela abaixo. Você pode usar esse atributo se a classe COM for uma classe OCX que requer valores de chave do Registro Miscstatus.
miscStatusDocprint Duplicatas no assembly manifestam as informações fornecidas por DVASPECT_DOCPRINT. Ele pode fornecer uma representação de objeto que pode ser exibida na tela como se fosse impressa em uma impressora. O valor pode ser uma lista delimitada por vírgulas dos valores de atributos da tabela abaixo. Você pode usar esse atributo se a classe COM for uma classe OCX que requer valores de chave do Registro Miscstatus.
miscStatusThumbnail Duplicados em um assembly manifestam as informações fornecidas por DVASPECT_THUMBNAIL. Ele pode fornecer uma miniatura de um objeto que pode ser exibido em uma ferramenta de navegação. O valor pode ser uma lista delimitada por vírgulas dos valores de atributos da tabela abaixo. Você pode usar esse atributo se a classe COM for uma classe OCX que requer valores de chave do Registro Miscstatus.

O elemento comClass pode ter <progid>... elementos como filhos, que listam os progids dependentes da versão.

O exemplo a seguir mostra um elemento comClass incluído em um arquivo elemento.

<file name="sampleu.dll">
        <comClass description="Font Property Page"
    clsid="{0BE35200-8F91-11CE-9DE3-00AA004BB851}"
          threadingModel = "Both"
             tlbid = "{44EC0535-400F-11D0-9DCD-00A0C90391D3}"/>
        <comClass description="Color Property Page"
    clsid="{0BE35201-8F91-11CE-9DE3-00AA004BB851}" 
    progid="ABC.Registrar"/>
    </file>

Se sua classe COM for uma classe OCX que requer a subchave do Registro MiscStatus para especificar como criar e exibir um objeto, você poderá habilitar o objeto duplicando essas informações no manifesto do assembly. Especifique as características do objeto usando o miscStatus, miscStatusIcon, miscStatusContent, miscStatusDocprinte atributos miscStatusThumbnail do elemento comClass. Defina esses atributos como uma lista separada por vírgulas de valores de atributos da tabela a seguir. Esses atributos duplicam as informações que seriam fornecidas por uma enumeração DVASPECT . Se um valor no for encontrado para miscStatusIcon, miscStatusContent, miscStatusDocprintou miscStatusThumbnail, os valores padrão especificados em miscStatus serão usados. Use valores de atributo da tabela a seguir. Estes correspondem aos sinalizadores de bits de uma enumeração OLEMISC.

Valor do atributo Constante OLEMISC
recomposeonresize OLEMISC_RECOMPOSEONRESIZE
únicoicónico OLEMISC_ONLYICONIC
insertnotreplace OLEMISC_INSERTNOTREPLACE
estática OLEMISC_STATIC
cantlinkinside OLEMISC_CANTLINKINSIDE
Canlinkbyole1 OLEMISC_CANLINKBYOLE1
IsLinkObject OLEMISC_ISLINKOBJECT
de dentro para fora OLEMISC_INSIDEOUT
ativarWhenVisible OLEMISC_ACTIVATEWHENVISIBLE
renderingisdeviceindependent OLEMISC_RENDERINGISDEVICEINDEPENDENT
InvisibleAtRuntime OLEMISC_INVISIBLEATRUNTIME
sempreexecutar OLEMISC_ALWAYSRUN
Botão ActsLike OLEMISC_ACTSLIKEBUTTON
actslikelabel OLEMISC_ACTSLIKELABEL
nouiactivate OLEMISC_NOUIACTIVATE
alinhável OLEMISC_ALIGNABLE
quadro simples OLEMISC_SIMPLEFRAME
SetClientSiteFirst OLEMISC_SETCLIENTSITEFIRST
imemode TOLEMISC_IMEMODE
ignoreativatewhenvisible OLEMISC_IGNOREACTIVATEWHENVISIBLE
wantstomenumerge OLEMISC_WANTSTOMENUMERGE
SuportesMultiLevelUndo OLEMISC_SUPPORTSMULTILEVELUNDO

typelib

Um subelemento de um arquivo elemento. Opcional.

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

Atributo Descrição
TLBID A ID exclusiva da biblioteca de tipos. Necessário.
versão O número de versão de duas partes da biblioteca de tipos. Se apenas o número da versão secundária aumentar, todos os recursos da biblioteca de tipos anterior serão suportados de forma compatível. Se o número da versão principal for alterado, o código compilado na biblioteca de tipos deverá ser recompilado. O número de versão da biblioteca de tipos pode diferir do número de versão do aplicativo. Necessário.
helpdir O diretório onde o arquivo de Ajuda para os tipos na biblioteca de tipos está localizado. Se o aplicativo oferecer suporte a bibliotecas de tipos para vários idiomas, as bibliotecas poderão fazer referência a nomes de arquivo diferentes no diretório de arquivos da Ajuda. Se nenhum valor, especifique "". Necessário.
resourceid A representação hexadecimal da cadeia de caracteres do identificador de localidade (LCID). É de um a quatro dígitos hexadecimais sem prefixo 0x e sem zeros à esquerda. O LCID pode ter um identificador de subidioma neutro. Para obter mais informações, consulte identificadores de localidade. Opcional.
bandeiras A representação de cadeia de caracteres dos sinalizadores da biblioteca de tipos para essa biblioteca de tipos. Especificamente, deve ser um dos "RESTRITO", "CONTROLE", "OCULTO" e "HASDISKIMAGE". Estes são os valores da enumeraçãoLIBFLAGS e são os mesmos sinalizadores especificados no parâmetro uLibFlags do ICreateTypeLib::SetLibFlags método. Opcional.

O exemplo a seguir mostra um elemento typelib incluído em um arquivo elemento.

<file name="sampleu.dll">
       <typelib tlbid="{44EC0535-400F-11D0-9DCD-00A0C90391D3}"
       version="1.0" helpdir=""/>
</file>

comInterfaceExternalProxyStub

O comInterfaceExternalProxyStub é um subelemento de um elemento assembly e é usado para interfaces de automação. Por exemplo, IDispatch e suas interfaces derivadas. Opcional.

A implementação de proxy-stub padrão é adequada para a maioria das interfaces de automação, como interfaces derivadas de IDispatch. O stub de proxy de interface e todas as outras implementações de interface de proxy-stub externo devem ser listados no comInterfaceExternalProxyStub. O elemento comInterfaceExternalProxyStub tem os atributos mostrados na tabela a seguir.

Atributo Descrição
iid O IID da interface para a qual o proxy está sendo declarado. Necessário. O valor deve estar no formato: "{iid}".
baseInterface O IID da interface a partir da qual o descrito pelo atributo iid é derivado. Este atributo é opcional. O valor deve estar no formato: "{iid}".
numMethods O número de métodos implementados pela interface. Este atributo é opcional. O valor deve estar no formato: "n".
nome Nome da interface como ela apareceria no código. Por exemplo, "IViewObject". Esta não deve ser uma cadeia de caracteres descritiva. Este atributo é opcional. O valor deve estar no formato: "nome".
TLBID A biblioteca de tipos que contém a descrição da interface especificada pelo atributo iid. Este atributo é opcional. O valor deve estar no formato: "{tlbid}" .
proxyStubClsid32 Mapeia um IID para um CLSID em DLLs de proxy de 32 bits.

O exemplo a seguir mostra um comInterfaceExternalProxyStub elemento.

<comInterfaceExternalProxyStub 
  name="IAxWinAmbientDispatch" 
    iid="{B6EA2051-048A-11D1-82B9-00C04FB9942E}" 
    numMethods="35" 
  baseInterface="{00000000-0000-0000-C000-000000000046}"/>

comInterfaceProxyStub

Um subelemento de um arquivo elemento. Opcional.

Se um arquivo no assembly implementa um stub de proxy, a marca de arquivo correspondente deve incluir um subelemento comInterfaceProxyStub com atributos idênticos a um elemento comInterfaceProxyStub. Interfaces de empacotamento entre processos e threads podem não funcionar como esperado se você omitir algumas das dependências comInterfaceProxyStub para seu componente.

O elemento comInterfaceProxyStub tem os seguintes atributos.

Atributo Descrição
iid O . IID da interface para a qual o proxy está sendo declarado. Necessário. O valor deve estar no formato: "{iid}".
nome Nome da interface como ela apareceria no código. Por exemplo, "IViewObject". Esta não deve ser uma cadeia de caracteres descritiva. Este atributo é opcional. O valor deve estar no formato: "nome".
TLBID A biblioteca de tipos que contém a descrição da interface especificada pelo atributo iid. Este atributo é opcional. O valor deve estar no formato: "{tlbid}".
baseInterface O IID da interface a partir da qual o descrito pelo atributo iid é derivado. Este atributo é opcional. O valor deve estar no formato: "{iid}".
numMethods O número de métodos implementados pela interface. Este atributo é opcional. O valor deve estar no formato: "n".
proxyStubClsid32 Mapeia um IID para um CLSID em DLLs de proxy de 32 bits.
threadingModelo O modelo de threading usado por classes COM em processo. Se essa propriedade for null, nenhum modelo de threading será usado. O componente é criado no thread principal do cliente e as chamadas de outros threads são empacotadas para esse thread. Opcional. Os valores válidos são: "Apartamento", "Grátis", "Ambos" e "Neutro".

windowclass

O nome de uma classe do Windows que deve ser versionada. O elemento windowclass tem o seguinte atributo.

Atributo Descrição
versão Este atributo controla se o nome da classe da janela interna usada no registro contém ou não a versão do assembly que contém a classe da janela. O valor deste atributo pode ser "sim" ou "não". O padrão é "sim". O valor "não" só deve ser usado se a mesma classe de janela for definida por um componente lado a lado e um componente equivalente não lado a lado e você desejar tratá-los como a mesma classe de janela. Observe que as regras usuais sobre o registro de classe de janela se aplicam apenas o primeiro componente que registra a classe de janela poderá registrá-la, uma vez que ela não é versionada.

O exemplo a seguir mostra um windowclass elemento incluído em um arquivo elemento.

<file name="comctl32.dll">
        <windowClass versioned="no">ToolbarWindow32</windowClass>
</file>

Exemplo

A seguir está um exemplo de um manifesto de assembly.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" 
manifestVersion="1.0">
    <assemblyIdentity type="win32" name="Microsoft.Tools.SampleAssembly" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="0000000000000000"/>
    <file name="sampleu.dll" hash="3eab067f82504bf271ed38112a4ccdf46094eb5a" hashalg="SHA1">
        <comClass description="Font Property Page" clsid="{0BE35200-8F91-11CE-9DE3-00AA004BB851}"/>
        <comClass description="Color Property Page" clsid="{0BE35201-8F91-11CE-9DE3-00AA004BB851}"/>
        <comClass description="Picture Property Page" clsid="{0BE35202-8F91-11CE-9DE3-00AA004BB851}"/>
    </file>
    <file name="bar.dll" hash="ac72753e5bb20446d88a48c8f0aaae769a962338" hashalg="SHA1"/>
    <file name="foo.dll" hash="a7312a1f6cfb46433001e0540458de60adcd5ec5" hashalg="SHA1">
        <comClass description="Registrar Class" clsid="{44EC053A-400F-11D0-9DCD-00A0C90391D3}" progid="ATL.Registrar"/>
    <comInterfaceProxyStub iid="{B6EA2051-048A-11D1-82B9-00C04FB9942E}" name=" IAxWinAmbientDispatch " tlbid="{34EC053A-400F-11D0-9DCD-00A0C90391D3}"/>
        <typelib tlbid="{44EC0535-400F-11D0-9DCD-00A0C90391D3}" version="1.0" helpdir=""/>
    </file>
    <file name="sampledll.dll" hash="ba62960ceb15073d2598379307aad84f3a73dfcb" hashalg="SHA1"/>
<windowClass>ToolbarWindow32</windowClass>
        <windowClass>ComboBoxEx32</windowClass>
        <windowClass>sample_trackbar32</windowClass>
        <windowClass>sample_updown32</windowClass>
</assembly>