در مورد کد های مدیریت شده ، .Net Framework شامل دو جزء اصلی هست:
1- common language runtime یا همان CLR
.NET Framework class library - 2
CLR بخشی هست که اعمالی مثل مدیریت حافظه ، اجرای کد ها و thread ها ، حفظ امنیت کدها و کامپایل آن ها و سایر سرویس های سیستمی را انجام می دهد.
class library همان بخش اصلی .Net برای تولید نرم افزار ها با رابط گرافیکی کاربری (GUI) ، نوشتن برنامه های کنسول ، XML ، ASP.NET و غیره هست.
وقتی گفته می شود کدهای مدیریت شده مستقل از پلتفرم هست یعنی اینکه هر جایی که CLR وجود داشته باشد امکان اجرای آن وجود دارد، به این شکل:
ابتدا آن ها باید به زبان میانی مایکروسافت (MSIL) کامپایل شوند و سپس در هنگام اجرا از طریق کامپایلر JIT / just-in-time به کد های Native سیستمی ترجمه شوند که کدهایی مختص CPU هستند و از آنجایی که CLR از طریق کامپایلر JIT همه پردازنده ها را پشتیبانی و پیاده سازی کرده است پس می توانید برنامه هایی بنویسید که در همه کامپیوترها با ساختار معماری مختلف اجرا شود.
اما این موضوع مهمی است که تا کنون درهمین حد تبلیغاتی باقی مانده است، چرا که اگر در کدهای مدیریت شده از API های Native سیستم عامل یا کتابخانه های مختص آن سیستم عامل استفاده کنید (از جمله class library .NET که چاره ای نیست و باید از آن ها استفاده کرد) لذا برنامه مدیریت شده فقط در همان سیستم عامل قابل اجرا شدن می باشد و تنها راهی که وجود دارد این است که همه شرکت ها یک لیسانس از مایکروسافت با هزینه های بسیار بالا برای کتابخانه های .Net دریافت کنند تا برنامه های نوشته شده در ویندوز که از همان class library استفاده کرده است بتواند در سایر کامپایلرها نیز اجرا و یا کامپایل شود که تا کنون شرکتی این کار را نکرده است و فقط برخی از شرکت ها به شبیه سازی آن اقدام کرده اند.
توجه کنید که CLR و C# استاندارد جهانی هستند و نیاز به خرید ندارند و هر کسی با دریافت استاندارد ها، می تواند کامپایلر آن را پیاده سازی کند ویا حتی زبان خود را نیز مبتنی بر CLR ارائه کند تا از قابلیت های دات نت بهره مند شود. پس بخش مشکل ساز، بخش class library می باشد که تا کنون مختص ویندوز بوده است.