Procedura: configurare i componenti COM basati su .NET Framework per l'attivazione senza registrazioneHow to: Configure .NET Framework-Based COM Components for Registration-Free Activation

L'attivazione senza registrazione per i componenti basati su .NET Framework risulta solo leggermente più complessa rispetto a quella per i componenti COM.Registration-free activation for .NET Framework-based components is only slightly more complicated than it is for COM components. La configurazione richiede due manifesti:The setup requires two manifests:

  • Per identificare il componente gestito, le applicazioni COM devono disporre di un manifesto dell'applicazione di tipo Win32.COM applications must have a Win32-style application manifest to identify the managed component.

  • I componenti basati su .NET Framework devono disporre di un manifesto del componente per le informazioni sull'attivazione necessarie in fase di esecuzione..NET Framework-based components must have a component manifest for activation information needed at run time.

Questo argomento descrive 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.This topic describes how to associate an application manifest with an application; associate a component manifest with a component; and embed a component manifest in an assembly.

Per creare un manifesto dell'applicazioneTo create an application manifest

  1. Usando un editor XML, creare o modificare il manifesto dell'applicazione di proprietà dell'applicazione COM che interagisce con uno o più componenti gestiti.Using an XML editor, create (or modify) the application manifest owned by the COM application that is interoperating with one or more managed components.

  2. Inserire l'intestazione standard seguente all'inizio del file:Insert the following standard header at the beginning of the 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, vedere Application Manifests (Manifesti delle applicazioni).For information about manifest elements and their attributes, see Application Manifests.

  3. Identificare il proprietario del manifesto.Identify the owner of the manifest. Nell'esempio seguente il proprietario del file manifesto è myComApp versione 1.In the following example, myComApp version 1 owns the manifest file.

    <?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="msil"   
      />  
    
  4. Identificare gli assembly dipendenti.Identify dependent assemblies. Nell'esempio seguente, myComApp dipende da myManagedComp.In the following example, myComApp depends on 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"  
          />  
        </dependentAssembly>  
      </dependency>  
    </assembly>  
    
  5. Salvare il file manifesto assegnando un nome a questo.Save and name the manifest file. Il nome di un manifesto dell'applicazione è costituito dal nome dell'eseguibile dell'assembly seguito dall'estensione manifest.The name of an application manifest is the name of the assembly executable followed by the .manifest extension. Il nome file del manifesto dell'applicazione per myComApp.exe, ad esempio, è myComApp.exe.manifest.For example, the application manifest file name for myComApp.exe is myComApp.exe.manifest.

Un manifesto dell'applicazione può essere installato nella stessa directory dell'applicazione COM.You can install an application manifest in the same directory as the COM application. In alternativa, può essere aggiunto come risorsa al file EXE dell'applicazione.Alternatively, you can add it as a resource to the application's .exe file. Per altre informazioni, vedere About Side-by-Side Assemblies (Informazioni sugli assembly side-by-side).For additional information, For more information, see About Side-by-Side Assemblies.

Per creare un manifesto del componenteTo create a component manifest

  1. Tramite un editor XML, creare un manifesto del componente per descrivere l'assembly gestito.Using an XML editor, create a component manifest to describe the managed assembly.

  2. Inserire l'intestazione standard seguente all'inizio del file:Insert the following standard header at the beginning of the 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.Identify the owner of the file. L'elemento <assemblyIdentity> dell'elemento <dependentAssembly> nel file manifesto dell'applicazione deve corrispondere a quello contenuto nel manifesto del componente.The <assemblyIdentity> element of the <dependentAssembly> element in application manifest file must match the one in the component manifest. Nell'esempio seguente il proprietario del file manifesto è myManagedComp versione 1.2.3.4.In the following example, myManagedComp version 1.2.3.4 owns the manifest file.

    <?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"  
                        processorArchitecture="msil"  
           />  
    
  4. Identificare ogni classe nell'assembly.Identify each class in the assembly. Usare l'elemento <clrClass> per identificare in modo univoco ogni classe nell'assembly gestito.Use the <clrClass> element to uniquely identify each class in the managed assembly. L'elemento, che costituisce un sottoelemento di <assembly> dispone degli attributi descritti nella tabella seguente.The element, which is a subelement of the <assembly> element, has the attributes described in the following table.

    AttributoAttribute DescrizioneDescription ObbligatorioRequired
    clsid Identificatore che specifica la classe da attivare.The identifier that specifies the class to be activated. YesYes
    description Stringa contenente informazioni sul componente.A string that informs the user about the component. Il valore predefinito è una stringa vuota.An empty string is the default. NoNo
    name Stringa che rappresenta la classe gestita.A string that represents the managed class. YesYes
    progid Identificatore da usare per l'attivazione con associazione tardiva.The identifier to be used for late-bound activation. NoNo
    threadingModel Modello di threading COM.The COM threading model. "Both" è il valore predefinito."Both" is the default value. NoNo
    runtimeVersion Specifica la versione di Common Language Runtime (CLR) da usare.Specifies the common language runtime (CLR) version to use. Se questo attributo non viene specificato e CLR non è ancora stato caricato, il componente viene caricato con l'ultimo CLR installato prima della versione 4.If you do not specify this attribute, and the CLR is not already loaded, the component is loaded with the latest installed CLR prior to CLR version 4. Se si specifica v1.0.3705, v1.1.4322 o v2.0.50727, la versione esegue automaticamente il roll forward all'ultima versione di CLR installata prima della versione 4 (di solito v2.0.50727).If you specify v1.0.3705, v1.1.4322, or v2.0.50727, the version automatically rolls forward to the latest installed CLR version prior to CLR version 4 (usually v2.0.50727). Se è già stata caricata un'altra versione di CLR ed è possibile caricare la versione specificata side-by-side in-process, la versione specificata viene caricata; in caso contrario, viene usato il CLR caricato.If another version of the CLR is already loaded and the specified version can be loaded side-by-side in-process, the specified version is loaded; otherwise, the loaded CLR is used. Ciò potrebbe causare un errore di caricamento.This might cause a load failure. NoNo
    tlbid Identificatore della libreria dei tipi che contiene le informazioni sui tipi per la classe.The identifier of the type library that contains type information about the class. NoNo

    Tutti i tag di attributo effettuano la distinzione tra maiuscole e minuscole.All attribute tags are case-sensitive. È 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).You can obtain CLSIDs, ProgIDs, threading models, and the runtime version by viewing the exported type library for the assembly with the OLE/COM ObjectViewer (Oleview.exe).

    Nel manifesto del componente seguente vengono identificate due classi, testClass1 e testClass2.The following component manifest identifies two classes, testClass1 and testClass2.

    <?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 il file manifesto assegnando un nome a questo.Save and name the manifest file. Il nome di un manifesto del componente è costituito dal nome della libreria dell'assembly seguito dall'estensione manifest.The name of a component manifest is the name of the assembly library followed by the .manifest extension. La libreria myManagedComp.dll, ad esempio, corrisponde a myManagedComp.manifest.For example, the myManagedComp.dll is myManagedComp.manifest.

È necessario incorporare il manifesto del componente come risorsa nell'assembly.You must embed the component manifest as a resource in the assembly.

Per incorporare un manifesto del componente in un assembly gestitoTo embed a component manifest in a managed assembly

  1. Creare uno script di risorse contenente l'istruzione seguente:Create a resource script that contains the following statement:

    RT_MANIFEST 1 myManagedComp.manifest

    In questa istruzione myManagedComp.manifest rappresenta il nome del manifesto del componente da incorporare.In this statement, myManagedComp.manifest is the name of the component manifest being embedded. Nell'esempio, il nome file dello script è myresource.rc.For this example, the script file name is myresource.rc.

  2. Compilare lo script tramite il compilatore di risorse di Microsoft Windows (Rc.exe)Compile the script using the Microsoft Windows Resource Compiler (Rc.exe). Al prompt dei comandi digitare il seguente comando:At the command prompt, type the following command:

    rc myresource.rc

    RC.exe genera il file di risorse myresource.res.Rc.exe produces the myresource.res resource file.

  3. Compilare di nuovo il file di origine dell'assembly e specificare il file di risorse usando l'opzione /win32res:Compile the assembly's source file again and specify the resource file by using the /win32res option:

    /win32res:myresource.res  
    

    Anche in questo caso, myresource.res rappresenta il nome del file di risorse contenente la risorsa incorporata.Again, myresource.res is the name of the resource file containing embedded resource.

Vedere ancheSee Also

Interoperabilità COM senza registrazioneRegistration-Free COM Interop
Requisiti per l'interoperabilità COM senza registrazioneRequirements for Registration-Free COM Interop)
Configurazione di componenti COM per l'attivazione senza registrazioneConfiguring COM Components for Registration-Free Activation)
Registration-Free Activation of .NET-Based Components: A Walkthrough (Procedura dettagliata per l'attivazione senza registrazione di componenti basati su .NET)Registration-Free Activation of .NET-Based Components: A Walkthrough