Configurazione di componenti basati su .NET per l'attivazione senza registrazione

L'attivazione senza registrazione per i componenti basati su .NET risulta leggermente più complessa rispetto a quella per i componenti COM. Per la configurazione sono richiesti due manifesti:

  • Le applicazioni COM devono disporre di un manifesto dell'applicazione di tipo Win32 per identificare il componente gestito.
  • I componenti basati su .NET devono disporre di un manifesto del componente per le informazioni sull'attivazione necessarie in fase di esecuzione.

Nel presente argomento viene descritto come associare un manifesto dell'applicazione a un'applicazione, come associare un manifesto del componente a un componente e come incorporare un manifesto del componente in un assembly.

Per creare un manifesto dell'applicazione

  1. Utilizzando un editor XML, creare o modificare il manifesto dell'applicazione di proprietà dell'applicazione COM che interagisce con uno o più componenti gestiti.

  2. Inserire la seguente intestazione standard all'inizio del file:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    

    Per informazioni sugli elementi del manifesto e sui relativi attributi, cercare "Application Manifests Reference" in MSDN Library (informazioni in lingua inglese).

  3. Identificare il proprietario del manifesto. Nell'esempio riportato di seguito, il proprietario del file manifesto è myComApp versione 1.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      <assemblyIdentity type="win32" 
                        name="myOrganization.myDivision.myComApp" 
                        version="1.0.0.0" 
                        processorArchitecture="x86" 
      />
    
  4. Identificare gli assembly dipendenti. Nell'esempio riportato di seguito, myComApp dipende da myManagedComp.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      <assemblyIdentity type="win32" 
                        name="myOrganization.myDivision.myComApp" 
                        version="1.0.0.0" 
                        processorArchitecture="x86" 
                        publicKeyToken="8275b28176rcbbef"
      />
      <dependency>
        <dependentAssembly>
          <assemblyIdentity type="win32" 
                        name="myOrganization.myDivision.myManagedComp" 
                        version="6.0.0.0" 
                        processorArchitecture="X86" 
                        publicKeyToken="8275b28176rcbbef"
                        language="*"
          />
        </dependentAssembly>
      </dependency>
    </assembly>
    
  5. Salvare e denominare il file manifesto. Il nome di un manifesto dell'applicazione è costituito dal nome dell'eseguibile dell'assembly seguito dall'estensione MANIFEST. Il nome file del manifesto dell'applicazione per myComApp.exe, ad esempio, è myComApp.exe.manifest.

Un manifesto dell'applicazione può essere installato nella stessa directory dell'applicazione COM. In alternativa, può essere aggiunto come risorsa al file EXE dell'applicazione. Per ulteriori informazioni, cercare "Side-by-side Assemblies" in MSDN Library (informazioni in lingua inglese).

Per creare un manifesto del componente

  1. Utilizzando un editor XML, creare un manifesto del componente per descrivere l'assembly gestito.

  2. Inserire la seguente intestazione standard all'inizio del file:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    
  3. Identificare il proprietario del file. L'elemento <assemblyIdentity> dell'elemento <dependentAssembly> nel file manifesto dell'applicazione deve corrispondere a quello contenuto nel manifesto del componente. Nell'esempio riportato di seguito, il proprietario del file manifesto è myManagedComp versione 1.2.3.4.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
           <assemblyIdentity
                        name="myOrganization.myDivision.myManagedComp"
                        version="1.2.3.4" />
                        publicKeyToken="8275b28176rcbbef"
    
  4. Identificare ogni classe nell'assembly. Utilizzare l'elemento <clrClass> per identificare in modo univoco ciascuna classe nell'assembly gestito. L'elemento, che costituisce un sottoelemento di <assembly>, dispone degli attributi descritti nella tabella riportata di seguito.

    Attributo Descrizione Obbligatorio
    clsid Identificatore che specifica la classe da attivare.
    description Stringa contenente informazioni sul componente. Il valore predefinito è una stringa vuota. No
    name Stringa che rappresenta la classe gestita.
    progid Identificatore da utilizzare per l'attivazione con associazione tardiva. No
    threadingModel Modello di threading COM. Il valore predefinito è "Both". No
    runtimeVersion Questo attributo viene ignorato. Se non è ancora stato caricato il runtime, prima dell'attivazione della classe verrà caricata la versione più recente. In caso contrario, verrà utilizzata la versione attualmente caricata. No
    tlbid Identificatore della libreria dei tipi contenente informazioni sui tipi per la classe. No

    In tutti i tag di attributi viene effettuata la distinzione tra maiuscole e minuscole. È possibile ottenere i CLSID, i ProgID, i modelli di threading e la versione del runtime visualizzando la libreria dei tipi esportata per l'assembly con il Visualizzatore oggetti OLE/COM (Oleview.exe).

    Nel manifesto del componente riportato di seguito viene identificata una singola classe con due metodi.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
           <assemblyIdentity
                        name="myOrganization.myDivision.myManagedComp"
                        version="1.2.3.4" />
                        publicKeyToken="8275b28176rcbbef"
           <clrClass
                        clsid="{65722BE6-3449-4628-ABD3-74B6864F9739}"
                        progid="myManagedComp.testClass1"
                        threadingModel="Both"
                        name="myManagedComp.testClass1"
                        runtimeVersion="v1.0.3705">
           </clrClass>
           <clrClass
                        clsid="{367221D6-3559-3328-ABD3-45B6825F9732}"
                        progid="myManagedComp.testClass2"
                        threadingModel="Both"
                        name="myManagedComp.testClass2"
                        runtimeVersion="v1.0.3705">
           </clrClass>
           <file name="MyManagedComp.dll">
           </file>
    </assembly>
    
  5. Salvare e denominare il file manifesto. Il nome di un manifesto del componente è costituito dal nome della libreria dell'assembly seguito dall'estensione MANIFEST. La libreria myManagedComp.dll, ad esempio, corrisponde a myManagedComp.manifest.

È necessario incorporare il manifesto del componente come risorsa nell'assembly.

Per incorporare un manifesto del componente in un assembly gestito

  1. Creare uno script di risorse contenente la seguente istruzione:

    RT_MANIFEST 1 myManagedComp.manifest

    In questa istruzione, myManagedComp.manifest rappresenta il nome del manifesto del componente da incorporare. Nell'esempio, il nome file dello script è myresource.rc.

  2. Compilare lo script mediante il compilatore di risorse di Microsoft Windows (Rc.exe). Al prompt dei comandi, digitare il comando seguente:

    rc myresource.rc

    Mediante Rc.exe viene creato il file di risorse myresource.res.

  3. Compilare nuovamente il file di origine dell'assembly e specificare il file di risorse mediante l'opzione /win32res:

    /win32res:myresource.res
    

    Anche in questo caso, myresource.res rappresenta il nome del file di risorse contenente la risorsa incorporata.

Vedere anche

Interoperabilità COM senza registrazione | Requisiti per l'interoperabilità COM senza registrazione | Configurazione di componenti COM per l'attivazione senza registrazione