View Full Version : [c#] help! non ho capito alcune cose del .net framework e c#?
vittorio130881
08-09-2009, 08:18
ciao a tutti
volevo chiedervi cortesemente se potevate aiutarmi a capire come funzionano
le dll e gli assembly in c#. Ho provato a leggere i libri della hoepli e l'MSDN ma ho ancora molti dubbi. Partiamo dalle basi: che differenza c'è tra un assembly e una dll??? in particolare ho letto che un assembly può contenere una dll, un eseguibile ed altre cose..ma allora cosa è un assembly? è un programma (applicazione) compilato a se stante? o un'applicazione può contenere diversi assembly?
poi in c# importare un assmbly e importare una dll immagino avranno sintassi diverse? quali???
infine, anceh se credo di esagerare, un app. domain nel contesto assembly dll come si inserisce???
grazie in anticipo per la risposta....se non riesco a capirlo tramite voi credo che dovrò chiedere ad un informatico a pagamento immagino...
ciao!
tomminno
08-09-2009, 12:45
La prima risposta che mi verrebbe in mente è:
Assembly è un contenitore logico di codice .NET.
Un assembly non è necessariamente costituito da un file solo, le sue componenti interne possono essere splittate su file differenti, ma deve esistere un assembly principale che elenca tutti i file in cui sono contenute le sottoparti.
Dll è un estensione di comodo in cui è possibile impacchettare un assembly.
Dato che un assembly può essere contenuto anche all'interno di file .exe
Le estensioni chiaramente sono puramente indicative dato che nè una dll nè un exe .NET sono una dll o un exe in formato PE (quello standard Win32).
Un Assembly poi è costituito da uno o più Moduli, che contengono le informazioni sui tipi, ma in generale Visual Studio crea assembly con un singolo modulo.
Gli AppDomain sono contesti di esecuzione controllabili dal programmatore in cui puoi caricare un assembly dinamicamente e scaricarlo quando non ti serve più (una sottospecie di LoadLibrary)
vittorio130881
08-09-2009, 13:59
si ok ma come si importa un assembly?
devo fare un import per tutti i file ad esso collegati?
e che cambia tra importare il singolo file dll e non tutto l'assembly?
quindi se ho capito bene un'applicazione può contenere diversi assembly (ancora non ho capito bene come si collegano fra loro per creare un'unica applicazione) e ogni applicazione può essere fatta girare in un appdomain in modo che se due applicazioni fanno uso di due assembly coondivisi uguali, il loro codice viene importato una sola volta nello spazio degli indirizzi virtuali. ho capito bene????
Kralizek
08-09-2009, 14:39
in VS tu aggiungi il riferimento solo al file principale dell'assembly.
nel codice importi i namespace!
ps: VS crea diversi file per lo stesso assembly quando al suo interno ci sono risorse per diverse culture/lingue
vittorio130881
08-09-2009, 15:38
e come si fa ad aggiungere il riferimento al file principale?
con quiale comando c#???
l'using per i namespace lo conosco.
ma appunto per riferirsi agli assembly?
stesso modo per assembly exe e dll???
Kralizek
08-09-2009, 15:59
e come si fa ad aggiungere il riferimento al file principale?
con quiale comando c#???
l'using per i namespace lo conosco.
ma appunto per riferirsi agli assembly?
stesso modo per assembly exe e dll???
esatto
http://msdn.microsoft.com/en-us/library/wkze6zky(VS.80).aspx
vittorio130881
08-09-2009, 16:05
grazie!!!!
e invece il metodo assembly.load??? va bene anche questo???
prometto che non chiedo piu nulla!!! :)
ciao
Kralizek
08-09-2009, 16:13
i metodi Assembly.Load() o Assembly.LoadFile() servono di caricare dinamicamente un assembly. Da quel momento in poi puoi lavorare solo di Reflection.
Uno scenario d'uso comune per questi metodi è l'implementazione ed uso di AddIn.
Nel 99.99% dei casi l'aggiunta di un riferimento statico all'assembly è più che sufficiente :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.