From 7d8db48c591d19ae922b2d13c64e1487919b6285 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Thu, 19 Mar 2026 09:49:21 -0700 Subject: [PATCH 1/9] docs: breaking change - DateOnly/TimeOnly TryParse throws ArgumentException for invalid DateTimeStyles (.NET 11) (#52467) --- docs/core/compatibility/11.md | 1 + ...nly-timeonly-tryparse-argumentexception.md | 99 +++++++++++++++++++ docs/core/compatibility/toc.yml | 2 + 3 files changed, 102 insertions(+) create mode 100644 docs/core/compatibility/core-libraries/11/dateonly-timeonly-tryparse-argumentexception.md diff --git a/docs/core/compatibility/11.md b/docs/core/compatibility/11.md index 25638945abfa1..8654a6a8b2d52 100644 --- a/docs/core/compatibility/11.md +++ b/docs/core/compatibility/11.md @@ -24,6 +24,7 @@ See [Breaking changes in ASP.NET Core 10](/aspnet/core/breaking-changes/10/overv | Title | Type of change | |-------------------------------------------------------------------|-------------------| +| [DateOnly and TimeOnly TryParse methods throw for invalid input](core-libraries/11/dateonly-timeonly-tryparse-argumentexception.md) | Behavioral change | | [DeflateStream and GZipStream write headers and footers for empty payload](core-libraries/11/deflatestream-gzipstream-empty-payload.md) | Behavioral change | | [Environment.TickCount made consistent with Windows timeout behavior](core-libraries/11/environment-tickcount-windows-behavior.md) | Behavioral change | | [MemoryStream maximum capacity updated and exception behavior changed](core-libraries/11/memorystream-max-capacity.md) | Behavioral change | diff --git a/docs/core/compatibility/core-libraries/11/dateonly-timeonly-tryparse-argumentexception.md b/docs/core/compatibility/core-libraries/11/dateonly-timeonly-tryparse-argumentexception.md new file mode 100644 index 0000000000000..ef831303a8b26 --- /dev/null +++ b/docs/core/compatibility/core-libraries/11/dateonly-timeonly-tryparse-argumentexception.md @@ -0,0 +1,99 @@ +--- +title: "Breaking change: DateOnly and TimeOnly TryParse methods throw for invalid input" +description: "Learn about the breaking change in .NET 11 where DateOnly and TimeOnly TryParse methods throw ArgumentException for invalid DateTimeStyles values or format specifiers." +ms.date: 03/19/2026 +ai-usage: ai-assisted +--- + +# DateOnly and TimeOnly TryParse methods throw for invalid input + +The and `TryParse` and `TryParseExact` methods now throw an when invalid values or format specifiers are provided. This aligns their behavior with other `TryParse` APIs in .NET. + +## Version introduced + +.NET 11 Preview 2 + +## Previous behavior + +Previously, passing invalid values or format specifiers to `DateOnly.TryParse`, `DateOnly.TryParseExact`, `TimeOnly.TryParse`, or `TimeOnly.TryParseExact` caused the methods to return `false` without throwing an exception. + +```csharp +using System; +using System.Globalization; + +bool result = DateOnly.TryParseExact( + "2023-10-15", + "yyyy-MM-dd", + CultureInfo.InvariantCulture, + (DateTimeStyles)999, // Invalid DateTimeStyles value + out DateOnly date); + +Console.WriteLine(result); // Output: False +``` + +## New behavior + +Starting in .NET 11, passing invalid values or format specifiers to these methods throws an . The exception includes details about the invalid argument, such as the parameter name. + +```csharp +using System; +using System.Globalization; + +try +{ + bool result = DateOnly.TryParseExact( + "2023-10-15", + "yyyy-MM-dd", + CultureInfo.InvariantCulture, + (DateTimeStyles)999, // Invalid DateTimeStyles value + out DateOnly date); +} +catch (ArgumentException ex) +{ + Console.WriteLine(ex.Message); + // Output: "The value '999' is not valid for DateTimeStyles. (Parameter 'style')" +} +``` + +## Type of breaking change + +This change is a [behavioral change](../../categories.md#behavioral-change). + +## Reason for change + +This change aligns the behavior of `DateOnly` and `TimeOnly` parsing methods with other `TryParse` APIs in .NET, which throw exceptions for invalid arguments. The previous behavior of silently returning `false` for invalid arguments could mask programming errors and make debugging more difficult. + +## Recommended action + +Review your usage of `DateOnly.TryParse`, `DateOnly.TryParseExact`, `TimeOnly.TryParse`, and `TimeOnly.TryParseExact` to ensure that valid values and format specifiers are being passed. If invalid arguments are possible in your code paths, wrap the calls in a `try`-`catch` block to handle . + +```csharp +using System; +using System.Globalization; + +try +{ + bool result = DateOnly.TryParseExact( + "2023-10-15", + "yyyy-MM-dd", + CultureInfo.InvariantCulture, + (DateTimeStyles)999, // Invalid DateTimeStyles value + out DateOnly date); +} +catch (ArgumentException ex) +{ + Console.WriteLine($"Error: {ex.Message}"); + // Handle the exception as needed +} +``` + +## Affected APIs + +- +- +- +- +- +- +- +- diff --git a/docs/core/compatibility/toc.yml b/docs/core/compatibility/toc.yml index 748675af35f84..e696ac000dbb9 100644 --- a/docs/core/compatibility/toc.yml +++ b/docs/core/compatibility/toc.yml @@ -10,6 +10,8 @@ items: href: 11.md - name: Core .NET libraries items: + - name: DateOnly and TimeOnly TryParse methods throw for invalid input + href: core-libraries/11/dateonly-timeonly-tryparse-argumentexception.md - name: DeflateStream and GZipStream write headers and footers for empty payload href: core-libraries/11/deflatestream-gzipstream-empty-payload.md - name: Environment.TickCount made consistent with Windows timeout behavior From d7019f07c4829b79ea542082a8184ca1e0c67d37 Mon Sep 17 00:00:00 2001 From: Mitchell Hwang <16830051+mdh1418@users.noreply.github.com> Date: Thu, 19 Mar 2026 13:29:32 -0400 Subject: [PATCH 2/9] Update diagnostics docs for dotnet-trace collect-linux (#52273) * Update diagnostics docs for dotnet-trace collect-linux Update 3 docs to reflect dotnet-trace collect-linux capabilities: - dotnet-trace.md: Add symbol resolution section for collect-linux - eventpipe.md: Add EventPipe (user_events) column to comparison table, document how EventPipe can emit events as user_events for unified managed + native trace collection on Linux - debug-highcpu.md: Integrate collect-linux as Linux alternative, clarify that safe-point bias and managed-only callstacks apply on all platforms Key points documented: - Native debug symbols must be on disk for symbol resolution - No environment variables or process restarts needed - EventPipe (user_events) enables unified tracing on Linux (.NET 10+) - Still framed as preview feature Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address PR review feedback for dotnet/docs#52273 dotnet-trace.md: - Fix 'perfmap' to 'perf map' for consistency - Use dotnetcli fence instead of bash for dotnet commands - Reword dotnet-symbol step to clarify default output and permissions - Fix wording: 'processes the trace' to 'collects the trace' eventpipe.md: - Fix 'stacktraces' to 'stack traces' - Clarify that standard EventPipe doesn't require admin/root but user_events mode does - Fix cross-platform row for EventPipe (user_events) debug-highcpu.md: - Simplify intro paragraph, mention improved capabilities per OS/version - Add dotnet-trace collect-linux walkthrough in Linux tab with .NET 10 note - Use CPU Stacks PerfView view for collect-linux traces - Reword existing perf section intro for flow Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address additional PR feedback for dotnet/docs#52273 - debug-highcpu.md: Add kernel/distro requirements callout with link to collect-linux prerequisites (per noahfalk feedback) - dotnet-trace.md: Remove unnecessary mention of DOTNET_PerfMapEnabled and DOTNET_EnableEventLog env vars (per noahfalk feedback) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update prerequisites and doc dates - dotnet-trace.md: Add tracefs mount prerequisite, add TIP for checking user_events kernel support (zgrep + tracefs fallback) - Update ms.date to 03/19/2026 for all 3 changed files Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/core/diagnostics/debug-highcpu.md | 24 ++++++++++++++++++--- docs/core/diagnostics/dotnet-trace.md | 30 +++++++++++++++++++++++++- docs/core/diagnostics/eventpipe.md | 20 +++++++++-------- 3 files changed, 61 insertions(+), 13 deletions(-) diff --git a/docs/core/diagnostics/debug-highcpu.md b/docs/core/diagnostics/debug-highcpu.md index 2d42a26f3e990..06e6c2a5ae658 100644 --- a/docs/core/diagnostics/debug-highcpu.md +++ b/docs/core/diagnostics/debug-highcpu.md @@ -2,7 +2,7 @@ title: Debug high CPU usage - .NET Core description: A tutorial that walks you through debugging high CPU usage in .NET Core. ms.topic: tutorial -ms.date: 07/20/2020 +ms.date: 03/19/2026 --- # Debug high CPU usage in .NET Core @@ -173,11 +173,29 @@ At this point, you can safely say the CPU is running higher than you expect. Ide ## Analyze High CPU with Profiler -When analyzing an app with high CPU usage, you need a diagnostics tool that can provide insights into what the code is doing. The usual choice is a profiler, and there are different profiler options to choose from. `dotnet-trace` can be used on all operating systems, however, its limitations of safe-point bias and managed-only callstacks result in more general information compared to a kernel-aware profiler like 'perf' for Linux or ETW for Windows. If your performance investigation involves only managed code, generally `dotnet-trace` will be sufficient. +When analyzing an app with high CPU usage, use a profiler to understand what the code is doing. `dotnet-trace collect` works on all operating systems, but safe-point bias and managed-only callstacks limit it to more general information than a kernel-aware profiler like ETW for Windows or `perf` for Linux. Depending on your operating system and .NET version, improved profiling capabilities might be available—see the platform-specific tabs that follow for detailed guidance. ### [Linux](#tab/linux) -The `perf` tool can be used to generate .NET Core app profiles. We will demonstrate this tool, although dotnet-trace could be used as well. Exit the previous instance of the [sample debug target](/samples/dotnet/samples/diagnostic-scenarios). +#### Use `dotnet-trace collect-linux` (.NET 10+) + +On .NET 10 and later, [`dotnet-trace collect-linux`](dotnet-trace.md#dotnet-trace-collect-linux) is the recommended profiling approach on Linux. It combines EventPipe with OS-level perf_events to produce a single unified trace that includes both managed and native callstacks, all without requiring a process restart. This requires root permissions and Linux kernel 6.4+ with `CONFIG_USER_EVENTS=y`. See [collect-linux prerequisites](dotnet-trace.md#prerequisites) for full requirements. + +Ensure the [sample debug target](/samples/dotnet/samples/diagnostic-scenarios) is configured to target .NET 10 or later, then run it and exercise the high CPU endpoint (`https://localhost:5001/api/diagscenario/highcpu/60000`) again. While it's running within the 1-minute request, run `dotnet-trace collect-linux` to capture a machine-wide trace: + +```dotnetcli +sudo dotnet-trace collect-linux +``` + +Let it run for about 20-30 seconds, then press Ctrl+C or Enter to stop the collection. The result is a `.nettrace` file that includes both managed and native callstacks. + +Open the `.nettrace` with [`PerfView`](https://github.com/microsoft/perfview/blob/main/documentation/Downloading.md) and use the **CPU Stacks** view to identify the methods consuming the most CPU time. + +For information about resolving native runtime symbols in the trace, see [Get symbols for native runtime frames](dotnet-trace.md#get-symbols-for-native-runtime-frames). + +#### Use `perf` + +The `perf` tool can also be used to generate .NET Core app profiles. Exit the previous instance of the [sample debug target](/samples/dotnet/samples/diagnostic-scenarios). Set the `DOTNET_PerfMapEnabled` environment variable to cause the .NET app to create a `map` file in the `/tmp` directory. This `map` file is used by `perf` to map CPU addresses to JIT-generated functions by name. For more information, see [Export perf maps and jit dumps](../runtime-config/debugging-profiling.md#export-perf-maps-and-jit-dumps). diff --git a/docs/core/diagnostics/dotnet-trace.md b/docs/core/diagnostics/dotnet-trace.md index ad583fc0a3355..2f5a53de22f71 100644 --- a/docs/core/diagnostics/dotnet-trace.md +++ b/docs/core/diagnostics/dotnet-trace.md @@ -1,7 +1,7 @@ --- title: dotnet-trace diagnostic tool - .NET CLI description: Learn how to install and use the dotnet-trace CLI tool to collect .NET traces of a running process without the native profiler, by using the .NET EventPipe. -ms.date: 03/11/2026 +ms.date: 03/19/2026 ms.topic: reference ms.custom: sfi-ropc-nochange --- @@ -303,6 +303,7 @@ Collects diagnostic traces using perf_events, a Linux OS technology. `collect-li ### Prerequisites - Linux kernel with `CONFIG_USER_EVENTS=y` support (kernel 6.4+) +- tracefs mounted (defaults to `/sys/kernel/tracing`) - Root permissions - .NET 10+ @@ -311,6 +312,9 @@ Collects diagnostic traces using perf_events, a Linux OS technology. `collect-li > All of the [.NET 10 officially supported Linux distros](https://github.com/dotnet/core/blob/main/release-notes/10.0/supported-os.md#linux) support this requirement except Alpine 3.22, CentOS Stream 9, and any distros based off Red Hat Enterprise Linux 9. > A quick way to check the version of a system's libc is with the command `ldd --version` or by executing the libc library directly. +> [!TIP] +> To check if your kernel has `user_events` support, run `zgrep CONFIG_USER_EVENTS /proc/config.gz`. You can also look for `user_events_data` under your tracefs mount (defaults to `/sys/kernel/tracing/user_events_data`). + ### Synopsis ```dotnetcli @@ -696,6 +700,30 @@ However, when you want to gain a finer control over the lifetime of the app bein ## (Linux-only) Collect a machine-wide trace using dotnet-trace +### Get symbols for native runtime frames + +`collect-linux` captures native frames in callstacks. To resolve native method names for runtime libraries (such as `libcoreclr.so`), place the corresponding debug symbol files on disk beside the libraries. Without these symbols, native frames appear as unresolved addresses in the trace. + +`collect-linux` dynamically enables perf map generation for JIT-compiled code when the trace begins, so you don't need to restart any .NET processes. + +To download native runtime symbols, use [dotnet-symbol](./dotnet-symbol.md): + +1. Install `dotnet-symbol`: + + ```dotnetcli + dotnet tool install -g dotnet-symbol + ``` + +1. Download the debug symbols for your runtime version. For example, if your runtime is installed at `/usr/share/dotnet/shared/Microsoft.NETCore.App/10.0.0`: + + ```dotnetcli + dotnet-symbol --symbols /usr/share/dotnet/shared/Microsoft.NETCore.App/10.0.0/lib*.so + ``` + +1. Place the downloaded `.so.dbg` files beside the runtime libraries they correspond to (for example, `libcoreclr.so.dbg` next to `libcoreclr.so`). By default, `dotnet-symbol` writes symbol files next to each input file. If your runtime libraries live under a protected path such as `/usr/share/dotnet/...`, run `dotnet-symbol` with elevated permissions (for example, by using `sudo`), or use the `-o`/`--output` option to write to a writable directory, then copy the `.so.dbg` files beside the runtime libraries. + +After you place the symbols, `collect-linux` resolves native method names when it collects the trace. + This example captures CPU samples for all processes on the machine. Any processes running .NET 10+ will also include some additional lightweight events describing GC, JIT, and Assembly loading behavior. ```output diff --git a/docs/core/diagnostics/eventpipe.md b/docs/core/diagnostics/eventpipe.md index 8ab863fc3a0ce..2c43045032866 100644 --- a/docs/core/diagnostics/eventpipe.md +++ b/docs/core/diagnostics/eventpipe.md @@ -1,7 +1,7 @@ --- title: EventPipe Overview description: Learn about EventPipe and how to use it for tracing your .NET applications to diagnose performance issues. -ms.date: 09/03/2024 +ms.date: 03/19/2026 ms.topic: overview --- @@ -25,18 +25,20 @@ To learn more about the NetTrace format, see the [NetTrace format documentation] EventPipe is part of the .NET runtime and is designed to work the same way across all the platforms .NET Core supports. This allows tracing tools based on EventPipe, such as `dotnet-counters`, `dotnet-gcdump`, and `dotnet-trace`, to work seamlessly across platforms. -However, because EventPipe is a runtime built-in component, its scope is limited to managed code and the runtime itself. EventPipe events include stacktraces with managed code frame information only. If you want events generated from other unmanaged user-mode libraries, CPU sampling for native code, or kernel events you should use OS-specific tracing tools such as ETW or perf_events. On Linux the [perfcollect tool](./trace-perfcollect-lttng.md) helps automate using perf_events and [LTTng](https://en.wikipedia.org/wiki/LTTng). +However, because EventPipe is a runtime built-in component, its scope is limited to managed code and the runtime itself. Without other tracing tools, EventPipe events include stack traces with managed code frame information only. To get events from other unmanaged user-mode libraries, CPU sampling for native code, or kernel events, use OS-specific tracing tools such as ETW or perf_events. On Linux, the [perfcollect tool](./trace-perfcollect-lttng.md) helps automate using perf_events and [LTTng](https://en.wikipedia.org/wiki/LTTng). -Another major difference between EventPipe and ETW/perf_events is admin/root privilege requirement. To trace an application using ETW or perf_events you need to be an admin/root. Using EventPipe, you can trace applications as long as the tracer (for example, `dotnet-trace`) is run as the same user as the user that launched the application. +Starting in .NET 10, EventPipe on Linux can emit events as [user_events](https://docs.kernel.org/trace/user_events.html), enabling collection of managed events, OS/kernel events, and native callstacks in a single unified trace. This mode requires admin/root privileges and Linux kernel 6.4+. For more information, see [`dotnet-trace collect-linux`](./dotnet-trace.md#dotnet-trace-collect-linux). + +Another major difference between EventPipe and ETW/perf_events is admin/root privilege requirement. To trace an application using ETW or perf_events you need to be an admin/root. Using standard EventPipe, you can trace applications as long as the tracer (for example, `dotnet-trace`) is run as the same user as the user that launched the application. The EventPipe (user_events) mode described earlier requires admin/root privileges because it interacts with OS-level tracing infrastructure. The following table is a summary of the differences between EventPipe and ETW/perf_events. -|Feature|EventPipe|ETW|perf_events| -|-------|---------|---|-----------| -|Cross-platform|Yes|No (only on Windows)|No (only on supported Linux distros)| -|Require admin/root privilege|No|Yes|Yes| -|Can get OS/kernel events|No|Yes|Yes| -|Can resolve native callstacks|No|Yes|Yes| +|Feature|EventPipe|EventPipe (user_events)|ETW|perf_events| +|-------|---------|----------------------|---|-----------| +|Cross-platform|Yes|No (only on supported Linux distros)|No (only on Windows)|No (only on supported Linux distros)| +|Require admin/root privilege|No|Yes|Yes|Yes| +|Can get OS/kernel events|No|Yes|Yes|Yes| +|Can resolve native callstacks|No|Yes|Yes|Yes| ## Use EventPipe to trace your .NET application From 4c3ad8c7dbe503bb45ea7c6ced04b1c4aeef32cd Mon Sep 17 00:00:00 2001 From: Bill Wagner Date: Thu, 19 Mar 2026 17:58:53 -0400 Subject: [PATCH 3/9] [Everyday C#] - Program structure: namespaces + preprocessor directives (#52082) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Revise index 1. **Revise** `docs/csharp/fundamentals/program-structure/index.md` - Update frontmatter: set `ms.date` to current date, add `ai-usage: ai-assisted` - Rewrite to lead with a motivating example showing a modern C# program with file-scoped namespaces, global usings, and top-level statements as the default style - Distinguish the three application styles: file-based apps (C# 14), project-based apps with top-level statements, and `Main`-style project-based apps - Update the "Related Sections" links: change the Namespaces link from `../types/namespaces.md` to `namespaces.md` (since it moves into this directory) - Replace or modernize existing snippet references; consider whether existing `snippets/structure/` and `snippets/toplevel-structure/` need updating to latest .NET target and everyday C# features * Move + revise namespaces.md - Delete `docs/csharp/fundamentals/types/namespaces.md` - Create new `docs/csharp/fundamentals/program-structure/namespaces.md` with heavily revised content covering: - File-scoped namespaces (C# 10) as the *default, recommended* style - Global using directives (C# 10) including implicit usings from the SDK - Static `using` (C# 6) for importing static members - Type and namespace aliases (subset) via `using` alias directive - `extern alias` (brief mention only) - How namespaces organize code and the `.` delimiter convention - Link to SDK section for implicit usings detail - Follow concept → example → concept → example structure - Target 1000–2000 words (5–10 minute read) * Move + modernize namespace snippets 3. **Move + modernize** namespace snippets from `types/snippets/namespaces/` → `program-structure/snippets/namespaces/` - Move all files from `docs/csharp/fundamentals/types/snippets/namespaces/` to `docs/csharp/fundamentals/program-structure/snippets/namespaces/` - Rename snippet region IDs from legacy numeric (`Snippet1`, `Snippet22`, `Snippet23`, `Snippet6`) to CamelCase names (e.g., `FullyQualifiedName`, `UsingDirective`, `ConsoleShorthand`, `DeclareNamespace`, `FileScopedNamespace`) - Modernize code: update `.csproj` target from `net8.0` to latest .NET, use top-level statements or file-based style where appropriate, use everyday C# features (nullable enable, collection expressions if natural) - Add new snippet files for global usings, static using, and alias examples - Delete the old `types/snippets/namespaces/` directory * Create new preprocessor-directives.md 4. **Create** new `docs/csharp/fundamentals/program-structure/preprocessor-directives.md` - This is a *fundamentals-level* article (not the language-reference exhaustive docs at `language-reference/preprocessor-directives.md`) - Cover only the four directives most relevant to everyday development: - `#if` / `#elif` / `#else` / `#endif` — conditional compilation (with `DEBUG`, `RELEASE`, target framework symbols) - `#region` / `#endregion` — code organization - `#nullable enable/disable/restore` — controlling nullable analysis scope - `#pragma warning disable/restore` — suppressing specific warnings - Brief mention of `#!` and `#:` for file-based apps (C# 14) with cross-reference to the overview and language reference - Link to the full `language-reference/preprocessor-directives.md` for complete reference - Create snippet project at `program-structure/snippets/preprocessor-directives/` - Add `ai-usage: ai-assisted` to frontmatter * Create organizing-programs.md 5. **Create** new `docs/csharp/fundamentals/program-structure/organizing-programs.md` - Addresses [dotnet/docs#34836](https://github.com/dotnet/docs/issues/34836) - Content: assemblies, namespaces, and types as organizational tools - Cover how the organizational hierarchy works: solution → projects → assemblies → namespaces → types - Explain naming conventions and how folder structure typically mirrors namespace structure - Show practical examples of organizing a small multi-project solution - Create snippet project at `program-structure/snippets/organizing-programs/` - Add `ai-usage: ai-assisted` to frontmatter * Content edit. * copy edit. * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * one more formatting bit * Read-through and update I made a few editorial changes while doing a final proofread. * Major review of the index Content review of the index.md file. * Major edit on namespaces * build errors * major edit pass on preprocessor * edit pass * Simplify the `Main` article * Fix links * Fix up samples * remove snippets no longer needed * fix build * Revert "fix build" This reverts commit 797ea26a779274921913d18a6371062a3d3c7e06. * Revert "remove snippets no longer needed" This reverts commit 6d02366f5e83f2c2698c86c7f7b447680204461d. * remove only some files. * Update edited articles per templates Apply the current template styles to all impacted articles in this PR. * Update docs/csharp/fundamentals/program-structure/index.md Co-authored-by: Andy (Steve) De George <67293991+adegeo@users.noreply.github.com> * Update docs/csharp/fundamentals/program-structure/namespaces.md Co-authored-by: Andy (Steve) De George <67293991+adegeo@users.noreply.github.com> * Update docs/csharp/fundamentals/program-structure/program-organization.md Co-authored-by: Andy (Steve) De George <67293991+adegeo@users.noreply.github.com> * Update docs/csharp/fundamentals/program-structure/program-organization.md Co-authored-by: Andy (Steve) De George <67293991+adegeo@users.noreply.github.com> * Update docs/csharp/fundamentals/program-structure/program-organization.md Co-authored-by: Andy (Steve) De George <67293991+adegeo@users.noreply.github.com> * Update docs/csharp/fundamentals/program-structure/main-command-line.md Co-authored-by: Andy (Steve) De George <67293991+adegeo@users.noreply.github.com> * Update docs/csharp/fundamentals/program-structure/top-level-statements.md Co-authored-by: Andy (Steve) De George <67293991+adegeo@users.noreply.github.com> * Update docs/csharp/fundamentals/program-structure/top-level-statements.md Co-authored-by: Andy (Steve) De George <67293991+adegeo@users.noreply.github.com> * respond to feedback. * Add necessary file --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Andy (Steve) De George <67293991+adegeo@users.noreply.github.com> --- .openpublishing.redirection.csharp.json | 4218 +++++++++-------- docfx.json | 1 + .../sdk/6.0/csharp-template-code.md | 2 +- docs/core/tutorials/top-level-templates.md | 2 +- ...cancel-an-async-task-or-a-list-of-tasks.md | 2 +- ...tasks-and-process-them-as-they-complete.md | 2 +- .../fundamentals/program-structure/index.md | 124 +- .../program-structure/main-command-line.md | 194 +- .../program-structure/namespaces.md | 110 + .../preprocessor-directives.md | 81 + .../program-structure/program-organization.md | 93 + .../main-arguments/main-arguments.csproj | 2 +- .../snippets/main-command-line/Factorial.cs | 50 - .../main-command-line.csproj | 2 +- .../snippets/namespaces/Aliases.cs | 14 + .../snippets/namespaces/Basics.cs | 42 + .../snippets/namespaces/BlockScoped.cs | 12 + .../snippets/namespaces/FileScopedExample.cs | 11 + .../snippets/namespaces/GlobalUsings.cs | 4 + .../snippets/namespaces/StaticUsing.cs | 12 + .../snippets/namespaces/TupleAlias.cs | 15 + .../snippets/namespaces/namespaces.csproj | 3 +- .../snippets/organizing-programs/AppDemo.cs | 12 + .../snippets/organizing-programs/Inventory.cs | 23 + .../organizing-programs/OrderService.cs | 16 + .../snippets/organizing-programs/Payments.cs | 20 + .../snippets/organizing-programs/Program.cs | 13 + .../organizing-programs.csproj | 11 + .../preprocessor-directives/PragmaWarning.cs | 23 + .../preprocessor-directives/Program.cs | 26 + .../preprocessor-directives.csproj | 10 + .../snippets/structure/Program.cs | 39 +- .../snippets/structure/structure.csproj | 2 +- .../top-level-statements.csproj | 4 +- .../top-level-statements.csproj | 2 +- .../top-level-statements.csproj | 2 +- .../top-level-statements.csproj | 2 +- .../top-level-statements.csproj | 2 +- .../snippets/toplevel-structure/Program.cs | 11 +- .../toplevel-structure.csproj | 2 +- .../program-structure/top-level-statements.md | 79 +- docs/csharp/fundamentals/types/namespaces.md | 51 - .../types/snippets/namespaces/Program.cs | 35 - .../namespaces/filescopednamespace.cs | 11 - .../compiler-messages/async-await-errors.md | 2 +- .../language-reference/keywords/namespace.md | 2 +- .../keywords/using-directive.md | 2 +- docs/csharp/misc/cs0101.md | 2 +- docs/csharp/misc/cs1527.md | 2 +- docs/csharp/toc.yml | 12 +- docs/csharp/tutorials/console-teleprompter.md | 2 +- 51 files changed, 2850 insertions(+), 2566 deletions(-) create mode 100644 docs/csharp/fundamentals/program-structure/namespaces.md create mode 100644 docs/csharp/fundamentals/program-structure/preprocessor-directives.md create mode 100644 docs/csharp/fundamentals/program-structure/program-organization.md delete mode 100644 docs/csharp/fundamentals/program-structure/snippets/main-command-line/Factorial.cs create mode 100644 docs/csharp/fundamentals/program-structure/snippets/namespaces/Aliases.cs create mode 100644 docs/csharp/fundamentals/program-structure/snippets/namespaces/Basics.cs create mode 100644 docs/csharp/fundamentals/program-structure/snippets/namespaces/BlockScoped.cs create mode 100644 docs/csharp/fundamentals/program-structure/snippets/namespaces/FileScopedExample.cs create mode 100644 docs/csharp/fundamentals/program-structure/snippets/namespaces/GlobalUsings.cs create mode 100644 docs/csharp/fundamentals/program-structure/snippets/namespaces/StaticUsing.cs create mode 100644 docs/csharp/fundamentals/program-structure/snippets/namespaces/TupleAlias.cs rename docs/csharp/fundamentals/{types => program-structure}/snippets/namespaces/namespaces.csproj (62%) create mode 100644 docs/csharp/fundamentals/program-structure/snippets/organizing-programs/AppDemo.cs create mode 100644 docs/csharp/fundamentals/program-structure/snippets/organizing-programs/Inventory.cs create mode 100644 docs/csharp/fundamentals/program-structure/snippets/organizing-programs/OrderService.cs create mode 100644 docs/csharp/fundamentals/program-structure/snippets/organizing-programs/Payments.cs create mode 100644 docs/csharp/fundamentals/program-structure/snippets/organizing-programs/Program.cs create mode 100644 docs/csharp/fundamentals/program-structure/snippets/organizing-programs/organizing-programs.csproj create mode 100644 docs/csharp/fundamentals/program-structure/snippets/preprocessor-directives/PragmaWarning.cs create mode 100644 docs/csharp/fundamentals/program-structure/snippets/preprocessor-directives/Program.cs create mode 100644 docs/csharp/fundamentals/program-structure/snippets/preprocessor-directives/preprocessor-directives.csproj delete mode 100644 docs/csharp/fundamentals/types/namespaces.md delete mode 100644 docs/csharp/fundamentals/types/snippets/namespaces/Program.cs delete mode 100644 docs/csharp/fundamentals/types/snippets/namespaces/filescopednamespace.cs diff --git a/.openpublishing.redirection.csharp.json b/.openpublishing.redirection.csharp.json index c7a967aaf4a6a..84cd4bf1fc0f8 100644 --- a/.openpublishing.redirection.csharp.json +++ b/.openpublishing.redirection.csharp.json @@ -1,2874 +1,2878 @@ { - "redirections": [ + "redirections": [ + { + "source_path_from_root": "/docs/csharp/fundamentals/types/namespaces.md", + "redirect_url": "/dotnet/csharp/fundamentals/program-structure/namespaces" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0080.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0081.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0305.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0306.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0307.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0308.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0312.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0313.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0314.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0315.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0401.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0403.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0405.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, { - "source_path_from_root": "/docs/csharp/misc/cs0080.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/misc/cs0407.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" }, + { + "source_path_from_root": "/docs/csharp/misc/cs0412.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0449.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0450.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0451.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0454.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0455.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0694.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0695.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0698.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0706.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0717.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0104.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0104" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0434.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0434" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0435.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0435" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0436.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0436" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0437.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0437" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0438.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0438" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1022.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs1022" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0304.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0310.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0311.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0413.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0417.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, { - "source_path_from_root": "/docs/csharp/misc/cs0081.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0467.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0702.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0703.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.0/binary-literals.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/lexical-structure#6453-integer-literals" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.0/digit-separators.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/lexical-structure#6453-integer-literals" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.0/local-functions.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/statements#1364-local-function-declarations" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.0/throw-expression.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1215-the-throw-expression-operator" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.0/out-var.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1217-declaration-expressions" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.0/pattern-matching.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/patterns" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.0/task-types.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/classes#15152-task-type-builder-pattern" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.1/async-main.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/basic-concepts#71-application-startup" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.1/target-typed-default.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#12719-default-value-expressions" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.1/infer-tuple-names.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#8311-tuple-types" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.1/generics-pattern-match.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/patterns" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.2/conditional-ref.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1219-conditional-operator" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.2/non-trailing-named-arguments.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#12621-general" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.2/private-protected.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/classes#1536-access-modifiers" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.2/readonly-ref.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/variables#97-reference-variables-and-returns" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.2/readonly-struct.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/structs#1624-struct-interfaces" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.2/span-safety.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/variables#97-reference-variables-and-returns" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.3/auto-prop-field-attrs.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/attributes#223-attribute-specification" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.3/blittable.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/classes#1525-type-parameter-constraints" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.3/expression-variables-in-initializers.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1217-declaration-expressions" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.3/improved-overload-candidates.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#12642-applicable-function-member" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.3/indexing-movable-fixed-fields.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/unsafe-code#2383-fixed-size-buffers-in-expressions" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.3/leading-digit-separator.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/lexical-structure#6453-integer-literals" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.3/pattern-based-fixed.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/unsafe-code#247-the-fixed-statement" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.3/ref-local-reassignment.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/variables#97-reference-variables-and-returns" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.3/stackalloc-array-initializers.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#12821-stack-allocation" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-7.3/tuple-equality.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#121211-tuple-equality-operators" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-9.0/nullable-reference-types-specification.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" + }, + { + "source_path_from_root": "/redirections/proposals/csharp-10.0/generic-attributes.md", + "redirect_url": "/dotnet/csharp/language-reference/proposals/csharp-11.0/generic-attributes" + }, + { + "source_path_from_root": "/docs/csharp/async.md", + "redirect_url": "/dotnet/csharp/asynchronous-programming" + }, + { + "source_path_from_root": "/docs/csharp/basic-types.md", + "redirect_url": "/dotnet/csharp/fundamentals/types" + }, + { + "source_path_from_root": "/docs/csharp/classes.md", + "redirect_url": "/dotnet/csharp/fundamentals/types/classes" + }, + { + "source_path_from_root": "/docs/csharp/codedoc.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" + }, + { + "source_path_from_root": "/docs/csharp/csharp-6.md", + "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-60" + }, + { + "source_path_from_root": "/docs/csharp/csharp-7.md", + "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-70" + }, + { + "source_path_from_root": "/docs/csharp/csharp.md", + "redirect_url": "/dotnet/csharp" + }, + { + "source_path_from_root": "/docs/csharp/deconstruct.md", + "redirect_url": "/dotnet/csharp/fundamentals/functional/deconstruct" + }, + { + "source_path_from_root": "/docs/csharp/delegates-events.md", + "redirect_url": "/dotnet/csharp/delegates-overview" + }, + { + "source_path_from_root": "/docs/csharp/discards.md", + "redirect_url": "/dotnet/csharp/fundamentals/functional/discards" + }, + { + "source_path_from_root": "/docs/csharp/expression-trees.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees" + }, + { + "source_path_from_root": "/docs/csharp/expression-classes.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-classes" + }, + { + "source_path_from_root": "/docs/csharp/expression-trees-building.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-building" + }, + { + "source_path_from_root": "/docs/csharp/expression-trees-explained.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-explained" + }, + { + "source_path_from_root": "/docs/csharp/expression-trees-execution.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-execution" + }, + { + "source_path_from_root": "/docs/csharp/expression-trees-interpreting.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-interpreting" + }, + { + "source_path_from_root": "/docs/csharp/expression-trees-summary.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees" + }, + { + "source_path_from_root": "/docs/csharp/expression-trees-translating.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-translating" + }, + { + "source_path_from_root": "/docs/csharp/features.md", + "redirect_url": "/dotnet/csharp/programming-guide/concepts" + }, + { + "source_path_from_root": "/docs/csharp/generics.md", + "redirect_url": "/dotnet/csharp/fundamentals/types/generics" + }, + { + "source_path_from_root": "/docs/csharp/getting-started/additional-resources.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp" + }, + { + "source_path_from_root": "/docs/csharp/getting-started/breaking-changes-in-visual-studio-2013.md", + "redirect_url": "/previous-versions/visualstudio/visual-studio-2013/hh678682(v=vs.120)" + }, + { + "source_path_from_root": "/docs/csharp/getting-started/consuming-library-with-visual-studio-2017.md", + "redirect_url": "/nuget/quickstart/install-and-use-a-package-in-visual-studio" + }, + { + "source_path_from_root": "/docs/csharp/getting-started/consuming-library-with-visual-studio.md", + "redirect_url": "/nuget/quickstart/install-and-use-a-package-in-visual-studio" + }, + { + "source_path_from_root": "/docs/csharp/getting-started/debugging-with-visual-studio-2017.md", + "redirect_url": "/dotnet/core/tutorials/debugging-with-visual-studio" + }, + { + "source_path_from_root": "/docs/csharp/getting-started/debugging-with-visual-studio.md", + "redirect_url": "/dotnet/core/tutorials/debugging-with-visual-studio" + }, + { + "source_path_from_root": "/docs/csharp/getting-started/getting-started-with-csharp.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp" + }, + { + "source_path_from_root": "/docs/csharp/getting-started/index.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp" + }, + { + "source_path_from_root": "/docs/csharp/getting-started/library-with-visual-studio-2017.md", + "redirect_url": "/dotnet/core/tutorials/library-with-visual-studio", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/getting-started/library-with-visual-studio.md", + "redirect_url": "/dotnet/core/tutorials/library-with-visual-studio" + }, + { + "source_path_from_root": "/docs/csharp/getting-started/publishing-with-visual-studio-2017.md", + "redirect_url": "/dotnet/core/tutorials/publishing-with-visual-studio" + }, + { + "source_path_from_root": "/docs/csharp/getting-started/publishing-with-visual-studio.md", + "redirect_url": "/dotnet/core/tutorials/publishing-with-visual-studio" + }, + { + "source_path_from_root": "/docs/csharp/getting-started/testing-library-with-visual-studio.md", + "redirect_url": "/dotnet/core/tutorials/testing-library-with-visual-studio" + }, + { + "source_path_from_root": "/docs/csharp/getting-started/with-visual-studio-2017.md", + "redirect_url": "/dotnet/core/tutorials/with-visual-studio", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/getting-started/with-visual-studio-code.md", + "redirect_url": "/dotnet/core/tutorials/with-visual-studio-code", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/getting-started/with-visual-studio.md", + "redirect_url": "/dotnet/core/tutorials/with-visual-studio" + }, + { + "source_path_from_root": "/docs/csharp/how-to/safely-cast-using-pattern-matching-is-and-as-operators.md", + "redirect_url": "/dotnet/csharp/fundamentals/tutorials/safely-cast-using-pattern-matching-is-and-as-operators" + }, + { + "source_path_from_root": "/docs/csharp/implicitly-typed-lambda-expressions.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" + }, + { + "source_path_from_root": "/docs/csharp/indexers.md", + "redirect_url": "/dotnet/csharp/programming-guide/indexers" + }, + { + "source_path_from_root": "/docs/csharp/interactive-with-bash.md", + "redirect_url": "/dotnet/csharp/index" + }, + { + "source_path_from_root": "/docs/csharp/interactive-with-powershell.md", + "redirect_url": "/dotnet/csharp/index" + }, + { + "source_path_from_root": "/docs/csharp/interactive-with-visualstudio.md", + "redirect_url": "/dotnet/csharp/index" + }, + { + "source_path_from_root": "/docs/csharp/interactive.md", + "redirect_url": "/dotnet/csharp/index" + }, + { + "source_path_from_root": "/docs/csharp/interfaces.md", + "redirect_url": "/dotnet/csharp/fundamentals/types/interfaces" + }, + { + "source_path_from_root": "/docs/csharp/interop.md", + "redirect_url": "/dotnet/csharp/advanced-topics/interop/index" + }, + { + "source_path_from_root": "/docs/csharp/lambda-expressions.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/builtin-types/nint-nuint.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types#native-sized-integers" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0034.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0071.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0106.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0116.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0116" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0277.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0178.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0181.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0188.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0233.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0234.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0246.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0260.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0270.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0518.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0518" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0545.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0552.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0563.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0571.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0579.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0592.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0616.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0650.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0686.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0736.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0737.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0738.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0767.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0826.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0834.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0840.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0843.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0845.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0846.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0854.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1009.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/string-literal" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1018.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-calls-with-base-and-this" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1019.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1029.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1063.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, { - "source_path_from_root": "/docs/csharp/misc/cs0305.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1065.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0306.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1067.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-types" }, { - "source_path_from_root": "/docs/csharp/misc/cs0307.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1112.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" }, { - "source_path_from_root": "/docs/csharp/misc/cs0308.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1501.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" }, { - "source_path_from_root": "/docs/csharp/misc/cs0312.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1502.md", + "redirect_url": "/dotnet/csharp/misc/cs1503" }, { - "source_path_from_root": "/docs/csharp/misc/cs0313.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1614.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0314.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1656.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0315.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1683.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" }, { - "source_path_from_root": "/docs/csharp/misc/cs0401.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1708.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0403.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1716.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0405.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1919.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0407.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1691.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0412.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1704.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" }, { - "source_path_from_root": "/docs/csharp/misc/cs0449.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1739.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" }, { - "source_path_from_root": "/docs/csharp/misc/cs0450.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1740.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" }, { - "source_path_from_root": "/docs/csharp/misc/cs0451.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1741.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0454.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1742.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" }, { - "source_path_from_root": "/docs/csharp/misc/cs0455.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1751.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" }, { - "source_path_from_root": "/docs/csharp/misc/cs0694.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1921.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0695.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1946.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" }, { - "source_path_from_root": "/docs/csharp/misc/cs0698.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1983.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0706.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1986.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0717.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1994.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0104.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0104" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1996.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0434.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0434" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1997.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0435.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0435" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1988.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0436.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0436" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4004.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0437.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0437" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4008.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0438.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0438" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4014.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1022.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs1022" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4032.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0304.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4033.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0310.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/misc/CS4009.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0311.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs3007.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0413.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4013.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0417.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs7000.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0467.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8145.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0702.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8153.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#conversion-to-expression-trees" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0703.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8154.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.0/binary-literals.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/lexical-structure#6453-integer-literals" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8155.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#conversion-to-expression-trees" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.0/digit-separators.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/lexical-structure#6453-integer-literals" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8166.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.0/local-functions.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/statements#1364-local-function-declarations" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8167.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.0/throw-expression.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1215-the-throw-expression-operator" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8168.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.0/out-var.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1217-declaration-expressions" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8169.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.0/pattern-matching.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/patterns" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8175.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.0/task-types.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/classes#15152-task-type-builder-pattern" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8176.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.1/async-main.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/basic-concepts#71-application-startup" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8177.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.1/target-typed-default.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#12719-default-value-expressions" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8178.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.1/infer-tuple-names.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#8311-tuple-types" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8373.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.1/generics-pattern-match.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/patterns" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8374.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.2/conditional-ref.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1219-conditional-operator" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8400.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.2/non-trailing-named-arguments.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#12621-general" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8401.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.2/private-protected.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/classes#1536-access-modifiers" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8403.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.2/readonly-ref.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/variables#97-reference-variables-and-returns" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8410.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#implementing-idisposable-and-iasyncdisposable" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.2/readonly-struct.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/structs#1624-struct-interfaces" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8411.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.2/span-safety.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/variables#97-reference-variables-and-returns" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8417.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#implementing-idisposable-and-iasyncdisposable" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.3/auto-prop-field-attrs.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/attributes#223-attribute-specification" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8418.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#implementing-idisposable-and-iasyncdisposable" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.3/blittable.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/classes#1525-type-parameter-constraints" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8647.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#using-variable-scope-and-control-flow" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.3/expression-variables-in-initializers.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1217-declaration-expressions" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8648.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#using-variable-scope-and-control-flow" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.3/improved-overload-candidates.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#12642-applicable-function-member" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8649.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#using-variable-scope-and-control-flow" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.3/indexing-movable-fixed-fields.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/unsafe-code#2383-fixed-size-buffers-in-expressions" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8795.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-types" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.3/leading-digit-separator.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/lexical-structure#6453-integer-literals" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8812.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.3/pattern-based-fixed.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/unsafe-code#247-the-fixed-statement" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8817.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-types" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.3/ref-local-reassignment.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/variables#97-reference-variables-and-returns" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8892.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/warning-waves#cs8892" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.3/stackalloc-array-initializers.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#12821-stack-allocation" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8964.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.3/tuple-equality.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#121211-tuple-equality-operators" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs9036.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" }, { - "source_path_from_root": "/redirections/proposals/csharp-9.0/nullable-reference-types-specification.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs9050.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-struct-errors" }, { - "source_path_from_root": "/redirections/proposals/csharp-10.0/generic-attributes.md", - "redirect_url": "/dotnet/csharp/language-reference/proposals/csharp-11.0/generic-attributes" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/addmodule-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/inputs" }, { - "source_path_from_root": "/docs/csharp/async.md", - "redirect_url": "/dotnet/csharp/asynchronous-programming" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/app-deployment.md", + "redirect_url": "/dotnet/framework/deployment/deployment-guide-for-developers" }, { - "source_path_from_root": "/docs/csharp/basic-types.md", - "redirect_url": "/dotnet/csharp/fundamentals/types" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/appconfig-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" }, { - "source_path_from_root": "/docs/csharp/classes.md", - "redirect_url": "/dotnet/csharp/fundamentals/types/classes" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/baseaddress-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" }, { - "source_path_from_root": "/docs/csharp/codedoc.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/bugreport-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options" }, { - "source_path_from_root": "/docs/csharp/csharp-6.md", - "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-60" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/checked-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/language" }, { - "source_path_from_root": "/docs/csharp/csharp-7.md", - "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-70" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/codepage-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" }, { - "source_path_from_root": "/docs/csharp/csharp.md", - "redirect_url": "/dotnet/csharp" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/command-line-building-with-csc-exe.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options" }, { - "source_path_from_root": "/docs/csharp/deconstruct.md", - "redirect_url": "/dotnet/csharp/fundamentals/functional/deconstruct" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/debug-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/code-generation" }, { - "source_path_from_root": "/docs/csharp/delegates-events.md", - "redirect_url": "/dotnet/csharp/delegates-overview" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/define-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/language" }, { - "source_path_from_root": "/docs/csharp/discards.md", - "redirect_url": "/dotnet/csharp/fundamentals/functional/discards" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/delaysign-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/security" }, { - "source_path_from_root": "/docs/csharp/expression-trees.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/deterministic-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/code-generation" }, { - "source_path_from_root": "/docs/csharp/expression-classes.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-classes" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/doc-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" }, { - "source_path_from_root": "/docs/csharp/expression-trees-building.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-building" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/errorreport-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options" }, { - "source_path_from_root": "/docs/csharp/expression-trees-explained.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-explained" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/filealign-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" }, { - "source_path_from_root": "/docs/csharp/expression-trees-execution.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-execution" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/fullpaths-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" }, { - "source_path_from_root": "/docs/csharp/expression-trees-interpreting.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-interpreting" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/help-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/miscellaneous" }, { - "source_path_from_root": "/docs/csharp/expression-trees-summary.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/highentropyva-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/security" }, { - "source_path_from_root": "/docs/csharp/expression-trees-translating.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-translating" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/how-to-set-environment-variables-for-the-visual-studio-command-line.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options" }, { - "source_path_from_root": "/docs/csharp/features.md", - "redirect_url": "/dotnet/csharp/programming-guide/concepts" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/keycontainer-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/security" }, { - "source_path_from_root": "/docs/csharp/generics.md", - "redirect_url": "/dotnet/csharp/fundamentals/types/generics" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/keyfile-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/security" }, { - "source_path_from_root": "/docs/csharp/getting-started/additional-resources.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/langversion-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/language" }, { - "source_path_from_root": "/docs/csharp/getting-started/breaking-changes-in-visual-studio-2013.md", - "redirect_url": "/previous-versions/visualstudio/visual-studio-2013/hh678682(v=vs.120)" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/lib-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" }, { - "source_path_from_root": "/docs/csharp/getting-started/consuming-library-with-visual-studio-2017.md", - "redirect_url": "/nuget/quickstart/install-and-use-a-package-in-visual-studio" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/link-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/inputs" }, { - "source_path_from_root": "/docs/csharp/getting-started/consuming-library-with-visual-studio.md", - "redirect_url": "/nuget/quickstart/install-and-use-a-package-in-visual-studio" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/linkresource-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" }, { - "source_path_from_root": "/docs/csharp/getting-started/debugging-with-visual-studio-2017.md", - "redirect_url": "/dotnet/core/tutorials/debugging-with-visual-studio" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/listed-alphabetically.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options" }, { - "source_path_from_root": "/docs/csharp/getting-started/debugging-with-visual-studio.md", - "redirect_url": "/dotnet/core/tutorials/debugging-with-visual-studio" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/listed-by-category.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options" }, { - "source_path_from_root": "/docs/csharp/getting-started/getting-started-with-csharp.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/main-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" }, { - "source_path_from_root": "/docs/csharp/getting-started/index.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/moduleassemblyname-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" }, { - "source_path_from_root": "/docs/csharp/getting-started/library-with-visual-studio-2017.md", - "redirect_url": "/dotnet/core/tutorials/library-with-visual-studio", - "redirect_document_id": true + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/noconfig-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/miscellaneous" }, { - "source_path_from_root": "/docs/csharp/getting-started/library-with-visual-studio.md", - "redirect_url": "/dotnet/core/tutorials/library-with-visual-studio" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/nologo-file-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/miscellaneous" }, { - "source_path_from_root": "/docs/csharp/getting-started/publishing-with-visual-studio-2017.md", - "redirect_url": "/dotnet/core/tutorials/publishing-with-visual-studio" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/nostdlib-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" }, { - "source_path_from_root": "/docs/csharp/getting-started/publishing-with-visual-studio.md", - "redirect_url": "/dotnet/core/tutorials/publishing-with-visual-studio" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/nowarn-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/errors-warnings" }, { - "source_path_from_root": "/docs/csharp/getting-started/testing-library-with-visual-studio.md", - "redirect_url": "/dotnet/core/tutorials/testing-library-with-visual-studio" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/nowin32manifest-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" }, { - "source_path_from_root": "/docs/csharp/getting-started/with-visual-studio-2017.md", - "redirect_url": "/dotnet/core/tutorials/with-visual-studio", - "redirect_document_id": true + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/nullable-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/language" }, { - "source_path_from_root": "/docs/csharp/getting-started/with-visual-studio-code.md", - "redirect_url": "/dotnet/core/tutorials/with-visual-studio-code", - "redirect_document_id": true + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/optimize-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/code-generation" }, { - "source_path_from_root": "/docs/csharp/getting-started/with-visual-studio.md", - "redirect_url": "/dotnet/core/tutorials/with-visual-studio" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/out-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" }, { - "source_path_from_root": "/docs/csharp/how-to/safely-cast-using-pattern-matching-is-and-as-operators.md", - "redirect_url": "/dotnet/csharp/fundamentals/tutorials/safely-cast-using-pattern-matching-is-and-as-operators" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/pathmap-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" }, { - "source_path_from_root": "/docs/csharp/implicitly-typed-lambda-expressions.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/pdb-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" }, { - "source_path_from_root": "/docs/csharp/indexers.md", - "redirect_url": "/dotnet/csharp/programming-guide/indexers" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/platform-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" }, { - "source_path_from_root": "/docs/csharp/interactive-with-bash.md", - "redirect_url": "/dotnet/csharp/index" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/preferreduilang-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" }, { - "source_path_from_root": "/docs/csharp/interactive-with-powershell.md", - "redirect_url": "/dotnet/csharp/index" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/publicsign-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/security" }, { - "source_path_from_root": "/docs/csharp/interactive-with-visualstudio.md", - "redirect_url": "/dotnet/csharp/index" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/recurse-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options" }, { - "source_path_from_root": "/docs/csharp/interactive.md", - "redirect_url": "/dotnet/csharp/index" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/reference-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/inputs" }, { - "source_path_from_root": "/docs/csharp/interfaces.md", - "redirect_url": "/dotnet/csharp/fundamentals/types/interfaces" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/refonly-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/code-generation" }, { - "source_path_from_root": "/docs/csharp/interop.md", - "redirect_url": "/dotnet/csharp/advanced-topics/interop/index" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/refout-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" }, { - "source_path_from_root": "/docs/csharp/lambda-expressions.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" - }, + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/resource-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" + }, { - "source_path_from_root": "/docs/csharp/language-reference/builtin-types/nint-nuint.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types#native-sized-integers" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/response-file-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/miscellaneous" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0034.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/subsystemversion-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0071.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-appcontainerexe-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0106.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0116.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0116" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-exe-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" }, { - "source_path_from_root": "/docs/csharp/misc/cs0277.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-library-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0178.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-module-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0181.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-winexe-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0188.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-winmdobj-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0233.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/unsafe-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/language" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0234.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/utf8output-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0246.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/warn-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/errors-warnings" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0260.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/warnaserror-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/errors-warnings" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0270.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/win32icon-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0518.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0518" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/win32manifest-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0545.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/win32res-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0552.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/access-keywords.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/base" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0563.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/as.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/type-testing-and-cast#the-as-operator" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0571.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/await.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/await" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0579.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/bool.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/bool" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0592.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/break.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/jump-statements" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0616.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/built-in-types-table.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/built-in-types" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0650.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/byte.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0686.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/char.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/char" }, { - "source_path_from_root": "/docs/csharp/misc/cs0736.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/checked.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/checked-and-unchecked" }, { - "source_path_from_root": "/docs/csharp/misc/cs0737.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/checked-and-unchecked.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/checked-and-unchecked" }, { - "source_path_from_root": "/docs/csharp/misc/cs0738.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/continue.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/jump-statements" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0767.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/contextual-keywords.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/index#contextual-keywords" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0826.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/conversion-keywords.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/user-defined-conversion-operators" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0834.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + "source_path_from_root": "/docs/csharp/language-reference/keywords/decimal.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0840.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/default-values-table.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/default-values" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0843.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/delegate.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/reference-types" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0845.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + "source_path_from_root": "/docs/csharp/language-reference/keywords/do.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0846.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/double.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0854.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + "source_path_from_root": "/docs/csharp/language-reference/keywords/dynamic.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/reference-types" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1009.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/string-literal" + "source_path_from_root": "/docs/csharp/language-reference/keywords/enum.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/enum" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1018.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-calls-with-base-and-this" + "source_path_from_root": "/docs/csharp/language-reference/keywords/exception-handling-statements.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/statement-keywords" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1019.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + "source_path_from_root": "/docs/csharp/language-reference/keywords/explicit-numeric-conversions-table.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/numeric-conversions" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1029.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/explicit.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/user-defined-conversion-operators" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1063.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/false-literal.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/bool" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1065.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/false-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/true-false-operators" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1067.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-types" + "source_path_from_root": "/docs/csharp/language-reference/keywords/false.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/bool" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1112.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + "source_path_from_root": "/docs/csharp/language-reference/keywords/fixed-statement.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/fixed" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1501.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + "source_path_from_root": "/docs/csharp/language-reference/keywords/float.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1502.md", - "redirect_url": "/dotnet/csharp/misc/cs1503" + "source_path_from_root": "/docs/csharp/language-reference/keywords/floating-point-types-table.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1614.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/for.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1656.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/foreach-in.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1683.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" + "source_path_from_root": "/docs/csharp/language-reference/keywords/formatting-numeric-results-table.md", + "redirect_url": "/dotnet/standard/base-types/standard-numeric-format-strings" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1708.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/global.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/namespace-alias-qualifier" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1716.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/goto.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/jump-statements" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1919.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/if-else.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/selection-statements" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1691.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/implicit-numeric-conversions-table.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/numeric-conversions" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1704.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" + "source_path_from_root": "/docs/csharp/language-reference/keywords/implicit.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/user-defined-conversion-operators" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1739.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + "source_path_from_root": "/docs/csharp/language-reference/keywords/in-parameter-modifier.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/method-parameters#in-parameter-modifier" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1740.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + "source_path_from_root": "/docs/csharp/language-reference/keywords/int.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1741.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/integral-types-table.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1742.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + "source_path_from_root": "/docs/csharp/language-reference/keywords/interpolated-strings.md", + "redirect_url": "/dotnet/csharp/language-reference/tokens/interpolated" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1751.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + "source_path_from_root": "/docs/csharp/language-reference/keywords/is.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/is" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1921.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/iteration-statements.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1946.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + "source_path_from_root": "/docs/csharp/language-reference/keywords/jump-statements.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/statement-keywords" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1983.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/literal-keywords.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/null" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1986.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/lock-statement.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/lock" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1994.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/long.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1996.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/modifiers.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1997.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/nameof.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/nameof" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1988.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/namespace-keywords.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/namespace" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4004.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/new-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/new-operator" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4008.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/object.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/reference-types" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4014.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/operator-keywords.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/index" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4032.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/operator-overloading" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4033.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/out-parameter-modifier.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/method-parameters#out-parameter-modifier" }, { - "source_path_from_root": "/docs/csharp/misc/CS4009.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/params.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/method-parameters#params-modifier" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs3007.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/partial-method.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/partial-member", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4013.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + "source_path_from_root": "/docs/csharp/language-reference/keywords/reference-tables-for-types.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs7000.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8145.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8153.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#conversion-to-expression-trees" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8154.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8155.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#conversion-to-expression-trees" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8166.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8167.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8168.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8169.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8175.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8176.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8177.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8178.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8373.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8374.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8400.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8401.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8403.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8410.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#implementing-idisposable-and-iasyncdisposable" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8411.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8417.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#implementing-idisposable-and-iasyncdisposable" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8418.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#implementing-idisposable-and-iasyncdisposable" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8647.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#using-variable-scope-and-control-flow" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8648.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#using-variable-scope-and-control-flow" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8649.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#using-variable-scope-and-control-flow" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8795.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8812.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8817.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8892.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/warning-waves#cs8892" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8964.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs9036.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs9050.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-struct-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/addmodule-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/inputs" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/app-deployment.md", - "redirect_url": "/dotnet/framework/deployment/deployment-guide-for-developers" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/appconfig-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/baseaddress-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/bugreport-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/checked-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/language" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/codepage-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/command-line-building-with-csc-exe.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/debug-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/code-generation" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/define-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/language" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/delaysign-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/security" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/deterministic-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/code-generation" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/doc-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/errorreport-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/filealign-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/fullpaths-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/help-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/miscellaneous" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/highentropyva-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/security" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/how-to-set-environment-variables-for-the-visual-studio-command-line.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/keycontainer-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/security" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/keyfile-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/security" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/langversion-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/language" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/lib-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/link-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/inputs" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/linkresource-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/listed-alphabetically.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/listed-by-category.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/main-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/moduleassemblyname-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/noconfig-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/miscellaneous" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/nologo-file-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/miscellaneous" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/nostdlib-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/nowarn-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/errors-warnings" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/nowin32manifest-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/nullable-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/language" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/optimize-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/code-generation" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/out-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/pathmap-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/pdb-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/platform-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/preferreduilang-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/publicsign-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/security" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/recurse-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/reference-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/inputs" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/refonly-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/code-generation" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/refout-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/resource-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/response-file-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/miscellaneous" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/subsystemversion-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-appcontainerexe-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-exe-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-library-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-module-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-winexe-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-winmdobj-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/unsafe-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/language" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/utf8output-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/warn-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/errors-warnings" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/warnaserror-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/errors-warnings" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/win32icon-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/win32manifest-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/win32res-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/access-keywords.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/base" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/as.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/type-testing-and-cast#the-as-operator" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/await.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/await" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/bool.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/bool" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/break.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/jump-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/built-in-types-table.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/built-in-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/byte.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/char.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/char" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/checked.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/checked-and-unchecked" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/checked-and-unchecked.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/checked-and-unchecked" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/continue.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/jump-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/contextual-keywords.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/index#contextual-keywords" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/conversion-keywords.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/user-defined-conversion-operators" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/decimal.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/default-values-table.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/default-values" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/delegate.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/reference-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/do.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/double.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/dynamic.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/reference-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/enum.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/enum" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/exception-handling-statements.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/statement-keywords" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/explicit-numeric-conversions-table.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/numeric-conversions" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/explicit.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/user-defined-conversion-operators" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/false-literal.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/bool" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/false-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/true-false-operators" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/false.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/bool" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/fixed-statement.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/fixed" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/float.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/floating-point-types-table.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/for.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/foreach-in.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/formatting-numeric-results-table.md", - "redirect_url": "/dotnet/standard/base-types/standard-numeric-format-strings" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/global.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/namespace-alias-qualifier" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/goto.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/jump-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/if-else.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/selection-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/implicit-numeric-conversions-table.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/numeric-conversions" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/implicit.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/user-defined-conversion-operators" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/in-parameter-modifier.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/method-parameters#in-parameter-modifier" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/int.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/integral-types-table.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/interpolated-strings.md", - "redirect_url": "/dotnet/csharp/language-reference/tokens/interpolated" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/is.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/is" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/iteration-statements.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/jump-statements.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/statement-keywords" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/literal-keywords.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/null" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/lock-statement.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/lock" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/long.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/modifiers.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/nameof.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/nameof" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/namespace-keywords.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/namespace" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/new-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/new-operator" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/object.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/reference-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/operator-keywords.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/index" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/operator-overloading" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/out-parameter-modifier.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/method-parameters#out-parameter-modifier" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/params.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/method-parameters#params-modifier" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/partial-method.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/partial-member", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/reference-tables-for-types.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/return.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/jump-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/sbyte.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/selection-statements.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/selection-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/short.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/sizeof.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/sizeof" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/stackalloc.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/stackalloc" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/string.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/reference-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/struct.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/struct" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/switch.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/selection-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/throw.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/exception-handling-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/true-false-operators.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/true-false-operators" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/true-literal.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/bool" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/true-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/true-false-operators" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/true.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/bool" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/try-catch.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/exception-handling-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/try-catch-finally.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/exception-handling-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/try-finally.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/exception-handling-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/typeof.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/type-testing-and-cast#the-typeof-operator" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/types.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/uint.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/ulong.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/unchecked.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/checked-and-unchecked" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/ushort.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/using-statement.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/using" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/using-static.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/using-directive" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/value-types-table.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/value-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/value-types.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/value-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/var.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/declarations#implicitly-typed-local-variables" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/void.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/void" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/while.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/yield.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/yield" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/language-specification/index.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/introduction" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/addition-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/and-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/and-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#logical-and-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/bitwise-complement-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#bitwise-complement-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/conditional-and-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#conditional-logical-and-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/conditional-or-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#conditional-logical-or-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/decrement-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#decrement-operator---" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/dereference-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators#pointer-member-access-operator--" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/division-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/division-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#division-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/equality-comparison-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/equality-operators#equality-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/greater-than-equal-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/comparison-operators#greater-than-or-equal-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/greater-than-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/comparison-operators#greater-than-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/increment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#increment-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/index-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/member-access-operators#indexer-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/invocation-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/member-access-operators#invocation-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/left-shift-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/left-shift-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#left-shift-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/less-than-equal-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/comparison-operators#less-than-or-equal-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/less-than-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/comparison-operators#less-than-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/logical-negation-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#logical-negation-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/member-access-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/member-access-operators#member-access-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/modulus-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/modulus-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#remainder-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/multiplication-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/multiplication-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#multiplication-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/namespace-alias-qualifer.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/namespace-alias-qualifier" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/not-equal-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/equality-operators#inequality-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/null-conditional-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/null-coalescing-operator" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/null-conditional-operators.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/member-access-operators#null-conditional-operators--and-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/or-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/or-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#logical-or-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/remainder-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/remainder-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#remainder-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/right-shift-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/right-shift-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#right-shift-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/null-parameter-check.md", - "redirect_url": "/dotnet/csharp/language-reference/operators" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/subtraction-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/type-testing-and-conversion-operators.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/type-testing-and-cast" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/xor-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/xor-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#logical-exclusive-or-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/index.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-define.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-elif.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-else.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-endif.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-endregion.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-error.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-if.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-line.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-nullable.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-pragma-checksum.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-pragma-warning.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-pragma.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-region.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-undef.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-warning.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/lambda-attributes.md", - "redirect_url": "/dotnet/csharp/language-reference/proposals/csharp-10.0/lambda-improvements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-7.0/index.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/readme" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-7.1/index.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/readme" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-7.2/index.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/variables#928-input-parameters" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-7.3/index.md", - "redirect_url": "/dotnet/csharp/language-reference/proposals/csharp-7.3/ref-local-reassignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-9.0/nullable-reference-types-specification.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-9.0/nullable-constructor-analysis.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-9.0/nullable-parameter-default-value-analysis.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-9.0/index.md", - "redirect_url": "/dotnet/csharp/language-reference/proposals/csharp-9.0/records" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/index.md", - "redirect_url": "/dotnet/csharp/language-reference/proposals/csharp-10.0/record-structs" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-11.0/index.md", - "redirect_url": "/dotnet/csharp/language-reference/proposals/csharp-11.0/static-abstracts-in-interfaces" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/specifications.md", - "redirect_url": "/dotnet/csharp/specifications" - }, - { - "source_path_from_root": "/docs/csharp/linq/create-a-nested-group.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/grouping-data" - }, - { - "source_path_from_root": "/docs/csharp/linq/group-query-results.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/grouping-data" - }, - { - "source_path_from_root": "/docs/csharp/linq/join-by-using-composite-keys.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" - }, - { - "source_path_from_root": "/docs/csharp/linq/perform-a-subquery-on-a-grouping-operation.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/grouping-data" - }, - { - "source_path_from_root": "/docs/csharp/linq/linq-to-objects.md", - "redirect_url": "/dotnet/csharp/linq/introduction-to-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/linq/perform-grouped-joins.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" - }, - { - "source_path_from_root": "/docs/csharp/linq/perform-inner-joins.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" - }, - { - "source_path_from_root": "/docs/csharp/linq/perform-left-outer-joins.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" - }, - { - "source_path_from_root": "/docs/csharp/linq/order-the-results-of-a-join-clause.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" - }, - { - "source_path_from_root": "/docs/csharp/linq/perform-custom-join-operations.md", - "redirect_url": "/dotnet/csharp/linq/" - }, - { - "source_path_from_root": "/docs/csharp/linq/query-expression-basics.md", - "redirect_url": "/dotnet/csharp/linq/get-started/query-expression-basics" - }, - { - "source_path_from_root": "/docs/csharp/linq/query-a-collection-of-objects.md", - "redirect_url": "/dotnet/csharp/linq/get-started/introduction-to-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/linq/return-a-query-from-a-method.md", - "redirect_url": "/dotnet/csharp/linq/get-started/features-that-support-linq#expressions-as-data" - }, - { - "source_path_from_root": "/docs/csharp/linq/dynamically-specify-predicate-filters-at-runtime.md", - "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/linq/handle-null-values-in-query-expressions.md", - "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/linq/handle-exceptions-in-query-expressions.md", - "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/linq/store-the-results-of-a-query-in-memory.md", - "redirect_url": "/dotnet/csharp/linq/get-started/introduction-to-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/linq/write-linq-queries.md", - "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/linq/linq-in-csharp.md", - "redirect_url": "/dotnet/csharp/linq/" - }, - { - "source_path_from_root": "/docs/csharp/local-functions-vs-lambdas.md", - "redirect_url": "/dotnet/csharp/programming-guide/classes-and-structs/local-functions" - }, - { - "source_path_from_root": "/docs/csharp/methods-lambda-expressions.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0012.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0022.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0035.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0056.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0057.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0105.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0111.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0121.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0138.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0171.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0182.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0185.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lock-semantics" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0192.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0193.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0196.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0199.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0200.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0206.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0208.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0209.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0210.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0211.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0212.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0213.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0214.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0215.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0216.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0227.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0242.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0243.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0244.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0245.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#implementing-idisposable-and-iasyncdisposable" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0254.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0459.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0821.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0217.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0218.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0225.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0231.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0248.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0251.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0261.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0262.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0263.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0264.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0265.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0267.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0282.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0400.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0404.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0415.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0416.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0447.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0431.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0430.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0432.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0439.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0440.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0448.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0457.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0425.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0428.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0460.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/return.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/jump-statements" }, { - "source_path_from_root": "/docs/csharp/misc/cs0466.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + "source_path_from_root": "/docs/csharp/language-reference/keywords/sbyte.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" }, { - "source_path_from_root": "/docs/csharp/misc/cs0470.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/selection-statements.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/selection-statements" }, { - "source_path_from_root": "/docs/csharp/misc/cs0473.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/short.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" }, { - "source_path_from_root": "/docs/csharp/misc/cs0531.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/sizeof.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/sizeof" }, { - "source_path_from_root": "/docs/csharp/misc/cs0535.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/stackalloc.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/stackalloc" }, { - "source_path_from_root": "/docs/csharp/misc/cs0501.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/language-reference/keywords/string.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/reference-types" }, { - "source_path_from_root": "/docs/csharp/misc/cs0514.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#static-constructors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/struct.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/struct" }, { - "source_path_from_root": "/docs/csharp/misc/cs0515.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#static-constructors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/switch.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/selection-statements" }, { - "source_path_from_root": "/docs/csharp/misc/cs0132.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#static-constructors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/throw.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/exception-handling-statements" }, { - "source_path_from_root": "/docs/csharp/misc/cs0516.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-calls-with-base-and-this" + "source_path_from_root": "/docs/csharp/language-reference/keywords/true-false-operators.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/true-false-operators" }, { - "source_path_from_root": "/docs/csharp/misc/cs0517.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-calls-with-base-and-this" + "source_path_from_root": "/docs/csharp/language-reference/keywords/true-literal.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/bool" }, { - "source_path_from_root": "/docs/csharp/misc/cs0522.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-calls-with-base-and-this" + "source_path_from_root": "/docs/csharp/language-reference/keywords/true-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/true-false-operators" }, { - "source_path_from_root": "/docs/csharp/misc/cs0526.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-declarations" + "source_path_from_root": "/docs/csharp/language-reference/keywords/true.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/bool" }, { - "source_path_from_root": "/docs/csharp/misc/cs0538.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/try-catch.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/exception-handling-statements" }, { - "source_path_from_root": "/docs/csharp/misc/cs0539.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/try-catch-finally.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/exception-handling-statements" }, { - "source_path_from_root": "/docs/csharp/misc/cs0540.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/try-finally.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/exception-handling-statements" }, { - "source_path_from_root": "/docs/csharp/misc/cs0541.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/typeof.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/type-testing-and-cast#the-typeof-operator" }, { - "source_path_from_root": "/docs/csharp/misc/cs0550.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/types.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords" }, { - "source_path_from_root": "/docs/csharp/misc/cs0551.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/uint.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" }, { - "source_path_from_root": "/docs/csharp/misc/cs0553.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/ulong.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" }, { - "source_path_from_root": "/docs/csharp/misc/cs0554.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/unchecked.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/checked-and-unchecked" }, { - "source_path_from_root": "/docs/csharp/misc/cs0555.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/ushort.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" }, { - "source_path_from_root": "/docs/csharp/misc/cs0556.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/using-statement.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/using" }, { - "source_path_from_root": "/docs/csharp/misc/cs0557.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/using-static.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/using-directive" }, { - "source_path_from_root": "/docs/csharp/misc/cs0558.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/value-types-table.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/value-types" }, { - "source_path_from_root": "/docs/csharp/misc/cs0559.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/value-types.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/value-types" }, { - "source_path_from_root": "/docs/csharp/misc/cs0562.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/var.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/declarations#implicitly-typed-local-variables" }, { - "source_path_from_root": "/docs/csharp/misc/cs0564.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/void.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/void" }, { - "source_path_from_root": "/docs/csharp/misc/cs0567.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/while.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" }, { - "source_path_from_root": "/docs/csharp/misc/cs0590.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/language-reference/keywords/yield.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/yield" }, { - "source_path_from_root": "/docs/csharp/misc/cs0660.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/language-reference/language-specification/index.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/introduction" }, { - "source_path_from_root": "/docs/csharp/misc/cs0661.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/addition-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" }, { - "source_path_from_root": "/docs/csharp/misc/cs0715.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/and-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#compound-assignment" }, { - "source_path_from_root": "/docs/csharp/misc/cs0728.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#using-variable-scope-and-control-flow" + "source_path_from_root": "/docs/csharp/language-reference/operators/and-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#logical-and-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0735.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/bitwise-complement-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#bitwise-complement-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0739.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/conditional-and-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#conditional-logical-and-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs1037.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/conditional-or-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#conditional-logical-or-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs1553.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/decrement-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#decrement-operator---" }, { - "source_path_from_root": "/docs/csharp/misc/cs1554.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/dereference-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators#pointer-member-access-operator--" }, { - "source_path_from_root": "/docs/csharp/misc/cs0568.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructors-in-struct-types" + "source_path_from_root": "/docs/csharp/language-reference/operators/division-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" }, { - "source_path_from_root": "/docs/csharp/misc/cs0573.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructors-in-struct-types" + "source_path_from_root": "/docs/csharp/language-reference/operators/division-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#division-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0570.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#CS0570" + "source_path_from_root": "/docs/csharp/language-reference/operators/equality-comparison-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/equality-operators#equality-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0576.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/greater-than-equal-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/comparison-operators#greater-than-or-equal-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0577.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/greater-than-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/comparison-operators#greater-than-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0578.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/increment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#increment-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0582.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/index-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/member-access-operators#indexer-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0609.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/invocation-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/member-access-operators#invocation-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0629.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/left-shift-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#compound-assignment" }, { - "source_path_from_root": "/docs/csharp/misc/cs0591.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + "source_path_from_root": "/docs/csharp/language-reference/operators/left-shift-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#left-shift-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0599.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + "source_path_from_root": "/docs/csharp/language-reference/operators/less-than-equal-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/comparison-operators#less-than-or-equal-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0611.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/less-than-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/comparison-operators#less-than-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0617.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + "source_path_from_root": "/docs/csharp/language-reference/operators/logical-negation-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#logical-negation-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0623.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/member-access-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/member-access-operators#member-access-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0625.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/modulus-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" }, { - "source_path_from_root": "/docs/csharp/misc/cs0631.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/modulus-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#remainder-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0633.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + "source_path_from_root": "/docs/csharp/language-reference/operators/multiplication-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" }, { - "source_path_from_root": "/docs/csharp/misc/cs0636.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/multiplication-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#multiplication-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0637.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/namespace-alias-qualifer.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/namespace-alias-qualifier" }, { - "source_path_from_root": "/docs/csharp/misc/cs0641.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/not-equal-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/equality-operators#inequality-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0646.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/null-conditional-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/null-coalescing-operator" }, { - "source_path_from_root": "/docs/csharp/misc/cs0647.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/null-conditional-operators.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/member-access-operators#null-conditional-operators--and-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0643.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + "source_path_from_root": "/docs/csharp/language-reference/operators/or-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#compound-assignment" }, { - "source_path_from_root": "/docs/csharp/misc/cs0653.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/or-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#logical-or-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0657.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/remainder-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" }, { - "source_path_from_root": "/docs/csharp/misc/cs0658.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/remainder-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#remainder-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0655.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + "source_path_from_root": "/docs/csharp/language-reference/operators/right-shift-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#compound-assignment" }, { - "source_path_from_root": "/docs/csharp/misc/cs0663.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + "source_path_from_root": "/docs/csharp/language-reference/operators/right-shift-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#right-shift-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0668.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/null-parameter-check.md", + "redirect_url": "/dotnet/csharp/language-reference/operators" }, { - "source_path_from_root": "/docs/csharp/misc/cs0674.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + "source_path_from_root": "/docs/csharp/language-reference/operators/subtraction-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" }, { - "source_path_from_root": "/docs/csharp/misc/cs0685.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/type-testing-and-conversion-operators.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/type-testing-and-cast" }, { - "source_path_from_root": "/docs/csharp/misc/cs0687.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + "source_path_from_root": "/docs/csharp/language-reference/operators/xor-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#compound-assignment" }, { - "source_path_from_root": "/docs/csharp/misc/cs0710.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-declarations" + "source_path_from_root": "/docs/csharp/language-reference/operators/xor-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#logical-exclusive-or-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0719.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/index.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs0747.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-define.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" }, { - "source_path_from_root": "/docs/csharp/misc/cs0748.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#lambda-expression-parameters-and-returns" + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-elif.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" }, { - "source_path_from_root": "/docs/csharp/misc/cs0750.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-else.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" }, { - "source_path_from_root": "/docs/csharp/misc/cs0751.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-endif.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" }, { - "source_path_from_root": "/docs/csharp/misc/cs0754.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-endregion.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" }, { - "source_path_from_root": "/docs/csharp/misc/cs0755.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-error.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" }, { - "source_path_from_root": "/docs/csharp/misc/cs0756.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-if.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" }, { - "source_path_from_root": "/docs/csharp/misc/cs0757.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-line.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" }, { - "source_path_from_root": "/docs/csharp/misc/cs0758.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-nullable.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" }, { - "source_path_from_root": "/docs/csharp/misc/cs0759.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-pragma-checksum.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" }, { - "source_path_from_root": "/docs/csharp/misc/cs0761.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-pragma-warning.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" }, { - "source_path_from_root": "/docs/csharp/misc/cs0762.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-pragma.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" }, { - "source_path_from_root": "/docs/csharp/misc/cs0763.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-region.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" }, { - "source_path_from_root": "/docs/csharp/misc/cs0764.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-undef.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" }, { - "source_path_from_root": "/docs/csharp/misc/cs0765.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-warning.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" }, { - "source_path_from_root": "/docs/csharp/misc/cs0815.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/lambda-attributes.md", + "redirect_url": "/dotnet/csharp/language-reference/proposals/csharp-10.0/lambda-improvements" }, { - "source_path_from_root": "/docs/csharp/misc/cs0820.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-7.0/index.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/readme" }, { - "source_path_from_root": "/docs/csharp/misc/cs0824.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-declarations" + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-7.1/index.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/readme" }, { - "source_path_from_root": "/docs/csharp/misc/cs0828.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-7.2/index.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/variables#928-input-parameters" }, { - "source_path_from_root": "/docs/csharp/misc/cs0831.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-7.3/index.md", + "redirect_url": "/dotnet/csharp/language-reference/proposals/csharp-7.3/ref-local-reassignment" }, { - "source_path_from_root": "/docs/csharp/misc/cs0832.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-9.0/nullable-reference-types-specification.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" }, { - "source_path_from_root": "/docs/csharp/misc/cs0835.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-9.0/nullable-constructor-analysis.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" }, { - "source_path_from_root": "/docs/csharp/misc/cs0837.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-9.0/nullable-parameter-default-value-analysis.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" }, { - "source_path_from_root": "/docs/csharp/misc/cs0838.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-9.0/index.md", + "redirect_url": "/dotnet/csharp/language-reference/proposals/csharp-9.0/records" }, { - "source_path_from_root": "/docs/csharp/misc/cs0839.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/index.md", + "redirect_url": "/dotnet/csharp/language-reference/proposals/csharp-10.0/record-structs" }, { - "source_path_from_root": "/docs/csharp/misc/cs1007.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-11.0/index.md", + "redirect_url": "/dotnet/csharp/language-reference/proposals/csharp-11.0/static-abstracts-in-interfaces" }, { - "source_path_from_root": "/docs/csharp/misc/cs1011.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/string-literal" + "source_path_from_root": "/docs/csharp/language-reference/specifications.md", + "redirect_url": "/dotnet/csharp/specifications" }, { - "source_path_from_root": "/docs/csharp/misc/cs1012.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/string-literal" + "source_path_from_root": "/docs/csharp/linq/create-a-nested-group.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/grouping-data" }, { - "source_path_from_root": "/docs/csharp/misc/cs1014.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + "source_path_from_root": "/docs/csharp/linq/group-query-results.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/grouping-data" }, { - "source_path_from_root": "/docs/csharp/misc/cs1016.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + "source_path_from_root": "/docs/csharp/linq/join-by-using-composite-keys.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" }, { - "source_path_from_root": "/docs/csharp/misc/cs1020.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + "source_path_from_root": "/docs/csharp/linq/perform-a-subquery-on-a-grouping-operation.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/grouping-data" }, { - "source_path_from_root": "/docs/csharp/misc/cs1024.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/linq/linq-to-objects.md", + "redirect_url": "/dotnet/csharp/linq/introduction-to-linq-queries" }, { - "source_path_from_root": "/docs/csharp/misc/cs1025.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/linq/perform-grouped-joins.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" }, { - "source_path_from_root": "/docs/csharp/misc/cs1027.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/linq/perform-inner-joins.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" }, { - "source_path_from_root": "/docs/csharp/misc/cs1028.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/linq/perform-left-outer-joins.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" }, { - "source_path_from_root": "/docs/csharp/misc/cs1030.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/linq/order-the-results-of-a-join-clause.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" }, { - "source_path_from_root": "/docs/csharp/misc/cs1032.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/linq/perform-custom-join-operations.md", + "redirect_url": "/dotnet/csharp/linq/" }, { - "source_path_from_root": "/docs/csharp/misc/cs1038.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/linq/query-expression-basics.md", + "redirect_url": "/dotnet/csharp/linq/get-started/query-expression-basics" }, { - "source_path_from_root": "/docs/csharp/misc/cs1039.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/string-literal" + "source_path_from_root": "/docs/csharp/linq/query-a-collection-of-objects.md", + "redirect_url": "/dotnet/csharp/linq/get-started/introduction-to-linq-queries" }, { - "source_path_from_root": "/docs/csharp/misc/cs1040.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/linq/return-a-query-from-a-method.md", + "redirect_url": "/dotnet/csharp/linq/get-started/features-that-support-linq#expressions-as-data" }, { - "source_path_from_root": "/docs/csharp/misc/cs1043.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + "source_path_from_root": "/docs/csharp/linq/dynamically-specify-predicate-filters-at-runtime.md", + "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" }, { - "source_path_from_root": "/docs/csharp/misc/cs1100.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + "source_path_from_root": "/docs/csharp/linq/handle-null-values-in-query-expressions.md", + "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" }, { - "source_path_from_root": "/docs/csharp/misc/cs1101.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + "source_path_from_root": "/docs/csharp/linq/handle-exceptions-in-query-expressions.md", + "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" }, { - "source_path_from_root": "/docs/csharp/misc/cs1102.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + "source_path_from_root": "/docs/csharp/linq/store-the-results-of-a-query-in-memory.md", + "redirect_url": "/dotnet/csharp/linq/get-started/introduction-to-linq-queries" }, { - "source_path_from_root": "/docs/csharp/misc/cs1103.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + "source_path_from_root": "/docs/csharp/linq/write-linq-queries.md", + "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" }, { - "source_path_from_root": "/docs/csharp/misc/cs1104.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + "source_path_from_root": "/docs/csharp/linq/linq-in-csharp.md", + "redirect_url": "/dotnet/csharp/linq/" }, { - "source_path_from_root": "/docs/csharp/misc/cs1105.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + "source_path_from_root": "/docs/csharp/local-functions-vs-lambdas.md", + "redirect_url": "/dotnet/csharp/programming-guide/classes-and-structs/local-functions" }, { - "source_path_from_root": "/docs/csharp/misc/cs1106.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + "source_path_from_root": "/docs/csharp/methods-lambda-expressions.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" }, { - "source_path_from_root": "/docs/csharp/misc/cs1109.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + "source_path_from_root": "/docs/csharp/misc/cs0012.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" }, { - "source_path_from_root": "/docs/csharp/misc/cs1110.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + "source_path_from_root": "/docs/csharp/misc/cs0022.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1113.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + "source_path_from_root": "/docs/csharp/misc/cs0035.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1510.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + "source_path_from_root": "/docs/csharp/misc/cs0056.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1517.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/misc/cs0057.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1529.md", + "source_path_from_root": "/docs/csharp/misc/cs0105.md", "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1534.md", + "source_path_from_root": "/docs/csharp/misc/cs0111.md", "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" }, { - "source_path_from_root": "/docs/csharp/misc/cs1535.md", + "source_path_from_root": "/docs/csharp/misc/cs0121.md", "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" }, { - "source_path_from_root": "/docs/csharp/misc/cs1537.md", + "source_path_from_root": "/docs/csharp/misc/cs0138.md", "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1552.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/misc/cs0171.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1560.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/misc/cs0182.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" }, { - "source_path_from_root": "/docs/csharp/misc/cs1576.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/misc/cs0185.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lock-semantics" }, { - "source_path_from_root": "/docs/csharp/misc/cs1578.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/misc/cs0192.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1586.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/misc/cs0193.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1605.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + "source_path_from_root": "/docs/csharp/misc/cs0196.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1608.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/misc/cs0199.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1611.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + "source_path_from_root": "/docs/csharp/misc/cs0200.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1618.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/misc/cs0206.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1621.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + "source_path_from_root": "/docs/csharp/misc/cs0208.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1622.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + "source_path_from_root": "/docs/csharp/misc/cs0209.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1623.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + "source_path_from_root": "/docs/csharp/misc/cs0210.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1624.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + "source_path_from_root": "/docs/csharp/misc/cs0211.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1625.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + "source_path_from_root": "/docs/csharp/misc/cs0212.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1626.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + "source_path_from_root": "/docs/csharp/misc/cs0213.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1627.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + "source_path_from_root": "/docs/csharp/misc/cs0214.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1628.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + "source_path_from_root": "/docs/csharp/misc/cs0215.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1629.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + "source_path_from_root": "/docs/csharp/misc/cs0216.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1631.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + "source_path_from_root": "/docs/csharp/misc/cs0227.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1632.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + "source_path_from_root": "/docs/csharp/misc/cs0242.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1633.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/misc/cs0243.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1634.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/misc/cs0244.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1635.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/misc/cs0245.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#implementing-idisposable-and-iasyncdisposable" }, { - "source_path_from_root": "/docs/csharp/misc/cs1637.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + "source_path_from_root": "/docs/csharp/misc/cs0254.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1641.md", + "source_path_from_root": "/docs/csharp/misc/cs0459.md", "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1642.md", + "source_path_from_root": "/docs/csharp/misc/cs0821.md", "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1643.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + "source_path_from_root": "/docs/csharp/misc/cs0217.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1649.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + "source_path_from_root": "/docs/csharp/misc/cs0218.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1651.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + "source_path_from_root": "/docs/csharp/misc/cs0225.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" }, { - "source_path_from_root": "/docs/csharp/misc/cs1655.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + "source_path_from_root": "/docs/csharp/misc/cs0231.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" }, { - "source_path_from_root": "/docs/csharp/misc/cs1663.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + "source_path_from_root": "/docs/csharp/misc/cs0248.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1665.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + "source_path_from_root": "/docs/csharp/misc/cs0251.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1666.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + "source_path_from_root": "/docs/csharp/misc/cs0261.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" }, { - "source_path_from_root": "/docs/csharp/misc/cs1667.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/misc/cs0262.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" }, { - "source_path_from_root": "/docs/csharp/misc/cs1657.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + "source_path_from_root": "/docs/csharp/misc/cs0263.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" }, { - "source_path_from_root": "/docs/csharp/misc/cs1660.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + "source_path_from_root": "/docs/csharp/misc/cs0264.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" }, { - "source_path_from_root": "/docs/csharp/misc/cs1661.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + "source_path_from_root": "/docs/csharp/misc/cs0265.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" }, { - "source_path_from_root": "/docs/csharp/misc/cs1662.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + "source_path_from_root": "/docs/csharp/misc/cs0267.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" }, { - "source_path_from_root": "/docs/csharp/misc/cs1670.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + "source_path_from_root": "/docs/csharp/misc/cs0282.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" }, { - "source_path_from_root": "/docs/csharp/misc/cs1671.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + "source_path_from_root": "/docs/csharp/misc/cs0400.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" }, { - "source_path_from_root": "/docs/csharp/misc/cs1673.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + "source_path_from_root": "/docs/csharp/misc/cs0404.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1676.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + "source_path_from_root": "/docs/csharp/misc/cs0415.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1677.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + "source_path_from_root": "/docs/csharp/misc/cs0416.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1678.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + "source_path_from_root": "/docs/csharp/misc/cs0447.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1679.md", + "source_path_from_root": "/docs/csharp/misc/cs0431.md", "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1680.md", + "source_path_from_root": "/docs/csharp/misc/cs0430.md", "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1681.md", + "source_path_from_root": "/docs/csharp/misc/cs0432.md", "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1674.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#implementing-idisposable-and-iasyncdisposable" + "source_path_from_root": "/docs/csharp/misc/cs0439.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1686.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + "source_path_from_root": "/docs/csharp/misc/cs0440.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1688.md", + "source_path_from_root": "/docs/csharp/misc/cs0448.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0457.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0425.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0428.md", "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" }, + { + "source_path_from_root": "/docs/csharp/misc/cs0460.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0466.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0470.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0473.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0531.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0535.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0501.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0514.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#static-constructors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0515.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#static-constructors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0132.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#static-constructors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0516.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-calls-with-base-and-this" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0517.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-calls-with-base-and-this" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0522.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-calls-with-base-and-this" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0526.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0538.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0539.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0540.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0541.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0550.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0551.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0553.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0554.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0555.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0556.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0557.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0558.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0559.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0562.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0564.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0567.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0590.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0660.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0661.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0715.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0728.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#using-variable-scope-and-control-flow" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0735.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0739.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1037.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1553.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1554.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0568.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructors-in-struct-types" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0573.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructors-in-struct-types" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0570.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#CS0570" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0576.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0577.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0578.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0582.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0609.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0629.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0591.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0599.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0611.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0617.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0623.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0625.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0631.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0633.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0636.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0637.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0641.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0646.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0647.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0643.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0653.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0657.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0658.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0655.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0663.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0668.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0674.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0685.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0687.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0710.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0719.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0747.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0748.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#lambda-expression-parameters-and-returns" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0750.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0751.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0754.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0755.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0756.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0757.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0758.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0759.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0761.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0762.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0763.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0764.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0765.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, { - "source_path_from_root": "/docs/csharp/misc/cs1689.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/misc/cs0815.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" }, + { + "source_path_from_root": "/docs/csharp/misc/cs0820.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0824.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-declarations" + }, { - "source_path_from_root": "/docs/csharp/misc/cs1692.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/misc/cs0828.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" }, + { + "source_path_from_root": "/docs/csharp/misc/cs0831.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0832.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0835.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, { - "source_path_from_root": "/docs/csharp/misc/cs1694.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/misc/cs0837.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" }, + { + "source_path_from_root": "/docs/csharp/misc/cs0838.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0839.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1007.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1011.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/string-literal" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1012.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/string-literal" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1014.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1016.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1020.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1024.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1025.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1027.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1028.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1030.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1032.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1038.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1039.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/string-literal" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1040.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1043.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1100.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1101.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1102.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1103.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1104.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1105.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1106.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1109.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1110.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1113.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1510.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1517.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1529.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1534.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1535.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1537.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1552.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1560.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1576.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1578.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1586.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1605.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1608.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1611.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1618.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1621.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1622.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1623.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1624.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1625.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1626.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1627.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1628.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1629.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1631.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1632.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1633.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1634.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1635.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1637.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1641.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1642.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, { - "source_path_from_root": "/docs/csharp/misc/cs1695.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/misc/cs1643.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" }, + { + "source_path_from_root": "/docs/csharp/misc/cs1649.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1651.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1655.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1663.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1665.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1666.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1667.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1657.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, { - "source_path_from_root": "/docs/csharp/misc/cs1696.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/misc/cs1660.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1706.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + "source_path_from_root": "/docs/csharp/misc/cs1661.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1709.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/misc/cs1662.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" }, + { + "source_path_from_root": "/docs/csharp/misc/cs1670.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1671.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1673.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + }, { - "source_path_from_root": "/docs/csharp/misc/cs1714.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" + "source_path_from_root": "/docs/csharp/misc/cs1676.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs1730.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + "source_path_from_root": "/docs/csharp/misc/cs1677.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1678.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1679.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1680.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1681.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1674.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#implementing-idisposable-and-iasyncdisposable" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1686.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1688.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" }, + { + "source_path_from_root": "/docs/csharp/misc/cs1689.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1692.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1694.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1695.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1696.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1706.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1709.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1714.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1730.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, { "source_path_from_root": "/docs/csharp/misc/cs1731.md", "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" @@ -2951,7 +2955,7 @@ }, { "source_path_from_root": "/docs/csharp/namespaces-and-assemblies.md", - "redirect_url": "/dotnet/csharp/fundamentals/types/namespaces" + "redirect_url": "/dotnet/csharp/fundamentals/program-structure/namespaces" }, { "source_path_from_root": "/docs/csharp/nullable-attributes.md", @@ -4631,15 +4635,15 @@ }, { "source_path_from_root": "/docs/csharp/programming-guide/namespaces/how-to-use-the-my-namespace.md", - "redirect_url": "/dotnet/csharp/fundamentals/types/namespaces" + "redirect_url": "/dotnet/csharp/fundamentals/program-structure/namespaces" }, { "source_path_from_root": "/docs/csharp/programming-guide/namespaces/index.md", - "redirect_url": "/dotnet/csharp/fundamentals/types/namespaces" + "redirect_url": "/dotnet/csharp/fundamentals/program-structure/namespaces" }, { "source_path_from_root": "/docs/csharp/programming-guide/namespaces/using-namespaces.md", - "redirect_url": "/dotnet/csharp/fundamentals/types/namespaces" + "redirect_url": "/dotnet/csharp/fundamentals/program-structure/namespaces" }, { "source_path_from_root": "/docs/csharp/programming-guide/nullable-types/boxing-nullable-types.md", diff --git a/docfx.json b/docfx.json index bdbaba30753f1..81e6317284893 100644 --- a/docfx.json +++ b/docfx.json @@ -252,6 +252,7 @@ "docs/core/unmanaged-api/**/*.md": "reference", "docs/core/whats-new/**/*.md": "whats-new", "docs/csharp/advanced-topics/interface-implementation/**.md": "tutorial", + "docs/csharp/fundamentals/program-structure/**.md": "concept-article", "docs/csharp/getting-started/**/*.md": "overview", "docs/csharp/how-to/**/*.md": "how-to", "docs/csharp/language-reference/**/*.md": "language-reference", diff --git a/docs/core/compatibility/sdk/6.0/csharp-template-code.md b/docs/core/compatibility/sdk/6.0/csharp-template-code.md index f6ac1f45d8fac..8c84ec0e1485d 100644 --- a/docs/core/compatibility/sdk/6.0/csharp-template-code.md +++ b/docs/core/compatibility/sdk/6.0/csharp-template-code.md @@ -12,7 +12,7 @@ Starting in .NET 6, the project templates that ship with the .NET SDK use the la - [File-scoped namespaces](https://github.com/dotnet/csharplang/blob/main/proposals/csharp-10.0/file-scoped-namespaces.md) - [Target-typed new expressions](/dotnet/csharp/language-reference/proposals/csharp-9.0/target-typed-new) - [Nullable reference types](../../../../csharp/nullable-references.md) -- [Async Main return values](../../../../csharp/fundamentals/program-structure/main-command-line.md#async-main-return-values) +- [Async Main return values](../../../../csharp/fundamentals/program-structure/main-command-line.md#main-return-values) Some of the latest C# language features are not supported by previous target frameworks, so you might experience issues in the following scenarios: diff --git a/docs/core/tutorials/top-level-templates.md b/docs/core/tutorials/top-level-templates.md index 85abb1fb09cdd..553b762dcb3df 100644 --- a/docs/core/tutorials/top-level-templates.md +++ b/docs/core/tutorials/top-level-templates.md @@ -50,7 +50,7 @@ The features that make the new program simpler are *top-level statements*, *glob The term [*top-level statements*](../../csharp/fundamentals/program-structure/top-level-statements.md) means the compiler generates the class and method elements for your main program. The compiler declares the generated class and entry point method in the global namespace. Look at the code for the new application and imagine that it contains the statements inside the `Main` method generated by earlier templates, but in the global namespace. -Add more statements to the program, just as you add statements to your `Main` method in the traditional style. [Access `args` (command-line arguments)](../../csharp/fundamentals/program-structure/top-level-statements.md#args), [use `await`](../../csharp/fundamentals/program-structure/top-level-statements.md#await), and [set the exit code](../../csharp/fundamentals/program-structure/top-level-statements.md#exit-code-for-the-process). You can even add functions. The compiler creates them as local functions nested inside the generated entry point method. Local functions can't include any access modifiers (for example, `public` or `protected`). +Add more statements to the program, just as you add statements to your `Main` method in the traditional style. [Access `args` (command-line arguments)](../../csharp/fundamentals/program-structure/top-level-statements.md#args), [use `await`](../../csharp/fundamentals/program-structure/top-level-statements.md#await-and-exit-code), and [set the exit code](../../csharp/fundamentals/program-structure/top-level-statements.md#await-and-exit-code). You can even add functions. The compiler creates them as local functions nested inside the generated entry point method. Local functions can't include any access modifiers (for example, `public` or `protected`). Both top-level statements and [implicit `using` directives](#implicit-using-directives) simplify the code that makes up your application. To follow an existing tutorial, add any new statements to the *Program.cs* file generated by the template. Imagine that the statements you write are between the open and closing braces in the `Main` method in the instructions of the tutorial. diff --git a/docs/csharp/asynchronous-programming/cancel-an-async-task-or-a-list-of-tasks.md b/docs/csharp/asynchronous-programming/cancel-an-async-task-or-a-list-of-tasks.md index 28059da54f4f7..e42bce5feb235 100644 --- a/docs/csharp/asynchronous-programming/cancel-an-async-task-or-a-list-of-tasks.md +++ b/docs/csharp/asynchronous-programming/cancel-an-async-task-or-a-list-of-tasks.md @@ -118,7 +118,7 @@ static async Task Main() } ``` -The updated `Main` method is now considered an [Async main](../fundamentals/program-structure/main-command-line.md#async-main-return-values), which allows for an asynchronous entry point into the executable. It writes a few instructional messages to the console, then declares a instance named `cancelTask`, which will read console key strokes. If the Enter key is pressed, a call to is made. This will signal cancellation. Next, the `sumPageSizesTask` variable is assigned from the `SumPageSizesAsync` method. Both tasks are then passed to , which will continue when any of the two tasks have completed. +The updated `Main` method is now considered an [Async main](../fundamentals/program-structure/main-command-line.md#main-return-values), which allows for an asynchronous entry point into the executable. It writes a few instructional messages to the console, then declares a instance named `cancelTask`, which will read console key strokes. If the Enter key is pressed, a call to is made. This will signal cancellation. Next, the `sumPageSizesTask` variable is assigned from the `SumPageSizesAsync` method. Both tasks are then passed to , which will continue when any of the two tasks have completed. The next block of code ensures that the application doesn't exit until the cancellation has been processed. If the first task to complete is the `cancelTask`, the `sumPageSizeTask` is awaited. If it was cancelled, when awaited it throws a . The block catches that exception, and prints a message. diff --git a/docs/csharp/asynchronous-programming/start-multiple-async-tasks-and-process-them-as-they-complete.md b/docs/csharp/asynchronous-programming/start-multiple-async-tasks-and-process-them-as-they-complete.md index 40189bba94946..65ce2539a13fa 100644 --- a/docs/csharp/asynchronous-programming/start-multiple-async-tasks-and-process-them-as-they-complete.md +++ b/docs/csharp/asynchronous-programming/start-multiple-async-tasks-and-process-them-as-they-complete.md @@ -82,7 +82,7 @@ The main entry point into the console application is the `Main` method. Replace static Task Main() => SumPageSizesAsync(); ``` -The updated `Main` method is now considered an [Async main](../fundamentals/program-structure/main-command-line.md#async-main-return-values), which allows for an asynchronous entry point into the executable. It is expressed as a call to `SumPageSizesAsync`. +The updated `Main` method is now considered an [Async main](../fundamentals/program-structure/main-command-line.md#main-return-values), which allows for an asynchronous entry point into the executable. It is expressed as a call to `SumPageSizesAsync`. ## Create the asynchronous sum page sizes method diff --git a/docs/csharp/fundamentals/program-structure/index.md b/docs/csharp/fundamentals/program-structure/index.md index 5a8a0a88ac7ca..d6a34b38d957b 100644 --- a/docs/csharp/fundamentals/program-structure/index.md +++ b/docs/csharp/fundamentals/program-structure/index.md @@ -1,73 +1,123 @@ --- -title: "General Structure of a Program" -description: Learn about the structure of a C# program by using a skeleton program that contains all the required elements for a program. -ms.date: 06/20/2025 -helpviewer_keywords: - - "C# language, program structure" +title: "General structure of a C# program" +description: Learn how C# programs are structured, including the choice between file-based and project-based apps, top-level statements and Main method entry points, and the building blocks that make up every program. +ms.date: 03/16/2026 +ms.topic: concept-article +ai-usage: ai-assisted + +#customer intent: As a C# developer, I want to understand how C# programs are structured so that I can choose the right application style and organize my code effectively. + --- -# General Structure of a C# Program +# General structure of a C# program -C# programs consist of one or more files. Each file contains zero or more namespaces. A namespace contains types such as classes, structs, interfaces, enumerations, and delegates, or other namespaces. The following example is the skeleton of a C# program that contains all of these elements. +> [!TIP] +> **New to developing software?** Start with the [Get started](../../tour-of-csharp/tutorials/index.md) tutorials first. They walk you through writing your first C# programs before you learn about program structure. +> +> **Experienced in another language?** You might want to skim the [Get started](../../tour-of-csharp/tutorials/index.md) section for C#-specific syntax, then come back here. -:::code language="csharp" source="snippets/toplevel-structure/Program.cs"::: +You build C# programs from these core building blocks: namespaces organize your types, types (classes, structs, interfaces, enums, and delegates) define behavior and data, and statements and expressions perform work at run time. The way you structure the entry point depends on which application style you choose. -The preceding example uses [*top-level statements*](top-level-statements.md) for the program's entry point. Only one file can have top-level statements. The program's entry point is the first text line of program text in that file. In this case, it's the `Console.WriteLine("Hello world!");`. -You can also create a static method named [`Main`](main-command-line.md) as the program's entry point, as shown in the following example: +## Choosing your application style -:::code language="csharp" source="snippets/structure/Program.cs"::: +When you create a C# program, make two independent choices about how to structure it: -In that case the program starts in the opening brace of `Main` method, which is `Console.WriteLine("Hello world!");` +- **File-based or project-based?** + - A file-based app runs from a single `.cs` file with no project file. + - A project-based app uses a `.csproj` file and can span multiple source files. +- **Top-level statements or `Main` method?** + - Top-level statements let you write executable code directly at the top of a file. + - A `Main` method wraps the entry point in an explicit static method. -## Building and running C# programs +Both project-based apps and file-based apps support either entry-point style. -C# is a *compiled* language. In most C# programs, you use the [`dotnet build`](../../../core/tools/dotnet-build.md) command to compile a group of source files into a binary package. Then, you use the [`dotnet run`](../../../core/tools/dotnet-run.md) command to run the program. (You can simplify this process because `dotnet run` compiles the program before running it if necessary.) These tools support a rich language of configuration options and command-line switches. The `dotnet` command line interface (CLI), which is included in the .NET SDK, provides many [tools](../../../core/tools/index.md) to generate and modify C# files. +### File-based apps vs. project-based apps -Beginning with C# 14 and .NET 10, you can create *file-based apps*, which simplifies building and running C# programs. You use the `dotnet run` command to run a program contained in a single `*.cs` file. For example, if the following snippet is stored in a file named `hello-world.cs`, you can run it by typing `dotnet run hello-world.cs`: +Starting with C# 14 and .NET 10, *file-based apps* let you run a program contained in a single `*.cs` file without a project file. Store the following code in a file named `hello-world.cs` and run it with `dotnet run hello-world.cs` or `dotnet hello-world.cs`: :::code language="csharp" source="./snippets/file-based-program/hello-world.cs"::: -The first line of the program contains the `#!` sequence for Unix shells. The location of the `dotnet` CLI can vary on different distributions. On any Unix system, if you set the *execute* (`+x`) permission on a C# file, you can run the C# file from the command line: +> [!NOTE] +> The `#!` line enables Unix shells to run the file directly. On any Unix system, set the *execute* (`+x`) permission and run the file from the command line. + +File-based apps support all C# syntax and can use [preprocessor directives](../../language-reference/preprocessor-directives.md#file-based-apps) to configure the build system. Use file-based apps for small command-line utilities, prototypes, and experiments. A file-based app consists of a single file in a directory: + +``` +my-app/ +└── hello-world.cs +``` -```bash -./hello-world.cs +*Project-based apps* use a `.csproj` file and the [.NET CLI commands](../../../core/tools/index.md) `dotnet new`, `dotnet build`, and `dotnet run` workflow. Choose project-based apps when your program spans multiple files or needs fine-grained build configuration. A project-based app includes a project file alongside one or more source files: + +``` +my-app/ +├── my-app.csproj +├── Program.cs +├── Models/ +│ └── Person.cs +└── Services/ + └── GreetingService.cs ``` -The source for these programs must be a single file, but otherwise all C# syntax is valid. You can use file-based apps for small command-line utilities, prototypes, or other experiments. file-based apps allow [preprocessor directives](../../language-reference/preprocessor-directives.md#file-based-apps) that configure the build system. +If your file-based app grows, you can easily convert it to a project-based app. Run [`dotnet project convert`](../../../core/tools/dotnet-project-convert.md) to generate a project file from your existing source file. + +If you know your app needs multiple source files from the start, begin with a project-based app. You avoid the conversion step and can organize your code into separate files right away. + +### Top-level statements vs. `Main` method + +By using [top-level statements](top-level-statements.md), you can write executable code directly in one file without wrapping it in a class and `Main` method. This style is the default when you create a new console app with `dotnet new console`. The following example shows a modern C# program that uses [top-level statements](top-level-statements.md): + +:::code language="csharp" source="snippets/toplevel-structure/Program.cs"::: + +Only one file in a project can have top-level statements, and the entry point is the first line of program text in that file. As you build larger programs, you include more program elements. + +You can also define an explicit static [`Main`](main-command-line.md) method as the program's entry point: + +:::code language="csharp" source="snippets/structure/Program.cs"::: + +Both entry-point styles work with file-based and project-based apps. Both styles support the same features. + +## Building and running C# programs + +C# is a *compiled* language. For project-based apps, use the [`dotnet build`](../../../core/tools/dotnet-build.md) command to compile source files into a binary package. Use [`dotnet run`](../../../core/tools/dotnet-run.md) to build and run in one step. The `dotnet` CLI, included in the .NET SDK, provides many [tools](../../../core/tools/index.md) to create, build, and manage C# projects. + +For file-based apps, `dotnet run hello-world.cs` compiles and runs the single file directly - no project file required. ## Expressions and statements -C# programs are built using *expressions* and *statements*. Expressions produce a value, and statements perform an action: +If you followed the [Get started](../../tour-of-csharp/overview.md) tutorials, you already wrote expressions and statements. Every line of code you typed was one or the other (or both). Now let's define those terms. -An *expression* is a combination of values, variables, operators, and method calls that evaluate to a single value. Expressions produce a result and can be used wherever a value is expected. The following examples are expressions: +Expressions and statements are the fundamental building blocks of a C# program. An *expression* produces a value. A *statement* performs an action and typically ends in a semicolon. + +The following are expressions: - `42` (literal value) - `x + y` (arithmetic operation) -- `Math.Max(a, b)` (method call) +- `Math.Max(a, b)` (method call that produces a value) - `condition ? trueValue : falseValue` (conditional expression) - `new Person("John")` (object creation) -A *statement* is a complete instruction that performs an action. Statements don't return values; instead, they control program flow, declare variables, or perform operations. The following examples are statements: +A *statement* performs an action. Statements control program flow, declare variables, or invoke operations. The following are statements: -- `int x = 42;` (declaration statement) -- `Console.WriteLine("Hello");` (expression statement - wraps a method call expression) +- `int x;` (declaration statement) +- `int x = 42;` (declaration statement with initialization) +- `Console.WriteLine("Hello");` (method call statement) - `if (condition) { /* code */ }` (conditional statement) - `return result;` (return statement) -The key distinction: expressions evaluate to values, while statements perform actions. Some constructs, like method calls, can be both. For example, `Math.Max(a, b)` is an expression when used in `int result = Math.Max(a, b);`, but becomes an expression statement when written alone as `Math.Max(a, b);`. +Statements often contain expressions, and expressions can nest inside other expressions. For example, the following declaration statement assigns `f` to the result of an addition expression. That addition expression adds the results of two method call expressions: -For detailed information about statements, see [Statements](../../programming-guide/statements-expressions-operators/statements.md). For information about expression-bodied members and other expression features, see [Expression-bodied members](../../programming-guide/statements-expressions-operators/expression-bodied-members.md). +```csharp +var maxResult = Math.Max(a, b) + Math.Max(c, d); +``` -## Related Sections +For detailed information about statements, see [Statements](../../programming-guide/statements-expressions-operators/statements.md). For information about expression-bodied members, see [Expression-bodied members](../../programming-guide/statements-expressions-operators/expression-bodied-members.md). -You learn about these program elements in the [types](../types/index.md) section of the fundamentals guide: +## Related content -- [Classes](../types/classes.md) -- [Structs](../../language-reference/builtin-types/struct.md) -- [Namespaces](../types/namespaces.md) -- [Interfaces](../types/interfaces.md) +- [Classes](../types/classes.md) +- [Structs](../../language-reference/builtin-types/struct.md) +- [Namespaces](namespaces.md) +- [Interfaces](../types/interfaces.md) - [Enums](../../language-reference/builtin-types/enum.md) - [Delegates](../../delegates-overview.md) - -## C# Language Specification - -For more information, see [Basic concepts](~/_csharpstandard/standard/basic-concepts.md) in the [C# Language Specification](~/_csharpstandard/standard/README.md). The language specification is the definitive source for C# syntax and usage. +- [Basic concepts in the C# language specification](~/_csharpstandard/standard/basic-concepts.md) diff --git a/docs/csharp/fundamentals/program-structure/main-command-line.md b/docs/csharp/fundamentals/program-structure/main-command-line.md index a4c6c2400cf64..4e7350f5c92e9 100644 --- a/docs/csharp/fundamentals/program-structure/main-command-line.md +++ b/docs/csharp/fundamentals/program-structure/main-command-line.md @@ -1,42 +1,35 @@ --- title: "Main() and command-line arguments" description: Learn about Main() and command-line arguments. The 'Main' method is the entry point of an executable program. -ms.date: 12/15/2025 -f1_keywords: - - "main_CSharpKeyword" - - "Main" -helpviewer_keywords: - - "Main method [C#]" - - "C# language, command-line arguments" - - "arguments [C#], command-line" - - "command line [C#], arguments" - - "command-line arguments [C#], Main method" +ms.date: 03/16/2026 +ai-usage: ai-assisted +#customer intent: As a C# developer, I want to understand the Main() method and command-line arguments so that I can define and control the entry point of my application. --- # Main() and command-line arguments -The runtime calls the `Main` method when you start a C# application. The `Main` method is the entry point of a C# application. - -A C# program can have only one entry point. If you have more than one class with a `Main` method, you must use the **StartupObject** compiler option when you compile your program to specify which `Main` method serves as the entry point. For more information, see [**StartupObject** (C# Compiler Options)](../../language-reference/compiler-options/advanced.md#startupobject). The following example displays the number of command line arguments as its first action: - -:::code language="csharp" source="snippets/main-command-line/TestClass.cs"::: +> [!TIP] +> **New to developing software?** Start with the [Get started](../../tour-of-csharp/tutorials/index.md) tutorials first. Those tutorials use [top-level statements](top-level-statements.md), which is simpler for new apps. +> +> **Working with an existing codebase?** Many existing applications use an explicit `Main` method. This article explains how it works and how to use it effectively. -You can also use top-level statements in one file as the entry point for your application. Like the `Main` method, top-level statements can [return values](#main-return-values) and access [command-line arguments](#command-line-arguments). For more information, see [Top-level statements](top-level-statements.md). The following example uses a `foreach` loop to display the command-line arguments by using the `args` variable, and at the end of the program returns a success code (`0`): +When you start a C# application, the runtime calls the `Main` method. The `Main` method is the entry point of a C# application. -:::code language="csharp" source="snippets/top-level-statements-1/Program.cs"::: +A C# program can have only one entry point. If you have more than one class with a `Main` method, you must use the **StartupObject** compiler option when you compile your program to specify which `Main` method serves as the entry point. For more information, see [**StartupObject** (C# Compiler Options)](../../language-reference/compiler-options/advanced.md#startupobject). The following example displays the number of command-line arguments as its first action: -Beginning with C# 14, programs can be [*file-based apps*](./index.md#building-and-running-c-programs), where a single file contains the program. You run *file-based apps* by using the command `dotnet `, or by using the `#!/usr/bin/env dotnet run` directive as the first line (Unix shells only). +:::code language="csharp" source="snippets/main-command-line/TestClass.cs"::: ## Overview -- The `Main` method is the entry point of an executable program. It's where the program control starts and ends. +The `Main` method is the entry point of an executable program. When your program starts, the runtime calls `Main` before any other code runs. When `Main` returns, the program ends. You declare `Main` with these rules: + - You must declare `Main` inside a class or struct. The enclosing `class` can be `static`. - `Main` must be [`static`](../../language-reference/keywords/static.md). - `Main` can have any [access modifier](../../programming-guide/classes-and-structs/access-modifiers.md). - `Main` can return `void`, `int`, `Task`, or `Task`. - If and only if `Main` returns a `Task` or `Task`, the declaration of `Main` can include the [`async`](../../language-reference/keywords/async.md) modifier. This rule specifically excludes an `async void Main` method. -- You can declare the `Main` method with or without a `string[]` parameter that contains command-line arguments. When using Visual Studio to create Windows applications, you can add the parameter manually or else use the method to obtain the command-line arguments. Parameters are zero-indexed command-line arguments. Unlike C and C++, the name of the program isn't treated as the first command-line argument in the `args` array, but it's the first element of the method. +- You can declare the `Main` method with or without a `string[]` parameter that contains command-line arguments. When you use Visual Studio to create Windows applications, you can add the parameter manually or else use the method to obtain the command-line arguments. Parameters are zero-indexed command-line arguments. Unlike C and C++, the name of the program isn't treated as the first command-line argument in the `args` array, but it's the first element of the method. -The following list shows the most common `Main` declarations: +The following list shows permutations of `Main` declarations: ```csharp static void Main() { } @@ -51,172 +44,55 @@ static async Task Main(string[] args) { } The preceding examples don't specify an access modifier, so they're implicitly `private` by default. You can specify any explicit access modifier. -> [!TIP] -> By using `async` and `Task` or `Task` return types, you simplify program code when console applications need to start and `await` asynchronous operations in `Main`. - -## Main() return values - -You can return an `int` from the `Main` method by defining the method in one of the following ways: - -| `Main` declaration | `Main` method code | -|----------------------------------------------|-----------------------------| -| `static int Main()` | No use of `args` or `await` | -| `static int Main(string[] args)` | Uses `args` but not `await` | -| `static async Task Main()` | Uses `await` but not `args` | -| `static async Task Main(string[] args)` | Uses `args` and `await` | +The following table summarizes all valid `Main` signatures and when to use each one: -If the return value from `Main` isn't used, returning `void` or `Task` allows for slightly simpler code. +| `Main` declaration | Uses `args` | contains `await` | Returns exit code | +|----------------------------------------------|-------------|------------------|-------------------| +| `static void Main()` | No | No | No | +| `static int Main()` | No | No | Yes | +| `static void Main(string[] args)` | Yes | No | No | +| `static int Main(string[] args)` | Yes | No | Yes | +| `static async Task Main()` | No | Yes | No | +| `static async Task Main()` | No | Yes | Yes | +| `static async Task Main(string[] args)` | Yes | Yes | No | +| `static async Task Main(string[] args)` | Yes | Yes | Yes | -| `Main` declaration | `Main` method code | -|-----------------------------------------|-----------------------------| -| `static void Main()` | No use of `args` or `await` | -| `static void Main(string[] args)` | Uses `args` but not `await` | -| `static async Task Main()` | Uses `await` but not `args` | -| `static async Task Main(string[] args)` | Uses `args` and `await` | +Choose the simplest signature that fits your needs. If you don't need command-line arguments, omit the `string[] args` parameter. If you don't need to return an exit code, use `void` or `Task`. If you need to call asynchronous methods, use `async` with a `Task` or `Task` return type. -However, returning `int` or `Task` enables the program to communicate status information to other programs or scripts that invoke the executable file. - -The following example shows how the exit code for the process can be accessed. +## Main() return values -This example uses [.NET Core](../../../core/introduction.md) command-line tools. If you're unfamiliar with .NET Core command-line tools, you can learn about them in this [get-started article](../../../core/tutorials/create-console-app.md). +When you return `int` or `Task`, your program can send status information to other programs or scripts that run the executable. A return value of `0` usually means success, and a nonzero value means there's an error. -Create a new application by running `dotnet new console`. Modify the `Main` method in *Program.cs* as follows: +The following example returns an exit code: :::code language="csharp" source="snippets/main-command-line/MainReturnValTest.cs"::: -Remember to save this program as *MainReturnValTest.cs*. - -When you execute a program in Windows, the system stores any value returned from the `Main` function in an environment variable. You can retrieve this environment variable by using `ERRORLEVEL` from a batch file, or `$LastExitCode` from PowerShell. +After running the program, you can check the exit code. In PowerShell, use `$LastExitCode`. In a batch file or shell script, use `%ERRORLEVEL%`. -You can build the application by using the [dotnet CLI](../../../core/tools/dotnet.md) `dotnet build` command. - -Next, create a PowerShell script to run the application and display the result. Paste the following code into a text file and save it as `test.ps1` in the folder that contains the project. Run the PowerShell script by typing `test.ps1` at the PowerShell prompt. - -Because the code returns zero, the batch file reports success. However, if you change MainReturnValTest.cs to return a nonzero value and then recompile the program, subsequent execution of the PowerShell script reports failure. - -```powershell -dotnet run -if ($LastExitCode -eq 0) { - Write-Host "Execution succeeded" -} else -{ - Write-Host "Execution Failed" -} -Write-Host "Return value = " $LastExitCode -``` - -```output -Execution succeeded -Return value = 0 -``` - -### Async Main return values - -When you declare an `async` return value for `Main`, the compiler generates the boilerplate code for calling asynchronous methods in `Main`: +If your `Main` method uses `await`, declare it as `async` with a `Task` or `Task` return type. The runtime calls `Main` and waits for the returned `Task` to complete before the process exits. The return type can't be `void` or `int` because the `async` modifier requires a return type that the runtime can await—`void` and `int` don't represent ongoing work, so the process could exit before asynchronous operations finish. Use `Task` when you don't need an exit code, or `Task` when you do: :::code language="csharp" source="snippets/main-arguments/Program.cs" id="AsyncMain"::: -In both examples, the main body of the program is within the body of the `AsyncConsoleWork()` method. - -An advantage of declaring `Main` as `async` is that the compiler always generates the correct code. - -When the application entry point returns a `Task` or `Task`, the compiler generates a new entry point that calls the entry point method declared in the application code. Assuming that this entry point is called `$GeneratedMain`, the compiler generates the following code for these entry points: - -- `static Task Main()` results in the compiler emitting the equivalent of `private static void $GeneratedMain() => Main().GetAwaiter().GetResult();`. -- `static Task Main(string[])` results in the compiler emitting the equivalent of `private static void $GeneratedMain(string[] args) => Main(args).GetAwaiter().GetResult();`. -- `static Task Main()` results in the compiler emitting the equivalent of `private static int $GeneratedMain() => Main().GetAwaiter().GetResult();`. -- `static Task Main(string[])` results in the compiler emitting the equivalent of `private static int $GeneratedMain(string[] args) => Main(args).GetAwaiter().GetResult();`. - -> [!NOTE] -> If the examples use the `async` modifier on the `Main` method, the compiler generates the same code. - ## Command-line arguments -You can send arguments to the `Main` method by defining the method in one of the following ways: - -| `Main` declaration | `Main` method code | -|----------------------------------------------|-----------------------------------------| -| `static void Main(string[] args)` | No return value or `await` | -| `static int Main(string[] args)` | Returns a value but doesn't use `await` | -| `static async Task Main(string[] args)` | Uses `await` but doesn't return a value | -| `static async Task Main(string[] args)` | Return a value and uses `await` | +Include a `string[] args` parameter in your `Main` declaration to accept command-line arguments. If you don't need them, omit the parameter. The `args` parameter is a array that's never null—if no arguments are provided, its `Length` is zero. -If you don't use the arguments, you can omit `args` from the method declaration for slightly simpler code: - -| `Main` declaration | `Main` method code | -|---------------------------------|-----------------------------------------| -| `static void Main()` | No return value or `await` | -| `static int Main()` | Returns a value but doesn't use `await` | -| `static async Task Main()` | Uses `await` but doesn't return a value | -| `static async Task Main()` | Returns a value and uses `await` | - -> [!NOTE] -> You can also use or to access the command-line arguments from any point in a console or Windows Forms application. To enable command-line arguments in the `Main` method declaration in a Windows Forms application, you must manually modify the declaration of `Main`. The code generated by the Windows Forms designer creates `Main` without an input parameter. - -The parameter of the `Main` method is a array that represents the command-line arguments. Usually, you determine whether arguments exist by testing the `Length` property, for example: - -:::code language="csharp" source="snippets/main-command-line/Program.cs" ID="Snippet4"::: - -> [!TIP] -> The `args` array can't be null. So, it's safe to access the `Length` property without null checking. - -You can also convert the string arguments to numeric types by using the class or the `Parse` method. For example, the following statement converts the `string` to a `long` number by using the method: - -```csharp -long num = Int64.Parse(args[0]); -``` - -It's also possible to use the C# type `long`, which aliases `Int64`: +You can convert string arguments to other types by using `Parse` or : ```csharp long num = long.Parse(args[0]); ``` -You can also use the `Convert` class method `ToInt64` to do the same thing: - -```csharp -long num = Convert.ToInt64(s); -``` - -For more information, see and . - > [!TIP] > Parsing command-line arguments can be complex. Consider using the [System.CommandLine](../../../standard/commandline/index.md) library to simplify the process. -The following example shows how to use command-line arguments in a console application. The application takes one argument at run time, converts the argument to an integer, and calculates the factorial of the number. If no arguments are supplied, the application issues a message that explains the correct usage of the program. - -To compile and run the application from a command prompt, follow these steps: - -1. Paste the following code into any text editor, and then save the file as a text file with the name *Factorial.cs*. - - :::code language="csharp" source="./snippets/main-command-line/Factorial.cs"::: - - At the beginning of the `Main` method, the program tests if input arguments weren't supplied by comparing the length of the `args` argument to `0` and displays the help if no arguments are found.
- If arguments are provided (`args.Length` is greater than 0), the program tries to convert the input arguments to numbers. This example throws an exception if the argument isn't a number.
- After factorial is calculated (stored in `result` variable of type `long`), the verbose result is printed depending on the `result` variable. - -1. From the **Start** screen or **Start** menu, open a Visual Studio **Developer Command Prompt** window, and then navigate to the folder that contains the file that you created. - -1. To compile the application, enter the following command: - - `dotnet build` - - If your application has no compilation errors, the build process creates a binary file named *Factorial.dll*. - -1. Enter the following command to calculate the factorial of 3: - - `dotnet run -- 3` - -1. If you enter 3 on the command line as the program's argument, the output reads: `The factorial of 3 is 6.` - -> [!NOTE] -> When running an application in Visual Studio, specify command-line arguments in the [Debug Page, Project Designer](/visualstudio/ide/reference/debug-page-project-designer). +For a working example, see [How to display command-line arguments](../tutorials/how-to-display-command-line-arguments.md). ## C# language specification [!INCLUDE[CSharplangspec](~/includes/csharplangspec-md.md)] -## See also +## Related content - - [How to display command line arguments](../tutorials/how-to-display-command-line-arguments.md) diff --git a/docs/csharp/fundamentals/program-structure/namespaces.md b/docs/csharp/fundamentals/program-structure/namespaces.md new file mode 100644 index 0000000000000..7ca3f6f2a5432 --- /dev/null +++ b/docs/csharp/fundamentals/program-structure/namespaces.md @@ -0,0 +1,110 @@ +--- +title: "Namespaces and using directives" +description: Learn how to organize C# code with namespaces, file-scoped namespace declarations, global usings, static usings, and type aliases. +ms.date: 03/16/2026 +ai-usage: ai-assisted + +#customer intent: As a C# developer, I want to understand namespaces and using directives so that I can organize my types and simplify how I reference them in code. + +--- +# Namespaces and using directives + +> [!TIP] +> **New to developing software?** Start with the [Get started](../../tour-of-csharp/tutorials/index.md) tutorials first. They introduce namespaces and `using` directives as you write your first programs. +> +> **Experienced in another language?** Namespaces in C# work similarly to packages in Java or modules in Python. Skim ahead to the syntax you need. + +Namespace declarations and `using` directives are related language features. A namespace declaration puts your types into an organized structure. A namespace groups related types together and prevents naming collisions. A `using` directive lets your program consume those types by their simple names. You don't have to spell out the full namespace path at every use. + +You've already used namespaces in every C# program you've written. Every .NET type belongs to a namespace, and every `using` directive at the top of a file references one. For example, `Console` and `Math` belong to the `System` namespace, so their fully qualified names are `System.Console` and `System.Math`. Collection types like `List` and `Dictionary` belong to `System.Collections.Generic`. A single `using` directive for any of these namespaces lets you refer to all its types by their simple names. You write `List` instead of `System.Collections.Generic.List` everywhere you use it. + +This article provides more background on how namespaces and `using` directives work, and shows examples of patterns you've already encountered in .NET libraries. + +A namespace contains types. Every .NET type belongs to a namespace. For example, consider `System.Threading.Tasks.Task`: the type `Task` belongs to the `System.Threading.Tasks` namespace. + +It's good practice to group related or similar types in the same namespace, and that's what .NET does with the types it provides. The `System.Collections.Generic` namespace contains collection-related types and the `System.IO` namespace contains types related reading and writing files, directories, and data. The `System` namespace contains fundamental types like `Math`, `DateTime`, and `Console`. + +The following example shows how namespaces work together with `using` directives in a typical C# file: + +:::code language="csharp" source="snippets/namespaces/Basics.cs" id="NamespaceBasics"::: + +In the preceding sample, the `using` directive means you can use the by the name `CultureInfo` without specifying the full name of `System.Globalization.CultureInfo`. The `namespace` directive declares that the `Greeter` class is part of the `MyApp.Services` namespace. Its fully qualified name is `MyApp.Services.Greeter`. + +## Namespace declarations + +A namespace declaration assigns your types to a named group. Every type you write should belong to a namespace. The namespace name typically mirrors the folder structure of your project. For example, types in a `Services/Payments` folder often belong to the `MyApp.Services.Payments` namespace. + +Namespaces use the `.` operator to express hierarchy, such as `System.Collections.Generic`. Namespace names must be valid C# [identifier names](../coding-style/identifier-names.md). + +### File-scoped namespaces + +Use the *file-scoped* syntax when all types in a file belong to the same namespace. Add a semicolon after the namespace declaration, and it applies to the entire file. You don't need extra braces or indentation: + +:::code language="csharp" source="snippets/namespaces/FileScopedExample.cs" id="FileScopedNamespace"::: + +File-scoped namespaces reduce nesting and make files easier to read. You can only have one file-scoped namespace declaration per file. + +> [!TIP] +> Use file-scoped namespaces in new code. Most .NET templates and code analyzers recommend this style. + +### Block-scoped namespaces + +Use *block-scoped* syntax when you need to declare more than one namespace in the same file. This style adds an extra level of indentation. + +> [!IMPORTANT] +> It's considered bad-practice to declare more than one namespace in the same file. The more common scenario is to use *file-scoped* namespaces. + +The following snippet is an example of a *block-scoped* namespace: + +:::code language="csharp" source="snippets/namespaces/BlockScoped.cs" id="BlockScopedNamespace"::: + +## Using directives + +Without a `using` directive, you must refer to every type by its *fully qualified name*, the complete namespace path plus the type name: + +:::code language="csharp" source="snippets/namespaces/Basics.cs" id="FullyQualifiedName"::: + +A `using` directive at the top of a file imports a namespace so you can use its types by their simple names: + +:::code language="csharp" source="snippets/namespaces/Basics.cs" id="UsingDirective"::: + +For more information, see the [`using` directive](../../language-reference/keywords/using-directive.md). + +### Global using directives + +If you write the same `using` directives in every file, *global using* directives let you declare them once for your entire project. Place them in any file. Many teams create a dedicated `GlobalUsings.cs` file: + +:::code language="csharp" source="snippets/namespaces/GlobalUsings.cs" id="GlobalUsings"::: + +After declaring a global using, every file in the project can refer to types from that namespace by using simple names without an additional `using` directive. + +### Implicit usings + +The .NET SDK automatically generates global using directives for the most common namespaces based on your project type. Enable implicit usings by setting `enable` in your project file. For example, a console app project automatically imports `System`, `System.Collections.Generic`, `System.IO`, `System.Linq`, `System.Threading`, and `System.Threading.Tasks`. The current SDK enables `ImplicitUsings` when you create a new project by using `dotnet new`. + +For more information, see [Implicit using directives](../../../core/project-sdk/overview.md#implicit-using-directives). + +### Static using directives + +A `static using` directive imports the static members of a type so you can call them without the type name prefix: + +:::code language="csharp" source="snippets/namespaces/StaticUsing.cs" id="StaticUsing"::: + +Static usings work well for utility classes like and that you call frequently. + +### Type and namespace aliases + +A `using` alias creates a shorthand name for a type or namespace. Aliases are useful for long generic types, resolving naming conflicts, and improving readability: + +:::code language="csharp" source="snippets/namespaces/Aliases.cs" id="TypeAlias"::: + +Starting with C# 12, you can alias any type, including tuples and pointer types: + +:::code language="csharp" source="snippets/namespaces/TupleAlias.cs" id="AnyTypeAlias"::: + +For more advanced scenarios where two assemblies define the same fully qualified type name, use [extern alias](../../language-reference/keywords/extern-alias.md) to disambiguate between them. + +## Related content + +- [`using` directive (language reference)](../../language-reference/keywords/using-directive.md) +- [Namespaces in the C# language specification](~/_csharpstandard/standard/namespaces.md) diff --git a/docs/csharp/fundamentals/program-structure/preprocessor-directives.md b/docs/csharp/fundamentals/program-structure/preprocessor-directives.md new file mode 100644 index 0000000000000..7411522c0a2f5 --- /dev/null +++ b/docs/csharp/fundamentals/program-structure/preprocessor-directives.md @@ -0,0 +1,81 @@ +--- +title: "Preprocessor directives" +description: Learn how to use the most common C# preprocessor directives—conditional compilation, regions, and warning suppression—in everyday development. +ms.date: 03/16/2026 +ai-usage: ai-assisted + +#customer intent: As a C# developer, I want to understand preprocessor directives so that I can control conditional compilation, configure file-based apps, and manage compiler warnings. + +--- +# Preprocessor directives + +> [!TIP] +> **New to developing software?** You won't need preprocessor directives right away. Focus on the [Get started](../../tour-of-csharp/tutorials/index.md) tutorials first and come back here when your projects require conditional compilation or build configuration. +> +> **Experienced in another language?** If you're familiar with `#ifdef` in C/C++ or conditional compilation in other languages, C# preprocessor directives work similarly. Skim ahead to the syntax you need. + +C# preprocessor directives tell the compiler what code to include, exclude, or treat differently when it builds your app. This guidance can change the resulting program. Preprocessor directives always start with `#` and must appear on their own line (ignoring leading whitespace). You can add a trailing comment after the directive. While the [language reference](../../language-reference/preprocessor-directives.md) documents all available directives, three groups cover everyday use: + +- **File-based apps** (`#:`) - configure file-based apps. +- **Conditional compilation** (`#if` / `#elif` / `#else` / `#endif`) — include or exclude code based on build configuration or target framework. +- **Warning suppression** (`#pragma warning`) — suppress or restore specific compiler warnings. + +## File-based app directives + +Starting with C# 14, [file-based apps](index.md) use two additional directives: + +- `#!` — the *shebang* line that lets Unix shells run the file directly (for example, `#!/usr/bin/env dotnet run`). +- `#:` — build-system directives that configure packages, SDK settings, and other options for single-file programs. + +Use `#:package` to add a NuGet package. For example, the following file-based app uses the `Spectre.Console` package to render styled output: + +```csharp +#!/usr/bin/env dotnet run +#:package Spectre.Console@* + +AnsiConsole.MarkupLine("[bold green]Hello[/] from a file-based app!"); +``` + +You can specify an exact version with `@`, or use `@*` to pull the latest version. Add multiple `#:package` directives to include more packages: + +```csharp +#:package Serilog@3.1.1 +``` + +Other `#:` directives let you reference projects, set MSBuild properties, or change the SDK: + +```csharp +#:project ../SharedLibrary/SharedLibrary.csproj +#:property PublishAot=false +#:sdk Microsoft.NET.Sdk.Web +``` + +For the full list of directives, see [File-based apps](../../../core/sdk/file-based-apps.md) and the [language reference](../../language-reference/preprocessor-directives.md#file-based-apps). + +## Conditional compilation + +Use `#if`, `#elif`, `#else`, and `#endif` to include or exclude code based on whether a symbol is defined. The most common symbols are `DEBUG` (set automatically for Debug builds) and target framework symbols like `NET10_0_OR_GREATER`: + +:::code language="csharp" source="snippets/preprocessor-directives/Program.cs" id="ConditionalCompilation"::: + +The build system defines the `DEBUG` symbol when you build in the Debug configuration. You don't need to define it yourself. Target framework symbols like `NET10_0_OR_GREATER` and `NET8_0_OR_GREATER` let you write code that adapts to different .NET versions in multi-targeting projects. + +You can combine symbols with logical operators: `&&` (and), `||` (or), and `!` (not): + +:::code language="csharp" source="snippets/preprocessor-directives/Program.cs" id="CombinedConditions"::: + +Use `#define` at the top of a file to define your own symbols. You can also define symbols for the entire project by using the [`DefineConstants`](../../language-reference/compiler-options/language.md#defineconstants) property in your project file. + +## Warning suppression + +Use `#pragma warning disable` to suppress specific compiler warnings, and `#pragma warning restore` to re-enable them. Always scope the suppression as narrowly as possible: + +:::code language="csharp" source="snippets/preprocessor-directives/PragmaWarning.cs" id="PragmaWarning"::: + +> [!TIP] +> Always specify the warning number, such as `CS0168`, rather than disabling all warnings. This approach keeps the suppression targeted and makes it clear *why* a warning is being suppressed. + +## Related content + +- [C# preprocessor directives (language reference)](../../language-reference/preprocessor-directives.md) +- [File-based apps](../../../core/sdk/file-based-apps.md) diff --git a/docs/csharp/fundamentals/program-structure/program-organization.md b/docs/csharp/fundamentals/program-structure/program-organization.md new file mode 100644 index 0000000000000..1b3a6fa0b0640 --- /dev/null +++ b/docs/csharp/fundamentals/program-structure/program-organization.md @@ -0,0 +1,93 @@ +--- +title: "Program organization" +description: Learn how to organize C# programs using solutions, projects, assemblies, namespaces, and types to build maintainable, well-structured applications. +ms.date: 03/16/2026 +ai-usage: ai-assisted + +#customer intent: As a C# developer, I want to understand how to organize my code using solutions, projects, assemblies, and namespaces so that I can build maintainable applications. + +--- +# Program organization + +> [!TIP] +> **New to developing software?** Start with the [Get started](../../tour-of-csharp/tutorials/index.md) tutorials first. You'll learn about program organization naturally as your projects grow. +> +> **Experienced in another language?** If you're familiar with solutions and projects in Visual Studio, or build systems like Maven or Cargo, this article maps those concepts to .NET. + +As a C# application grows, you need to organize the code. .NET provides a hierarchy of organizational tools—solutions, projects, assemblies, namespaces, and types—that work together to keep large codebases manageable. The conventions described here represent broad consensus in the .NET community. You might deviate for specific reasons, but following these conventions makes your code familiar and navigable to other .NET developers. + +## The organizational hierarchy + +Organize a typical .NET application in layers, from broadest to most specific: + +| Level | Description | Example | +|---------------|------------------------------------------------------|-------------------------| +| **Solution** | A container that groups related projects. | `MyApp.slnx` | +| **Project** | A build unit that produces one assembly. | `MyApp.Web.csproj` | +| **Assembly** | The compiled `.dll` or `.exe` produced by a project. | `MyApp.Web.dll` | +| **Namespace** | A logical grouping of types. | `MyApp.Web.Controllers` | +| **Type** | A class, struct, interface, enum, or delegate. | `OrderController` | + +Each level serves a different purpose. Solutions organize your development workflow. Projects define what gets compiled together, and each project produces one assembly. Assemblies are the unit of deployment and versioning. Namespaces prevent naming collisions and make types easy to find. A single assembly can contain multiple namespaces, and a single namespace can span multiple assemblies. Types define the actual behavior and data. + +## Projects and assemblies + +Each project compiles into a single assembly: a class library or executable. Start with a single project for small applications—don't split prematurely. The primary reason to create a separate project is to reuse that code in more than one application. Beyond reuse, add projects when you have a concrete reason: + +- **Share code across applications** — extract shared logic into a class library that multiple apps reference. +- **Separate concerns** — keep your data access, business logic, and presentation layers independent. +- **Control dependencies** — a project can only use types from projects it explicitly references. + +A single project works well for many applications. Resist the urge to create separate projects "just in case." You can always extract a library later when a second application needs the same code. + +## Match namespaces to folder structure + +Namespace names should follow the folder structure of your project. When you see the namespace `MyApp.Services.Payments`, you know to look in the `Services/Payments` folder for the source code of the types defined in that namespace. The .NET SDK supports this convention, and it is so widely followed that violating it actively confuses other developers: + +:::code language="csharp" source="snippets/organizing-programs/OrderService.cs" id="NamespaceMirroring"::: + +Your root namespace is automatically set to the name of your project file. Types in subfolders don't automatically get sub-namespaces—you declare the namespace explicitly in each file—but always keep them in sync. + +> [!TIP] +> You can change the root namespace by setting `` in your project file. +> +> ```xml +> +> +> MyCompany.MyApp +> +> +> ``` + +## Organize namespaces by feature, not by type kind + +Group related types into namespaces by feature or responsibility. Place an interface, its implementations, and supporting types together: + +:::code language="csharp" source="snippets/organizing-programs/Payments.cs" id="FeatureOrganization"::: + +Feature-based organization keeps everything you need in one place, making the code easier to navigate and reason about. + +## Access modifiers and assemblies + +Access modifiers work with the project and assembly structure to control accessibility: + +- [`public`](../../language-reference/keywords/public.md) — accessible from any assembly that references this assembly. +- [`internal`](../../language-reference/keywords/internal.md) — accessible only within the same assembly (the default for top-level types). +- [`private`](../../language-reference/keywords/private.md), [`protected`](../../language-reference/keywords/protected.md), [`private protected`](../../language-reference/keywords/private-protected.md), [`protected internal`](../../language-reference/keywords/protected-internal.md) — accessible based on the containing type, the assembly, or derived types. + +Default to `internal` for types that other projects don't need. This practice hides implementation details and gives you freedom to refactor without breaking consumers. It's especially important for shared libraries: + +:::code language="csharp" source="snippets/organizing-programs/Inventory.cs" id="AccessModifiers"::: + +## Recommended practices + +- **Name namespaces consistently.** Use `CompanyName.ProductName.Feature` as your naming pattern. For example, use `Contoso.Inventory.Shipping`. Consistent naming helps developers find types without searching. +- **Keep projects focused.** Each project should have a single, clear responsibility. When a project handles too many unrelated concerns, split it. +- **Use file-scoped namespaces.** The `namespace MyApp.Services;` syntax reduces indentation and is the recommended style. Use it in all new code. +- **Default to `internal`.** Only mark types `public` when other assemblies genuinely need them. You can always widen access later; narrowing it is a breaking change. + +## Related content + +- [Namespaces and using directives](namespaces.md) +- [Assemblies in .NET](../../../standard/assembly/index.md) +- [.NET project SDKs](../../../core/project-sdk/overview.md) diff --git a/docs/csharp/fundamentals/program-structure/snippets/main-arguments/main-arguments.csproj b/docs/csharp/fundamentals/program-structure/snippets/main-arguments/main-arguments.csproj index f704bf4988fa6..0ece068f6df1a 100644 --- a/docs/csharp/fundamentals/program-structure/snippets/main-arguments/main-arguments.csproj +++ b/docs/csharp/fundamentals/program-structure/snippets/main-arguments/main-arguments.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable diff --git a/docs/csharp/fundamentals/program-structure/snippets/main-command-line/Factorial.cs b/docs/csharp/fundamentals/program-structure/snippets/main-command-line/Factorial.cs deleted file mode 100644 index 92146997ad4d2..0000000000000 --- a/docs/csharp/fundamentals/program-structure/snippets/main-command-line/Factorial.cs +++ /dev/null @@ -1,50 +0,0 @@ -public class Functions -{ - public static long Factorial(int n) - { - // Test for invalid input. - if ((n < 0) || (n > 20)) - { - return -1; - } - - // Calculate the factorial iteratively rather than recursively. - long tempResult = 1; - for (int i = 1; i <= n; i++) - { - tempResult *= i; - } - return tempResult; - } -} - -class MainClass -{ - static int Main(string[] args) - { - if (args.Length == 0) - { - Console.WriteLine("Please enter a numeric argument."); - Console.WriteLine("Usage: Factorial "); - return 1; - } - - int num; - bool test = int.TryParse(args[0], out num); - if (!test) - { - Console.WriteLine("Please enter a numeric argument."); - Console.WriteLine("Usage: Factorial "); - return 1; - } - - long result = Functions.Factorial(num); - - if (result == -1) - Console.WriteLine("Input must be >= 0 and <= 20."); - else - Console.WriteLine($"The Factorial of {num} is {result}."); - - return 0; - } -} diff --git a/docs/csharp/fundamentals/program-structure/snippets/main-command-line/main-command-line.csproj b/docs/csharp/fundamentals/program-structure/snippets/main-command-line/main-command-line.csproj index c39b1f8d62483..d57b9788c6700 100644 --- a/docs/csharp/fundamentals/program-structure/snippets/main-command-line/main-command-line.csproj +++ b/docs/csharp/fundamentals/program-structure/snippets/main-command-line/main-command-line.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable main_command_line diff --git a/docs/csharp/fundamentals/program-structure/snippets/namespaces/Aliases.cs b/docs/csharp/fundamentals/program-structure/snippets/namespaces/Aliases.cs new file mode 100644 index 0000000000000..f37bdbef09d41 --- /dev/null +++ b/docs/csharp/fundamentals/program-structure/snippets/namespaces/Aliases.cs @@ -0,0 +1,14 @@ +// +using CustomerList = System.Collections.Generic.List; + +namespace MyApp.Services; + +class CustomerService +{ + public CustomerList GetTopCustomers() + { + CustomerList customers = [new() { Name = "Alice" }, new() { Name = "Bob" }]; + return customers; + } +} +// diff --git a/docs/csharp/fundamentals/program-structure/snippets/namespaces/Basics.cs b/docs/csharp/fundamentals/program-structure/snippets/namespaces/Basics.cs new file mode 100644 index 0000000000000..c2d38335bab1f --- /dev/null +++ b/docs/csharp/fundamentals/program-structure/snippets/namespaces/Basics.cs @@ -0,0 +1,42 @@ +// +using System.Globalization; + +namespace MyApp.Services; + +class Greeter +{ + public string Greet(string name) + { + var culture = CultureInfo.CurrentCulture; + return $"Hello, {name}! Culture: {culture.Name}"; + } +} +// + +class Program +{ + // + static void ShowFullyQualified() + { + // Without a using directive, use the fully qualified name: + System.Console.WriteLine("Hello from fully qualified name!"); + } + // + + // + static void ShowShortName() + { + // With 'using System;' (or implicit usings enabled), use the short name: + Console.WriteLine("Hello from short name!"); + } + // + + static void Main() + { + ShowFullyQualified(); + ShowShortName(); + + var greeter = new Greeter(); + Console.WriteLine(greeter.Greet("World")); + } +} diff --git a/docs/csharp/fundamentals/program-structure/snippets/namespaces/BlockScoped.cs b/docs/csharp/fundamentals/program-structure/snippets/namespaces/BlockScoped.cs new file mode 100644 index 0000000000000..7fabf6c993cee --- /dev/null +++ b/docs/csharp/fundamentals/program-structure/snippets/namespaces/BlockScoped.cs @@ -0,0 +1,12 @@ +// +namespace MyApp.Models +{ + class Product + { + public required string Name { get; init; } + public decimal Price { get; init; } + + public override string ToString() => $"{Name}: {Price:C}"; + } +} +// diff --git a/docs/csharp/fundamentals/program-structure/snippets/namespaces/FileScopedExample.cs b/docs/csharp/fundamentals/program-structure/snippets/namespaces/FileScopedExample.cs new file mode 100644 index 0000000000000..3488c1aa4dd73 --- /dev/null +++ b/docs/csharp/fundamentals/program-structure/snippets/namespaces/FileScopedExample.cs @@ -0,0 +1,11 @@ +// +namespace MyApp.Models; + +class Customer +{ + public required string Name { get; init; } + public string? Email { get; init; } + + public override string ToString() => $"{Name} ({Email ?? "no email"})"; +} +// diff --git a/docs/csharp/fundamentals/program-structure/snippets/namespaces/GlobalUsings.cs b/docs/csharp/fundamentals/program-structure/snippets/namespaces/GlobalUsings.cs new file mode 100644 index 0000000000000..2308ad90f0239 --- /dev/null +++ b/docs/csharp/fundamentals/program-structure/snippets/namespaces/GlobalUsings.cs @@ -0,0 +1,4 @@ +// +global using System.Text; +global using System.Text.Json; +// diff --git a/docs/csharp/fundamentals/program-structure/snippets/namespaces/StaticUsing.cs b/docs/csharp/fundamentals/program-structure/snippets/namespaces/StaticUsing.cs new file mode 100644 index 0000000000000..0018dc389308e --- /dev/null +++ b/docs/csharp/fundamentals/program-structure/snippets/namespaces/StaticUsing.cs @@ -0,0 +1,12 @@ +// +using static System.Math; + +namespace MyApp.Utilities; + +class CircleCalculator +{ + public static double CalculateArea(double radius) => PI * Pow(radius, 2); + + public static double CalculateCircumference(double radius) => 2 * PI * radius; +} +// diff --git a/docs/csharp/fundamentals/program-structure/snippets/namespaces/TupleAlias.cs b/docs/csharp/fundamentals/program-structure/snippets/namespaces/TupleAlias.cs new file mode 100644 index 0000000000000..6af3b74b574f6 --- /dev/null +++ b/docs/csharp/fundamentals/program-structure/snippets/namespaces/TupleAlias.cs @@ -0,0 +1,15 @@ +// +using Point = (double X, double Y); + +namespace MyApp.Geometry; + +class Shape +{ + public static double Distance(Point a, Point b) + { + var dx = a.X - b.X; + var dy = a.Y - b.Y; + return Math.Sqrt(dx * dx + dy * dy); + } +} +// diff --git a/docs/csharp/fundamentals/types/snippets/namespaces/namespaces.csproj b/docs/csharp/fundamentals/program-structure/snippets/namespaces/namespaces.csproj similarity index 62% rename from docs/csharp/fundamentals/types/snippets/namespaces/namespaces.csproj rename to docs/csharp/fundamentals/program-structure/snippets/namespaces/namespaces.csproj index af31fefa23aa5..0ece068f6df1a 100644 --- a/docs/csharp/fundamentals/types/snippets/namespaces/namespaces.csproj +++ b/docs/csharp/fundamentals/program-structure/snippets/namespaces/namespaces.csproj @@ -2,8 +2,9 @@ Exe - net8.0 + net10.0 enable + enable diff --git a/docs/csharp/fundamentals/program-structure/snippets/organizing-programs/AppDemo.cs b/docs/csharp/fundamentals/program-structure/snippets/organizing-programs/AppDemo.cs new file mode 100644 index 0000000000000..50e96328fd567 --- /dev/null +++ b/docs/csharp/fundamentals/program-structure/snippets/organizing-programs/AppDemo.cs @@ -0,0 +1,12 @@ +// +// MyApp.Core (class library) — shared business logic +namespace MyApp.Core; + +public class Order +{ + public required string ProductName { get; init; } + public int Quantity { get; init; } + public decimal UnitPrice { get; init; } + public decimal Total => Quantity * UnitPrice; +} +// \ No newline at end of file diff --git a/docs/csharp/fundamentals/program-structure/snippets/organizing-programs/Inventory.cs b/docs/csharp/fundamentals/program-structure/snippets/organizing-programs/Inventory.cs new file mode 100644 index 0000000000000..8079d614e2a4a --- /dev/null +++ b/docs/csharp/fundamentals/program-structure/snippets/organizing-programs/Inventory.cs @@ -0,0 +1,23 @@ +// +namespace MyApp.Inventory; + +// Public — other projects can use this type +public class InventoryService +{ + public int GetStockLevel(string productName) => + StockDatabase.Lookup(productName); +} + +// Internal — only visible within this assembly +internal static class StockDatabase +{ + private static readonly Dictionary _stock = new() + { + ["Widget"] = 42, + ["Gadget"] = 17 + }; + + internal static int Lookup(string productName) => + _stock.GetValueOrDefault(productName); +} +// diff --git a/docs/csharp/fundamentals/program-structure/snippets/organizing-programs/OrderService.cs b/docs/csharp/fundamentals/program-structure/snippets/organizing-programs/OrderService.cs new file mode 100644 index 0000000000000..2b6e5e466c095 --- /dev/null +++ b/docs/csharp/fundamentals/program-structure/snippets/organizing-programs/OrderService.cs @@ -0,0 +1,16 @@ +// +// File: Services/OrderService.cs +// Namespace mirrors the folder path +using MyApp.Core; + +namespace MyApp.Services; + +public class OrderService +{ + public Order CreateOrder(string product, int quantity, decimal price) => + new() { ProductName = product, Quantity = quantity, UnitPrice = price }; + + public string FormatSummary(Order order) => + $"{order.Quantity}x {order.ProductName} = {order.Total:C}"; +} +// diff --git a/docs/csharp/fundamentals/program-structure/snippets/organizing-programs/Payments.cs b/docs/csharp/fundamentals/program-structure/snippets/organizing-programs/Payments.cs new file mode 100644 index 0000000000000..a301bb81b9c54 --- /dev/null +++ b/docs/csharp/fundamentals/program-structure/snippets/organizing-programs/Payments.cs @@ -0,0 +1,20 @@ +// +// Good: group by feature +namespace MyApp.Payments; + +public interface IPaymentProcessor +{ + bool ProcessPayment(decimal amount); +} + +public class CreditCardProcessor : IPaymentProcessor +{ + public bool ProcessPayment(decimal amount) + { + Console.WriteLine($"Processing credit card payment of {amount:C}"); + return true; + } +} + +public record PaymentResult(bool Success, string? TransactionId); +// diff --git a/docs/csharp/fundamentals/program-structure/snippets/organizing-programs/Program.cs b/docs/csharp/fundamentals/program-structure/snippets/organizing-programs/Program.cs new file mode 100644 index 0000000000000..5414f2195ff12 --- /dev/null +++ b/docs/csharp/fundamentals/program-structure/snippets/organizing-programs/Program.cs @@ -0,0 +1,13 @@ +using MyApp.Services; +using MyApp.Payments; +using MyApp.Inventory; + +var service = new OrderService(); +var order = service.CreateOrder("Widget", 3, 9.99m); +Console.WriteLine(service.FormatSummary(order)); + +var processor = new CreditCardProcessor(); +processor.ProcessPayment(order.Total); + +var inventory = new InventoryService(); +Console.WriteLine($"Stock level for Widget: {inventory.GetStockLevel("Widget")}"); diff --git a/docs/csharp/fundamentals/program-structure/snippets/organizing-programs/organizing-programs.csproj b/docs/csharp/fundamentals/program-structure/snippets/organizing-programs/organizing-programs.csproj new file mode 100644 index 0000000000000..f2e4508cfb6e2 --- /dev/null +++ b/docs/csharp/fundamentals/program-structure/snippets/organizing-programs/organizing-programs.csproj @@ -0,0 +1,11 @@ + + + + Exe + net10.0 + enable + enable + MyApp + + + diff --git a/docs/csharp/fundamentals/program-structure/snippets/preprocessor-directives/PragmaWarning.cs b/docs/csharp/fundamentals/program-structure/snippets/preprocessor-directives/PragmaWarning.cs new file mode 100644 index 0000000000000..b5a5dfa5ed741 --- /dev/null +++ b/docs/csharp/fundamentals/program-structure/snippets/preprocessor-directives/PragmaWarning.cs @@ -0,0 +1,23 @@ +namespace MyApp.Utilities; + +class WarningDemo +{ + // + static void ProcessData() + { + try + { + // Some operation that might fail + var data = File.ReadAllText("config.json"); + Console.WriteLine($"Config loaded: {data.Length} characters"); + } +#pragma warning disable CS0168 // Variable is declared but never used + catch (FileNotFoundException ex) +#pragma warning restore CS0168 + { + // Fall back to defaults — the exception details aren't needed here + Console.WriteLine("Config file not found, using defaults."); + } + } + // +} diff --git a/docs/csharp/fundamentals/program-structure/snippets/preprocessor-directives/Program.cs b/docs/csharp/fundamentals/program-structure/snippets/preprocessor-directives/Program.cs new file mode 100644 index 0000000000000..ee5e9227a1443 --- /dev/null +++ b/docs/csharp/fundamentals/program-structure/snippets/preprocessor-directives/Program.cs @@ -0,0 +1,26 @@ +// +static void ConfigureLogging() +{ +#if DEBUG + Console.WriteLine("Debug logging enabled — verbose output active."); +#else + Console.WriteLine("Release logging — errors only."); +#endif +} +// + +// +static void ShowPlatformInfo() +{ +#if NET10_0_OR_GREATER + Console.WriteLine("Running on .NET 10 or later."); +#elif NET8_0_OR_GREATER + Console.WriteLine("Running on .NET 8 or 9."); +#else + Console.WriteLine("Running on an older .NET version."); +#endif +} +// + +ConfigureLogging(); +ShowPlatformInfo(); diff --git a/docs/csharp/fundamentals/program-structure/snippets/preprocessor-directives/preprocessor-directives.csproj b/docs/csharp/fundamentals/program-structure/snippets/preprocessor-directives/preprocessor-directives.csproj new file mode 100644 index 0000000000000..0ece068f6df1a --- /dev/null +++ b/docs/csharp/fundamentals/program-structure/snippets/preprocessor-directives/preprocessor-directives.csproj @@ -0,0 +1,10 @@ + + + + Exe + net10.0 + enable + enable + + + diff --git a/docs/csharp/fundamentals/program-structure/snippets/structure/Program.cs b/docs/csharp/fundamentals/program-structure/snippets/structure/Program.cs index d59cd3f808519..4ba1411773bba 100644 --- a/docs/csharp/fundamentals/program-structure/snippets/structure/Program.cs +++ b/docs/csharp/fundamentals/program-structure/snippets/structure/Program.cs @@ -1,37 +1,10 @@ -// A skeleton of a C# program -using System; -namespace YourNamespace -{ - class YourClass - { - } - - struct YourStruct - { - } - - interface IYourInterface - { - } +// A skeleton of a C# program using an explicit Main method +namespace YourNamespace; - delegate int YourDelegate(); - - enum YourEnum - { - } - - namespace YourNestedNamespace - { - struct YourStruct - { - } - } - - class Program +class Program +{ + static void Main(string[] args) { - static void Main(string[] args) - { - Console.WriteLine("Hello world!"); - } + Console.WriteLine("Hello, World!"); } } diff --git a/docs/csharp/fundamentals/program-structure/snippets/structure/structure.csproj b/docs/csharp/fundamentals/program-structure/snippets/structure/structure.csproj index f704bf4988fa6..0ece068f6df1a 100644 --- a/docs/csharp/fundamentals/program-structure/snippets/structure/structure.csproj +++ b/docs/csharp/fundamentals/program-structure/snippets/structure/structure.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable diff --git a/docs/csharp/fundamentals/program-structure/snippets/top-level-statements-1/top-level-statements.csproj b/docs/csharp/fundamentals/program-structure/snippets/top-level-statements-1/top-level-statements.csproj index f704bf4988fa6..38452f1b41daf 100644 --- a/docs/csharp/fundamentals/program-structure/snippets/top-level-statements-1/top-level-statements.csproj +++ b/docs/csharp/fundamentals/program-structure/snippets/top-level-statements-1/top-level-statements.csproj @@ -1,8 +1,8 @@ - + Exe - net8.0 + net10.0 enable enable diff --git a/docs/csharp/fundamentals/program-structure/snippets/top-level-statements-2/top-level-statements.csproj b/docs/csharp/fundamentals/program-structure/snippets/top-level-statements-2/top-level-statements.csproj index 9b8f56f2f11f9..38452f1b41daf 100644 --- a/docs/csharp/fundamentals/program-structure/snippets/top-level-statements-2/top-level-statements.csproj +++ b/docs/csharp/fundamentals/program-structure/snippets/top-level-statements-2/top-level-statements.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable diff --git a/docs/csharp/fundamentals/program-structure/snippets/top-level-statements-3/top-level-statements.csproj b/docs/csharp/fundamentals/program-structure/snippets/top-level-statements-3/top-level-statements.csproj index f704bf4988fa6..0ece068f6df1a 100644 --- a/docs/csharp/fundamentals/program-structure/snippets/top-level-statements-3/top-level-statements.csproj +++ b/docs/csharp/fundamentals/program-structure/snippets/top-level-statements-3/top-level-statements.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable diff --git a/docs/csharp/fundamentals/program-structure/snippets/top-level-statements-4/top-level-statements.csproj b/docs/csharp/fundamentals/program-structure/snippets/top-level-statements-4/top-level-statements.csproj index f704bf4988fa6..0ece068f6df1a 100644 --- a/docs/csharp/fundamentals/program-structure/snippets/top-level-statements-4/top-level-statements.csproj +++ b/docs/csharp/fundamentals/program-structure/snippets/top-level-statements-4/top-level-statements.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable diff --git a/docs/csharp/fundamentals/program-structure/snippets/top-level-statements-5/top-level-statements.csproj b/docs/csharp/fundamentals/program-structure/snippets/top-level-statements-5/top-level-statements.csproj index f704bf4988fa6..0ece068f6df1a 100644 --- a/docs/csharp/fundamentals/program-structure/snippets/top-level-statements-5/top-level-statements.csproj +++ b/docs/csharp/fundamentals/program-structure/snippets/top-level-statements-5/top-level-statements.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable diff --git a/docs/csharp/fundamentals/program-structure/snippets/toplevel-structure/Program.cs b/docs/csharp/fundamentals/program-structure/snippets/toplevel-structure/Program.cs index 22db26f9b83ea..f61119dd5bf2a 100644 --- a/docs/csharp/fundamentals/program-structure/snippets/toplevel-structure/Program.cs +++ b/docs/csharp/fundamentals/program-structure/snippets/toplevel-structure/Program.cs @@ -1,6 +1,4 @@ -using System; - -Console.WriteLine("Hello world!"); +Console.WriteLine("Hello, World!"); namespace YourNamespace { @@ -21,11 +19,4 @@ interface IYourInterface enum YourEnum { } - - namespace YourNestedNamespace - { - struct YourStruct - { - } - } } diff --git a/docs/csharp/fundamentals/program-structure/snippets/toplevel-structure/toplevel-structure.csproj b/docs/csharp/fundamentals/program-structure/snippets/toplevel-structure/toplevel-structure.csproj index 029d5f304b855..f92eec29f31f0 100644 --- a/docs/csharp/fundamentals/program-structure/snippets/toplevel-structure/toplevel-structure.csproj +++ b/docs/csharp/fundamentals/program-structure/snippets/toplevel-structure/toplevel-structure.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable toplevel_structure diff --git a/docs/csharp/fundamentals/program-structure/top-level-statements.md b/docs/csharp/fundamentals/program-structure/top-level-statements.md index f79dad8c10a60..e4032385027c9 100644 --- a/docs/csharp/fundamentals/program-structure/top-level-statements.md +++ b/docs/csharp/fundamentals/program-structure/top-level-statements.md @@ -1,18 +1,20 @@ --- title: "Top-level statements - programs without Main methods" description: Learn about top-level statements. You can create programs without the ceremony of a Program class and a Main method. -ms.date: 01/12/2026 -helpviewer_keywords: - - "C# language, top-level statements" - - "C# language, Main method" +ms.date: 03/16/2026 +ai-usage: ai-assisted + +#customer intent: As a C# developer, I want to understand top-level statements so that I can write programs without explicit Main method boilerplate. + --- # Top-level statements - programs without `Main` methods -You don't have to explicitly include a `Main` method in a console application project. Instead, you can use the *top-level statements* feature to minimize the code you have to write. +> [!TIP] +> **New to developing software?** Start with the [Get started](../../tour-of-csharp/tutorials/index.md) tutorials first. Those tutorials use top-level statements, so you'll already be familiar with the basics. +> +> **Looking for the `Main` method alternative?** See [Main method entry point](main-command-line.md) for the explicit `Main` method approach. -Top-level statements allow you to write executable code directly at the root of a file, eliminating the need for wrapping your code in a class or method. -This means you can create programs without the ceremony of a `Program` class and a `Main` method. -In this case, the compiler generates a `Program` class with an entry point method for the application. The name of the generated method isn't `Main`, it's an implementation detail that your code can't reference directly. +Use *top-level statements* for new apps. By using top-level statements, you can write executable code directly at the root of a file. Here's a *Program.cs* file that is a complete C# program: @@ -20,74 +22,55 @@ Here's a *Program.cs* file that is a complete C# program: Console.WriteLine("Hello World!"); ``` -Top-level statements let you write simple programs for small utilities such as Azure Functions and GitHub Actions. They also make it simpler for new C# programmers to get started learning and writing code. +When you create a new console app by using `dotnet new console`, it uses top-level statements by default. They work well for programs of any size - from small utilities and Azure Functions to full applications. If you have an existing application that uses an explicit `Main` method, there's no need to convert it. Both styles compile to equivalent code. The following sections explain the rules on what you can and can't do with top-level statements. -## Only one top-level file - -An application must have only one entry point. A project can have only one file with top-level statements. Putting top-level statements in more than one file in a project results in the following compiler error: - -> CS8802 Only one compilation unit can have top-level statements. +## Entry point rules -A project can have any number of source code files that don't have top-level statements. +An application must have only one entry point. A project can have only one file with top-level statements, but it can have any number of source code files that don't have top-level statements. You can explicitly write a `Main` method, but it can't function as an entry point. In a project with top-level statements, you can't use the [`-main`](../../language-reference/compiler-options/advanced.md#startupobject) compiler option to select the entry point, even if the project has one or more `Main` methods. -## No other entry points - -You can explicitly write a `Main` method, but it can't function as an entry point. The compiler issues the following warning: +The compiler generates a method to serve as the program entry point for a project with top-level statements. The signature of the method depends on whether the top-level statements contain the `await` keyword or the `return` statement. The following table shows what the method signature looks like, using the method name `Main` in the table for convenience. -> CS7022 The entry point of the program is global code; ignoring 'Main()' entry point. +| Top-level code contains | Implicit `Main` signature | +|-------------------------|----------------------------------------------| +| `await` and `return` | `static async Task Main(string[] args)` | +| `await` | `static async Task Main(string[] args)` | +| `return` | `static int Main(string[] args)` | +| No `await` or `return` | `static void Main(string[] args)` | -In a project with top-level statements, you can't use the [-main](../../language-reference/compiler-options/advanced.md#startupobject) compiler option to select the entry point, even if the project has one or more `Main` methods. +Starting with C# 14, programs can be [*file-based apps*](./index.md#building-and-running-c-programs), where a single file contains the program. You run *file-based apps* by using the command `dotnet `, or by using the `#!/usr/bin/env dotnet` directive as the first line (Unix shells only). ## `using` directives -For the single file containing top-level statements, `using` directives must come first in that file, as in this example: +For the single file containing top-level statements, `using` directives must come first in that file, as in the following example: :::code language="csharp" source="snippets/top-level-statements-1/Program.cs"::: -## Global namespace - -Top-level statements are implicitly in the global namespace. - ## Namespaces and type definitions -A file with top-level statements can also contain namespaces and type definitions, but they must come after the top-level statements. For example: +Top-level statements are implicitly in the global namespace. A file with top-level statements can also contain namespaces and type definitions, but they must come after the top-level statements. For example: :::code language="csharp" source="snippets/top-level-statements-2/Program.cs"::: ## `args` -Top-level statements can reference the `args` variable to access any command-line arguments that were entered. The `args` variable is never null but its `Length` is zero if no command-line arguments were provided. For example: +Top-level statements can reference the `args` variable to access any command-line arguments passed to the app when it starts. The `args` variable is never `null`, but its `Length` is zero if no command-line arguments were provided. For example: :::code language="csharp" source="snippets/top-level-statements-3/Program.cs"::: -## `await` +## `await` and exit code -Use `await` to call an async method. For example: +Use `await` to call an async method. When your top-level code contains `await`, the compiler generates an entry point that returns a `Task`. The runtime monitors that `Task` for completion, keeping the process alive until all asynchronous work finishes. For example: :::code language="csharp" source="snippets/top-level-statements-4/Program.cs"::: -## Exit code for the process - -To return an `int` value when the application ends, use the `return` statement as you would in a `Main` method that returns an `int`. For example: +To return an exit code when the application ends, use the `return` statement. The compiler generates an entry point that returns `Task` when your code contains both `await` and `return`, or `int` when it contains only `return`. For example: :::code language="csharp" source="snippets/top-level-statements-5/Program.cs"::: -## Implicit entry point method - -The compiler generates a method to serve as the program entry point for a project with top-level statements. The signature of the method depends on whether the top-level statements contain the `await` keyword or the `return` statement. The following table shows what the method signature looks like, using the method name `Main` in the table for convenience. - -| Top-level code contains | Implicit `Main` signature | -|-------------------------|----------------------------------------------| -| `await` and `return` | `static async Task Main(string[] args)` | -| `await` | `static async Task Main(string[] args)` | -| `return` | `static int Main(string[] args)` | -| No `await` or `return` | `static void Main(string[] args)` | - -Starting with C# 14, programs can be [*file-based apps*](./index.md#building-and-running-c-programs), where a single file contains the program. You run *file-based apps* by using the command `dotnet `, or by using the `#!/usr/bin/env dotnet` directive as the first line (Unix shells only). - -## C# language specification +## Related content -[!INCLUDE[CSharplangspec](~/includes/csharplangspec-md.md)] -[Feature specification - Top-level statements](~/_csharplang/proposals/csharp-9.0/top-level-statements.md) +- [Main() and command-line arguments](main-command-line.md) +- [General structure of a C# program](index.md) +- [Feature specification - Top-level statements](~/_csharplang/proposals/csharp-9.0/top-level-statements.md) diff --git a/docs/csharp/fundamentals/types/namespaces.md b/docs/csharp/fundamentals/types/namespaces.md deleted file mode 100644 index 3300b2a2a6057..0000000000000 --- a/docs/csharp/fundamentals/types/namespaces.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: "Organizing types in namespaces" -description: Learn how namespaces help you organize related types. -ms.date: 11/24/2024 -helpviewer_keywords: - - "C# language, namespaces" - - "namespaces [C#]" ---- -# Declare namespaces to organize types - -Namespaces are heavily used in C# programming in two ways. First, .NET uses namespaces to organize its many classes, as follows: - -:::code language="csharp" source="snippets/namespaces/Program.cs" ID="Snippet22"::: - - is a namespace and is a class in that namespace. The `using` keyword can be used so that the complete name isn't required, as in the following example: - -:::code language="csharp" source="snippets/namespaces/Program.cs" ID="Snippet1"::: - -:::code language="csharp" source="snippets/namespaces/Program.cs" ID="Snippet23"::: - -For more information, see the [using directive](../../language-reference/keywords/using-directive.md). - -You can also create an **alias** for a namespace or type using the [using alias directive](../../language-reference/keywords/using-directive.md#the-using-alias). -In more advanced scenarios, you can reference multiple assemblies with the same namespaces or types by using the [extern alias](../../language-reference/keywords/extern-alias.md) feature. - -[!INCLUDE [csharp10-templates](../../../../includes/csharp10-templates.md)] - -Second, declaring your own namespaces can help you control the scope of class and method names in larger programming projects. Use the [namespace](../../language-reference/keywords/namespace.md) keyword to declare a namespace, as in the following example: - -:::code language="csharp" source="snippets/namespaces/Program.cs" ID="Snippet6"::: - -The name of the namespace must be a valid C# [identifier name](../coding-style/identifier-names.md). - -You can declare a namespace for all types defined in that file, as shown in the following example: - -:::code language="csharp" source="snippets/namespaces/filescopednamespace.cs"::: - -The advantage of this new syntax is that it's simpler, saving horizontal space and braces. That makes your code easier to read. - -## Namespaces overview - -Namespaces have the following properties: - -- They organize large code projects. -- They're delimited by using the `.` operator. -- The `using` directive obviates the requirement to specify the name of the namespace for every class. -- The `global` namespace is the "root" namespace: `global::System` always refers to the .NET namespace. - -## C# language specification - -For more information, see the [Namespaces](~/_csharpstandard/standard/namespaces.md) section of the [C# language specification](~/_csharpstandard/standard/README.md). diff --git a/docs/csharp/fundamentals/types/snippets/namespaces/Program.cs b/docs/csharp/fundamentals/types/snippets/namespaces/Program.cs deleted file mode 100644 index 4d5825017c087..0000000000000 --- a/docs/csharp/fundamentals/types/snippets/namespaces/Program.cs +++ /dev/null @@ -1,35 +0,0 @@ -// -using System; -// - -namespace namespaces -{ - class Program - { - static void Main(string[] args) - { - // - System.Console.WriteLine("Hello World!"); - // - - // - Console.WriteLine("Hello World!"); - // - } - } -} - -// -namespace SampleNamespace -{ - class SampleClass - { - public void SampleMethod() - { - System.Console.WriteLine( - "SampleMethod inside SampleNamespace"); - } - } -} -// - diff --git a/docs/csharp/fundamentals/types/snippets/namespaces/filescopednamespace.cs b/docs/csharp/fundamentals/types/snippets/namespaces/filescopednamespace.cs deleted file mode 100644 index 38abdbeab7d4a..0000000000000 --- a/docs/csharp/fundamentals/types/snippets/namespaces/filescopednamespace.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace SampleNamespace; - -class AnotherSampleClass -{ - public void AnotherSampleMethod() - { - System.Console.WriteLine( - "SampleMethod inside SampleNamespace"); - } -} - diff --git a/docs/csharp/language-reference/compiler-messages/async-await-errors.md b/docs/csharp/language-reference/compiler-messages/async-await-errors.md index 68613fe90746a..643d9d35f6db0 100644 --- a/docs/csharp/language-reference/compiler-messages/async-await-errors.md +++ b/docs/csharp/language-reference/compiler-messages/async-await-errors.md @@ -203,7 +203,7 @@ The following items explain how to correct each error. For more information abou - Change the return expression to match the async method's underlying result type (**CS1983**, **CS4016**). When an async method returns `Task`, the `return` statement must supply a value of type `T`, not `Task`, because the compiler-generated [state machine](../../asynchronous-programming/task-asynchronous-programming-model.md) wraps the value in a task automatically. **CS1983** appears when the method returns `Task` and the expression is `T`; **CS4016** covers the general case where the return expression type doesn't match. - Remove the [`async`](../keywords/async.md) modifier from methods that don't have a body, such as abstract methods or interface method declarations (**CS1994**). The `async` modifier requires a method body so the compiler can generate the state machine implementation. -- Change an async entry point's return type to or (**CS4009**). Starting with C# 7.1, the [`Main` method](../../fundamentals/program-structure/main-command-line.md#async-main-return-values) can be `async`, but it must return `Task` or `Task` - `async void` and `async int` aren't valid entry point signatures. +- Change an async entry point's return type to or (**CS4009**). Starting with C# 7.1, the [`Main` method](../../fundamentals/program-structure/main-command-line.md#main-return-values) can be `async`, but it must return `Task` or `Task` - `async void` and `async int` aren't valid entry point signatures. - Remove or rename one entry point when the project contains both a synchronous and an asynchronous `Main` method (**CS8892**). The compiler selects the synchronous entry point and issues this warning for the async candidate that it ignores. - Add an explicit return type to the lambda expression before applying the [`[AsyncMethodBuilder]`](xref:System.Runtime.CompilerServices.AsyncMethodBuilderAttribute) attribute (**CS8935**). The compiler can't resolve the builder type for an anonymous method whose return type is inferred, because the attribute must be matched to a specific return type at compile time. - Change the type specified in the [`[AsyncMethodBuilder]`](xref:System.Runtime.CompilerServices.AsyncMethodBuilderAttribute) attribute to an unbound generic type of arity one, such as `MyTaskMethodBuilder<>` rather than `MyTaskMethodBuilder` or a non-generic type (**CS8940**). The builder's containing type, if any, must also be non-generic. The compiler requires this shape so it can construct the builder for any concrete task-like return type. diff --git a/docs/csharp/language-reference/keywords/namespace.md b/docs/csharp/language-reference/keywords/namespace.md index 6a67cef3da439..dd68dac1fe067 100644 --- a/docs/csharp/language-reference/keywords/namespace.md +++ b/docs/csharp/language-reference/keywords/namespace.md @@ -102,4 +102,4 @@ For more information on file scoped namespace declarations, see the [feature spe - [using](using-directive.md) - [using static](using-directive.md) - [Namespace alias qualifier `::`](../operators/namespace-alias-qualifier.md) -- [Namespaces](../../fundamentals/types/namespaces.md) +- [Namespaces](../../fundamentals/program-structure/namespaces.md) diff --git a/docs/csharp/language-reference/keywords/using-directive.md b/docs/csharp/language-reference/keywords/using-directive.md index 82530486f736f..6ebbd9282ed64 100644 --- a/docs/csharp/language-reference/keywords/using-directive.md +++ b/docs/csharp/language-reference/keywords/using-directive.md @@ -187,7 +187,7 @@ For more information on the *global using* modifier, see the [global usings feat ## See also - [C# keywords](index.md) -- [Namespaces](../../fundamentals/types/namespaces.md) +- [Namespaces](../../fundamentals/program-structure/namespaces.md) - [Style rule IDE0005 - Remove unnecessary 'using' directives](../../../fundamentals/code-analysis/style-rules/ide0005.md) - [Style rule IDE0065 - 'using' directive placement](../../../fundamentals/code-analysis/style-rules/ide0065.md) - [`using` statement](../statements/using.md) diff --git a/docs/csharp/misc/cs0101.md b/docs/csharp/misc/cs0101.md index a6785cc54e80c..fec76070e3a32 100644 --- a/docs/csharp/misc/cs0101.md +++ b/docs/csharp/misc/cs0101.md @@ -12,7 +12,7 @@ ms.assetid: edb5246b-c16b-4845-bb2d-0ef769d014c7 The namespace 'namespace' already contains a definition for 'type' - A [namespace](../language-reference/keywords/namespace.md) has duplicate identifiers. Rename or delete one of the duplicate identifiers. For more information, see [Namespaces](../fundamentals/types/namespaces.md) + A [namespace](../language-reference/keywords/namespace.md) has duplicate identifiers. Rename or delete one of the duplicate identifiers. For more information, see [Namespaces](../fundamentals/program-structure/namespaces.md) The following sample generates CS0101: diff --git a/docs/csharp/misc/cs1527.md b/docs/csharp/misc/cs1527.md index 0c4194ed0e4ab..02419788e4df8 100644 --- a/docs/csharp/misc/cs1527.md +++ b/docs/csharp/misc/cs1527.md @@ -39,7 +39,7 @@ private struct S1 {} ## See also -- [Namespaces](../fundamentals/types/namespaces.md) +- [Namespaces](../fundamentals/program-structure/namespaces.md) - [:: Operator](../language-reference/operators/namespace-alias-qualifier.md) - [Accessibility Domain](../language-reference/keywords/accessibility-domain.md) - [Access Modifiers](../programming-guide/classes-and-structs/access-modifiers.md) diff --git a/docs/csharp/toc.yml b/docs/csharp/toc.yml index 69bc030441643..3f8c72e769859 100644 --- a/docs/csharp/toc.yml +++ b/docs/csharp/toc.yml @@ -37,16 +37,20 @@ items: items: - name: Overview href: fundamentals/program-structure/index.md - - name: Main method - href: fundamentals/program-structure/main-command-line.md + - name: Namespaces and using directives + href: fundamentals/program-structure/namespaces.md + - name: Preprocessor directives + href: fundamentals/program-structure/preprocessor-directives.md + - name: Program organization + href: fundamentals/program-structure/program-organization.md - name: Top-level statements href: fundamentals/program-structure/top-level-statements.md + - name: Main method + href: fundamentals/program-structure/main-command-line.md - name: Type system items: - name: Overview href: fundamentals/types/index.md - - name: Namespaces - href: fundamentals/types/namespaces.md # TODO: tuples - name: Classes href: fundamentals/types/classes.md diff --git a/docs/csharp/tutorials/console-teleprompter.md b/docs/csharp/tutorials/console-teleprompter.md index 6f8ea634ad5e2..5cad8bea68fd1 100644 --- a/docs/csharp/tutorials/console-teleprompter.md +++ b/docs/csharp/tutorials/console-teleprompter.md @@ -184,7 +184,7 @@ This requires you to change the `Main` method signature to: static async Task Main(string[] args) ``` -Learn more about the [`async Main` method](../fundamentals/program-structure/main-command-line.md#async-main-return-values) in our fundamentals section. +Learn more about the [`async Main` method](../fundamentals/program-structure/main-command-line.md#main-return-values) in our fundamentals section. Next, you need to write the second asynchronous method to read from the Console and watch for the '<' (less than), '>' (greater than) and 'X' or 'x' keys. Here's the method you add for that task: From 597f555a4db51a41adcfed66aaedbe696fdd4655 Mon Sep 17 00:00:00 2001 From: Xuyang Cao Date: Fri, 20 Mar 2026 13:56:39 +0000 Subject: [PATCH 4/9] rebrand cca & cli agent naming (#52479) * rebrand * assistant minor changes --------- Co-authored-by: Xuyang Cao --- .../migration/appmod/coding-agent-support.md | 8 ++++---- .../migration/appmod/copilot-cli-support.md | 8 ++++---- .../coding-agent/select-custom-agent.png | Bin 51259 -> 55138 bytes .../appmod/media/select-custom-agent.png | Bin 30716 -> 55192 bytes 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/azure/migration/appmod/coding-agent-support.md b/docs/azure/migration/appmod/coding-agent-support.md index f4709f50169f2..8b8eea214cc19 100644 --- a/docs/azure/migration/appmod/coding-agent-support.md +++ b/docs/azure/migration/appmod/coding-agent-support.md @@ -71,19 +71,19 @@ This article shows you how to migrate .NET apps using **GitHub Copilot moderniza 1. In the prompt box, open the dropdown, and select the repository where you want to create the custom agent profile. 1. (Optional) Select the branch where you want to create the agent profile. The default is the main branch. 1. Select the **Copilot** icon, then select **+ Create an agent**. This action opens a template agent profile named `my-agent.agent.md` in the `.github/agents` directory of your target repository. -1. Paste the content below into the template, and rename the file to `appmod-dotnet.agent.md`. +1. Paste the content below into the template, and rename the file to `modernize-azure-dotnet.agent.md`. ``` --- - # .NET Modernization Assistant - Custom GitHub Copilot Agent + # .NET modernize to azure assistant - Custom GitHub Copilot Agent # This agent helps modernize .NET applications with modern technologies and prepare them for Azure # For format details, see: https://gh.io/customagents/config - name: dotnet-modernization + name: modernize-azure-dotnet description: Expert assistant for modernizing .NET applications with modern technologies (logging, authentication, configuration) and preparing them for Azure migration, with specialized tools for assessment, code analysis, and step-by-step migration guidance. --- - # .NET Modernization Assistant + # .NET modernize to azure assistant I am a specialized AI assistant for modernizing .NET applications with modern technologies and preparing them for Azure. diff --git a/docs/azure/migration/appmod/copilot-cli-support.md b/docs/azure/migration/appmod/copilot-cli-support.md index b90fb890d601e..677c7bdee3414 100644 --- a/docs/azure/migration/appmod/copilot-cli-support.md +++ b/docs/azure/migration/appmod/copilot-cli-support.md @@ -92,22 +92,22 @@ Learn how to migrate .NET applications to Azure with **GitHub Copilot modernizat ### Configure a custom agent -1. Create a file in the local `~/.copilot/agents` directory named `appmod-dotnet.agent.md`. +1. Create a file in the local `~/.copilot/agents` directory named `modernize-azure-dotnet.agent.md`. 1. Add the following content to define a User-level custom agent. For more information, visit [Use custom agents in Copilot CLI](https://docs.github.com/en/copilot/how-tos/use-copilot-agents/use-copilot-cli#use-custom-agents). ```text --- - # .NET Modernization Assistant - Custom GitHub Copilot Agent + # .NET modernize to azure assistant - Custom GitHub Copilot Agent # This agent helps modernize .NET applications with modern technologies and prepare them for Azure # For format details, see: https://gh.io/customagents/config - name: dotnet-modernization + name: modernize-azure-dotnet description: Expert assistant for modernizing .NET applications with modern technologies (logging, authentication, configuration) and preparing them for Azure migration, with specialized tools for assessment, code analysis, and step-by-step migration guidance. --- - # .NET Modernization Assistant + # .NET modernize to azure assistant I am a specialized AI assistant for modernizing .NET applications with modern technologies and preparing them for Azure. diff --git a/docs/azure/migration/appmod/media/coding-agent/select-custom-agent.png b/docs/azure/migration/appmod/media/coding-agent/select-custom-agent.png index d085a859d9724d42cd0ac5cbea075f8984cc6a6e..2acd0e0d165fbefaaadee40e1845635592cc4172 100644 GIT binary patch literal 55138 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 literal 51259 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

{cNpRjE~w=BAjtFdFC(8523_v;7f!R>{+q+~eN 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 diff --git a/docs/azure/migration/appmod/media/select-custom-agent.png b/docs/azure/migration/appmod/media/select-custom-agent.png index dc7be219d588a81852b05a57e6c1f2cc123684cb..214a61b6423fb930257c4f462580d077e48ad9fd 100644 GIT binary patch literal 55192 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 literal 30716 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 Date: Fri, 20 Mar 2026 10:04:30 -0400 Subject: [PATCH 5/9] [Breaking change] `DefineConstants` for target frameworks not available at evaluation time (#52279) --- docs/core/compatibility/10.md | 1 + ...neconstants-not-available-at-evaluation.md | 69 +++++++++++++++++++ docs/core/compatibility/toc.yml | 2 + 3 files changed, 72 insertions(+) create mode 100644 docs/core/compatibility/sdk/10.0/defineconstants-not-available-at-evaluation.md diff --git a/docs/core/compatibility/10.md b/docs/core/compatibility/10.md index 1b4158ecf9416..e3705fdec883e 100644 --- a/docs/core/compatibility/10.md +++ b/docs/core/compatibility/10.md @@ -119,6 +119,7 @@ See [Breaking changes in EF Core 10](/ef/core/what-is-new/ef-core-10.0/breaking- | [`dotnet` CLI commands log non-command-relevant data to stderr](sdk/10.0/dotnet-cli-stderr-output.md) | Behavioral change | | [.NET tool packaging creates RuntimeIdentifier-specific tool packages](sdk/10.0/dotnet-tool-pack-publish.md) | Behavioral change | | [Default workload configuration from 'loose manifests' to 'workload sets' mode](sdk/10.0/default-workload-config.md) | Behavioral change | +| [`DefineConstants` for target frameworks not available at evaluation time](sdk/10.0/defineconstants-not-available-at-evaluation.md) | Behavioral change | | [Code coverage EnableDynamicNativeInstrumentation defaults to false](sdk/10.0/code-coverage-dynamic-native-instrumentation.md) | Behavioral change | | [dnx.ps1 file is no longer included in .NET SDK](sdk/10.0/dnx-ps1-removed.md) | Source incompatible | | [Double quotes in file-level directives are disallowed](sdk/10.0/file-level-directive-double-quotes.md) | Source incompatible | diff --git a/docs/core/compatibility/sdk/10.0/defineconstants-not-available-at-evaluation.md b/docs/core/compatibility/sdk/10.0/defineconstants-not-available-at-evaluation.md new file mode 100644 index 0000000000000..c41cd865bbc87 --- /dev/null +++ b/docs/core/compatibility/sdk/10.0/defineconstants-not-available-at-evaluation.md @@ -0,0 +1,69 @@ +--- +title: "Breaking change: `DefineConstants` for target frameworks not available at evaluation time" +description: "Learn about the breaking change in .NET 10 SDK where DefineConstants items for target frameworks are no longer available at MSBuild evaluation time." +ms.date: 03/12/2026 +ai-usage: ai-assisted +ms.custom: https://github.com/dotnet/docs/issues/51763 +--- + +# `DefineConstants` for target frameworks not available at evaluation time + +The target-framework-related `DefineConstants` items (such as `NET`, `NET9_0_OR_GREATER`, `NETSTANDARD2_0`, and similar constants) are no longer computed at MSBuild evaluation time. Using these constants in MSBuild `Condition` attributes in your project file will no longer work as expected. + +## Version introduced + +.NET 10 + +## Previous behavior + +Previously, `DefineConstants` values like `NET`, `NETFRAMEWORK`, and `NETSTANDARD` (with optional version and `_OR_GREATER` suffixes, such as `NET452_OR_GREATER` or `NET9_0_OR_GREATER`) were available during MSBuild evaluation. This allowed you to use them directly in `Condition` attributes in your project file: + +```xml + + + +``` + +## New behavior + +Starting in .NET 10, the target-framework `DefineConstants` values are computed in a `Target`, not during MSBuild evaluation. As a result, `Condition` attributes that inspect `DefineConstants` for TFM-related values evaluate before those values are set and no longer trigger as expected. + +For example, the following condition no longer evaluates correctly because `NET9_0_OR_GREATER` isn't present in `DefineConstants` at evaluation time: + +```xml + + + + +``` + +## Type of breaking change + +This change is a [behavioral change](../../categories.md#behavioral-change). + +## Reason for change + +Direct access or manipulation of `DefineConstants` led to users accidentally overwriting the values. In addition, moving the computation into a `Target` enables more complex MSBuild orchestration scenarios required by other tools. + +## Recommended action + +- **Do not** inspect `DefineConstants` for TFM-related values (for example, `NET9_0_OR_GREATER`, `NETSTANDARD2_0`, and similar) in MSBuild `Condition` attributes at evaluation time. +- **Do** use the documented [MSBuild `TargetFramework` and `TargetPlatform` functions](/visualstudio/msbuild/property-functions#msbuild-targetframework-and-targetplatform-functions) to check for target-framework compatibility. For example: + + ```xml + + + + + + + + + + ``` + +- **Continue** to use `DefineConstants` in `Condition` attributes for constants that you define and control yourself. This change only affects the TFM-related constants that the SDK sets automatically. + +## Affected APIs + +None. diff --git a/docs/core/compatibility/toc.yml b/docs/core/compatibility/toc.yml index e696ac000dbb9..8dcf0e709440b 100644 --- a/docs/core/compatibility/toc.yml +++ b/docs/core/compatibility/toc.yml @@ -166,6 +166,8 @@ items: href: sdk/10.0/nugetaudit-transitive-packages.md - name: project.json not supported in `dotnet restore` href: sdk/10.0/dotnet-restore-project-json-unsupported.md + - name: "`DefineConstants` for target frameworks not available at evaluation time" + href: sdk/10.0/defineconstants-not-available-at-evaluation.md - name: Default workload configuration from 'loose manifests' to 'workload sets' mode href: sdk/10.0/default-workload-config.md - name: "`dotnet new sln` defaults to SLNX file format" From fbba9d85ed32d5e21415ea51e0897922d882b396 Mon Sep 17 00:00:00 2001 From: Genevieve Warren <24882762+gewarren@users.noreply.github.com> Date: Fri, 20 Mar 2026 07:07:23 -0700 Subject: [PATCH 6/9] Assign breaking-change labeled issues (#52474) Add automation to assign issues labeled 'breaking-change' to gewarren. --- .github/policies/label-issues.yml | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/.github/policies/label-issues.yml b/.github/policies/label-issues.yml index c4ef0ed4d55cf..79ef305ddf753 100644 --- a/.github/policies/label-issues.yml +++ b/.github/policies/label-issues.yml @@ -24,6 +24,23 @@ configuration: label: okr-quality eventResponderTasks: + + - description: >- + Assign issues labeled breaking-change to gewarren + if: + - payloadType: Issues + - or: + - and: + - isAction: + action: Opened + - hasLabel: + label: 'breaking-change' + - labelAdded: + label: 'breaking-change' + then: + - assignTo: + user: gewarren + - description: >- Add "not triaged" label when: * Issue is opened @@ -31,12 +48,12 @@ configuration: * 'needs-more-info' label removed if: - payloadType: Issues - - or: + - or: - or: - - isAction: + - isAction: action: Opened - - isAction: - action: Reopened + - isAction: + action: Reopened - labelRemoved: label: 'needs-more-info' then: @@ -52,11 +69,11 @@ configuration: label: ':watch: Not Triaged' - or: - and: - - isAction: + - isAction: action: Closed - isActivitySender: - issueAuthor: true - - labelAdded: + issueAuthor: true + - labelAdded: label: ':world_map: reQUEST' then: - removeLabel: ':watch: Not Triaged' From 6ab4ef6947a1cd6e12c5bd11de9836c0483787f8 Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Fri, 20 Mar 2026 07:09:20 -0700 Subject: [PATCH 7/9] Update package index with latest published versions (#52476) --- docs/azure/includes/dotnet-all.md | 6 +++--- docs/azure/includes/dotnet-new.md | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md index 4ec835b0ebc66..2219ed562a1e4 100644 --- a/docs/azure/includes/dotnet-all.md +++ b/docs/azure/includes/dotnet-all.md @@ -142,10 +142,10 @@ | WebJobs Extensions - Event Hubs | NuGet [6.5.3](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.EventHubs/6.5.3) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.EventHubs-readme) | GitHub [6.5.3](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.EventHubs_6.5.3/sdk/eventhub/Microsoft.Azure.WebJobs.Extensions.EventHubs/) | | WebJobs Extensions - Service Bus | NuGet [5.17.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.ServiceBus/5.17.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.ServiceBus-readme) | GitHub [5.17.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.ServiceBus_5.17.0/sdk/servicebus/Microsoft.Azure.WebJobs.Extensions.ServiceBus/) | | WebJobs Extensions - SignalR Service | NuGet [2.1.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.SignalRService/2.1.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.SignalRService-readme) | GitHub [2.1.0](https://github.com/Azure/azure-functions-signalrservice-extension/tree/v1.2.0/src/SignalRServiceExtension) | -| WebJobs Extensions - Storage | NuGet [5.3.7](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Storage/5.3.7) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.Storage-readme) | GitHub [5.3.7](https://github.com/Azure/azure-webjobs-sdk/tree/master/src/Microsoft.Azure.WebJobs.Extensions.Storage) | +| WebJobs Extensions - Storage | NuGet [5.3.8](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Storage/5.3.8) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.Storage-readme) | GitHub [5.3.8](https://github.com/Azure/azure-webjobs-sdk/tree/master/src/Microsoft.Azure.WebJobs.Extensions.Storage) | | WebJobs Extensions - Web PubSub | NuGet [1.10.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.WebPubSub/1.10.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.WebPubSub-readme) | GitHub [1.10.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.WebPubSub_1.10.0/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/) | -| Functions extension for Blob Storage | NuGet [5.3.7](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs/5.3.7) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs-readme) | GitHub [5.3.7](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs_5.3.7/sdk/storage/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs/) | -| Functions extension for Storage Queues | NuGet [5.3.7](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Storage.Queues/5.3.7) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.Storage.Queues-readme) | GitHub [5.3.7](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.Storage.Queues_5.3.7/sdk/storage/Microsoft.Azure.WebJobs.Extensions.Storage.Queues/) | +| Functions extension for Blob Storage | NuGet [5.3.8](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs/5.3.8) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs-readme) | GitHub [5.3.8](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs_5.3.8/sdk/storage/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs/) | +| Functions extension for Storage Queues | NuGet [5.3.8](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Storage.Queues/5.3.8) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.Storage.Queues-readme) | GitHub [5.3.8](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.Storage.Queues_5.3.8/sdk/storage/Microsoft.Azure.WebJobs.Extensions.Storage.Queues/) | | Functions extension for WebPubSub for SocketIO | NuGet [1.0.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.WebPubSubForSocketIO/1.0.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.WebPubSubForSocketIO-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.WebPubSubForSocketIO_1.0.0/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSubForSocketIO/) | | Provisioning - App Configuration | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Provisioning.AppConfiguration/1.1.0)
NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.AppConfiguration/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.AppConfiguration-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.AppConfiguration_1.1.0/sdk/provisioning/Azure.Provisioning.AppConfiguration/)
GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.AppConfiguration_1.2.0-beta.1/sdk/provisioning/Azure.Provisioning.AppConfiguration/) | | Provisioning - App Containers | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Provisioning.AppContainers/1.2.0) | [docs](/dotnet/api/overview/azure/Provisioning.AppContainers-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.AppContainers_1.2.0/sdk/provisioning/Azure.Provisioning.AppContainers/) | diff --git a/docs/azure/includes/dotnet-new.md b/docs/azure/includes/dotnet-new.md index 31662cd235e10..e0ae18c904387 100644 --- a/docs/azure/includes/dotnet-new.md +++ b/docs/azure/includes/dotnet-new.md @@ -155,10 +155,10 @@ | WebJobs Extensions - Event Hubs | NuGet [6.5.3](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.EventHubs/6.5.3) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.EventHubs-readme) | GitHub [6.5.3](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.EventHubs_6.5.3/sdk/eventhub/Microsoft.Azure.WebJobs.Extensions.EventHubs/) | | WebJobs Extensions - Service Bus | NuGet [5.17.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.ServiceBus/5.17.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.ServiceBus-readme) | GitHub [5.17.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.ServiceBus_5.17.0/sdk/servicebus/Microsoft.Azure.WebJobs.Extensions.ServiceBus/) | | WebJobs Extensions - SignalR Service | NuGet [2.1.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.SignalRService/2.1.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.SignalRService-readme) | GitHub [2.1.0](https://github.com/Azure/azure-functions-signalrservice-extension/tree/v1.2.0/src/SignalRServiceExtension) | -| WebJobs Extensions - Storage | NuGet [5.3.7](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Storage/5.3.7) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.Storage-readme) | GitHub [5.3.7](https://github.com/Azure/azure-webjobs-sdk/tree/master/src/Microsoft.Azure.WebJobs.Extensions.Storage) | +| WebJobs Extensions - Storage | NuGet [5.3.8](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Storage/5.3.8) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.Storage-readme) | GitHub [5.3.8](https://github.com/Azure/azure-webjobs-sdk/tree/master/src/Microsoft.Azure.WebJobs.Extensions.Storage) | | WebJobs Extensions - Web PubSub | NuGet [1.10.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.WebPubSub/1.10.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.WebPubSub-readme) | GitHub [1.10.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.WebPubSub_1.10.0/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/) | -| Functions extension for Blob Storage | NuGet [5.3.7](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs/5.3.7) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs-readme) | GitHub [5.3.7](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs_5.3.7/sdk/storage/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs/) | -| Functions extension for Storage Queues | NuGet [5.3.7](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Storage.Queues/5.3.7) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.Storage.Queues-readme) | GitHub [5.3.7](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.Storage.Queues_5.3.7/sdk/storage/Microsoft.Azure.WebJobs.Extensions.Storage.Queues/) | +| Functions extension for Blob Storage | NuGet [5.3.8](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs/5.3.8) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs-readme) | GitHub [5.3.8](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs_5.3.8/sdk/storage/Microsoft.Azure.WebJobs.Extensions.Storage.Blobs/) | +| Functions extension for Storage Queues | NuGet [5.3.8](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.Storage.Queues/5.3.8) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.Storage.Queues-readme) | GitHub [5.3.8](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.Storage.Queues_5.3.8/sdk/storage/Microsoft.Azure.WebJobs.Extensions.Storage.Queues/) | | Functions extension for WebPubSub for SocketIO | NuGet [1.0.0](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.WebPubSubForSocketIO/1.0.0) | [docs](/dotnet/api/overview/azure/Microsoft.Azure.WebJobs.Extensions.WebPubSubForSocketIO-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Microsoft.Azure.WebJobs.Extensions.WebPubSubForSocketIO_1.0.0/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSubForSocketIO/) | | Provisioning - App Configuration | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Provisioning.AppConfiguration/1.1.0)
NuGet [1.2.0-beta.1](https://www.nuget.org/packages/Azure.Provisioning.AppConfiguration/1.2.0-beta.1) | [docs](/dotnet/api/overview/azure/Provisioning.AppConfiguration-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.AppConfiguration_1.1.0/sdk/provisioning/Azure.Provisioning.AppConfiguration/)
GitHub [1.2.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.AppConfiguration_1.2.0-beta.1/sdk/provisioning/Azure.Provisioning.AppConfiguration/) | | Provisioning - App Containers | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Provisioning.AppContainers/1.2.0) | [docs](/dotnet/api/overview/azure/Provisioning.AppContainers-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Provisioning.AppContainers_1.2.0/sdk/provisioning/Azure.Provisioning.AppContainers/) | From 9122e090618f1d2d9768589cfde88b5a777ab970 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Fri, 20 Mar 2026 14:23:00 +0000 Subject: [PATCH 8/9] Clarify NuGet `Authors` property description (#52471) * Initial plan * Fix unclear Authors property description in NuGet documentation Co-authored-by: BillWagner <493969+BillWagner@users.noreply.github.com> * Update docs/standard/library-guidance/nuget.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: BillWagner <493969+BillWagner@users.noreply.github.com> Co-authored-by: Bill Wagner Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/standard/library-guidance/nuget.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/standard/library-guidance/nuget.md b/docs/standard/library-guidance/nuget.md index 5e40529f3e957..51c244eb1e172 100644 --- a/docs/standard/library-guidance/nuget.md +++ b/docs/standard/library-guidance/nuget.md @@ -1,7 +1,8 @@ --- title: NuGet and .NET libraries description: Best practice recommendations for packaging with NuGet for .NET libraries. -ms.date: 01/15/2019 +ms.date: 03/19/2026 +ai-usage: ai-assisted --- # NuGet @@ -44,7 +45,7 @@ A NuGet package supports many [metadata properties](/nuget/reference/nuspec). Th | `PackageVersion` | `version` | NuGet package version. For more information, see [NuGet package version](./versioning.md#nuget-package-version). | | `Title` | `title` | A human-friendly title of the package. It defaults to the `PackageId`. | | `Description` | `description` | A long description of the package displayed in UI. | -| `Authors` | `authors` | A comma-separated list of package authors, matching the profile names on nuget.org. | +| `Authors` | `authors` | A comma-separated list of package author display names (for example, `James Newton-King`). These names are displayed as plain text on NuGet.org and are not linked to NuGet.org profiles. | | `PackageTags` | `tags` | A space or semicolon-delimited list of tags and keywords that describe the package. Tags are used when searching for packages. | | `PackageIcon` | `icon` | A path to an image in the package to use as a package icon. Read more about [`icon` metadata](/nuget/reference/nuspec#icon). | | `PackageProjectUrl` | `projectUrl` | A URL for the project homepage or source repository. | From 863ac42cec71c43cff89653ed8951574358361b1 Mon Sep 17 00:00:00 2001 From: alexwolfmsft <93200798+alexwolfmsft@users.noreply.github.com> Date: Fri, 20 Mar 2026 13:12:55 -0400 Subject: [PATCH 9/9] Update language agnostic includes to use cross repo includes (#52301) --- .openpublishing.publish.config.json | 4 +- ...-chat-scaling-with-azure-container-apps.md | 12 +-- docs/ai/resources/azure-ai.md | 2 +- .../local-development-broker.md | 14 ++-- .../local-development-dev-accounts.md | 76 ++++--------------- .../local-development-service-principal.md | 6 +- .../sdk/authentication/on-premises-apps.md | 2 +- .../system-assigned-managed-identity.md | 2 +- .../user-assigned-managed-identity.md | 2 +- .../sdk/includes/auth-assign-group-roles.md | 47 ------------ .../includes/auth-create-app-registration.md | 59 -------------- .../sdk/includes/auth-create-entra-group.md | 61 --------------- .../azure/sdk/includes/broker-assign-roles.md | 13 ---- .../sdk/includes/broker-configure-app.md | 34 --------- docs/azure/sdk/includes/broker-intro.md | 14 ---- docs/azure/sdk/includes/broker-linux.md | 6 -- docs/azure/sdk/includes/broker-mac.md | 6 -- docs/azure/sdk/includes/broker-windows.md | 8 -- .../sdk/includes/managed-identity-concepts.md | 11 --- 19 files changed, 37 insertions(+), 342 deletions(-) delete mode 100644 docs/azure/sdk/includes/auth-assign-group-roles.md delete mode 100644 docs/azure/sdk/includes/auth-create-app-registration.md delete mode 100644 docs/azure/sdk/includes/auth-create-entra-group.md delete mode 100644 docs/azure/sdk/includes/broker-assign-roles.md delete mode 100644 docs/azure/sdk/includes/broker-configure-app.md delete mode 100644 docs/azure/sdk/includes/broker-intro.md delete mode 100644 docs/azure/sdk/includes/broker-linux.md delete mode 100644 docs/azure/sdk/includes/broker-mac.md delete mode 100644 docs/azure/sdk/includes/broker-windows.md delete mode 100644 docs/azure/sdk/includes/managed-identity-concepts.md diff --git a/.openpublishing.publish.config.json b/.openpublishing.publish.config.json index 544d70a2731f4..68e80d3ae203c 100644 --- a/.openpublishing.publish.config.json +++ b/.openpublishing.publish.config.json @@ -86,8 +86,8 @@ "branch_mapping": {} }, { - "path_to_root": "azure-dev-docs-pr", - "url": "https://github.com/MicrosoftDocs/azure-dev-docs-pr", + "path_to_root": "azure-dev-docs", + "url": "https://github.com/MicrosoftDocs/azure-dev-docs", "branch": "main", "branch_mapping": {} } diff --git a/docs/ai/get-started-app-chat-scaling-with-azure-container-apps.md b/docs/ai/get-started-app-chat-scaling-with-azure-container-apps.md index 6e614353b1995..95ae4313b65e9 100644 --- a/docs/ai/get-started-app-chat-scaling-with-azure-container-apps.md +++ b/docs/ai/get-started-app-chat-scaling-with-azure-container-apps.md @@ -9,7 +9,7 @@ ms.topic: get-started # Scale Azure OpenAI for .NET chat using RAG with Azure Container Apps -[!INCLUDE [aca-load-balancer-intro](~/azure-dev-docs-pr/articles/ai/includes//scaling-load-balancer-introduction-azure-container-apps.md)] +[!INCLUDE [aca-load-balancer-intro](~/azure-dev-docs/articles/ai/includes//scaling-load-balancer-introduction-azure-container-apps.md)] ## Prerequisites @@ -29,15 +29,15 @@ ms.topic: get-started --- -[!INCLUDE [scaling-load-balancer-aca-procedure.md](~/azure-dev-docs-pr/articles/ai/includes//scaling-load-balancer-procedure-azure-container-apps.md)] +[!INCLUDE [scaling-load-balancer-aca-procedure.md](~/azure-dev-docs/articles/ai/includes//scaling-load-balancer-procedure-azure-container-apps.md)] -[!INCLUDE [redeployment-procedure](~/azure-dev-docs-pr/articles/ai/includes//redeploy-procedure-chat.md)] +[!INCLUDE [redeployment-procedure](~/azure-dev-docs/articles/ai/includes//redeploy-procedure-chat.md)] -[!INCLUDE [logs](~/azure-dev-docs-pr/articles/ai/includes//scaling-load-balancer-logs-azure-container-apps.md)] +[!INCLUDE [logs](~/azure-dev-docs/articles/ai/includes//scaling-load-balancer-logs-azure-container-apps.md)] -[!INCLUDE [capacity.md](~/azure-dev-docs-pr/articles/ai/includes//scaling-load-balancer-capacity.md)] +[!INCLUDE [capacity.md](~/azure-dev-docs/articles/ai/includes//scaling-load-balancer-capacity.md)] -[!INCLUDE [aca-cleanup](~/azure-dev-docs-pr/articles/ai/includes//scaling-load-balancer-cleanup-azure-container-apps.md)] +[!INCLUDE [aca-cleanup](~/azure-dev-docs/articles/ai/includes//scaling-load-balancer-cleanup-azure-container-apps.md)] ## Sample code diff --git a/docs/ai/resources/azure-ai.md b/docs/ai/resources/azure-ai.md index 5e3e8f028dce1..e81822d822286 100644 --- a/docs/ai/resources/azure-ai.md +++ b/docs/ai/resources/azure-ai.md @@ -9,4 +9,4 @@ ms.topic: reference This article contains an organized list of the best learning resources for .NET developers who are building AI apps using Azure services. Resources include popular quickstart articles, reference samples, documentation, and training courses. -[!INCLUDE [include-file-from-azure-dev-docs-pr](~/azure-dev-docs-pr/articles/ai/includes/azure-ai-for-developers-dotnet.md)] +[!INCLUDE [include-file-from-azure-dev-docs-pr](~/azure-dev-docs/articles/ai/includes/azure-ai-for-developers-dotnet.md)] diff --git a/docs/azure/sdk/authentication/local-development-broker.md b/docs/azure/sdk/authentication/local-development-broker.md index fb0cf004f2479..6a2b9376a4652 100644 --- a/docs/azure/sdk/authentication/local-development-broker.md +++ b/docs/azure/sdk/authentication/local-development-broker.md @@ -9,29 +9,29 @@ zone_pivot_groups: operating-systems-set-one # Authenticate .NET apps to Azure services during local development using brokered authentication -[!INCLUDE [broker-intro](../includes/broker-intro.md)] +[!INCLUDE [broker-intro](~/azure-dev-docs/articles/includes/authentication/broker-introduction.md)] :::zone target="docs" pivot="os-windows" -[!INCLUDE [broker-windows](../includes/broker-windows.md)] +[!INCLUDE [broker-windows](~/azure-dev-docs/articles/includes/authentication/broker-windows.md)] :::zone-end :::zone target="docs" pivot="os-macos" -[!INCLUDE [broker-mac](../includes/broker-mac.md)] +[!INCLUDE [broker-mac](~/azure-dev-docs/articles/includes/authentication/broker-mac.md)] :::zone-end :::zone target="docs" pivot="os-linux" -[!INCLUDE [broker-linux](../includes/broker-linux.md)] +[!INCLUDE [broker-linux](~/azure-dev-docs/articles/includes/authentication/broker-linux.md)] :::zone-end -[!INCLUDE [broker-configure-app](../includes/broker-configure-app.md)] +[!INCLUDE [broker-configure-app](~/azure-dev-docs/articles/includes/authentication/broker-configure-application.md)] -[!INCLUDE [broker-assign-roles](../includes/broker-assign-roles.md)] +[!INCLUDE [broker-assign-roles](~/azure-dev-docs/articles/includes/authentication/broker-assign-roles.md)] ## Implement the code @@ -97,7 +97,7 @@ The Azure Identity library provide interactive brokered authentication using using . -:::code language="csharp" source="../snippets/authentication/brokered/console-app/Program.cs" id="snippet_brokered_linux" highlight="15-21"::: + :::code language="csharp" source="../snippets/authentication/brokered/console-app/Program.cs" id="snippet_brokered_linux" highlight="15-21"::: :::zone-end diff --git a/docs/azure/sdk/authentication/local-development-dev-accounts.md b/docs/azure/sdk/authentication/local-development-dev-accounts.md index ab5e13c3865dd..86cfb27039db4 100644 --- a/docs/azure/sdk/authentication/local-development-dev-accounts.md +++ b/docs/azure/sdk/authentication/local-development-dev-accounts.md @@ -39,9 +39,9 @@ The Azure Identity library can detect that the developer is signed-in from one o This approach takes advantage of the developer's existing Azure accounts to streamline the authentication process. However, a developer's account likely has more permissions than required by the app, therefore exceeding the permissions the app runs with in production. As an alternative, you can [create application service principals to use during local development](./local-development-service-principal.md), which can be scoped to have only the access needed by the app. -[!INCLUDE [auth-create-entra-group](../includes/auth-create-entra-group.md)] +[!INCLUDE [auth-create-entra-group](~/azure-dev-docs/articles/includes/authentication/create-entra-group.md)] -[!INCLUDE [auth-assign-group-roles](../includes/auth-assign-group-roles.md)] +[!INCLUDE [auth-assign-group-roles](~/azure-dev-docs/articles/includes/authentication/assign-group-roles.md)] ## Sign-in to Azure using developer tooling @@ -53,72 +53,19 @@ Next, sign-in to Azure using one of several developer tools that can be used to ### [Visual Studio Code](#tab/sign-in-visual-studio-code) -Developers using Visual Studio Code can authenticate with their developer account directly through the editor via the broker. Apps that use or can then use this account to authenticate app requests through a seamless single-sign-on experience. - -1. In Visual Studio Code, go to the **Extensions** panel and install the [Azure Resources](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azureresourcegroups) extension. This extension lets you view and manage Azure resources directly from Visual Studio Code. It also uses the built-in Visual Studio Code Microsoft authentication provider to authenticate with Azure. - - :::image type="content" source="../media/azure-resources-extension.png" alt-text="Screenshot showing the Azure Resources extension."::: - -1. Open the Command Palette in Visual Studio Code, then search for and select **Azure: Sign in**. - - :::image type="content" source="../media/visual-studio-code-sign-in.png" alt-text="Screenshot showing how to sign in to Azure in Visual Studio Code."::: - - > [!TIP] - > Open the Command Palette using `Ctrl+Shift+P` on Windows/Linux or `Cmd+Shift+P` on macOS. - -1. Add the [Azure.Identity.Broker](https://www.nuget.org/packages/Azure.Identity.Broker) NuGet package to your app: - - ```dotnetcli - dotnet add package Azure.Identity.Broker - ``` +[!INCLUDE [sign-in-visual-studio-code](~/azure-dev-docs/articles/includes/authentication/sign-in-visual-studio-code.md)] ### [Azure CLI](#tab/sign-in-azure-cli) -Developers can use [Azure CLI](/cli/azure/what-is-azure-cli) to authenticate. Apps using or can then use this account to authenticate app requests. - -To authenticate with the Azure CLI, run the `az login` command. On a system with a default web browser, the Azure CLI launches the browser to authenticate the user. - -```azurecli -az login -``` - -For systems without a default web browser, the `az login` command uses the device code authentication flow. The user can also force the Azure CLI to use the device code flow rather than launching a browser by specifying the `--use-device-code` argument. - -```azurecli -az login --use-device-code -``` +[!INCLUDE [sign-in-azure-cli](~/azure-dev-docs/articles/includes/authentication/sign-in-azure-cli.md)] ### [Azure Developer CLI](#tab/sign-in-azure-developer-cli) -Developers can use [Azure Developer CLI](/azure/developer/azure-developer-cli/overview) to authenticate. Apps using or can then use this account to authenticate app requests. - -To authenticate with the Azure Developer CLI, run the `azd auth login` command. On a system with a default web browser, the Azure Developer CLI launches the browser to authenticate the user. - -```azdeveloper -azd auth login -``` - -For systems without a default web browser, the `azd auth login --use-device-code` uses the device code authentication flow. The user can also force the Azure Developer CLI to use the device code flow rather than launching a browser by specifying the `--use-device-code` argument. - -```azdeveloper -azd auth login --use-device-code -``` +[!INCLUDE [sign-in-azure-developer-cli](~/azure-dev-docs/articles/includes/authentication/sign-in-azure-developer-cli.md)] ### [Azure PowerShell](#tab/sign-in-azure-powershell) -Developers can use [Azure PowerShell](/powershell/azure/what-is-azure-powershell) to authenticate. Apps using or can then use this account to authenticate app requests. - -To authenticate with Azure PowerShell, run the command `Connect-AzAccount`. On a system with a default web browser and version 5.0.0 or later of Azure PowerShell, it launches the browser to authenticate the user. - -```azurepowershell -Connect-AzAccount -``` - -For systems without a default web browser, the `Connect-AzAccount` command uses the device code authentication flow. The user can also force Azure PowerShell to use the device code flow rather than launching a browser by specifying the `UseDeviceAuthentication` argument. - -```azurepowershell -Connect-AzAccount -UseDeviceAuthentication -``` +[!INCLUDE [sign-in-azure-PowerShell](~/azure-dev-docs/articles/includes/authentication/sign-in-azure-powershell.md)] --- @@ -133,10 +80,17 @@ Complete the following steps: 1. Add references to the [Azure.Identity](https://www.nuget.org/packages/Azure.Identity) and the [Microsoft.Extensions.Azure](https://www.nuget.org/packages/Microsoft.Extensions.Azure) packages in your project: ```dotnetcli - dotnet add package Azure.Identity - dotnet add package Microsoft.Extensions.Azure + dotnet package add Azure.Identity + dotnet package add Microsoft.Extensions.Azure ``` + > [!NOTE] + > When using `VisualStudioCodeCredential`, you must also install the [Azure.Identity.Broker](https://www.nuget.org/packages/Azure.Identity.Broker) package: + > + > ```dotnetcli + > dotnet package add Azure.Identity.Broker + > ``` + 1. In `Program.cs`, add `using` directives for the `Azure.Identity` and `Microsoft.Extensions.Azure` namespaces. 1. Register the Azure service client using the corresponding `Add`-prefixed extension method. diff --git a/docs/azure/sdk/authentication/local-development-service-principal.md b/docs/azure/sdk/authentication/local-development-service-principal.md index ba7aca1f8440b..5842c21cdd691 100644 --- a/docs/azure/sdk/authentication/local-development-service-principal.md +++ b/docs/azure/sdk/authentication/local-development-service-principal.md @@ -30,11 +30,11 @@ When the app is registered in Azure, an application service principal is created During local development, environment variables are set with the application service principal's identity. The Azure Identity library reads these environment variables to authenticate the app to the required Azure resources. -[!INCLUDE [create-app-registration](../includes/auth-create-app-registration.md)] +[!INCLUDE [create-app-registration](~/azure-dev-docs/articles/includes/authentication/create-app-registration.md)] -[!INCLUDE [create-entra-group](../includes/auth-create-entra-group.md)] +[!INCLUDE [create-entra-group](~/azure-dev-docs/articles/includes/authentication/create-entra-group.md)] -[!INCLUDE [auth-assign-group-roles](../includes/auth-assign-group-roles.md)] +[!INCLUDE [auth-assign-group-roles](~/azure-dev-docs/articles/includes/authentication/assign-group-roles.md)] [!INCLUDE [auth-set-environment-variables](../includes/auth-set-environment-variables.md)] diff --git a/docs/azure/sdk/authentication/on-premises-apps.md b/docs/azure/sdk/authentication/on-premises-apps.md index 48f62131d2dbd..8c08559530c25 100644 --- a/docs/azure/sdk/authentication/on-premises-apps.md +++ b/docs/azure/sdk/authentication/on-premises-apps.md @@ -21,7 +21,7 @@ Using dedicated application service principals allows you to adhere to the princ A different app registration should be created for each environment the app is hosted in. This allows environment specific resource permissions to be configured for each service principal and make sure an app deployed to one environment doesn't talk to Azure resources that are part of another environment. -[!INCLUDE [auth-create-app-registration](../includes/auth-create-app-registration.md)] +[!INCLUDE [auth-create-app-registration](~/azure-dev-docs/articles/includes/authentication/create-app-registration.md)] ## Assign roles to the application service principal diff --git a/docs/azure/sdk/authentication/system-assigned-managed-identity.md b/docs/azure/sdk/authentication/system-assigned-managed-identity.md index 33886781f7231..24a9a6c6dfed9 100644 --- a/docs/azure/sdk/authentication/system-assigned-managed-identity.md +++ b/docs/azure/sdk/authentication/system-assigned-managed-identity.md @@ -15,7 +15,7 @@ The recommended approach to authenticate an Azure-hosted app to other Azure reso - How to assign roles to the system-assigned managed identity - How to authenticate using the system-assigned managed identity from your app code -[!INCLUDE [managed-identity-concepts](../includes/managed-identity-concepts.md)] +[!INCLUDE [managed-identity-concepts](~/azure-dev-docs/articles/includes/authentication/managed-identity-concepts.md)] The sections ahead describe the steps to enable and use a system-assigned managed identity for an Azure-hosted app. If you need to use a user-assigned managed identity, visit the [user-assigned managed identities](user-assigned-managed-identity.md) article for more information. diff --git a/docs/azure/sdk/authentication/user-assigned-managed-identity.md b/docs/azure/sdk/authentication/user-assigned-managed-identity.md index 540b9219919e9..dabb35fff680b 100644 --- a/docs/azure/sdk/authentication/user-assigned-managed-identity.md +++ b/docs/azure/sdk/authentication/user-assigned-managed-identity.md @@ -15,7 +15,7 @@ The recommended approach to authenticate an Azure-hosted app to other Azure reso - How to assign roles to the user-assigned managed identity - How to authenticate using the user-assigned managed identity from your app code -[!INCLUDE [managed-identity-concepts](../includes/managed-identity-concepts.md)] +[!INCLUDE [managed-identity-concepts](~/azure-dev-docs/articles/includes/authentication/managed-identity-concepts.md)] The sections ahead describe the steps to enable and use a user-assigned managed identity for an Azure-hosted app. If you need to use a system-assigned managed identity, visit the [system-assigned managed identities](system-assigned-managed-identity.md) article for more information. diff --git a/docs/azure/sdk/includes/auth-assign-group-roles.md b/docs/azure/sdk/includes/auth-assign-group-roles.md deleted file mode 100644 index 2a524c9cefa9d..0000000000000 --- a/docs/azure/sdk/includes/auth-assign-group-roles.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -ms.topic: include -ms.date: 03/13/2025 ---- - -## Assign roles to the group - -Next, determine what roles (permissions) your app needs on what resources and assign those roles to the Microsoft Entra group you created. Groups can be assigned a role at the resource, resource group, or subscription scope. This example shows how to assign roles at the resource group scope, since most apps group all their Azure resources into a single resource group. - -### [Azure portal](#tab/azure-portal) - -1. In the Azure portal, navigate to the **Overview** page of the resource group that contains your app. -1. Select **Access control (IAM)** from the left navigation. -1. On the **Access control (IAM)** page, select **+ Add** and then choose **Add role assignment** from the drop-down menu. The **Add role assignment** page provides several tabs to configure and assign roles. -1. On the **Role** tab, use the search box to locate the role you want to assign. Select the role, and then choose **Next**. -1. On the **Members** tab: - - For the **Assign access to** value, select **User, group, or service principal** . - - For the **Members** value, choose **+ Select members** to open the **Select members** flyout panel. - - Search for the Microsoft Entra group you created earlier and select it from the filtered results. Choose **Select** to select the group and close the flyout panel. - - Select **Review + assign** at the bottom of the **Members** tab. - - :::image type="content" source="../../media/group-role-assignment.png" alt-text="A screenshot showing how to assign a role to the Microsoft Entra group."::: - -1. On the **Review + assign** tab, select **Review + assign** at the bottom of the page. - -### [Azure CLI](#tab/azure-cli) - -1. Use the [az role definition list](/cli/azure/role/definition#az-role-definition-list) command to get the names of the roles that a Microsoft Entra group or service principal can be assigned to: - - ```azurecli - az role definition list \ - --query "sort_by([].{roleName:roleName, description:description}, &roleName)" \ - --output table - ``` - -1. Use the [az role assignment create](/cli/azure/role/assignment#az-role-assignment-create) command to assign a role to the Microsoft Entra group you created: - - ```azurecli - az role assignment create \ - --assignee "" \ - --role "" \ - --resource-group "" - ``` - - For information on assigning permissions at the resource or subscription level using the Azure CLI, see [Assign Azure roles using the Azure CLI](/azure/role-based-access-control/role-assignments-cli). - ---- diff --git a/docs/azure/sdk/includes/auth-create-app-registration.md b/docs/azure/sdk/includes/auth-create-app-registration.md deleted file mode 100644 index 499df0dae5111..0000000000000 --- a/docs/azure/sdk/includes/auth-create-app-registration.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -ms.topic: include -ms.date: 03/13/2025 ---- - -## Register the app in Azure - -Application service principal objects are created through an app registration in Azure using either the Azure portal or Azure CLI. - -### [Azure portal](#tab/azure-portal) - -1. In the Azure portal, use the search bar to navigate to the **App registrations** page. -1. On the **App registrations** page, select **+ New registration**. -1. On the **Register an application** page: - - For the **Name** field, enter a descriptive value that includes the app name and the target environment. - - For the **Supported account types**, select **Accounts in this organizational directory only (Microsoft Customer Led only - Single tenant)**, or whichever option best fits your requirements. -1. Select **Register** to register your app and create the service principal. - - :::image type="content" source="../../media/app-registration.png" alt-text="A screenshot showing how to create an app registration in the Azure portal."::: - -1. On the **App registration** page for your app, copy the **Application (client) ID** and **Directory (tenant) ID** and paste them in a temporary location for later use in your app code configurations. -1. Select **Add a certificate or secret** to set up credentials for your app. -1. On the **Certificates & secrets** page, select **+ New client secret**. -1. In the **Add a client secret** flyout panel that opens: - - For the **Description**, enter a value of Current. - - For the **Expires** value, leave the default recommended value of 180 days. - - Select **Add** to add the secret. -1. On the **Certificates & secrets** page, copy the **Value** property of the client secret for use in a future step. - - > [!NOTE] - > The client secret value is only displayed once after the app registration is created. You can add more client secrets without invalidating this client secret, but there's no way to display this value again. - -### [Azure CLI](#tab/azure-cli) - -Azure CLI commands can be run in the [Azure Cloud Shell](https://shell.azure.com) or on a workstation with the [Azure CLI installed](/cli/azure/install-azure-cli). - -1. Use the [az ad sp create-for-rbac](/cli/azure/ad/sp#az-ad-sp-create-for-rbac) command to create a new app registration and service principal for the app. - - ```azurecli - az ad sp create-for-rbac --name - ``` - - The output of this command resembles the following JSON: - - ```json - { - "appId": "00000000-0000-0000-0000-000000000000", - "displayName": "", - "password": "abcdefghijklmnopqrstuvwxyz", - "tenant": "11111111-1111-1111-1111-111111111111" - } - ``` - -1. Copy this output into a temporary file in a text editor, as you'll need these values in a future step. - - > [!NOTE] - > The client secret value is only displayed once after the app registration is created. You can add more client secrets without invalidating this client secret, but there's no way to display this value again. - ---- diff --git a/docs/azure/sdk/includes/auth-create-entra-group.md b/docs/azure/sdk/includes/auth-create-entra-group.md deleted file mode 100644 index e838e01048ac6..0000000000000 --- a/docs/azure/sdk/includes/auth-create-entra-group.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -ms.topic: include -ms.date: 03/11/2025 ---- - -## Create a Microsoft Entra group for local development - -Create a Microsoft Entra group to encapsulate the roles (permissions) the app needs in local development rather than assigning the roles to individual service principal objects. This approach offers the following advantages: - -- Every developer has the same roles assigned at the group level. -- If a new role is needed for the app, it only needs to be added to the group for the app. -- If a new developer joins the team, a new application service principal is created for the developer and added to the group, ensuring the developer has the right permissions to work on the app. - -### [Azure portal](#tab/azure-portal) - -1. Navigate to the **Microsoft Entra ID** overview page in the Azure portal. -1. Select **All groups** from the left-hand menu. -1. On the **Groups** page, select **New group**. -1. On the **New group** page, fill out the following form fields: - - **Group type**: Select **Security**. - - **Group name**: Enter a name for the group that includes a reference to the app or environment name. - - **Group description**: Enter a description that explains the purpose of the group. - - :::image type="content" source="../../media/create-group.png" alt-text="A screenshot showing how to create a group in the Azure portal."::: - -1. Select the **No members selected** link under **Members** to add members to the group. -1. In the flyout panel that opens, search for the service principal you created earlier and select it from the filtered results. Choose the **Select** button at the bottom of the panel to confirm your selection. -1. Select **Create** at the bottom of the **New group** page to create the group and return to the **All groups** page. If you don't see the new group listed, wait a moment and refresh the page. - -### [Azure CLI](#tab/azure-cli) - -1. Use the [az ad group create](/cli/azure/ad/group#az-ad-group-create) command to create groups in Microsoft Entra ID. - - ```azurecli - az ad group create \ - --display-name \ - --mail-nickname \ - --description - ``` - - The `--display-name` and `--mail-nickname` parameters are required. The name given to the group should be based on the name and environment of the app to indicate the group's purpose. - -1. To add members to the group, you need the object ID of the application service principal, which is different than the application ID. Use the [az ad sp list](/cli/azure/ad/sp#az-ad-sp-list) command to list the available service principals: - - ```azurecli - az ad sp list \ - --filter "startswith(displayName, '')" \ - --query "[].{objectId:id, displayName:displayName}" - ``` - - The `--filter` parameter accepts OData-style filters and can be used to filter the list as shown. The `--query` parameter limits the output to only the columns of interest. - -1. Use the [az ad group member add](/cli/azure/ad/group/member#az-ad-group-member-add) command to add members to the group: - - ```azurecli - az ad group member add \ - --group \ - --member-id - ``` - ---- diff --git a/docs/azure/sdk/includes/broker-assign-roles.md b/docs/azure/sdk/includes/broker-assign-roles.md deleted file mode 100644 index 0904833ce7086..0000000000000 --- a/docs/azure/sdk/includes/broker-assign-roles.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -ms.topic: include -ms.date: 03/19/2025 ---- - -## Assign roles - -To run your app code successfully with brokered authentication, grant your user account permissions using [Azure role-based access control (RBAC)](/azure/role-based-access-control/overview). Assign an appropriate role to your user account for the relevant Azure service. For example: - -- **Azure Blob Storage**: Assign the **Storage Account Data Contributor** role. -- **Azure Key Vault**: Assign the **Key Vault Secrets Officer** role. - -If an app is specified, it must have API permissions set for **user_impersonation Access Azure Storage** (step 6 in the previous section). This API permission allows the app to access Azure storage on behalf of the signed-in user after consent is granted during sign-in. diff --git a/docs/azure/sdk/includes/broker-configure-app.md b/docs/azure/sdk/includes/broker-configure-app.md deleted file mode 100644 index 77ce644c20215..0000000000000 --- a/docs/azure/sdk/includes/broker-configure-app.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -ms.topic: include -ms.date: 03/19/2025 ---- - -## Configure the app for brokered authentication - -To enable brokered authentication in your application, follow these steps: - -1. In the [Azure portal](https://portal.azure.com), navigate to **Microsoft Entra ID** and select **App registrations** on the left-hand menu. -1. Select the registration for your app, then select **Authentication**. -1. Add the appropriate redirect URI to your app registration via a platform configuration: - 1. Under **Platform configurations**, select **+ Add a platform**. - 1. Under **Configure platforms**, select the tile for your application type (platform) to configure its settings, such as **mobile and desktop applications**. - 1. In **Custom redirect URIs**, enter the following redirect URI for your platform: - - | Platform | Redirect URI | - |-------------|-----------------------------------------------------------------------------------------------------------------------| - | Windows 10+ or WSL | `ms-appx-web://Microsoft.AAD.BrokerPlugin/{your_client_id}` | - | macOS | `msauth.com.msauth.unsignedapp://auth` for unsigned apps
`msauth.{bundle_id}://auth` for signed apps | - | Linux | `https://login.microsoftonline.com/common/oauth2/nativeclient` | - - Replace `{your_client_id}` or `{bundle_id}` with the **Application (client) ID** from the app registration's **Overview** pane. - - 1. Select **Configure**. - - To learn more, see [Add a redirect URI to an app registration](/entra/identity-platform/quickstart-register-app#add-a-redirect-uri). - -1. Back on the **Authentication** pane, under **Advanced settings**, select **Yes** for **Allow public client flows**. -1. Select **Save** to apply the changes. -1. To authorize the application for specific resources, navigate to the resource in question, select **API Permissions**, and enable **Microsoft Graph** and other resources you want to access. - - > [!IMPORTANT] - > You must also be the admin of your tenant to grant consent to your application when you sign in for the first time. diff --git a/docs/azure/sdk/includes/broker-intro.md b/docs/azure/sdk/includes/broker-intro.md deleted file mode 100644 index 2ac265642c74d..0000000000000 --- a/docs/azure/sdk/includes/broker-intro.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -ms.topic: include -ms.date: 04/25/2025 ---- - -Brokered authentication collects user credentials using the system authentication broker to authenticate an app. A system authentication broker is an app running on a user's machine that manages the authentication handshakes and token maintenance for all connected accounts. - -Brokered authentication offers the following benefits: - -- **Enables Single Sign-On (SSO):** Enables apps to simplify how users authenticate with Microsoft Entra ID and protects Microsoft Entra ID refresh tokens from exfiltration and misuse. -- **Enhanced security:** Many security enhancements are delivered with the broker, without needing to update the app logic. -- **Enhanced feature support:** With the help of the broker, developers can access rich OS and service capabilities. -- **System integration:** Applications that use the broker plug-and-play with the built-in account picker, allowing the user to quickly pick an existing account instead of re-entering the same credentials over and over. -- **Token Protection:** Ensures that the refresh tokens are device bound and enables apps to acquire device bound access tokens. For more information, see [Token Protection](/azure/active-directory/conditional-access/concept-token-protection). diff --git a/docs/azure/sdk/includes/broker-linux.md b/docs/azure/sdk/includes/broker-linux.md deleted file mode 100644 index 87a5fa1de997c..0000000000000 --- a/docs/azure/sdk/includes/broker-linux.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -ms.topic: include -ms.date: 04/25/2025 ---- - -Linux uses [Microsoft single sign-on for Linux](/entra/identity/devices/sso-linux) as its authentication broker. diff --git a/docs/azure/sdk/includes/broker-mac.md b/docs/azure/sdk/includes/broker-mac.md deleted file mode 100644 index 93b027043a9ad..0000000000000 --- a/docs/azure/sdk/includes/broker-mac.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -ms.topic: include -ms.date: 04/25/2025 ---- - -macOS doesn't natively include a built-in authentication broker. The Azure Identity client library implements brokered authentication features using platform-specific mechanisms and can integrate with apps like Microsoft Company Portal when devices are managed. For more information, see [Microsoft Enterprise SSO plug-in for Apple devices](/entra/identity-platform/apple-sso-plugin). diff --git a/docs/azure/sdk/includes/broker-windows.md b/docs/azure/sdk/includes/broker-windows.md deleted file mode 100644 index 542b09c88a54d..0000000000000 --- a/docs/azure/sdk/includes/broker-windows.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -ms.topic: include -ms.date: 04/25/2025 ---- - -Windows provides an authentication broker called [Web Account Manager (WAM)](/entra/msal/dotnet/acquiring-tokens/desktop-mobile/wam). WAM enables identity providers such as Microsoft Entra ID to natively plug into the OS and provide secure login services to apps. Brokered authentication enables the app for all operations allowed by the interactive login credentials. - -Personal Microsoft accounts and work or school accounts are supported. On supported Windows versions, the default browser-based UI is replaced with a smoother authentication experience, similar to built-in Windows apps. diff --git a/docs/azure/sdk/includes/managed-identity-concepts.md b/docs/azure/sdk/includes/managed-identity-concepts.md deleted file mode 100644 index cf0a596178290..0000000000000 --- a/docs/azure/sdk/includes/managed-identity-concepts.md +++ /dev/null @@ -1,11 +0,0 @@ -## Essential managed identity concepts - -A managed identity enables your app to securely connect to other Azure resources without the use of secret keys or other application secrets. Internally, Azure tracks the identity and which resources it's allowed to connect to. Azure uses this information to automatically obtain Microsoft Entra tokens for the app to allow it to connect to other Azure resources. - -There are two types of managed identities to consider when configuring your hosted app: - -- **System-assigned** managed identities are enabled directly on an Azure resource and are tied to its life cycle. When the resource is deleted, Azure automatically deletes the identity for you. System-assigned identities provide a minimalistic approach to using managed identities. -- **User-assigned** managed identities are created as standalone Azure resources and offer greater flexibility and capabilities. They're ideal for solutions involving multiple Azure resources that need to share the same identity and permissions. For example, if multiple virtual machines need to access the same set of Azure resources, a user-assigned managed identity provides reusability and optimized management. - -> [!TIP] -> Learn more about selecting and managing system-assigned managed identities and user-assigned managed identities in the [Managed identity best practice recommendations](/entra/identity/managed-identities-azure-resources/managed-identity-best-practice-recommendations) article.