.NET Core - What do all the versions mean?

DRAFT This article contains best guesses... help wanted. Tweet help to @dicshaunary.

Things that have versions

  • Runtime. The main ones are .NET Core, .NET Framework, and Mono.
  • .NET Core The cross-platform runtime.
  • .NET Framework...
  • Mono...
  • .NET Core Shared Framework (fx) Host. Dunno?!?
    • host framework (fx) resolver
    • github.com/dotnet/core-setup/tree/release/1.1.0/src/corehost/cli/fxr
  • .NET Standard. A set of APIs that runtimes implement.
  • Command Line Interface (CLI). Let us run SDK commands from a shell.
  • Software Development Kit (SDK). Allows us to build projects.

Versions inside the SDK install

When we install SDK version 1.0.1 we receiving these versions:

.NET Core Runtime                     1.0.4 and 1.1.1
.NET Core Shared Framework Host       1.1.0
Command Line Interface                1.0.1  
Software Development Kit              1.0.1  
.NET Standard                         ?

Research (unanswered) questions

  • Are version 1.1.0 and version 1.1 equivalent?
  • How do versions of things that have versions relate to each other?
  • What does the .NET Core 1.0.1 SDK install?
  • Are corefx and ".NET Core Shared Framework Host" synonyms?

Research

When we install the .NET Core SDK 1.0.1 we receive a new listing in Programs and Features: .NET Core SDK 1.0.1 (x64). We also receive the following directory structure (some items omitted):

C:\Program Files\dotnet\  
  host\fxr\1.1.0\
  sdk\1.0.1\
  shared\Microsoft.NETCore.App\
    1.0.4\
    1.1.1\
  dotnet.exe

host

  • contains the "Microsoft .NET Core Shared Framework Host"
  • we see its version when we run dotnet

sdk

  • contains what we need to build projects
  • dotnet CLI operations calls into this
  • try renaming it to sdk.bak and running any dotnet command
  • we see its version when we run dotnet --version or dotnet --info

shared

  • contains two versions of the .NET Core runtime:
  • 1.0.4 is the long-term support (LTS);
  • 1.1.1 is the current version.

dotnet.exe

  • this is the command line interface.
  • it forwards its commands to the SDK.

Some articles we've read