Do they load all the program code into the memory on application startup?
No
Puoi avere Assemblee nel tuo progetto quanti ne hai bisogno. Gli assembly sono referenziati tramite la parola chiave using
. Gli assembly non utilizzati vengono filtrati al momento della compilazione stesso. Ad esempio, è possibile avere due assemblies di riferimento come:
using System.Windows.Forms;
using System.Web.UI.WebControls;
Se non hai usato assembly System.Windows.Forms
, ciò non influirà sulle prestazioni del tuo codice ma potrebbe influire sul tempo di compilazione e sulle prestazioni Intellisense.
Vedi questa domanda StackOverflow per gli usi non utilizzati .
Gli assembly di riferimento non vengono caricati immediatamente, ma vengono caricati al volo secondo necessità. Quindi, indipendentemente dal fatto che si abbia un riferimento all'assembly in un progetto di livello superiore, o un assembly dipendente di assiemi, gli assembly sono in genere caricati su una base necessaria, a meno che non siano caricati esplicitamente da codice utente Lo stesso vale per le assemblee dipendenti.
Vedi When viene caricata una dipendenza da assembly .NET per ulteriori informazioni.
[EDIT]
Le classi di ogni assembly vengono caricate solo quando vengono utilizzate. Non tutte le classi verranno caricate contemporaneamente nella memoria. Anche le classi statiche vengono caricate nella memoria principale al primo riferimento. Pertanto, la maggior parte delle classi non utilizzate nell'assembly non degraderà le prestazioni, ma aumenterà lo spazio su disco richiesto (non i requisiti di memoria).
Quindi la risposta semplice è NO .