From c7b2e04580c9532999dcf633e6df371a3111ab8d Mon Sep 17 00:00:00 2001 From: Luke Latham Date: Sat, 11 Mar 2017 00:37:53 -0600 Subject: [PATCH 01/13] Initial commit --- docs/standard/frameworks.md | 299 ++++++++++++++++++++++++++++++++---- 1 file changed, 272 insertions(+), 27 deletions(-) diff --git a/docs/standard/frameworks.md b/docs/standard/frameworks.md index b12040bbb75b9..93173032fdb93 100644 --- a/docs/standard/frameworks.md +++ b/docs/standard/frameworks.md @@ -1,10 +1,10 @@ --- -title: Frameworks and Targets -description: Explains the concepts of framework targets when writing .NET code. -keywords: .NET, .NET Core -author: richlander +title: Target frameworks +description: Explains the concepts of target frameworks when writing .NET code. +keywords: .NET, .NET Core, framework, tfm +author: guardrex ms.author: mairaw -ms.date: 09/19/2016 +ms.date: 03/10/2017 ms.topic: article ms.prod: .net ms.technology: dotnet-standard @@ -12,45 +12,290 @@ ms.devlang: dotnet ms.assetid: 6ef56a2e-593d-497b-925a-1e25bb6df2e6 --- -# Frameworks and Targets +# Target frameworks -The .NET ecosystem has a concept of frameworks. Frameworks define the API that you can use to target a particular platform. The .NET Framework 4.6 is one of those platforms. Frameworks are used in Visual Studio and other IDEs and editors to provide you with the correct set of APIs. They are also used by NuGet, for both production and consumption of NuGet packages, to ensure that you produce and use appropriate packages (and underlying assets) for the framework you are targeting. One can think of frameworks as one of the key currencies in the .NET ecosystem. The concept is there for correctness, to help you and your customers avoid seeing @System.MissingMethodException and friends at runtime. +*Frameworks* define the objects, methods, protocols, and tools that you use to build and run applications, services, and libraries for *platforms*, such as Windows, Mac OS, and Linux. For example, the .NET Framework is used to create applications primarily for Windows platforms. .NET Core is a framework that allows you to build cross-platform applications that can run on a variety of platforms. -## Framework Versions +Taken together, the objects, methods, protocols, and tools are called Application Programming Interfaces (APIs). Framework APIs are used in [Visual Studio](https://www.visualstudio.com/), [Visual Studio Code](https://code.visualstudio.com/), and other Integrated Development Environments (IDEs) and editors to provide you with the correct set of objects, methods, protocols, and tools for development. Frameworks are also used by [NuGet](https://www.nuget.org/) 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, service, or library. -The table below defines the set of frameworks that you can use, how they are referred to and which version of the [.NET Standard Library](library.md) that they implement. +When you *target a framework*, you've decided which set of APIs and which versions of those APIs you would like to use. Frameworks are referenced in several ways: by product name, by long- or short-form framework names, and by family. + +Refernece | 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 + +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 described by this table. | Framework | Latest Version | Target Framework Moniker (TFM) | Compact Target Framework Moniker (TFM) | .NET Standard Version | Metapackage | -|:--------: | :--: | :--: | :--: | :--: | :--: | :--: | +| :--------: | :--: | :--: | :--: | :--: | :--: | :--: | | .NET Standard | 1.6 | .NETStandard,Version=1.6 | netstandard1.6 | N/A | [NETStandard.Library](https://www.nuget.org/packages/NETStandard.Library)| -| .NET Core Application | 1.0.1 | .NETCoreApp,Version=1.0 | netcoreapp1.0 | 1.6 | [Microsoft.NETCore.App](https://www.nuget.org/packages/Microsoft.NETCore.App)| +| .NET Core Application | 1.1.1 | .NETCoreApp,Version=1.1 | netcoreapp1.1 | 1.6 | [Microsoft.NETCore.App](https://www.nuget.org/packages/Microsoft.NETCore.App)| | .NET Framework | 4.6.2 | .NETFramework,Version=4.6.2 | net462 | 1.5 | N/A | -> [!NOTE] -> These framework versions are the latest stable versions. There may be pre-released versions as well that are not described by this table. +## Supported frameworks + +A framework is typically referenced by a short target framework moniker or TFM. In .NET Standard this is also is generalized to *TxM* to allow a single reference to multiple frameworks. + +The NuGet clients support the following frameworks. Equivalents are shown within brackets []. + +Name | Abbreviation | TFMs/TxMs | +--- | --- | --- +.NET Framework | net | net11 + | | net20 + | | net35 + | | net40 + | | net403 + | | net45 + | | net451 + | | net452 + | | net46 + | | net461 + | | net462 +.NET Core | netcore | netcore [netcore45] + | | netcore45 [win, win8] + | | netcore451 [win81] + | | netcore50 +.NET MicroFramework | netmf | netmf +Windows | win | win [win8, netcore45] + | | win8 [netcore45, win] + | | win81 [netcore451] + | | win10 (not supported by Windows 10 platform) +Silverlight | sl | sl4 + | | sl5 +Windows Phone | wp | wp [wp7] + | | wp7 + | | wp75 + | | wp8 + | | wp81 + | | 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 + +The following frameworks are deprecated. Packages targeting these frameworks should migrate to the indicated replacements. + +Deprecated framework | Replacement +--- | --- +aspnet50 | netcoreapp +aspnetcore50 | +dnxcore50 | +dnx | +dnx45 | +dnx451 | +dnx452 | +dotnet | netstandard +dotnet50 | +dotnet51 | +dotnet52 | +dotnet53 | +dotnet54 | +dotnet55 | +dotnet56 | +winrt | win + +## Precedence + +A number of frameworks are related to and compatible with one another, but not necessarily equivalent: + +Framework | Can use +--- | --- +uap (Universal Windows Platform) | win81 +| | wpa81 +| | netcore50 +win (Windows Store) | winrt +| | winrt45 -## Writing about Frameworks +## NET Platform Standard -There are multiple ways to refer to frameworks in written form, most of which are used in this documentation. They are described below, both as a legend for interpreting the documentation but also to guide use in other documents. +The [.NET Platform Standard](https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md) simplifies references between binary-compatible frameworks, allowing a single target framework to reference a combination of others. (For background, see the [.NET Primer](https://docs.microsoft.com/en-us/dotnet/articles/standard/index).) -Using .NET Framework 4.6.1 as an example, the following forms can be used: +The [NuGet Get Nearest Framework Tool](https://aka.ms/s2m3th) simulates what NuGet uses to select one framework from many available framework assets in a package based on the project's framework. -**Referring to a product** +The `dotnet` series of monikers should be used in NuGet 3.3 an earlier; the `netstandard` moniker syntax should be used in v3.4 and later. -You can refer to a .NET platform or runtime. +## Portable Class Libraries -- ".NET Framework 4.6.1" +> [!Warning] +> **PCLs are not recommended** +> +> Although PCLs are supported, package authors should support netstandard instead. The .NET Platform Standard is an evolution of PCLs and represents binary portability across platforms using a single moniker that isn't tied to a static like like *portable-a+b+c* monikers. -**Referring to a Framework** +To define a target framework that refers to multiple child-target-frameworks, the `portable` keyword use used to prefix the list of referenced frameworks. Avoid artificially including extra frameworks that are not directly compiled against because it can lead to unintended side-effects in those frameworks. -You can refer to a framework or targeting of a framework using long- or short-forms of the TFM. Both are equally valid in the general case. +Additional frameworks defined by third parties 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 readability of the folders and nuspec. -- `.NETFramework,Version=4.6.1` -- `net461` +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 | | -**Referring to a family of Frameworks** +Additionally, NuGet packages targeting Xamarin can use additional Xamarin-defined frameworks. See [Creating NuGet packages for Xamarin](https://developer.xamarin.com/guides/cross-platform/advanced/nuget/). -You can refer to a family of frameworks using long- or short-forms of the framework ID. Both are equally valid in the general case. + Name | Description | .NET Standard + --- | --- | --- + monoandroid | Mono Support for Android OS | netstandard1.4 + monotouch | Mono Support for iOS | netstandard1.4 + monomac | Mono Support for OSX | netstandard1.4 + xamarinios | Support for Xamarin for iOS | netstandard1.4 + xamarinmac | Supports for Xamarin for Mac | netstandard1.4 + xamarinpsthree | Support for Xamarin on Playstation 3 | netstandard1.4 + xamarinpsfour | Support for Xamarin on Playstation 4 | netstandard1.4 + xamarinpsvita | Support for Xamarin on PS Vita | netstandard1.4 + xamarinwatchos | Xamarin for Watch OS | netstandard1.4 + xamarintvos | Xamarin for TV OS | netstandard1.4 + xamarinxboxthreesixty | Xamarin for XBox 360 | netstandard1.4 + xamarinxboxone | Xamarin for XBox One | netstandard1.4 -- `.NETFramework` -- `net` +> [!Note] +> Stephen Cleary has created a tool that lists the supported PCLs, which you can find on his post, [Framework profiles in .NET](http://blog.stephencleary.com/2012/05/framework-profiles-in-net.html). From 3a7e0fce1c30beb35a553f927321c1a4450317c8 Mon Sep 17 00:00:00 2001 From: Luke Latham Date: Mon, 13 Mar 2017 14:47:37 -0500 Subject: [PATCH 02/13] Updates --- docs/standard/frameworks.md | 52 ++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 30 deletions(-) diff --git a/docs/standard/frameworks.md b/docs/standard/frameworks.md index 93173032fdb93..7b72dfbb536f4 100644 --- a/docs/standard/frameworks.md +++ b/docs/standard/frameworks.md @@ -2,9 +2,9 @@ title: Target frameworks description: Explains the concepts of target frameworks when writing .NET code. keywords: .NET, .NET Core, framework, tfm -author: guardrex +author: richlander ms.author: mairaw -ms.date: 03/10/2017 +ms.date: 03/13/2017 ms.topic: article ms.prod: .net ms.technology: dotnet-standard @@ -14,11 +14,7 @@ ms.assetid: 6ef56a2e-593d-497b-925a-1e25bb6df2e6 # Target frameworks -*Frameworks* define the objects, methods, protocols, and tools that you use to build and run applications, services, and libraries for *platforms*, such as Windows, Mac OS, and Linux. For example, the .NET Framework is used to create applications primarily for Windows platforms. .NET Core is a framework that allows you to build cross-platform applications that can run on a variety of platforms. - -Taken together, the objects, methods, protocols, and tools are called Application Programming Interfaces (APIs). Framework APIs are used in [Visual Studio](https://www.visualstudio.com/), [Visual Studio Code](https://code.visualstudio.com/), and other Integrated Development Environments (IDEs) and editors to provide you with the correct set of objects, methods, protocols, and tools for development. Frameworks are also used by [NuGet](https://www.nuget.org/) 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, service, or library. - -When you *target a framework*, you've decided which set of APIs and which versions of those APIs you would like to use. Frameworks are referenced in several ways: by product name, by long- or short-form framework names, and by family. +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 --- | --- @@ -28,21 +24,19 @@ Family | `.NETFramework` or `net` ## Lastest 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 described by this table. +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. -| Framework | Latest Version | Target Framework Moniker (TFM) | Compact Target Framework Moniker (TFM) | .NET Standard Version | Metapackage | -| :--------: | :--: | :--: | :--: | :--: | :--: | :--: | -| .NET Standard | 1.6 | .NETStandard,Version=1.6 | netstandard1.6 | N/A | [NETStandard.Library](https://www.nuget.org/packages/NETStandard.Library)| -| .NET Core Application | 1.1.1 | .NETCoreApp,Version=1.1 | netcoreapp1.1 | 1.6 | [Microsoft.NETCore.App](https://www.nuget.org/packages/Microsoft.NETCore.App)| -| .NET Framework | 4.6.2 | .NETFramework,Version=4.6.2 | net462 | 1.5 | N/A | +Framework | Latest Version | Target Framework Moniker (TFM) | Compact Target Framework Moniker (TFM) | .NET Standard Version | Metapackage +:--------: | :--: | :--: | :--: | :--: | :--: | :--: +.NET Standard | 1.6.1 | .NETStandard,Version=1.6 | netstandard1.6 | N/A | [NETStandard.Library](https://www.nuget.org/packages/NETStandard.Library) +.NET Core Application | 1.1.1 | .NETCoreApp,Version=1.1 | netcoreapp1.1 | 1.6 | [Microsoft.NETCore.App](https://www.nuget.org/packages/Microsoft.NETCore.App) +.NET Framework | 4.6.2 | .NETFramework,Version=4.6.2 | net462 | 1.5 | N/A ## Supported frameworks -A framework is typically referenced by a short target framework moniker or TFM. In .NET Standard this is also is generalized to *TxM* to allow a single reference to multiple frameworks. +A framework is typically referenced by a short target framework moniker or *TFM*. In .NET Standard, this is also generalized to *TxM* to allow a single reference to multiple frameworks. The NuGet clients support the following frameworks. Equivalents are shown within brackets (`[]`). -The NuGet clients support the following frameworks. Equivalents are shown within brackets []. - -Name | Abbreviation | TFMs/TxMs | +Name | Abbreviation | TFMs/TxMs --- | --- | --- .NET Framework | net | net11 | | net20 @@ -108,7 +102,7 @@ winrt | win ## Precedence -A number of frameworks are related to and compatible with one another, but not necessarily equivalent: +A number of frameworks are related to and compatible with one another but not necessarily equivalent: Framework | Can use --- | --- @@ -118,26 +112,24 @@ uap (Universal Windows Platform) | win81 win (Windows Store) | winrt | | winrt45 -## NET Platform Standard +## .NET Standard -The [.NET Platform Standard](https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md) simplifies references between binary-compatible frameworks, allowing a single target framework to reference a combination of others. (For background, see the [.NET Primer](https://docs.microsoft.com/en-us/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 Platform Guide](https://docs.microsoft.com/dotnet/articles/standard/index). -The [NuGet Get Nearest Framework Tool](https://aka.ms/s2m3th) simulates what NuGet uses to select one framework from many available framework assets in a package based on the project's framework. +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. -The `dotnet` series of monikers should be used in NuGet 3.3 an earlier; the `netstandard` moniker syntax should be used in v3.4 and later. +For NuGet 3.3 and earlier, use the `dotnet` series of monikers. For NuGet 3.4 and later, use the `netstandard` moniker syntax. ## Portable Class Libraries > [!Warning] -> **PCLs are not recommended** +> **PCLs not recommended** > -> Although PCLs are supported, package authors should support netstandard instead. The .NET Platform Standard is an evolution of PCLs and represents binary portability across platforms using a single moniker that isn't tied to a static like like *portable-a+b+c* monikers. - -To define a target framework that refers to multiple child-target-frameworks, the `portable` keyword use used to prefix the list of referenced frameworks. Avoid artificially including extra frameworks that are not directly compiled against because it can lead to unintended side-effects in those frameworks. +> 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. -Additional frameworks defined by third parties 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 readability of the folders and nuspec. +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 +Profile# | Frameworks | Full name | .NET Standard --- | --- | --- | --- Profile2 | .NETFramework 4.0 | portable-net40+win8+sl4+wp7 | | Windows 8.0 | | @@ -280,7 +272,7 @@ Profile # | Frameworks | Full name | .NET Standard | WindowsPhone 8.1 | | | WindowsPhone 8.0 | | -Additionally, NuGet packages targeting Xamarin can use additional Xamarin-defined frameworks. See [Creating NuGet packages for Xamarin](https://developer.xamarin.com/guides/cross-platform/advanced/nuget/). +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/). Name | Description | .NET Standard --- | --- | --- @@ -298,4 +290,4 @@ Additionally, NuGet packages targeting Xamarin can use additional Xamarin-define xamarinxboxone | Xamarin for XBox One | netstandard1.4 > [!Note] -> Stephen Cleary has created a tool that lists the supported PCLs, which you can find on his post, [Framework profiles in .NET](http://blog.stephencleary.com/2012/05/framework-profiles-in-net.html). +> Stephen Cleary created a tool that lists the supported PCLs. For more information, see [Framework Profiles in .NET](http://blog.stephencleary.com/2012/05/framework-profiles-in-net.html). From 2b410c27262439b1a7192596c9a43688df529859 Mon Sep 17 00:00:00 2001 From: Luke Latham Date: Fri, 17 Mar 2017 01:14:00 -0500 Subject: [PATCH 03/13] React to feedback --- docs/standard/frameworks.md | 178 +++--------------------------------- 1 file changed, 14 insertions(+), 164 deletions(-) diff --git a/docs/standard/frameworks.md b/docs/standard/frameworks.md index 7b72dfbb536f4..83d8bb1a4414a 100644 --- a/docs/standard/frameworks.md +++ b/docs/standard/frameworks.md @@ -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 .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,7 +114,7 @@ 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. @@ -122,157 +122,7 @@ For NuGet 3.3 and earlier, use the `dotnet` series of monikers. For NuGet 3.4 an ## 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 --- | --- | --- From 1ff006d8bdd860faa4fd370be1c8248a16424438 Mon Sep 17 00:00:00 2001 From: Luke Latham Date: Mon, 20 Mar 2017 22:13:55 -0500 Subject: [PATCH 04/13] React to feedback --- docs/standard/frameworks.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/standard/frameworks.md b/docs/standard/frameworks.md index 83d8bb1a4414a..0b25d7956ff44 100644 --- a/docs/standard/frameworks.md +++ b/docs/standard/frameworks.md @@ -1,10 +1,10 @@ --- title: Target frameworks | Microsoft Docs description: Explains the concepts of target frameworks when writing .NET code. -keywords: .NET, .NET Core, framework, tfm +keywords: .NET, .NET Core, framework, TFM author: richlander ms.author: mairaw -ms.date: 03/13/2017 +ms.date: 03/20/2017 ms.topic: article ms.prod: .net ms.technology: dotnet-standard @@ -45,7 +45,8 @@ Name | Abbreviation | TFMs/TxMs | | netstandard1.4 | | netstandard1.5 | | netstandard1.6 -.NET Core App | netcoreapp | netcoreapp1.0 | netcoreapp1.1 +.NET Core App | netcoreapp | netcoreapp1.0 + | | netcoreapp1.1 .NET Framework | net | net11 | | net20 | | net35 @@ -122,7 +123,7 @@ For NuGet 3.3 and earlier, use the `dotnet` series of monikers. For NuGet 3.4 an ## Portable Class Libraries -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.. +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 --- | --- | --- From ef96c0d6441fb85a5410300fb4cbb6b3317feee2 Mon Sep 17 00:00:00 2001 From: Luke Latham Date: Mon, 20 Mar 2017 22:41:14 -0500 Subject: [PATCH 05/13] Update table format --- docs/standard/frameworks.md | 82 ++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/docs/standard/frameworks.md b/docs/standard/frameworks.md index 0b25d7956ff44..0bc946b3f4e92 100644 --- a/docs/standard/frameworks.md +++ b/docs/standard/frameworks.md @@ -36,47 +36,47 @@ Framework | Latest Version | Target Framework Moniker (TFM) | Compact Target Fra A framework is typically referenced by a short target framework moniker or *TFM*. In .NET Standard, this is also generalized to *TxM* to allow a single reference to multiple frameworks. The NuGet clients support the following frameworks. Equivalents are shown within brackets (`[]`). -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 -.NET Framework | net | net11 - | | net20 - | | net35 - | | net40 - | | net403 - | | net45 - | | net451 - | | net452 - | | net46 - | | net461 - | | net462 -.NET Core | netcore | netcore [netcore45] - | | netcore45 [win, win8] - | | netcore451 [win81] - | | netcore50 -.NET MicroFramework | netmf | netmf -Windows | win | win [win8, netcore45] - | | win8 [netcore45, win] - | | win81 [netcore451] - | | win10 (not supported by Windows 10 platform) -Silverlight | sl | sl4 - | | sl5 -Windows Phone | wp | wp [wp7] - | | wp7 - | | wp75 - | | wp8 - | | wp81 - | | wpa81 -Universal Windows Platform | uap | uap [uap10.0] - | | uap10.0 +| 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 | +| .NET Framework | net | net11 | +| | | net20 | +| | | net35 | +| | | net40 | +| | | net403 | +| | | net45 | +| | | net451 | +| | | net452 | +| | | net46 | +| | | net461 | +| | | net462 | +| .NET Core | netcore | netcore [netcore45] | +| | | netcore45 [win, win8] | +| | | netcore451 [win81] | +| | | netcore50 | +| .NET MicroFramework | netmf | netmf | +| Windows | win | win [win8, netcore45] | +| | | win8 [netcore45, win] | +| | | win81 [netcore451] | +| | | win10 (not supported by Windows 10 platform) | +| Silverlight | sl | sl4 | +| | | sl5 | +| Windows Phone | wp | wp [wp7] | +| | | wp7 | +| | | wp75 | +| | | wp8 | +| | | wp81 | +| | | wpa81 | +| Universal Windows Platform | uap | uap [uap10.0] | +| | | uap10.0 | ## Deprecated frameworks From 02f04c5dd41aca90bdb5e861a868e3cd18ed929a Mon Sep 17 00:00:00 2001 From: Luke Latham Date: Thu, 23 Mar 2017 13:01:16 -0500 Subject: [PATCH 06/13] React to feedback, table fixup, and minor updates --- docs/standard/frameworks.md | 173 ++++++++++++++++-------------------- 1 file changed, 78 insertions(+), 95 deletions(-) diff --git a/docs/standard/frameworks.md b/docs/standard/frameworks.md index 0bc946b3f4e92..784dab8f67887 100644 --- a/docs/standard/frameworks.md +++ b/docs/standard/frameworks.md @@ -16,129 +16,112 @@ 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. -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` +| 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` | ## 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 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 -:--------: | :--: | :--: | :--: | :--: | :--: | :--: -.NET Standard | 1.6.1 | .NETStandard,Version=1.6 | netstandard1.6 | N/A | [NETStandard.Library](https://www.nuget.org/packages/NETStandard.Library) -.NET Core Application | 1.1.1 | .NETCoreApp,Version=1.1 | netcoreapp1.1 | 1.6 | [Microsoft.NETCore.App](https://www.nuget.org/packages/Microsoft.NETCore.App) -.NET Framework | 4.6.2 | .NETFramework,Version=4.6.2 | net462 | 1.5 | N/A +| Framework | Latest Version | Target Framework Moniker (TFM) | Compact Target Framework Moniker (TFM) | .NET Standard Version | Metapackage | +| :-------------------: | :------------: | :----------------------------: | :------------------------------------: | :-------------------: | :---------: | +| .NET Standard | 1.6.1 | .NETStandard,Version=1.6 | netstandard1.6 | N/A | [NETStandard.Library](https://www.nuget.org/packages/NETStandard.Library) | +| .NET Core Application | 1.1.1 | .NETCoreApp,Version=1.1 | netcoreapp1.1 | 1.6 | [Microsoft.NETCore.App](https://www.nuget.org/packages/Microsoft.NETCore.App) | +| .NET Framework | 4.6.2 | .NETFramework,Version=4.6.2 | net462 | 1.5 | N/A | ## Supported frameworks A framework is typically referenced by a short target framework moniker or *TFM*. In .NET Standard, this is also generalized to *TxM* to allow a single reference to multiple frameworks. The NuGet clients support the following frameworks. Equivalents are shown within brackets (`[]`). -| 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 | -| .NET Framework | net | net11 | -| | | net20 | -| | | net35 | -| | | net40 | -| | | net403 | -| | | net45 | -| | | net451 | -| | | net452 | -| | | net46 | -| | | net461 | -| | | net462 | -| .NET Core | netcore | netcore [netcore45] | -| | | netcore45 [win, win8] | -| | | netcore451 [win81] | -| | | netcore50 | -| .NET MicroFramework | netmf | netmf | -| Windows | win | win [win8, netcore45] | -| | | win8 [netcore45, win] | -| | | win81 [netcore451] | -| | | win10 (not supported by Windows 10 platform) | -| Silverlight | sl | sl4 | -| | | sl5 | -| Windows Phone | wp | wp [wp7] | -| | | wp7 | -| | | wp75 | -| | | wp8 | -| | | wp81 | -| | | wpa81 | -| Universal Windows Platform | uap | uap [uap10.0] | -| | | uap10.0 | +| 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 | +| .NET Framework | net | net11 | +| | | net20 | +| | | net35 | +| | | net40 | +| | | net403 | +| | | net45 | +| | | net451 | +| | | net452 | +| | | net46 | +| | | net461 | +| | | net462 | +| .NET Core | netcore | netcore [netcore45] | +| | | netcore45 [win, win8] | +| | | netcore451 [win81] | +| | | netcore50 | +| .NET MicroFramework | netmf | netmf | +| Windows | win | win [win8, netcore45] | +| | | win8 [netcore45, win] | +| | | win81 [netcore451] | +| | | win10 (not supported by Windows 10 platform) | +| Silverlight | sl | sl4 | +| | | sl5 | +| Windows Phone | wp | wp [wp7] | +| | | wp7 | +| | | wp75 | +| | | wp8 | +| | | wp81 | +| | | wpa81 | +| Universal Windows Platform | uap | uap [uap10.0] | +| | | uap10.0 | ## Deprecated frameworks The following frameworks are deprecated. Packages targeting these frameworks should migrate to the indicated replacements. -Deprecated framework | Replacement ---- | --- -aspnet50 | netcoreapp -aspnetcore50 | -dnxcore50 | -dnx | -dnx45 | -dnx451 | -dnx452 | -dotnet | netstandard -dotnet50 | -dotnet51 | -dotnet52 | -dotnet53 | -dotnet54 | -dotnet55 | -dotnet56 | -winrt | win +| Deprecated framework | Replacement | +| -------------------- | ----------- | +| aspnet50 | netcoreapp | +| aspnetcore50 | | +| dnxcore50 | | +| dnx | | +| dnx45 | | +| dnx451 | | +| dnx452 | | +| dotnet | netstandard | +| dotnet50 | | +| dotnet51 | | +| dotnet52 | | +| dotnet53 | | +| dotnet54 | | +| dotnet55 | | +| dotnet56 | | +| winrt | win | ## Precedence A number of frameworks are related to and compatible with one another but not necessarily equivalent: -Framework | Can use ---- | --- -uap (Universal Windows Platform) | win81 -| | wpa81 -| | netcore50 -win (Windows Store) | winrt -| | winrt45 +| Framework | Can use | +| -------------------------------- | --------- | +| uap (Universal Windows Platform) | win81 | +| | wpa81 | +| | netcore50 | +| win (Windows Store) | winrt | +| | winrt45 | ## .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 Standard Library](library.md). +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 more information, see the [.NET Standard Library](library.md) topic. -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. - -For NuGet 3.3 and earlier, use the `dotnet` series of monikers. For NuGet 3.4 and later, use the `netstandard` moniker syntax. +The [NuGet Tools Get Nearest Framework Tool](http://nugettoolsdev.azurewebsites.net/) 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](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 - --- | --- | --- - monoandroid | Mono Support for Android OS | netstandard1.4 - monotouch | Mono Support for iOS | netstandard1.4 - monomac | Mono Support for OSX | netstandard1.4 - xamarinios | Support for Xamarin for iOS | netstandard1.4 - xamarinmac | Supports for Xamarin for Mac | netstandard1.4 - xamarinpsthree | Support for Xamarin on Playstation 3 | netstandard1.4 - xamarinpsfour | Support for Xamarin on Playstation 4 | netstandard1.4 - xamarinpsvita | Support for Xamarin on PS Vita | netstandard1.4 - xamarinwatchos | Xamarin for Watch OS | netstandard1.4 - xamarintvos | Xamarin for TV OS | netstandard1.4 - xamarinxboxthreesixty | Xamarin for XBox 360 | netstandard1.4 - xamarinxboxone | Xamarin for XBox One | netstandard1.4 - > [!Note] > Stephen Cleary created a tool that lists the supported PCLs. For more information, see [Framework Profiles in .NET](http://blog.stephencleary.com/2012/05/framework-profiles-in-net.html). From ae1ea7d4fce9fb4c15987af60082869360124a7c Mon Sep 17 00:00:00 2001 From: Luke Latham Date: Thu, 23 Mar 2017 18:13:53 -0500 Subject: [PATCH 07/13] Remove netcore series of TFMs --- docs/standard/frameworks.md | 76 ++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 40 deletions(-) diff --git a/docs/standard/frameworks.md b/docs/standard/frameworks.md index 784dab8f67887..a69e40ad0b7f9 100644 --- a/docs/standard/frameworks.md +++ b/docs/standard/frameworks.md @@ -36,47 +36,43 @@ The following table defines the set of frameworks that you can use, how they're A framework is typically referenced by a short target framework moniker or *TFM*. In .NET Standard, this is also generalized to *TxM* to allow a single reference to multiple frameworks. The NuGet clients support the following frameworks. Equivalents are shown within brackets (`[]`). -| 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 | -| .NET Framework | net | net11 | -| | | net20 | -| | | net35 | -| | | net40 | -| | | net403 | -| | | net45 | -| | | net451 | -| | | net452 | -| | | net46 | -| | | net461 | -| | | net462 | -| .NET Core | netcore | netcore [netcore45] | -| | | netcore45 [win, win8] | -| | | netcore451 [win81] | -| | | netcore50 | -| .NET MicroFramework | netmf | netmf | -| Windows | win | win [win8, netcore45] | -| | | win8 [netcore45, win] | -| | | win81 [netcore451] | +| 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 | +| .NET Framework | net | net11 | +| | | net20 | +| | | net35 | +| | | net40 | +| | | net403 | +| | | net45 | +| | | net451 | +| | | net452 | +| | | net46 | +| | | net461 | +| | | net462 | +| .NET MicroFramework | netmf | netmf | +| Windows | win | win [win8, netcore45] | +| | | win8 [netcore45, win] | +| | | win81 [netcore451] | | | | win10 (not supported by Windows 10 platform) | -| Silverlight | sl | sl4 | -| | | sl5 | -| Windows Phone | wp | wp [wp7] | -| | | wp7 | -| | | wp75 | -| | | wp8 | -| | | wp81 | -| | | wpa81 | -| Universal Windows Platform | uap | uap [uap10.0] | -| | | uap10.0 | +| Silverlight | sl | sl4 | +| | | sl5 | +| Windows Phone | wp | wp [wp7] | +| | | wp7 | +| | | wp75 | +| | | wp8 | +| | | wp81 | +| | | wpa81 | +| Universal Windows Platform | uap | uap [uap10.0] | +| | | uap10.0 | ## Deprecated frameworks From 3d875962a7e42700dcb9a84f5a8cdebdf411ee55 Mon Sep 17 00:00:00 2001 From: Luke Latham Date: Thu, 23 Mar 2017 18:17:30 -0500 Subject: [PATCH 08/13] Add back netcore<50 TFMs --- docs/standard/frameworks.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/standard/frameworks.md b/docs/standard/frameworks.md index a69e40ad0b7f9..b7db04cb239dc 100644 --- a/docs/standard/frameworks.md +++ b/docs/standard/frameworks.md @@ -58,6 +58,9 @@ A framework is typically referenced by a short target framework moniker or *TFM* | | | net46 | | | | net461 | | | | net462 | +| .NET Core | netcore | netcore [netcore45] | +| | | netcore45 [win, win8] | +| | | netcore451 [win81] | | .NET MicroFramework | netmf | netmf | | Windows | win | win [win8, netcore45] | | | | win8 [netcore45, win] | From 034e4b2ce4a32c738a93d6163fbbd61d1a315d8f Mon Sep 17 00:00:00 2001 From: Luke Latham Date: Fri, 24 Mar 2017 01:08:01 -0500 Subject: [PATCH 09/13] Updates --- docs/standard/frameworks.md | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/docs/standard/frameworks.md b/docs/standard/frameworks.md index b7db04cb239dc..c6b9d559c1ffc 100644 --- a/docs/standard/frameworks.md +++ b/docs/standard/frameworks.md @@ -1,10 +1,10 @@ --- title: Target frameworks | Microsoft Docs -description: Explains the concepts of target frameworks when writing .NET code. +description: Information surrounding target frameworks for .NET Core applications and libraries. keywords: .NET, .NET Core, framework, TFM author: richlander ms.author: mairaw -ms.date: 03/20/2017 +ms.date: 03/23/2017 ms.topic: article ms.prod: .net ms.technology: dotnet-standard @@ -14,7 +14,13 @@ ms.assetid: 6ef56a2e-593d-497b-925a-1e25bb6df2e6 # Target frameworks -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. +*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 term *framework* is sometimes used interchangeably with the word *platform* causing some confusion. For example, you'll see ".NET Core" described as the ".NET Core framework" in the context of building apps and libraries and also described as the ".NET Core 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)](https://github.com/dotnet/coreclr), it's also a platform. The same is true of the .NET Framework, which has the [Common Language Runtime (CLR)](https://msdn.microsoft.com/library/8bs2ecf4(v=vs.110).aspx) to execute app and library code that was developed with the .NET Framework's framework objects, methods, and tools. You'll frequently see the term "cross-platform" in documentation; but when you see that term, you should probably think "cross-operating system and cross-architecture (x86, x64, arm)," because that's the meaning that the author usually intends to convey. Unfortunately, the term *platform* has different meanings in different contexts. + +The objects and methods of frameworks are called Application Programming Interfaces (APIs). Framework APIs are used in [Visual Studio](https://www.visualstudio.com/), [Visual Studio for Mac](https://www.visualstudio.com/vs/visual-studio-mac/), [Visual Studio Code](https://code.visualstudio.com/), 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](https://www.nuget.org/) 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 set(s) of APIs and which version(s) of those APIs you would like to use. Frameworks are referenced in several ways: by product name, by long- or short-form framework names, and by family. | Reference | Name | | --------- | ----------------------------------------- | @@ -45,7 +51,7 @@ A framework is typically referenced by a short target framework moniker or *TFM* | | | netstandard1.4 | | | | netstandard1.5 | | | | netstandard1.6 | -| .NET Core App | netcoreapp | netcoreapp1.0 | +| .NET Core | netcoreapp | netcoreapp1.0 | | | | netcoreapp1.1 | | .NET Framework | net | net11 | | | | net20 | @@ -58,14 +64,10 @@ A framework is typically referenced by a short target framework moniker or *TFM* | | | net46 | | | | net461 | | | | net462 | -| .NET Core | netcore | netcore [netcore45] | +| Windows Store | netcore | netcore [netcore45] | | | | netcore45 [win, win8] | | | | netcore451 [win81] | | .NET MicroFramework | netmf | netmf | -| Windows | win | win [win8, netcore45] | -| | | win8 [netcore45, win] | -| | | win81 [netcore451] | -| | | win10 (not supported by Windows 10 platform) | | Silverlight | sl | sl4 | | | | sl5 | | Windows Phone | wp | wp [wp7] | @@ -75,7 +77,7 @@ A framework is typically referenced by a short target framework moniker or *TFM* | | | wp81 | | | | wpa81 | | Universal Windows Platform | uap | uap [uap10.0] | -| | | uap10.0 | +| | | uap10.0 [win10] [netcore50] | ## Deprecated frameworks @@ -98,7 +100,12 @@ The following frameworks are deprecated. Packages targeting these frameworks sho | dotnet54 | | | dotnet55 | | | dotnet56 | | -| winrt | win | +| netcore50 | uap10.0 | +| win | netcore45 | +| win8 | netcore45 | +| win81 | netcore451 | +| win10 | uap10.0 | +| winrt | netcore45 | ## Precedence @@ -120,7 +127,4 @@ The [NuGet Tools Get Nearest Framework Tool](http://nugettoolsdev.azurewebsites. ## Portable Class Libraries -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. - -> [!Note] -> Stephen Cleary created a tool that lists the supported PCLs. For more information, see [Framework Profiles in .NET](http://blog.stephencleary.com/2012/05/framework-profiles-in-net.html). +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. Stephen Cleary created a tool that lists the supported PCLs. For more information, see [Framework Profiles in .NET](http://blog.stephencleary.com/2012/05/framework-profiles-in-net.html). From 0b2bac6c276a3586dbc1613b1ad31ac39404f48d Mon Sep 17 00:00:00 2001 From: Luke Latham Date: Fri, 24 Mar 2017 01:16:59 -0500 Subject: [PATCH 10/13] Updates --- docs/standard/frameworks.md | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/docs/standard/frameworks.md b/docs/standard/frameworks.md index c6b9d559c1ffc..e87674f508f93 100644 --- a/docs/standard/frameworks.md +++ b/docs/standard/frameworks.md @@ -22,11 +22,32 @@ The objects and methods of frameworks are called Application Programming Interfa When you *target a framework* or target several of them, you've decided which set(s) of APIs and which version(s) of those APIs you would like to use. Frameworks are referenced in several ways: by product name, by long- or short-form framework names, and by family. -| 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` | +## Referring to frameworks + +There are several ways to refer to frameworks in written form, most of which are used in this documentation. They're described below, both as a legend for interpreting the documentation but also to guide use in other documents. + +Using .NET Framework 4.6.2 as an example, the following forms 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 TFM. Both are equally valid. + +* `.NETFramework,Version=4.6.2` +* `net462` + +**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. + +* `.NETFramework` +* `net` ## Latest framework versions From 1bac929893a4af044c2dbee3234a340843575609 Mon Sep 17 00:00:00 2001 From: Luke Latham Date: Fri, 24 Mar 2017 01:25:20 -0500 Subject: [PATCH 11/13] Updates --- docs/standard/frameworks.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/standard/frameworks.md b/docs/standard/frameworks.md index e87674f508f93..d463b44d4b9c1 100644 --- a/docs/standard/frameworks.md +++ b/docs/standard/frameworks.md @@ -24,9 +24,7 @@ When you *target a framework* or target several of them, you've decided which se ## Referring to frameworks -There are several ways to refer to frameworks in written form, most of which are used in this documentation. They're described below, both as a legend for interpreting the documentation but also to guide use in other documents. - -Using .NET Framework 4.6.2 as an example, the following forms are used: +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** From e3d51023a1bd1b560c64bbd675c845df61bc58f4 Mon Sep 17 00:00:00 2001 From: Luke Latham Date: Fri, 24 Mar 2017 02:00:59 -0500 Subject: [PATCH 12/13] Updates --- docs/standard/frameworks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard/frameworks.md b/docs/standard/frameworks.md index d463b44d4b9c1..39c968e8fa988 100644 --- a/docs/standard/frameworks.md +++ b/docs/standard/frameworks.md @@ -16,7 +16,7 @@ ms.assetid: 6ef56a2e-593d-497b-925a-1e25bb6df2e6 *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 term *framework* is sometimes used interchangeably with the word *platform* causing some confusion. For example, you'll see ".NET Core" described as the ".NET Core framework" in the context of building apps and libraries and also described as the ".NET Core 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)](https://github.com/dotnet/coreclr), it's also a platform. The same is true of the .NET Framework, which has the [Common Language Runtime (CLR)](https://msdn.microsoft.com/library/8bs2ecf4(v=vs.110).aspx) to execute app and library code that was developed with the .NET Framework's framework objects, methods, and tools. You'll frequently see the term "cross-platform" in documentation; but when you see that term, you should probably think "cross-operating system and cross-architecture (x86, x64, arm)," because that's the meaning that the author usually intends to convey. Unfortunately, the term *platform* has different meanings in different contexts. +The terms *framework* and *platform* are sometimes confusing given how they're used in phrases. Making interpretation worse, the term *platform* has different meanings in different contexts. For example, you'll see ".NET Core" described as the ".NET Core framework" in the context of building apps and libraries and also described as the ".NET Core 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)](https://github.com/dotnet/coreclr), it's also a platform. The same is true of the .NET Framework, which has the [Common Language Runtime (CLR)](https://msdn.microsoft.com/library/8bs2ecf4(v=vs.110).aspx) to execute app and library code that was developed with the .NET Framework's framework objects, methods, and tools. You'll frequently see the term "cross-platform" in documentation; but when you see that term, you should think "cross-operating system and cross-architecture (x86, x64, arm)," because that's the meaning that the author usually intends to convey. The objects and methods of frameworks are called Application Programming Interfaces (APIs). Framework APIs are used in [Visual Studio](https://www.visualstudio.com/), [Visual Studio for Mac](https://www.visualstudio.com/vs/visual-studio-mac/), [Visual Studio Code](https://code.visualstudio.com/), 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](https://www.nuget.org/) 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. From b570fa7d7beeafa75860a2910f9050e69a2fa6f4 Mon Sep 17 00:00:00 2001 From: Luke Latham Date: Thu, 27 Apr 2017 14:17:44 -0500 Subject: [PATCH 13/13] React to feedback --- docs/standard/frameworks.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/standard/frameworks.md b/docs/standard/frameworks.md index 39c968e8fa988..4f7f59739c327 100644 --- a/docs/standard/frameworks.md +++ b/docs/standard/frameworks.md @@ -4,7 +4,7 @@ description: Information surrounding target frameworks for .NET Core application keywords: .NET, .NET Core, framework, TFM author: richlander ms.author: mairaw -ms.date: 03/23/2017 +ms.date: 04/27/2017 ms.topic: article ms.prod: .net ms.technology: dotnet-standard @@ -16,11 +16,11 @@ ms.assetid: 6ef56a2e-593d-497b-925a-1e25bb6df2e6 *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. Making interpretation worse, the term *platform* has different meanings in different contexts. For example, you'll see ".NET Core" described as the ".NET Core framework" in the context of building apps and libraries and also described as the ".NET Core 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)](https://github.com/dotnet/coreclr), it's also a platform. The same is true of the .NET Framework, which has the [Common Language Runtime (CLR)](https://msdn.microsoft.com/library/8bs2ecf4(v=vs.110).aspx) to execute app and library code that was developed with the .NET Framework's framework objects, methods, and tools. You'll frequently see the term "cross-platform" in documentation; but when you see that term, you should think "cross-operating system and cross-architecture (x86, x64, arm)," because that's the meaning that the author usually intends to convey. +The terms *framework* and *platform* are sometimes confusing given how they're used in phrases. Making interpretation worse, the term *platform* has different meanings in different contexts. For example, you'll see ".NET Core" described as the ".NET Core framework" in the context of building apps and libraries and also described as the ".NET Core 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)](https://github.com/dotnet/coreclr), it's also a platform. The same is true of the .NET Framework, which has the [Common Language Runtime (CLR)](clr.md) to execute app and library code that was developed with the .NET Framework's framework objects, methods, and tools. You'll frequently see the term "cross-platform" in documentation; but when you see that term, you should think "cross-operating system and cross-architecture (x86, x64, arm)," because that's the meaning that the author usually intends to convey. The objects and methods of frameworks are called Application Programming Interfaces (APIs). Framework APIs are used in [Visual Studio](https://www.visualstudio.com/), [Visual Studio for Mac](https://www.visualstudio.com/vs/visual-studio-mac/), [Visual Studio Code](https://code.visualstudio.com/), 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](https://www.nuget.org/) 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 set(s) of APIs and which version(s) of those APIs you would like to use. Frameworks are referenced in several ways: by product name, by long- or short-form framework names, and by family. +When you *target a framework* or target several of them, you've decided which sets of APIs and which versions of those APIs you would 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 @@ -86,7 +86,7 @@ A framework is typically referenced by a short target framework moniker or *TFM* | Windows Store | netcore | netcore [netcore45] | | | | netcore45 [win, win8] | | | | netcore451 [win81] | -| .NET MicroFramework | netmf | netmf | +| .NET Micro Framework | netmf | netmf | | Silverlight | sl | sl4 | | | | sl5 | | Windows Phone | wp | wp [wp7] |