Skip to content
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion docs/core/diagnostics/debug-memory-leak.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ dotnet-dump analyze core_20190430_185145
Where `core_20190430_185145` is the name of the core dump you want to analyze.

> [!NOTE]
> If you see an error complaining that *libdl.so* cannot be found, you may have to install the *libc6-dev* package. For more information, see [Prerequisites for .NET Core on Linux](../linux-prerequisites.md).
> If you see an error complaining that *libdl.so* cannot be found, you may have to install the *libc6-dev* package. For more information, see [Prerequisites for .NET Core on Linux](../install/dependencies.md?pivots=os-linux).

You'll be presented with a prompt where you can enter SOS commands. Commonly, the first thing you want to look at is the overall state of the managed heap:

Expand Down
45 changes: 45 additions & 0 deletions docs/core/install/how-to-detect-installed-versions.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,51 @@ Microsoft.NETCore.App 3.1.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.Ap

::: zone-end

## Check for install folders

It's possible that .NET Core is installed but not added to the `PATH` variable for your operating system or user profile. Running the commands from the previous sections may not work. As an alternative, you can check that the .NET Core install folders exist.

When you install .NET Core from an installer or script, it's installed to a standard folder. Much of the time the installer or script you're using to install .NET Core gives you an option to install to a different folder. If you choose to install to a different folder, adjust the start of the folder path.

::: zone pivot="os-windows"

- **dotnet executable**\
_C:\\program files\\dotnet\\dotnet.exe_

- **.NET SDK**\
_C:\\program files\\dotnet\\sdk\\{version}\\_

- **.NET Runtime**\
_C:\\program files\\dotnet\\shared\\{runtime-type}\\{version}\\_

::: zone-end

::: zone pivot="os-linux"

- **dotnet executable**\
_/home/user/share/dotnet/dotnet_

- **.NET SDK**\
_/home/user/share/dotnet/sdk/{version}/_

- **.NET Runtime**\
_/home/user/share/dotnet/shared/{runtime-type}/{version}/_

::: zone-end

::: zone pivot="os-macos"

- **dotnet executable**\
_/usr/local/share/dotnet/dotnet_

- **.NET SDK**\
_/usr/local/share/dotnet/sdk/{version}/_

- **.NET Runtime**\
_/usr/local/share/dotnet/shared/{runtime-type}/{version}/_

::: zone-end

## More information

You can see both the SDK versions and runtime versions with the command `dotnet --info`. You'll also get other environmental related information, such as the operating system version and runtime identifier (RID).
Expand Down
6 changes: 3 additions & 3 deletions docs/core/install/linux-package-manager-centos7.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ This article describes how to use a package manager to install .NET Core on Cent

[!INCLUDE [package-manager-intro-sdk-vs-runtime](includes/package-manager-intro-sdk-vs-runtime.md)]

## Register Microsoft key and feed
## Add Microsoft repository key and feed

Before installing .NET, you'll need to:

- Register the Microsoft key.
- Register the product repository.
- Add the Microsoft package signing key to the list of trusted keys.
- Add the repository to the package manager.
- Install required dependencies.

This only needs to be done once per machine.
Expand Down
6 changes: 3 additions & 3 deletions docs/core/install/linux-package-manager-debian10.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ This article describes how to use a package manager to install .NET Core on Debi

[!INCLUDE [package-manager-intro-sdk-vs-runtime](includes/package-manager-intro-sdk-vs-runtime.md)]

## Register Microsoft key and feed
## Add Microsoft repository key and feed

Before installing .NET, you'll need to:

- Register the Microsoft key.
- Register the product repository.
- Add the Microsoft package signing key to the list of trusted keys.
- Add the repository to the package manager.
- Install required dependencies.

This only needs to be done once per machine.
Expand Down
6 changes: 3 additions & 3 deletions docs/core/install/linux-package-manager-debian9.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ This article describes how to use a package manager to install .NET Core on Debi

[!INCLUDE [package-manager-intro-sdk-vs-runtime](includes/package-manager-intro-sdk-vs-runtime.md)]

## Register Microsoft key and feed
## Add Microsoft repository key and feed

Before installing .NET, you'll need to:

- Register the Microsoft key.
- Register the product repository.
- Add the Microsoft package signing key to the list of trusted keys.
- Add the repository to the package manager.
- Install required dependencies.

This only needs to be done once per machine.
Expand Down
6 changes: 3 additions & 3 deletions docs/core/install/linux-package-manager-fedora29.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ This article describes how to use a package manager to install .NET Core on Fedo

[!INCLUDE [package-manager-intro-sdk-vs-runtime](includes/package-manager-intro-sdk-vs-runtime.md)]

## Register Microsoft key and feed
## Add Microsoft repository key and feed

Before installing .NET, you'll need to:

- Register the Microsoft key.
- Register the product repository.
- Add the Microsoft package signing key to the list of trusted keys.
- Add the repository to the package manager.
- Install required dependencies.

This only needs to be done once per machine.
Expand Down
6 changes: 3 additions & 3 deletions docs/core/install/linux-package-manager-fedora30.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ This article describes how to use a package manager to install .NET Core on Fedo

[!INCLUDE [package-manager-intro-sdk-vs-runtime](includes/package-manager-intro-sdk-vs-runtime.md)]

## Register Microsoft key and feed
## Add Microsoft repository key and feed

Before installing .NET, you'll need to:

- Register the Microsoft key.
- Register the product repository.
- Add the Microsoft package signing key to the list of trusted keys.
- Add the repository to the package manager.
- Install required dependencies.

This only needs to be done once per machine.
Expand Down
6 changes: 3 additions & 3 deletions docs/core/install/linux-package-manager-fedora31.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ This article describes how to use a package manager to install .NET Core on Fedo

[!INCLUDE [package-manager-intro-sdk-vs-runtime](includes/package-manager-intro-sdk-vs-runtime.md)]

## Register Microsoft key and feed
## Add Microsoft repository key and feed

Before installing .NET, you'll need to:

- Register the Microsoft key.
- Register the product repository.
- Add the Microsoft package signing key to the list of trusted keys.
- Add the repository to the package manager.
- Install required dependencies.

This only needs to be done once per machine.
Expand Down
6 changes: 3 additions & 3 deletions docs/core/install/linux-package-manager-opensuse15.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ This article describes how to use a package manager to install .NET Core on open

[!INCLUDE [package-manager-intro-sdk-vs-runtime](includes/package-manager-intro-sdk-vs-runtime.md)]

## Register Microsoft key and feed
## Add Microsoft repository key and feed

Before installing .NET, you'll need to:

- Register the Microsoft key.
- Register the product repository.
- Add the Microsoft package signing key to the list of trusted keys.
- Add the repository to the package manager.
- Install required dependencies.

This only needs to be done once per machine.
Expand Down
6 changes: 3 additions & 3 deletions docs/core/install/linux-package-manager-sles12.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ This article describes how to use a package manager to install .NET Core on SLES

[!INCLUDE [package-manager-intro-sdk-vs-runtime](includes/package-manager-intro-sdk-vs-runtime.md)]

## Register Microsoft key and feed
## Add Microsoft repository key and feed

Before installing .NET, you'll need to:

- Register the Microsoft key.
- Register the product repository.
- Add the Microsoft package signing key to the list of trusted keys.
- Add the repository to the package manager.
- Install required dependencies.

This only needs to be done once per machine.
Expand Down
6 changes: 3 additions & 3 deletions docs/core/install/linux-package-manager-sles15.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ This article describes how to use a package manager to install .NET Core on SLES

[!INCLUDE [package-manager-intro-sdk-vs-runtime](includes/package-manager-intro-sdk-vs-runtime.md)]

## Register Microsoft key and feed
## Add Microsoft repository key and feed

Before installing .NET, you'll need to:

- Register the Microsoft key.
- Register the product repository.
- Add the Microsoft package signing key to the list of trusted keys.
- Add the repository to the package manager.
- Install required dependencies.

This only needs to be done once per machine.
Expand Down
6 changes: 3 additions & 3 deletions docs/core/install/linux-package-manager-ubuntu-1604.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ This article describes how to use a package manager to install .NET Core on Ubun

[!INCLUDE [package-manager-intro-sdk-vs-runtime](includes/package-manager-intro-sdk-vs-runtime.md)]

## Register Microsoft key and feed
## Add Microsoft repository key and feed

Before installing .NET, you'll need to:

- Register the Microsoft key.
- Register the product repository.
- Add the Microsoft package signing key to the list of trusted keys.
- Add the repository to the package manager.
- Install required dependencies.

This only needs to be done once per machine.
Expand Down
6 changes: 3 additions & 3 deletions docs/core/install/linux-package-manager-ubuntu-1804.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ This article describes how to use a package manager to install .NET Core on Ubun

[!INCLUDE [package-manager-intro-sdk-vs-runtime](includes/package-manager-intro-sdk-vs-runtime.md)]

## Register Microsoft key and feed
## Add Microsoft repository key and feed

Before installing .NET, you'll need to:

- Register the Microsoft key.
- Register the product repository.
- Add the Microsoft package signing key to the list of trusted keys.
- Add the repository to the package manager.
- Install required dependencies.

This only needs to be done once per machine.
Expand Down
6 changes: 3 additions & 3 deletions docs/core/install/linux-package-manager-ubuntu-1904.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ This article describes how to use a package manager to install .NET Core on Ubun

[!INCLUDE [package-manager-intro-sdk-vs-runtime](includes/package-manager-intro-sdk-vs-runtime.md)]

## Register Microsoft key and feed
## Add Microsoft repository key and feed

Before installing .NET, you'll need to:

- Register the Microsoft key.
- Register the product repository.
- Add the Microsoft package signing key to the list of trusted keys.
- Add the repository to the package manager.
- Install required dependencies.

This only needs to be done once per machine.
Expand Down
6 changes: 3 additions & 3 deletions docs/core/install/linux-package-manager-ubuntu-1910.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ This article describes how to use a package manager to install .NET Core on Ubun

[!INCLUDE [package-manager-intro-sdk-vs-runtime](includes/package-manager-intro-sdk-vs-runtime.md)]

## Register Microsoft key and feed
## Add Microsoft repository key and feed

Before installing .NET, you'll need to:

- Register the Microsoft key.
- Register the product repository.
- Add the Microsoft package signing key to the list of trusted keys.
- Add the repository to the package manager.
- Install required dependencies.

This only needs to be done once per machine.
Expand Down
2 changes: 1 addition & 1 deletion docs/core/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ ms.custom: "updateeachrelease"
---
# Introduction to .NET Core

[.NET Core](about.md) is an [open-source](https://github.com/dotnet/runtime/blob/master/LICENSE.TXT), general-purpose development platform. You can create .NET Core apps for Windows, macOS, and Linux for x64, x86, ARM32, and ARM64 processors using multiple programming languages. Frameworks and APIs are provided for [cloud](/aspnet/core/), [IoT](/archive/msdn-magazine/2019/august/net-core-cross-platform-iot-programming-with-net-core-3-0), [client UI](/dotnet/desktop-wpf/overview/index), and [machine learning](/dotnet/machine-learning/).
[.NET Core](about.md) is an [open-source](https://github.com/dotnet/runtime/blob/master/LICENSE.TXT), general-purpose development platform. You can create .NET Core apps for Windows, macOS, and Linux for x64, x86, ARM32, and ARM64 processors using multiple programming languages. Frameworks and APIs are provided for [cloud](/aspnet/core/), [IoT](/archive/msdn-magazine/2019/august/net-core-cross-platform-iot-programming-with-net-core-3-0), [client UI](../desktop-wpf/overview/index.md), and [machine learning](/dotnet/machine-learning/).

[Download the .NET Core SDK](https://dotnet.microsoft.com/download) to try .NET Core on your machine. The latest version is [.NET Core 3.1](https://devblogs.microsoft.com/dotnet/announcing-net-core-3-1/).

Expand Down
4 changes: 2 additions & 2 deletions docs/core/toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,7 @@
- name: Port Windows Forms projects
href: porting/winforms.md
- name: Port WPF projects
href: porting/wpf.md
href: ../desktop-wpf/migration/convert-project-from-net-framework.md
- name: Port C++/CLI projects
href: porting/cpp-cli.md
- name: Unit testing
Expand Down Expand Up @@ -418,7 +418,7 @@
- name: Create a .NET Core application with plugins
href: tutorials/creating-app-with-plugin-support.md
- name: How to use and debug assembly unloadability in .NET Core
href: ../standard/assembly/unloadability-howto.md
href: ../standard/assembly/unloadability.md
- name: .NET Core distribution packaging
href: distribution-packaging.md
- name: Expose .NET Core components to COM
Expand Down
2 changes: 1 addition & 1 deletion docs/core/versions/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ Each version of .NET Core implements a version of .NET Standard. Implementing a
## See also

- [Target frameworks](../../standard/frameworks.md)
- [.NET Core distribution packaging](../build/distribution-packaging.md)
- [.NET Core distribution packaging](../distribution-packaging.md)
- [.NET Core Support Lifecycle Fact Sheet](https://dotnet.microsoft.com/platform/support/policy)
- [.NET Core 2+ Version Binding](https://github.com/dotnet/designs/issues/3)
- [Docker images for .NET Core](https://hub.docker.com/_/microsoft-dotnet-core/)
2 changes: 1 addition & 1 deletion docs/core/whats-new/dotnet-core-2-1.md
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,6 @@ For information about breaking changes, see [Breaking changes for migration from

## See also

- [What's new in .NET Core](index.md)
- [What's new in .NET Core 3.1](dotnet-core-3-1.md)
- [New features in EF Core 2.1](/ef/core/what-is-new/ef-core-2.1)
- [What's new in ASP.NET Core 2.1](/aspnet/core/aspnetcore-2.1)
2 changes: 1 addition & 1 deletion docs/core/whats-new/dotnet-core-2-2.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,6 @@ See [Host startup hook](https://github.com/dotnet/core-setup/blob/master/Documen

## See also

- [What's new in .NET Core](index.md)
- [What's new in .NET Core 3.1](dotnet-core-3-1.md)
- [What's new in ASP.NET Core 2.2](/aspnet/core/release-notes/aspnetcore-2.2)
- [New features in EF Core 2.2](/ef/core/what-is-new/ef-core-2.2)
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ private static void DeclareAndAssign()
int? m = m2;

bool? flag = null;

// An array of a nullable value type:
int?[] arr = new int?[10];
// </SnippetDeclaration>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public static void Display(IEnumerable<int> numbers)
{
return;
}

Console.WriteLine(string.Join(" ", numbers));
}
// </SnippetVoidExample>
Expand Down
2 changes: 1 addition & 1 deletion docs/csharp/language-reference/compiler-messages/cs0618.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ ms.assetid: b6edf0a9-b186-4ed8-9e16-978659b89205
# Compiler Warning (level 2) CS0618
'member' is obsolete: 'text'

A class member was marked with the `Obsolete` attribute, such that a warning will be issued when the class member is referenced. For more information, see [Common Attributes](../../programming-guide/concepts/attributes/common-attributes.md).
A class member was marked with the `Obsolete` attribute, such that a warning will be issued when the class member is referenced. For more information, see [Common Attributes](../attributes/global.md).

The following sample generates CS0618:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ The **-target** compiler option can be specified in one of four forms:
[-target:winmdobj](./target-winmdobj-compiler-option.md)
To create an intermediate .winmdobj file.

Unless you specify **-target:module**, **-target** causes a .NET Framework assembly manifest to be placed in an output file. For more information, see [Assemblies in .NET](../../../standard/assembly/index.md) and [Common Attributes](../../programming-guide/concepts/attributes/common-attributes.md).
Unless you specify **-target:module**, **-target** causes a .NET Framework assembly manifest to be placed in an output file. For more information, see [Assemblies in .NET](../../../standard/assembly/index.md) and [Common Attributes](../attributes/global.md).

The assembly manifest is placed in the first .exe output file in the compilation or in the first DLL, if there is no .exe output file. For example, in the following command line, the manifest will be placed in `1.exe`:

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: "Member access operators and expressions - C# reference"
description: "Learn about C# operators that you can use to access type members."
ms.date: 03/31/2020
ms.date: 04/17/2020
author: pkulikov
f1_keywords:
- "._CSharpKeyword"
Expand Down Expand Up @@ -150,6 +150,8 @@ if (handler != null)
}
```

That is a thread-safe way to ensure that only a non-null `handler` is invoked. Because delegate instances are immutable, no thread can change the value referenced by the `handler` local variable. In particular, if the code executed by another thread unsubscribes from the `PropertyChanged` event and `PropertyChanged` becomes `null` before `handler` is invoked, the value referenced by `handler` remains unaffected. The `?.` operator evaluates its left-hand operand no more than once, guaranteeing that it cannot be changed to `null` after being verified as non-null.

## Invocation expression ()

Use parentheses, `()`, to call a [method](../../programming-guide/classes-and-structs/methods.md) or invoke a [delegate](../../programming-guide/delegates/index.md).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ private static void AddAndAssign()

Action printer = () => Console.Write("a");
printer(); // output: a

Console.WriteLine();
printer += () => Console.Write("b");
printer(); // output: ab
Expand Down
Loading