De Common Language Runtime (CLR) is de virtuele machine van het Microsoft .NET-project. De CLR is gebaseerd op de Common Language Infrastructure-standaard (CLI-standaard), die een uitvoeringsomgeving voor programmacode beschrijft. De CLR draait een vorm van bytecode genaamd Microsoft Intermediate Language (MSIL), Microsofts implementatie van de Common Intermediate Language (CIL).
Ontwikkelaars die CLR gebruiken schrijven hun code in een zogenaamd hogere programmeertaal zoals C#, Scala of VB.NET. Tijdens het compileren zorgt een .NET-compiler ervoor dat de broncode wordt omgezet naar MSIL, die tijdens het uitvoeren door de just in time compiler van de CLR wordt gecompileerd naar code die uitgevoerd kan worden op het systeem waar de CLR op dat moment op draait.
Dit zorgt ervoor dat applicaties niet hardware afhankelijk zijn en dus op elk willekeurig systeem kunnen worden uitgevoerd, zolang er een CLR voor is. Door dit proces zijn applicaties wel (iets) trager omdat ze tijdens het uitvoeren gecompileerd worden. Een alternatief hiervoor is dat het compileren van MSIL-code naar machine-specifieke code vooraf wordt gedaan. Logischerwijs is hiermee de portabiliteit van de applicatie voor een groot deel verdwenen.
Hoewel er een aantal implementaties van de CLI beschikbaar is voor niet-Microsoft besturingssystemen, draait de CLR van Microsoft alleen op het eigen Windows besturingssysteem.
Zoals gezegd neemt het gebruik van een virtual machine een groot deel van de processor-specifieke details weg, wat een groot voordeel voor de programmeur is. Naast deze taak neemt de CLR onder andere de volgende taken van de programmeur (voor een groot deel) over: