Zatímco dosud moc nezáleží na tom, jestli je aplikace napsaná v C++ nebo v C#, Windows 8 nám začíná ukazovat, že využití multiplatformního frameworku zabudovaného v přímo v operačním systému dává velký smysl. Jen aplikace v .NET totiž půjde spustit na všech třech platformách, které Windows 8 podporuje. Aplikace v C++ se sice může překompilovat, musí tak ale učinit i výrobci knihoven třetích stran, které aplikace využívá.
Windows 8 běží i na procesorech architektury ARM, která se v hojné míře používá v přenosných kapesních počítačích. Stejně jako se liší architektury procesoru Itanium, AMD64 a ARM, liší se i jejich instrukční sady. Aplikace v C++ se tedy musí kompilovat cíleně na jednu z nich. Potíž není ani v tom, že by aplikace nešla překompilovat pro jinou instrukční sadu. Potíž nastává ve chvíli, kdy z nějakých důvodů není k dispozici překompilovaná knihovna, kterou spravuje někdo jiný.
Podobné problémy nastaly už v minulosti a řešením byla abstrakce nad instrukční sadou, které se říká MSIL. Do tohoto instrukčního jazyka se překládají všechny vyšší jazyky platformy .NET jako například C# nebo PHP. JIT překládá MSIL do konkrétní instrukční sady procesoru. Veškeré knihovny, které jsou zkompilovány do MSIL, jsou tedy multiplatformní. Výjimku tvoří pouze případy, kdy assembly volá nějaké jiné knihovny, které jsou platformě závislé.
Nastávají případy, kdy se nabízí více instrukčních sad a aplikace funguje jen v jedné z nich. Například kompilace pro AMD64 na 64bit Windows se může provést jak do x86-32, tak i do x86-64. V případě x86-32 se využije emulátor WOW64, který zajišťuje běh nativních 32bit aplikací na 64bit operačním systému. Aplikace tak může volat 32bitové nativní knihovny. Proto se dá do assembly vložit příznak, který vyžaduje kompilaci pro konkrétní instrukční sadu. To se v praxi využívá pro vynucení běhu .NET aplikace na 64bitových Windows v 32bitovém režimu. Knihovny, které mají příznak nastaven špatně či zcela zbytečně, se dají snadno upravit pomocí nástroje CorFlags.