Abilitazione di un assembly in un'applicazione che ospita una DLL, un'estensione o un Pannello di controllo

Se l'applicazione ospita una DLL, un'estensione, un plug-in o un pannello di controllo di terze parti, è possibile abilitare un assembly nell'applicazione, senza abilitare anche questo assembly per i componenti ospitati. Questo può essere il caso in cui un componente ospitato richiede modifiche al codice per l'uso dell'assembly. Come sviluppatore di applicazioni, potrebbe non essere possibile apportare modifiche a questi componenti di terze parti. In questo caso, è consigliabile seguire la procedura descritta in questa sezione in modo che l'applicazione possa usare l'assembly senza influire sui componenti ospitati.

  • Per abilitare un assembly in un'applicazione senza influire sulle DLL ospitate, le estensioni, i plug-in o i pannelli di controllo, un manifesto che descrive la dipendenza dell'applicazione dall'assembly deve essere incluso nell'applicazione come risorsa. I componenti ospitati che non sono abilitati con l'assembly non devono includere manifesti che descrivono questa dipendenza.
  • Per abilitare un assembly in un'applicazione e le dll ospitate, le estensioni, i plug-in o i pannelli di controllo, includere manifesti come risorse nell'applicazione e nei relativi componenti ospitati. I manifesti inclusi nell'applicazione e nei componenti ospitati devono descrivere ogni dipendenza dall'assembly. In genere, lo sviluppatore di applicazioni aggiunge un manifesto all'applicazione e lo sviluppatore del componente ospitato aggiunge un manifesto alla DLL, all'estensione, al plug-in o al pannello di controllo.

Il metodo seguente può essere usato per aggiungere un manifesto a un'applicazione o a un componente ospitato che è una DLL, un'estensione, un plug-in o un pannello di controllo.

Per abilitare un assembly in un'applicazione o in un componente ospitato.

  1. Creare un manifesto che descrive la dipendenza dell'applicazione o dell'estensione nell'assembly.

    Ad esempio, il manifesto per "YourApplication" può essere creato copiando il manifesto di esempio seguente e sostituendo i valori corretti per assemblyIdentity, processorArchitecture e descrizione. Impostare il valore di processorArchitecture su x86 se si basa su una piattaforma a 32 bit e su ia64 se si basa su una piattaforma a 64 bit. L'elemento description contiene una descrizione dell'opzione dell'applicazione. Per altre informazioni sul formato manifesto, vedere manifesti dell'applicazione.

    <?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. Creare una risorsa nell'applicazione o nell'estensione di tipo RT_MANIFEST id 2.

    Ad esempio, se il nome dell'applicazione è YourApp, l'applicazione deve contenere quanto segue:

    #define MANIFEST_RESOURCE_ID 2
    MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.manifest"
    
  3. Compilare l'applicazione con il flag -DISOLATION_AWARE_ENABLED o inserire questa istruzione prima dell'istruzione #include "Windows.h". Nel caso di un'applicazione con più moduli, è necessario il flag -DISOLATION_AWARE_ENABLED in tutti i moduli.

    #define ISOLATION_AWARE_ENABLED 1
    
  4. Testare per assicurarsi che gli assembly usati dall'applicazione funzionino correttamente nell'applicazione e nel componente ospitato.

Per altre informazioni sull'aggiunta di un assembly alle applicazioni senza estensioni, vedere Abilitazione di un assembly in un'applicazione senza estensioni.