2014-06-06 12 views
6

Nei file VBP, ci sono "Riferimenti" e "oggetti" come segue:intesa VB6 file di progetto (VBP)

Reference=*\G{D63E0CE2-A0A2-11D0-9C02-00C04FC99C8E}#2.0#0#..\..\..\WINDOWS\system32\msxml.dll#Microsoft XML, version 2.0 
Object={EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}#1.1#0; ieframe.dll 
  1. Quali sono le differenze tra questi due?
  2. Perché alcune DLL sono referenziate tramite Riferimento invece che Oggetto o viceversa?
  3. Dove si trova VB come percorso file per i riferimenti all'oggetto? I percorsi non sono specificati per loro nel VBP, né il GUID compare quando cerco il mio registro! Tuttavia, quando carico il progetto, VB prova a cercare la dll/ocx/etc. su un percorso assoluto (ad esempio C:\path\to\dll\ieframe.dll). Dove sta ottenendo questo percorso se non si trova nel registro o nel VBP ?!

risposta

5

Object s sono per i controlli ActiveX che di solito vengono compilati in file .ocx. Reference s sono per le librerie dei tipi generalmente compilate in file .dll o .tlb. Si noti che i file .ocx contengono anche typelib, quindi questa è una divisione molto incoerente e praticamente una legacy.

Percorsi e nomi di file sono facoltativi, gli ID dei tipi sono metodi canonici per risolvere la dipendenza. Solo se questi non si trovano nel registro esiste una strategia di risoluzione automatica che cerca i file nella cartella corrente solo per .ocxes. Questo comportamento più fastidioso si verifica anche in fase di esecuzione quando le applicazioni iniziano a registrare automaticamente le .ocx nella cartella corrente se non vengono trovati typelib e spesso falliscono nei sistemi operativi moderni per mancanza di permessi di scrittura in HKLM.

Ci sono anche le righe Object nei file di origine .frm/.ctl. Questi vengono aggiunti al progetto corrente se si aggiunge il modulo esistente/usercontrol.

Se una lettera di errore .ocx viene aggiunta come riga Reference, in genere l'IDE non riesce a caricare il progetto e è necessaria una modifica manuale.