dotnet-core/release-notes/2.1/Preview/2.1.0-preview2.md
2020-10-05 12:29:00 -07:00

6.5 KiB

.NET Core 2.1 Preview 2 - April 10, 2018

.NET Core 2.1.0 Preview 2 is available for download and usage in your environment. Have a look at the Known Issues document as there are a few things to be aware of before installing.

Blog Round up

The .NET Core SDK 2.1 Preview includes .NET Core 2.1 Runtime Preview so downloading the runtime packages separately is not needed when installing the SDK. After installing the .NET Core SDK 2.1 Preview, the following command will show that you're running version 2.1.300-preview2-008530 of the tools.

dotnet --version

Your feedback is important and appreciated. We've created an issue at dotnet/core #1422 for your questions and comments.

Docker Images

The .NET Core Docker images have been updated for this release. Look for the 2.1 Preview 2 images.

Azure AppServices

Details for running .NET Core 2.1 Preview 1 in Azure App Services can be seen in the ASP.NET Core blog post.

Notable Changes in Preview 2

NETStandard.Library 2.0.2 released

Issue #442 : Adding .NET Standard/.NET Framework facades assemblies is consuming 11% of build time - fixed in #510

Breaking API changes

Many APIs received updates from Preview 1 which are considered breaking changes. Below are a few notable changes and a detailed API diff is available to help determine if any will impact existing projects build on 2.1.0 Preview 1.

Area Description Details Github Issue
System.Memory Changed System.Buffers.OwnedMemory to MemoryManager and added an IMemoryOwner This is a breaking change to System.Memory lifetime management APIs, to reduce pit-of-failure use-after-free security issues. We have produced guidance clarifying Memory lifetime semantics and how APIs which accept Memory should behave (see the links to the gist). OwnedMemory is split into two types: IMemoryOwner and MemoryManager. Each type has a single responsibility. This makes it easier and safer for developers to change the lifetime semantics of Memory instances without requiring them to drop down to unsafe code.

See the following for more details on guidance and usage:

Memory API documentation and samples
Memory usage guidelines
System.Memory Moved MemoryExtensions.AsBytes and System.Buffers.Binary.BinaryPrimitives.{Try}ReadMachineEndian & {Try}WriteMachineEndian to System.Runtime.InteropServices.MemoryMarshal. Also moved TryGetString and TryGetArray These APIs are unsafe as they allow skipping visible checks and can result in unexpected behaviors. Therefore, these APIs were moved to MemoryMarshal since the developer has to be careful when using them. TryGetString and TryGetArray were also moved since they violate the window of visibility of Memory. corefx/27094
corefx/27451
System.Memory Rename MemoryExtensions.AsReadOnlyMemory & AsReadOnlySpan to AsMemory & AsSpan corefx/26894

System.Security

Area Description Details
System.Security Added CryptographicOperations class CryptographicOperations.FixedTimeEquals takes a fixed amount of time to return for any two inputs of the same length, making it suitable for use in cryptographic verification to avoid contributing to timing side-channel information. CryptographicOperations.ZeroMemory is a memory clearing routine which cannot be optimized away via a write-without-subsequent-read optimization.
System.Security Added static RandomNumberGenerator.Fill The static RandomNumberGenerator.Fill will fill a Span with random values using the system-preferred CSPRNG, and does not require the caller to manage the lifetime of an IDisposable resource.
System.Security Added support for RFC 3161 cryptographic timestamps New API to request, read, validate, and create TimestampToken values as defined by RFC 3161.
System.Security Unix EnvelopedCms The EnvelopedCms class is now available on Linux and macOS.
System.Security Added ECDiffieHellman Elliptic-Curve Diffie-Hellman (ECDH) is now available on .NET Core via the ECDiffieHellman class family with the same surface area as .NET Framework 4.7.
System.Security Added RSA-OAEP-SHA2 and RSA-PSS to Unix platforms Starting with this release the instance provided by RSA.Create() on .NET Core can always encrypt or decrypt with OAEP using a SHA-2 digest, as well as generate or validate signatures using RSA-PSS.

Global Tools

Global tools let you install a tool from a NuGet feed into your local path. This makes in available in a similar manner to npm -g.

dotnet --list-sdks

dotnet --list-sdks provides a list of .NET Core SDKs installed on the machine

Many .NET Core SDKs may be installed on a given machine. The new --list-sdks switch lists installed SDKs along with the base path where they are installed. This new switch is present in the .NET Core host, which has a single copy on the machine. Thus, this switch works once the preview is installed, regardless of global.json or if the preview is uninstalled.

dotnet --list-runtimes

dotnet --list-runtimes provides a list of .NET Core Runtimes installed on the machine

Many .NET Core Runtimes may be installed on a given machine. The new --list-runtimes switch lists installed runtimes along with the base path where they are installed. This new switch is present in the .NET Core host, which has a single copy on the machine. Thus, this switch works once the preview is installed, regardless of global.json or if the preview is uninstalled.