Disclaimer: I am a consultant at Amazon Web Services, and this is my personal blog. The opinions expressed here are solely mine and do not reflect the views of Amazon Web Services (AWS). Any statements made should not be considered official endorsements or statements by AWS.
The primary goal of this post is to clarify the meanings of selected terms and acronyms that appear frequently in the .NET documentation.
A set of libraries that comprise the
System.* (and to a limited extent
Microsoft.* ) namespaces. The BCL is a general purpose, a lower-level framework that higher-level application frameworks, such as ASP.NET Core, build on.
The following terms often refer to the same collection of APIs that BCL refers to:
Both .NET Framework and .NET 5 (and .NET Core) and later versions have a different set of base class libraries that works as a lower-level framework. Other higher-level application frameworks such ASP.NET Core, WCF, LINQ, Entity Framework, etc. consider this BCL as their base, and they build on top of it.
An implementation of .NET that runs only on Windows. This includes the following:
A cross-platform, high-performance, open-source implementation of .NET. Also referred to as .NET 5+. This includes the following:
You can download the .NET runtime or other runtimes, such as the ASP.NET Core runtime. A runtime in this usage is the set of components that must be installed on a machine to run a framework-dependent app on the machine.
The .NET runtime includes the CLR and the .NET shared framework, which provides the BCL.
The .NET Runtime contains just the components needed to run a console app. Typically, you'd also install either the ASP.NET Core Runtime or .NET Desktop Runtime.
Applications you create with .NET can be published in two different modes, and the mode affects how a user runs your app.
Publishing your app as self-contained produces an application that includes the .NET runtime (CoreCLR and shared framework assemblies), your application and its dependencies. Users of the application can run it on a machine that doesn't have the .NET runtime installed.
Publishing your app as framework-dependent produces an application that includes only your application itself and its dependencies. Users of the application have to separately install the .NET runtime.