From e9fd0f4cb2783a3cc901340280a9de2947e6b241 Mon Sep 17 00:00:00 2001 From: Steve Smith Date: Thu, 9 Apr 2015 23:40:01 -0400 Subject: [PATCH 01/11] Ready for review. --- .../introducing-dotnetcore.rst | 58 +++++++++++++++---- 1 file changed, 47 insertions(+), 11 deletions(-) diff --git a/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst b/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst index 16ef9c712c..8867385688 100644 --- a/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst +++ b/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst @@ -17,27 +17,69 @@ What is .NET Core ^^^^^^^^^^^^^^^^^ .NET Core 5 is a modular runtime and library implementation that includes a subset of the full .NET Framework. Currently it builds and runs on Windows, but support for Linux and Mac is under development. .NET Core consists of a set of libraries, called "CoreFX", and a small, optimized runtime, called "CoreCLR". .NET Core is open-source, so you can follow progress on the project and contribute to it on GitHub: - - `.NET Core Libraries `_ + + - `.NET Core Libraries (CoreFX) `_ - `.NET Core Common Language Runtime (CoreCLR) `_ The CoreCLR runtime is made available via NuGet (Microsoft.CoreCLR); the CoreFX library is also available as a set of individual NuGet packages, factored according to functionality. These packages are named "System.[module]" on `Nuget.org `_. - +One of the key benefits of .NET Core is its portability. You can package and deploy the CoreCLR with your application, eliminating your application's dependency on an installed version of the full .NET Framework at the device or server level. You can host multiple applications side-by-side using different versions of the CoreCLR, and upgrade them individually, rather than being forced to upgrade all of them simultaneously. + +Another benefit is common access to standard libraries. The CoreFX library includes Collections, Console access, Diagnostics, IO, LINQ, JSON, XML, and regular expression support, just to name a few. Applications targeting a variety of devices and deployment models (such as Windows Desktop, Windows Store, Windows Phone, and ASP.NET) can directly target these libraries, avoiding the need to write wrapper code or conditionally compile based on target platform, as is common today. Motivation Behind .NET Core ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -asdf +The fragmentation of .NET and its capabilities across different platforms is the primary motivation for .NET Core. When .NET first shipped in 2002, it was a single framework, but it didn't take long before the .NET Compact Framework shipped, providing a smaller version of .NET designed for mobile devices. Over the years, this exercise was repeated multiple times, so that today there are different flavors of .NET specific to different platforms. Add to this the further fragmentation created by Mono and Xamarin, which target Linux, Mac, and native iOS and Android devices, and the need for a single common Core of .NET that works the same across all of these platforms becomes even more apparent. Since .NET Core is a full open source project, it will no longer be necessary for Mono to maintain its own fork of this technology, and instead Microsoft and the Mono community can collaborate together on .NET Core. + +.. note:: The `.NET Framework Client Profile`_ shared some of the goals of .NET Core when it was provided with .NET 4 and earlier versions, providing a subset of the .NET Framework optimized for client applications. It was later discontinued with the release of the .NET Framework 4.5. + +.. _`.NET Framework Client Profile`: https://msdn.microsoft.com/en-us/library/cc656912%28v=vs.110%29.aspx + +In addition to being able to target a variety of different device platforms, there was also pressure from the server side to reduce the overall footprint of the .NET framework. By factoring the CoreFX libraries and minimizing the size of CoreFX, server-based applications built with ASP.NET 5 can minimize their size, allowing cloud-based hosting environments to increase the density of applications they can support on a given set of hardware resources. This will provide increased economies of scale for ASP.NET applications hosted on Azure, for instance. .NET Core and ASP.NET ^^^^^^^^^^^^^^^^^^^^^ -asdf +ASP.NET 5 can target either the full .NET Framework or .NET Core. In fact, ASP.NET 5 projects can be cross-compiled, targeting both of these frameworks in a single project, and this is how the project templates ship with Visual Studio 2015. For example, the *frameworks* section of *project.json* in a new ASP.NET 5 web project will target *dnx451* and *dnxcore50* by default: + +.. code-block:: javascript + + "frameworks": { + "dnx451": { }, + "dnxcore50": { } + }, + +*dnx451* is the full .NET Framework; *dnxcore50* is .NET Core 5 (5.0). + +By contrast, earlier versions of ASP.NET can only target the .NET Framework +ASP.NET 4.6 and earlier can only target the .NET Framework. Since both the full .NET Framework and .NET Core can both be targeted at the same time by ASP.NET 5, the recommendation is to target both with new applications, resolving issues with dependencies that are incompatible with .NET Core through the use of conditional compilation directives or choosing to require the full .NET Framework, if necessary. + +.. note:: You can use compiler directives (**#if**) to check for symbols that correspond to the two frameworks: **DNX451** and **DNXCORE50**. + +If for instance you have code that uses resources that are not available as part of .NET Core, you can surround them in a conditional compilation directive: + +.. code-block:: c# + + #if DNX451 + // utilize resource only available with full .NET + #endif + +If you want to only target .NET Core, you should remove *dnx451* from the *frameworks* listed in *project.json*. .NET Core and NuGet ^^^^^^^^^^^^^^^^^^^ -asdf +As part of the effort to *factor* the CoreFX, the individual assemblies are available as separate NuGet packages. In fact, NuGet is the primary delivery vehicle for .NET Core. If, for example, you need to use immutable collections, you can install the System.Collections.Immutable package via NuGet. The NuGet version will also align with the assembly version, and will use `semantic versioning `_. + +Using NuGet allows for much more agile usage of the individual libraries that comprise .NET Core. It also means that an application can list a collection of NuGet packages (and associated version information) and this will comprise both system/framework as well as third-party dependencies required. Further, third-party dependencies can now also express their specific dependencies on framework features, making it much easier to ensure the proper packages and versions are pulled together during the development and build process. + +.. note:: Although CoreFX will be made available as a fairly large number of individual NuGet packages, it will continue to ship periodically as a full unit that Microsoft has been tested as a whole. These distributions will most likely ship at a lower cadence than individual packages, allowing time to perform necessary testing, fixes, and the distribution process. + +Summary +^^^^^^^ + +.NET Core is a modular, streamlined subset of the full .NET Framework and CLR. It is fully open-source and provides a common set of libraries that can be targeted across numerous platforms. Its factored approach allows applications to take dependencies only on those portions of the CoreFX that they use, and the smaller runtime is ideal for deployment to both small devices as well as cloud-optimized environments that need to be able to run many small applications side-by-side. Support for targeting .NET Core is built into the ASP.NET 5 project templates that ship with Visual Studio 2015. Additional Reading ^^^^^^^^^^^^^^^^^^ @@ -49,10 +91,4 @@ Learn more about .NET Core: - `.NET Core is Open Source `_ - `.NET Core on GitHub `_ - -Summary -^^^^^^^ - -asdf - .. include:: /_authors/steve-smith.rst From 0cf571b1c1b3e8e907b2de5f32c4b0b5d690c931 Mon Sep 17 00:00:00 2001 From: Steve Smith Date: Mon, 13 Apr 2015 16:38:23 -0400 Subject: [PATCH 02/11] Updated in response to @richlander edits --- .../introducing-dotnetcore.rst | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst b/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst index 8867385688..bd5d9e1a3e 100644 --- a/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst +++ b/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst @@ -4,7 +4,7 @@ By `Steve Smith`_ | Originally Published: 1 June 2015 .. _`Steve Smith`: Author_ -.NET Core is a small, optimized runtime that can be targeted by ASP.NET 5 applications. In fact, the new ASP.NET 5 project templates target .NET Core by default, in addition to the full .NET Framework. Learn what targeting .NET Core, or *dnxcore50*, means for your ASP.NET 5 application. +.NET Core is a small, optimized runtime that can be targeted by ASP.NET 5 applications. In fact, the new ASP.NET 5 project templates target .NET Core by default, in addition to the .NET Framework. Learn what targeting .NET Core, or *dnxcore50*, means for your ASP.NET 5 application. This article covers the following topics: - What is .NET Core? @@ -16,25 +16,21 @@ This article covers the following topics: What is .NET Core ^^^^^^^^^^^^^^^^^ -.NET Core 5 is a modular runtime and library implementation that includes a subset of the full .NET Framework. Currently it builds and runs on Windows, but support for Linux and Mac is under development. .NET Core consists of a set of libraries, called "CoreFX", and a small, optimized runtime, called "CoreCLR". .NET Core is open-source, so you can follow progress on the project and contribute to it on GitHub: +.NET Core 5 is a modular runtime and library implementation that includes a subset of the full .NET Framework. Currently it is feature complete on Windows, and is in-progress builds exist for both Linux and OS X. .NET Core consists of a set of libraries, called "CoreFX", and a small, optimized runtime, called "CoreCLR". .NET Core is open-source, so you can follow progress on the project and contribute to it on GitHub: - `.NET Core Libraries (CoreFX) `_ - `.NET Core Common Language Runtime (CoreCLR) `_ -The CoreCLR runtime is made available via NuGet (Microsoft.CoreCLR); the CoreFX library is also available as a set of individual NuGet packages, factored according to functionality. These packages are named "System.[module]" on `Nuget.org `_. +The CoreCLR runtime is made available via NuGet (Microsoft.CoreCLR); the CoreFX library is also available as a set of individual NuGet packages, factored according to functionality. These packages are named "System.[module]" on `nuget.org `_. One of the key benefits of .NET Core is its portability. You can package and deploy the CoreCLR with your application, eliminating your application's dependency on an installed version of the full .NET Framework at the device or server level. You can host multiple applications side-by-side using different versions of the CoreCLR, and upgrade them individually, rather than being forced to upgrade all of them simultaneously. -Another benefit is common access to standard libraries. The CoreFX library includes Collections, Console access, Diagnostics, IO, LINQ, JSON, XML, and regular expression support, just to name a few. Applications targeting a variety of devices and deployment models (such as Windows Desktop, Windows Store, Windows Phone, and ASP.NET) can directly target these libraries, avoiding the need to write wrapper code or conditionally compile based on target platform, as is common today. +Another benefit is common access to standard libraries. The CoreFX library includes collections, console access, diagnostics, IO, LINQ, JSON, XML, and regular expression support, just to name a few. Applications targeting a variety of devices and deployment models (such as Windows Desktop, Windows Store, Windows Phone, and ASP.NET) can directly target these libraries, avoiding the need to write wrapper code or conditionally compile based on target platform, as is common today. Motivation Behind .NET Core ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -The fragmentation of .NET and its capabilities across different platforms is the primary motivation for .NET Core. When .NET first shipped in 2002, it was a single framework, but it didn't take long before the .NET Compact Framework shipped, providing a smaller version of .NET designed for mobile devices. Over the years, this exercise was repeated multiple times, so that today there are different flavors of .NET specific to different platforms. Add to this the further fragmentation created by Mono and Xamarin, which target Linux, Mac, and native iOS and Android devices, and the need for a single common Core of .NET that works the same across all of these platforms becomes even more apparent. Since .NET Core is a full open source project, it will no longer be necessary for Mono to maintain its own fork of this technology, and instead Microsoft and the Mono community can collaborate together on .NET Core. - -.. note:: The `.NET Framework Client Profile`_ shared some of the goals of .NET Core when it was provided with .NET 4 and earlier versions, providing a subset of the .NET Framework optimized for client applications. It was later discontinued with the release of the .NET Framework 4.5. - -.. _`.NET Framework Client Profile`: https://msdn.microsoft.com/en-us/library/cc656912%28v=vs.110%29.aspx +The fragmentation of .NET and its capabilities across different platforms is the primary motivation for .NET Core. When .NET first shipped in 2002, it was a single framework, but it didn't take long before the .NET Compact Framework shipped, providing a smaller version of .NET designed for mobile devices. Over the years, this exercise was repeated multiple times, so that today there are different flavors of .NET specific to different platforms. Add to this the further fragmentation created by Mono and Xamarin, which target Linux, Mac, and native iOS and Android devices, and the need for a single common Core of .NET that works the same across all of these platforms becomes even more apparent. Since .NET Core is a full open source project, the Mono community can contribute to it, as well as reference it directly, rather than maintaining copies of libraries CoreFX libraries. .NET Core will not replace Mono, but it will allow the Mono community to reference and share, rather than duplicate, certain common libraries. In addition to being able to target a variety of different device platforms, there was also pressure from the server side to reduce the overall footprint of the .NET framework. By factoring the CoreFX libraries and minimizing the size of CoreFX, server-based applications built with ASP.NET 5 can minimize their size, allowing cloud-based hosting environments to increase the density of applications they can support on a given set of hardware resources. This will provide increased economies of scale for ASP.NET applications hosted on Azure, for instance. From 1d0c3a9de783c466285e1d76146ad3052209f2ef Mon Sep 17 00:00:00 2001 From: Steve Smith Date: Mon, 13 Apr 2015 16:53:09 -0400 Subject: [PATCH 03/11] Addressing additional feedback from @richlander --- .../introducing-dotnetcore/introducing-dotnetcore.rst | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst b/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst index bd5d9e1a3e..71e51fc84f 100644 --- a/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst +++ b/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst @@ -37,7 +37,7 @@ In addition to being able to target a variety of different device platforms, the .NET Core and ASP.NET ^^^^^^^^^^^^^^^^^^^^^ -ASP.NET 5 can target either the full .NET Framework or .NET Core. In fact, ASP.NET 5 projects can be cross-compiled, targeting both of these frameworks in a single project, and this is how the project templates ship with Visual Studio 2015. For example, the *frameworks* section of *project.json* in a new ASP.NET 5 web project will target *dnx451* and *dnxcore50* by default: +ASP.NET 5 can target either the full .NET Framework or .NET Core. In fact, ASP.NET 5 projects can be cross-compiled, targeting both of these frameworks in a single project, and this is how the project templates ship with Visual Studio 2015. For example, the `frameworks` section of *project.json* in a new ASP.NET 5 web project will target *dnx451* and *dnxcore50* by default: .. code-block:: javascript @@ -48,8 +48,7 @@ ASP.NET 5 can target either the full .NET Framework or .NET Core. In fact, ASP.N *dnx451* is the full .NET Framework; *dnxcore50* is .NET Core 5 (5.0). -By contrast, earlier versions of ASP.NET can only target the .NET Framework -ASP.NET 4.6 and earlier can only target the .NET Framework. Since both the full .NET Framework and .NET Core can both be targeted at the same time by ASP.NET 5, the recommendation is to target both with new applications, resolving issues with dependencies that are incompatible with .NET Core through the use of conditional compilation directives or choosing to require the full .NET Framework, if necessary. +Since both the full .NET Framework and .NET Core can both be targeted at the same time by ASP.NET 5, the recommendation is to target both with new applications, resolving issues with dependencies that are incompatible with .NET Core through the use of conditional compilation directives or choosing to require the full .NET Framework, if necessary. Note that ASP.NET 4.6 and earlier target and require the .NET Framework, as always. .. note:: You can use compiler directives (**#if**) to check for symbols that correspond to the two frameworks: **DNX451** and **DNXCORE50**. @@ -58,15 +57,15 @@ If for instance you have code that uses resources that are not available as part .. code-block:: c# #if DNX451 - // utilize resource only available with full .NET + // utilize resource only available with .NET Framework #endif -If you want to only target .NET Core, you should remove *dnx451* from the *frameworks* listed in *project.json*. +If you want to only target .NET Core, remove *dnx451* from the *frameworks* listed in *project.json*. .NET Core and NuGet ^^^^^^^^^^^^^^^^^^^ -As part of the effort to *factor* the CoreFX, the individual assemblies are available as separate NuGet packages. In fact, NuGet is the primary delivery vehicle for .NET Core. If, for example, you need to use immutable collections, you can install the System.Collections.Immutable package via NuGet. The NuGet version will also align with the assembly version, and will use `semantic versioning `_. +As part of the effort to *factor* the CoreFX, the individual assemblies are packaged as separate NuGet packages. In fact, NuGet is the primary delivery vehicle for .NET Core. If, for example, you need to use immutable collections, you can install the System.Collections.Immutable package via NuGet. The NuGet version will also align with the assembly version, and will use `semantic versioning `_. Using NuGet allows for much more agile usage of the individual libraries that comprise .NET Core. It also means that an application can list a collection of NuGet packages (and associated version information) and this will comprise both system/framework as well as third-party dependencies required. Further, third-party dependencies can now also express their specific dependencies on framework features, making it much easier to ensure the proper packages and versions are pulled together during the development and build process. From 861ff5c75f18b767a8561978b5a7b71a5b5b6f99 Mon Sep 17 00:00:00 2001 From: Steve Smith Date: Wed, 15 Apr 2015 10:06:26 -0400 Subject: [PATCH 04/11] Updated css to support :keyword: styling --- docs/_static/custom.css | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/_static/custom.css b/docs/_static/custom.css index 5523a36424..2a267cd57e 100644 --- a/docs/_static/custom.css +++ b/docs/_static/custom.css @@ -8,4 +8,10 @@ div.photo { } div.bio { margin-left:10px; +} + +code.std-keyword { + background-color: #EEEEEE; + color: black; + border-radius: 5px; } \ No newline at end of file From ea2834f998456cf26359ac5cc156697ac17e08aa Mon Sep 17 00:00:00 2001 From: Steve Smith Date: Wed, 15 Apr 2015 10:06:44 -0400 Subject: [PATCH 05/11] Updated to address @richlander and @damianedwards comments --- .../introducing-dotnetcore.rst | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst b/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst index 71e51fc84f..13c75c50cb 100644 --- a/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst +++ b/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst @@ -4,7 +4,7 @@ By `Steve Smith`_ | Originally Published: 1 June 2015 .. _`Steve Smith`: Author_ -.NET Core is a small, optimized runtime that can be targeted by ASP.NET 5 applications. In fact, the new ASP.NET 5 project templates target .NET Core by default, in addition to the .NET Framework. Learn what targeting .NET Core, or *dnxcore50*, means for your ASP.NET 5 application. +.NET Core is a small, optimized runtime that can be targeted by ASP.NET 5 applications. In fact, the new ASP.NET 5 project templates target .NET Core by default, in addition to the .NET Framework. Learn what targeting .NET Core means for your ASP.NET 5 application. This article covers the following topics: - What is .NET Core? @@ -23,21 +23,23 @@ What is .NET Core The CoreCLR runtime is made available via NuGet (Microsoft.CoreCLR); the CoreFX library is also available as a set of individual NuGet packages, factored according to functionality. These packages are named "System.[module]" on `nuget.org `_. -One of the key benefits of .NET Core is its portability. You can package and deploy the CoreCLR with your application, eliminating your application's dependency on an installed version of the full .NET Framework at the device or server level. You can host multiple applications side-by-side using different versions of the CoreCLR, and upgrade them individually, rather than being forced to upgrade all of them simultaneously. +One of the key benefits of .NET Core is its portability. You can package and deploy the CoreCLR with your application, eliminating your application's dependency on an installed version of .NET (e.g. .NET Framework on Windows). You can host multiple applications side-by-side using different versions of the CoreCLR, and upgrade them individually, rather than being forced to upgrade all of them simultaneously. -Another benefit is common access to standard libraries. The CoreFX library includes collections, console access, diagnostics, IO, LINQ, JSON, XML, and regular expression support, just to name a few. Applications targeting a variety of devices and deployment models (such as Windows Desktop, Windows Store, Windows Phone, and ASP.NET) can directly target these libraries, avoiding the need to write wrapper code or conditionally compile based on target platform, as is common today. +Another benefit of CoreFX is that it allows developers to target a single common set of libraries across many different platforms. The CoreFX library includes collections, console access, diagnostics, IO, LINQ, JSON, XML, and regular expression support, just to name a few. Applications targeting a variety of devices and deployment models (such as Windows Desktop, Windows Store, Windows Phone, and ASP.NET) can directly target these libraries, avoiding the need to write wrapper code or conditionally compile based on target platform, as was often required with previous versions of the .NET Framework. Motivation Behind .NET Core ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The fragmentation of .NET and its capabilities across different platforms is the primary motivation for .NET Core. When .NET first shipped in 2002, it was a single framework, but it didn't take long before the .NET Compact Framework shipped, providing a smaller version of .NET designed for mobile devices. Over the years, this exercise was repeated multiple times, so that today there are different flavors of .NET specific to different platforms. Add to this the further fragmentation created by Mono and Xamarin, which target Linux, Mac, and native iOS and Android devices, and the need for a single common Core of .NET that works the same across all of these platforms becomes even more apparent. Since .NET Core is a full open source project, the Mono community can contribute to it, as well as reference it directly, rather than maintaining copies of libraries CoreFX libraries. .NET Core will not replace Mono, but it will allow the Mono community to reference and share, rather than duplicate, certain common libraries. -In addition to being able to target a variety of different device platforms, there was also pressure from the server side to reduce the overall footprint of the .NET framework. By factoring the CoreFX libraries and minimizing the size of CoreFX, server-based applications built with ASP.NET 5 can minimize their size, allowing cloud-based hosting environments to increase the density of applications they can support on a given set of hardware resources. This will provide increased economies of scale for ASP.NET applications hosted on Azure, for instance. +In addition to being able to target a variety of different device platforms, there was also pressure from the server side to reduce the overall footprint of the .NET Framework. By factoring the CoreFX libraries and allowing individual applications to pull in only those parts of CoreFX they require (a so-called "pay-for-play" model), server-based applications built with ASP.NET 5 can minimize total deployed size (especially when being deployed side-by-side). This in turn can increase the density of applications cloud hosting environments can support on a given set of hardware resources (though this is not the only way in which ASP.NET has increased app density). This provides increased economies of scale for ASP.NET applications hosted in cloud environments, such as Azure. + +..note The overall size of .NET Core doesn't intend to be smaller than the .NET Framework over time, but since it is pay-for-play, most applications that utilize only parts of CoreFX will have a smaller deployment footprint. .NET Core and ASP.NET ^^^^^^^^^^^^^^^^^^^^^ -ASP.NET 5 can target either the full .NET Framework or .NET Core. In fact, ASP.NET 5 projects can be cross-compiled, targeting both of these frameworks in a single project, and this is how the project templates ship with Visual Studio 2015. For example, the `frameworks` section of *project.json* in a new ASP.NET 5 web project will target *dnx451* and *dnxcore50* by default: +ASP.NET 5 can target either the full .NET Framework or .NET Core. In fact, ASP.NET 5 projects can be cross-compiled, targeting both of these frameworks in a single project, and this is how the project templates ship with Visual Studio 2015. For example, the :keyword:`frameworks` section of *project.json* in a new ASP.NET 5 web project will target *dnx451* and *dnxcore50* by default: .. code-block:: javascript @@ -50,7 +52,7 @@ ASP.NET 5 can target either the full .NET Framework or .NET Core. In fact, ASP.N Since both the full .NET Framework and .NET Core can both be targeted at the same time by ASP.NET 5, the recommendation is to target both with new applications, resolving issues with dependencies that are incompatible with .NET Core through the use of conditional compilation directives or choosing to require the full .NET Framework, if necessary. Note that ASP.NET 4.6 and earlier target and require the .NET Framework, as always. -.. note:: You can use compiler directives (**#if**) to check for symbols that correspond to the two frameworks: **DNX451** and **DNXCORE50**. +.. note:: You can use compiler directives (**#if**) to check for symbols that correspond to the two frameworks: :keyword:`DNX451` and :keyword:`DNXCORE50`. If for instance you have code that uses resources that are not available as part of .NET Core, you can surround them in a conditional compilation directive: @@ -65,7 +67,7 @@ If you want to only target .NET Core, remove *dnx451* from the *frameworks* list .NET Core and NuGet ^^^^^^^^^^^^^^^^^^^ -As part of the effort to *factor* the CoreFX, the individual assemblies are packaged as separate NuGet packages. In fact, NuGet is the primary delivery vehicle for .NET Core. If, for example, you need to use immutable collections, you can install the System.Collections.Immutable package via NuGet. The NuGet version will also align with the assembly version, and will use `semantic versioning `_. +As part of the effort to *factor* the CoreFX, the individual assemblies are distributed as separate NuGet packages. In fact, NuGet is the primary delivery vehicle for .NET Core. If, for example, you need to use immutable collections, you can install the System.Collections.Immutable package via NuGet. The NuGet version will also align with the assembly version, and will use `semantic versioning `_. Using NuGet allows for much more agile usage of the individual libraries that comprise .NET Core. It also means that an application can list a collection of NuGet packages (and associated version information) and this will comprise both system/framework as well as third-party dependencies required. Further, third-party dependencies can now also express their specific dependencies on framework features, making it much easier to ensure the proper packages and versions are pulled together during the development and build process. @@ -74,7 +76,7 @@ Using NuGet allows for much more agile usage of the individual libraries that co Summary ^^^^^^^ -.NET Core is a modular, streamlined subset of the full .NET Framework and CLR. It is fully open-source and provides a common set of libraries that can be targeted across numerous platforms. Its factored approach allows applications to take dependencies only on those portions of the CoreFX that they use, and the smaller runtime is ideal for deployment to both small devices as well as cloud-optimized environments that need to be able to run many small applications side-by-side. Support for targeting .NET Core is built into the ASP.NET 5 project templates that ship with Visual Studio 2015. +.NET Core is a modular, streamlined subset of the full .NET Framework and CLR. It is fully open-source and provides a common set of libraries that can be targeted across numerous platforms. Its factored approach allows applications to take dependencies only on those portions of the CoreFX that they use, and the smaller runtime is ideal for deployment to both small devices (though it doesn't yet support any) as well as cloud-optimized environments that need to be able to run many small applications side-by-side. Support for targeting .NET Core is built into the ASP.NET 5 project templates that ship with Visual Studio 2015. Additional Reading ^^^^^^^^^^^^^^^^^^ From 566295701d6dc9cc23e8a79d9cea72e2676c1233 Mon Sep 17 00:00:00 2001 From: Rich Lander Date: Wed, 15 Apr 2015 09:19:45 -0700 Subject: [PATCH 06/11] Clarify various concepts and tighten text - Clarified a few concepts - Tightened the text The "Motivation Behind .NET Core" still needs help. It doesn't correctly describe the primary motivation for the project. As I said before, .NET Core wasn't built to solve the fragmentation issue, but to provide a cross-platform version of .NET. CoreFX was built to be componentized to enable smaller distributions. It was also built to solve the fragmentation issue, but as a secondary concern. --- .../introducing-dotnetcore.rst | 24 +++++++------------ 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst b/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst index 13c75c50cb..df5cf00667 100644 --- a/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst +++ b/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst @@ -16,16 +16,16 @@ This article covers the following topics: What is .NET Core ^^^^^^^^^^^^^^^^^ -.NET Core 5 is a modular runtime and library implementation that includes a subset of the full .NET Framework. Currently it is feature complete on Windows, and is in-progress builds exist for both Linux and OS X. .NET Core consists of a set of libraries, called "CoreFX", and a small, optimized runtime, called "CoreCLR". .NET Core is open-source, so you can follow progress on the project and contribute to it on GitHub: +.NET Core 5 is a modular runtime and library implementation that includes a subset of the .NET Framework. Currently it is feature complete on Windows, and in-progress builds exist for both Linux and OS X. .NET Core consists of a set of libraries, called "CoreFX", and a small, optimized runtime, called "CoreCLR". .NET Core is open-source, so you can follow progress on the project and contribute to it on GitHub: - `.NET Core Libraries (CoreFX) `_ - `.NET Core Common Language Runtime (CoreCLR) `_ -The CoreCLR runtime is made available via NuGet (Microsoft.CoreCLR); the CoreFX library is also available as a set of individual NuGet packages, factored according to functionality. These packages are named "System.[module]" on `nuget.org `_. +The CoreCLR runtime (Microsoft.CoreCLR) and CoreFX libraries are distributed via NuGet. The CoreFX libraries are factored as individual NuGet packages according to functionality, named "System.[module]" on `nuget.org `_. One of the key benefits of .NET Core is its portability. You can package and deploy the CoreCLR with your application, eliminating your application's dependency on an installed version of .NET (e.g. .NET Framework on Windows). You can host multiple applications side-by-side using different versions of the CoreCLR, and upgrade them individually, rather than being forced to upgrade all of them simultaneously. -Another benefit of CoreFX is that it allows developers to target a single common set of libraries across many different platforms. The CoreFX library includes collections, console access, diagnostics, IO, LINQ, JSON, XML, and regular expression support, just to name a few. Applications targeting a variety of devices and deployment models (such as Windows Desktop, Windows Store, Windows Phone, and ASP.NET) can directly target these libraries, avoiding the need to write wrapper code or conditionally compile based on target platform, as was often required with previous versions of the .NET Framework. +CoreFX has been built as a componentized set of libraries, each requiring the minimum set of library dependencies (e.g. System.Collections only depends on System.Runtime, not System.XML). This approach enables minimal distributions of CoreFX libraries (just the ones you need) within an application, alongside CoreCLR. CoreFX includes collections, console access, diagnostics, IO, LINQ, JSON, XML, and regular expression support, just to name a few libraries. Another benefit of CoreFX is that it allows developers to target a single common set of libraries that are supported by multiple platforms. Motivation Behind .NET Core ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -39,7 +39,7 @@ In addition to being able to target a variety of different device platforms, the .NET Core and ASP.NET ^^^^^^^^^^^^^^^^^^^^^ -ASP.NET 5 can target either the full .NET Framework or .NET Core. In fact, ASP.NET 5 projects can be cross-compiled, targeting both of these frameworks in a single project, and this is how the project templates ship with Visual Studio 2015. For example, the :keyword:`frameworks` section of *project.json* in a new ASP.NET 5 web project will target *dnx451* and *dnxcore50* by default: +ASP.NET 5 can target either the .NET Framework or .NET Core. In fact, ASP.NET 5 projects can be cross-compiled, targeting both of these frameworks in a single project, and this is how the project templates ship with Visual Studio 2015. For example, the :keyword:`frameworks` section of *project.json* in a new ASP.NET 5 web project will target *dnx451* and *dnxcore50* by default: .. code-block:: javascript @@ -48,13 +48,7 @@ ASP.NET 5 can target either the full .NET Framework or .NET Core. In fact, ASP.N "dnxcore50": { } }, -*dnx451* is the full .NET Framework; *dnxcore50* is .NET Core 5 (5.0). - -Since both the full .NET Framework and .NET Core can both be targeted at the same time by ASP.NET 5, the recommendation is to target both with new applications, resolving issues with dependencies that are incompatible with .NET Core through the use of conditional compilation directives or choosing to require the full .NET Framework, if necessary. Note that ASP.NET 4.6 and earlier target and require the .NET Framework, as always. - -.. note:: You can use compiler directives (**#if**) to check for symbols that correspond to the two frameworks: :keyword:`DNX451` and :keyword:`DNXCORE50`. - -If for instance you have code that uses resources that are not available as part of .NET Core, you can surround them in a conditional compilation directive: +*dnx451* represents the .NET Framework, while *dnxcore50* represents .NET Core 5 (5.0). You can use compiler directives (**#if**) to check for symbols that correspond to the two frameworks: :keyword:`DNX451` and :keyword:`DNXCORE50`. If for instance you have code that uses resources that are not available as part of .NET Core, you can surround them in a conditional compilation directive: .. code-block:: c# @@ -62,21 +56,21 @@ If for instance you have code that uses resources that are not available as part // utilize resource only available with .NET Framework #endif -If you want to only target .NET Core, remove *dnx451* from the *frameworks* listed in *project.json*. +The recommendation from the ASP.NET team is to target both frameworks with new applications. If you want to only target .NET Core, remove *dnx451*, or only target .NET Framework, remove *dnxcore50*, from the *frameworks* listed in *project.json*. Note that ASP.NET 4.6 and earlier target and require the .NET Framework, as they always have. .NET Core and NuGet ^^^^^^^^^^^^^^^^^^^ -As part of the effort to *factor* the CoreFX, the individual assemblies are distributed as separate NuGet packages. In fact, NuGet is the primary delivery vehicle for .NET Core. If, for example, you need to use immutable collections, you can install the System.Collections.Immutable package via NuGet. The NuGet version will also align with the assembly version, and will use `semantic versioning `_. - Using NuGet allows for much more agile usage of the individual libraries that comprise .NET Core. It also means that an application can list a collection of NuGet packages (and associated version information) and this will comprise both system/framework as well as third-party dependencies required. Further, third-party dependencies can now also express their specific dependencies on framework features, making it much easier to ensure the proper packages and versions are pulled together during the development and build process. +If, for example, you need to use immutable collections, you can install the System.Collections.Immutable package via NuGet. The NuGet version will also align with the assembly version, and will use `semantic versioning `_. + .. note:: Although CoreFX will be made available as a fairly large number of individual NuGet packages, it will continue to ship periodically as a full unit that Microsoft has been tested as a whole. These distributions will most likely ship at a lower cadence than individual packages, allowing time to perform necessary testing, fixes, and the distribution process. Summary ^^^^^^^ -.NET Core is a modular, streamlined subset of the full .NET Framework and CLR. It is fully open-source and provides a common set of libraries that can be targeted across numerous platforms. Its factored approach allows applications to take dependencies only on those portions of the CoreFX that they use, and the smaller runtime is ideal for deployment to both small devices (though it doesn't yet support any) as well as cloud-optimized environments that need to be able to run many small applications side-by-side. Support for targeting .NET Core is built into the ASP.NET 5 project templates that ship with Visual Studio 2015. +.NET Core is a modular, streamlined subset of the .NET Framework and CLR. It is fully open-source and provides a common set of libraries that can be targeted across numerous platforms. Its factored approach allows applications to take dependencies only on those portions of the CoreFX that they use, and the smaller runtime is ideal for deployment to both small devices (though it doesn't yet support any) as well as cloud-optimized environments that need to be able to run many small applications side-by-side. Support for targeting .NET Core is built into the ASP.NET 5 project templates that ship with Visual Studio 2015. Additional Reading ^^^^^^^^^^^^^^^^^^ From 5279147f5b20f7dc5998783cd088ee32095cc375 Mon Sep 17 00:00:00 2001 From: Steve Smith Date: Wed, 15 Apr 2015 14:50:47 -0400 Subject: [PATCH 07/11] Reworking motivation section per @richlander 's feedback (thanks again). --- .../introducing-dotnetcore/introducing-dotnetcore.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst b/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst index df5cf00667..21fe5a5c85 100644 --- a/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst +++ b/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst @@ -30,7 +30,7 @@ CoreFX has been built as a componentized set of libraries, each requiring the mi Motivation Behind .NET Core ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -The fragmentation of .NET and its capabilities across different platforms is the primary motivation for .NET Core. When .NET first shipped in 2002, it was a single framework, but it didn't take long before the .NET Compact Framework shipped, providing a smaller version of .NET designed for mobile devices. Over the years, this exercise was repeated multiple times, so that today there are different flavors of .NET specific to different platforms. Add to this the further fragmentation created by Mono and Xamarin, which target Linux, Mac, and native iOS and Android devices, and the need for a single common Core of .NET that works the same across all of these platforms becomes even more apparent. Since .NET Core is a full open source project, the Mono community can contribute to it, as well as reference it directly, rather than maintaining copies of libraries CoreFX libraries. .NET Core will not replace Mono, but it will allow the Mono community to reference and share, rather than duplicate, certain common libraries. +When .NET first shipped in 2002, it was a single framework, but it didn't take long before the .NET Compact Framework shipped, providing a smaller version of .NET designed for mobile devices. Over the years, this exercise was repeated multiple times, so that today there are different flavors of .NET specific to different platforms. Add to this the further platform reach provided by Mono and Xamarin, which target Linux, Mac, and native iOS and Android devices. For each platform, a separate vertical stack consisting of runtime, framework, and app model is required to develop .NET applications. One of the primary goals of .NET Core is to provide a single, modular, cross-platform version of .NET that works the same across all of these platforms. Since .NET Core is a full open source project, the Mono community can benefit from CoreFX libraries. .NET Core will not replace Mono, but it will allow the Mono community to reference and share, rather than duplicate, certain common libraries, and to contribute directly to CoreFX, if desired. In addition to being able to target a variety of different device platforms, there was also pressure from the server side to reduce the overall footprint of the .NET Framework. By factoring the CoreFX libraries and allowing individual applications to pull in only those parts of CoreFX they require (a so-called "pay-for-play" model), server-based applications built with ASP.NET 5 can minimize total deployed size (especially when being deployed side-by-side). This in turn can increase the density of applications cloud hosting environments can support on a given set of hardware resources (though this is not the only way in which ASP.NET has increased app density). This provides increased economies of scale for ASP.NET applications hosted in cloud environments, such as Azure. From 845ca9a004ba204918fbfb12945ee27273cb0314 Mon Sep 17 00:00:00 2001 From: Steve Smith Date: Sat, 18 Apr 2015 15:13:44 -0400 Subject: [PATCH 08/11] Updated in response to @danroth27 feedback --- .../introducing-dotnetcore/introducing-dotnetcore.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst b/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst index 21fe5a5c85..879350f644 100644 --- a/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst +++ b/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst @@ -25,14 +25,14 @@ The CoreCLR runtime (Microsoft.CoreCLR) and CoreFX libraries are distributed via One of the key benefits of .NET Core is its portability. You can package and deploy the CoreCLR with your application, eliminating your application's dependency on an installed version of .NET (e.g. .NET Framework on Windows). You can host multiple applications side-by-side using different versions of the CoreCLR, and upgrade them individually, rather than being forced to upgrade all of them simultaneously. -CoreFX has been built as a componentized set of libraries, each requiring the minimum set of library dependencies (e.g. System.Collections only depends on System.Runtime, not System.XML). This approach enables minimal distributions of CoreFX libraries (just the ones you need) within an application, alongside CoreCLR. CoreFX includes collections, console access, diagnostics, IO, LINQ, JSON, XML, and regular expression support, just to name a few libraries. Another benefit of CoreFX is that it allows developers to target a single common set of libraries that are supported by multiple platforms. +CoreFX has been built as a componentized set of libraries, each requiring the minimum set of library dependencies (e.g. System.Collections only depends on System.Runtime, not System.Xml). This approach enables minimal distributions of CoreFX libraries (just the ones you need) within an application, alongside CoreCLR. CoreFX includes collections, console access, diagnostics, IO, LINQ, JSON, XML, and regular expression support, just to name a few libraries. Another benefit of CoreFX is that it allows developers to target a single common set of libraries that are supported by multiple platforms. Motivation Behind .NET Core ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -When .NET first shipped in 2002, it was a single framework, but it didn't take long before the .NET Compact Framework shipped, providing a smaller version of .NET designed for mobile devices. Over the years, this exercise was repeated multiple times, so that today there are different flavors of .NET specific to different platforms. Add to this the further platform reach provided by Mono and Xamarin, which target Linux, Mac, and native iOS and Android devices. For each platform, a separate vertical stack consisting of runtime, framework, and app model is required to develop .NET applications. One of the primary goals of .NET Core is to provide a single, modular, cross-platform version of .NET that works the same across all of these platforms. Since .NET Core is a full open source project, the Mono community can benefit from CoreFX libraries. .NET Core will not replace Mono, but it will allow the Mono community to reference and share, rather than duplicate, certain common libraries, and to contribute directly to CoreFX, if desired. +When .NET first shipped in 2002, it was a single framework, but it didn't take long before the .NET Compact Framework shipped, providing a smaller version of .NET designed for mobile devices. Over the years, this exercise was repeated multiple times, so that today there are different flavors of .NET specific to different platforms. Add to this the further platform reach provided by Mono and Xamarin, which target Linux, Mac, and native iOS and Android devices. For each platform, a separate vertical stack consisting of runtime, framework, and app model is required to develop .NET applications. One of the primary goals of .NET Core is to provide a single, modular, cross-platform version of .NET that works the same across all of these platforms. Since .NET Core is a fully open source project, the Mono community can benefit from CoreFX libraries. .NET Core will not replace Mono, but it will allow the Mono community to reference and share, rather than duplicate, certain common libraries, and to contribute directly to CoreFX, if desired. -In addition to being able to target a variety of different device platforms, there was also pressure from the server side to reduce the overall footprint of the .NET Framework. By factoring the CoreFX libraries and allowing individual applications to pull in only those parts of CoreFX they require (a so-called "pay-for-play" model), server-based applications built with ASP.NET 5 can minimize total deployed size (especially when being deployed side-by-side). This in turn can increase the density of applications cloud hosting environments can support on a given set of hardware resources (though this is not the only way in which ASP.NET has increased app density). This provides increased economies of scale for ASP.NET applications hosted in cloud environments, such as Azure. +In addition to being able to target a variety of different device platforms, there was also pressure from the server side to reduce the overall footprint, and more importantly, surface area, of the .NET Framework. By factoring the CoreFX libraries and allowing individual applications to pull in only those parts of CoreFX they require (a so-called "pay-for-play" model), server-based applications built with ASP.NET 5 can minimize their dependencies. This, in turn, reduces the frequency with which patches and updates to the framework will impact these applications, since only changes made to the individual pieces of CoreFX leveraged by the application will impact the application. A smaller deployment size for the application is a side benefit, and one that makes more of a difference if many applications are deployed side-by-side on a given server. ..note The overall size of .NET Core doesn't intend to be smaller than the .NET Framework over time, but since it is pay-for-play, most applications that utilize only parts of CoreFX will have a smaller deployment footprint. From 4e665f831c737656ab8d5fa1983635dc17d66d29 Mon Sep 17 00:00:00 2001 From: Steve Smith Date: Mon, 20 Apr 2015 13:38:44 -0400 Subject: [PATCH 09/11] Updated in response to @danroth27 feedback --- .../introducing-dotnetcore.rst | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst b/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst index 879350f644..41d47d850e 100644 --- a/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst +++ b/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst @@ -7,11 +7,11 @@ By `Steve Smith`_ | Originally Published: 1 June 2015 .NET Core is a small, optimized runtime that can be targeted by ASP.NET 5 applications. In fact, the new ASP.NET 5 project templates target .NET Core by default, in addition to the .NET Framework. Learn what targeting .NET Core means for your ASP.NET 5 application. This article covers the following topics: - - What is .NET Core? - - Motivation Behind .NET Core - - .NET Core and ASP.NET - - .NET Core and NuGet - - Additional Reading + - `What is .NET Core`_? + - `Motivation Behind .NET Core`_ + - `Building Applications with .NET Core`_ + - `.NET Core and NuGet`_ + - `Additional Reading`_ What is .NET Core ^^^^^^^^^^^^^^^^^ @@ -36,8 +36,8 @@ In addition to being able to target a variety of different device platforms, the ..note The overall size of .NET Core doesn't intend to be smaller than the .NET Framework over time, but since it is pay-for-play, most applications that utilize only parts of CoreFX will have a smaller deployment footprint. -.NET Core and ASP.NET -^^^^^^^^^^^^^^^^^^^^^ +Building Applications with .NET Core +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ASP.NET 5 can target either the .NET Framework or .NET Core. In fact, ASP.NET 5 projects can be cross-compiled, targeting both of these frameworks in a single project, and this is how the project templates ship with Visual Studio 2015. For example, the :keyword:`frameworks` section of *project.json* in a new ASP.NET 5 web project will target *dnx451* and *dnxcore50* by default: @@ -65,7 +65,7 @@ Using NuGet allows for much more agile usage of the individual libraries that co If, for example, you need to use immutable collections, you can install the System.Collections.Immutable package via NuGet. The NuGet version will also align with the assembly version, and will use `semantic versioning `_. -.. note:: Although CoreFX will be made available as a fairly large number of individual NuGet packages, it will continue to ship periodically as a full unit that Microsoft has been tested as a whole. These distributions will most likely ship at a lower cadence than individual packages, allowing time to perform necessary testing, fixes, and the distribution process. +.. note:: Although CoreFX will be made available as a fairly large number of individual NuGet packages, it will continue to ship periodically as a full unit that Microsoft has tested as a whole. These distributions will most likely ship at a lower cadence than individual packages, allowing time to perform necessary testing, fixes, and the distribution process. Summary ^^^^^^^ From b5b90be1beaea664159dbcea5c12952df9628a02 Mon Sep 17 00:00:00 2001 From: Steve Smith Date: Mon, 20 Apr 2015 14:04:30 -0400 Subject: [PATCH 10/11] A few more updates per @danroth27 --- .../introducing-dotnetcore/introducing-dotnetcore.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst b/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst index 41d47d850e..b32ce421fb 100644 --- a/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst +++ b/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst @@ -39,7 +39,7 @@ In addition to being able to target a variety of different device platforms, the Building Applications with .NET Core ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -ASP.NET 5 can target either the .NET Framework or .NET Core. In fact, ASP.NET 5 projects can be cross-compiled, targeting both of these frameworks in a single project, and this is how the project templates ship with Visual Studio 2015. For example, the :keyword:`frameworks` section of *project.json* in a new ASP.NET 5 web project will target *dnx451* and *dnxcore50* by default: +.NET Core can be used to build a variety of applications using different application models including Web applications, console applications and native mobile applications. The .NET Execution Environment (DNX) provides a cross-platform runtime host that you can use to build .NET Core based applications that can run on Windows, Mac and Linux and is the foundation for running ASP.NET applications on .NET Core. Applications running on DNX can target the .NET Framework or .NET Core. In fact, DNX projects can be cross-compiled, targeting both of these frameworks in a single project, and this is how the project templates ship with Visual Studio 2015. For example, the :keyword:`frameworks` section of *project.json* in a new ASP.NET 5 web project will target *dnx451* and *dnxcore50* by default: .. code-block:: javascript From 4a0577fab3d27fd3337dcbd61ceafcf344bb7b2f Mon Sep 17 00:00:00 2001 From: Steve Smith Date: Mon, 20 Apr 2015 14:18:14 -0400 Subject: [PATCH 11/11] Formatting keywords --- .../introducing-dotnetcore/introducing-dotnetcore.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst b/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst index b32ce421fb..95a09542de 100644 --- a/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst +++ b/docs/dotnetcore/introducing-dotnetcore/introducing-dotnetcore.rst @@ -39,7 +39,7 @@ In addition to being able to target a variety of different device platforms, the Building Applications with .NET Core ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.NET Core can be used to build a variety of applications using different application models including Web applications, console applications and native mobile applications. The .NET Execution Environment (DNX) provides a cross-platform runtime host that you can use to build .NET Core based applications that can run on Windows, Mac and Linux and is the foundation for running ASP.NET applications on .NET Core. Applications running on DNX can target the .NET Framework or .NET Core. In fact, DNX projects can be cross-compiled, targeting both of these frameworks in a single project, and this is how the project templates ship with Visual Studio 2015. For example, the :keyword:`frameworks` section of *project.json* in a new ASP.NET 5 web project will target *dnx451* and *dnxcore50* by default: +.NET Core can be used to build a variety of applications using different application models including Web applications, console applications and native mobile applications. The .NET Execution Environment (DNX) provides a cross-platform runtime host that you can use to build .NET Core based applications that can run on Windows, Mac and Linux and is the foundation for running ASP.NET applications on .NET Core. Applications running on DNX can target the .NET Framework or .NET Core. In fact, DNX projects can be cross-compiled, targeting both of these frameworks in a single project, and this is how the project templates ship with Visual Studio 2015. For example, the ``frameworks`` section of *project.json* in a new ASP.NET 5 web project will target *dnx451* and *dnxcore50* by default: .. code-block:: javascript @@ -48,7 +48,7 @@ Building Applications with .NET Core "dnxcore50": { } }, -*dnx451* represents the .NET Framework, while *dnxcore50* represents .NET Core 5 (5.0). You can use compiler directives (**#if**) to check for symbols that correspond to the two frameworks: :keyword:`DNX451` and :keyword:`DNXCORE50`. If for instance you have code that uses resources that are not available as part of .NET Core, you can surround them in a conditional compilation directive: +``dnx451`` represents the .NET Framework, while ``dnxcore50`` represents .NET Core 5 (5.0). You can use compiler directives (``#if``) to check for symbols that correspond to the two frameworks: ``DNX451`` and ``DNXCORE50``. If for instance you have code that uses resources that are not available as part of .NET Core, you can surround them in a conditional compilation directive: .. code-block:: c#