Come chiamare un assembly di Visual Basic .NET o Visual Basic 2005 da Visual Basic 6.0

Traduzione articoli Traduzione articoli
Identificativo articolo: 817248 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

INTRODUZIONE

In questo articolo viene descritto come consente di utilizzare Microsoft Visual Basic .NET o Microsoft Visual Basic 2005 per creare un assembly gestito che pu˛ essere chiamato da Microsoft Visual Basic 6.0.

Informazioni

Linee guida per esporre i tipi di .NET a COM

Quando si desidera esporre tipi in un assembly Microsoft .NET per le applicazioni COM (Component Object Model), Ŕ possibile esaminare i seguenti requisiti di interoperabilitÓ di COM in fase di progettazione. Gestito tipo ( classe , interfaccia , struct , enum e altri) interazione anche con applicazioni client COM quando si esegue le seguenti indicazioni:
  • Definire le interfacce e implementare in modo esplicito nelle classi. InteroperabilitÓ COM fornisce un meccanismo per generare automaticamente un'interfaccia che contiene tutti i membri della classe e i membri della relativa classe base. Tuttavia, Ŕ preferibile fornire interfacce esplicite e implementarli in modo esplicito.
  • Dichiarare gestiti tutti i tipi che si desidera esporre a COM come pubblici. Solo i tipi pubblici in un assembly vengono registrati ed esportati nella libreria dei tipi. Pertanto, solo i tipi pubblici sono visibili a COM.
  • Dichiarare tutti i tipo di membri (metodi, proprietÓ, campi ed eventi) che si desidera esporre a COM come pubblici. I membri di tipi pubblici inoltre devono essere pubblici sia visibile a COM. Per impostazione predefinita, tutti i membri e tipi pubblici sono visibili. Utilizzare l'attributo di ComVisibleAttribute se Ŕ necessario nascondere un tipo o un membro dalla visibilitÓ del tipo o membro di controllo per applicazioni client COM.
  • Tipi necessario dispone di un costruttore predefinito pubblico per creare un'istanza tramite Managed COM., i tipi pubblici sono visibili a COM. Tuttavia, senza un costruttore pubblico predefinito (un costruttore senza argomenti), COM non client possibile creare un'istanza del tipo. I client COM comunque possono utilizzare il tipo, se il tipo viene creata un'istanza in un altro modo e viene restituita l'istanza al client COM. ╚ possibile includere costruttori di overload che accettano argomenti diversi per questi tipi. Tuttavia, costruttori che accettano argomenti possono essere chiamati solo da codice gestito (. NET).
  • Tipi non possono essere astratti. NÚ i client COM che .NET i client possono creare istanze di tipi astratti.
  • Consente di utilizzare il modello classecom in Visual Basic .NET o in Visual Basic 2005. Quando si aggiunge una nuova classe che si desidera esporre alle applicazioni COM, utilizzare il modello classecom fornito da Visual Basic.NET o da Visual Basic 2005. Il modello classecom crea una classe che include l'attributo COMClassAttribute e genera i GUID per il CLSID, l'ID di interfaccia e l'ID di eventi esposti dal tipo. Inoltre, il modello classecom crea un costruttore pubblico senza parametri. Questo Ŕ il modo pi¨ semplice per creare una nuova classe segua le indicazioni per creare tipi chiamabili COM.

Registrazione dell'assembly .NET per l'interoperabilitÓ COM e creazione di una libreria dei tipi

Per Visual Basic 6.0 interagire correttamente con un componente gestito, Ŕ necessario registrare l'assembly per l'interoperabilitÓ COM e generare una libreria dei tipi. Deve essere eseguita la registrazione su ciascun computer, in cui COM applicazione client interagisce con l'assembly. La libreria di tipo fornisce il tipo di informazioni sui tipi esposti nell'assembly alle applicazioni client COM. Il processo per eseguire questa operazione varia a seconda se si sta utilizzando nel computer di sviluppo o del computer di destinazione.

Nel computer di sviluppo Microsoft Visual Studio .NET o Microsoft Visual Studio 2005 automaticamente crea una libreria dei tipi e lo registra durante il processo di generazione se Ŕ selezionata la casella di controllo Registra per interoperabilitÓ COM in proprietÓ di configurazione del progetto. Se Ŕ stato utilizzato il modello classecom quando si crea la classe, Visual Studio .NET o Visual Studio 2005 seleziona automaticamente il Registra per interoperabilitÓ COM casella di controllo. Per verificare che la casella di controllo Registra per interoperabilitÓ COM Ŕ selezionata in Visual Studio .NET o in Visual Studio 2005, attenersi alla seguente procedura:
  1. Avviare Visual Studio .NET o Visual Studio 2005.
  2. Aprire la soluzione che contiene il progetto che si desidera creare per l'interoperabilitÓ COM.
  3. Scegliere dal menu Visualizza , Solution Explorer .
  4. In Esplora soluzioni, fare clic con il pulsante destro del mouse che si desidera creare per l'interoperabilitÓ COM progetto e scegliere ProprietÓ .
  5. Fare clic su ProprietÓ di configurazione e quindi fare clic sul nodo Genera .

    Nota In Visual Studio 2005, fare clic su Compila nel riquadro sinistro.
  6. Fare clic per selezionare il Register for COM Interop casella di controllo. Questa opzione Ŕ attivata solo nei progetti libreria di classe.
  7. Fare clic su OK per chiudere il ProprietÓ pagine nella finestra di dialogo.
Se Visual Studio .NET o Visual Studio 2005 non Ŕ installato o Ŕ necessario generare manualmente e di registrare un file di libreria (tlb) dei tipi per l'assembly gestito, utilizzare lo strumento di registrazione assembly (RegAsm.exe) con il / TLB passare. ╚ inoltre consigliabile utilizzare l'opzione / base di codice se l'assembly gestito Ŕ un assembly privato e si desidera inserire l'assembly gestito in una cartella diversa dal processo host (EXE).

Un assembly privato Ŕ distribuito con un'applicazione ed Ŕ disponibile per l'utilizzo esclusivo di tale applicazione. Altre applicazioni non condividono l'assembly privato. Gli assembly privati sono progettati per essere installato nella stessa cartella del processo host (EXE). Un'applicazione client COM, questo indica che l'assembly si trovi nella stessa cartella dell'applicazione. Un assembly condiviso Ŕ disponibile per pi¨ applicazioni sul computer. Per creare un assembly condiviso, Ŕ necessario firmare l'assembly con un nome sicuro e installare l'assembly nella Global Assembly Cache (GAC) del computer di destinazione.

Per ulteriori informazioni su come firmare l'assembly con un nome sicuro e installare l'assembly nella Global Assembly Cache (GAC), visitare il sito di Web di Microsoft:
http://msdn2.microsoft.com/en-us/library/xc31ft41(vs.71).aspx
╚ necessario utilizzare entrambi il / tlb: opzione e il / la base di codice opzione quando si registra l'assembly. Il / tlb: opzione genera e registra una libreria dei tipi e l'opzione / base di codice il percorso dell'assembly gestito viene registrato nel Registro di sistema di Windows. Se non si utilizza l'opzione / base di codice e l'assembly non Ŕ stato installato nella Global Assembly Cache (GAC), Ŕ necessario inserire una copia dell'assembly nella cartella di ciascuna applicazione client di COM (EXE) in modo che l'assembly pu˛ trovarsi da common language runtime (CLR).

Per generare e registrare una libreria dei tipi e registrare l'ubicazione dell'assembly gestito, digitare il seguente comando al prompt dei comandi:
Regasm AssemblyName.dll /tlb: FileName.tlb /codebase

Creare un assembly di callable di COM in Visual Basic .NET

  1. Avviare Visual Studio .NET o Visual Studio 2005.
  2. Scegliere Nuovo dal menu file , quindi progetto .
  3. In Tipi progetto fare clic su Progetti di Visual Basic .

    Nota In Visual Studio2005 fare clic su Visual Basic in Tipi progetto .
  4. In modelli , fare clic su Class Library .
  5. Denominare il progetto TestProj e quindi fare clic su OK .

    Per impostazione predefinita, viene creato Class1.
  6. Scegliere dal menu Visualizza , Solution Explorer .
  7. Fare clic con il pulsante destro del mouse su Class1.vb e scegliere Elimina . Fare clic su OK per confermare l'eliminazione del file di origine Class1.vb.
  8. Scegliere dal menu progetto , Aggiungi classe .
  9. In modelli , fare clic su Classe COM .
  10. Denominare la classe COMClass1.vb e quindi fare clic su Apri

    COMClass1 viene creato con il codice riportato di seguito.
    <ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _
    Public Class ComClass1
    
    #Region "COM GUIDs"
        ' These  GUIDs provide the COM identity for this class 
        ' and its COM interfaces. If you change them, existing 
        ' clients will no longer be able to access the class.
        Public Const ClassId As String = "6DB79AF2-F661-44AC-8458-62B06BFDD9E4"
        Public Const InterfaceId As String = "EDED909C-9271-4670-BA32-109AE917B1D7"
        Public Const EventsId As String = "17C731B8-CE61-4B5F-B114-10F3E46153AC"
    #End Region
    
        ' A creatable COM class must have a Public Sub New() 
        ' without parameters. Otherwise, the class will not be 
        ' registered in the COM registry and cannot be created 
        ' through CreateObject.
        Public Sub New()
            MyBase.New()
        End Sub
    
    End Class
  11. Aggiungere la seguente funzione COMClass1.
       Public Function myFunction() As Integer
          Return 100
       End Function
  12. In Esplora soluzioni, fare clic con il pulsante destro del mouse Project Name e quindi fare clic su ProprietÓ .
  13. In ProprietÓ di configurazione , scegliere Genera .
  14. Verificare che l'opzione Registra per interoperabilitÓ COM di controllo Ŕ selezionata e quindi fare clic su OK .
  15. Scegliere dal menu Genera , Genera soluzione per generare il progetto.
  16. Avviare Visual Basic 6.0.
  17. Dal menu file scegliere Nuovo progetto e quindi fare clic su per selezionare EXE Standard in della finestra di dialogo Nuovo progetto .

    Per impostazione predefinita, viene creato un form denominato Form1.
  18. Scegliere riferimenti dal menu progetto .
  19. Nell'elenco Riferimenti disponibili , fare doppio clic per selezionare TestProj e quindi fare clic su OK .
  20. Aggiungere un pulsante di comando alla maschera.
  21. Fare doppio clic su Command1 per aprire il codice di finestra.
  22. Aggiungere il codice seguente all'evento Command1_Click .
    Dim myObject As TestProj.COMClass1
    Set myObject = New TestProj.COMClass1
    MsgBox myObject.myFunction
  23. Scegliere Start dal menu di esecuzione .
  24. Fare clic sul pulsante comando.

    VerrÓ visualizzato un messaggio che visualizza 100.

Riferimenti

Per ulteriori informazioni, visitare il sito di Web di Microsoft:
InteroperabilitÓ con codice non gestito
http://msdn2.microsoft.com/en-us/library/sd10k43k(vs.71).aspx

ProprietÓ

Identificativo articolo: 817248 - Ultima modifica: lunedý 3 dicembre 2007 - Revisione: 6.7
Le informazioni in questo articolo si applicano a:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft .NET Framework 2.0
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
Chiavi:á
kbmt kbvs2005applies kbvs2005swept kbnamespace kbdll kbcominterop kbinterop kbautomation kbhowtomaster KB817248 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 817248
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com