Skip to content
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

Merged
merged 13 commits into from
May 1, 2017
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
React to feedback
Luke Latham committed Mar 17, 2017
commit 2b410c27262439b1a7192596c9a43688df529859
178 changes: 14 additions & 164 deletions docs/standard/frameworks.md
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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tfm -> 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
Copy link
Contributor

Choose a reason for hiding this comment

The 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.
Copy link
Contributor

Choose a reason for hiding this comment

The 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?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, great catch! I'll fix it. Let's just go with http://nugettoolsdev.azurewebsites.net/, since the latest framework is loaded ✨ auto-magically ✨


For NuGet 3.3 and earlier, use the `dotnet` series of monikers. For NuGet 3.4 and later, use the `netstandard` moniker syntax.
Copy link
Contributor

Choose a reason for hiding this comment

The 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?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

Choose a reason for hiding this comment

The 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
Copy link
Contributor

Choose a reason for hiding this comment

The 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
--- | --- | ---