Utilizzare DLL v6 in .NET C#

lunedì 30 aprile 2012 - 09.54
Tag Elenco Tags  C#  |  .NET 4.0  |  Visual Studio 2010

franklin Profilo | Newbie

Salve a tutti, ho una DLL che viene utilizzata con successo in un ambiente di sviluppo che è VB 6.0. Ora ho cambiato ambiente e sono passato .NET C# utilizzando visual studio 2010. sto facendo la stessa applicazione che facevo in vb 6.0 e quindi voglio utilizzare la stessa DLL che utilizzavo prima. ho registrare la DLL con REGSVR32 e ho cercato anche di utilizzare regasm ma da un errore: Error RA0000: Impossibile caricare 'C\Windows\System32\nome.dll' : non è un assembly .NET valido.
Come posso utilizzare questa DLL??? Sbaglio qualcosa???

freeteo Profilo | Guru

Ciao Franklin,
non devi usare regasm, quell'applicativo registra un assembly .net nella GAC (Global Assembly Cache) ossia se vogliamo farla un po' "sempliciotta", è una sorta di "regsvr32" per l'ambiente .net.
Nel tuo caso invece, devi referenziare la tua dll in vb6 da dentro al tuo progetto, in Visual Studio, facendo tasto Dx sul nodo del tuo progetto->add reference->COM, appunto perchè in ambiente vb6 si tratta sempre di componenti COM e l'ambiente di sviluppo ti permette tranquillamente di usarli.
Quello che viene fatto dietro alle quinte è la creazione di un "wrapper" .net all'assemlby creato in ambiente COM (vb6, c++ etc...) ed utilizzato poi dentro al tuo codice tramite intellisense come se fosse un oggetto .net che di fatto è appunto il wrapper creato.

Quest'ultimo si occupa di chiamare in maniera corretta il tuo componente...ho fatto proprio un super riassunto della cosa, ma diciamo che se non ti interessa approfondire ma ti limiti a voler utilizzare il componente, ti basta sapere questo.

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

franklin Profilo | Newbie

ho fatto come dici tu, ma il problema è che mi da errore, mi dice che l'assembly o l'oggetto COM non è valido, di solito quando mi dava questo errore è perchè sbagliavo dll da aggiungere al progetto, ma ora ho solo questa e devo assolutamente usarla.... e poi se viene usata con successo in ambiete vb 6 non vedo il perchè in dot net c# non posso usarla...

freeteo Profilo | Guru

Ciao,
ma tu la registri con regsvr32 o con quello a 64bit?

Se puoi magari mandami la dll via email matteo@questosito e vedo di fare qualche prova anche io...
Grazie.

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

franklin Profilo | Newbie

Ciao,
avete risolto questo problema??? perchè si è presentato anche a me. come avete risolto?
Grazie

freeteo Profilo | Guru

Ciao Franklin,
mi hai mandato il file via email per provare? Ad oggi non mi sembra di aver ricevuto qualcosa...forse ho perso la mail

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5