Procedura dettagliata: Creazione di oggetti COM con Visual BasicWalkthrough: Creating COM Objects with Visual Basic

Quando si creano nuovi componenti o applicazioni, è consigliabile creare .NET Framework assembly.When creating new applications or components, it is best to create .NET Framework assemblies. Tuttavia, Visual Basic facilita anche l'esposizione di un componente .NET Framework a COM.However, Visual Basic also makes it easy to expose a .NET Framework component to COM. In questo modo è possibile fornire nuovi componenti per i gruppi di applicazioni precedenti che richiedono componenti COM.This enables you to provide new components for earlier application suites that require COM components. In questa procedura dettagliata viene illustrato come utilizzare Visual Basic per esporre .NET Framework oggetti come oggetti COM, sia con sia senza il modello di classe COM.This walkthrough demonstrates how to use Visual Basic to expose .NET Framework objects as COM objects, both with and without the COM class template.

Il modo più semplice per esporre oggetti COM consiste nell'usare il modello di classe COM.The easiest way to expose COM objects is by using the COM class template. Il modello di classe COM crea una nuova classe e quindi configura il progetto per generare la classe e il livello di interoperabilità come oggetto COM e registrarlo nel sistema operativo.The COM class template creates a new class, and then configures your project to generate the class and interoperability layer as a COM object and register it with the operating system.

Nota

Sebbene sia anche possibile esporre una classe creata in Visual Basic come oggetto COM per il codice non gestito da usare, non è un vero oggetto COM e non può essere usata da Visual Basic.Although you can also expose a class created in Visual Basic as a COM object for unmanaged code to use, it is not a true COM object and cannot be used by Visual Basic. Per ulteriori informazioni, vedere interoperabilità com nelle applicazioni .NET Framework.For more information, see COM Interoperability in .NET Framework Applications.

Nota

Nomi o percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti potrebbero essere diversi nel computer in uso.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi.The Visual Studio edition that you have and the settings that you use determine these elements. Per altre informazioni, vedere Personalizzazione dell'IDE.For more information, see Personalizing the IDE.

Per creare un oggetto COM utilizzando il modello di classe COMTo create a COM object by using the COM class template

  1. Aprire un nuovo progetto di applicazione Windows dal menu file facendo clic su nuovo progetto.Open a new Windows Application project from the File menu by clicking New Project.

  2. Nella finestra di dialogo nuovo progetto , sotto il campo Tipi progetto , verificare che sia selezionata l'opzione Windows.In the New Project dialog box under the Project Types field, check that Windows is selected. Selezionare libreria di classi dall'elenco modelli , quindi fare clic su OK.Select Class Library from the Templates list, and then click OK. Verrà visualizzato il nuovo progetto.The new project is displayed.

  3. Scegliere Aggiungi nuovo elemento dal menu progetto .Select Add New Item from the Project menu. Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.The Add New Item dialog box is displayed.

  4. Selezionare classe com dall'elenco modelli , quindi fare clic su Aggiungi.Select COM Class from the Templates list, and then click Add. Visual Basic aggiunge una nuova classe e configura il nuovo progetto per l'interoperabilità COM.Visual Basic adds a new class and configures the new project for COM interop.

  5. Aggiungere codice come proprietà, metodi ed eventi alla classe COM.Add code such as properties, methods, and events to the COM class.

  6. Scegliere Compila ClassLibrary1 dal menu Compila .Select Build ClassLibrary1 from the Build menu. Visual Basic compila l'assembly e registra l'oggetto COM con il sistema operativo.Visual Basic builds the assembly and registers the COM object with the operating system.

Creazione di oggetti COM senza il modello di classe COMCreating COM Objects without the COM Class Template

È inoltre possibile creare manualmente una classe COM anziché utilizzare il modello di classe COM.You can also create a COM class manually instead of using the COM class template. Questa procedura è utile quando si utilizza la riga di comando o quando si desidera un maggiore controllo sulla modalità di definizione degli oggetti COM.This procedure is helpful when you are working from the command line or when you want more control over how COM objects are defined.

Per configurare il progetto per generare un oggetto COMTo set up your project to generate a COM object

  1. Aprire un nuovo progetto di applicazione Windows dal menu file facendo clic su NewProject.Open a new Windows Application project from the File menu by clicking NewProject.

  2. Nella finestra di dialogo nuovo progetto , sotto il campo Tipi progetto , verificare che sia selezionata l'opzione Windows.In the New Project dialog box under the Project Types field, check that Windows is selected. Selezionare libreria di classi dall'elenco modelli , quindi fare clic su OK.Select Class Library from the Templates list, and then click OK. Verrà visualizzato il nuovo progetto.The new project is displayed.

  3. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Proprietà.In Solution Explorer, right-click your project, and then click Properties. Verrà visualizzato Progettazione progetti .The Project Designer is displayed.

  4. Fare clic sulla scheda Compila.Click the Compile tab.

  5. Selezionare la casella di controllo registra per interoperabilità COM .Select the Register for COM Interop check box.

Per configurare il codice nella classe per creare un oggetto COMTo set up the code in your class to create a COM object

  1. In Esplora soluzionifare doppio clic su Class1. vb per visualizzarne il codice.In Solution Explorer, double-click Class1.vb to display its code.

  2. Rinominare la classe come ComClass1.Rename the class to ComClass1.

  3. Aggiungere le costanti seguenti a ComClass1.Add the following constants to ComClass1. Verranno archiviate le costanti identificatore univoco globale (GUID) che devono essere presenti negli oggetti COM.They will store the Globally Unique Identifier (GUID) constants that the COM objects are required to have.

    Public Const ClassId As String = ""
    Public Const InterfaceId As String = ""
    Public Const EventsId As String = ""
    
  4. Scegliere Crea GUID dal menu Strumenti.On the Tools menu, click Create Guid. Nella finestra di dialogo Crea GUID fare clic su Formato del Registro di sistema e quindi fare clic su Copia.In the Create GUID dialog box, click Registry Format and then click Copy. Fare clic su Esci.Click Exit.

  5. Sostituire la stringa vuota per ClassId con il GUID, rimuovendo le parentesi graffe iniziali e finali.Replace the empty string for the ClassId with the GUID, removing the leading and trailing braces. Se, ad esempio, il GUID fornito da Guidgen "{2C8B0AEE-02C9-486e-B809-C780A11530FE}" è, il codice dovrebbe essere simile al seguente.For example, if the GUID provided by Guidgen is "{2C8B0AEE-02C9-486e-B809-C780A11530FE}" then your code should appear as follows.

    Public Const ClassId As String = "2C8B0AEE-02C9-486e-B809-C780A11530FE"
    
  6. Ripetere i passaggi precedenti per le InterfaceId costanti EventsId e, come nell'esempio seguente.Repeat the previous steps for the InterfaceId and EventsId constants, as in the following example.

    Public Const InterfaceId As String = "3D8B5BA4-FB8C-5ff8-8468-11BF6BD5CF91"
    Public Const EventsId As String = "2B691787-6ED7-401e-90A4-B3B9C0360E31"
    

    Nota

    Verificare che i GUID siano nuovi e univoci. in caso contrario, il componente COM potrebbe essere in conflitto con altri componenti COM.Make sure that the GUIDs are new and unique; otherwise, your COM component could conflict with other COM components.

  7. Aggiungere l' ComClass attributo a ComClass1, specificando i GUID per l'ID di classe, l'ID di interfaccia e l'ID degli eventi come nell'esempio seguente:Add the ComClass attribute to ComClass1, specifying the GUIDs for the Class ID, Interface ID, and Events ID as in the following example:

    <ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)>
    Public Class ComClass1
    
  8. Le classi com devono avere un Public Sub New() costruttore senza parametri o la classe non sarà registrata correttamente.COM classes must have a parameterless Public Sub New() constructor, or the class will not register correctly. Aggiungere un costruttore senza parametri alla classe:Add a parameterless constructor to the class:

    Public Sub New()
        MyBase.New()
    End Sub
    
  9. Aggiungere proprietà, metodi ed eventi alla classe, terminando con un' End Class istruzione.Add properties, methods, and events to the class, ending it with an End Class statement. Scegliere Compila soluzione dal menu Compila .Select Build Solution from the Build menu. Visual Basic compila l'assembly e registra l'oggetto COM con il sistema operativo.Visual Basic builds the assembly and registers the COM object with the operating system.

    Nota

    Gli oggetti COM generati con Visual Basic non possono essere utilizzati da altre applicazioni Visual Basic perché non sono veri oggetti COM.The COM objects you generate with Visual Basic cannot be used by other Visual Basic applications because they are not true COM objects. I tentativi di aggiungere riferimenti a tali oggetti COM genereranno un errore.Attempts to add references to such COM objects will raise an error. Per informazioni dettagliate, vedere interoperabilità com nelle applicazioni .NET Framework.For details, see COM Interoperability in .NET Framework Applications.

Vedere ancheSee also