2008-12-18 14 views
5

Nel mio posto di lavoro sono bloccato con Visual Basic 6, ma dopo aver letto la risposta a "How do I sort arrays using vbscript?" Ho avuto la mia speranza, che almeno alcune delle funzionalità VB6 mancanti possono essere integrate da funzionalità .NET. (Diversi tipi di collezioni, principalmente)Qual è il modo migliore per utilizzare le classi .NET da Visual Basic 6?

Sembra che almeno alcune classi .NET siano disponibili per lo scripting e possano essere utilizzate da VB6 a CreateObject. Ma ottengo un sentimento distinto da-per-essere-vero, quindi ...

  • Ci sono delle insidie ​​che potrei incontrare? (Oltre che .NET deve essere installato)
  • Tutte le classi .NET sono disponibili tramite CreateObject?
  • C'è un modo per importare tali classi nel mio progetto VB6, quindi posso avere IntelliSense?
  • Avete suggerimenti generali riguardo questo approccio?

risposta

0

È necessario utilizzare solo interoperabilità come meccanismo per spingere i dati tra i sistemi, non per il codice di logica principale; il successo in termini di prestazioni di tutto il marshalling ecc. sarà troppo. Ti suggerisco di utilizzare le varianti VB più recenti in VS2008, ecc. È un grande cambiamento, ma se puoi permetterti di fare il cambiamento, non te ne pentirai.

Personalmente, quando mi sono trasferito da VB6 sono passato a C#, ma tale decisione deve essere in base al contesto locale, ecc

+0

Giù vota tutto ciò che si desidera, ma l'utilizzo di raccolte .NET ecc. Come routine da VB6 * veramente * non è una buona idea. –

2

Dal lavoro sulla conversione per la mia azienda applicazione CAD/CAM. Non consiglio di andare dal basso verso l'alto sostituendo la DLL di base o aggiungendo funzionalità di base tramite .NET.

Ho ottenuto risultati molto migliori lavorando dall'alto verso il basso iniziando con la sostituzione di moduli e il passaggio alla DLL principale.

Il più grande ostacolo era fornire una stampante e un'interfaccia grafica adeguate. Ma il rilascio di Microsoft di un kit di compatibilità della stampante ha risolto entrambi i problemi. Fortunatamente quando .NET era solo un barlume all'orizzonte, ho inserito tutte le grafiche VB6 e le chiamate di stampa dietro un'interfaccia.

Ancora una volta iniziare sostituendo il formato con un assembly .NET chiamando le librerie principali COMM.

Se la logica è intrecciata con i moduli, consiglio vivamente di separarla in una nuova DLL COM IN VISUAL BASIC SIX. Avere la nuova DLL interagire con il modulo tramite un'interfaccia. Il modulo sarà una shell sottile che passa eventi alla DLL ed esegue varie operazioni (disegno, riorganizzazione, ecc.

Se non è possibile evitare l'utilizzo dell'assembly .NET per fornire nuove funzionalità, creare una serie di ben definiti e interfacce limitate per controllare l'interazione tra lato .NET e lato VB6/COM

Ad esempio, volevamo aggiungere software per ufficio/gestione del lavoro per il nostro settore alla gamma di software che vendiamo. il framework .NET.Doveva interagire con il nostro software CAD/CAM e così abbiamo creato una serie di interfacce in cui ognuno può raccogliere le informazioni necessarie o attivare l'azione l'una dall'altra.

Infine, se le classi .NET implementano interfacce COM, il grande trucchetto è che è necessario assicurarsi che tutti i parametri che fanno parte delle proprietà in COM debbano essere dichiarati ByVal o .NET non saranno in grado di implementare la proprietà e fallire per implementare l'interfaccia. Questo include il parametro valore di un Let o Set

1

Forse this è utile:

Utilizzando le informazioni disponibili molte delle classi presenti nel MS .NET mscorlib.dll sono stati riprodotti in Visual Basic 6 Questa NON è un'implementazione del runtime CLI, solo alcune delle classi unitlity presenti nel file della libreria mscorlib.dll.

Problemi correlati