Compartilhar via


Habilitando um assembly em um aplicativo que hospeda uma DLL, extensão ou Painel de Controle

Se o aplicativo hospedar uma DLL de terceiros, uma extensão, um plug-in ou um painel de controle, talvez você queira habilitar um assembly em seu aplicativo, sem também habilitar esse assembly para os componentes hospedados. Esse pode ser o caso quando um componente hospedado requer alterações de código para usar o assembly. Como desenvolvedor de aplicativos, talvez você não consiga fazer alterações nesses componentes de terceiros. Nesse caso, você deve seguir o procedimento descrito nesta seção para que seu aplicativo possa usar o assembly sem afetar os componentes hospedados.

  • Para habilitar um assembly em um aplicativo sem afetar DLLs, extensões, plug-ins ou painéis de controle hospedados, um manifesto que descreve a dependência do aplicativo no assembly deve ser incluído no aplicativo como um recurso. Os componentes hospedados que não estão sendo habilitados com o assembly não devem incluir manifestos que descrevem essa dependência.
  • Para habilitar um assembly em um aplicativo e suas DLLs hospedadas, extensões, plug-ins ou painéis de controle, inclua manifestos como recursos no aplicativo e em seus componentes hospedados. Os manifestos incluídos no aplicativo e nos componentes hospedados devem descrever cada um uma dependência do assembly. Normalmente, o desenvolvedor de aplicativos adiciona um manifesto ao aplicativo e o desenvolvedor do componente hospedado adiciona um manifesto à DLL, extensão, plug-in ou painel de controle.

O método a seguir pode ser usado para adicionar um manifesto a um aplicativo ou um componente hospedado que seja uma DLL, extensão, plug-in ou painel de controle.

Para habilitar um assembly em um aplicativo ou componente hospedado.

  1. Crie um manifesto que descreva a dependência do aplicativo ou da extensão no assembly.

    Por exemplo, o manifesto de "YourApplication" pode ser criado copiando o manifesto de exemplo a seguir e substituindo valores corretos para assemblyIdentity, processorArchitecture e description. Defina o valor de processorArchitecture como x86 se estiver criando em uma plataforma de 32 bits e como ia64 se estiver criando em uma plataforma de 64 bits. O elemento description contém uma descrição de opção do aplicativo. Para obter mais informações sobre o formato de manifesto, consulte manifestos do aplicativo.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity
        version="1.0.0.0"
        processorArchitecture="x86"
        name="YourCompanyName.YourDivision.YourApp"
        type="win32"
    />
    <description>Your app description here</description>
    <dependency>
        <dependentAssembly>
            <assemblyIdentity
                type="win32"
                name="Proseware.Research.SampleAssembly"
                version="6.0.0.0"
                processorArchitecture="X86"
                publicKeyToken="0000000000000000"
                language="*"
            />
        </dependentAssembly>
    </dependency>
    </assembly>
    
  2. Crie um recurso no aplicativo ou extensão do tipo RT_MANIFEST id 2.

    Por exemplo, se o nome do aplicativo for YourApp, o aplicativo deverá conter o seguinte:

    #define MANIFEST_RESOURCE_ID 2
    MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.manifest"
    
  3. Compile o aplicativo com o sinalizador -DISOLATION_AWARE_ENABLED ou insira essa instrução antes do #include instrução "Windows.h". No caso de um aplicativo com vários módulos, o sinalizador -DISOLATION_AWARE_ENABLED é necessário em todos os módulos.

    #define ISOLATION_AWARE_ENABLED 1
    
  4. Teste para garantir que os assemblies usados pelo aplicativo funcionem corretamente no aplicativo e no componente hospedado.

Para obter mais informações sobre como adicionar um assembly a aplicativos sem extensões, consulte Habilitando um assembly em um aplicativo sem extensões.