Buona sera a tutti
Riesumo questa discussione perchè sto letteralmente impazzendo...

Ho una applicazione VB.NET 2005 "Server" che passa dei dati ad una applicazione Client.
L'applicazione Client può essere un'applicazione VB ed ho bisogno quindi di creare un oggetto COM.
Le strutture passate sulla rete tra le due applicazioni, devono essere (ovviamente) uguali e sono dichiarate in una classe che si chiama "Comuni".
La classe Comuni utilizzata all'interno dell'applicazione VB.NET non può essere la stessa utilizzata dall'applicazione VB6...primo perchè mentre la "Comuni" di VB.net è una classe standard, la "Comuni" VB6, deve essere compilato come oggetto COM e secondo, perchè potrei avere la necessità in futuro che non tutto quello che viene passato all'applicazione .Net, venga passato anche all'applicazione VB6 (comunque al momento il codice all'interno, è identico).
Mi trovo quindi con la "Comuni" utilizzata dalla parte Server VBNET che ha versione 2.6.0.0 e la "Comuni" VB6 che ha versione 1.0.2.2.

Succede una cosa veramente strana (a mio avviso)...
Una volta compilata la dll Comuni da utilizzarsi con VB6 e generato il file Tlb, entro nei riferimenti del progetto e mi carico il riferimento al file, poi, premo il "Play" per debuggare l'applicazione e, quando l'applicazione tenta di Deserializzare una struttura inviata dalla parte Server, mi viene generato l'errore "Impossibile trovare l'assembly 'Comuni, Version=2.6.0.0'...". Sembra quasi che la struttura passata via rete, contenga le informazioni di quale DLL l'ha serializzata (la dll server versione 2.6.0.0) e quando, VB6 tenta di deserializzarla con una DLL uguale, ma con versione diversa (la dll VB6 1.0.2.2), generi un errore.

La cosa ancor più strana però è questa...
Se io, invece di eseguire l'applicazione VB6 in debug, la compilo, copio la dll e il tlb all'interno della cartella del progetto e lancio l'exe...l'applicazione funziona correttamente
Ovviamente, ho provato anche ad eseguire il VB6 in debug con la dll e il tlb nella directory del progetto ma non funziona comunque.

Ho notato una cosa...siccome la DLL ha al suo interno delle funzioni che scrivono su di un file di log nella stessa routine dove si trova la DLL, ho notato che:
-Quando lancio l'applicazione VB6 in debug, viene utilizzata la DLL presente nella cartella "Release" del progetto COM VBNET
-Quando lancio l'exe dell'applicazione VB6, viene utilizzata la DLL copiata manualmente nella cartella del progetto (nonostante tra un tentativo e l'altro non venga eseguita alcuna registrazione con RegAsm o altro)

A me, potrebbe anche andare bene che per provare l'applicazione debba compilare l'exe ogni volta ma purtroppo, ho la necessità di utilizzare la dll anche all'interno di un Database Access (con VBA). Con quest'ultimo, nonostante io esegua il "Compila" di VBA oppure crei il Database.accde (mde), va sempre ad utilizzare la DLL del progetto COM VB.NET e quindi non funziona.

Qualche idea?
Grazie infinite