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.
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>
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"
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
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.