Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 9 additions & 7 deletions docs/standard/get-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,23 @@ There are a number of ways to get started with .NET. Because .NET is a massive p

## Get started using .NET languages

* The [C# getting started](../csharp/getting-started/index.md) articles and [C# tutorials](../csharp/tutorials/index.md) provide ways to get started in a C#-centric way.
For getting-started tutorials in C#, Visual Basic, and F#, see:

* The [F# getting started](../fsharp/get-started/index.md) tutorials cover the three primary ways you can use F#: with Visual Studio, Visual Studio Code, or command-line tools.

* The [Visual Basic getting started](../visual-basic/getting-started/index.md) articles provide guides for using Visual Basic in Visual Studio.
* [Get started in C#](../csharp/getting-started/index.md)
* [C# tutorials](../csharp/tutorials/index.md)
* [F# getting-started tutorials](../fsharp/get-started/index.md)
* [Get started in Visual Basic](../visual-basic/getting-started/index.md)

## Get started using .NET Core

* [Get started with .NET Core](../core/get-started.md) provides an overview of articles that show how to get started with .NET Core on different operating systems and using different tools.
For .NET Core-specific guidance, see:

* The [.NET Core tutorials](../core/tutorials/index.md) detail ways you can get started with .NET Core using your operating system and tooling of choice.
* [Get started with .NET Core](../core/get-started.md)
* [.NET Core tutorials](../core/tutorials/index.md)

## Get started using .NET Standard

* For an introductory tutorial, see [Build a .NET Standard library in Visual Studio](../core/tutorials/library-with-visual-studio.md).
For an introductory tutorial, see [Build a .NET Standard library in Visual Studio](../core/tutorials/library-with-visual-studio.md).

## Get started using .NET Core on Docker

Expand Down
12 changes: 6 additions & 6 deletions docs/standard/net-standard.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: .NET Standard
description: Learn about .NET Standard, its versions and the .NET implementations that support it.
description: Learn about .NET Standard, its versions, and the .NET implementations that support it.
ms.date: 02/13/2020
ms.technology: dotnet-standard
ms.custom: "updateeachrelease"
Expand Down Expand Up @@ -94,9 +94,9 @@ APIs added to any of the implementations (such as, .NET Framework, .NET Core and
- Use libraries that depend on the same .NET Standard version or lower.
- If you find a library that depends on a higher .NET Standard version, you either need to adopt that same version or decide not to use that library.

## Targeting .NET Standard
## Target .NET Standard

You can [build .NET Standard Libraries](../core/tutorials/libraries.md) using a combination of the `netstandard` framework and the NETStandard.Library metapackage. You can see examples of [targeting the .NET Standard with .NET Core tools](../core/packages.md).
You can [build .NET Standard Libraries](../core/tutorials/libraries.md) using a combination of the `netstandard` framework and the NETStandard.Library metapackage. You can see examples of [targeting .NET Standard with .NET Core tools](../core/packages.md).

## .NET Framework compatibility mode

Expand All @@ -112,7 +112,7 @@ If you only need to consume .NET Standard 2.0 libraries in your projects, you ca

## Comparison to Portable Class Libraries

.NET Standard is the replacement for [Portable Class Libraries (PCL)](./cross-platform/cross-platform-development-with-the-portable-class-library.md). The .NET Standard improves on the experience of creating portable libraries by curating a standard BCL and establishing greater uniformity across .NET implementations as a result. A library that targets .NET Standard is a PCL or a ".NET Standard-based PCL". Existing PCLs are "profile-based PCLs".
.NET Standard is the replacement for [Portable Class Libraries (PCL)](./cross-platform/cross-platform-development-with-the-portable-class-library.md). .NET Standard improves on the experience of creating portable libraries by curating a standard BCL and establishing greater uniformity across .NET implementations as a result. A library that targets .NET Standard is a PCL or a ".NET Standard-based PCL". Existing PCLs are "profile-based PCLs".

.NET Standard and PCL profiles were created for similar purposes but also differ in key ways.

Expand All @@ -124,7 +124,7 @@ Differences:

- .NET Standard is a curated set of APIs, while PCL profiles are defined by intersections of existing platforms.
- .NET Standard linearly versions, while PCL profiles do not.
- PCL profiles represents Microsoft platforms while the .NET Standard is platform-agnostic.
- PCL profiles represents Microsoft platforms while .NET Standard is platform-agnostic.

### PCL compatibility

Expand All @@ -137,7 +137,7 @@ Profile-based PCL compatibility is provided by the [Microsoft.NETCore.Portable.C

Profile-based PCLs packaged as `netstandard` are easier to consume than typically packaged profile-based PCLs. `netstandard` packaging is compatible with existing users.

You can see the set of PCL profiles that are compatible with the .NET Standard:
You can see the set of PCL profiles that are compatible with .NET Standard:

| PCL Profile | .NET Standard | PCL Platforms
|:-----------:|:-------------:|------------------------------------------------------------------------------
Expand Down
132 changes: 73 additions & 59 deletions docs/standard/toc.yml
Original file line number Diff line number Diff line change
@@ -1,149 +1,163 @@
- name: .NET Standard Guide
- name: .NET documentation
href: index.md
- name: Get Started with .NET
- name: Get started with .NET
href: get-started.md
- name: Tour of .NET
href: tour.md
- name: .NET Architectural Components
- name: .NET architectural components
href: components.md
- name: .NET Standard
- name: .NET Standard overview
href: net-standard.md
items:
- name: What's new in the .NET Standard
href: whats-new/whats-new-in-dotnet-standard.md
- name: Target Frameworks
- name: What's new in .NET Standard
href: whats-new/whats-new-in-dotnet-standard.md
- name: Target frameworks
href: frameworks.md
- name: .NET Glossary
- name: .NET glossary
href: glossary.md
- name: Open-source Library Guidance
- name: Open-source library guidance
href: library-guidance/
- name: Choosing between .NET Core and .NET Framework for server apps
- name: Choose between .NET Core and .NET Framework for server apps
href: choosing-core-framework-server.md
- name: What is "managed code"?
href: managed-code.md
- name: Managed code
items:
- name: Automatic Memory Management
- name: What is "managed code"?
href: managed-code.md
- name: Automatic memory management
href: automatic-memory-management.md
- name: Common Language Runtime (CLR)
href: clr.md
- name: Language Independence
href: language-independence.md
- name: Language independence
items:
- name: Language Independence and Language-Independent Components
- name: Overview
href: language-independence.md
- name: Language-independent components
href: language-independence-and-language-independent-components.md
- name: Framework Libraries
href: framework-libraries.md
- name: Framework libraries
items:
- name: Class Library Overview
- name: Overview
href: framework-libraries.md
- name: Class library overview
href: class-library-overview.md
- name: Base Types
- name: Base types
href: base-types/
- name: .NET Class libraries
- name: .NET class libraries
href: class-libraries.md
- name: Analyzers
href: analyzers/index.md
items:
- name: API Analyzer
- name: Overview
href: analyzers/index.md
displayName: analyzers
- name: API analyzer
href: analyzers/api-analyzer.md
- name: Portability Analyzer
- name: Portability analyzer
href: analyzers/portability-analyzer.md
- name: Framework Analyzer
- name: Framework analyzer
href: analyzers/framework-analyzer.md
- name: Handling and throwing exceptions
- name: Exception handling
href: exceptions/
- name: Assemblies in .NET
href: assembly/
- name: Garbage Collection
- name: Garbage collection
href: garbage-collection/
- name: Generic types
href: generics.md
- name: Delegates and lambdas
href: delegates-lambdas.md
- name: LINQ
href: using-linq.md
- name: Common Type System & Common Language Specification
- name: Common type system & common language specification
href: common-type-system.md
- name: Parallel Processing, Concurrency, and Async
href: parallel-processing-and-concurrency.md
- name: Parallel processing, concurrency, and async
items:
- name: Overview
href: parallel-processing-and-concurrency.md
displayName: Parallel processing, concurrency, async
- name: Asynchronous programming
href: async.md
items:
- name: Overview
href: async.md
- name: Asynchronous programming in depth
href: async-in-depth.md
- name: Asynchronous Programming Patterns
- name: Asynchronous programming patterns
href: asynchronous-programming-patterns/
- name: Parallel Programming
- name: Parallel programming
href: parallel-programming/
- name: Threading
href: threading/
- name: Memory and span-related types
href: memory-and-spans/index.md
items:
- name: Overview
href: memory-and-spans/index.md
- name: Memory<T> and Span<T> usage guidelines
href: memory-and-spans/memory-t-usage-guidelines.md
- name: Native interoperability
href: native-interop/index.md
items:
- name: Overview
href: native-interop/index.md
displayName: Native interop
- name: P/Invoke
href: native-interop/pinvoke.md
- name: Type marshaling
href: native-interop/type-marshaling.md
- name: Customizing structure marshaling
- name: Customize structure marshaling
href: native-interop/customize-struct-marshaling.md
- name: Customizing parameter marshaling
- name: Customize parameter marshaling
href: native-interop/customize-parameter-marshaling.md
- name: Interop guidance
href: native-interop/best-practices.md
- name: Charsets and marshaling
href: native-interop/charset.md
- name: COM Interop
href: native-interop/cominterop.md
- name: COM interop
items:
- name: COM Wrappers
- name: Overview
href: native-interop/cominterop.md
displayName: COM interop
- name: COM wrappers
items:
- name: Overview
href: native-interop/com-wrappers.md
items:
- name: Runtime Callable Wrapper
href: native-interop/runtime-callable-wrapper.md
- name: COM Callable Wrapper
href: native-interop/com-callable-wrapper.md
- name: Qualifying .NET types for COM interoperation
href: native-interop/qualify-net-types-for-interoperation.md
- name: Applying Interop Attributes
displayName: COM wrappers
- name: Runtime-callable wrapper
href: native-interop/runtime-callable-wrapper.md
- name: COM-callable wrapper
href: native-interop/com-callable-wrapper.md
- name: Qualifying .NET types for COM interop
href: native-interop/qualify-net-types-for-interoperation.md
- name: Apply interop attributes
href: native-interop/apply-interop-attributes.md
- name: Exceptions
href: native-interop/exceptions-interoperability.md
- name: Collections and Data Structures
- name: Collections and data structures
href: collections/
- name: Numerics in .NET
href: numerics.md
- name: Dates, times, and time zones
href: datetime/
- name: Events
href: events/
- name: Managed Execution Process
- name: Managed execution process
href: managed-execution-process.md
- name: Metadata and Self-Describing Components
- name: Metadata and self-describing components
href: metadata-and-self-describing-components.md
- name: Building Console Applications
- name: Create console apps
href: building-console-apps.md
- name: Application Essentials
- name: Application essentials
href: application-essentials.md
- name: File and Stream I/O
- name: File and stream I/O
href: io/index.md
- name: Globalization and Localization
- name: Globalization and localization
href: globalization-localization/
- name: Attributes
href: attributes/
- name: Framework Design Guidelines
- name: Framework design guidelines
href: design-guidelines/
- name: Microsoft.Data.Sqlite
href: data/sqlite/
- name: XML Documents and Data
- name: XML documents and data
href: data/xml/
- name: Security
href: security/
- name: Serialization
href: serialization/
- name: Developing for Multiple Platforms
- name: Develop for multiple platforms
href: cross-platform/
30 changes: 15 additions & 15 deletions docs/standard/whats-new/whats-new-in-dotnet-standard.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
---
title: "What's new in the .NET Standard"
title: "What's new in .NET Standard"
description: This article summarizes new features and enhancements found in each new version of .NET Standard.
ms.custom: "updateeachrelease"
ms.date: "04/12/2018"
ms.custom: updateeachrelease
ms.date: 04/12/2018
ms.technology: dotnet-standard
---
# What's new in the .NET Standard
# What's new in .NET Standard

The .NET Standard is a formal specification that defines a versioned set of APIs that must be available on .NET implementations that comply with that version of the standard. The .NET Standard is targeted at library developers. A library that targets a .NET Standard version can be used on any .NET Framework, .NET Core, or Xamarin implementation that supports that version of the standard.
.NET Standard is a formal specification that defines a versioned set of APIs that must be available on .NET implementations that comply with that version of the standard. .NET Standard is targeted at library developers. A library that targets a .NET Standard version can be used on any .NET Framework, .NET Core, or Xamarin implementation that supports that version of the standard.

The most recent version of the .NET Standard is 2.0. It is included with the .NET Core 2.0 SDK, as well as with Visual Studio 2017 version 15.3 with the .NET Core workload installed.
.NET Standard is included with the .NET Core SDK, as well as with Visual Studio when you select the .NET Core workload.

## Supported .NET implementations

The .NET Standard 2.0 is supported by the following .NET implementations:
.NET Standard 2.0 is supported by the following .NET implementations:

- .NET Core 2.0 or later
- .NET Framework 4.6.1 or later
Expand All @@ -23,13 +23,13 @@ The .NET Standard 2.0 is supported by the following .NET implementations:
- Xamarin.Android 8.0 or later
- Universal Windows Platform 10.0.16299 or later

## What's new in the .NET Standard 2.0
## What's new in .NET Standard 2.0

The .NET Standard 2.0 includes the following new features:
.NET Standard 2.0 includes the following new features:

### A vastly expanded set of APIs

Through version 1.6, the .NET Standard included a comparatively small subset of APIs. Among those excluded were many APIs that were commonly used in the .NET Framework or Xamarin. This complicates development, since it requires that developers find suitable replacements for familiar APIs when they develop applications and libraries that target multiple .NET implementations. The .NET Standard 2.0 addresses this limitation by adding over 20,000 more APIs than were available in .NET Standard 1.6, the previous version of the standard. For a list of the APIs that have been added to the .NET Standard 2.0, see [.NET Standard 2.0 vs 1.6](https://raw.githubusercontent.com/dotnet/standard/master/docs/versions/netstandard2.0_diff.md).
Through version 1.6, .NET Standard included a comparatively small subset of APIs. Among those excluded were many APIs that were commonly used in the .NET Framework or Xamarin. This complicates development, since it requires that developers find suitable replacements for familiar APIs when they develop applications and libraries that target multiple .NET implementations. .NET Standard 2.0 addresses this limitation by adding over 20,000 more APIs than were available in .NET Standard 1.6, the previous version of the standard. For a list of the APIs that have been added to .NET Standard 2.0, see [.NET Standard 2.0 vs 1.6](https://raw.githubusercontent.com/dotnet/standard/master/docs/versions/netstandard2.0_diff.md).

Some of the additions to the <xref:System> namespace in .NET Standard 2.0 include:

Expand All @@ -47,13 +47,13 @@ Some of the additions to the <xref:System> namespace in .NET Standard 2.0 includ

### Support for .NET Framework libraries

The overwhelming majority of libraries target the .NET Framework rather than .NET Standard. However, most of the calls in those libraries are to APIs that are included in the .NET Standard 2.0. Starting with the .NET Standard 2.0, you can access .NET Framework libraries from a .NET Standard library by using a [compatibility shim](https://github.com/dotnet/standard/blob/master/docs/planning/netstandard-2.0/README.md#assembly-unification). This compatibility layer is transparent to developers; you don't have to do anything to take advantage of .NET Framework libraries.
The overwhelming majority of libraries target .NET Framework rather than .NET Standard. However, most of the calls in those libraries are to APIs that are included in .NET Standard 2.0. Starting with .NET Standard 2.0, you can access .NET Framework libraries from a .NET Standard library by using a [compatibility shim](https://github.com/dotnet/standard/blob/master/docs/planning/netstandard-2.0/README.md#assembly-unification). This compatibility layer is transparent to developers; you don't have to do anything to take advantage of .NET Framework libraries.

The single requirement is that the APIs called by the .NET Framework class library must be included in the .NET Standard 2.0.
The single requirement is that the APIs called by the .NET Framework class library must be included in .NET Standard 2.0.

### Support for Visual Basic

You can now develop .NET Standard libraries in Visual Basic. For Visual Basic developers using Visual Studio 2017 version 15.3 or later with the .NET Core workload installed, Visual Studio now includes a .NET Standard Class Library template. For Visual Basic developers who use other development tools and environments, you can use the [dotnet new](../../core/tools/dotnet-new.md) command to create a .NET Standard Library project. For more information, see the [Tooling support for .NET Standard libraries](#tooling-support-for-net-standard-libraries).
You can now develop .NET Standard libraries in Visual Basic. Visual Studio 2019 and Visual Studio 2017 version 15.3 or later with the .NET Core workload installed include a .NET Standard Class Library template. For Visual Basic developers who use other development tools and environments, you can use the [dotnet new](../../core/tools/dotnet-new.md) command to create a .NET Standard Library project. For more information, see the [Tooling support for .NET Standard libraries](#tooling-support-for-net-standard-libraries).

### Tooling support for .NET Standard libraries

Expand All @@ -67,7 +67,7 @@ If you install Visual Studio with the **.NET Core cross-platform development** w

![Add New .NET Standard library project](./media/std-project-cs.png)

If you're using the .NET Core CLI, the following [dotnet new](../../core/tools/dotnet-new.md) command creates a class library project that targets the .NET Standard 2.0:
If you're using the .NET Core CLI, the following [dotnet new](../../core/tools/dotnet-new.md) command creates a class library project that targets .NET Standard 2.0:

```dotnetcli
dotnet new classlib
Expand All @@ -77,7 +77,7 @@ dotnet new classlib

![Add New .NET Standard library project](./media/std-project-vb.png)

If you're using the .NET Core CLI, the following [dotnet new](../../core/tools/dotnet-new.md) command creates a class library project that targets the .NET Standard 2.0:
If you're using the .NET Core CLI, the following [dotnet new](../../core/tools/dotnet-new.md) command creates a class library project that targets .NET Standard 2.0:

```dotnetcli
dotnet new classlib -lang vb
Expand Down