23 messaggi dal 21 agosto 2004
Ciao,
ho bisogno di creare una DLL in .NET (che utilizzera' un web service) che poi andra' usata in normali pagine ASP che al momento non e' possibile convertire per questione di tempo.
Ho creato un progetto di prova del tipo "Class Library" con VB, e aggiunto un namespace/classe/metodo di prova.
Quando pero' cerco di registrare la DLL cosi' creata con REGSVR32 nomedll.dll, ottengo l'errore: [..] but the DLLRegisterServer entry point was not found.

Che significa? Come posso utilizzare una DLL creata con .NET, in pagine ASP?
Un grandissimo grazie a chi sapra' aiutarmi :)
Gli assembly .NET non possono essere usati come librerie COM. Sono due cose profondamente diverse. Ti devi creare piuttosto una type library a partire da un aassembly di una class library .NET.

Visual Studio può generare automaticamente le informazioni della type library e può registrare un assembly relativo ad una class library .NET affinchè possa essere usato in un contesto COM.

In alternativa esiste il tool da linea di comando tlbexp.exe con cui è possibile ottenere da un assembly .NET una type library COM.

Attenzione però che questa cosa non funziona con le applicazioni Web ASP.NET. La soluzione è isolare il codice che si vuole usare in contesto COM dentro alla class library .NET.

Ciao, Ricky.
Modificato da rickyvr il 12 luglio 2005 14.03 -

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
pcapirci mi scrive:

Una precisazione: la soluzione che proponevi non funziona in ASP.NET come tu scrivi, o in ASP come chiedeva chi aveva postato nel forum?
E se questa strada è negativa, in pratica cosa vuol dire:
isolare il codice che si vuole usare in contesto COM dentro alla class library .NET?


In ASP 3.0 si possono usare oggetti COM (ci mancherebbe): del resto è l'essenza dell'architettura DNA.

Quello che intendevo dire è questo: per utilizzare un assembly .NET come componente COM occorre trasformarlo in type library. I due contesti sono diversi, per tutta una serie di motivi a partire dal modello di threading fino alla gestione della memoria e dei tipi (marshaling).

Quello che si può fare è questo: condensare il codice applicativo da usare in contesto COM (solo quello) dentro ad un assembly .NET separato e trasformarlo in type library. In questo modo avremo un componente da poter utilizzare anche in un contesto ASP Classic.

Ricordo a tutti in ogni caso di postare sul forum per richieste di chiarimenti. La risposta potrebbe essere utile anche ad altre persone.

Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.