diff --git a/.openpublishing.redirection.fundamentals.json b/.openpublishing.redirection.fundamentals.json
index 175661affab35..536e46c4a139c 100644
--- a/.openpublishing.redirection.fundamentals.json
+++ b/.openpublishing.redirection.fundamentals.json
@@ -164,6 +164,31 @@
"source_path_from_root": "/docs/fundamentals/networking/httpclient-guidelines.md",
"redirect_url": "/dotnet/fundamentals/networking/http/httpclient-guidelines"
},
+ {
+ "source_path_from_root": "/docs/fundamentals/package-validation/baseline-version-validator.md",
+ "redirect_url": "/dotnet/fundamentals/apicompat/package-validation/baseline-version-validator",
+ "redirect_document_id": true
+ },
+ {
+ "source_path_from_root": "/docs/fundamentals/package-validation/compatible-framework-in-package-validator.md",
+ "redirect_url": "/dotnet/fundamentals/apicompat/package-validation/compatible-framework-in-package-validator",
+ "redirect_document_id": true
+ },
+ {
+ "source_path_from_root": "/docs/fundamentals/package-validation/compatible-framework-validator.md",
+ "redirect_url": "/dotnet/fundamentals/apicompat/package-validation/compatible-framework-validator",
+ "redirect_document_id": true
+ },
+ {
+ "source_path_from_root": "/docs/fundamentals/package-validation/diagnostic-ids.md",
+ "redirect_url": "/dotnet/fundamentals/apicompat/package-validation/diagnostic-ids",
+ "redirect_document_id": true
+ },
+ {
+ "source_path_from_root": "/docs/fundamentals/package-validation/overview.md",
+ "redirect_url": "/dotnet/fundamentals/apicompat/package-validation/overview",
+ "redirect_document_id": true
+ },
{
"source_path_from_root": "/docs/fundamentals/productivity/code-analysis.md",
"redirect_url": "/dotnet/fundamentals/code-analysis/overview"
diff --git a/docs/azure/includes/dotnet-all.md b/docs/azure/includes/dotnet-all.md
index 69fb30c53542c..1bb9bba90b2e1 100644
--- a/docs/azure/includes/dotnet-all.md
+++ b/docs/azure/includes/dotnet-all.md
@@ -57,8 +57,8 @@
| Monitor Ingestion | NuGet [1.1.1](https://www.nuget.org/packages/Azure.Monitor.Ingestion/1.1.1) | [docs](/dotnet/api/overview/azure/Monitor.Ingestion-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.Ingestion_1.1.1/sdk/monitor/Azure.Monitor.Ingestion/) |
| Monitor Query | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Monitor.Query/1.2.0)
NuGet [1.3.0-beta.1](https://www.nuget.org/packages/Azure.Monitor.Query/1.3.0-beta.1) | [docs](/dotnet/api/overview/azure/Monitor.Query-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.Query_1.2.0/sdk/monitor/Azure.Monitor.Query/)
GitHub [1.3.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.Query_1.3.0-beta.1/sdk/monitor/Azure.Monitor.Query/) |
| OpenAI Inference | NuGet [1.0.0-beta.9](https://www.nuget.org/packages/Azure.AI.OpenAI/1.0.0-beta.9) | [docs](/dotnet/api/overview/azure/AI.OpenAI-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.9](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_1.0.0-beta.9/sdk/openai/Azure.AI.OpenAI/) |
-| OpenTelemetry AspNetCore | NuGet [1.0.0-beta.8](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.AspNetCore/1.0.0-beta.8) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.AspNetCore-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.8](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.AspNetCore_1.0.0-beta.8/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/) |
-| OpenTelemetry Exporter | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.Exporter/1.0.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.Exporter-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.Exporter_1.0.0/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/) |
+| OpenTelemetry AspNetCore | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.AspNetCore/1.0.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.AspNetCore-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.AspNetCore_1.0.0/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/) |
+| OpenTelemetry Exporter | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.Exporter/1.1.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.Exporter-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.Exporter_1.1.0/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/) |
| Personalizer | NuGet [2.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.Personalizer/2.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.Personalizer-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [2.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Personalizer_2.0.0-beta.2/sdk/personalizer/Azure.AI.Personalizer/) |
| Purview Account | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.Purview.Account/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.Purview.Account-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Purview.Account_1.0.0-beta.1/sdk/purview/Azure.Analytics.Purview.Account/) |
| Purview Administration | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.Purview.Administration/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.Purview.Administration-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Purview.Administration_1.0.0-beta.1/sdk/purview/Azure.Analytics.Purview.Administration/) |
diff --git a/docs/azure/includes/dotnet-new.md b/docs/azure/includes/dotnet-new.md
index 46c8982186ea8..85645f083ec1b 100644
--- a/docs/azure/includes/dotnet-new.md
+++ b/docs/azure/includes/dotnet-new.md
@@ -58,8 +58,8 @@
| Monitor Ingestion | NuGet [1.1.1](https://www.nuget.org/packages/Azure.Monitor.Ingestion/1.1.1) | [docs](/dotnet/api/overview/azure/Monitor.Ingestion-readme) | GitHub [1.1.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.Ingestion_1.1.1/sdk/monitor/Azure.Monitor.Ingestion/) |
| Monitor Query | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Monitor.Query/1.2.0)
NuGet [1.3.0-beta.1](https://www.nuget.org/packages/Azure.Monitor.Query/1.3.0-beta.1) | [docs](/dotnet/api/overview/azure/Monitor.Query-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.Query_1.2.0/sdk/monitor/Azure.Monitor.Query/)
GitHub [1.3.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.Query_1.3.0-beta.1/sdk/monitor/Azure.Monitor.Query/) |
| OpenAI Inference | NuGet [1.0.0-beta.9](https://www.nuget.org/packages/Azure.AI.OpenAI/1.0.0-beta.9) | [docs](/dotnet/api/overview/azure/AI.OpenAI-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.9](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.OpenAI_1.0.0-beta.9/sdk/openai/Azure.AI.OpenAI/) |
-| OpenTelemetry AspNetCore | NuGet [1.0.0-beta.8](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.AspNetCore/1.0.0-beta.8) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.AspNetCore-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.8](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.AspNetCore_1.0.0-beta.8/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/) |
-| OpenTelemetry Exporter | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.Exporter/1.0.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.Exporter-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.Exporter_1.0.0/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/) |
+| OpenTelemetry AspNetCore | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.AspNetCore/1.0.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.AspNetCore-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.AspNetCore_1.0.0/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/) |
+| OpenTelemetry Exporter | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Monitor.OpenTelemetry.Exporter/1.1.0) | [docs](/dotnet/api/overview/azure/Monitor.OpenTelemetry.Exporter-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Monitor.OpenTelemetry.Exporter_1.1.0/sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/) |
| Personalizer | NuGet [2.0.0-beta.2](https://www.nuget.org/packages/Azure.AI.Personalizer/2.0.0-beta.2) | [docs](/dotnet/api/overview/azure/AI.Personalizer-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [2.0.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Personalizer_2.0.0-beta.2/sdk/personalizer/Azure.AI.Personalizer/) |
| Purview Account | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.Purview.Account/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.Purview.Account-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Purview.Account_1.0.0-beta.1/sdk/purview/Azure.Analytics.Purview.Account/) |
| Purview Administration | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.Purview.Administration/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.Purview.Administration-readme?view=azure-dotnet-preview&preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.Purview.Administration_1.0.0-beta.1/sdk/purview/Azure.Analytics.Purview.Administration/) |
diff --git a/docs/core/compatibility/core-libraries/5.0/code-access-security-apis-obsolete.md b/docs/core/compatibility/core-libraries/5.0/code-access-security-apis-obsolete.md
index 5145586ea3ea9..83006fb85b0ff 100644
--- a/docs/core/compatibility/core-libraries/5.0/code-access-security-apis-obsolete.md
+++ b/docs/core/compatibility/core-libraries/5.0/code-access-security-apis-obsolete.md
@@ -146,9 +146,9 @@ Due to CAS's deprecation, the [supporting infrastructure was not brought forward
```xml
- net5.0
-
- $(NoWarn);SYSLIB0003
+ net5.0
+
+ $(NoWarn);SYSLIB0003
```
diff --git a/docs/core/diagnostics/built-in-metrics-aspnetcore.md b/docs/core/diagnostics/built-in-metrics-aspnetcore.md
index a9b1c7f451311..40a323981b775 100644
--- a/docs/core/diagnostics/built-in-metrics-aspnetcore.md
+++ b/docs/core/diagnostics/built-in-metrics-aspnetcore.md
@@ -11,6 +11,9 @@ This article describes the metrics built-in for ASP.NET Core produced using the
API. For a listing of metrics based on the older [EventCounters](event-counters.md) API,
see [here](available-counters.md).
+> [!TIP]
+> For more information about how to collect, report, enrich, and test ASP.NET Core metrics, see [Using ASP.NET Core metrics](/aspnet/core/log-mon/metrics/metrics).
+
- [Meter: `Microsoft.AspNetCore.Hosting`](#meter-microsoftaspnetcorehosting)
- [Instrument: `http.server.request.duration`](#instrument-httpserverrequestduration)
- [Instrument: `http.server.active_requests`](#instrument-httpserveractive_requests)
diff --git a/docs/core/project-sdk/msbuild-props.md b/docs/core/project-sdk/msbuild-props.md
index 1ab63cab1fa20..d7cfc7e9f3fb9 100644
--- a/docs/core/project-sdk/msbuild-props.md
+++ b/docs/core/project-sdk/msbuild-props.md
@@ -239,7 +239,7 @@ This property was introduced in .NET 6.
### EnablePackageValidation
-The `EnablePackageValidation` property enables a series of validations on the package after the `pack` task. For more information, see [package validation](../../fundamentals/package-validation/overview.md).
+The `EnablePackageValidation` property enables a series of validations on the package after the `pack` task. For more information, see [package validation](../../fundamentals/apicompat/package-validation/overview.md).
```xml
diff --git a/docs/core/tutorials/publishing-with-visual-studio-code.md b/docs/core/tutorials/publishing-with-visual-studio-code.md
index ecc81844efdfd..ee63b14a6c46a 100644
--- a/docs/core/tutorials/publishing-with-visual-studio-code.md
+++ b/docs/core/tutorials/publishing-with-visual-studio-code.md
@@ -196,7 +196,7 @@ In the following steps, you'll look at the files created by the publish process.
1. On Windows or Linux, run the app by using the executable.
- 1. On Windows, enter `.\HelloWorld.exe` and press Enter.
+ 1. On Windows, enter `.\HelloWorld.exe` and press Enter. On Windows with the Bash terminal, enter `./HelloWorld.exe`.
1. On Linux, enter `./HelloWorld` and press Enter.
diff --git a/docs/core/whats-new/dotnet-6.md b/docs/core/whats-new/dotnet-6.md
index 7692219d1756f..a38750c420a82 100644
--- a/docs/core/whats-new/dotnet-6.md
+++ b/docs/core/whats-new/dotnet-6.md
@@ -215,7 +215,7 @@ In *preview* is the ability to use operators on generic types in .NET 6. .NET 6
## NuGet package validation
-If you're a NuGet library developer, new [package-validation tooling](../../fundamentals/package-validation/overview.md) enables you to validate that your packages are consistent and well-formed. You can determine if:
+If you're a NuGet library developer, new [package-validation tooling](../../fundamentals/apicompat/package-validation/overview.md) enables you to validate that your packages are consistent and well-formed. You can determine if:
- There are any breaking changes across package versions.
- The package has the same set of public APIs for all runtime-specific implementations.
diff --git a/docs/fundamentals/apicompat/global-tool.md b/docs/fundamentals/apicompat/global-tool.md
new file mode 100644
index 0000000000000..69bee1479b128
--- /dev/null
+++ b/docs/fundamentals/apicompat/global-tool.md
@@ -0,0 +1,188 @@
+---
+title: Microsoft.DotNet.ApiCompat.Tool global tool
+description: Learn about the Microsoft.DotNet.ApiCompat.Tool global tool, which performs API compatibility checks on assemblies and packages.
+ms.date: 11/29/2023
+---
+
+# Microsoft.DotNet.ApiCompat.Tool global tool
+
+The Microsoft.DotNet.ApiCompat.Tool tool performs API compatibility checks on assemblies and packages. The tool has two modes:
+
+- Compare a package against a baseline package.
+- Compare an assembly against a baseline assembly.
+
+## Install
+
+To install the tool, run the following command.
+
+```dotnetcli
+dotnet tool install --global Microsoft.DotNet.ApiCompat.Tool
+```
+
+For more information about installing global tools, see [Install a global tool](../../core/tools/global-tools.md#install-a-global-tool).
+
+## Usage
+
+```dotnetcli
+Microsoft.DotNet.ApiCompat.Tool [command] [options]
+```
+
+-or-
+
+```dotnetcli
+apicompat [command] [options]
+```
+
+## Commands
+
+- **`package | --package `**
+
+ Validates the compatibility of package assets. If unspecified, the tool compares assemblies. `` specifies the path to the package file.
+
+## Options
+
+Some options apply to both assembly and package validation. Others apply to [assemblies only](#assembly-specific-options) or [packages only](#package-specific-options).
+
+### General options
+
+- **`--version`**
+
+ Shows version information.
+
+- **`--generate-suppression-file`**
+
+ Generates a compatibility suppression file.
+
+- **`--preserve-unnecessary-suppressions`**
+
+ Preserves unnecessary suppressions when regenerating the suppression file.
+
+- **`--permit-unnecessary-suppressions`**
+
+ Permits unnecessary suppressions in the suppression file.
+
+- **`--suppression-file `**
+
+ Specifies the path to one or more suppression files to read from.
+
+- **`--suppression-output-file `**
+
+ Specifies the path to a suppression file to write to when `--generate-suppression-file` is specified.
+
+- **`--noWarn `**
+
+ Specifies the specific diagnostic IDs to suppress. For example, `"$(NoWarn);PKV0001"`.
+
+- **`--respect-internals`**
+
+ Checks both `internal` and `public` APIs.
+
+- **`--roslyn-assemblies-path `**
+
+ Specifies the path to the directory that contains the Microsoft.CodeAnalysis assemblies.
+
+- **`-v, --verbosity [high|low|normal]`**
+
+ Controls the log level verbosity. Allowable values are `high`, `normal`, and `low`. The default is `normal`.
+
+- **`--enable-rule-attributes-must-match`**
+
+ Enables the rule that checks if attributes match.
+
+- **`--exclude-attributes-file `**
+
+ Specifies the path to one or more attribute exclusion files. These files contains types in [DocId](../../csharp/language-reference/xmldoc/index.md#id-strings) format.
+
+- **`--enable-rule-cannot-change-parameter-name`**
+
+ Enables the rule that checks whether parameter names have changed in public methods.
+
+### Assembly-specific options
+
+These options are only applicable when assemblies are compared.
+
+- **`-l, --left, --left-assembly `**
+
+ Specifies the path to one or more assemblies that serve as the *left side* to compare. This option is required when comparing assemblies.
+
+- **`-r, --right, --right-assembly`**
+
+ Specifies the path to one or more assemblies that serve as the *right side* to compare. This option is required when comparing assemblies.
+
+- **`--strict-mode`**
+
+ Performs API compatibility checks in strict mode.
+
+- **`--left-assembly-references, --lref `**
+
+ Specifies the paths to assembly references or the underlying directories for the *left side*. Separate multiple values with a comma.
+
+- **`--right-assembly-references, --rref `**
+
+ Specifies the paths to assembly references or the underlying directories for the *right side*. Separate multiple values with a comma.
+
+- **`--create-work-item-per-assembly`**
+
+ Enqueues a work item for the specified *left* and *right* assemblies.
+
+- **`--left-assemblies-transformation-pattern `**
+
+ Specifies a transformation pattern for the *left side* assemblies.
+
+- **`--right-assemblies-transformation-pattern `**
+
+ Specifies a transformation pattern for the *right side* assemblies.
+
+### Package-specific options
+
+These options are only applicable when packages are compared.
+
+- **`--baseline-package`**
+
+ Specifies the path to a baseline package to validate against the current package.
+
+- **`--runtime-graph`**
+
+ Specifies the path to the runtime graph to read from.
+
+- **`--run-api-compat`**
+
+ Performs API compatibility checks on the package assets. The default is `true`.
+
+- **`--enable-strict-mode-for-compatible-tfms`**
+
+ Validates API compatibility in strict mode for contract and implementation assemblies for all compatible target frameworks. The default is `true`.
+
+- **`--enable-strict-mode-for-compatible-frameworks-in-package`**
+
+ Validates API compatibility in strict mode for assemblies that are compatible based on their target framework.
+
+- **`--enable-strict-mode-for-baseline-validation`**
+
+ Validates API compatibility in strict mode for package baseline checks.
+
+- **`--package-assembly-references`**
+
+ Specifies the paths to assembly references or their underlying directories for a specific target framework in the package. Separate multiple values with a comma.
+
+- **`--baseline-package-assembly-references`**
+
+ Specifies the paths to assembly references or their underlying directories for a specific target framework in the *baseline* package. Separate multiple values with a comma.
+
+- **`--baseline-package-frameworks-to-ignore`**
+
+ Specifies the set of target frameworks to ignore from the baseline package. The framework string must exactly match the folder name in the baseline package.
+
+## Example
+
+The following command compares the current and baseline versions of an assembly.
+
+```dotnetcli
+apicompat --left bin\Release\net8.0\LibApp5.dll --right bin\Release\net8.0\LibApp5-baseline.dll
+```
+
+The following command compares the current and baseline versions of a package.
+
+```dotnetcli
+apicompat package "bin\Release\LibApp5.1.0.0.nupkg" --baseline-package "bin\Release\LibApp5.2.0.0.nupkg"
+```
diff --git a/docs/fundamentals/package-validation/baseline-version-validator.md b/docs/fundamentals/apicompat/package-validation/baseline-version-validator.md
similarity index 94%
rename from docs/fundamentals/package-validation/baseline-version-validator.md
rename to docs/fundamentals/apicompat/package-validation/baseline-version-validator.md
index eb9b0875039a2..cb448c0f625b0 100644
--- a/docs/fundamentals/package-validation/baseline-version-validator.md
+++ b/docs/fundamentals/apicompat/package-validation/baseline-version-validator.md
@@ -56,7 +56,7 @@ C:\Program Files\dotnet\sdk\6.0.413\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET
![BaselineVersion](media/baseline-version.png)
-You realize that while this is not a [source breaking change](../../standard/library-guidance/breaking-changes.md#source-breaking-change), it is a [binary breaking change](../../standard/library-guidance/breaking-changes.md#binary-breaking-change). You solve this problem by adding a new overload instead of adding a parameter to the existing method:
+You realize that while this is not a [source breaking change](../../../standard/library-guidance/breaking-changes.md#source-breaking-change), it is a [binary breaking change](../../../standard/library-guidance/breaking-changes.md#binary-breaking-change). You solve this problem by adding a new overload instead of adding a parameter to the existing method:
```csharp
public static HttpClient Connect(string url)
diff --git a/docs/fundamentals/package-validation/compatible-framework-in-package-validator.md b/docs/fundamentals/apicompat/package-validation/compatible-framework-in-package-validator.md
similarity index 99%
rename from docs/fundamentals/package-validation/compatible-framework-in-package-validator.md
rename to docs/fundamentals/apicompat/package-validation/compatible-framework-in-package-validator.md
index 1d0e2af8754bf..d117174f4fe29 100644
--- a/docs/fundamentals/package-validation/compatible-framework-in-package-validator.md
+++ b/docs/fundamentals/apicompat/package-validation/compatible-framework-in-package-validator.md
@@ -35,7 +35,7 @@ You've written the following code:
You then try to pack the project (using either `dotnet pack` or Visual Studio), and it fails with the following error:
-```
+```dotnetcli
D:\demo>dotnet pack
Microsoft (R) Build Engine version 17.0.0-preview-21460-01+8f208e609 for .NET
Copyright (C) Microsoft Corporation. All rights reserved.
diff --git a/docs/fundamentals/package-validation/compatible-framework-validator.md b/docs/fundamentals/apicompat/package-validation/compatible-framework-validator.md
similarity index 100%
rename from docs/fundamentals/package-validation/compatible-framework-validator.md
rename to docs/fundamentals/apicompat/package-validation/compatible-framework-validator.md
diff --git a/docs/fundamentals/package-validation/diagnostic-ids.md b/docs/fundamentals/apicompat/package-validation/diagnostic-ids.md
similarity index 92%
rename from docs/fundamentals/package-validation/diagnostic-ids.md
rename to docs/fundamentals/apicompat/package-validation/diagnostic-ids.md
index 43f103a7c16fa..54b86f87baf15 100644
--- a/docs/fundamentals/package-validation/diagnostic-ids.md
+++ b/docs/fundamentals/apicompat/package-validation/diagnostic-ids.md
@@ -1,13 +1,22 @@
---
description: A reference for package validation diagnostic IDs.
title: "Package Validation Diagnostics IDs"
-ms.date: 11/03/2021
+ms.date: 11/27/2023
ms.topic: error-reference
---
-# Error codes returned by package validation
+# Package validation error codes
This reference article lists all the error codes generated by package validation.
+## How to suppress
+
+You can suppress individual diagnostic IDs in either of the following ways:
+
+- Via a suppression file.
+- Via the [`NoWarn`](../../../csharp/language-reference/compiler-options/errors-warnings.md#nowarn) compiler flag, either per package or globally.
+
+For more information, see [Suppress compatibility errors](overview.md#suppress-compatibility-errors).
+
## List of error codes
| Diagnostic ID | Description |Recommended action|
diff --git a/docs/fundamentals/package-validation/media/baseline-version-successful.png b/docs/fundamentals/apicompat/package-validation/media/baseline-version-successful.png
similarity index 100%
rename from docs/fundamentals/package-validation/media/baseline-version-successful.png
rename to docs/fundamentals/apicompat/package-validation/media/baseline-version-successful.png
diff --git a/docs/fundamentals/package-validation/media/baseline-version.png b/docs/fundamentals/apicompat/package-validation/media/baseline-version.png
similarity index 100%
rename from docs/fundamentals/package-validation/media/baseline-version.png
rename to docs/fundamentals/apicompat/package-validation/media/baseline-version.png
diff --git a/docs/fundamentals/package-validation/media/compatible-frameworks-successful.png b/docs/fundamentals/apicompat/package-validation/media/compatible-frameworks-successful.png
similarity index 100%
rename from docs/fundamentals/package-validation/media/compatible-frameworks-successful.png
rename to docs/fundamentals/apicompat/package-validation/media/compatible-frameworks-successful.png
diff --git a/docs/fundamentals/package-validation/media/compatible-frameworks.png b/docs/fundamentals/apicompat/package-validation/media/compatible-frameworks.png
similarity index 100%
rename from docs/fundamentals/package-validation/media/compatible-frameworks.png
rename to docs/fundamentals/apicompat/package-validation/media/compatible-frameworks.png
diff --git a/docs/fundamentals/package-validation/media/multiple-runtimes-successful.png b/docs/fundamentals/apicompat/package-validation/media/multiple-runtimes-successful.png
similarity index 100%
rename from docs/fundamentals/package-validation/media/multiple-runtimes-successful.png
rename to docs/fundamentals/apicompat/package-validation/media/multiple-runtimes-successful.png
diff --git a/docs/fundamentals/package-validation/media/multiple-runtimes.png b/docs/fundamentals/apicompat/package-validation/media/multiple-runtimes.png
similarity index 100%
rename from docs/fundamentals/package-validation/media/multiple-runtimes.png
rename to docs/fundamentals/apicompat/package-validation/media/multiple-runtimes.png
diff --git a/docs/fundamentals/package-validation/overview.md b/docs/fundamentals/apicompat/package-validation/overview.md
similarity index 88%
rename from docs/fundamentals/package-validation/overview.md
rename to docs/fundamentals/apicompat/package-validation/overview.md
index 0caee050587cf..47d4a34ae468f 100644
--- a/docs/fundamentals/package-validation/overview.md
+++ b/docs/fundamentals/apicompat/package-validation/overview.md
@@ -20,7 +20,7 @@ Package validation tooling allows library developers to validate that their pack
## Enable package validation
-You enable package validation in your .NET project by setting the [`EnablePackageValidation` property](../../core/project-sdk/msbuild-props.md#enablepackagevalidation) to `true`.
+You enable package validation in your .NET project by setting the [`EnablePackageValidation` property](../../../core/project-sdk/msbuild-props.md#enablepackagevalidation) to `true`.
```xml
@@ -72,3 +72,15 @@ The suppression file looks like this.
- `Right` specifies the right operand of an APICompat comparison.
- `IsBaselineSuppression`: set to `true` to apply the suppression to a baseline validation; otherwise, set to `false`.
+
+You can also suppress individual diagnostic IDs via the [`NoWarn`](../../../csharp/language-reference/compiler-options/errors-warnings.md#nowarn) compiler flag, either per package or globally.
+
+```xml
+
+
+ ...
+
+ $(NoWarn);PKV0001
+
+
+```
diff --git a/docs/navigate/tools-diagnostics/toc.yml b/docs/navigate/tools-diagnostics/toc.yml
index 016b6481f8f35..fe1b9a91664c0 100644
--- a/docs/navigate/tools-diagnostics/toc.yml
+++ b/docs/navigate/tools-diagnostics/toc.yml
@@ -1796,16 +1796,20 @@ items:
- name: SYSLIB1220-SYSLIB1229
href: ../../fundamentals/syslib-diagnostics/syslib1220-1229.md
displayProperty: syslib1220, syslib1221, syslib1222, syslib1223, syslib1224, syslib1225, syslib1226, syslib1227, syslib1228, syslib1229
- - name: Package validation
+ - name: API compatibility
items:
- - name: Get started
- displayName: package validation
- href: ../../fundamentals/package-validation/overview.md
- - name: Baseline package validator
- href: ../../fundamentals/package-validation/baseline-version-validator.md
- - name: Compatible framework in package validator
- href: ../../fundamentals/package-validation/compatible-framework-in-package-validator.md
- - name: Compatible framework validator
- href: ../../fundamentals/package-validation/compatible-framework-validator.md
- - name: Diagnostic IDs
- href: ../../fundamentals/package-validation/diagnostic-ids.md
+ - name: Package validation
+ items:
+ - name: Get started
+ displayName: package validation
+ href: ../../fundamentals/apicompat/package-validation/overview.md
+ - name: Baseline package validator
+ href: ../../fundamentals/apicompat/package-validation/baseline-version-validator.md
+ - name: Compatible framework in package validator
+ href: ../../fundamentals/apicompat/package-validation/compatible-framework-in-package-validator.md
+ - name: Compatible framework validator
+ href: ../../fundamentals/apicompat/package-validation/compatible-framework-validator.md
+ - name: Diagnostic IDs
+ href: ../../fundamentals/apicompat/package-validation/diagnostic-ids.md
+ - name: Microsoft.DotNet.ApiCompat.Tool global tool
+ href: ../../fundamentals/apicompat/global-tool.md
diff --git a/docs/whats-new/dotnet-7-docs.md b/docs/whats-new/dotnet-7-docs.md
index 0951417c124f6..ddbcdbe430e96 100644
--- a/docs/whats-new/dotnet-7-docs.md
+++ b/docs/whats-new/dotnet-7-docs.md
@@ -148,7 +148,7 @@ Welcome to what's new in the .NET docs for the .NET 7 release. This article list
- Add missing code-style rules
- Add IDE0160 and IDE0161.
- [.NET runtime contention events](../fundamentals/diagnostics/runtime-contention-events.md) - Update the doc with the new version of ContentionStart
-- [Error codes returned by package validation](../fundamentals/package-validation/diagnostic-ids.md)
+- [Error codes returned by package validation](../fundamentals/apicompat/package-validation/diagnostic-ids.md)
- add docs for diagnostics CP0012 and CP0013
- add docs for diagnostics CP0010 and CP0011
- [.NET regular expressions](../standard/base-types/regular-expressions.md) - Ported as conceptual article from .NET dev blog: `Regex` enhancements with .NET 7