-
Notifications
You must be signed in to change notification settings - Fork 6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Frameworks and Targets update #1721
Changes from 1 commit
c7b2e04
3a7e0fc
2b410c2
1ff006d
ef96c0d
02f04c5
ae1ea7d
3d87596
034e4b2
0b2bac6
1bac929
e3d5102
b570fa7
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
--- | ||
title: Target frameworks | ||
title: Target frameworks | Microsoft Docs | ||
description: Explains the concepts of target frameworks when writing .NET code. | ||
keywords: .NET, .NET Core, framework, tfm | ||
author: richlander | ||
|
@@ -16,15 +16,15 @@ ms.assetid: 6ef56a2e-593d-497b-925a-1e25bb6df2e6 | |
|
||
The .NET ecosystem has a concept of *target frameworks*. Frameworks define the API that you can use to target a particular platform. For example, the .NET Framework 4.6 is a platform that you can target. Visual Studio and other IDEs and editors use frameworks to provide you with the correct set of APIs. NuGet also uses them to ensure that you produce and consume appropriate NuGet packages and underlying assets for the framework you're targeting. | ||
|
||
Refernece | Name | ||
Reference | Name | ||
--- | --- | ||
Product | .NET Framework 4.6.2 or .NET 4.6.2 | ||
Framework | `.NETFramework,Version=4.6.2` or `net462` | ||
Family | `.NETFramework` or `net` | ||
|
||
## Lastest framework versions | ||
## Latest framework versions | ||
|
||
The table below defines the set of frameworks that you can use, how they're referenced, and which version of the [.NET Standard Library](library.md) they implement. These framework versions are the latest stable versions. Pre-release versions aren't shown. | ||
The following table defines the set of frameworks that you can use, how they're referenced, and which version of the [.NET Standard Library](library.md) 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 | ||
:--------: | :--: | :--: | :--: | :--: | :--: | :--: | ||
|
@@ -38,6 +38,14 @@ A framework is typically referenced by a short target framework moniker or *TFM* | |
|
||
Name | Abbreviation | TFMs/TxMs | ||
--- | --- | --- | ||
.NET Standard | netstandard | netstandard1.0 | ||
| | netstandard1.1 | ||
| | netstandard1.2 | ||
| | netstandard1.3 | ||
| | netstandard1.4 | ||
| | netstandard1.5 | ||
| | netstandard1.6 | ||
.NET Core App | netcoreapp | netcoreapp1.0 | netcoreapp1.1 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. .netcoreapp1.1 should be in a new row |
||
.NET Framework | net | net11 | ||
| | net20 | ||
| | net35 | ||
|
@@ -68,14 +76,6 @@ Windows Phone | wp | wp [wp7] | |
| | wpa81 | ||
Universal Windows Platform | uap | uap [uap10.0] | ||
| | uap10.0 | ||
.NET Standard | netstandard | netstandard1.0 | ||
| | netstandard1.1 | ||
| | netstandard1.2 | ||
| | netstandard1.3 | ||
| | netstandard1.4 | ||
| | netstandard1.5 | ||
| | netstandard1.6 | ||
.NET Core App | netcoreapp | netcoreapp1.0 | ||
|
||
## Deprecated frameworks | ||
|
||
|
@@ -114,165 +114,15 @@ win (Windows Store) | winrt | |
|
||
## .NET Standard | ||
|
||
The [.NET Standard](https://github.com/dotnet/standard) simplifies references between binary-compatible frameworks, allowing a single target framework to reference a combination of others. For background, see the [.NET Platform Guide](https://docs.microsoft.com/dotnet/articles/standard/index). | ||
The [.NET Standard](https://github.com/dotnet/standard) simplifies references between binary-compatible frameworks, allowing a single target framework to reference a combination of others. For background, see the [.NET Standard Library](library.md). | ||
|
||
The [NuGet Tools Get Nearest Framework Tool](https://aka.ms/s2m3th) 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. Click the **Submit** button. The tool indicates if the package frameworks you list are compatible with the project framework you provide. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This seems to link to version 3.5.0-beta2-1484 of the tool, when versions 3.5.0 and 4.0.0 are available. Shouldn't the link be changed to one of those? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, great catch! I'll fix it. Let's just go with |
||
|
||
For NuGet 3.3 and earlier, use the `dotnet` series of monikers. For NuGet 3.4 and later, use the `netstandard` moniker syntax. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is information on how to use an old version of NuGet still useful? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @mairaw ? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'd remove it since the dotnet ones already show up as deprecated earlier |
||
|
||
## Portable Class Libraries | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this one is a really long list and we don't even recommend people using it anymore. I think in this case we could link to the NuGet topic (https://docs.microsoft.com/nuget/schema/target-frameworks#portable-class-libraries) |
||
|
||
> [!Warning] | ||
> **PCLs not recommended** | ||
> | ||
> Although PCLs are supported, package authors should support `netstandard` instead. .NET Standard is the evolution of PCLs and represents binary portability across platforms using a single moniker that isn't tied statically to frameworks, which is the case with the *portable-a+b+c* monikers of PCLs. | ||
|
||
To define a target framework that refers to multiple child target frameworks, prefix the referenced frameworks with the `portable` keyword. Avoid artificially including extra frameworks that aren't directly compiled against because it can lead to unintended side effects in those frameworks. Additional frameworks defined by third parties provide compatibility with other environments. Shorthand profile numbers are available to reference combinations of related frameworks as `Profile#`, where `#` is the profile number. Since using profile numbers reduces the readability of the folders and nuspec, using them isn't a recommended practice. | ||
|
||
Profile# | Frameworks | Full name | .NET Standard | ||
--- | --- | --- | --- | ||
Profile2 | .NETFramework 4.0 | portable-net40+win8+sl4+wp7 | | ||
| Windows 8.0 | | | ||
| Silverlight 4.0 | | | ||
| WindowsPhone 7.0| | | ||
Profile3 | .NETFramework 4.0 | portable-net40+sl4 | | ||
| Silverlight 4.0 | | | ||
Profile4 | .NETFramework 4.5 | portable-net45+sl4+win8+wp7 | | ||
| Silverlight 4.0 | | | ||
| Windows 8.0 | | | ||
| WindowsPhone 7.0 | | | ||
Profile5 | .NETFramework 4.0 | portable-net40+win8 | | ||
| Windows 8.0 | | | ||
Profile6 | .NETFramework 4.0.3 | portable-net403+win8 | | ||
| Windows 8.0 | | | ||
Profile7 | .NETFramework 4.5 | portable-net45+win8 | netstandard1.1 | ||
| Windows 8.0 | | | ||
Profile14 | .NETFramework 4.0 | portable-net40+sl5 | | ||
| Silverlight 5.0 | | | ||
Profile18 | .NETFramework 4.0.3 | portable-net403+sl4 | | ||
| Silverlight 4.0 | | | ||
Profile19 | .NETFramework 4.0.3 | portable-net403+sl5 | | ||
| Silverlight 5.0 | | | ||
Profile23 | .NETFramework 4.5 | portable-net45+sl4 | | ||
| Silverlight 4.0 | | | ||
Profile24 | .NETFramework 4.5 | portable-net45+sl5 | | ||
| Silverlight 5.0 | | | ||
Profile31 | Windows 8.1 | portable-win81+wp81 | netstandard1.0 | ||
| WindowsPhone 8.1 | | ||
Profile32 | Windows 8.1 | portable-win81+wpa81 | netstandard1.2 | ||
| WindowsPhone 8.1 | | | ||
Profile36 | .NETFramework 4.0 | portable-net40+sl4+win8+wp8 | | ||
| Silverlight 4.0 | | | ||
| Windows 8.0 | | | ||
| WindowsPhone 8.0 | | | ||
Profile37 | .NETFramework 4.0 | portable-net40+sl5+win8 | | ||
| Silverlight 5.0 | | | ||
| Windows 8.0 | | | ||
Profile41 | .NETFramework 4.0.3 | portable-net403+sl4+win8 | | ||
| Silverlight 4.0 | | | ||
| Windows 8.0 | | | ||
Profile42 | .NETFramework 4.0.3 | portable-net403+sl5+win8 | | ||
| Silverlight 5.0 | | | ||
| Windows 8.0 | | | ||
Profile44 | .NETFramework 4.5.1 | portable-net451+win81 | netstandard1.2 | ||
| Windows 8.1 | | | ||
Profile46 | .NETFramework 4.5 | portable-net45+sl4+win8 | | ||
| Silverlight 4.0 | | | ||
| Windows 8.0 | | | ||
Profile47 | .NETFramework 4.5 | portable-net45+sl5+win8 | | ||
| Silverlight 5.0 | | | ||
| Windows 8.0 | | | ||
Profile49 | .NETFramework 4.5 | portable-net45+wp8 | netstandard1.0 | ||
| WindowsPhone 8.0 | | | ||
Profile78 | .NETFramework 4.5 | portable-net45+win8+wp8 | netstandard1.0 | ||
| Windows 8.0 | | | ||
| WindowsPhone 8.0 | | | ||
Profile84 | WindowsPhone 8.1 | portable-wp81+wpa81 | netstandard1.0 | ||
| WindowsPhone 8.1 | | | ||
Profile88 | .NETFramework 4.0 | portable-net40+sl4+win8+wp75 | | ||
| Silverlight 4.0 | | | ||
| Windows 8.0 | | | ||
| WindowsPhone 7.5 | | | ||
Profile92 | .NETFramework 4.0 | portable-net40+win8+wpa81 | | ||
| Windows 8.0 | | | ||
| WindowsPhone 8.1 | | | ||
Profile95 | .NETFramework 4.0.3 | portable-net403+sl4+win8+wp7 | | ||
| Silverlight 4.0 | | | ||
| Windows 8.0 | | | ||
| WindowsPhone 7.0 | | | ||
Profile96 | .NETFramework 4.0.3 | portable-net403+sl4+win8+wp75 | | ||
| Silverlight 4.0 | | | ||
| Windows 8.0 | | | ||
| WindowsPhone 7.5 | | | ||
| Profile102 | .NETFramework 4.0.3 | portable-net403+win8+wpa81 | | ||
| Windows 8.0 | | | ||
| WindowsPhone 8.1 | | | ||
Profile104 | .NETFramework 4.5 | portable-net45+sl4+win8+wp75 | | ||
| Silverlight 4.0 | | | ||
| Windows 8.0 | | | ||
| WindowsPhone 7.5 | | | ||
Profile111 | .NETFramework 4.5 | portable-net45+win8+wpa81 | netstandard1.1 | ||
| Windows 8.0 | | | ||
| WindowsPhone 8.1 | | | ||
Profile136 | .NETFramework 4.0 | portable-net40+sl5+win8+wp8 | | ||
| Silverlight 5.0 | | | ||
| Windows 8.0 | | | ||
| WindowsPhone 8.0 | | | ||
Profile143 | .NETFramework 4.0.3 | portable-net403+sl4+win8+wp8 | | ||
| Silverlight 4.0 | | | ||
| Windows 8.0 | | | ||
| WindowsPhone 8.0 | | | ||
Profile147 | .NETFramework 4.0.3 | portable-net403+sl5+win8+wp8 | | ||
| Silverlight 5.0 | | | ||
| Windows 8.0 | | | ||
| WindowsPhone 8.0 | | | ||
Profile151 | NETFramework 4.5.1 | portable-net451+win81+wpa81 | netstandard1.2 | ||
| Windows 8.1 | | | ||
| WindowsPhone 8.1 | | | ||
Profile154 | .NETFramework 4.5 | portable-net45+sl4+win8+wp8 | | ||
| Silverlight 4.0 | | | ||
| Windows 8.0 | | | ||
| WindowsPhone 8.0 | | | ||
Profile157 | Windows 8.1 | portable-win81+wp81+wpa81 | netstandard1.0 | ||
| WindowsPhone 8.1 | | | ||
| WindowsPhone 8.1 | | | ||
Profile158 | .NETFramework 4.5 | portable-net45+sl5+win8+wp8 | | ||
| Silverlight 5.0 | | | ||
| Windows 8.0 | | | ||
| WindowsPhone 8.0 | | | ||
Profile225 | .NETFramework 4.0 | portable-net40+sl5+win8+wpa81 | | ||
| Silverlight 5.0 | | | ||
| Windows 8.0 | | | ||
| WindowsPhone 8.1 | | | ||
Profile240 | .NETFramework 4.0.3 | portable-net403+sl5+win8+wpa8 | | ||
| Silverlight 5.0 | | | ||
| Windows 8.0 | | | ||
| WindowsPhone 8.1 | | | ||
Profile255 | .NETFramework 4.5 | portable-net45+sl5+win8+wpa81 | | ||
| Silverlight 5.0 | | | ||
| Windows 8.0 | | | ||
| WindowsPhone 8.1 | | | ||
Profile259 | .NETFramework 4.5 | portable-net45+win8+wpa81+wp8 | netstandard1.0 | ||
| Windows 8.0 | | | ||
| WindowsPhone 8.1 | | | ||
| WindowsPhone 8.0 | | | ||
Profile328 | .NETFramework 4.0 | portable-net40+sl5+win8+wpa81+wp8 | | ||
| Silverlight 5.0 | | | ||
| Windows 8.0 | | | ||
| WindowsPhone 8.1 | | | ||
| WindowsPhone 8.0 | | | ||
Profile336 | .NETFramework 4.0.3 | portable-net403+sl5+win8+wpa81+wp8 | | ||
| Silverlight 5.0 | | | ||
| Windows 8.0 | | | ||
| WindowsPhone 8.1 | | | ||
| WindowsPhone 8.1 | | | ||
Profile344 | .NETFramework 4.5 | portable-net45+sl5+win8+wpa81+wp8 | | ||
| Silverlight 5.0 | | | ||
| Windows 8.0 | | | ||
| WindowsPhone 8.1 | | | ||
| WindowsPhone 8.0 | | | ||
|
||
NuGet packages targeting Xamarin can use additional Xamarin-defined frameworks. For more information, see [Manually Creating NuGet Packages for Xamarin](https://developer.xamarin.com/guides/cross-platform/advanced/nuget/). | ||
For information on Portable Class Libraries, see the [Portable Class Libraries](https://docs.microsoft.com/nuget/schema/target-frameworks#portable-class-libraries) section of the *Target Framework* topic in the NuGet documentation.. | ||
|
||
Name | Description | .NET Standard | ||
--- | --- | --- | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tfm -> TFM