Takie rozwiązanie nastręcza wielu problemów, a głównymi z nich są: nieprzenośność programów między różnymi procesorami lub niewykorzystywanie przez aplikacje wszystkich możliwości procesora, nieprzenośność aplikacji między wersjami systemu ze względu na różnice w zestawie i działaniu funkcji z zestawu API. Microsoft postanowił rozwiązać ten problem, stosując rozwiązania podobne do zastosowanego w Javie: kompilatory kompilują kod źródłowy do postaci uniwersalnego kodu zwanego kodem pośrednim (nazywa się on obecnie CIL – wcześniej zaś nazywany był ), metoda klasy jest kompilowana do kodu maszynowego w momencie pierwszego wywołania, kolejne wywołania metody prowadzą już bezpośrednio do skompilowanego kodu. Jest to realizowane przez dołączenie do każdej metody w czasie ładowania modułu tymczasowego fragmentu kodu (), który przekazuje sterowanie do kompilatora i jest następnie zastępowany przez skompilowany kod. Jest to tzw. kompilacja w locie (ang. ). Dostępna jest także możliwość skompilowania całego modułu w trakcie instalacji. Przy okazji przebudowano biblioteki klas ułatwiające dostęp do elementów systemu.
Źródło i licencja
Fragment artykułu Wikipedia — .NET Framework · historia autorów.
Tekst: CC BY-SA 4.0. Wydzielono fragment z dłuższego artykułu.