Yhteinen kieli -infrastruktuuri (CLI) on joukko kansainvälisiä teknisiä standardeja, jotka edistävät tietokoneohjelmointikielien yhteentoimivuutta. CLI mahdollistaa myös monien korkean tason kielten kehittää sovelluksia, jotka ovat riippumattomia alustoista ja arkkitehtuureista. Tätä tarkoitusta varten on ryhmitelty yli 30 ohjelmointikieltä, jotka hyödyntävät neljää yleisten kielten ohjelmointierittelyjen ryhmää CLI -yhteensopiviksi.
Yhteisen tyyppisen järjestelmän (CTS) hyödyntäminen tietotyyppien ja toimintojen sekä ohjelmointirakenteiden metatietojen avulla mahdollistaa kieltenvälisen koodin kirjoittamisen. CLI kokoaa kielet yhteiseksi välikieleksi (CIL) ja välittää CIL: stä sovellusnäkökohdat kokoonpanokoneen kielelle, joka käsittelee laitteistoa. Lisäksi on olemassa yhteisiä kielimääritelmiä (CLS), jotka ovat perussääntöjä mille tahansa yhteentoimivuutta hakevalle kielelle, ja virtuaalinen suoritusjärjestelmä (VES) kaikkien CLI-yhteensopivien ohjelmien suorituskoodien lataamista, suorittamista ja luomista varten .
Useimmat CLI-yhteensopivat kielet kääntävät suoraan CIL: ään käyttämällä yleistä kielen suoritusaikaa (CLR). Kääntämisen ja välimuistin jälkeen juuri oikea-aikainen kääntäjä omistaa koneen koodin olemassa olevasta arkkitehtuurista. Kokoonpanokoneen rakenne voidaan myös rakentaa ennen CLR: ää etuaikaisen kääntäjän avulla.
Jotta CLI-yhteensopivat kielet voisivat hyödyntää objektispesifisyyttä, yhteinen kieli-infrastruktuuri määrittää, että objektien on vain paljastettava ominaisuudet, jotka niillä on yhteistä muiden CLI-yhteensopivien kielten kanssa, kun niitä kutsutaan. Koodin osien, jotka on kehitetty käyttämään vain CTS: ssä hyväksyttyjä tietotyyppejä, sanotaan olevan CLI-yhteensopivia ja kaikkien muiden CLI-yhteensopivien kielten käytettävissä. Lisäksi kaikki kielen rakenteet, joita koodin tyyppiturvallisuus ei voi nopeasti tarkistaa, jätetään CLS: n ulkopuolelle, joten vain todennettavissa olevien koodien voidaan sanoa olevan CLS -yhteensopivia.
Jotkut ohjelmointiominaisuudet ovat yhteisiä sekä kääntäjille että kehittäjille ja toiset vain kääntäjille. Luettelo on pitkä ja täynnä hyödyllisiä ominaisuuksia. Vain kääntäjille saatavilla oleva ominaisuus on: avainsanat, jotka toimittavat viittaavat tunnisteet ja jotka voivat ohittaa virtuaaliset menetelmät nimillä, jotka ovat avainsanoja. Sekä kääntäjien että kehittäjien käytettävissä oleva ominaisuus sisältää: muokkausominaisuudet, jotka sanovat, että ominaisuuden ja sen arvioijien on oltava “staattisia”, niiden on oltava “virtuaalisia” ja kaikkien on oltava “ilmentymä”.
Toteutusohjelmat ovat pöytäkoneille, palvelimille, mobiililaitteille ja pelikonsoleille. Tietokonenäön parantamisohjelmat ja matalan tason virtuaalikoneistot ovat myös kehitetty yhteisen kielen infrastruktuurin kanssa yhteensopivista kielistä. Yhteisen kielen infrastruktuurin käyttöajat allokoivat järjestelmäresursseja ja soittavat oheislaitteita tehokkaasti, vaikka ne ovat alustasta riippumattomia.