Frameworks define the objects, methods, and tools that you use to create apps and libraries. The .NET Framework is used to create apps and libraries primarily for execution on systems running a Windows operating system. .NET Core includes a framework that allows you to build apps and libraries that run on a variety of operating systems.
The terms framework and platform are sometimes confusing given how they're used in phrases and their context. For example, you'll see .NET Core described as a framework in the context of building apps and libraries and also described as a platform in the context of where app and library code is executed. A computing platform describes where and how an application is run. Since .NET Core executes code with the .NET Core Common Language Runtime (CoreCLR), it's also a platform. The same is true of the .NET Framework, which has the Common Language Runtime (CLR) to execute app and library code that was developed with the .NET Framework's framework objects, methods, and tools.
The objects and methods of frameworks are called Application Programming Interfaces (APIs). Framework APIs are used in Visual Studio, Visual Studio for Mac, Visual Studio Code, and other Integrated Development Environments (IDEs) and editors to provide you with the correct set of objects and methods for development. Frameworks are also used by NuGet for the production and consumption of NuGet packages to ensure that you produce and use appropriate packages for the frameworks that you target in your app or library.
When you target a framework or target several of them, you've decided which sets of APIs and which versions of those APIs you'd like to use. Frameworks are referenced in several ways: by product name, by long or short-form framework names, and by family.
Referring to frameworks
There are several ways to refer to frameworks, most of which are used throughout the .NET Core documentation. Using .NET Framework 4.6.2 as an example, the following formats are used:
Referring to a product
You can refer to a .NET platform or runtime. Both are equally valid.
- .NET Framework 4.6.2
- .NET 4.6.2
Referring to a framework
You can refer to a framework or targeting of a framework using long- or short-forms of the Target Framework Moniker (TFM). Both are equally valid.
Referring to a family of frameworks
You can refer to a family of frameworks using long or short-forms of the framework ID. Both are equally valid.
Latest framework versions
The following table defines the set of frameworks that you can use, how they're referenced, and which version of the .NET Standard they implement. These framework versions are the latest stable versions. Pre-release versions aren't shown.
|Framework||Latest Version||Target Framework Moniker (TFM)||Compact Target Framework Moniker (TFM)||.NET Standard Version||Metapackage|
|.NET Core Application||1.1.1||.NETCoreApp,Version=1.1||netcoreapp1.1||1.6||Microsoft.NETCore.App|
A framework is typically referenced by a short TFM. A TFM value can represent one or multiple frameworks. The following table shows the frameworks supported by the .NET Core SDK and the NuGet client. Equivalents are shown within brackets (
|Windows Store||netcore||netcore [netcore45]|
|netcore45 [win, win8]|
|.NET Micro Framework||netmf||netmf|
|Windows Phone||wp||wp [wp7]|
|Universal Windows Platform||uap||uap [uap10.0]|
|uap10.0 [win10] [netcore50]|
The following frameworks are deprecated. Packages targeting these frameworks should migrate to the indicated replacements.
A number of frameworks are related to and compatible with one another but not necessarily equivalent:
|uap (Universal Windows Platform)||win81|
|win (Windows Store)||winrt|
The .NET Standard simplifies references between binary-compatible frameworks, allowing a single target framework to reference a combination of others. For more information, see the .NET Standard topic.
The NuGet Tools Get Nearest Framework Tool simulates the NuGet logic used for the selection of one framework from many available framework assets in a package based on the project's framework. To use the tool, enter one project framework and one or more package frameworks. Select the Submit button. The tool indicates if the package frameworks you list are compatible with the project framework you provide.
Portable Class Libraries
For information on Portable Class Libraries, see the Portable Class Libraries section of the Target Framework topic in the NuGet documentation. Stephen Cleary created a tool that lists the supported PCLs. For more information, see Framework Profiles in .NET.