Newsgroup: it.comp.lang.visual-basic
Titolo: Net, Dll e ASP normale..........


iQA/AwUBO/GLHYqtLIXc8TIfEQLwpgCg4Aaug5O0GAp8Z9+t81EOXJWq+G4AoKbF
WJcSmfAi2naBAzrgw54z8Aet
=FEge
-----END PGP SIGNATURE-----

 sbaglio a registrare la classe?
Semplicemente, la libreria che hai sviluppato è fatta per essere
utilizzata (senza alcuna registrazione) da altre applicazioni .NET
(programmi o pagine 
ASP.NET
). Per essere utilizzata da client COM
necessita di alcuni "ritocchi" nel codice. Qui troverai tutte le
informazioni a riguardo (attenzione che il link è su più righe):
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguidn
f/html/cpconexposingnetframeworkcomponentstocom.asp
Ciao.

errori a non finire.
Le Dll  .Net non hanno bisogno di essere registrate (finalmente!) ma le
informazioni che una volta erano contenute nella type library sono ora
esposte direttamente dalla dll (assembly) attraverso il relativo metadata,
ecco il perchè degli errori di regsvr32
Riguardo al tuo problema vero e proprio, premetto che non sono un esperto di
ASP, se il tuo scopo è quello di usare la dll in ASP.Net a questo punto puo
semplicemente (dalla tua applicazione 
asp.net
) settare un reference alla
dll, importare il namespace e creare un istanza con New.
In caso di ASP "Classica" credo che allora tu debba far vedere la tua Dll
.Net attraverso COM quindi
1-Crea la Dll dotnet
2-Nelle opzioni di progetto seleziona "Register for Com interop..." (o
qualcosa simile)
3-Lancia il Build (l'opzione precedente effettua la registrazione della DLL)
oppure usa regasm
4-Istalla la dll nella global assembly cache usando gacutil /i myDll.Dll
Se non funziona ancora, verifica che nel registry ci sia la ProgID
("MyDll.MyClass")
Do per scontato che il namespace della Dll sia MyDll...
Se dai un occhio a MSDN comunque cè scritto tutto, che poi sia facile
trovarlo è tutt'altra cosa...
HTH
Corrado


 trovarlo è tutt'altra cosa...
Già, è un casino cercare documentazione su questo, e anche per questo spero
nel vostro aiuto. Il link che mi è stato segnalato nel precedente post
sembra non essere corretto........
bye
Daniele (Neo)

 sembra non essere corretto........
Attenzione che, come avevo segnalato, il link è su due righe. Se cerchi di
aprire solo la prima parte dell'indirizzo non funzionerà mai.
Ciao.

Le assembly che vanno nella GAC devono avere uno strong name, nelle opzioni
del progetto devi aggiungere un file .snk che crei con l'utility sn.exe
(opzione -k) guarda in MSDN sotto la voce strong name.
Ciao
Corrado

Ok, grazie a tutti per l'aiuto, piano piano qualcosa sto
ottenendo..........non funziona nella pagina ASP ma le classi della Dll
vengono correttamente istanziate in vb6.
Il codice della semplice dll C# è
using System;
namespace NetTestDLL
{
 /// <summary>
 /// Summary description for Class1.
 /// </summary>
 public class Class1
 {
  public Class1()
  {
   //
   // TODO: Add constructor logic here
   //
  }
  public long Add(long num1,long num2)
  {
   return num1+num2;
  }
  public string test()
  {
   return "Stringa di prova";
  }
 }
}
Quindi la Dll in questione ha due metodi, uno test che restituisce una
stringa e uno Add che fa l'addizione di due numeri. Nel progetto VB6, dopo
aver aggiunto il riferimento alla Dll, accedo ai metodi con il seguente
codice
dim objDll as NetTestDll.Class1
set objDll=new NetTestDll.Class1
msgbox objDll.test
Ora ho altri due problemi:
1) perchè VB6 non mi aiuta sulla sintassi degli oggetti che sto usando,
ovvero perchè quando scrivo objDll. VB6 non mi tira fuori tutti i metodi e
le proprietà dell'oggetto objDll?
2) con il msgbox riesco tranquillamente a visualizzare il risultato del
metodo test() mentre se faccio
msgbox objDll.Add(12,30)
ottengo "Tipo non corrispondente"
Stessa cosa se faccio
dim a as long
a=objDll.Add(clng(10),clng(20))
msgbox cstr(a)
Avete qualche consiglio?

 metodo test() mentre se faccio...
I tipi in dotnet sono diversi da quelli di VB, un long dotnet è 64 bytes,
prova ad usare nella
classe C#, integer al posto di long.
HTH Corrado

 classe C#, integer al posto di long.
Ok non ero al corrente di questa cosa, grazie....:)