هر برنامه ای که بر مبنای دات نت تعریف می شود از سه قسمت مهم و اصلی تشکیل شده است: اسمبلی، ماژول و تایپ.
هر برنامه ای که بر مبنای NET. تعریف می شود از سه قسمت مهم و اصلی تشکیل شده است: Assemblies ، Modules و Types . اسمبلی ها اصلی ترین جز برای انتقال برنامه های NET. هستند (Deployment). ماژول ها فایلهایی هستند که اسمبلی از روی آنها ساخته می شود و تایپ ها، واحد های پایه برای تعریف داده ها، property ها و توابع هستند.

اسمبلی ها:
اسمبلی تشکیل شده از manifest و یک یا چند فایل ماژول، XML یا HTML.

Manifest نیز دارای اجزای زیر است:

• اطلاعاتی درباره خود اسمبلی که به صورت text ذخیره شده است. نمونه این اطلاعات، نام، ورژن، عمومی یا غیر عمومی بودن اسمبلی و ... است.
• نوع حفاظتی اسمبلی را توضیح می دهد. هر اسمبلی می تواند برای اجرا شدن نوع خاصی از لایه امنیتی داشته باشد که بر سه نوع است: Required ،Optional و Denied.
• اطلاعاتی درباره اسمبلی های دیگر که یک اسمبلی به آنها وابسته است از قبیل نام و نسخه آنها.
• اطلاعاتی از قبیل زبان محلی اسمبلی، تاریخ، واحد پول و غیره.

ماژول ها:
ماژول ها یا فایلهای DLL هستند یا فایلهای EXE Windows PE (Portable Executable) که حاوی IL ، Meta Data و به صورت اختیاری دارای manifest می باشد. هر اسمبلی فقط یک manifest می تواند داشته باشد، بنابراین اگر ماژولی حاوی manifest نیز بود فقط همان ماژول است که manifest دارد. CLR دو روش برای کامپایل هر فایل IL دارد، یکی install-time است که در زمان نصب برنامه فعال می شود و دیگری JIT یا کامپایلر just-in-time که به صورت method by method برنامه را کامپایل می کند. یعنی هنگامی که برنامه هر متد را صدا می زند کامپایل هم می شود . به صورت عادی برنامه ها به روش JIT کامپایل می شوند. Meta Data حاوی اطلاعات بیشتری درباره تعریف تایپ ها می باشد و به صورت IL است.

تایپ ها:
تایپ ها دو نوع هستند، Value و Reference . هر تایپ دارای property ، method و field است.