Target Frameworks

As the .NET ecosystem has grown, so too has the list of frameworks and dependencies that NuGet supports. The frameworks that can be included and referenced by a NuGet package tracks closely with the list of available .NET framework versions and flavors that support all of the devices and systems the .NET framework can be used on.

Target frameworks can be referenced from three places:

  • nuspec manifest

    • You can find a target framework referenced in the dependencies on the group elements to indicate which packages should be referenced when the package is installed into different projects.
  • nupkg folder name

    • The folders inside of the base package lib folder are named after the target frameworks that the contents support. The DLLs and other content that support these framework version should be placed here.
  • project.json frameworks node.

    • This node specifies the framework versions that the project should be compiled against for project systems that use project.json (ASP.NET 5 and UWP currently).

A framework is typically referenced by a short name, called a "Target Framework Moniker" or TFM. With the advent of the new Platform Standard, the concept of 'TFM' has been abstracted to 'TxM' since the Platform Standard references multiple frameworks abstractly.

The source code from the NuGet clients that is used to calculate these tables can be found at:

This table is current for NuGet v3.3 (December 2015)

Supported Frameworks

The official NuGet clients support the frameworks listed below, with the equivalence indicators provided:

Name Abbr Description
.NET Framework net Standard .NET BCL on Windows Desktop and Server.
  • net11
  • net20
  • net35
  • net40
  • net403
  • net45
  • net451
  • net452
  • net46
  • net461
.NET Core netcore .NET Core Framework used in Windows Store Development
  • netcore (equivalent to netcore45)
  • netcore45 (equivalent to win8)
  • netcore451 (equivalent to win81)
  • netcore50
.NET MicroFramework netmf Support for [.NET MicroFramework](http://netmf.github.io/) projects
Windows win Frameworks to support Windows Store Development
  • win (equivalent to win8)
  • win8 (equivalent to netcore45)
  • win81 (equivalent to netcore451)
  • win10 -- not supported by Windows 10 Platform
Silverlight sl Support for the Silverlight frameworks
  • sl4
  • sl5
Windows Phone wp Windows Phone application support
  • wp (equivalent to wp7)
  • wp7
  • wp75
  • wp8
  • wp81
  • wpa81
DNX dnx ASP.NET server-side framework support (Windows only)
  • dnx (equivalent to dnx45)
  • dnx45
  • dnx451
  • dnx452
DNX Core dnxcore Core CLR framework support
  • dnxcore (equivalent to dnxcore50)
  • dnxcore50
Universal Windows Platform uap Support for Windows 10 Universal Application Platform
  • uap (equivalent to uap10)
  • uap10
Deprecated Frameworks aspnet50
aspnetcore50
winrt

Precedence

For a number of these frameworks, they are related to each other. Not necessarily equivalent, but there is compatibility that can allow binary content to run on other platforms. The compatibility matrix that NuGet uses is described below.

  • Universal Windows Platform (uap) can use the following content
    • Win81
    • WPA81
    • NetCore50
  • Windows Store (win) can use the following content
    • winrt
    • winrt45

Portable Class Libraries

In an effort to make development of libraries that work across multiple platforms easier, the .NET framework supports Portable Class library development. These libraries can be used across binary compatible frameworks, and need to be referenced as such when constructing a NuGet package.

To define a target framework that refers to multiple child-target-frameworks, the portable keyword shall be used to prefix the list of frameworks that are referenced. We recommend that you do not artificially include extra frameworks that are not directly compiled against as this could lead to unintended side-effects in those frameworks.

There are additional frameworks that are defined by third parties that provide compatibility with other environments that are accessible in this manner. Additionally, there are shorthand profile numbers that are available to reference these combinations of related frameworks as Profile#, but this is not a recommended practice to use these numbers as it reduces the readiblity of the folders and nuspec.

The following table outlines the list of portable framework monikers that are identified by the official NuGet clients. This table is current for NuGet v3.3 (December 2015)

The source code from the NuGet clients that is used to calculate these tables can be found at on GitHub in DefaultPortableFrameworkMappings.cs

Profile # Frameworks Full name Platform Standard
Profile2 .NETFramework 4.0
Windows 8.0
Silverlight 4.0
WindowsPhone 7.0
portable-net40+win8+sl4+wp7
Profile3 .NETFramework 4.0
Silverlight 4.0
portable-net40+sl4
Profile4 .NETFramework 4.5
Silverlight 4.0
Windows 8.0
WindowsPhone 7.0
portable-net45+sl4+win8+wp7
Profile5 .NETFramework 4.0
Windows 8.0
portable-net40+win8
Profile6 .NETFramework 4.0.3
Windows 8.0
portable-net403+win8
Profile7 .NETFramework 4.5
Windows 8.0
portable-net45+win8 dotnet5.2
netstandard1.1
Profile14 .NETFramework 4.0
Silverlight 5.0
portable-net40+sl5
Profile18 .NETFramework 4.0.3
Silverlight 4.0
portable-net403+sl4
Profile19 .NETFramework 4.0.3
Silverlight 5.0
portable-net403+sl5
Profile23 .NETFramework 4.5
Silverlight 4.0
portable-net45+sl4
Profile24 .NETFramework 4.5
Silverlight 5.0
portable-net45+sl5
Profile31 Windows 8.1
WindowsPhone 8.1
portable-win81+wp81 dotnet5.1
netstandard1.0
Profile32 Windows 8.1
WindowsPhone 8.1
portable-win81+wpa81 dotnet5.3
netstandard1.2
Profile36 .NETFramework 4.0
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0
portable-net40+sl4+win8+wp8
Profile37 .NETFramework 4.0
Silverlight 5.0
Windows 8.0
portable-net40+sl5+win8
Profile41 .NETFramework 4.0.3
Silverlight 4.0
Windows 8.0
portable-net403+sl4+win8
Profile42 .NETFramework 4.0.3
Silverlight 5.0
Windows 8.0
portable-net403+sl5+win8
Profile44 .NETFramework 4.5.1
Windows 8.1
portable-net451+win81 dotnet5.3
netstandard1.2
Profile46 .NETFramework 4.5
Silverlight 4.0
Windows 8.0
portable-net45+sl4+win8
Profile47 .NETFramework 4.5
Silverlight 5.0
Windows 8.0
portable-net45+sl5+win8
Profile49 .NETFramework 4.5
WindowsPhone 8.0
portable-net45+wp8 dotnet5.1
netstandard1.0
Profile78 .NETFramework 4.5
Windows 8.0
WindowsPhone 8.0
portable-net45+win8+wp8 dotnet5.1
netstandard1.0
Profile84 WindowsPhone 8.1
WindowsPhone 8.1
portable-wp81+wpa81 dotnet5.1
netstandard1.0
Profile88 .NETFramework 4.0
Silverlight 4.0
Windows 8.0
WindowsPhone 7.5
portable-net40+sl4+win8+wp75
Profile92 .NETFramework 4.0
Windows 8.0
WindowsPhone 8.1
portable-net40+win8+wpa81
Profile95 .NETFramework 4.0.3
Silverlight 4.0
Windows 8.0
WindowsPhone 7.0
portable-net403+sl4+win8+wp7
Profile96 .NETFramework 4.0.3
Silverlight 4.0
Windows 8.0
WindowsPhone 7.5
portable-net403+sl4+win8+wp75
Profile102 .NETFramework 4.0.3
Windows 8.0
WindowsPhone 8.1
portable-net403+win8+wpa81
Profile104 .NETFramework 4.5
Silverlight 4.0
Windows 8.0
WindowsPhone 7.5
portable-net45+sl4+win8+wp75
Profile111 .NETFramework 4.5
Windows 8.0
WindowsPhone 8.1
portable-net45+win8+wpa81 dotnet5.2
netstandard1.1
Profile136 .NETFramework 4.0
Silverlight 5.0
Windows 8.0
WindowsPhone 8.0
portable-net40+sl5+win8+wp8
Profile143 .NETFramework 4.0.3
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0
portable-net403+sl4+win8+wp8
Profile147 .NETFramework 4.0.3
Silverlight 5.0
Windows 8.0
WindowsPhone 8.0
portable-net403+sl5+win8+wp8
Profile151 .NETFramework 4.5.1
Windows 8.1
WindowsPhone 8.1
portable-net451+win81+wpa81 dotnet5.3netstandard1.2
Profile154 .NETFramework 4.5
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0
portable-net45+sl4+win8+wp8
Profile157 Windows 8.1
WindowsPhone 8.1
WindowsPhone 8.1
portable-win81+wp81+wpa81 dotnet5.1
netstandard1.0
Profile158 .NETFramework 4.5
Silverlight 5.0
Windows 8.0
WindowsPhone 8.0
portable-net45+sl5+win8+wp8
Profile225 .NETFramework 4.0
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1
portable-net40+sl5+win8+wpa81
Profile240 .NETFramework 4.0.3
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1
portable-net403+sl5+win8+wpa81
Profile255 .NETFramework 4.5
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1
portable-net45+sl5+win8+wpa81
Profile259 .NETFramework 4.5
Windows 8.0
WindowsPhone 8.1
WindowsPhone 8.0
portable-net45+win8+wpa81+wp8 dotnet5.1
netstandard1.0
Profile328 .NETFramework 4.0
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1
WindowsPhone 8.0
portable-net40+sl5+win8+wpa81+wp8
Profile336 .NETFramework 4.0.3
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1
WindowsPhone 8.0
portable-net403+sl5+win8+wpa81+wp8
Profile344 .NETFramework 4.5
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1
WindowsPhone 8.0
portable-net45+sl5+win8+wpa81+wp8

Additionally, there are optional frameworks provided by Xamarin that are supported by the official NuGet clients. More details about these frameworks are available from Xamarin.

Name Description .NET Platform Standard
monoandroid Mono Support for Android OS dotnet5.5
netstandard1.4
monotouch Mono Support for iOS dotnet5.5
netstandard1.4
monomac Mono Support for OSX dotnet5.5
netstandard1.4
xamarinios Support for Xamarin for iOS dotnet5.5
netstandard1.4
xamarinmac Supports for Xamarin for Mac dotnet5.5
netstandard1.4
xamarinpsthree Support for Xamarin on Playstation 3 dotnet5.5
netstandard1.4
xamarinpsfour Support for Xamarin on Playstation 4 dotnet5.5
netstandard1.4
xamarinpsvita Support for Xamarin on PS Vita dotnet5.5
netstandard1.4
xamarinwatchos Xamarin for Watch OS dotnet5.5
netstandard1.4
xamarintvos Xamarin for TV OS dotnet5.5
netstandard1.4
xamarinxboxthreesixty Xamarin for XBox 360 dotnet5.5
netstandard1.4
xamarinxboxone Xamarin for XBox One dotnet5.5
netstandard1.4

Stephen Cleary has a blog post that demonstrates a tool that will mine the list of supported portable class libraries on a workstation and report the features of them: http://blog.stephencleary.com/2012/05/framework-profiles-in-net.html

.NET Platform Standard

To simplify the references between binary-compatible frameworks, the .NET Platform Standard was introduced. This allows the definition of a single target framework moniker to reference a combination of binary compatible frameworks. Various versions of the Platform Standard indicate different combinations of frameworks that are compatible. More information about these frameworks can be found at the .NET Platform Standard master document.

The dotnet series of monikers should be used in NuGet 3.3 and the netstandard moniker syntax should be used in v3.4 and later.