$$ \newcommand\Tr{\mathrm{Tr}} \newcommand{\braket}[2]{\langle #1 \mid #2 \rangle} \newcommand\I{\mathbb{I}} \newcommand{\avg}[1]{\left< #1 \right>} \newcommand{\RD}{D} \newcommand{\ri}{\mathrm{i}} \DeclareMathOperator{\sign}{sign} \DeclareMathOperator{\Sign}{Sign} \newcommand{\ii}{\mathrm i} \newcommand{\vv}{\mathrm v} \newcommand{\ff}{\mathrm f} \newcommand{\mm}{\mathrm m} \newcommand{\ee}{\mathrm e} \newcommand{\xx}{\mathrm x} \newcommand{\RR}{\mathrm R} \newcommand{\dd}{\mathrm d} \newcommand{\FF}{\mathrm F} \newcommand{\BB}{\mathrm B} \newcommand{\vph}{v_{\mathrm{ph}}} $$

.NET Platform

There are three basic entities that make up .NET Platform:

  1. .NET Runtime
  2. CTS (Common Type System)
  3. CLS (Common Language Specification)

CTS (Common Type System)

CTS specifies all possible data type and programming constructs supported by .NET Runtime, how they interact each other as well as how they are represented in .NET metadata format.

CLS (Common Language Specification)

CLS specifies type system and programming constructs that is agreed by all languages in .NET. So, if we have new language run on .NET runtime and there is programming constructs that are not compliant with CLS then the language won’t be able to interact with other languages in .NET.

Difference between Managed and Unmanaged Code

Managed code refers to code whose execution is managed by .NET runtime. While unmanaged code is code that cannot be executed directly by .NET runtime.

How to Check the Highest Version of .NET SDK Installed in Our Machine

dotnet --version

How to display all installed .NET SDKs in our machine

dotnet --list-sdks

How to display all installed .NET runtimes in Our Machine

dotnet --list-runtimes

How to display complete information about .NET in our machine

dotnet --info

Above command will display all information about .NET:

  1. latest SDK installed
  2. runtime environment
  3. global.json file
  4. the host
  5. all .NET SDKs installed
  6. all .NET runtimes installed