NET Framework oferă un mediu de rulare (mediu CRJ), care rulează codul și oferă servicii care facilitează procesul de dezvoltare.
Compilatoare și alte instrumente vă permit să utilizați funcțiile CLR și permite dezvoltatorilor să scrie cod care beneficiază de acest mediu de execuție gestionat. Codul dezvoltat cu un compilator limbaj care accesează runtime este numit cod gestionat. Este nevoie de avantajul de instrumente, cum ar fi Asociația de limbaje de programare, de manipulare excepție Unite, o securitate îmbunătățită, suport pentru versionare și implementare, modelul simplificat al interacțiunii componentelor, și depanare și servicii de profilare.
Compilatoare și instrumente pot genera ieșire pentru Common Language Runtime (CLR), deoarece sistemul de tip, formatul de metadate și mediul de execuție (sistem de execuție virtuală) definește un standard deschis - infrastructura de ECMA Common Language. Pentru mai multe informații, a se vedea. Articolul ECMA C # și specificațiile comune de infrastructură Limba (Specificații pentru ECMA C # și infrastructura Common Language (CLI)).
Pentru a activa runtime pentru a furniza servicii de cod gestionat, compilatoare de limbă ar trebui să furnizeze metadate care descrie tipurile de membri și link-uri în codul. Metadatele sunt stocate cu codul. Acestea sunt conținute în fiecare fișier descărcabil executabil portabil (PE) CLR. Metadate în mediul de rulare utilizat pentru a localiza și clase de încărcare, introducerea de copii în memorie, rezoluția numele atunci când apelarea unor metode, crearea de cod de computer, de securitate, și a stabilit limitele de context timpul de execuție.
CRJ simplifică dezvoltarea de componente și aplicații ale căror obiecte pot lucra în diferite limbi. Obiectele sunt scrise în diferite limbi pot comunica între ele, iar comportamentul lor poate fi strâns integrate. De exemplu, un dezvoltator poate defini o clasă, iar apoi, în cealaltă limbă pentru a crea o clasă derivată din aceasta, sau pentru a apela o metodă din clasa originală. Puteți trece, de asemenea o metodă de exemplu în clasa scrisă într-o altă limbă. O astfel de integrare de caracteristici lingvistice datorită programării care compilatoare și programele lingvistice care fac apel la mediu de rulare, utilizează sistemul de tip comun definit de rulare, și să urmeze regulile runtime în momentul definirii unor noi tipuri, precum și crearea, utilizarea, păstrarea și obligatorii la tipuri.
Ca parte a metadatelor sale, toate componentele de gestionat conțin informații despre componentele și resursele, pe baza cărora acestea sunt construite. Runtime utilizează aceste informații pentru a se asigura că toate resursele necesare pentru o componentă sau o aplicație. Acest lucru reduce probabilitatea de defectare a codului oricărei dependențe nesatisfăcute. Informații cu privire la înregistrarea și informații de stare nu mai este stocat în registru, în cazul în care acestea sunt dificil să se stabilească și să mențină. In schimb, informații despre tipurile definite de dezvoltator (și dependențele lor) sunt stocate împreună cu codul sub formă de metadate, care simplifică foarte mult replicarea și îndepărtarea componentelor.
compilatoare și programe de limbi străine oferă funcții de execuție, astfel încât acestea au fost utile și intuitivă pentru dezvoltatori. Acest lucru înseamnă că o parte din fondurile de runtime pot fi vizibile într-un singur mediu decât în altul. Caracteristici de rulare depind de limbajul folosit de compilatoare și programe. De exemplu, dezvoltatorii Visual Basic pentru a lucra cu CLR poate observa că limbajul Visual Basic are mai multe caracteristici ale programării orientate pe obiecte decât oricând înainte. Runtime oferă următoarele beneficii:
capacitatea de a utiliza cu ușurință componentele dezvoltate în alte limbi;
tip expandabil, oferă o bibliotecă de clasă;
caracteristici lingvistice (de exemplu, moștenire, și de suprasarcină) interfețe pentru programarea orientată pe obiecte;
sprijin explicit pentru procesarea fluxului liber, care să permită o scalabile aplicații multi-threaded;
sprijin pentru manipulare excepție structurate;
suport pentru atribute personalizate;