diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md
new file mode 100644
index 000000000..344d2e2ad
--- /dev/null
+++ b/.github/copilot-instructions.md
@@ -0,0 +1,56 @@
+# .NET Documentation Guidelines
+
+## Disclosure
+
+For any Markdown files generated by AI, always disclose that they were created with the assistance of AI. Add the following frontmatter key/value pair:
+
+```markdown
+ai-usage: ai-generated
+```
+
+## Terminology
+
+Unless otherwise specified, all .NET content refers to modern .NET (not .NET Framework).
+
+## Writing Style
+
+Follow [Microsoft Writing Style Guide](https://learn.microsoft.com/en-us/style-guide/welcome/) with these specifics:
+
+### Voice and Tone
+
+- Active voice, second person addressing reader directly.
+- Conversational tone with contractions.
+- Present tense for instructions/descriptions.
+- Imperative mood for instructions ("Call the method" not "You should call the method").
+- Use "might" instead of "may" for possibility.
+- Use "can" instead of "may" for permissible actions.
+- Avoid "we"/"our" referring to documentation authors or product teams.
+
+### Structure and Format
+
+- Sentence case headings (no gerunds in titles).
+- Be concise, break up long sentences.
+- Oxford comma in lists.
+- Use bullets for unordered lists.
+- Number all ordered list items as "1." (not sequential numbering like "1.", "2.", "3.", etc.)
+- Ordered and unordered lists should use complete sentences with proper punctuation, ending with a period if it's more than three words.
+- Avoid "etc." or "and so on" - provide complete lists or use "for example".
+- Use "for example" instead of "e.g.".
+- Use "that is" instead of "i.e.".
+- No consecutive headings without content between them.
+
+### Formatting Conventions
+
+- **Bold** for UI elements.
+- `Code style` for file names, folders, custom types, non-localizable text.
+- Raw URLs in angle brackets.
+- Use relative links for files in this repo.
+- Remove `https://learn.microsoft.com/en-us` from learn.microsoft.com links.
+
+## File Naming
+
+New Markdown files: lowercase with hyphens, omit filler words (the, a, etc.).
+
+## Special Cases
+
+- When you (Copilot) are assigned an issue in GitHub, after you've completed your work and the workflows (status checks) have run, check to make sure there are no build warnings under the OpenPublishing.Build status check. If there are, open the build report (under View Details) and resolve any build warnings you introduced.
diff --git a/docs.sln b/docs.sln
new file mode 100644
index 000000000..a90cea1da
--- /dev/null
+++ b/docs.sln
@@ -0,0 +1,38 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 18
+VisualStudioVersion = 18.3.11122.13
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "docs", "docs\docs.csproj", "{718966AB-D840-C99F-BC8C-757012BE68AA}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{C2962E4E-20FC-4C00-858E-D0C62611CBFB}"
+ ProjectSection(SolutionItems) = preProject
+ .gitignore = .gitignore
+ .openpublishing.publish.config.json = .openpublishing.publish.config.json
+ .openpublishing.redirection.json = .openpublishing.redirection.json
+ CONTRIBUTING.md = CONTRIBUTING.md
+ global.json = global.json
+ LICENSE = LICENSE
+ LICENSE-CODE = LICENSE-CODE
+ README.md = README.md
+ ThirdPartyNotices = ThirdPartyNotices
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {718966AB-D840-C99F-BC8C-757012BE68AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {718966AB-D840-C99F-BC8C-757012BE68AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {718966AB-D840-C99F-BC8C-757012BE68AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {718966AB-D840-C99F-BC8C-757012BE68AA}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {C4A337AF-69A4-496C-97FF-300C3489A718}
+ EndGlobalSection
+EndGlobal
diff --git a/docs/TOC.md b/docs/TOC.md
index 06e65abde..a49bb6178 100644
--- a/docs/TOC.md
+++ b/docs/TOC.md
@@ -17,6 +17,8 @@
### [nuget.exe CLI](consume-packages/install-use-packages-nuget-cli.md)
### [Package Manager Console (PowerShell)](consume-packages/install-use-packages-powershell.md)
## Configure NuGet
+### [Visual Studio options](consume-packages/nuget-visual-studio-options.md)
+### [NuGet HTTPS Everywhere](consume-packages/nuget-https-everywhere.md)
### Package restore options
#### [Restore packages](consume-packages/package-restore.md)
#### [Troubleshooting](consume-packages/package-restore-troubleshooting.md)
@@ -77,6 +79,8 @@
## [Best practices for a secure software supply chain](concepts/Security-Best-Practices.md)
## [MSBuild .props and .targets](concepts/MSBuild-props-and-targets.md)
## [Troubleshooting Installed Packages](concepts/troubleshooting-installed-packages.md)
+## [MCP servers in NuGet packages](concepts/nuget-mcp.md)
+## [Configuring the NuGet MCP Server](concepts/NuGet-MCP-Server.md)
# Reference
## [.nuspec](reference/nuspec.md)
## [nuget.config file](reference/nuget-config-file.md)
@@ -153,6 +157,7 @@
### [NU1011](reference/errors-and-warnings/NU1011.md)
### [NU1012](reference/errors-and-warnings/NU1012.md)
### [NU1014](reference/errors-and-warnings/NU1014.md)
+### [NU1015](reference/errors-and-warnings/NU1015.md)
### [NU1100](reference/errors-and-warnings/NU1100.md)
### [NU1101](reference/errors-and-warnings/NU1101.md)
### [NU1102](reference/errors-and-warnings/NU1102.md)
diff --git a/docs/api/NuGet-Protocols.md b/docs/api/NuGet-Protocols.md
index 0a027b5c2..ab00ae0cd 100644
--- a/docs/api/NuGet-Protocols.md
+++ b/docs/api/NuGet-Protocols.md
@@ -4,7 +4,7 @@ description: The evolving nuget.org protocols to interact with NuGet clients.
author: anangaur
ms.author: anangaur
ms.date: 01/21/2021
-ms.topic: conceptual
+ms.topic: article
ms.reviewer: kraigb
---
diff --git a/docs/api/implementation-guide.md b/docs/api/implementation-guide.md
index 8168aa909..6bc08aa28 100644
--- a/docs/api/implementation-guide.md
+++ b/docs/api/implementation-guide.md
@@ -4,7 +4,7 @@ description: Guidelines and recommendations to anyone implementing the NuGet Ser
author: zivkan
ms.author: zivkan
ms.date: 07/29/2023
-ms.topic: conceptual
+ms.topic: article
---
# NuGet Server Implementation Guide
@@ -106,9 +106,15 @@ Nuget.org provides vulnerability data for all GitHub reviewed advisories from th
If your package repository is hosting first-party packages, and you would like to provide vulnerability information to customers using your own feed, but don't yet have any disclosed package vulnerabilities, you should provide a [vulnerability index](./vulnerability-info.md#vulnerability-index) with one or more [vulnerability pages](./vulnerability-info.md#vulnerability-page) whose contents are an empty JSON array (`[]`).
-If your package repository is intended to be used by apps as the default repository (instead of nuget.org), you can use nuget.org's vulnerability data.
-One option is to use nuget.org's vulnerability index URL in your service index.
-Another option is to periodically check nuget.org's `VulnerabilityInfo` index, and download any changed pages to mirror locally.
+#### Reusing nuget.org's vulnerability data
+
+NuGet does not require that resources in the [service index](./service-index.md), or [the vulnerability index](./vulnerability-info.md#vulnerability-index), must be on the same server as the service index itself.
+However, there are several reasons why some companies choose to block nuget.org at the firewall, or have on-prem feeds on a disconnected network.
+To avoid connectivity issues, we recommend serving vulnerability data from your own web app, so that NuGet clients only make HTTP connections to the host the feed is installed on.
+
+✔️ DO cache or proxy the vulnerability pages in your own web app
+
+❌ DO NOT advertise api.nuget.org in your service index or vulnerability index without a configuration to turn this off.
## `packageTypes` search query
@@ -144,4 +150,4 @@ If you wish to host search, or indeed any other NuGet API resource, on different
## Enable embedded README downloads
-A [new resource](./readme-template-resource.md) was documented for constructing a URL that can be used to download a README for a given package. This will allow client, like the Package Management UI in VS, to display the embedded README for packages which haven't been previously installed by the user. The client will construct this URL and attempt to download the README, using the response to the request to determine if a README is available. This means servers should expect multiple requests to the constructed endpoint as users navigate the PM UI.
\ No newline at end of file
+A [new resource](./readme-template-resource.md) was documented for constructing a URL that can be used to download a README for a given package. This will allow client, like the Package Management UI in VS, to display the embedded README for packages which haven't been previously installed by the user. The client will construct this URL and attempt to download the README, using the response to the request to determine if a README is available. This means servers should expect multiple requests to the constructed endpoint as users navigate the PM UI.
diff --git a/docs/api/service-index.md b/docs/api/service-index.md
index faacd9351..369bdbc16 100644
--- a/docs/api/service-index.md
+++ b/docs/api/service-index.md
@@ -65,6 +65,10 @@ There is no requirement that each resource has a unique `@id` or `@type`. It is
determine which resource to prefer over another. One possible implementation is that resources of the same or
compatible `@type` can be used in a round-robin fashion in case of connection failure or server error.
+A resource can use a different host or domain than the service index, but this may cause issues in environments with strict network rules.
+In particular, if your service index adds resources that point directly to nuget.org (rather than proxying or caching through your own feed), your feed will not work where access to nuget.org is blocked.
+If your feed is going to delegate particular resources to nuget.org, we recommend adding a configuration so that when your feed is deployed, the direct nuget.org reference can be removed from the service index.
+
### Sample request
```
diff --git a/docs/api/tools-json.md b/docs/api/tools-json.md
index 692e45b0e..f42b5c70c 100644
--- a/docs/api/tools-json.md
+++ b/docs/api/tools-json.md
@@ -4,7 +4,7 @@ description: The endpoint for
author: jver
ms.author: jver
ms.date: 08/16/2018
-ms.topic: conceptual
+ms.topic: article
ms.reviewer: kraigb
---
diff --git a/docs/api/vulnerability-info.md b/docs/api/vulnerability-info.md
index c76ea9d43..abddc2eaf 100644
--- a/docs/api/vulnerability-info.md
+++ b/docs/api/vulnerability-info.md
@@ -33,6 +33,9 @@ The data file schema does not allow for modification or redaction of known vulne
Therefore if a server's vulnerability data source (for example the [GitHub Advisories Database](https://github.com/advisories)) modifies an existing advisory, the NuGet server must modify the page that the vulnerability information was previously reported.
One way to achieve this with the suggested partition scheme is to treat all vulnerability modifications and deletions as a trigger to regenerate the complete `base.json` file, and empty `updates.json`.
+If you intend to use nuget.org's vulnerability data in your own NuGet server implementation, you should take into consideration developers who do not have direct access to nuget.org.
+[See our implementation guide for more details](./implementation-guide.md#reusing-nugetorgs-vulnerability-data).
+
## Versioning
The following `@type` values are used:
diff --git a/docs/archive/project-json-and-uwp.md b/docs/archive/project-json-and-uwp.md
index 0d88aa35a..898f98a53 100644
--- a/docs/archive/project-json-and-uwp.md
+++ b/docs/archive/project-json-and-uwp.md
@@ -4,7 +4,7 @@ description: Description of how the project.json file is used to track NuGet dep
author: JonDouglas
ms.author: jodou
ms.date: 07/17/2017
-ms.topic: conceptual
+ms.topic: article
---
# project.json and UWP
@@ -12,6 +12,8 @@ ms.topic: conceptual
> [!Important]
> This content is deprecated. Projects should use the PackageReference formats.
> Learn how to [migrate your project.json project to PackageReference](./project-json.md#migrate-projectjson-to-packagereference).
+> Visual Studio 2026 automatically migrates project.json at solution load time.
+> [.NET 10 SDK & NuGet.exe 7.0](../release-notes/NuGet-7.0.md) do not support project.json projects.
This document describes the package structure that employs features in NuGet 3+ (Visual Studio 2015 and later). The `minClientVersion` property of your `.nuspec` can be used to state that you require the features described here by setting it to 3.1.
diff --git a/docs/archive/project-json-impact.md b/docs/archive/project-json-impact.md
index 23aae4fc2..98569678f 100644
--- a/docs/archive/project-json-impact.md
+++ b/docs/archive/project-json-impact.md
@@ -4,7 +4,7 @@ description: Details on how the implementation of project.json in NuGet 3.x affe
author: JonDouglas
ms.author: jodou
ms.date: 01/18/2018
-ms.topic: conceptual
+ms.topic: concept-article
---
# Impact of project.json when creating packages
@@ -12,6 +12,8 @@ ms.topic: conceptual
> [!Important]
> This content is deprecated. Projects should use the PackageReference formats.
> Learn how to [migrate your project.json project to PackageReference](./project-json.md#migrate-projectjson-to-packagereference).
+> Visual Studio 2026 automatically migrates project.json at solution load time.
+> [.NET 10 SDK & NuGet.exe 7.0](../release-notes/NuGet-7.0.md) do not support project.json projects.
The `project.json` system used in NuGet 3+ affects package authors in several ways as described in the following sections.
diff --git a/docs/archive/project-json.md b/docs/archive/project-json.md
index 4b6243821..6e039d251 100644
--- a/docs/archive/project-json.md
+++ b/docs/archive/project-json.md
@@ -12,6 +12,8 @@ ms.topic: reference
> [!Important]
> This content is deprecated. Projects should use the PackageReference formats.
> Learn how to [migrate your project.json project to PackageReference](#migrate-projectjson-to-packagereference).
+> Visual Studio 2026 automatically migrates project.json at solution load time.
+> [.NET 10 SDK & NuGet.exe 7.0](../release-notes/NuGet-7.0.md) do not support project.json projects.
*NuGet 3.x*
@@ -40,15 +42,35 @@ The [`project.lock.json`](#projectlockjson) file (described below) is also used
## Migrate project.json to PackageReference
-The migration between project.json and PackageReference is straightforward. The easiest way to do it to use the built-in migrator in the latest Visual Studio 2022, Update 14.
+The migration between project.json and PackageReference is straightforward.
+
+### Automatic migration in Visual Studio 2026
+
+Visual Studio 2026 and later automatically migrates project.json projects to PackageReference when you open a solution containing project.json projects.
+The migration happens at solution load time:
+
+1. Open a solution containing project.json projects in Visual Studio 2026 or later.
+1. Visual Studio automatically detects project.json files and migrates them to PackageReference format.
+1. To check migration status, open the [Output Window](/visualstudio/ide/output-window) and select Show output from "Package Manager".
+You should see messages like "Migrating project.json project..." followed by "Migration Succeeded" for each project.
+Any errors will appear in the Error List.
+1. A backup of the original project file and project.json file is created in a `Backup` folder in the root of the project directory.
+1. The migration converts all package dependencies to PackageReference format in the project file.
+
+
+### Manual migration in Visual Studio 2022
+
+For Visual Studio 2022 and earlier, you can use the built-in migrator:
1. Load the project.json project in Visual Studio.
1. Go to the solution explorer of the project.json project and find the dependencies node.
-1. Click `Migrate project.json to PackageReference...`!
+1. Right-click and select `Migrate project.json to PackageReference...`

-Alternatively, you may use the [dotnet migrate](/dotnet/core/tools/dotnet-migrate), or do the migration manually by taking all of the content from the project.json file and replacing it with the equivalent [PackageReference syntax](../consume-packages/Package-References-in-Project-Files.md).
+### Alternative migration methods
+
+Alternatively, you may use the [dotnet migrate](/dotnet/core/tools/dotnet-migrate) command-line tool, or do the migration manually by taking all of the content from the project.json file and replacing it with the equivalent [PackageReference syntax](../consume-packages/Package-References-in-Project-Files.md).
## Dependencies
diff --git a/docs/concepts/Auditing-Packages.md b/docs/concepts/Auditing-Packages.md
index 94c2c120f..72d185b5a 100644
--- a/docs/concepts/Auditing-Packages.md
+++ b/docs/concepts/Auditing-Packages.md
@@ -3,8 +3,8 @@ title: Auditing package dependencies for security vulnerabilities
description: How to audit package dependencies for security vulnerabilities and acting on security audit reports.
author: JonDouglas
ms.author: jodou
-ms.topic: conceptual
-ms.date: 05/05/2025
+ms.topic: how-to
+ms.date: 10/01/2025
---
# Auditing package dependencies for security vulnerabilities
@@ -16,8 +16,6 @@ This involves identifying vulnerabilities, evaluating risks, and making recommen
The audit can include a review of the packages themselves, as well as any dependencies and their associated risks.
The goal of the audit is to identify and mitigate any security vulnerabilities that could be exploited by attackers, such as code injection or cross-site scripting attacks.
-We also have a [blog post](https://devblogs.microsoft.com/nuget/nugetaudit-2-0-elevating-security-and-trust-in-package-management/) which discusses our recommended method for taking action when a package with a known vulnerability is found to be used by your project, and tools to help get more information.
-
### Feature availability
| NuGet | .NET SDK | Visual Studio | Feature |
@@ -27,6 +25,7 @@ We also have a [blog post](https://devblogs.microsoft.com/nuget/nugetaudit-2-0-e
| [6.10](../release-notes/NuGet-6.10.md) | N/A | Visual Studio 2022 17.10 | [NuGetAudit](#running-a-security-audit-with-restore) for packages.config|
| [6.11](../release-notes/NuGet-6.11.md) | .NET 8 SDK (8.0.400) | Visual Studio 2022 17.11 | [NuGetAuditSuppress](#excluding-advisories) for PackageReference |
| [6.12](../release-notes/NuGet-6.12.md) | .NET 9 SDK (9.0.100) | Visual Studio 2022 17.12 | [Audit sources](#audit-sources). [NuGetAuditSuppress](#excluding-advisories) for packages.config. |
+| [7.0](../release-notes/NuGet-7.0.md) | .NET 10 SDK (10.0.100) | Visual Studio 2026 | [NuGetAuditMode default changes for .NET 10](#configuring-nuget-audit). [`dotnet package update --vulnerable`](#security-vulnerabilities-found-with-updates) |
## Running a security audit with `restore`
@@ -72,25 +71,13 @@ Note that the [V2 protocol is deprecated](../nuget-org/overview-nuget-org.md#api
```
-Audit sources are available from [NuGet 6.12, .NET 9.0.100 SDK, and Visual Studio 2022 17.12](../release-notes/NuGet-6.12.md).
-Prior to this version, NuGet Audit will only use package sources to download vulnerability information.
-Audit sources are not used by `dotnet list package --vulnerable` at this time.
-
-#### Excluding advisories
-
-You can choose to exclude specific advisories from the audit report by adding a new `NuGetAuditSuppress` MSBuild item for each advisory.
-Define a `NuGetAuditSuppress` item with the `Include=` metadata set to the advisory URL you wish to suppress.
-
-```xml
-
-
-
-```
+**Note**: The table below lists features that support Audit Sources.
-Similar to the other NuGet audit configuration properties, `NuGetAuditSuppress` items can be defined at the project or repository level.
-
-`NuGetAuditSuppress` is available for PackageReference projects starting from [NuGet 6.11, Visual Studio 17.11, and the .NET 8.0.400 SDK](../release-notes/NuGet-6.11.md).
-It is available for packages.config from [Visual Studio 17.12 and NuGet 6.12](../release-notes/NuGet-6.12.md).
+| Introduced In | Feature Supporting Audit Sources |
+| -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
+| [NuGet 6.12, .NET 9.0.100 SDK, and Visual Studio 2022 17.12](../release-notes/NuGet-6.12.md) | Restore |
+| [NuGet 6.14, .NET 9.0.300 SDK](../release-notes/NuGet-6.14.md) | `dotnet package list --vulnerable` |
+| [NuGet 7.0 and Visual Studio 2026](../release-notes/NuGet-7.0.md) | NuGet AuditSources support in the Visual Studio Package Manager UI |
### Warning codes
@@ -110,60 +97,106 @@ Alternatively, if you want to keep low and moderate vulnerabilities as warnings,
> [!NOTE]
> MSBuild properties for message severity such as `NoWarn` and `TreatWarningsAsErrors` are not supported for packages.config projects.
-## Ensure restore audited projects
-
-NuGet in MSBuild 17.13 and .NET 9.0.200 added output properties `RestoreProjectCount`, `RestoreSkippedCount` and `RestoreProjectsAuditedCount` on the restore task.
-This can be used to enforce that audit ran during a restore.
-Note that these output properties are not available with [static graph restore](../reference/msbuild-targets.md#restoring-with-msbuild-static-graph-evaluation).
+#### Excluding advisories
-Since MSBuild is a scripting language, this can be achieved a number of different ways, but also has the same restrictions as MSBuild has.
-One example is to create a file *Directory.Solution.targets* in the same directory as your solution file, whose contents has a target similar to the following.
-Note that *Directory.Build.props* is commonly used, but is imported by projects.
-However, NuGet's restore target and task runs at the solution level, so needs to be in MSBuild's solution extensibility file, not the project/build file.
+You can exclude advisories by adding a new `NuGetAuditSuppress` MSBuild item for each advisory.
+Define a `NuGetAuditSuppress` item with the `Include=` metadata set to the advisory URL you wish to suppress.
```xml
-
-
-
-
-
+
+
+
```
-Depending on your use-case, you may wish to use condition `'$(RestoreProjectCount)' != '$([MSBuild::Add($(RestoreProjectsAuditedCount), $(RestoreSkippedCount))'` on the error message, to account for projects that restore skipped because they were already up to date.
-Similarly, think about if you want this error to happen everywhere, or only in CI pipelines, and what environment variables are defined in your CI environment, and factor this into the target's condition.
-Again, since MSBuild is a scripting language, you can use any of its capabilities to customize your repo however you want.
-Viewing [MSBuild's metaproj](/visualstudio/msbuild/how-to-build-specific-targets-in-solutions-by-using-msbuild-exe#troubleshooting) and [binlogs](/visualstudio/msbuild/msbuild-command-line-reference#switches-for-loggers) are useful to develop and troubleshoot solution level targets.
+Similar to the other NuGet audit configuration properties, `NuGetAuditSuppress` items can be defined at the project or repository level.
-## `dotnet list package --vulnerable`
+`NuGetAuditSuppress` is available for PackageReference projects starting from [NuGet 6.11, Visual Studio 17.11, and the .NET 8.0.400 SDK](../release-notes/NuGet-6.11.md).
+It is available for packages.config from [Visual Studio 17.12 and NuGet 6.12](../release-notes/NuGet-6.12.md).
-Once a project is successfully restored, [`dotnet list package`](/dotnet/core/tools/dotnet-list-package) has a `--vulnerable` argument to filter the packages based on which packages have known vulnerabilities.
-Note that `--include-transitive` is not default, so should be included.
+##### When to exclude advisories
+
+In scenarios where you have analyzed a specific advisory and have determined that it either does not apply to your scenario, or you are comfortable with the risks it imposes, you can choose to exclude specific advisories from the audit report.
+Note that this would completely suppress the advisories, even for packages that share the advisory that may not be part of your project.
+`NuGetAuditSuppress` should be considered a last resort for managing advisories.
## Actions when packages with known vulnerabilities are reported
-We also have a [blog post](https://devblogs.microsoft.com/nuget/nugetaudit-2-0-elevating-security-and-trust-in-package-management/) which discusses our recommended method for taking action when a package with a known vulnerability is found to be used by your project, and tools to help get more information.
+Getting a warning about packages with known vulnerabilities is only part of the process.
+Once discovered, action needs to be taken to remove the potential vulnerability from your solution.
+
+The easiest case is when a package you reference directly has the known vulnerability.
+In this situation, update the package version to one that fixes the vulnerability.
+
+Package vulnerabilities may be reported in both direct and transitive package references.
+The action you take to resolve may be different because of that.
### Security vulnerabilities found with updates
-If security vulnerabilities are found and updates are available for the package, you can either:
+If security vulnerabilities are found and updates are available for the package, you can do one of the following:
- Edit the `.csproj` or other package version location (`Directory.Packages.props`) with a newer version containing a security fix.
- Use the NuGet package manager user interface in Visual Studio to update the individual package.
-- Run the `dotnet add package` command with the respective package ID to update to the latest version.
+- Run the `dotnet package update --vulnerable` command to update all vulnerable packages in a project to the first version without known vulnerabilities.
+- Run the `dotnet package update` or `dotnet package add` commands with the respective package ID to update to the latest version. Use [`dotnet add package` when using .NET 9 or earlier](/dotnet/core/whats-new/dotnet-10/sdk#more-consistent-command-order).
+- Use the NuGet Model Context Protocol (MCP) server that has the ability to update packages in your project to versions that resolve known vulnerabilities.
+See [Fixing package vulnerabilities](NuGet-MCP-Server.md#fixing-package-vulnerabilities) for more information.
#### Transitive Packages
-If a known vulnerability exists in a top-level package's transitive dependencies, you have these options:
+Often a vulnerability will be in a transitive dependency.
+Our recommendation is to prefer updates to packages "closest" to your direct references.
+Though, there's nothing wrong with just upgrading the package with known vulnerability either.
+
+For example, say your project references package A.
+Package A has a dependency on package B, which in turn has a dependency on package C.
+In this example, we'll consider that package C version 1.0.0 has a known vulnerability, fixed in version 2.0.0.
+Our recommendation is to first try upgrading package A.
+If that doesn't resolve the audit warning, then try upgrading package B.
+If that doesn't resolve the audit warning, then upgrade C directly.
+To aid with this, you'll [need to find the transitive package path](#finding-the-transitive-package-path).
+In summary, if a known vulnerability exists in a top-level package's transitive dependencies, you have these options:
+
+- Check if the top-level package contains an update that does not have a transitive vulnerability and update that instead.
+- Update the closest package to your direct references that does not reference a vulnerability.
- Add the fixed package version as a direct package reference. **Note:** Be sure to remove this reference when a new package version update becomes available and be sure to maintain the defined attributes for the expected behavior.
- Use [Central Package Management with the transitive pinning functionality](../consume-packages/Central-Package-Management.md#transitive-pinning).
+ Note that if you pack your project into your own package to share with others, [CPM with transitive pinning will cause packages to become dependencies](../consume-packages/Central-Package-Management.md#transitive-pinning-and-pack), even if your project doesn't directly call APIs on that package.
- [Suppress the advisory](#excluding-advisories) until it can be addressed.
- File an issue in the top-level package's tracker to request an update.
+##### Finding the transitive package path
+
+There are several ways to find the package path.
+Which method you prefer depends on what tools you normally use during your development.
+
+###### dotnet nuget why
+
+On the command line, you can use the [`dotnet nuget why` command](/dotnet/core/tools/dotnet-nuget-why) to understand why transitive packages are being included in your project's package graph.
+
+
+
+###### Visual Studio Solution Explorer
+
+SDK style projects also provide the full package graph under the project's Dependency node.
+It's also searchable!
+Expand search options and enable “search external files”.
+
+
+
+Search the package name, and it will show you all instances under each project's Dependencies node.
+
+
+
+###### Visual Studio NuGet Package Manager UI
+
+When you look at the Installed tab in Visual Studio's package manager UI, when the project uses PackageReference for package management, it will show both direct and transitive packages.
+Currently, this only happens when you manage packages for a project, not for the solution.
+
+If you mouse hover over a package in the package list, the tooltip will include the name of one direct package that has caused that transitive package to be included in the project.
+
+
+
### Security vulnerabilities found with no updates
In the case that a known vulnerability exists in a package without a security fix, you can do the following.
@@ -196,7 +229,67 @@ On NuGet.org, you can navigate to the package details page and click `Report pac
If no security vulnerabilities are found, this means that packages with known vulnerabilities were not found in your package graph at the present moment of time you checked.
Since the advisory database can be updated at any time, we recommend regularly checking your `dotnet restore` output and ensuring the same in your continuous integration process.
-## Summary
+## Running NuGet Audit in CI
+
+### Separating Errors from Warnings with a Dedicated Auditing Pipeline
+
+You can use MSBuild's conditional statements to configure a dedicated CI pipeline for running audits, without audit warnings being treated as errors in other pipelines or on local builds.
+Depending on your CI system and team processes, you can have failed runs of the audit pipeline email the team, or you may have a dashboard where you can show a badge of the most recent run of the pipeline.
-Security auditing features are crucial for maintaining the security and integrity of software projects.
-These features provide you with an additional layer of protection against security vulnerabilities and ensures that you can use open source packages with confidence.
+Like many things in programming, there are multiple ways to achieve the outcome.
+One option is to treat NuGet Audit warnings as errors only in an audit pipeline.
+
+```xml
+
+ NU1900;NU1901;NU1902;NU1903;NU1904;NU1905
+ $(WarningsAsErrors);$(NuGetAuditCodes)
+ $(WarningsNotAsErrors);$(NuGetAuditCodes)
+
+```
+
+Then in your pipeline, you run restore specifying the property used by the condition.
+For example, using GitHub Actions syntax:
+
+```yml
+- name: Restore with NuGet Auditing
+ run: dotnet restore -p:AuditPipeline=true
+```
+
+The property name `AuditPipeline` is only an example, and you can customize it as you wish, as long as the name is the same in both the MSBuild condition and the command line.
+MSBuild also uses environment variables when reading a property that has not yet been defined, so an environment variable is an alternative to the command line parameter.
+
+By using conditions to selectively cause NuGet Audit warnings to fail a restore, you can have a dedicated pipeline to check packages for known vulnerabilities, while preventing new security advisories from blocking your bug fixes at inconvenient times.
+Keeping NuGet Audit warnings enabled for local builds allows developers to get a non-blocking notification about new security advisories and can encourage upgrading package versions to fix the vulnerabilities more quickly than waiting for someone to check the audit pipeline status.
+
+### Ensure restore audited projects
+
+NuGet in MSBuild 17.13 and .NET 9.0.200 added output properties `RestoreProjectCount`, `RestoreSkippedCount` and `RestoreProjectsAuditedCount` on the restore task.
+This can be used to enforce that audit ran during a restore.
+Note that these output properties are not available with [static graph restore](../reference/msbuild-targets.md#restoring-with-msbuild-static-graph-evaluation).
+
+Since MSBuild is a scripting language, this can be achieved a number of different ways, but also has the same restrictions as MSBuild has.
+One example is to create a file *Directory.Solution.targets* in the same directory as your solution file, whose contents has a target similar to the following.
+Note that *Directory.Build.props* is commonly used, but is imported by projects.
+However, NuGet's restore target and task runs at the solution level, so needs to be in MSBuild's solution extensibility file, not the project/build file.
+
+```xml
+
+
+
+
+
+```
+
+Depending on your use-case, you may wish to use condition `'$(RestoreProjectCount)' != '$([MSBuild::Add($(RestoreProjectsAuditedCount), $(RestoreSkippedCount))'` on the error message, to account for projects that restore skipped because they were already up to date.
+Similarly, think about if you want this error to happen everywhere, or only in CI pipelines, and what environment variables are defined in your CI environment, and factor this into the target's condition.
+Again, since MSBuild is a scripting language, you can use any of its capabilities to customize your repo however you want.
+Viewing [MSBuild's metaproj](/visualstudio/msbuild/how-to-build-specific-targets-in-solutions-by-using-msbuild-exe#troubleshooting) and [binlogs](/visualstudio/msbuild/msbuild-command-line-reference#switches-for-loggers) are useful to develop and troubleshoot solution level targets.
+
+## `dotnet list package --vulnerable`
+
+[`dotnet list package`](/dotnet/core/tools/dotnet-list-package) has a `--vulnerable` argument to filter the packages based on which packages have known vulnerabilities.
+Note that `--include-transitive` is not default, so should be included.
diff --git a/docs/concepts/Dependency-Resolution.md b/docs/concepts/Dependency-Resolution.md
index 81cb86f50..97f63ebae 100644
--- a/docs/concepts/Dependency-Resolution.md
+++ b/docs/concepts/Dependency-Resolution.md
@@ -4,7 +4,7 @@ description: Details on the process through which a NuGet package's dependencies
author: JonDouglas
ms.author: jodou
ms.date: 08/14/2017
-ms.topic: conceptual
+ms.topic: article
---
# How NuGet resolves package dependencies
diff --git a/docs/concepts/MSBuild-props-and-targets.md b/docs/concepts/MSBuild-props-and-targets.md
index 10e630270..1f40da97a 100644
--- a/docs/concepts/MSBuild-props-and-targets.md
+++ b/docs/concepts/MSBuild-props-and-targets.md
@@ -4,7 +4,7 @@ description: Describes MSBuild props and targets in NuGet packages
author: nkolev92
ms.author: nikolev
ms.date: 07/13/2022
-ms.topic: conceptual
+ms.topic: article
---
# MSBuild .props and .targets in a package
diff --git a/docs/concepts/NuGet-MCP-Server.md b/docs/concepts/NuGet-MCP-Server.md
new file mode 100644
index 000000000..ccbd97e63
--- /dev/null
+++ b/docs/concepts/NuGet-MCP-Server.md
@@ -0,0 +1,182 @@
+---
+title: Using the NuGet Model Context Protocol (MCP) Server
+description: How to configure and use the NuGet Model Context Protocol (MCP) server.
+author: jeffkl
+ms.author: jeffkl
+ms.topic: conceptual
+ms.date: 10/01/2025
+---
+
+# Using the NuGet Model Context Protocol (MCP) Server
+
+## Requirements
+
+To run the MCP server, you must have **[.NET 10 SDK or later](https://dotnet.microsoft.com/en-us/download/dotnet/10.0)** installed.
+This version of .NET adds a command, `dnx`, which is used to download, install, and run the MCP server from [nuget.org](https://nuget.org).
+
+To verify your .NET version, run the following command in your terminal:
+```bash
+dotnet --info
+```
+
+## Getting started in Visual Studio 2026
+
+In Visual Studio 2026, the NuGet MCP server is built-in but must be enabled once in order to use its functionality.
+
+To enable the NuGet MCP server, follow these steps:
+1. Open Visual Studio 2026.
+1. Open the GitHub Copilot Chat window and make sure you are signed in.
+1. Click the tools icon in the bottom toolbar to bring up the Tools menu.
+1. Find the MCP server named "nuget" and check the box to enable it.
+
+
+
+## Getting started in Visual Studio 2022
+
+> [!NOTE]
+> You must have Visual Studio 2022 17.14 or later in order to configure an MCP server.
+
+In Visual Studio 2022, you must manually add the NuGet MCP server to your configuration.
+There are several configuration files that Visual Studio 2022 uses to define MCP servers.
+See [Use MCP Servers](/visualstudio/ide/mcp-servers) for more information on which file to configure.
+
+Once you have identified the correct configuration file, add the following JSON snippet to your `mcp.json`:
+```json
+{
+ "servers": {
+ "nuget": {
+ "type": "stdio",
+ "command": "dnx",
+ "args": [ "NuGet.Mcp.Server", "--source", "https://api.nuget.org/v3/index.json", "--yes" ]
+ }
+ }
+}
+```
+
+This will configure Visual Studio 2022 to use the latest version of the NuGet MCP server from nuget.org.
+To verify that the MCP server is working correctly, open the GitHub Copilot Chat window and make sure you are signed in.
+Then click the Tools icon in the bottom toolbar to bring up the Tools menu.
+You should see the MCP server named "nuget" in the list of available servers.
+
+
+
+## Getting started in VS Code
+
+To configure the NuGet MCP server in VS Code click the appropriate button below and it will be set up.
+
+[](
+https://vscode.dev/redirect/mcp/install?name=NuGet&config=%7B%22name%22%3A%22NuGet.Mcp.Server%22%2C%22command%22%3A%22dnx%22%2C%22args%22%3A%5B%22NuGet.Mcp.Server%22%2C%22https%3A%2F%2Fapi.nuget.org%2Fv3%2Findex.json%22%2Cnull%2Cnull%5D%7D) [](https://vscode.dev/redirect/mcp/install?name=NuGet&config=%7B%22name%22%3A%22NuGet.Mcp.Server%22%2C%22command%22%3A%22dnx%22%2C%22args%22%3A%5B%22NuGet.Mcp.Server%22%2C%22https%3A%2F%2Fapi.nuget.org%2Fv3%2Findex.json%22%2Cnull%2Cnull%5D%7D&quality=insiders)
+
+> 
+
+To verify that the MCP server is working correctly, open the GitHub Copilot Chat window and make sure you are signed in.
+Then click the Tools icon in the bottom toolbar to bring up the Tools menu.
+You should see the MCP server named "nuget" in the list of available servers.
+
+## Getting started in GitHub Copilot Agent
+
+You can also configure the MCP Server to work with GitHub Copilot as a Coding Agent in your repositories.
+Ensure that you configured your repository to use [GitHub Copilot Coding Agents](https://github.com/settings/copilot/coding_agent).
+
+Browse to your repository and click the Settings tab.
+Expand the Copilot section and click on Coding Agents.
+
+
+
+Scroll down to the **Model Context Protocol (MCP)** section and add the following JSON snippet to your `mcpServers` configuration:
+
+```json
+{
+ "mcpServers": {
+ "NuGet": {
+ "type": "local",
+ "command": "dnx",
+ "args": ["NuGet.Mcp.Server", "--yes"],
+ "tools": ["*"],
+ "env": {}
+ }
+ }
+}
+```
+
+This will make all of NuGet's MCP server tools available. If you want specific tools, you can list them in the `"tools"` parameter array.
+
+Finally, click the **Save MCP configuration** button to save your changes.
+
+Now that the NuGet MCP is configured, you will also need to create a GitHub Actions workflow to install .NET 10 Preview 6 or higher so that the `dnx` command is available to run the MCP server.
+You can do this by creating the following workflow file in your repository at
+
+`.github/workflows/copilot-setup-steps.yml`
+
+The contents of this workflow file should be as follows:
+
+```yml
+name: "Copilot Setup Steps"
+
+# Automatically run the setup steps when they are changed to allow for easy validation, and
+# allow manual testing through the repository's "Actions" tab
+on:
+ workflow_dispatch:
+ push:
+ paths:
+ - .github/workflows/copilot-setup-steps.yml
+ pull_request:
+ paths:
+ - .github/workflows/copilot-setup-steps.yml
+
+jobs:
+ # The job MUST be called `copilot-setup-steps` or it will not be picked up by Copilot.
+ copilot-setup-steps:
+ runs-on: ubuntu-latest
+
+ # Set the permissions to the lowest permissions possible needed for your steps.
+ # Copilot will be given its own token for its operations.
+ permissions:
+ # If you want to clone the repository as part of your setup steps, for example to install dependencies, you'll need the `contents: read` permission. If you don't clone the repository in your setup steps, Copilot will do this for you automatically after the steps complete.
+ contents: read
+
+ # You can define any steps you want, and they will run before the agent starts.
+ # If you do not check out your code, Copilot will do this for you.
+ steps:
+ - name: Install .NET 10.x
+ uses: actions/setup-dotnet@v5
+ with:
+ dotnet-version: |
+ 10.x
+ dotnet-quality: preview
+
+ - name: dotnet --info
+ run: dotnet --info
+```
+
+This will ensure that the `dnx` command is available to run the NuGet MCP server when GitHub Copilot runs as a coding agent in your repository.
+
+## Fixing package vulnerabilities
+
+The NuGet MCP server can help you identify and fix package vulnerabilities in your project.
+To use the MCP server to fix vulnerabilities, enter the following prompt in the GitHub Copilot Chat window:
+
+> Fix my package vulnerabilities
+
+The MCP server will analyze your project's dependencies and suggest updates to packages that have known vulnerabilities.
+
+## Updating all packages
+
+The NuGet MCP server can also update your packages to the latest compatible versions.
+To use the MCP server to update all packages, enter the following prompt in the GitHub Copilot Chat window:
+
+> Update all my packages to the latest compatible versions
+
+The MCP server will analyze your project's target framework(s) and suggest updates to the latest version of packages that are compatible with your project.
+
+## Update a package to a specific version
+
+The NuGet MCP server can update a specific package to a version you specify.
+To do so, enter the following prompt in the GitHub Copilot Chat window:
+
+> Update the package [PackageName] to version [VersionNumber]
+
+## Support
+
+If you experience an issue with the NuGet MCP server or have any other feedback, please open an issue on the [NuGet GitHub repository](https://github.com/NuGet/Home/issues/new?template=MCPSERVER.yml).
+Please provide the requested information in the issue template so that we can better understand and address your issue or suggestion.
\ No newline at end of file
diff --git a/docs/concepts/Package-Versioning.md b/docs/concepts/Package-Versioning.md
index 65cf31c3f..eb29a1da6 100644
--- a/docs/concepts/Package-Versioning.md
+++ b/docs/concepts/Package-Versioning.md
@@ -58,7 +58,7 @@ That said, package developers generally follow recognized naming conventions:
When ordering versions by precedence, NuGet follows the SemVer standard and chooses a version without a suffix first, then applies precedence to pre-release versions in reverse alphabetical order and treats dot notation numbers with numerical order.
> [!Note]
-> Prerelease numbers with dot notation, as in *1.0.1-build.23*, are considered are part of the [SemVer 2.0.0](https://semver.org/spec/v2.0.0.html) standard, and as such are [only supported with NuGet 4.3.0+](#semantic-versioning-200).
+> Prerelease numbers with dot notation, as in *1.0.1-build.23*, are considered part of the [SemVer 2.0.0](https://semver.org/spec/v2.0.0.html) standard, and as such are [only supported with NuGet 4.3.0+](#semantic-versioning-200).
### [SemVer 2.0 sorting](#tab/semver20sort)
diff --git a/docs/concepts/Security-Best-Practices.md b/docs/concepts/Security-Best-Practices.md
index b8e5377a1..d28f60fb0 100644
--- a/docs/concepts/Security-Best-Practices.md
+++ b/docs/concepts/Security-Best-Practices.md
@@ -3,7 +3,7 @@ title: Best practices for a secure software supply chain
description: Best practices for securing your software supply chain using NuGet & GitHub.
author: JonDouglas
ms.author: jodou
-ms.topic: conceptual
+ms.topic: best-practice
---
# Best practices for a secure software supply chain
@@ -154,6 +154,27 @@ Being able to have information about your dependencies such as their license, tr
For more information about Dependabot alerts & security updates, [see the following documentation](https://docs.github.com/en/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies).
+## NuGet Configuration
+
+**📦 Package Consumer**
+
+Add a `nuget.config` file in the root of your project repository. This is considered a best practice as it promotes repeatability and ensures that different users have the same NuGet configuration.
+We recommend adding `clear` elements to ensure no user or machine specific configuration is applied. [Read more about how settings are applied](../consume-packages/configuring-nuget-behavior.md#how-settings-are-applied).
+
+For example:
+
+```xml
+
+
+
+
+
+
+
+
+
+```
+
### NuGet feeds
**📦 Package Consumer**
diff --git a/docs/concepts/media/copilot-tools-menu-2022.png b/docs/concepts/media/copilot-tools-menu-2022.png
new file mode 100644
index 000000000..3fe2bdfb5
Binary files /dev/null and b/docs/concepts/media/copilot-tools-menu-2022.png differ
diff --git a/docs/concepts/media/copilot-tools-menu-vs-code.png b/docs/concepts/media/copilot-tools-menu-vs-code.png
new file mode 100644
index 000000000..995a86948
Binary files /dev/null and b/docs/concepts/media/copilot-tools-menu-vs-code.png differ
diff --git a/docs/concepts/media/copilot-tools-menu.png b/docs/concepts/media/copilot-tools-menu.png
new file mode 100644
index 000000000..ec5033751
Binary files /dev/null and b/docs/concepts/media/copilot-tools-menu.png differ
diff --git a/docs/concepts/media/dotnet-nuget-why-1.png b/docs/concepts/media/dotnet-nuget-why-1.png
new file mode 100644
index 000000000..b8422c44e
Binary files /dev/null and b/docs/concepts/media/dotnet-nuget-why-1.png differ
diff --git a/docs/concepts/media/github-copilot-agent-settings.png b/docs/concepts/media/github-copilot-agent-settings.png
new file mode 100644
index 000000000..2b998ee35
Binary files /dev/null and b/docs/concepts/media/github-copilot-agent-settings.png differ
diff --git a/docs/concepts/media/pm-ui-transitive-tooltip-1.png b/docs/concepts/media/pm-ui-transitive-tooltip-1.png
new file mode 100644
index 000000000..d83e6bced
Binary files /dev/null and b/docs/concepts/media/pm-ui-transitive-tooltip-1.png differ
diff --git a/docs/concepts/media/vs-solution-explorer-search-options-1.png b/docs/concepts/media/vs-solution-explorer-search-options-1.png
new file mode 100644
index 000000000..870c39a8a
Binary files /dev/null and b/docs/concepts/media/vs-solution-explorer-search-options-1.png differ
diff --git a/docs/concepts/media/vs-solution-explorer-search-results-1.png b/docs/concepts/media/vs-solution-explorer-search-results-1.png
new file mode 100644
index 000000000..00e30fedd
Binary files /dev/null and b/docs/concepts/media/vs-solution-explorer-search-results-1.png differ
diff --git a/docs/concepts/nuget-mcp.md b/docs/concepts/nuget-mcp.md
new file mode 100644
index 000000000..42eeaa5af
--- /dev/null
+++ b/docs/concepts/nuget-mcp.md
@@ -0,0 +1,81 @@
+---
+title: MCP servers in NuGet packages
+description: How can MCP servers be distributed using NuGet?
+author: joelverhagen
+ms.author: jver
+ms.topic: article
+ms.date: 07/23/2025
+---
+
+# MCP servers in NuGet packages
+
+NuGet provides a convenient way to package and distribute MCP servers written in .NET. The C# MCP SDK and .NET offer a robust platform for building MCP servers, and NuGet is ideal for delivering your MCP server to end users as a local tool. Self-contained, platform-specific packages reduce runtime compatibility issues, and AOT compilation can further improve the end-user experience.
+
+For more information about the Model Context Protocol (MCP) in general, see the [introduction on the MCP website](https://modelcontextprotocol.io/introduction). To create your own MCP server and package it using NuGet, see the [quickstart guide](/dotnet/ai/quickstarts/build-mcp-server).
+
+## Applicable scenarios
+
+Shipping your MCP server via NuGet does not apply to all situations. The term "MCP client" is used in this document and refers to an application that orchestrates the interaction between an AI agent or LLM and calls made to an MCP server. Some example MCP clients are [Visual Studio Code](https://code.visualstudio.com/docs/copilot/chat/mcp-servers), [Visual Studio](/visualstudio/ide/mcp-servers), [GitHub Copilot coding agent](https://docs.github.com/copilot/concepts/coding-agent/about-copilot-coding-agent), Claude Code, or Cursor.
+
+Consider the following criteria to determine whether shipping your MCP server as a NuGet package makes sense:
+
+- ✅ You want your MCP server to run **locally** on the user's system (i.e., in the same context as the MCP client).
+ - Local MCP servers, such as those shipped in NuGet packages, run in the same context as the MCP client and communicate with the MCP client via standard IO (stdio) transport. The MCP client is responsible for launching the local MCP server process.
+- ✅ The .NET SDK is available to the MCP client.
+ - NuGet MCP servers are [.NET tool packages](/dotnet/core/tools/global-tools), which are installed and executed using `dnx` from the .NET SDK.
+- ✅ You have a NuGet package feed to host your MCP server package.
+ - NuGet.org can be used to publish MCP server packages and provides a tailored MCP browsing and consumption experience. However, any NuGet package feed, such as Azure Artifacts, can be used for hosting MCP servers if you wish to keep your MCP server package private.
+
+## Benefits of using .NET and NuGet for MCP servers
+
+There are several benefits to using NuGet for hosting your MCP server:
+
+- **Official SDK** - the [MCP C# SDK](https://github.com/modelcontextprotocol/csharp-sdk) provides a familiar interface for implementing your MCP server in C# and makes it easy to expose tools to MCP clients.
+- **Flexible runtime options** - the .NET SDK provides several options for how your MCP server is compiled and packaged. See the [runtime requirements](#runtime-requirements) section for details.
+- **Discoverability and distribution** - NuGet.org provides a way to showcase your MCP server, allowing potential users to find your MCP server and easily use it from inside VS Code or Visual Studio. NuGet.org encourages the use of an embedded [`.mcp/server.json`](https://github.com/modelcontextprotocol/registry/blob/main/docs/server-json/README.md) to declare inputs and an `McpServer` package type to allow MCP servers to be differentiated from other tool or dependency packages.
+- **Familiar authoring workflows** - if you already use NuGet for creating dependency packages, creating and publishing an MCP server will be a very similar experience.
+
+## Package download and execution
+
+To fetch a local MCP server, the code for the server must be located and downloaded using a mechanism (protocol) specific to the package ecosystem. This is generally done with a "single-shot" command which takes the package name and arguments to download and then execute the package as a command-line application.
+
+For NuGet-based MCP servers, we recommend using `dnx` (a new command shipped in .NET 10 Preview 6) to acquire and execute the package. `dnx` currently ships with the .NET SDK, but there [is discussion to include `dnx` in the .NET runtime](https://github.com/dotnet/sdk/issues/49796).
+
+A command to start an MCP server would look something like this:
+
+```bash
+dnx NuGet.Mcp.Server@0.1.2-preview --yes
+```
+
+Environment variables and command-line arguments can both be used to configure your MCP server in custom ways. These inputs allow you to customize the behavior of your MCP server to suit specific needs.
+
+This will download the `NuGet.Mcp.Server` package of version `0.1.2-preview` from your configured package sources (NuGet.org by default), and launch the contained CLI tool. For an MCP server, you may see log messages appear in stderr, but the process will appear to hang. This is expected, since the process is waiting for MCP protocol messages over stdin from your MCP client.
+
+Typically, your MCP client will invoke this command via tool-specific MCP configuration, such as the `mcp.json` file used by Visual Studio Code and Visual Studio.
+
+All of these tools support installing alternate sources. For example, `dnx` supports installing from Azure DevOps using the `--source` parameter, allowing consumption of private MCP servers, as long as the needed credential or credential providers are configured.
+
+## Runtime requirements
+
+Once the package is downloaded, a runtime is needed to execute the code inside the package. .NET tool packages (and by extension NuGet-based MCP servers) support a variety of options for how the tool is compiled and packaged. These options allow you, the MCP server author, to decide which runtime requirements should be placed on the users of your MCP server.
+
+There are three main options for how to package your MCP server:
+
+1. **Framework-dependent**: Requires that the MCP client has access to a compatible .NET runtime. If `dnx` is being used to download and execute the package, a runtime will be available.
+2. **Self-contained**: Bundles the runtime with the package. [Using trimming](/dotnet/core/deploying/trimming/trimming-options) can reduce the size of the package. Self-contained .NET tools use `true`.
+3. **Ahead-of-time (AOT) compiled**: A self-contained package with AOT compilation enabled. See [native AOT deployment](/dotnet/core/deploying/native-aot/) for more information. AOT .NET tools use `true`.
+
+For MCP servers, we recommend using option #2 (self-contained package without AOT) because it eliminates the need for any specific .NET runtime version present in the user's environment. If you can guarantee a compatible runtime version on the intended execution environment, option #1 is reasonable. Option #3 (using AOT) is also a good option, but it forces you or your dependencies to make your code compatible with AOT compilation. The C# MCP SDK is AOT compatible, but other dependencies you intend to use may not yet be AOT compatible.
+
+Consider using the `mcpserver` template in the [Microsoft.Extensions.AI.Templates](https://www.nuget.org/packages/Microsoft.Extensions.AI.Templates) template package to use the latest recommended defaults.
+
+## Comparison to other ecosystems
+
+Other ecosystems have similar requirements and workflows for packaging and running MCP servers:
+
+- **NuGet/.NET**: Uses the `dnx` command to download and execute .NET tool packages. Requires the .NET SDK for `dnx`. Additional runtime dependencies can be bundled into the package.
+- **npm**: Uses the `npx` command to download and execute npm packages, and install dependencies transitively. Requires Node.js.
+- **Python**: Uses the `uvx` command to download and execute Python packages, and install dependencies transitively. Requires a Python runtime.
+- **Docker**: Uses the `docker run` command to download and execute images. Requires the Docker Engine. Docker images can target multiple CPU architectures and provide excellent isolation, but are generally larger than NuGet, npm, or Python packages.
+
+In all of these cases, the MCP client needs to have the necessary ecosystem-specific tool (e.g., `dnx`, `npx`) to download and execute the package-based MCP server.
diff --git a/docs/concepts/package-installation-process.md b/docs/concepts/package-installation-process.md
index 7ca6863e8..76074a1c4 100644
--- a/docs/concepts/package-installation-process.md
+++ b/docs/concepts/package-installation-process.md
@@ -4,7 +4,7 @@ description: Detailed information about the package installation process
author: JonDouglas
ms.author: jodou
ms.date: 06/20/2019
-ms.topic: conceptual
+ms.topic: article
---
# What happens when a NuGet package is installed?
diff --git a/docs/concepts/troubleshooting-installed-packages.md b/docs/concepts/troubleshooting-installed-packages.md
index 1b6c361b9..d06dfcebc 100644
--- a/docs/concepts/troubleshooting-installed-packages.md
+++ b/docs/concepts/troubleshooting-installed-packages.md
@@ -4,7 +4,7 @@ description: How to find which package source was used for individual packages
author: JonDouglas
ms.author: jodou
ms.date: 03/26/2021
-ms.topic: conceptual
+ms.topic: troubleshooting-general
---
# Troubleshooting Installed Packages
diff --git a/docs/consume-packages/Central-Package-Management.md b/docs/consume-packages/Central-Package-Management.md
index f01877c7c..66f7e9744 100644
--- a/docs/consume-packages/Central-Package-Management.md
+++ b/docs/consume-packages/Central-Package-Management.md
@@ -1,50 +1,32 @@
----
+---
title: Central Package Management
-description: Manage your dependencies in a central location and how you can get started with central package management.
+description: Manage your dependencies in a central location and learn how to get started with Central Package Management.
author: jondouglas
ms.author: jodou
ms.date: 05/09/2022
-ms.topic: conceptual
+ms.topic: article
---
# Central Package Management (CPM)
-Dependency management is a core feature of NuGet. Managing dependencies for a single project can be easy. Managing dependencies for multi-project solutions
-can prove to be difficult as they start to scale in size and complexity. In situations where you manage common dependencies for many different projects, you
-can leverage NuGet's central package management (CPM) features to do all of this from the ease of a single location.
-
-Historically, NuGet package dependencies have been managed in one of two locations:
-
-- `packages.config` - An XML file used in older project types to maintain the list of packages referenced by the project.
-- `` - An XML element used in MSBuild projects defines NuGet package dependencies.
-
-Starting with [NuGet 6.2](../release-notes/NuGet-6.2.md), you can centrally manage your dependencies in your projects with the addition of a
-`Directory.Packages.props` file and an MSBuild property.
-
-The feature is available across all NuGet integrated tooling, starting with the following versions.
-
-* [Visual Studio 2022 17.2](https://visualstudio.microsoft.com/downloads/)
-* [.NET SDK 6.0.300](https://dotnet.microsoft.com/download/dotnet/6.0)
-* [nuget.exe 6.2.0](https://www.nuget.org/downloads)
+Dependency management is a core feature of NuGet.
+While managing dependencies for a single project is straightforward, it becomes increasingly complex as the number of projects in a solution grows.
-Older tooling will ignore central package management configurations and features. To use this feature to the fullest extent, ensure all your build environments
-use the latest compatible tooling versions.
+If you manage common dependencies for many different projects, you can leverage NuGet's Central Package Management (CPM) features to do all of this from a single, central location.
-Central package management applies to all ``-based MSBuild projects (including
-[legacy CSPROJ](https://github.com/dotnet/project-system/blob/main/docs/feature-comparison.md)) as long as compatible tooling is used.
+Central Package Management applies to all ``-based MSBuild projects (including [legacy CSPROJ](https://github.com/dotnet/project-system/blob/main/docs/feature-comparison.md)).
## Enabling Central Package Management
-To get started with central package management, you must create a `Directory.Packages.props` file at the root of your repository and set the MSBuild property
-`ManagePackageVersionsCentrally` to `true`.
+To get started with Central Package Management, create a `Directory.Packages.props` file at the root of your repository and set the MSBuild property `ManagePackageVersionsCentrally` to `true`.
-You can create it manually or you can use the dotnet CLI:
-``` shell
+You can create it manually, or use the .NET CLI:
+
+```shell
dotnet new packagesprops
```
-Inside, you then define each of the respective package versions required of your projects using `` elements that define the package ID and
-version.
+Inside `Directory.Packages.props`, define `` elements to specify the package IDs and versions used by your projects.
```xml
@@ -52,13 +34,14 @@ version.
true
-
+
+
```
-For each project, you then define a `` but omit the `Version` attribute since the version will be obtained from a corresponding
-`` item.
+In each project file, define `` elements without the `Version` attribute.
+The version will be resolved from the corresponding `` entry in `Directory.Packages.props`.
```xml
@@ -66,22 +49,22 @@ For each project, you then define a `` but omit the `Version
net6.0
-
+
```
-Now you're using central package management and managing your versions in a central location!
+Now you're using Central Package Management and managing your versions in a central location!
-## Central Package Management rules
+## Central Package Management Rules
-The `Directory.Packages.props` file has a number of rules with regards to where it's located in a repository's directory and its context. For the sake of
-simplicity, only one `Directory.Packages.props` file is evaluated for a given project.
+The `Directory.Packages.props` file has specific rules regarding its location and context within a repository.
+Only one `Directory.Packages.props` file is evaluated for a given project by default.
-What this means is that if you had multiple `Directory.Packages.props` files in your repository, the file that is closest to your project's directory will
-be evaluated for it. This allows you extra control at various levels of your repository.
+If you have multiple `Directory.Packages.props` files in your repository, the file closest to a given project's directory will be evaluated for it.
+This allows extra control at various levels of your repository.
-Consider the following repository structure:
+Consider the following repository directory structure:
```
📂 (root)
@@ -98,39 +81,75 @@ Consider the following repository structure:
└─ 📄 Project2.csproj
```
-- `Project1.csproj` will load the `Directory.Packages.props` file in the `Repository\Solution1\` directory first and it must manually import any parent ones if desired.
- ```xml
-
-
-
-
-
-
- ```
-- `Project2.csproj` will evaluate the `Directory.Packages.props` file in the root directory.
+`Project1.csproj` will use the `Directory.Packages.props` file in the `Repository\Solution1\` directory.
+If you want to include settings from a parent `Directory.Packages.props`, you must manually import it.
+
+```xml
+
+
+
+
+
+
+```
+
+`Project2.csproj` will evaluate the `Directory.Packages.props` file in the root directory.
-**Note:** MSBuild will not automatically import each `Directory.Packages.props` for you, only the first one found in the project directory or any parent directory. If you have multiple
-`Directory.Packages.props` files, you must import any files in parent directories manually.
+> [!NOTE]
+> MSBuild will only automatically import the first `Directory.Packages.props` file it finds in the project directory or any parent directory.
+> If you have multiple such files, you must manually import parent files as needed.
-## Get started
+## Getting Started
To fully onboard your repository, follow these steps:
-1. Create a new file at the root of your repository named `Directory.Packages.props` that declares your centrally defined package versions and set
- the MSBuild property `ManagePackageVersionsCentrally` to `true`.
+1. Create a new file at the root of your repository named `Directory.Packages.props` that declares your centrally defined package versions and set the MSBuild property `ManagePackageVersionsCentrally` to `true`.
2. Declare `` items in your `Directory.Packages.props`.
3. Declare `` items without `Version` attributes in your project files.
-For an idea of how central package management may look like, refer to our [samples repo](https://github.com/NuGet/Samples/tree/main/CentralPackageManagementExample).
+For an example of how Central Package Management may look, refer to our [samples repository](https://github.com/NuGet/Samples/tree/main/CentralPackageManagementExample).
+
+## Using Different Versions for Different Target Frameworks
+
+As NuGet packages evolve, package owners may drop support for older target frameworks.
+This can cause issues for developers of libraries that still target older frameworks but want to reference newer versions of packages for newer target frameworks.
+
+For example, if your project targets .NET Standard 2.0, .NET 8.0, and .NET Framework 4.7.2, but `PackageA` no longer supports .NET Standard 2.0 in its latest version, you can specify different versions for each target framework.
+
+```xml
+
+
+ netstandard2.0;net8.0;net472
+
+
+
+
+
+```
+
+In this case, define different versions for each target framework in your `Directory.Packages.props` using [MSBuild conditions](/visualstudio/msbuild/msbuild-conditions):
+
+```xml
+
+
+ true
+
+
+
+
+
+
+```
-## Transitive pinning
+## Transitive Pinning
-You can automatically override a transitive package version even without an explicit top-level `` by opting into a feature known as
-transitive pinning. This promotes a transitive dependency to a top-level dependency implicitly on your behalf when necessary.
-Note that downgrades are not allowed when transitive pinning a package. If you attempt to pin a package to a lower version than the one requested by your dependencies, restore will raise a [NU1109](../reference/errors-and-warnings/NU1109.md) error.
+You can automatically override a transitive package version without an explicit top-level `` item by opting into a feature known as transitive pinning.
+This promotes a transitive dependency to a top-level dependency implicitly on your behalf when necessary.
-You can enable this feature by setting the MSBuild property `CentralPackageTransitivePinningEnabled` to `true` in a project or in a `Directory.Packages.props`
-or `Directory.Build.props` import file:
+Note that downgrades are not allowed when transitive pinning a package.
+If you attempt to pin a package to a lower version than the one requested by your dependencies, restore will raise a [NU1109](../reference/errors-and-warnings/NU1109.md) error.
+
+You can enable this feature by setting the MSBuild property `CentralPackageTransitivePinningEnabled` to `true` in a project or in a `Directory.Packages.props` or `Directory.Build.props` import file:
```xml
@@ -138,10 +157,10 @@ or `Directory.Build.props` import file:
```
-### Transitive pinning and pack
+### Transitive Pinning and Pack
-When a package is transitively pinned, your project uses a higher than the one requested by your dependencies.
-If you create a package from your project, in order to ensure that your package will work, NuGet will promote the transitively pinned dependencies to explicit dependencies in the nuspec.
+When a package is transitively pinned, your project uses a higher version than the one requested by your dependencies.
+If you create a package from your project, to ensure that your package will work, NuGet will promote the transitively pinned dependencies to explicit dependencies in the nuspec.
In the following example, `PackageA 1.0.0` has a dependency on `PackageB 1.0.0`.
@@ -169,18 +188,18 @@ In the following example, `PackageA 1.0.0` has a dependency on `PackageB 1.0.0`.
When you use the pack command to create a package, both packages will appear in the dependency group.
```xml
-
-
-
-
+
+
+
+
```
-Because of this, the use of transitive pinning should be carefully evaluated when authoring a library as it may lead to dependencies you did not expect.
+Because of this, the use of transitive pinning should be carefully evaluated when authoring a library, as it may lead to dependencies you did not expect.
-## Overriding package versions
+## Overriding Package Versions
-You can override an individual package version by using the `VersionOverride` property on a `` item. This overrides any ``
-defined centrally.
+You can override an individual package version by using the `VersionOverride` property on a `` item.
+This will take precedence over any centrally defined ``.
```xml
@@ -202,8 +221,7 @@ defined centrally.
```
-You can disable this feature by setting the MSBuild property `CentralPackageVersionOverrideEnabled` to `false` in a project or in a `Directory.Packages.props` or
-`Directory.Build.props` import file:
+You can disable this feature by setting the MSBuild property `CentralPackageVersionOverrideEnabled` to `false` in a project or in a `Directory.Packages.props` or `Directory.Build.props` import file:
```xml
@@ -211,13 +229,11 @@ You can disable this feature by setting the MSBuild property `CentralPackageVers
```
-When this feature is disabled, specifying a `VersionOverride` on any `` item will result in an error at restore time indicating that
-the feature is disabled.
+When this feature is disabled, specifying a `VersionOverride` on any `` item will result in an error at restore time indicating that the feature is disabled.
## Disabling Central Package Management
-If you would like to disable central package management for a particular project, you can disable it by setting the MSBuild property
-`ManagePackageVersionsCentrally` to `false`:
+To disable Central Package Management for a specific project, set the MSBuild property `ManagePackageVersionsCentrally` to `false`:
```xml
@@ -227,17 +243,18 @@ If you would like to disable central package management for a particular project
## Global Package References
-> [!Note]
+> [!NOTE]
> This feature is only available in Visual Studio 2022 17.4 or higher, .NET SDK 7.0.100.preview7 or higher, and NuGet 6.4 or higher.
-A global package reference is used to specify that a package will be used by every project in a repository. This includes packages that do versioning, extend your build, or any other packages that are needed by all projects. Global package references are added to the PackageReference item group with the following metadata:
+A global package reference is used to specify that a package will be used by every project in a repository.
+This includes packages that do versioning, extend your build, or any other packages that are needed by all projects.
+Global package references are added to the PackageReference item group with the following metadata:
* `IncludeAssets="Runtime;Build;Native;contentFiles;Analyzers"`
- This ensures that the package is only used as a development dependency and prevents any compile-time assembly references.
+ This ensures that the package is only used as a development dependency and prevents it from being included as a compile-time assembly reference.
* `PrivateAssets="All"`
This prevents global package references from being picked up by downstream dependencies.
-
`GlobalPackageReference` items should be placed in your `Directory.Packages.props` to be used by every project in a repository:
```xml
@@ -248,11 +265,11 @@ A global package reference is used to specify that a package will be used by eve
```
-## Warning when using multiple package sources
+## NU1507 Warning When Using Multiple Package Sources
-When using central package management, you will see a `NU1507` warning if you have more than one package source defined in your configuration. To resolve
-this warning, map your package sources with [package source mapping](https://aka.ms/nuget-package-source-mapping) or specify a single package source.
+When using Central Package Management, NuGet will log an [`NU1507`](../reference/errors-and-warnings/nu1507.md) warning if more than one package source is defined in your configuration.
+To resolve this warning, map your package sources with [package source mapping](https://aka.ms/nuget-package-source-mapping) or specify a single package source.
```
-There are 3 package sources defined in your configuration. When using central package management, please map your package sources with package source mapping (https://aka.ms/nuget-package-source-mapping) or specify a single package source.
+There are 3 package sources defined in your configuration. When using Central Package Management, please map your package sources with package source mapping (https://aka.ms/nuget-package-source-mapping) or specify a single package source.
```
diff --git a/docs/consume-packages/Finding-and-Choosing-Packages.md b/docs/consume-packages/Finding-and-Choosing-Packages.md
index 7b00fcd89..fef94e0cd 100644
--- a/docs/consume-packages/Finding-and-Choosing-Packages.md
+++ b/docs/consume-packages/Finding-and-Choosing-Packages.md
@@ -4,7 +4,7 @@ description: Find and evaluate publicly available NuGet packages for your projec
author: JonDouglas
ms.author: jodou
ms.date: 03/03/2025
-ms.topic: conceptual
+ms.topic: how-to
---
# Find and evaluate NuGet packages for your project
diff --git a/docs/consume-packages/Overview-and-Workflow.md b/docs/consume-packages/Overview-and-Workflow.md
index 4c47052ab..b9bc8f527 100644
--- a/docs/consume-packages/Overview-and-Workflow.md
+++ b/docs/consume-packages/Overview-and-Workflow.md
@@ -4,7 +4,7 @@ description: An overview of the process of consuming NuGet packages in a project
author: JonDouglas
ms.author: jodou
ms.date: 03/22/2018
-ms.topic: conceptual
+ms.topic: concept-article
---
# Package consumption workflow
diff --git a/docs/consume-packages/Package-References-in-Project-Files.md b/docs/consume-packages/Package-References-in-Project-Files.md
index d8b354b89..d9290e3cd 100644
--- a/docs/consume-packages/Package-References-in-Project-Files.md
+++ b/docs/consume-packages/Package-References-in-Project-Files.md
@@ -4,20 +4,20 @@ description: Details on NuGet PackageReference in project files as supported by
author: nkolev92
ms.author: nikolev
ms.date: 4/6/2022
-ms.topic: conceptual
+ms.topic: article
---
# `PackageReference` in project files
Package references, using `` MSBuild items, specify NuGet package dependencies directly within project files, as opposed to having a separate `packages.config` file. Use of PackageReference doesn't affect other aspects of NuGet; for example, settings in `NuGet.Config` files (including package sources) are still applied as explained in [Common NuGet configurations](configuring-nuget-behavior.md).
-With PackageReference, you can also use MSBuild conditions to choose package references per target framework, or other groupings. It also allows for fine-grained control over dependencies and content flow. (See For more details [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md).)
+With PackageReference, you can also use MSBuild conditions to choose package references per target framework, or other groupings. It also allows for fine-grained control over dependencies and content flow. (For more information, see [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md).)
## Project type support
-By default, PackageReference is used for .NET Core projects, .NET Standard projects, and UWP projects targeting Windows 10 Build 15063 (Creators Update) and later, with the exception of C++ UWP projects. .NET Framework projects support PackageReference, but currently default to `packages.config`. To use PackageReference, [migrate](../consume-packages/migrate-packages-config-to-package-reference.md) the dependencies from `packages.config` into your project file, then remove packages.config.
+By default, PackageReference is used for .NET projects, .NET Standard projects, and UWP projects targeting Windows 10 Build 15063 (Creators Update) and later, with the exception of C++ UWP projects. .NET Framework projects support PackageReference, but currently default to `packages.config`. To use PackageReference in a .NET Framework project, [migrate](../consume-packages/migrate-packages-config-to-package-reference.md) the dependencies from `packages.config` into your project file, then remove packages.config.
-ASP.NET apps targeting the full .NET Framework include only [limited support](https://github.com/NuGet/Home/issues/5877) for PackageReference. C++ and JavaScript project types are unsupported.
+ASP.NET apps that target the full .NET Framework include only [limited support](https://github.com/NuGet/Home/issues/5877) for PackageReference. C++ and JavaScript project types are unsupported.
## Adding a PackageReference
@@ -43,7 +43,7 @@ The convention for specifying the version of a package is the same as when using
```
-In the example above, 3.6.0 means any version that is >=3.6.0 with preference for the lowest version, as described on [Package versioning](../concepts/package-versioning.md#version-ranges).
+In the example above, 3.6.0 means any version that is >=3.6.0 with preference for the lowest version, as described in [Package versioning](../concepts/package-versioning.md#version-ranges).
## Using PackageReference for a project with no package dependencies
@@ -57,11 +57,11 @@ Advanced: If you have no packages installed in a project (no PackageReferences i
```
-This may be useful, if you reference projects which are PackageReference styled (existing csproj or SDK-style projects). This will enable packages that those projects refer to, to be "transitively" referenced by your project.
+This might be useful if you reference projects that are PackageReference styled (existing csproj or SDK-style projects). This will enable packages that those projects refer to, to be "transitively" referenced by your project.
## PackageReference and sources
-In PackageReference projects, the transitive dependency versions are resolved at restore time. As such, in PackageReference projects all sources need to be available for all restores.
+In PackageReference projects, the transitive dependency versions are resolved at restore time. As such, in PackageReference projects, all sources need to be available for all restores.
## Floating Versions
@@ -94,13 +94,13 @@ You might be using a dependency purely as a development harness and might not wa
The following metadata tags control dependency assets:
-| Tag | Description | Default Value |
-| --- | --- | --- |
-| IncludeAssets | These assets will be consumed | all |
-| ExcludeAssets | These assets will not be consumed | none |
+| Tag | Description | Default Value |
+|---------------|--------------------------------------------------------------------|------------------------------|
+| IncludeAssets | These assets will be consumed | all |
+| ExcludeAssets | These assets will not be consumed | none |
| PrivateAssets | These assets will be consumed but won't flow to the parent project | contentfiles;analyzers;build |
-Allowable values for these tags are as follows, with multiple values separated by a semicolon except with `all` and `none` which must appear by themselves:
+Allowable values for these tags are as follows, with multiple values separated by a semicolon except for `all` and `none`, which must appear by themselves:
| Value | Description |
| --- | ---
@@ -143,9 +143,9 @@ Note that because `build` is not included with `PrivateAssets`, targets and prop
## Adding a PackageReference condition
-You can use a condition to control whether a package is included, where conditions can use any MSBuild variable or a variable defined in the targets or props file. However, at presently, only the `TargetFramework` variable is supported.
+You can use a condition to control whether a package is included. Conditions can use any MSBuild variable or a variable defined in the targets or props file. However, at present, only the `TargetFramework` variable is supported.
-For example, say you're targeting `netstandard1.4` as well as `net452` but have a dependency that is applicable only for `net452`. In this case you don't want a `netstandard1.4` project that's consuming your package to add that unnecessary dependency. To prevent this, you specify a condition on the `PackageReference` as follows:
+For example, say you're targeting `netstandard1.4` as well as `net452` but have a dependency that's applicable only for `net452`. In this case you don't want a `netstandard1.4` project that consumes your package to add that unnecessary dependency. To prevent this, you specify a condition on the `PackageReference` as follows:
```xml
@@ -191,7 +191,7 @@ Example:
````
-Additionally NuGet will automatically generate properties for packages containing a tools folder.
+Additionally NuGet automatically generates properties for packages containing a tools folder.
```xml
@@ -206,12 +206,12 @@ Additionally NuGet will automatically generate properties for packages containin
MSBuild properties and package identities do not have the same restrictions so the package identity needs to be changed to an MSBuild friendly name, prefixed by the word `Pkg`.
To verify the exact name of the property generated, look at the generated [nuget.g.props](../reference/msbuild-targets.md#restore-outputs) file.
-## PackageReference Aliases
+## PackageReference aliases
-In some rare instances different packages will contain classes in the same namespace. Starting with NuGet 5.7 & Visual Studio 2019 Update 7, equivalent to ProjectReference, PackageReference supports [`Aliases`](/dotnet/api/microsoft.codeanalysis.projectreference.aliases).
-By default no aliases are provided. When an alias is specified, *all* assemblies coming from the annotated package with need to be referenced with an alias.
+In some rare instances, different packages will contain classes in the same namespace. Starting with NuGet 5.7 & Visual Studio 2019 Update 7, equivalent to ProjectReference, PackageReference supports [`Aliases`](/dotnet/api/microsoft.codeanalysis.projectreference.aliases).
+By default, no aliases are provided. When an alias is specified, *all* assemblies coming from the annotated package need to be referenced with an alias.
-You can look at sample usage at [NuGet\Samples](https://github.com/NuGet/Samples/tree/main/PackageReferenceAliasesExample)
+You can look at sample usage at [NuGet\Samples](https://github.com/NuGet/Samples/tree/main/PackageReferenceAliasesExample).
In the project file, specify the aliases as follows:
@@ -221,7 +221,7 @@ In the project file, specify the aliases as follows:
```
-and in the code use it as follows:
+And in the code, use it as follows:
```cs
extern alias ExampleAlias;
@@ -246,8 +246,8 @@ For many pack and restore scenarios, all NuGet warnings and errors are coded, an
NuGet observes the following warning properties:
-- `TreatWarningsAsErrors`, treat all warnings as errors
-- `WarningsAsErrors`, treat specific warnings as errors
+- `TreatWarningsAsErrors`, treat all warnings as errors.
+- `WarningsAsErrors`, treat specific warnings as errors.
- `NoWarn`, hide specific warnings, either project-wide or package-wide.
Examples:
@@ -285,7 +285,7 @@ To suppress a warning project wide, consider doing:
```
-Sometimes warnings apply only to a certain package in the graph. We can choose to suppress that warning more selectively by adding a `NoWarn` on the PackageReference item.
+Sometimes warnings apply only to a certain package in the graph. You can choose to suppress that warning more selectively by adding a `NoWarn` on the PackageReference item.
```xml
@@ -308,18 +308,18 @@ When in Visual Studio, you can also [suppress warnings](/visualstudio/ide/how-to
Input to NuGet restore is a set of `PackageReference` items from the project file (top-level or direct dependencies) and the output is a full closure of all the package dependencies including transitive dependencies. NuGet tries to always produce the same full closure of package dependencies if the input PackageReference list has not changed. However, there are some scenarios where it is unable to do so. For example:
- When you use floating versions like ``. While the intention here is to float to the latest version on every restore of packages, there are scenarios where users require the graph to be locked to a certain latest version and float to a later version, if available, upon an explicit gesture.
-- A newer version of the package matching PackageReference version requirements is published. E.g.
+- A newer version of the package matching PackageReference version requirements is published. For example:
- Day 1: if you specified `` but the versions available on the
- NuGet repositories were 4.1.0, 4.2.0 and 4.3.0. In this case, NuGet would have resolved to 4.1.0 (nearest minimum version)
+ NuGet repositories were 4.1.0, 4.2.0, and 4.3.0. In this case, NuGet would have resolved to 4.1.0 (nearest minimum version).
- - Day 2: Version 4.0.0 gets published. NuGet will now find the exact match and start resolving to 4.0.0
+ - Day 2: Version 4.0.0 gets published. NuGet will now find the exact match and start resolving to 4.0.0.
- A given package version is removed from the repository. Though nuget.org does not allow package deletions, not all package repositories have this constraint. This results in NuGet finding the best match when it cannot resolve to the deleted version.
### Enabling the lock file
-In order to persist the full closure of package dependencies you can opt-in to the lock file feature by setting the MSBuild property `RestorePackagesWithLockFile` for your project:
+In order to persist the full closure of package dependencies, you can opt-in to the lock file feature by setting the MSBuild property `RestorePackagesWithLockFile` for your project:
```xml
@@ -329,14 +329,14 @@ In order to persist the full closure of package dependencies you can opt-in to t
```
-If this property is set, NuGet restore will generate a lock file - `packages.lock.json` file at the project root directory that lists all the package dependencies.
+If this property is set, NuGet restore will generate a lock file (`packages.lock.json`) at the project root directory that lists all the package dependencies.
> [!Note]
> Once a project has `packages.lock.json` file in its root directory, the lock file is always used with restore even if the property `RestorePackagesWithLockFile` is not set. So another way to opt-in to this feature is to create a dummy blank `packages.lock.json` file in the project's root directory.
### `restore` behavior with lock file
-If a lock file is present for project, NuGet uses this lock file to run `restore`. NuGet does a quick check to see if there were any changes in the package dependencies as mentioned in the project file (or dependent projects' files) and if there were no changes it just restores the packages mentioned in the lock file. There is no re-evaluation of package dependencies.
+If a lock file is present for a project, NuGet uses this lock file to run `restore`. NuGet does a quick check to see if there were any changes in the package dependencies as mentioned in the project file (or dependent projects' files), and if there were no changes, it just restores the packages mentioned in the lock file. There is no re-evaluation of package dependencies.
If NuGet detects a change in the defined dependencies as mentioned in the project file(s), it re-evaluates the package graph and updates the lock file to reflect the new package closure for the project.
@@ -354,7 +354,7 @@ For msbuild.exe, run:
> msbuild.exe -t:restore -p:RestoreLockedMode=true
```
-You may also set this conditional MSBuild property in your project file:
+You can also set this conditional MSBuild property in your project file:
```xml
@@ -366,13 +366,21 @@ You may also set this conditional MSBuild property in your project file:
If locked mode is `true`, restore will either restore the exact packages as listed in the lock file or fail if you updated the defined package dependencies for the project after lock file was created.
+#### Lock files and PrunePackageReference
+
+[PrunePackageReference](#prunepackagereference) changes the dependencies of a project, by removing unnecessary transitive packages.
+While removing these packages should not have an impact at runtime, it will affect lock files.
+If you enable pruning for an existing project, whenever the lock file gets regenerated, it may lead to fewer packages than before pruning.
+The lock file up to date check that powers locked mode is pruning aware, which means if you enabled pruning on a project, the check will account for packages that are pruned.
+However the next time the lock file is regenerated, it will exclude the pruned packages, so you may see a diff that's larger than usual.
+
### Make lock file part of your source repository
-If you are building an application, an executable and the project in question is at the start of the dependency chain then do check in the lock file to the source code repository so that NuGet can make use of it during restore.
+If you are building an application, an executable, and the project in question is at the start of the dependency chain, then do check in the lock file to the source code repository so that NuGet can make use of it during restore.
-However, if your project is a library project that you do not ship or a common code project on which other projects depend upon, you **should not** check in the lock file as part of your source code. There is no harm in keeping the lock file but the locked package dependencies for the common code project may not be used, as listed in the lock file, during the restore/build of a project that depends on this common-code project.
+However, if your project is a library project that you do not ship or a common code project on which other projects depend, you **should not** check in the lock file as part of your source code. There is no harm in keeping the lock file, but the locked package dependencies for the common code project can't be used, as listed in the lock file, during the restore/build of a project that depends on this common-code project.
-Eg.
+Example:
```
ProjectA
@@ -396,7 +404,7 @@ You can control various behaviors of restore with lock file as described below:
## NuGet Dependency Resolver
-The NuGet dependency resolver follows the [4 rules as described in the dependency resolution document](../../docs/concepts/Dependency-Resolution.md).
+The NuGet dependency resolver follows the [four rules as described in the dependency resolution document](../../docs/concepts/Dependency-Resolution.md).
In order to improve the performance and scalability of the restore operation, the restore algorithm was rewritten in the 6.12 release.
As of the 6.12 release, the new restore algorithm is enabled by default for all PackageReference projects.
@@ -406,7 +414,7 @@ To revert to the previous implementation, set the MSBuild property `RestoreUseLe
Should you face restore failures in 6.12, .NET 9 or 17.12, that weren't reproducing in earlier versions, please [file an issue on GitHub](https://github.com/NuGet/Home/issues/).
Any differences between the old and new algorithms may have different impacts, such as during compilation or at runtime.
There's also a chance that changes don't lead to failures, but different package versions being restored.
-If you think you may be impacted by any changes, here are the steps you can take to verify whether the changes in the NuGet restore algorithm are the root cause.
+If you think you might be impacted by any changes, here are the steps you can take to verify whether the changes in the NuGet restore algorithm are the root cause.
Restore writes its results in the `MSBuildProjectExtensionsPath` directory, which can be compared with the new and old algorithms to find differences.
Usually this is the `obj` folder of your build.
@@ -415,10 +423,11 @@ You can use `msbuild.exe` or `dotnet.exe` for the next steps.
1. Remove the `obj` folder for your project.
1. Run `msbuild -t:restore`
1. Save the contents of the `obj` to a location indicating that it's the `new` behavior.
-1. Run `msbuild -t:restore -p:RestoreUseLegacyDependencyResolver="true"`
+1. Run `msbuild -t:restore -p:RestoreUseLegacyDependencyResolver="true"`.
1. Save the contents of the `obj` to a location indicating that it's the `legacy` behavior.
1. Compare the files in the two directories, particularly *project.assets.json*.
-Tools that can highlight differences are especially useful for this (for example, Visual Studio Code, open both files, and use the right-click "select for compare" and "compare to selected")
+
+ Tools that can highlight differences are especially useful for this (for example, in Visual Studio Code, open both files, and use the right-click "select for compare" and "compare to selected").
If you follow the above method, there should be exactly 1 difference between the `project.assets.json` files:
@@ -464,10 +473,12 @@ You can leave off `$(AssetTargetFallback)` if you wish to overwrite, instead of
## PrunePackageReference
The .NET Runtime is constantly evolving, with performance improvements and new APIs each release.
-There is a lot of functionality that's available within the runtime, but also as packages, such as [System.Text.Json](https://www.nuget.org/packages/System.Text.Json). This can often lead to a `System.Text.Json 8.0.0` in a project targeting `.NET 9` or `.NET 8`. This dependency is unnecessary and the build conflict resolution would not use the assembly coming from the package since it's already available in the .NET Runtime.
-Starting in in [NuGet version 6.13](..\release-notes\NuGet-6.13.md) and .NET SDK 9.0.200, `PrunePackageReference` enables the pruning of these packages at restore time for .NET SDK based projects.
+New features added to .NET are also sometimes provided as packages, so that developers using older target frameworks can use the library, such as [System.Text.Json](https://www.nuget.org/packages/System.Text.Json).
+This can often lead to a `System.Text.Json 8.0.0` in a project targeting `.NET 9` or `.NET 8`. This dependency is unnecessary and the build conflict resolution would not use the assembly coming from the package since it's already available in the .NET Runtime.
+Starting in [NuGet version 6.13](..\release-notes\NuGet-6.13.md) and .NET SDK 9.0.200, `PrunePackageReference` enables the pruning of these packages at restore time for .NET SDK based projects.
+The first iteration of pruning affected transitive packages only, but starting with .NET SDK 10, package pruning affects direct packages as well.
-Package pruning is available as an opt-in feature with the .NET 9 SDK, and will be enabled by default for all `.NET` frameworks and `>= .NET Standard 2.0` starting with .NET 10 SDK.
+Package pruning is available as an opt-in feature with the .NET 9 SDK, and is enabled by default for all frameworks of a project that targets `>= .NET 10.0` in the .NET 10 SDK.
Package pruning is only available with the default dependency resolver as [released in 6.12](#nuget-dependency-resolver).
@@ -489,16 +500,53 @@ The .NET SDK predefines the list of packages to be pruned for you.
### How PrunePackageReference works
-When a package is specified to be pruned during restore, it is removed from the dependency graph. This package is not downloaded and does not appear in any of the outputs of NuGet. When a package is pruned, there is a detailed verbosity message indicating that the package has been removed for the given target framework.
+When a package is specified to be pruned during restore, it is removed from the dependency graph.
+When a package is pruned, there is a message, visible at detailed verbosity, indicating that the package has been removed for the given target framework.
+
+For transitive packages, meaning dependencies of other packages or projects, the packages are not downloaded and do not appear in any of the outputs of NuGet.
+
+For direct packages, `PrivateAssets='all'` and `IncludeAssets='none'` are implicitly applied.
+
+- `IncludeAssets='none'` ensures that the assemblies from this package are not used during the build. Before pruning existed, the conflict resolution during the build ensured that platform assemblies were preferred over those coming from the packages.
+- `PrivateAssets='all'` ensures that the packages aren't included in packages or through project references.
+
+Example:
+
+A project like below:
+
+```xml
+
+ net9.0;netstandard2.0
+
+
+
+
+
+```
+
+will have a nuspec with the following dependencies:
+
+```xml
+
+
+
+
+
+
+
+```
+
+When a direct PackageReference can be completely removed from your project, and one of the project frameworks are .NET 10 or newer, [NU1510](../reference/errors-and-warnings/NU1510.md) will be raised asking you to remove the package.
+Following this suggestion will reduce the complexity of your project graph.
-Pruning is only supported for transitive packages, meaning packages that are referenced by other packages or projects. The following table illustrates various package pruning behaviors.
+The following table summarizes all the package pruning behaviors.
| Dependency disposition | Behavior |
|-----------------|----------|
| Matches the ID of a transitive package coming through another package | Prune |
| Matches the ID of a transitive package coming through another project | Prune |
-| Matches the ID of a direct `PackageReference` | Raise the [NU1510](../reference/errors-and-warnings/NU1510.md) warning and do not prune |
-| Matches the ID of a `ProjectReference` | Raise the [NU1511](../reference/errors-and-warnings/NU1511.md) warning and do not prune |
+| Matches the ID of a direct `PackageReference` | Apply `PrivateAssets='all'` and `IncludeAssets='none'` and raise the [NU1510](../reference/errors-and-warnings/NU1510.md) warning when the package can be removed from all frameworks and the project targets .NET 10. |
+| Matches the ID of a `ProjectReference` | Do not prune and raise the [NU1511](../reference/errors-and-warnings/NU1511.md) warning when the project targets .NET 10 |
### PrunePackageReference applications
@@ -507,4 +555,4 @@ The benefits of package pruning are two-fold:
- Performance benefits, by virtue of reducing the number of packages within a dependency graph
- Reduction of false positives by component scanners such as `NuGetAudit`
-Pruning is particularly valuable when [auditing](./../concepts/Auditing-Packages.md) packages with `NuGetAuditMode` is set to `all`. If you are using the .NET 9, we recommend you try out pruning by setting `RestoreEnablePackagePruning` to `true`.
+Pruning is particularly valuable when [auditing](./../concepts/Auditing-Packages.md) packages with `NuGetAuditMode` set to `all`. If you are using .NET 9, we recommend you try out pruning by setting `RestoreEnablePackagePruning` to `true`.
diff --git a/docs/consume-packages/Package-Restore.md b/docs/consume-packages/Package-Restore.md
index d39c3620b..62f1f673f 100644
--- a/docs/consume-packages/Package-Restore.md
+++ b/docs/consume-packages/Package-Restore.md
@@ -4,7 +4,7 @@ description: See an overview of how NuGet restores packages a project depends on
author: JonDouglas
ms.author: jodou
ms.date: 10/20/2023
-ms.topic: conceptual
+ms.topic: how-to
---
# Restore packages with NuGet Package Restore
@@ -44,6 +44,7 @@ If the package references in your project file or your *packages.config* file ar
If you have missing packages or package-related errors after you run Package Restore, such as error icons in Solution Explorer, follow the instructions in [Troubleshooting Package Restore errors](package-restore-troubleshooting.md), or [reinstall or update](../consume-packages/reinstalling-and-updating-packages.md) the packages. In Visual Studio, the Package Manager Console provides several options for reinstalling packages. For more information, see [Use Package-Update](reinstalling-and-updating-packages.md#update-package-command).
+
## Restore packages in Visual Studio
In Visual Studio on Windows, you can restore packages automatically or manually. First, configure Package Restore through **Tools** > **Options** > **NuGet Package Manager**.
@@ -52,9 +53,10 @@ In Visual Studio on Windows, you can restore packages automatically or manually.
Configure the following Package Restore options at **Tools** > **Options** > **NuGet Package Manager** > **General**.
-
+
+
#### Allow NuGet to download missing packages
Select **Allow NuGet to download missing packages** to enable package restore and the **Restore NuGet Packages** command. This selection sets the `packageRestore/enabled` setting to `True` in the [packageRestore section](../reference/nuget-config-file.md#packagerestore-section) of the global *NuGet.Config* file, at *%AppData%\\Roaming\\NuGet* on Windows or *~/.nuget/NuGet/* on Mac or Linux.
@@ -90,17 +92,20 @@ Select **Automatically check for missing packages during build in Visual Studio*
You must select **Allow NuGet to download missing packages** as well as **Automatically check for missing packages during build in Visual Studio** in **Options** to enable package restore during build.
+
#### Choose the default package management format
NuGet has two package management formats, [PackageReference](Package-References-in-Project-Files.md) and [packages.config](../reference/packages-config.md). Select the format you want to use from the dropdown list under **Package Management**. You can also select whether to allow format selection on first package install.
> [!Note]
+>
> - If a project doesn't support both package management formats, NuGet uses the package management format that's compatible with the project, which might not be the default you set in the options. NuGet then won't prompt for selection on first install, even if you selected that option.
>
> - If you use Package Manager Console to install the first package in a project, NuGet doesn't prompt for format selection, even if that option is selected in **Options**.
+
### Restore packages manually or automatically
After you enable package restore in **Options**, you can right-click the solution in **Solution Explorer** and select **Restore NuGet Packages** to restore packages anytime.
@@ -112,6 +117,7 @@ For projects that use ``, you can see the package references i
If you see the error **This project references NuGet package(s) that are missing on this computer**, or **One or more NuGet packages need to be restored but couldn't be because consent has not been granted**, make sure you enabled automatic restore. For older projects, see [Migrate to automatic package restore](#migrate-to-automatic-package-restore-visual-studio). Also see [Troubleshooting package restore errors](Package-restore-troubleshooting.md).
+
## Restore by using the dotnet CLI
[!INCLUDE [restore-dotnet-cli](includes/restore-dotnet-cli.md)]
@@ -120,11 +126,13 @@ If you see the error **This project references NuGet package(s) that are missing
> To add a missing package reference to the project file, use [dotnet add package](/dotnet/core/tools/dotnet-add-package), which also runs `restore`.
+
## Restore by using the NuGet CLI
[!INCLUDE [restore-nuget-exe-cli](includes/restore-nuget-exe-cli.md)]
+
## Restore by using MSBuild
You can use [msbuild -t:restore](../reference/msbuild-targets.md#restore-target) to restore packages in NuGet 4.x+ and MSBuild 15.1+, which are included with Visual Studio 2017 and higher.
@@ -144,6 +152,7 @@ To use MSBuild restore:
+
## Restore with Azure Pipelines or Azure DevOps Server
When you create a build definition in Azure Pipelines, you can include the [NuGet CLI restore](/azure/devops/pipelines/tasks/package/nuget#restore-nuget-packages) or [dotnet CLI restore](/azure/devops/pipelines/tasks/build/dotnet-core-cli) task in the definition before any build tasks. Some build templates include the restore task by default.
@@ -192,6 +201,7 @@ To avoid using packages in the HTTP cache:
- For `nuget restore`, use the `-NoHttpCache` option, or for `dotnet restore`, use the `--no-http-cache` option. These options don't affect restore operations through the Visual Studio Package Manager or Console.
+
## Migrate to automatic package restore
Earlier versions of NuGet supported an MSBuild-integrated package restore. Projects that use the deprecated MSBuild-integrated package restore should migrate to automatic package restore.
diff --git a/docs/consume-packages/Package-Source-Mapping.md b/docs/consume-packages/Package-Source-Mapping.md
index ca6707525..5386bb61d 100644
--- a/docs/consume-packages/Package-Source-Mapping.md
+++ b/docs/consume-packages/Package-Source-Mapping.md
@@ -4,9 +4,7 @@ description: Describes package source mapping functionality and how to onboard
author: nkolev92
ms.author: nikolev
ms.date: 10/18/2023
-ms.topic: conceptual
-f1_keywords:
- - "vs.toolsoptionspages.nuget_package_manager.package_source_mapping"
+ms.topic: how-to
---
# Package Source Mapping
@@ -21,6 +19,7 @@ We also have suggestions for other [best practices](..\concepts\Security-Best-Pr
Package Source Mapping was added in [NuGet 6.0](..\release-notes\NuGet-6.0.md).
Starting with Visual Studio 17.5, you can add and remove Package Source Mappings with the Visual Studio Options Dialog.
+For detailed information on all Visual Studio NuGet options, see [NuGet Options in Visual Studio](nuget-visual-studio-options.md).
### Visual Studio support
@@ -55,34 +54,23 @@ To opt into this feature, you must have a `nuget.config` file. Having a single `
_From the Package Manager UI_
-- Select a package from the list to show it in the Details Pane.
-- Press the `Configure` button to open the Package Source Mappings options page.
+* Select a package from the list to show it in the Details Pane.
+* Press the `Configure` button to open the Package Source Mappings options page.

_From the Visual Studio Options Dialog_
- - Go to the `Tools` menu in the main Visual Studio toolbar, and choose `NuGet Package Manager` -> `Package Manager Settings`.
- - Navigate to the `Package Source Mappings` page.
+* Go to the `Tools` menu in the main Visual Studio toolbar, and choose `NuGet Package Manager` -> `Package Manager Settings`.
+* Navigate to the `Package Source Mappings` page.
-
+For details about managing NuGet package source mappings, see [NuGet Options in Visual Studio](nuget-visual-studio-options.md#package-source-mapping).
-3. Press the `Add` button in the `Package Source Mappings` page to open the `Add Package Source Mappings` dialog.
-
-
-4. Enter a Package ID or Package Pattern, and select one or more package source(s) by toggling the checkbox for your desired source(s).
-
-
-
-5. The `Package Source Mapping` options page will show the newly created source mapping.
-
-
-
-6. Press `OK` on the Options Dialog to save changes to the applicable `nuget.config`.
-7. The NuGet Package Manager window will refresh and reflect the new status of the selected package's source mappings.
+The NuGet Package Manager window will refresh and reflect the new status of the selected package's source mappings.

### Enable by manually editing `nuget.config`
+
* Declare your desired package sources in your `nuget.config` file.
* Following your source declarations, add a `` element that specifies the desired mappings for each source.
* Declare exactly one `packageSource` element for each source in use.
@@ -124,9 +112,9 @@ For maximum flexibility and control, NuGet requires that all packages match a pa
### Package Pattern requirements
-All requested packages must map to one or more sources by matching a defined package pattern. In other words, once you have defined a `packageSourceMapping` element you must explicitly define which sources *every* package - *including transitive packages* - will be restored from.
+All requested packages must map to one or more sources by matching a defined package pattern. In other words, once you have defined a `packageSourceMapping` element you must explicitly define which sources _every_ package - _including transitive packages_ - will be restored from.
-* Both top-level *and transitive* packages must match defined patterns. There is no requirement that a top level package and its dependencies come from the same source.
+* Both top-level _and transitive_ packages must match defined patterns. There is no requirement that a top level package and its dependencies come from the same source.
* The same ID pattern can be defined on multiple sources, allowing matching package IDs to be restored from any of the feeds that define the pattern. However, this isn't recommended due to the impact on restore predictability (a given package could come from multiple sources). This may be a valid configuration if you trust all respective sources.
### Package Pattern Syntax
@@ -165,7 +153,7 @@ For manual onboarding you may take the following steps:
1. Run [dotnet restore](/dotnet/core/tools/dotnet-restore) to restore dependencies.
1. Run [`dotnet list package --include-transitive`](/dotnet/core/tools/dotnet-list-package#synopsis) to view all top-level and transitive packages in your solution.
* For .NET framework projects using [`packages.config`](../reference/packages-config.md), the `packages.config` file will have a flat list of all direct and transitive packages.
-1. Define mappings such that every package ID in your solution - *including transitive packages* - matches a pattern for the target source.
+1. Define mappings such that every package ID in your solution - _including transitive packages_ - matches a pattern for the target source.
1. Run [dotnet nuget locals global-packages -c](/dotnet/core/tools/dotnet-nuget-locals) to clear global-packages directory.
1. Run restore to validate that you have configured your mappings correctly. If your mappings don't fully cover every package ID in your solution, the error messages will help you identify the issue.
1. When restore succeeds, you are done! Optionally consider:
@@ -174,7 +162,7 @@ For manual onboarding you may take the following steps:
#### Automated onboarding using tool
-Many repositories have a large number of packages and doing the work manually can be time consuming. The [NuGet.PackageSourceMapper tool](https://www.nuget.org/packages/NuGet.PackageSourceMapper) can automatically generate a NuGet.config for you, based on your project's known packages and sources.
+Many repositories have a large number of packages and doing the work manually can be time consuming. The [NuGet.PackageSourceMapper tool](https://www.nuget.org/packages/NuGet.PackageSourceMapper) can automatically generate a NuGet.config for you, based on your project's known packages and sources.
The package source mapper tool requires you to have completed a successful package restore in which it will read each respective `.nupkg.metadata` file generated as part of your build to best understand how you map your respective packages and sources. Tool not only covers top dependencies it also considers all the transitive dependencies when generating mapping.
@@ -183,6 +171,7 @@ Tool has several option how to generate mapping pattern depending on your need,
For an idea of how your source mappings may look like, refer to our [samples repo](https://github.com/NuGet/Samples/tree/main/PackageSourceMappingExample).
> [!Note]
+>
> * There are no nuget.exe or dotnet.exe commands for managing the package source mapping configuration, see [NuGet/Home#10735](https://github.com/NuGet/Home/issues/10735).
> * There are no means of mapping packages at package installation time, see [NuGet/Home#10730](https://github.com/NuGet/Home/issues/10730).
> * There is a limitation when using the `DotNetCoreCLI@2` Azure Pipelines task which can be worked around by using `feed-` prefixes in your source mapping configuration. It is recommended however to use `NuGetAuthenticate` for your authentication needs and call the dotnet cli directly from a script task. See [microsoft/azure-pipelines-tasks#15542](https://github.com/microsoft/azure-pipelines-tasks/issues/15542).
diff --git a/docs/consume-packages/Package-restore-troubleshooting.md b/docs/consume-packages/Package-restore-troubleshooting.md
index 704e12429..1bac3ac4f 100644
--- a/docs/consume-packages/Package-restore-troubleshooting.md
+++ b/docs/consume-packages/Package-restore-troubleshooting.md
@@ -4,12 +4,12 @@ description: A description of common NuGet restore errors in Visual Studio and h
author: JonDouglas
ms.author: jodou
ms.date: 05/25/2018
-ms.topic: conceptual
+ms.topic: troubleshooting-general
---
# Troubleshooting package restore errors
-This article focuses on common errors when restoring packages and steps to resolve them.
+This article focuses on common errors when restoring packages and steps to resolve them.
Package Restore tries to install all package dependencies to the correct state matching the package references in your project file (*.csproj*) or your *packages.config* file. (In Visual Studio, the references appear in Solution Explorer under the **Dependencies \ NuGet** or the **References** node.) To follow the required steps to restore packages, see [Restore packages](../consume-packages/package-restore.md#restore-packages). If the package references in your project file (*.csproj*) or your *packages.config* file are incorrect (they do not match your desired state following Package Restore), then you need to either install or update packages instead of using Package Restore.
@@ -24,7 +24,7 @@ If you're using Visual Studio, first enable package restore as follows. Otherwis
1. Select **OK**.
1. Build your project again.
-
+
These settings can also be changed in your `NuGet.Config` file; see the [consent](#consent) section. If your project is an older project that uses the MSBuild-integrated package restore, you may need to [migrate](package-restore.md#migrate-to-automatic-package-restore-visual-studio) to automatic package restore.
diff --git a/docs/consume-packages/PackageDownload-Functionality.md b/docs/consume-packages/PackageDownload-Functionality.md
index 2d926ad2e..8b5bb01b3 100644
--- a/docs/consume-packages/PackageDownload-Functionality.md
+++ b/docs/consume-packages/PackageDownload-Functionality.md
@@ -4,7 +4,7 @@ description: Describes the PackageDownload feature, which is a complement to Pac
author: nkolev92
ms.author: nikolev
ms.date: 12/22/2021
-ms.topic: conceptual
+ms.topic: article
---
# PackageDownload
diff --git a/docs/consume-packages/Packages-and-Source-Control.md b/docs/consume-packages/Packages-and-Source-Control.md
index dd01f03a7..2d7cb5516 100644
--- a/docs/consume-packages/Packages-and-Source-Control.md
+++ b/docs/consume-packages/Packages-and-Source-Control.md
@@ -4,7 +4,7 @@ description: Considerations for how to treat NuGet packages within version contr
author: JonDouglas
ms.author: jodou
ms.date: 03/16/2018
-ms.topic: conceptual
+ms.topic: how-to
---
# Omitting NuGet packages in source control systems
diff --git a/docs/consume-packages/Reinstalling-and-Updating-Packages.md b/docs/consume-packages/Reinstalling-and-Updating-Packages.md
index 574b5257c..f4465e821 100644
--- a/docs/consume-packages/Reinstalling-and-Updating-Packages.md
+++ b/docs/consume-packages/Reinstalling-and-Updating-Packages.md
@@ -4,7 +4,7 @@ description: Learn how to reinstall and update NuGet packages to address broken
author: JonDouglas
ms.author: jodou
ms.date: 11/03/2023
-ms.topic: conceptual
+ms.topic: how-to
---
# Reinstall and update NuGet packages in Visual Studio
diff --git a/docs/consume-packages/Team-Foundation-Build.md b/docs/consume-packages/Team-Foundation-Build.md
index 8d8fb405a..7b631ef7e 100644
--- a/docs/consume-packages/Team-Foundation-Build.md
+++ b/docs/consume-packages/Team-Foundation-Build.md
@@ -4,7 +4,7 @@ description: A walkthrough of how NuGet package restore with with Team Foundatio
author: JonDouglas
ms.author: jodou
ms.date: 01/09/2017
-ms.topic: conceptual
+ms.topic: concept-article
---
# Setting up package restore with Team Foundation Build
diff --git a/docs/consume-packages/configuring-nuget-behavior.md b/docs/consume-packages/configuring-nuget-behavior.md
index ac178fc79..388cafd94 100644
--- a/docs/consume-packages/configuring-nuget-behavior.md
+++ b/docs/consume-packages/configuring-nuget-behavior.md
@@ -4,7 +4,7 @@ description: NuGet.Config files control NuGet's behavior, and can be modified wi
author: JonDouglas
ms.author: jodou
ms.date: 01/10/2022
-ms.topic: conceptual
+ms.topic: article
---
# Common NuGet configurations
diff --git a/docs/consume-packages/consuming-packages-authenticated-feeds.md b/docs/consume-packages/consuming-packages-authenticated-feeds.md
index b728cf39c..126662636 100644
--- a/docs/consume-packages/consuming-packages-authenticated-feeds.md
+++ b/docs/consume-packages/consuming-packages-authenticated-feeds.md
@@ -4,7 +4,8 @@ description: Consuming packages from authenticated feeds in all NuGet client sce
author: nkolev92
ms.author: nikolev
ms.date: 12/22/2023
-ms.topic: conceptual
+ms.topic: how-to
+ms.custom: sfi-ropc-nochange
---
# Consuming packages from authenticated feeds
diff --git a/docs/consume-packages/install-use-packages-dotnet-cli.md b/docs/consume-packages/install-use-packages-dotnet-cli.md
index 39144ba75..44e878149 100644
--- a/docs/consume-packages/install-use-packages-dotnet-cli.md
+++ b/docs/consume-packages/install-use-packages-dotnet-cli.md
@@ -4,7 +4,7 @@ description: See how to use the dotnet CLI to install, list, remove, and update
author: mikejo5000
ms.author: mikejo
ms.date: 03/03/2025
-ms.topic: conceptual
+ms.topic: install-set-up-deploy
---
# Install and manage NuGet packages with the dotnet CLI
diff --git a/docs/consume-packages/install-use-packages-nuget-cli.md b/docs/consume-packages/install-use-packages-nuget-cli.md
index fe0a5e8f4..3b6639dc4 100644
--- a/docs/consume-packages/install-use-packages-nuget-cli.md
+++ b/docs/consume-packages/install-use-packages-nuget-cli.md
@@ -4,7 +4,7 @@ description: Instructions for using the NuGet CLI, nuget.exe, to manage NuGet pa
author: mikejo5000
ms.author: mikejo
ms.date: 03/03/2025
-ms.topic: conceptual
+ms.topic: how-to
---
# Manage NuGet packages with the NuGet CLI
diff --git a/docs/consume-packages/install-use-packages-powershell.md b/docs/consume-packages/install-use-packages-powershell.md
index d2a177423..0e7881326 100644
--- a/docs/consume-packages/install-use-packages-powershell.md
+++ b/docs/consume-packages/install-use-packages-powershell.md
@@ -4,7 +4,7 @@ description: See how to work with NuGet packages by using PowerShell commands in
author: JonDouglas
ms.author: jodou
ms.date: 03/03/2025
-ms.topic: conceptual
+ms.topic: how-to
f1_keywords:
- "vs.nuget.packagemanager.console"
---
diff --git a/docs/consume-packages/install-use-packages-visual-studio.md b/docs/consume-packages/install-use-packages-visual-studio.md
index 302e9d3cd..db1eb5d54 100644
--- a/docs/consume-packages/install-use-packages-visual-studio.md
+++ b/docs/consume-packages/install-use-packages-visual-studio.md
@@ -4,11 +4,8 @@ description: Learn how to use the NuGet Package Manager UI in Visual Studio for
author: JonDouglas
ms.author: jodou
ms.date: 03/03/2025
-ms.topic: conceptual
+ms.topic: install-set-up-deploy
f1_keywords:
- - "vs.toolsoptionspages.nuget_package_manager"
- - "vs.toolsoptionspages.nuget_package_manager.general"
- - "vs.toolsoptionspages.nuget_package_manager.package_sources"
- "vs.nuget.packagemanager.ui"
---
@@ -48,7 +45,7 @@ To find and install a NuGet package with Visual Studio, follow these steps:
> In Visual Studio 17.11 and higher, package owners are shown as profile hyperlinks when supported by the selected package source.
> Package ownership is defined by the package source. For example, see [Manage package owners on nuget.org](../nuget-org/publish-a-package.md#manage-package-owners-on-nugetorg).
>
- > In Visual Studio 17.10 and earlier, the package _author_ metadata is shown, which appears as plain-text.
+ > In Visual Studio 17.10 and earlier, the package *author* metadata is shown, which appears as plain-text.
> For more information, see [Authors package metadata](../create-packages/package-authoring-best-practices.md#authors).
- Select a package to see detailed package information.
@@ -129,8 +126,6 @@ In this example, the ClassLibrary1 project is using EntityFramework 6.2.0, where
Visual Studio ignores the order of package sources, and uses the package from whichever source is the first to respond to a request. For more information, see [Restore packages](package-restore.md). For information about how to load a package from a specific source, see [Package source mapping](package-source-mapping.md).
-To manage NuGet package sources, follow these steps:
-
1. To change the source from which Visual Studio loads package metadata, select a source from the **Package source** selector.

@@ -139,21 +134,7 @@ To manage NuGet package sources, follow these steps:

-1. In the **Options** window, expand the **NuGet Package Manager** node and select **Package Sources**.
-
- 
-
-1. To add a source, select **+**, edit the **Name**, enter the URL or path in **Source**, and then select **Update**.
-
- The source now appears in the **Package source** dropdown list.
-
-1. To change a package source, select it, make edits in the **Name** and **Source** boxes, and select **Update**.
-
-1. To disable a package source, clear the box to the left of the name in the list.
-
-1. To remove a package source, select it, and then select the **X** button.
-
- If a package source reappears after you delete it, it might be listed in a computer-level or user-level *NuGet.config* file. For the location of these files, see [Common NuGet configurations](../consume-packages/configuring-nuget-behavior.md). Remove the package source in the files by editing them manually or using the [nuget sources command](../reference/nuget-exe-CLI-reference.md).
+1. To manage NuGet package sources, see [NuGet Options in Visual Studio](nuget-visual-studio-options.md#package-sources).
## NuGet Package Manager Options control
diff --git a/docs/consume-packages/installing-signed-packages.md b/docs/consume-packages/installing-signed-packages.md
index 0814218f4..ad5e83f29 100644
--- a/docs/consume-packages/installing-signed-packages.md
+++ b/docs/consume-packages/installing-signed-packages.md
@@ -4,7 +4,7 @@ description: Describes the process of installing signed NuGet packages and confi
author: JonDouglas
ms.author: jodou
ms.date: 11/29/2018
-ms.topic: conceptual
+ms.topic: install-set-up-deploy
---
# Manage package trust boundaries
diff --git a/docs/consume-packages/managing-the-global-packages-and-cache-folders.md b/docs/consume-packages/managing-the-global-packages-and-cache-folders.md
index aedb1a967..faac424cd 100644
--- a/docs/consume-packages/managing-the-global-packages-and-cache-folders.md
+++ b/docs/consume-packages/managing-the-global-packages-and-cache-folders.md
@@ -4,19 +4,19 @@ description: How to manage the global package installation folder, the package c
author: JonDouglas
ms.author: jodou
ms.date: 03/19/2018
-ms.topic: conceptual
+ms.topic: how-to
---
# Managing the global packages, cache, and temp folders
Whenever you install, update, or restore a package, NuGet manages packages and package information in several folders outside of your project structure:
-| Name | Description and Location (per user)|
+| Name | Location |
| --- | --- |
-| global-packages | The *global-packages* folder is where NuGet installs any downloaded package. Each package is fully expanded into a subfolder that matches the package identifier and version number. Projects using the [PackageReference](package-references-in-project-files.md) format always use packages directly from this folder. When using the [packages.config](../reference/packages-config.md), packages are installed to the *global-packages* folder, then copied into the project's `packages` folder.
- Windows: `%userprofile%\.nuget\packages`
- Mac/Linux: `~/.nuget/packages`
- Override using the NUGET_PACKAGES environment variable, the `globalPackagesFolder` or `repositoryPath` [configuration settings](../reference/nuget-config-file.md#config-section) (when using PackageReference and `packages.config`, respectively), or the `RestorePackagesPath` MSBuild property (MSBuild only). The environment variable takes precedence over the configuration setting.
|
-| http-cache | The Visual Studio Package Manager (NuGet 3.x+) and the `dotnet` tool store copies of downloaded packages in this cache (saved as `.dat` files), organized into subfolders for each package source. Packages are not expanded, and the cache has an expiration time of 30 minutes.
- Windows: `%localappdata%\NuGet\v3-cache`
- Mac/Linux: `~/.local/share/NuGet/v3-cache`
- Override using the NUGET_HTTP_CACHE_PATH environment variable.
|
-| temp | A folder where NuGet stores temporary files during its various operations.
Windows: `%temp%\NuGetScratch`Mac: `/tmp/NuGetScratch`Linux: `/tmp/NuGetScratch`Override using the NUGET_SCRATCH environment variable. |
-| plugins-cache **4.8+** | A folder where NuGet stores the results from the operation claims request.
- Windows: `%localappdata%\NuGet\plugins-cache`
- Mac/Linux: `~/.local/share/NuGet/plugins-cache`
- Override using the NUGET_PLUGINS_CACHE_PATH environment variable.
|
+| [global-packages](#global-packages) | - Windows: `%userprofile%\.nuget\packages`
- Mac/Linux: `~/.nuget/packages`
- Override using the NUGET_PACKAGES environment variable, the `globalPackagesFolder` or `repositoryPath` [configuration settings](../reference/nuget-config-file.md#config-section) (when using PackageReference and `packages.config`, respectively), or the `RestorePackagesPath` MSBuild property (MSBuild only). The environment variable takes precedence over the configuration setting.
|
+| [http-cache](#http-cache) | - Windows: `%localappdata%\NuGet\v3-cache`
- Mac/Linux: `~/.local/share/NuGet/v3-cache`
- Override using the NUGET_HTTP_CACHE_PATH environment variable.
|
+| [temp](#temp) | Windows: `%temp%\NuGetScratch`Mac: `/tmp/NuGetScratch`Linux: `/tmp/NuGetScratch`Override using the NUGET_SCRATCH environment variable. |
+| [plugins-cache](#plugin-cache) **4.8+** | - Windows: `%localappdata%\NuGet\plugins-cache`
- Mac/Linux: `~/.local/share/NuGet/plugins-cache`
- Override using the NUGET_PLUGINS_CACHE_PATH environment variable.
|
> [!Note]
> NuGet 3.5 and earlier uses *packages-cache* instead of the *http-cache*, which is located in `%localappdata%\NuGet\Cache`.
@@ -27,6 +27,54 @@ When asked to retrieve a package, NuGet first looks in the *global-packages* fol
For more information, see [What happens when a package is installed?](../concepts/package-installation-process.md).
+## global-packages
+
+The *global-packages* folder is where NuGet installs any downloaded package.
+Each package is fully expanded into a subfolder that matches the package identifier and version number.
+Projects using the [PackageReference](package-references-in-project-files.md) format always use packages directly from this folder.
+When using the [packages.config](../reference/packages-config.md), packages are installed to the *global-packages* folder, then copied into the project's `packages` folder.
+
+### Cleaning the global-packages directory
+
+The global-packages directory needs to be manually cleaned to remove packages that are no longer used.
+You can do this with the `dotnet nuget locals global-packages --clean` command, or the "clear NuGet local resources" button in Visual Studio's options (equivalent to `dotnet nuget locals all --clear`).
+After clearing the global-packages directory, you will need to restore your projects again to redownload all required packages.
+In Visual Studio, you may need to reload your solution to clear NuGet's "up to date restores" cache, or alternatively do a command line restore (for example, within Visual Studio's terminal window) with `msbuild -t:restore your.sln`.
+
+To clean only unused packages, it's a two step process.
+First, there is a [nuget.config setting `updatePackageLastAccessTime`](../reference/nuget-config-file.md) that should be enabled.
+This setting will cause NuGet to update each package's `.nupkg.metadata` file when it is used in a restore.
+When restore runs, but a project is considered already up to date, the package timestamps are *not* updated.
+The `.nupkg.metadata` file is the last file that NuGet will create when downloading and extracting packages during a restore or install, and is the file that restore uses to check if a package has been extracted successfully.
+
+Second, run a tool to perform the cleanup.
+After the `updatePackageLastAccessTime` setting is enabled, we recommend waiting a few days to make sure that all the packages you use regularly have had their timestamps updated.
+
+At this time, NuGet does not provide a tool or command to do this.
+You can [add a 👍 reaction to this GitHub issue](https://github.com/NuGet/Home/issues/4980) to signal your interest.
+Some community members have created their own open source NuGet cleaner tools that you can search for.
+
+If you are going to write your own cleanup tool, it is important that the `.nupkg.metadata` file is deleted if any of the other package files are deleted, so we recommend that this file is deleted first.
+Otherwise projects referencing the package may have unexpected behavior.
+If writing a cleanup tool in .NET, consider using `ConcurrencyUtilities.ExecuteWithFileLocked[Async](..)` from the [NuGet.Common package](https://www.nuget.org/packages/NuGet.Common), passing the full nupkg path of the package directory you're going to delete as the key, to avoid deleting a package that restore is trying to extract at the same time.
+The global packages directory can be programatically found with the [NuGet.Configuration package](https://www.nuget.org/packages/NuGet.Configuration).
+Use `Settings.LoadDefaultSettings(path)` to get an `ISettings` instance (you can pass `null` as the path, or pass a directory if you want to handle solutions with a nuget.config that redirects the global-packages directory), and then use `SettingsUtility.GetGlobalPackagesFolder(settings)`.
+Alternatively, you can run `dotnet nuget locals global-packages --list` as a child process and parse the output.
+
+## http-cache
+
+NuGet will cache copies of most NuGet feed communications (excluding search), organized into subfolders for each package source.
+Packages are not expanded, and files with a last modified date older than 30 minutes are typically considered expired.
+
+## temp
+
+A folder where NuGet may store temporary files during its various operations.
+
+## plugin-cache
+
+A folder where NuGet stores the results from the operation claims request.
+See the [cross platform plugins reference](../reference/extensibility/NuGet-Cross-Platform-Plugins.md) for more information.
+
## Viewing folder locations
You can view locations using the [nuget locals command](../reference/cli-reference/cli-ref-locals.md):
@@ -70,10 +118,13 @@ info : global-packages: /home/user1/.nuget/packages/
info : temp: /tmp/NuGetScratchuser1
info : plugins-cache: /home/user1/.local/share/NuGet/plugins-cache
```
+
To display the location of a single folder, use `http-cache`, `global-packages`, `temp`, or `plugins-cache` instead of `all`.
## Clearing local folders
+### Command-line
+
If you encounter package installation problems or otherwise want to ensure that you're installing packages from a remote gallery, use the `locals --clear` option (dotnet.exe) or `locals -clear` (nuget.exe), specifying the folder to clear, or `all` to clear all folders:
```cli
@@ -103,9 +154,23 @@ nuget locals all -clear
Any packages used by projects that are currently open in Visual Studio are not cleared from the *global-packages* folder.
-Starting in Visual Studio 2017, use the **Tools > NuGet Package Manager > Package Manager Settings** menu command, then select **Clear All NuGet Cache(s)**. Managing the cache isn't presently available through the Package Manager Console. In Visual Studio 2015, use the CLI commands instead.
+### Visual Studio
+
+Visual Studio supports clearing all local folders in the "NuGet Package Manager" options found under the **Tools > NuGet Package Manager > Package Manager Settings** menu command.
+
+On the General page, select **Clear NuGet local resources**.
+Once started, this action cannot be cancelled.
+A progress bar will be shown and will contain the final status of the command.
+
+The [Output Window](/visualstudio/ide/output-window) when selecting Show output from "Package Manager" will show additional details about the clear command, including any error messages.
+
+### Clear NuGet Local Resources
+
+
+
+Managing the cache isn't presently available through the Package Manager Console.
-
+For more information, see [NuGet Options in Visual Studio](nuget-visual-studio-options.md#clear-nuget-local-resources).
## Troubleshooting errors
diff --git a/docs/consume-packages/media/Restore-01-AutoRestoreOptions.png b/docs/consume-packages/media/Restore-01-AutoRestoreOptions.png
deleted file mode 100644
index 4283c072e..000000000
Binary files a/docs/consume-packages/media/Restore-01-AutoRestoreOptions.png and /dev/null differ
diff --git a/docs/consume-packages/media/Restore-02-PackageFormatOptions.png b/docs/consume-packages/media/Restore-02-PackageFormatOptions.png
deleted file mode 100644
index 204b39e0e..000000000
Binary files a/docs/consume-packages/media/Restore-02-PackageFormatOptions.png and /dev/null differ
diff --git a/docs/consume-packages/media/options-clear-caches.png b/docs/consume-packages/media/options-clear-caches.png
deleted file mode 100644
index 0a99c9b38..000000000
Binary files a/docs/consume-packages/media/options-clear-caches.png and /dev/null differ
diff --git a/docs/consume-packages/media/package-sources.png b/docs/consume-packages/media/package-sources.png
deleted file mode 100644
index 507114bb8..000000000
Binary files a/docs/consume-packages/media/package-sources.png and /dev/null differ
diff --git a/docs/consume-packages/media/packageSourceMapping_VSOptions_AddMappingCompleted.png b/docs/consume-packages/media/packageSourceMapping_VSOptions_AddMappingCompleted.png
deleted file mode 100644
index 15324be78..000000000
Binary files a/docs/consume-packages/media/packageSourceMapping_VSOptions_AddMappingCompleted.png and /dev/null differ
diff --git a/docs/consume-packages/media/packageSourceMapping_VSOptions_AddMappingFilled.png b/docs/consume-packages/media/packageSourceMapping_VSOptions_AddMappingFilled.png
deleted file mode 100644
index 6e0e9390f..000000000
Binary files a/docs/consume-packages/media/packageSourceMapping_VSOptions_AddMappingFilled.png and /dev/null differ
diff --git a/docs/consume-packages/media/packageSourceMapping_VSOptions_AddMappingOpened.png b/docs/consume-packages/media/packageSourceMapping_VSOptions_AddMappingOpened.png
deleted file mode 100644
index 7795c7351..000000000
Binary files a/docs/consume-packages/media/packageSourceMapping_VSOptions_AddMappingOpened.png and /dev/null differ
diff --git a/docs/consume-packages/media/packageSourceMapping_VSOptions_NoMappings.png b/docs/consume-packages/media/packageSourceMapping_VSOptions_NoMappings.png
deleted file mode 100644
index 15b05fcf5..000000000
Binary files a/docs/consume-packages/media/packageSourceMapping_VSOptions_NoMappings.png and /dev/null differ
diff --git a/docs/consume-packages/media/vsoptions/configuration-files.png b/docs/consume-packages/media/vsoptions/configuration-files.png
new file mode 100644
index 000000000..73d576337
Binary files /dev/null and b/docs/consume-packages/media/vsoptions/configuration-files.png differ
diff --git a/docs/consume-packages/media/vsoptions/general.png b/docs/consume-packages/media/vsoptions/general.png
new file mode 100644
index 000000000..debce051c
Binary files /dev/null and b/docs/consume-packages/media/vsoptions/general.png differ
diff --git a/docs/consume-packages/media/vsoptions/package-source-add.png b/docs/consume-packages/media/vsoptions/package-source-add.png
new file mode 100644
index 000000000..69113b750
Binary files /dev/null and b/docs/consume-packages/media/vsoptions/package-source-add.png differ
diff --git a/docs/consume-packages/media/vsoptions/package-source-http-error.png b/docs/consume-packages/media/vsoptions/package-source-http-error.png
new file mode 100644
index 000000000..9ce2f2722
Binary files /dev/null and b/docs/consume-packages/media/vsoptions/package-source-http-error.png differ
diff --git a/docs/consume-packages/media/vsoptions/package-source-http-warn.png b/docs/consume-packages/media/vsoptions/package-source-http-warn.png
new file mode 100644
index 000000000..f1a4569d4
Binary files /dev/null and b/docs/consume-packages/media/vsoptions/package-source-http-warn.png differ
diff --git a/docs/consume-packages/media/vsoptions/package-source-machine-wide.png b/docs/consume-packages/media/vsoptions/package-source-machine-wide.png
new file mode 100644
index 000000000..aae8df7eb
Binary files /dev/null and b/docs/consume-packages/media/vsoptions/package-source-machine-wide.png differ
diff --git a/docs/consume-packages/media/vsoptions/package-source-mapping-add.png b/docs/consume-packages/media/vsoptions/package-source-mapping-add.png
new file mode 100644
index 000000000..7c9fc5183
Binary files /dev/null and b/docs/consume-packages/media/vsoptions/package-source-mapping-add.png differ
diff --git a/docs/consume-packages/media/vsoptions/package-source-mapping-missing-source.png b/docs/consume-packages/media/vsoptions/package-source-mapping-missing-source.png
new file mode 100644
index 000000000..120c2374b
Binary files /dev/null and b/docs/consume-packages/media/vsoptions/package-source-mapping-missing-source.png differ
diff --git a/docs/consume-packages/media/vsoptions/package-source-mapping.png b/docs/consume-packages/media/vsoptions/package-source-mapping.png
new file mode 100644
index 000000000..eb4c24d0b
Binary files /dev/null and b/docs/consume-packages/media/vsoptions/package-source-mapping.png differ
diff --git a/docs/consume-packages/media/vsoptions/package-sources-page.png b/docs/consume-packages/media/vsoptions/package-sources-page.png
new file mode 100644
index 000000000..8edf71c39
Binary files /dev/null and b/docs/consume-packages/media/vsoptions/package-sources-page.png differ
diff --git a/docs/consume-packages/migrate-packages-config-to-package-reference.md b/docs/consume-packages/migrate-packages-config-to-package-reference.md
index 59fb31f35..1bb9a436f 100644
--- a/docs/consume-packages/migrate-packages-config-to-package-reference.md
+++ b/docs/consume-packages/migrate-packages-config-to-package-reference.md
@@ -4,7 +4,7 @@ description: Details on how to migrate a project from the packages.config manage
author: JonDouglas
ms.author: jodou
ms.date: 08/23/2021
-ms.topic: conceptual
+ms.topic: upgrade-and-migration-article
---
# Migrate from packages.config to PackageReference
@@ -87,7 +87,9 @@ You should now be able to see the migration option. Note that this option is not
## Create a package after migration
-Once the migration is complete, we recommend that you add a reference to the [nuget.build.tasks.pack](https://www.nuget.org/packages/nuget.build.tasks.pack) nuget package, and then use [msbuild -t:pack](../reference/msbuild-targets.md#pack-target) to create the package. Although in some scenarios you could use `dotnet.exe pack` instead of `msbuild -t:pack`, it is not recommended.
+Once the migration is complete, we recommend that you copy your package metadata from a `.nuspec` file to [MSBuild properties](../reference/msbuild-targets.md#pack-target), and then you can use `msbuild -t:pack` to create the package.
+If you are using Visual Studio 2022 or earlier, you will also need to install the NuGet.Build.Tasks.Pack package.
+From Visual Studio 2026, pack is built into MSBuild.
## Package compatibility issues
diff --git a/docs/consume-packages/nuget-https-everywhere.md b/docs/consume-packages/nuget-https-everywhere.md
new file mode 100644
index 000000000..47c97e01d
--- /dev/null
+++ b/docs/consume-packages/nuget-https-everywhere.md
@@ -0,0 +1,97 @@
+---
+title: NuGet HTTPS Everywhere
+description: Learn why NuGet enforces HTTPS connections for package sources, what errors like NU1302 mean, and how to safely allow HTTP feeds when necessary.
+author: Nigusu-Allehu
+ms.author: nyenework
+ms.date: 10/28/2025
+ms.topic: conceptual
+ai-usage: ai-generated
+---
+
+# NuGet HTTPS Everywhere
+
+NuGet requires all package sources to use **HTTPS** instead of **HTTP**.
+This enforcement protects the software supply chain by preventing tampering and interception during package restore and related operations.
+NuGet enforces this requirement by producing an error and stopping the operation when an HTTP source is used.
+
+## Understanding the HTTP Error
+
+This error occurs when one or more package sources in your configuration use an **HTTP** URL instead of **HTTPS**.
+
+In earlier NuGet versions, this scenario produced a **warning** ([`NU1803`](../reference/errors-and-warnings/nu1803.md)).
+Beginning with [**NuGet 6.12**](../release-notes/NuGet-6.12.md) and later, it now results in an **error** unless the use of HTTP sources is explicitly permitted.
+
+### Recommended Resolution
+
+Before allowing HTTP connections, confirm whether your package source supports HTTPS.
+If it does, update the feed URL to use the secure protocol:
+
+```xml
+
+```
+
+Switching to HTTPS ensures end-to-end encryption and is the recommended and more secure approach.
+
+### Allowing Insecure HTTP Feeds (Opt-Out)
+
+If HTTPS is not available and you operate in a trusted or isolated environment, you can explicitly allow HTTP sources.
+
+#### Option 1: Set allowInsecureConnections in your `NuGet.Config`
+
+* **Use Visual Studio**
+
+ Enable or disable allowing insecure HTTP connections with the [Package Sources settings](/nuget/consume-packages/nuget-visual-studio-options#allow-insecure-connections) under the Visual Studio options > **NuGet Package Manager**.
+
+* **Edit `NuGet.Config` manually**
+
+ Add the `allowInsecureConnections="true"` attribute to the affected source:
+
+ ```xml
+
+
+
+
+
+
+ ```
+
+#### Option 2: Use the Command-Line Parameter
+
+For commands that support it, include the following flag to temporarily permit HTTP connections:
+
+For **dotnet** commands:
+
+```bash
+--allow-insecure-connections
+```
+
+For **NuGet.exe** commands, use:
+
+```powershell
+-AllowInsecureConnections
+```
+
+#### Commands that support opt-out options
+
+| Tool | Commands | Support for Allow Insecure Connection |
+| -------------- | ------------------------- | ------------------------------------- |
+| **nuget.exe** | `push` | NuGet **7.0** |
+| **dotnet CLI** | `dotnet nuget push` | .NET **10.0.1xx** and newer |
+| **dotnet CLI** | `dotnet nuget add source` | .NET **9.0.1xx** and newer |
+
+## HTTPS Enforcement Rollout Across Tools
+
+NuGet’s HTTPS enforcement was introduced gradually across releases.
+The following table summarizes the progression from [**warnings (NU1803)**](../reference/errors-and-warnings/nu1803.md) to [**errors (NU1302)**](../reference/errors-and-warnings/nu1302.md).
+
+| Versions Affected | Behavior |
+| ----------------------------------------------------- | --------------------------------------------------------------------- |
+| [NuGet.exe 6.3](../release-notes/NuGet-6.3.md)+, Visual Studio 17.3+, .NET 6.0.100+ | ⚠️ **Warning (NU1803)** – HTTP sources allowed but discouraged |
+| [NuGet.exe 6.12](../release-notes/NuGet-6.12.md)+, Visual Studio 17.12+, .NET 9.0.100+ | ❌ **Error (NU1302)** – HTTP sources blocked unless explicitly allowed|
+
+## See Also
+
+* [NU1302](../reference/errors-and-warnings/nu1302.md)
+* [NU1803](../reference/errors-and-warnings/nu1803.md)
+* [NuGet.Config Reference](../reference/nuget-config-file.md#packagesources)
+* [NuGet Visual Studio Options](../consume-packages/nuget-visual-studio-options.md)
diff --git a/docs/consume-packages/nuget-visual-studio-options.md b/docs/consume-packages/nuget-visual-studio-options.md
new file mode 100644
index 000000000..b773e33e8
--- /dev/null
+++ b/docs/consume-packages/nuget-visual-studio-options.md
@@ -0,0 +1,161 @@
+---
+title: NuGet Options in Visual Studio
+description: Reference guide for NuGet Package Manager options in Visual Studio, including General, Configuration Files, Package Sources, and Package Source Mapping settings.
+author: donnie-msft
+ms.author: eagoodso
+ms.date: 10/03/2025
+ms.topic: reference
+f1_keywords:
+ - "vs.toolsoptionspages.nuget_package_manager"
+ - "vs.toolsoptionspages.nuget_package_manager.general"
+ - "vs.toolsoptionspages.nuget_package_manager.configuration_files"
+ - "vs.toolsoptionspages.nuget_package_manager.package_sources"
+ - "vs.toolsoptionspages.nuget_package_manager.package_source_mapping"
+---
+
+# NuGet Package Manager Options in Visual Studio
+
+Visual Studio provides several options pages for configuring NuGet Package Manager behavior.
+Configuration settings for NuGet are stored in your [NuGet.Config file(s)](../reference/nuget-config-file.md).
+
+## Accessing NuGet Options
+
+There are multiple ways to access NuGet Package Manager options:
+
+1. **From the main menu**: Go to **Tools > Options**, then expand **NuGet Package Manager** in the left pane.
+1. **From the NuGet menu** found under the **Tools > NuGet Package Manager > Package Manager Settings** menu command.
+1. **Quick search**: Use [Visual Studio search](/visualstudio/ide/visual-studio-search) to search for "NuGet" or a NuGet-related setting name to quickly jump to its Options page.
+1. **From Package Manager UI**: Press the settings (gear) icon in the Package Manager UI toolbar.
+1. **From Package Manager Console**: Click the settings (gear) icon in the Package Manager Console toolbar.
+
+## General
+
+The General options page contains settings that control NuGet's package management behavior.
+
+
+
+### Package Restore
+
+Settings for automatic package restore during build operations:
+
+- **Allow NuGet to download missing packages**: Select to enable package restore and the Restore NuGet Packages command.
+- **Automatically check for missing packages during build in Visual Studio**: Select to automatically restore any missing packages when you run a build from Visual Studio.
+
+See [Package Restore](Package-Restore.md) for more information on package restore behavior.
+
+### Binding Redirects
+
+- **Skip applying binding redirects**: When enabled, NuGet will not automatically add or update binding redirects in app.config or web.config files during package installation or updates
+
+### Package Management
+
+- **Default package management format**: Choose between the NuGet formats [PackageReference](package-references-in-project-files.md) (recommended for most projects) and [packages.config](../reference/packages-config.md) (legacy format for older projects).
+ For more information, see [Choose default package management format](package-restore.md#choose-default-package-management-format).
+
+ - **PackageReference**: Stores package references directly in project files. This is the modern format that supports better dependency resolution and is required for SDK-style projects
+ - **packages.config**: Legacy XML file format that stores package information separately from the project file
+
+- **Prompt for format selection on first package install**: When enabled, Visual Studio will ask you to choose between PackageReference and packages.config the first time you install a package in a project that doesn't already have packages.
+
+### Clear NuGet Local Resources
+
+The **Clear NuGet Local Resources** command button allows you to clear NuGet's local caches, including:
+
+- **http-cache**: Downloaded package metadata and packages
+- **global-packages**: Installed packages folder
+- **temp**: Temporary files
+- **plugins-cache**: Plugin operation results
+
+For more information on NuGet caches and folders, see [Managing the global packages, cache, and temp folders](managing-the-global-packages-and-cache-folders.md).
+
+## Configuration Files
+
+The Configuration Files options page displays the NuGet.Config files that apply to your current solution and allows you to open them directly in Visual Studio for editing.
+
+To edit a file, select a File Path and press the "Open" button.
+The file will open in a new tab in Visual Studio where it may be edited directly.
+
+
+
+Configuration files are listed in order from highest to lowest priority.
+NuGet uses a hierarchical configuration system where settings from multiple config files are merged.
+For more information, see [Common NuGet configurations](configuring-nuget-behavior.md).
+
+## Package Sources
+
+The Package Sources options page allows you to manage the sources from which NuGet downloads packages.
+
+
+
+### Managing Package Sources
+
+Lists all configured package sources according to your NuGet.Config files.
+
+- **Name**: Display name for the source
+- **Source**: URL or file path for the package source
+- **Enabled checkbox**: Enable or disable a source without removing it.
+- **Allow Insecure Connections**: Enable or disable allowing insecure HTTP connections
+
+To modify, use the **Add, Edit, and Remove buttons** below the table.
+Checkboxes may be toggled directly in the table.
+Press "Save" on the Add/Edit dialog and the changes will be updated in the relevant NuGet.Config file.
+
+
+
+### Machine-wide Package Sources
+
+Package sources defined at the machine level appear in a dedicated section below.
+These are generally provisioned by Visual Studio workloads and can only be enabled or disabled using the checkbox in the Enabled column.
+
+
+
+### Allow Insecure Connections
+
+For security reasons, NuGet enforces the use of HTTPS sources by default.
+If you need to use an HTTP source, you must explicitly allow it.
+When an HTTP source is used, the first column of the Package Sources table will show an icon with information about a warning or an error with the package source in that row.
+
+⚠️ When an HTTP package source is used and Allow Insecure Connections is enabled, a warning is shown in the leftmost status column:
+
+> HTTP sources are insecure. Consider using HTTPS instead. 'AllowInsecureConnections' is enabled, permitting HTTP access.
+
+
+
+❌ When an HTTP source is used and Allow Insecure Connections is disabled, an error is shown in the leftmost status column and NuGet restore will fail:
+
+> NuGet requires HTTPS sources. To use an HTTP source, you must explicitly set 'allowInsecureConnections' to true in your NuGet.Config file.
+
+
+
+For more information on configuring HTTP source permissions, see .
+
+## Package Source Mapping
+
+Package Source Mapping allows you to control which package sources are used for specific packages, improving supply chain security.
+
+
+
+To modify, use the **Add, Edit, and Remove buttons** below the table.
+
+### Managing Package Source Mappings
+
+Lists all configured package source mappings according to your NuGet.Config files.
+
+- **Package pattern**: Package pattern that is currently mapped (e.g., `Microsoft.*` or `Contoso.Contracts`)
+- **Source**: One or more package sources mapped to the package pattern.
+ Package sources must be enabled to be shown.
+
+To modify, use the **Add, Edit, and Remove buttons** below the table.
+Press "Save" on the Add/Edit dialog and the changes will be updated in the relevant NuGet.Config file.
+
+
+
+For more information, see [Package Source Mapping](Package-Source-Mapping.md).
+
+### Invalid Source Mappings
+
+If a package source listed in your existing source mapping isn't enabled in your NuGet.Config file(s), an error will appear in the leftmost column.
+
+Make sure all Source values in your mappings refer to package sources that are both available and enabled. Otherwise, the mapping may not work as expected.
+
+
diff --git a/docs/create-packages/Creating-Localized-Packages.md b/docs/create-packages/Creating-Localized-Packages.md
index e232765ba..92f7e6d15 100644
--- a/docs/create-packages/Creating-Localized-Packages.md
+++ b/docs/create-packages/Creating-Localized-Packages.md
@@ -4,7 +4,7 @@ description: Details on the two ways to create localized NuGet packages, either
author: JonDouglas
ms.author: jodou
ms.date: 01/18/2018
-ms.topic: conceptual
+ms.topic: how-to
---
# Creating localized NuGet packages
diff --git a/docs/create-packages/Creating-a-Package.md b/docs/create-packages/Creating-a-Package.md
index c894ade4a..d853b0e8b 100644
--- a/docs/create-packages/Creating-a-Package.md
+++ b/docs/create-packages/Creating-a-Package.md
@@ -4,7 +4,7 @@ description: A detailed guide on designing and creating a NuGet package, includi
author: JonDouglas
ms.author: jodou
ms.date: 03/03/2025
-ms.topic: conceptual
+ms.topic: how-to
---
# Create a package using the nuget.exe CLI
diff --git a/docs/create-packages/Overview-and-Workflow.md b/docs/create-packages/Overview-and-Workflow.md
index 96984557b..ddda6fd80 100644
--- a/docs/create-packages/Overview-and-Workflow.md
+++ b/docs/create-packages/Overview-and-Workflow.md
@@ -4,7 +4,7 @@ description: An overview of the process of creating and publishing a NuGet packa
author: JonDouglas
ms.author: jodou
ms.date: 07/26/2017
-ms.topic: conceptual
+ms.topic: concept-article
---
# Package creation workflow
diff --git a/docs/create-packages/Package-authoring-best-practices.md b/docs/create-packages/Package-authoring-best-practices.md
index 9d45b8bc1..f4451cbe0 100644
--- a/docs/create-packages/Package-authoring-best-practices.md
+++ b/docs/create-packages/Package-authoring-best-practices.md
@@ -4,7 +4,7 @@ description: A general guide of best practices for creating high quality NuGet p
author: nkolev92
ms.author: nikolev
ms.date: 11/15/2021
-ms.topic: conceptual
+ms.topic: best-practice
---
# Package authoring best practices
diff --git a/docs/create-packages/Prerelease-Packages.md b/docs/create-packages/Prerelease-Packages.md
index b8a08be74..89ffc0d19 100644
--- a/docs/create-packages/Prerelease-Packages.md
+++ b/docs/create-packages/Prerelease-Packages.md
@@ -4,7 +4,7 @@ description: Guidance for building pre-release packages
author: JonDouglas
ms.author: jodou
ms.date: 08/14/2017
-ms.topic: conceptual
+ms.topic: concept-article
---
# Building pre-release packages
diff --git a/docs/create-packages/Select-assemblies-referenced-by-projects.md b/docs/create-packages/Select-assemblies-referenced-by-projects.md
index c984846e1..6eebd9a66 100644
--- a/docs/create-packages/Select-assemblies-referenced-by-projects.md
+++ b/docs/create-packages/Select-assemblies-referenced-by-projects.md
@@ -4,7 +4,7 @@ description: Make a subset of assemblies in the package available to the compile
author: zivkan
ms.author: zivkan
ms.date: 05/24/2019
-ms.topic: conceptual
+ms.topic: how-to
---
# Select Assemblies Referenced By Projects
diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md
index fffc365a1..4b3cb5692 100644
--- a/docs/create-packages/Sign-a-Package.md
+++ b/docs/create-packages/Sign-a-Package.md
@@ -4,8 +4,9 @@ description: Explains how signed packages can be used to enable content integrit
author: rido-min
ms.author: rmpablos
ms.date: 03/06/2018
-ms.topic: conceptual
+ms.topic: how-to
ms.reviewer: anangaur
+ms.custom: sfi-image-nochange
---
# Sign a NuGet package
@@ -28,6 +29,8 @@ You can use self-issued certificates for testing purposes. However, packages sig
## Export the certificate file
+* If your certificate is stored in a hardware token, you should not export the certificate. Instead, specify the SHA-2 family certificate fingerprints (thumbprint) by using the option `--certificate-fingerprint ` (replacing `--certificate-path `)
+
* You can export an existing certificate to a binary DER format by using the Certificate Export Wizard.

diff --git a/docs/create-packages/Source-and-Config-File-Transformations.md b/docs/create-packages/Source-and-Config-File-Transformations.md
index 79402e54c..65f9f7659 100644
--- a/docs/create-packages/Source-and-Config-File-Transformations.md
+++ b/docs/create-packages/Source-and-Config-File-Transformations.md
@@ -4,7 +4,7 @@ description: Details on the ability for NuGet packages to transform source code
author: JonDouglas
ms.author: jodou
ms.date: 04/24/2017
-ms.topic: conceptual
+ms.topic: how-to
ms.reviewer: anangaur
---
@@ -174,4 +174,4 @@ To remove only the `MyNuModule` element during package uninstall, the `web.confi
-```
\ No newline at end of file
+```
diff --git a/docs/create-packages/Supporting-Multiple-Target-Frameworks.md b/docs/create-packages/Supporting-Multiple-Target-Frameworks.md
index 91576a3c8..14fc9ffe4 100644
--- a/docs/create-packages/Supporting-Multiple-Target-Frameworks.md
+++ b/docs/create-packages/Supporting-Multiple-Target-Frameworks.md
@@ -4,7 +4,7 @@ description: Description of the various methods to target multiple .NET Framewor
author: JonDouglas
ms.author: jodou
ms.date: 07/15/2019
-ms.topic: conceptual
+ms.topic: concept-article
---
# Support multiple .NET versions
@@ -189,4 +189,4 @@ With `packages.config`, content files and PowerShell scripts can be grouped by t
If a framework folder is left empty, NuGet doesn't add assembly references or content files or run the PowerShell scripts for that framework.
> [!Note]
-> Because `init.ps1` is executed at the solution level and not dependent on project, it must be placed directly under the `tools` folder. It's ignored if placed under a framework folder.
\ No newline at end of file
+> Because `init.ps1` is executed at the solution level and not dependent on project, it must be placed directly under the `tools` folder. It's ignored if placed under a framework folder.
diff --git a/docs/create-packages/Symbol-Packages.md b/docs/create-packages/Symbol-Packages.md
index 3226ec766..ae6f7387b 100644
--- a/docs/create-packages/Symbol-Packages.md
+++ b/docs/create-packages/Symbol-Packages.md
@@ -4,7 +4,7 @@ description: How to create NuGet packages that contain only symbols to support d
author: JonDouglas
ms.author: jodou
ms.date: 09/12/2017
-ms.topic: conceptual
+ms.topic: how-to
ms.reviewer: anangaur
---
diff --git a/docs/create-packages/author-packages-with-COM-interop-assemblies.md b/docs/create-packages/author-packages-with-COM-interop-assemblies.md
index e37c68ce4..6c4a61385 100644
--- a/docs/create-packages/author-packages-with-COM-interop-assemblies.md
+++ b/docs/create-packages/author-packages-with-COM-interop-assemblies.md
@@ -4,7 +4,7 @@ description: Describes how to create packages that contain COM interop assemblie
author: JonDouglas
ms.author: jodou
ms.date: 07/09/2019
-ms.topic: conceptual
+ms.topic: article
---
# Create NuGet packages that contain COM interop assemblies
@@ -25,4 +25,4 @@ Note that when using the `packages.config` management format, adding references
Additionally, by default the [build assets do not flow transitively](../consume-packages/package-references-in-project-files.md#controlling-dependency-assets). Packages authored as described here work differently when they are pulled as a transitive dependency from a project to project reference. The package consumer can allow them to flow by modifying the PrivateAssets default value to not include build.
-
\ No newline at end of file
+
diff --git a/docs/create-packages/creating-a-package-dotnet-cli.md b/docs/create-packages/creating-a-package-dotnet-cli.md
index 498587233..2917a2ec0 100644
--- a/docs/create-packages/creating-a-package-dotnet-cli.md
+++ b/docs/create-packages/creating-a-package-dotnet-cli.md
@@ -4,7 +4,7 @@ description: Read a detailed guide about the process of designing and creating a
author: JonDouglas
ms.author: jodou
ms.date: 03/03/2025
-ms.topic: conceptual
+ms.topic: how-to
---
# Create a NuGet package with the dotnet CLI
diff --git a/docs/create-packages/creating-a-package-msbuild.md b/docs/create-packages/creating-a-package-msbuild.md
index 6aa91b1f5..48f58e902 100644
--- a/docs/create-packages/creating-a-package-msbuild.md
+++ b/docs/create-packages/creating-a-package-msbuild.md
@@ -4,7 +4,7 @@ description: A detailed guide to the process of designing and creating a NuGet p
author: JonDouglas
ms.author: jodou
ms.date: 08/17/2023
-ms.topic: conceptual
+ms.topic: how-to
---
# Create a NuGet package using MSBuild
@@ -13,9 +13,12 @@ When you create a NuGet package from your code, you package that functionality i
For .NET Core and .NET Standard projects that use the [SDK-style format](../resources/check-project-format.md), and any other SDK-style projects, NuGet uses information in the project file directly to create a package. For a non-SDK-style project that uses ``, NuGet also uses the project file to create a package.
-SDK-style projects have the pack functionality available by default. For non SDK-style PackageReference projects, you need to add the NuGet.Build.Tasks.Pack package to the project dependencies. For detailed information about MSBuild pack targets, see [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md).
+SDK-style projects have the pack functionality available by default.
+For non-SDK-style PackageReference projects, it is also available by default starting from Visual Studio 2026.
+In earlier versions of Visual Studio you need to add the NuGet.Build.Tasks.Pack package to the project dependencies and we recommend removing this package reference when upgrading to Visual Studio 2026.
+For detailed information about MSBuild pack targets, see [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md).
-The command that creates a package, `msbuild -t:pack`, is functionally equivalent to `dotnet pack`.
+For SDK-style projects, `msbuild -t:pack` is functionally equivalent to `dotnet pack`.
> [!IMPORTANT]
> This topic applies to [SDK-style](../resources/check-project-format.md) projects, typically .NET Core and .NET Standard projects, and to non-SDK-style projects that use PackageReference.
@@ -77,16 +80,33 @@ For details on declaring dependencies and specifying version numbers, see [Packa
[!INCLUDE [choose-package-id](includes/choose-package-id.md)]
-## Add the NuGet.Build.Tasks.Pack package
+## Configure project for pack
-If you are using MSBuild with a non-SDK-style project and PackageReference, add the NuGet.Build.Tasks.Pack package to your project.
+SDK-style projects do not require any additional configuration.
-1. Open the project file and add the following after the `` element:
+Non-SDK-style projects either need at least one package installed (via PackageReference, not packages.config), or the project explicitly needs to instruct NuGet to treat the project as a PackageReference project via the `RestoreProjectStyle` property.
+
+Visual Studio 2022 and earlier does not have pack built-in, so you also need to install the NuGet.Build.Tasks.Pack package.
+When upgrading to Visual Studio 2026 or later, we recommend uninstalling the package, so that you benefit from new features and bug fixes.
+
+1. Edit the project file.
+
+ If you want to explicitly instruct NuGet to treat the project as PackageReference (the project does not have any packages installed), find or add a `` that does not have any `Condition` statement, and add:
+
+ ```xml
+
+
+ PackageReference
+
+
+ ```
+
+ If you are using Visual Studio 2022 or earlier, add the following after the `` element:
```xml
-
+
```
@@ -98,7 +118,7 @@ If you are using MSBuild with a non-SDK-style project and PackageReference, add
You typically want to start the Developer Command Prompt for Visual Studio from the **Start** menu, as it will be configured with all the necessary paths for MSBuild.
-3. Switch to the folder containing the project file and type the following command to install the NuGet.Build.Tasks.Pack package.
+3. Switch to the folder containing the project file and type the following command to restore the NuGet.Build.Tasks.Pack package.
```cmd
# Uses the project file in the current folder by default
diff --git a/docs/create-packages/multiple-target-frameworks-project-file.md b/docs/create-packages/multiple-target-frameworks-project-file.md
index 326dc1e6f..bd321d0d1 100644
--- a/docs/create-packages/multiple-target-frameworks-project-file.md
+++ b/docs/create-packages/multiple-target-frameworks-project-file.md
@@ -4,7 +4,7 @@ description: Description of the various methods to target multiple .NET Framewor
author: JonDouglas
ms.author: jodou
ms.date: 07/15/2019
-ms.topic: conceptual
+ms.topic: how-to
---
# Support multiple .NET Framework versions in your project file
diff --git a/docs/create-packages/native-files-in-net-packages.md b/docs/create-packages/native-files-in-net-packages.md
index db39ba523..2b4d6ef95 100644
--- a/docs/create-packages/native-files-in-net-packages.md
+++ b/docs/create-packages/native-files-in-net-packages.md
@@ -4,7 +4,7 @@ description: How to pack native libraries in .NET packages
author: zivkan
ms.author: zivkan
ms.date: 09/26/2023
-ms.topic: conceptual
+ms.topic: concept-article
---
# Including native libraries in .NET packages
@@ -162,7 +162,7 @@ Finally, the managed library, that uses P/Invoke to call into the native library
### SDK style projects targeting .NET Framework
When the .NET SDK builds a project targeting the .NET Framework, if one of `RuntimeIdentifier` or `PlatformTarget` is set, the .NET SDK will set the other property to an appropriate value, and package `runtimes/` contents (that [follow NuGet's conventions](#understanding-nuget-package-asset-selection)) will be copied to the output directory.
-If the the project does not set either `RuntimeIdentifier` or `PlatformTarget`, but any package contains RID specific contents, then the .NET SDK will set `PlatformTarget` to `x86`.
+If the project does not set either `RuntimeIdentifier` or `PlatformTarget`, but any package contains RID specific contents, then the .NET SDK will set `PlatformTarget` to `x86`.
Therefore, SDK style projects targeting .NET Framework will only use `AnyCPU` by default when none of the packages contain RID specific content.
`dotnet build -r `, or the `publish` equivalent (for example, `dotnet publish -r win-arm64`) can be used to explicitly build or publish for a specific platform.
diff --git a/docs/create-packages/set-package-type.md b/docs/create-packages/set-package-type.md
index 2fc834ac8..ee8847234 100644
--- a/docs/create-packages/set-package-type.md
+++ b/docs/create-packages/set-package-type.md
@@ -4,7 +4,7 @@ description: Describes packages types to indicate intended use of a package.
author: JonDouglas
ms.author: jodou
ms.date: 07/09/2019
-ms.topic: conceptual
+ms.topic: how-to
---
# Set a NuGet package type
@@ -21,6 +21,8 @@ Packages can be marked with one more more *package types* to indicate its intend
- `Template` type packages provide [custom templates](/dotnet/core/tools/custom-templates) that can be used to create files or projects like an app, service, tool, or class library.
+- `McpServer` type packages contain MCP servers. This package type is always accompanied by the `DotnetTool` package type, because a local MCP server is distributed as a .NET tool. For information on MCP server and NuGet, see [MCP servers in NuGet packages](../concepts/nuget-mcp.md).
+
Packages not marked with a type, including all packages created with earlier versions of NuGet, default to the `Dependency` type.
> [!NOTE]
diff --git a/docs/docs.csproj b/docs/docs.csproj
new file mode 100644
index 000000000..e63c1c5b9
--- /dev/null
+++ b/docs/docs.csproj
@@ -0,0 +1,5 @@
+
+
+ net472
+
+
\ No newline at end of file
diff --git a/docs/guides/Native-Packages.md b/docs/guides/Native-Packages.md
index 14f5c5353..68f42f4a7 100644
--- a/docs/guides/Native-Packages.md
+++ b/docs/guides/Native-Packages.md
@@ -4,7 +4,7 @@ description: Details on creating native NuGet packages that contains C++ code in
author: JonDouglas
ms.author: jodou
ms.date: 01/09/2017
-ms.topic: conceptual
+ms.topic: concept-article
---
# Creating native packages
diff --git a/docs/guides/analyzers-conventions.md b/docs/guides/analyzers-conventions.md
index 8122c81dc..78156098d 100644
--- a/docs/guides/analyzers-conventions.md
+++ b/docs/guides/analyzers-conventions.md
@@ -4,7 +4,7 @@ description: Conventions for .NET analyzers that are packaged and distributed wi
author: JonDouglas
ms.author: jodou
ms.date: 01/09/2017
-ms.topic: conceptual
+ms.topic: article
---
# Analyzer NuGet formats
diff --git a/docs/hosting-packages/Local-Feeds.md b/docs/hosting-packages/Local-Feeds.md
index de95954d3..6b422460f 100644
--- a/docs/hosting-packages/Local-Feeds.md
+++ b/docs/hosting-packages/Local-Feeds.md
@@ -4,7 +4,7 @@ description: How to create a local feed for NuGet packages using folders on your
author: JonDouglas
ms.author: jodou
ms.date: 12/06/2017
-ms.topic: conceptual
+ms.topic: how-to
---
# Local feeds
diff --git a/docs/hosting-packages/NuGet-Server.md b/docs/hosting-packages/NuGet-Server.md
index 3c237ab33..b79f0a22e 100644
--- a/docs/hosting-packages/NuGet-Server.md
+++ b/docs/hosting-packages/NuGet-Server.md
@@ -4,7 +4,7 @@ description: How to create and host a NuGet package feed on any server running I
author: JonDouglas
ms.author: jodou
ms.date: 07/11/2023
-ms.topic: conceptual
+ms.topic: how-to
---
# NuGet.Server
diff --git a/docs/hosting-packages/Overview.md b/docs/hosting-packages/Overview.md
index a19316165..9d98050e0 100644
--- a/docs/hosting-packages/Overview.md
+++ b/docs/hosting-packages/Overview.md
@@ -1,10 +1,10 @@
---
title: Overview of Hosting Your Own NuGet Feeds
-description: An overview of opens for hosting your own NuGet package feeds or galleries either locally or remotely.
+description: An overview of options for hosting your own NuGet package feeds or galleries either locally or remotely.
author: JonDouglas
ms.author: jodou
ms.date: 3/2/2022
-ms.topic: conceptual
+ms.topic: concept-article
ms.reviewer: anangaur
---
@@ -33,7 +33,7 @@ There are also several other NuGet hosting products such as [Azure Artifacts](ht
- [JetBrains Space](https://www.jetbrains.com/help/space/nuget-feed.html)
- [LiGet](https://github.com/ai-traders/liget), an open-source implementation of NuGet V2 server that runs on kestrel in docker
- [MyGet](https://myget.org)
-- [Nexus Repository OSS](https://www.sonatype.com/nexus-repository-oss) from Sonatype.
+- [Nexus Repository OSS](https://www.sonatype.com/products/sonatype-nexus-oss-download) from Sonatype.
- [NuGet Server (Open Source)](https://github.com/svenkle/nuget-server), an open-source implementation similar to Inedo's NuGet Server
- [NuGet Server](http://nugetserver.net/), a community project from Inedo
- [ProGet](https://inedo.com/proget) from Inedo
@@ -42,3 +42,7 @@ There are also several other NuGet hosting products such as [Azure Artifacts](ht
- [RepoFlow](https://www.repoflow.io), a simple and easy-to-use package management platform.
Regardless of how packages are hosted, you access them by adding them to the list of available sources in `NuGet.Config`. This can be done in Visual Studio as described in [Package Sources](../consume-packages/install-use-packages-visual-studio.md#package-sources), or from the command line using [`nuget sources`](../reference/cli-reference/cli-ref-sources.md). The path to a source can be a local folder pathname, a network name, or a URL.
+
+[NuGet's V3 protocol](../api/overview.md) uses a [service index](../api//service-index.md) that contains a list of URLs used by various NuGet operations.
+All of the URLs in the service index must be accessible by developer and CI machines to avoid unexpected errors.
+When installing any NuGet feed, it is important to validate that none of the service index resources are blocked by a company firewall, or if your network is disconnected from the Internet, that all service index resources are available on your private network.
diff --git a/docs/nuget-org/Deprecate-packages.md b/docs/nuget-org/Deprecate-packages.md
index c9189ce99..e3a365978 100644
--- a/docs/nuget-org/Deprecate-packages.md
+++ b/docs/nuget-org/Deprecate-packages.md
@@ -4,7 +4,7 @@ description: Detailed description on the process of deprecating packages and how
author: anangaur
ms.author: anangaur
ms.date: 09/23/2019
-ms.topic: conceptual
+ms.topic: how-to
ms.reviewer: karann-msft
---
diff --git a/docs/nuget-org/Publish-a-package.md b/docs/nuget-org/Publish-a-package.md
index 36ce9f614..3dfe32091 100644
--- a/docs/nuget-org/Publish-a-package.md
+++ b/docs/nuget-org/Publish-a-package.md
@@ -4,7 +4,7 @@ description: See detailed instructions about how to publish a NuGet package and
author: JonDouglas
ms.author: jodou
ms.date: 8/29/2022
-ms.topic: conceptual
+ms.topic: how-to
ms.reviewer: anangaur
---
diff --git a/docs/nuget-org/TOC.md b/docs/nuget-org/TOC.md
index b102dd1e7..4c01db05f 100644
--- a/docs/nuget-org/TOC.md
+++ b/docs/nuget-org/TOC.md
@@ -8,6 +8,7 @@
## [Package ID prefix reservation](id-prefix-reservation.md)
## [Package deprecation](deprecate-packages.md)
## [Package readme](package-readme-on-nuget-org.md)
+## [Package sponsorship](package-sponsorship-on-nuget-org.md)
# Policies
## [Data Requests](policies/Data-requests.md)
## [Dispute resolution](policies/dispute-resolution.md)
diff --git a/docs/nuget-org/individual-accounts.md b/docs/nuget-org/individual-accounts.md
index a1a1b95a7..f45e1b841 100644
--- a/docs/nuget-org/individual-accounts.md
+++ b/docs/nuget-org/individual-accounts.md
@@ -4,7 +4,8 @@ description: Individual acccounts on NuGet.org are required to publish packages
author: mikejo5000
ms.author: mikejo
ms.date: 06/05/2019
-ms.topic: conceptual
+ms.topic: article
+ms.custom: sfi-image-nochange
---
# Individual accounts on NuGet.org
diff --git a/docs/nuget-org/licenses.nuget.org.md b/docs/nuget-org/licenses.nuget.org.md
index 9f82c2b95..f1c85a295 100644
--- a/docs/nuget-org/licenses.nuget.org.md
+++ b/docs/nuget-org/licenses.nuget.org.md
@@ -4,6 +4,7 @@ description: Protocol and display information for licenses.nuget.org. Describes
author: agr
ms.author: angrigor
ms.date: 03/02/2023
+ms.topic: article
---
# licenses.nuget.org
@@ -88,4 +89,4 @@ license exception identifier may present in the path portion of the URL.
Licenses.nuget.org responds to a request with a known license exception identifier with a HTTP 200 response and
a web page containing the reference text for the specified license exception.
-Any request containing an unsupported license exception identifier results in an HTTP 404 response.
\ No newline at end of file
+Any request containing an unsupported license exception identifier results in an HTTP 404 response.
diff --git a/docs/nuget-org/media/sponsorship-add-link.png b/docs/nuget-org/media/sponsorship-add-link.png
new file mode 100644
index 000000000..3274427db
Binary files /dev/null and b/docs/nuget-org/media/sponsorship-add-link.png differ
diff --git a/docs/nuget-org/media/sponsorship-button-package-details-page.png b/docs/nuget-org/media/sponsorship-button-package-details-page.png
new file mode 100644
index 000000000..a01f0644f
Binary files /dev/null and b/docs/nuget-org/media/sponsorship-button-package-details-page.png differ
diff --git a/docs/nuget-org/media/sponsorship-display-links.png b/docs/nuget-org/media/sponsorship-display-links.png
new file mode 100644
index 000000000..c959b3972
Binary files /dev/null and b/docs/nuget-org/media/sponsorship-display-links.png differ
diff --git a/docs/nuget-org/media/sponsorship-link-error-manage-package.png b/docs/nuget-org/media/sponsorship-link-error-manage-package.png
new file mode 100644
index 000000000..8862f267a
Binary files /dev/null and b/docs/nuget-org/media/sponsorship-link-error-manage-package.png differ
diff --git a/docs/nuget-org/media/sponsorship-section-manage-package-page.png b/docs/nuget-org/media/sponsorship-section-manage-package-page.png
new file mode 100644
index 000000000..7f9acd289
Binary files /dev/null and b/docs/nuget-org/media/sponsorship-section-manage-package-page.png differ
diff --git a/docs/nuget-org/media/trusted-publishing.png b/docs/nuget-org/media/trusted-publishing.png
new file mode 100644
index 000000000..8cd0ecfbf
Binary files /dev/null and b/docs/nuget-org/media/trusted-publishing.png differ
diff --git a/docs/nuget-org/nuget-org-faq.yml b/docs/nuget-org/nuget-org-faq.yml
index 3d6b1eb18..0a8f1bf36 100644
--- a/docs/nuget-org/nuget-org-faq.yml
+++ b/docs/nuget-org/nuget-org-faq.yml
@@ -5,7 +5,8 @@ metadata:
author: shishirx34
ms.author: shishirh
ms.date: 06/05/2019
- ms.topic: conceptual
+ ms.topic: faq
+ ms.custom: sfi-image-nochange
title: NuGet.org frequently-asked questions
summary: |
@@ -79,9 +80,8 @@ sections:
| Environment Variable | Description | Remarks |
| --- | --- | --- |
- | NUGET_ENABLE_ENHANCED_HTTP_RETRY | Enables or disables enhanced HTTP retry in NuGet. | Possible values are `true` (default since .NET CLI 6.0.300, NuGet CLI 6.2, Visual Studio 2022 version 17.2) or `false`. |
| NUGET_ENHANCED_MAX_NETWORK_TRY_COUNT | Configures the maximum number of times an HTTP connection should be retried when enhanced retries are enabled. | A number representing how many retries to perform, the default value is `6`. |
- | NUGET_ENHANCED_NETWORK_RETRY_DELAY_MILLISECONDS | Configures the amount of time to wait in milliseconds before retrying an HTTP connection when enhanced retries are enabled. | Number of millseconds to wait, the default value is `1000`. |
+ | NUGET_ENHANCED_NETWORK_RETRY_DELAY_MILLISECONDS | Configures the amount of time to wait in milliseconds before retrying an HTTP connection when enhanced retries are enabled. | Number of milliseconds to wait, the default value is `1000`. |
> [!Note]
> These environment variables are available since [.NET CLI](https://learn.microsoft.com/nuget/reference/dotnet-commands) (.NET SDK) 6.0.100, [NuGet CLI](https://learn.microsoft.com/nuget/reference/nuget-exe-cli-reference) 6.0, Visual Studio 2022 version 17.0 and corresponding MSBuild version. See [NuGet Release Notes](https://learn.microsoft.com/nuget/release-notes/).
diff --git a/docs/nuget-org/organizations-on-nuget-org.md b/docs/nuget-org/organizations-on-nuget-org.md
index de008a8f4..36a65d2d3 100644
--- a/docs/nuget-org/organizations-on-nuget-org.md
+++ b/docs/nuget-org/organizations-on-nuget-org.md
@@ -4,10 +4,11 @@ description: Organizations on NuGet.org helps you to manage packages published b
author: anangaur
ms.author: anangaur
ms.date: 04/10/2018
-ms.topic: conceptual
+ms.topic: article
ms.reviewer:
- kraigb
- camsoper
+ms.custom: sfi-image-nochange
---
# Your organization on NuGet.org
diff --git a/docs/nuget-org/overview-nuget-org.md b/docs/nuget-org/overview-nuget-org.md
index f0ac5eed3..aa160a850 100644
--- a/docs/nuget-org/overview-nuget-org.md
+++ b/docs/nuget-org/overview-nuget-org.md
@@ -4,7 +4,7 @@ description: Overview of NuGet.org
author: mikejo5000
ms.author: mikejo
ms.date: 06/05/2019
-ms.topic: conceptual
+ms.topic: concept-article
---
# Overview of NuGet.org
@@ -33,6 +33,10 @@ Once you have a NuGet package (*.nupkg* file) to publish, you publish it to NuGe
When you [publish a package](../create-packages/creating-a-package.md), you include the API key value in the CLI command.
+## Trusted publishing
+
+NuGet.org supports [Trusted Publishing](trusted-publishing.md), which is a secure and streamlined way to publish NuGet packages.
+
## ID prefixes
When you publish packages, you can reserve and protect your identity by [reserving ID prefixes](id-prefix-reservation.md). When installing a package, package consumers are provided with additional information indicating that the package they are consuming is not deceptive in its identifying properties.
diff --git a/docs/nuget-org/package-readme-on-nuget-org.md b/docs/nuget-org/package-readme-on-nuget-org.md
index 936f7cf15..f4ecd173c 100644
--- a/docs/nuget-org/package-readme-on-nuget-org.md
+++ b/docs/nuget-org/package-readme-on-nuget-org.md
@@ -4,7 +4,7 @@ description: Detailed explanation of how readme files on NuGet.org are rendered
author: nkolev92
ms.author: nikolev
ms.date: 08/31/2022
-ms.topic: conceptual
+ms.topic: article
ms.reviewer: anangaur
---
@@ -78,24 +78,22 @@ Due to security and privacy concerns, NuGet.org restricts the domains from which
NuGet.org allows all images, including badges, from the following trusted domains to be rendered:
* api.codacy.com
-* app.codacy.com
* api.codeclimate.com
* api.dependabot.com
-* api.travis-ci.com
* api.reuse.software
-* app.fossa.com
-* app.fossa.io
+* api.travis-ci.com
+* app.codacy.com
+* app.deepsource.com
* avatars.githubusercontent.com
-* badge.fury.io
* badgen.net
* badges.gitter.im
-* buildstats.info
-* caniuse.bitsofco.de
* camo.githubusercontent.com
+* caniuse.bitsofco.de
* cdn.jsdelivr.net
* cdn.syncfusion.com
* ci.appveyor.com
* circleci.com
+* cloudback.it
* codecov.io
* codefactor.io
* coveralls.io
@@ -103,9 +101,11 @@ NuGet.org allows all images, including badges, from the following trusted domain
* flat.badgen.net
* github.com/.../workflows/.../badge.svg
* gitlab.com
-* img.shields.io
* i.imgur.com
+* img.shields.io
+* infragistics.com
* isitmaintained.com
+* media.githubusercontent.com
* opencollective.com
* raw.github.com
* raw.githubusercontent.com
@@ -113,7 +113,6 @@ NuGet.org allows all images, including badges, from the following trusted domain
* sonarcloud.io
* travis-ci.com
* travis-ci.org
-* wakatime.com
* user-images.githubusercontent.com
If you feel that another domain should be added to the allow-list, please feel free to [file an issue](https://github.com/NuGet/NuGetGallery/issues) and it will be reviewed by our engineering team for privacy and security compliance. Images with relative local paths and images hosted from unsupported domains will not be rendered and will produce a warning on the readme file preview and package details page that is only visible to the package owners.
diff --git a/docs/nuget-org/package-sponsorship-on-nuget-org.md b/docs/nuget-org/package-sponsorship-on-nuget-org.md
new file mode 100644
index 000000000..af1f6e111
--- /dev/null
+++ b/docs/nuget-org/package-sponsorship-on-nuget-org.md
@@ -0,0 +1,118 @@
+---
+title: Package sponsorship on NuGet.org
+description: Learn how to add sponsorship links to your NuGet packages and support package maintainers through NuGet.org's sponsorship feature.
+author: pranathibora14
+ms.author: prabora
+ms.date: 10/15/2025
+ms.topic: how-to
+ai-usage: ai-generated
+---
+
+# Package sponsorship on NuGet.org
+
+The NuGet.org sponsorship feature makes it easier for package consumers to recognize and support the authors behind their favorite packages.
+
+NuGet.org enables package authors to add sponsorship URLs to their packages. These links appear when the "Sponsor" button on the package details page is selected.
+
+
+## Setting up sponsorship for package publishers
+
+### Prerequisites
+
+- You must be the owner or co-owner of a package on NuGet.org
+- Your sponsorship link platform must be from the approved list:
+ - GitHub Sponsors
+ - Patreon
+ - Open Collective
+ - Ko-fi
+ - Tidelift
+ - Liberapay
+
+### Navigate to your package management page
+
+1. Go to [NuGet.org](https://nuget.org) and sign in to your account.
+2. Select your username in the top right corner.
+3. Select **Manage Packages** from the dropdown menu.
+4. Find the package you want to add sponsorship information for and select the edit button.
+
+### Access sponsorship settings
+
+1. On your package management page, scroll down to find the **Sponsorship Links** section.
+2. Select to expand the collapsible **Sponsorship Links** section.
+3. You'll see a form where you can add sponsorship URLs.
+
+ 
+
+### Add your sponsorship URLs
+
+1. Enter your sponsorship URL in the text field:
+ - Example: `https://github.com/sponsors/yourusername`
+ - Example: `https://www.patreon.com/yourusername`
+
+ 
+
+2. Select the **Add** button.
+3. The system automatically validates that your URL is from an approved platform.
+4. If any URLs are invalid or from non-approved platforms, you'll see error messages to correct them. Otherwise, you'll see a confirmation message that your sponsorship link has been saved.
+
+ 
+
+5. Each added sponsorship URL will have a **Remove** button next to it if you need to delete it.
+6. You can add up to 10 different sponsorship URLs per package ID.
+
+### Verify your sponsorship URLs display correctly
+
+1. Navigate to your package's public page on NuGet.org.
+2. Look for the **Sponsor** button in the package details **About** section.
+3. Select the **Sponsor** button to test that your URLs appear correctly in the popup.
+
+ 
+
+## Finding and supporting packages
+
+### Identify packages that need sponsorship
+
+1. Browse to any package page on NuGet.org.
+2. Look for packages displaying a **Sponsor** button in the package details section.
+3. The **Sponsor** button indicates that the package maintainer is seeking financial support.
+
+ 
+
+### View available sponsorship options
+
+1. Select the **Sponsor** button on the package page.
+2. A popup window appears showing all available sponsorship links for that package.
+
+ 
+
+### Choose your preferred sponsorship platform
+
+1. Review the available sponsorship options in the popup.
+2. Select your preferred platform to be redirected to the external sponsorship page.
+3. The link opens in a new tab or window, keeping the NuGet package page open.
+
+> [!IMPORTANT]
+> These links take you to third-party platforms. Microsoft isn't affiliated with or responsible for the content or practices of third-party platforms, and we don't endorse them. Microsoft reserves the right to remove any allowed third-party platforms.
+
+## Frequently asked questions
+
+**Can I add sponsorship information to older versions of my package?**
+
+Yes! Sponsorship information is managed at the package ID level, so it automatically applies to all versions of your package, including previously published versions.
+
+**What happens if my sponsorship platform URL changes?**
+
+You can update your sponsorship URLs anytime through the package management page. Changes take effect immediately across all versions.
+
+**Can I see analytics on how many people selected my sponsorship links?**
+
+No, NuGet.org doesn't track sponsorship link selections. You'll need to check analytics on your sponsorship platform directly.
+
+**Can I add custom sponsorship platforms not on the approved list?**
+
+Currently, only the approved list of platforms is supported. This helps ensure security and legitimacy of sponsorship links. If you'd like to request a new platform to be added to the approved list, you can open an issue on the [NuGet Gallery repository](https://github.com/NuGet/NuGetGallery/issues).
+
+**Does NuGet.org store my financial information?**
+
+No personal or financial data is stored by NuGet.org. All transactions occur on secure external platforms that a maintainer chooses for sponsoring their packages.
+
diff --git a/docs/nuget-org/policies/data-requests.md b/docs/nuget-org/policies/data-requests.md
index 57cab4356..9c29231ef 100644
--- a/docs/nuget-org/policies/data-requests.md
+++ b/docs/nuget-org/policies/data-requests.md
@@ -4,7 +4,7 @@ description: Policies for requesting user data export and delete
author: JonDouglas
ms.author: jodou
ms.date: 05/01/2018
-ms.topic: conceptual
+ms.topic: article
---
# User Data Requests
diff --git a/docs/nuget-org/policies/deleting-packages.md b/docs/nuget-org/policies/deleting-packages.md
index 89fbd5a3b..9e99d39ab 100644
--- a/docs/nuget-org/policies/deleting-packages.md
+++ b/docs/nuget-org/policies/deleting-packages.md
@@ -4,7 +4,7 @@ description: Policies for unlisting packages from nuget.org; permanent deletion
author: JonDouglas
ms.author: jodou
ms.date: 01/18/2018
-ms.topic: conceptual
+ms.topic: how-to
---
# Deleting packages
diff --git a/docs/nuget-org/policies/dispute-resolution.md b/docs/nuget-org/policies/dispute-resolution.md
index 94a1aea40..c9342a827 100644
--- a/docs/nuget-org/policies/dispute-resolution.md
+++ b/docs/nuget-org/policies/dispute-resolution.md
@@ -4,7 +4,7 @@ description: The process for resolving disputes between NuGet package publishers
author: JonDouglas
ms.author: jodou
ms.date: 01/18/2018
-ms.topic: conceptual
+ms.topic: how-to
---
# Resolving disputes over NuGet package names
diff --git a/docs/nuget-org/policies/export-control.md b/docs/nuget-org/policies/export-control.md
index a0ce51d75..bc786531e 100644
--- a/docs/nuget-org/policies/export-control.md
+++ b/docs/nuget-org/policies/export-control.md
@@ -4,7 +4,7 @@ description: Policies governing export control laws
author: JonDouglas
ms.author: jodou
ms.date: 06/27/2019
-ms.topic: conceptual
+ms.topic: article
---
# Export Control Policy
diff --git a/docs/nuget-org/scoped-api-keys.md b/docs/nuget-org/scoped-api-keys.md
index 6730218cf..f5b22ad84 100644
--- a/docs/nuget-org/scoped-api-keys.md
+++ b/docs/nuget-org/scoped-api-keys.md
@@ -4,7 +4,7 @@ description: Take control of API keys that you use to push packages
author: mikejo5000
ms.author: mikejo
ms.date: 06/04/2019
-ms.topic: conceptual
+ms.topic: article
---
# Scoped API keys
@@ -99,4 +99,4 @@ You cannot modify the scope, but you can edit the package list it is applicable
### How do I know if any of my keys expired or are getting expired?
-If any key expires, we will let you know through a warning message at the top of the page. We also send a warning e-mail to the account holder ten days before the expiration of the key so that you can act on it well in advance.
\ No newline at end of file
+If any key expires, we will let you know through a warning message at the top of the page. We also send a warning e-mail to the account holder ten days before the expiration of the key so that you can act on it well in advance.
diff --git a/docs/nuget-org/trusted-publishing.md b/docs/nuget-org/trusted-publishing.md
new file mode 100644
index 000000000..ca9faff1c
--- /dev/null
+++ b/docs/nuget-org/trusted-publishing.md
@@ -0,0 +1,121 @@
+---
+title: Trusted Publishing
+description: Trusted Publishing on nuget.org
+author: etvorun
+ms.author: evgenyt
+ms.date: 07/01/2025
+ms.topic: article
+---
+
+# Trusted Publishing on nuget.org
+
+Trusted Publishing is a better way to publish NuGet packages. You don’t need to manage long-lived API keys anymore. Instead, you use short-lived credentials issued by your CI/CD system, like GitHub Actions.
+
+This makes your publishing process safer by reducing the risk of leaked credentials. It also makes automation easier because you don’t need to rotate or store secrets. This approach is part of a broader industry shift toward secure, keyless publishing. If you're curious, check out the OpenSSF initiative: https://repos.openssf.org/trusted-publishers-for-all-package-repositories.
+
+> ⚠️ **Heads up:** If you don’t see the **Trusted Publishing** option in your nuget.org account, it might not be available to you yet. We’re rolling it out gradually.
+
+## How it works
+
+When your GitHub Actions workflow runs, it requests an encrypted OIDC token from github.com. This token
+includes information about your repository and workflow, and is cryptographically signed by GitHub Actions to prevent
+tampering. The workflow forwards this token to nuget.org, which securely validates the token’s
+authenticity with github.com using industry-standard cryptographic methods. A token exchange endpoint on nuget.org then checks
+that the token’s details match a trusted publishing policy you’ve configured. If everything matches,
+nuget.org issues a short-lived API key for your workflow to use when publishing your package.
+
+**Here’s the basic flow**
+
+1. Your CI/CD system (like GitHub Actions) runs a workflow.
+2. It issues a short-lived token.
+3. That token is sent to nuget.org.
+4. NuGet verifies it and returns a temporary API key.
+5. Your workflow uses that key to push the package.
+
+
+
+NuGet’s temporary API keys are valid for **1 hour**, so your workflow should request the key shortly before publishing.
+If you request it too early, it might expire before the push happens.
+
+Each short-lived token can only be used once to obtain a single temporary API key—one token, one API key.
+
+This setup gives you a secure and automated way to publish packages, without the risks that come with long-lived secrets.
+
+
+## GitHub Actions Setup
+
+To get started:
+
+1. Log into **nuget.org**.
+2. Click your username and choose **Trusted Publishing**.
+3. Add a new trusted publishing policy. For a GitHub repository `https://github.com/contoso/contoso-sdk`
+ with a workflow file `.github/workflows/build.yml` enter the following trusted policy details (case‑insensitive):
+ - **Repository Owner:** `contoso`
+ - **Repository:** `contoso-sdk`
+ - **Workflow File:** `build.yml`
+ > This corresponds to your workflow at `.github/workflows/build.yml`. Enter the **file name only** (`build.yml`)—do not include the `.github/workflows/` path.
+ - **Environment (optional):** `release`
+ > Enter environment if your workflow uses e.g. `environment: release` and you want to restrict this policy to that environment. Leave this empty if you do not use GitHub Actions environments.
+4. In your **GitHub repo**, update your workflow to request a short‑lived API key and push your package.
+Here’s a basic example:
+
+```yaml
+jobs:
+ build-and-publish:
+ permissions:
+ id-token: write # enable GitHub OIDC token issuance for this job
+
+ steps:
+ # Build your artifacts/my-sdk.nupkg package here
+
+ # Get a short-lived NuGet API key
+ - name: NuGet login (OIDC → temp API key)
+ uses: NuGet/login@v1
+ id: login
+ with:
+ user: contoso-bot # Recommended: use a secret like ${{ secrets.NUGET_USER }} for your nuget.org username (profile name), NOT your email address
+
+ # Push the package
+ - name: NuGet push
+ run: dotnet nuget push artifacts/my-sdk.nupkg --api-key ${{steps.login.outputs.NUGET_API_KEY}} --source https://api.nuget.org/v3/index.json
+```
+
+
+## Policy Ownership
+
+When you create a Trusted Publishing policy, you need to choose who owns it. The owner can be either:
+
+- **You (an individual user)**
+- **An organization you belong to**
+
+The policy will apply to all packages owned by the selected owner. That means it controls who can publish or modify those packages using Trusted Publishing.
+
+If you choose an organization, make sure you're an active member. If you leave the org later, the policy may become inactive until you're added back.
+
+Choosing the right owner helps ensure your publishing setup stays secure and aligned with your team’s structure.
+
+
+## Policies Pending Full Activation
+
+Sometimes when you create a Trusted Publishing policy, it starts out as temporarily active for 7 days. This usually happens with private GitHub repos. You’ll see this status in the UI. During that time, it behaves like a regular policy. But if no publish happens within those 7 days, the policy automatically becomes inactive. You can restart the 7-day window at any time—even after it expires.
+
+Why is this temporary period necessary? Because NuGet needs GitHub repository and owner IDs to lock the policy to the original repo and owner. That helps prevent resurrection attacks. Without those IDs, someone could delete a repo, recreate it with the same name, and try to publish as if nothing changed.
+
+Once a successful publish provides the IDs (as part of GitHub’s short-lived token), the policy becomes permanently active.
+
+
+## Policy Ownership Warnings
+
+Trusted Publishing policies are tied to a specific owner—either an individual user or an organization.
+If something changes with that ownership, the policy might become inactive. When that happens, you'll see a warning in the UI.
+
+### Common cases
+
+- **User removed from organization**
+ If a policy is owned by an organization and the user who created it is later removed from that org, the policy becomes inactive.
+ If the user is added back to the organization, the policy will be active again automatically.
+
+- **Organization is no longer active**
+ If the organization that owns the policy is locked or deleted, the policy becomes inactive.
+
+These warnings help make sure that only active, secure policies are used when publishing packages.
diff --git a/docs/policies/Ecosystem.md b/docs/policies/Ecosystem.md
index 4a4c52c4c..1431b870f 100644
--- a/docs/policies/Ecosystem.md
+++ b/docs/policies/Ecosystem.md
@@ -4,7 +4,7 @@ description: Comprehensive resources in the NuGet ecosystem including NuGet sour
author: JonDouglas
ms.author: jodou
ms.date: 01/18/2018
-ms.topic: conceptual
+ms.topic: concept-article
---
# An overview of the NuGet ecosystem
diff --git a/docs/policies/Governance.md b/docs/policies/Governance.md
index fce9b9a5e..d1e4e1dc8 100644
--- a/docs/policies/Governance.md
+++ b/docs/policies/Governance.md
@@ -4,7 +4,7 @@ description: The governance model for NuGet, including roles and responsibilitie
author: JonDouglas
ms.author: jodou
ms.date: 01/18/2018
-ms.topic: conceptual
+ms.topic: article
---
# NuGet governance
diff --git a/docs/quickstart/create-and-publish-a-package-using-the-dotnet-cli.md b/docs/quickstart/create-and-publish-a-package-using-the-dotnet-cli.md
index a28227cf8..1c662c94d 100644
--- a/docs/quickstart/create-and-publish-a-package-using-the-dotnet-cli.md
+++ b/docs/quickstart/create-and-publish-a-package-using-the-dotnet-cli.md
@@ -100,7 +100,7 @@ Congratulations on creating and publishing your first NuGet package!
## Related video
-> [!Video https://learn.microsoft.com/shows/NuGet-101/Create-and-Publish-a-NuGet-Package-with-the-NET-CLI-5-of-5/player]
+> [!VIDEO https://learn-video.azurefd.net/vod/player?show=dotnet-package-management-with-nuget-for-beginners&ep=creating-and-publishing-a-nuget-package-nuget-for-beginners]
Find more NuGet videos on [Channel 9](/shows/NuGet-101/) and [YouTube](https://www.youtube.com/playlist?list=PLdo4fOcmZ0oVLvfkFk8O9h6v2Dcdh2bh_).
diff --git a/docs/quickstart/install-and-use-a-package-using-the-dotnet-cli.md b/docs/quickstart/install-and-use-a-package-using-the-dotnet-cli.md
index d5259dfcd..b4ccfb956 100644
--- a/docs/quickstart/install-and-use-a-package-using-the-dotnet-cli.md
+++ b/docs/quickstart/install-and-use-a-package-using-the-dotnet-cli.md
@@ -103,7 +103,7 @@ Congratulations on installing and using your first NuGet package!
## Related video
-> [!VIDEO https://learn.microsoft.com/shows/NuGet-101/Install-and-Use-a-NuGet-Package-with-the-NET-CLI-3-of-5/player]
+> [!VIDEO https://learn-video.azurefd.net/vod/player?show=dotnet-package-management-with-nuget-for-beginners&ep=installing-a-nuget-package-using-the-dotnet-cli-nuget-for-beginners]
Find more NuGet videos on [Channel 9](/shows/NuGet-101/) and [YouTube](https://www.youtube.com/playlist?list=PLdo4fOcmZ0oVLvfkFk8O9h6v2Dcdh2bh_).
diff --git a/docs/reference/Errors-and-Warnings.md b/docs/reference/Errors-and-Warnings.md
index 65977a512..3abf97dd5 100644
--- a/docs/reference/Errors-and-Warnings.md
+++ b/docs/reference/Errors-and-Warnings.md
@@ -27,7 +27,7 @@ NuGet supports the following configuration properties.
| Group | Error Numbers |
| --- | --- |
-| Invalid input errors | [NU1001](./errors-and-warnings/NU1001.md), [NU1002](./errors-and-warnings/NU1002.md), [NU1003](./errors-and-warnings/NU1003.md), [NU1004](./errors-and-warnings/NU1004.md), [NU1005](./errors-and-warnings/NU1005.md), [NU1006](./errors-and-warnings/NU1006.md), [NU1007](./errors-and-warnings/NU1007.md), [NU1008](./errors-and-warnings/NU1008.md), [NU1009](./errors-and-warnings/NU1009.md), [NU1010](./errors-and-warnings/NU1010.md), [NU1011](./errors-and-warnings/NU1011.md), [NU1012](./errors-and-warnings/NU1012.md), |
+| Invalid input errors | [NU1001](./errors-and-warnings/NU1001.md), [NU1002](./errors-and-warnings/NU1002.md), [NU1003](./errors-and-warnings/NU1003.md), [NU1004](./errors-and-warnings/NU1004.md), [NU1005](./errors-and-warnings/NU1005.md), [NU1006](./errors-and-warnings/NU1006.md), [NU1007](./errors-and-warnings/NU1007.md), [NU1008](./errors-and-warnings/NU1008.md), [NU1009](./errors-and-warnings/NU1009.md), [NU1010](./errors-and-warnings/NU1010.md), [NU1011](./errors-and-warnings/NU1011.md), [NU1012](./errors-and-warnings/NU1012.md), [NU1013](./errors-and-warnings/NU1013.md), [NU1014](./errors-and-warnings/NU1014.md), [NU1015](./errors-and-warnings/NU1015.md), [NU1016](./errors-and-warnings/NU1016.md), [NU1017](./errors-and-warnings/NU1017.md) |
| Missing package and project errors | [NU1100](./errors-and-warnings/NU1100.md), [NU1101](./errors-and-warnings/NU1101.md), [NU1102](./errors-and-warnings/NU1102.md), [NU1103](./errors-and-warnings/NU1103.md), [NU1104](./errors-and-warnings/NU1104.md), [NU1105](./errors-and-warnings/NU1105.md), [NU1106](./errors-and-warnings/NU1106.md), [NU1107](./errors-and-warnings/NU1107.md), [NU1108](./errors-and-warnings/NU1108.md), [NU1109](./errors-and-warnings/NU1109.md) |
| Package source mapping errors | [NU1110](./errors-and-warnings/NU1110.md) |
| Compatibility errors | [NU1201](./errors-and-warnings/NU1201.md), [NU1202](./errors-and-warnings/NU1202.md), [NU1203](./errors-and-warnings/NU1203.md), [NU1204](./errors-and-warnings/NU1204.md), [NU1401](./errors-and-warnings/NU1401.md), [NU1402](./errors-and-warnings/NU1402.md), [NU1403](./errors-and-warnings/NU1403.md) |
diff --git a/docs/reference/NuGet-Client-SDK.md b/docs/reference/NuGet-Client-SDK.md
index fd0e3eee4..e58bee9bf 100644
--- a/docs/reference/NuGet-Client-SDK.md
+++ b/docs/reference/NuGet-Client-SDK.md
@@ -4,7 +4,7 @@ description: The API is evolving and not yet documented, but examples are availa
author: JonDouglas
ms.author: jodou
ms.date: 01/09/2018
-ms.topic: conceptual
+ms.topic: article
---
# NuGet Client SDK
diff --git a/docs/reference/cli-reference/cli-ref-environment-variables.md b/docs/reference/cli-reference/cli-ref-environment-variables.md
index a55fb00cb..e0c993671 100644
--- a/docs/reference/cli-reference/cli-ref-environment-variables.md
+++ b/docs/reference/cli-reference/cli-ref-environment-variables.md
@@ -36,7 +36,6 @@ The list of properties documented in [NuGet pack and restore as MSBuild targets]
| NUGET_UPDATEFILETIME_MAXRETRIES | Sets the number of times NuGet will attempt to retry seting the file timestamp when extracting packages when the first attempt failed. | On Windows anti-virus software might temporarily open files, preventing NuGet from changing the timestamp. NuGet uses an exponential back-off where the wait duration between attempts is `Math.Pow(2, retryNumber)`. The default max retries is 9, meaning the default total wait duration before failure will be approximately one second. |
| NUGET_XMLDOC_MODE | Determines how assemblies XML documentation file extraction should be handled. | Supported modes are *skip* (do not extract XML documentation files), *compress* (store XML doc files as a zip archive) or *none* (default, treat XML doc files as regular files). |
| NUGET_CERT_REVOCATION_MODE | Determines how the revocation status check of the certificate used to sign a package, is performed when a signed package is installed or restored. When not set, defaults to `online`.| Possible values *online* (default), *offline*. Related to [NU3028](../errors-and-warnings/NU3028.md) |
-| NUGET_ENABLE_ENHANCED_HTTP_RETRY | Enables or disables enhanced HTTP retry in NuGet. | Possible values are `true` (default) or `false`. |
| NUGET_ENHANCED_MAX_NETWORK_TRY_COUNT | Configures the maximum number of times an HTTP connection should be retried when enhanced retries are enabled. | A number representing how many retries to perform, the default value is `6`. |
| NUGET_ENHANCED_NETWORK_RETRY_DELAY_MILLISECONDS | Configures the amount of time to wait in milliseconds before retrying an HTTP connection when enhanced retries are enabled. | Number of millseconds to wait, the default value is `1000`. |
-| NUGET_EXPERIMENTAL_USE_NJ_FOR_FILE_PARSING | Determines whether or not `Netwonsoft.Json` is used for parsing the assets file during restore | Possible values are `true` or `false` (default). |
+
diff --git a/docs/reference/cli-reference/cli-ref-push.md b/docs/reference/cli-reference/cli-ref-push.md
index b8f7b4569..cdb3fef24 100644
--- a/docs/reference/cli-reference/cli-ref-push.md
+++ b/docs/reference/cli-reference/cli-ref-push.md
@@ -28,6 +28,9 @@ where `` identifies the package to push to the server.
## Options
+- **`-AllowInsecureConnections`**
+ Allows pushing to HTTP sources (insecure). For more information, refer to https://aka.ms/nuget-https-everywhere.
+
- **`-ApiKey`**
The API key for the target repository. If not present, the one specified in the config file is used.
diff --git a/docs/reference/cli-reference/cli-ref-sign.md b/docs/reference/cli-reference/cli-ref-sign.md
index 68b4dc650..e2fda227a 100644
--- a/docs/reference/cli-reference/cli-ref-sign.md
+++ b/docs/reference/cli-reference/cli-ref-sign.md
@@ -33,6 +33,8 @@ where `` is one or more `.nupkg` files.
Starting with NuGet.exe 6.12, this option can be used to specify the SHA-1, SHA-256, SHA-384, or SHA-512 fingerprint of the certificate.
However, a `NU3043` warning is raised when a SHA-1 certificate fingerprint is used because it is no longer considered secure.
+ In NuGet.exe 7.0 and later versions, the warning is elevated to an error.
+ Only SHA-2 family fingerprints (SHA-256, SHA-384, and SHA-512) are supported.
All the previous versions of the NuGet.exe continue to accept only SHA-1 certificate fingerprint.
diff --git a/docs/reference/cli-reference/cli-ref-verify.md b/docs/reference/cli-reference/cli-ref-verify.md
index ab6dda990..def7a7c90 100644
--- a/docs/reference/cli-reference/cli-ref-verify.md
+++ b/docs/reference/cli-reference/cli-ref-verify.md
@@ -13,6 +13,7 @@ ms.reviewer: rmpablos
**Applies to:** package consumption • **Supported versions:** 4.6+
Verifies a package.
+Starting with [NuGet 7.0](../../release-notes/NuGet-7.0.md), the package's content hash will also be displayed.
Verification of signed packages is not yet supported under Mono.
diff --git a/docs/reference/dotnet-Commands.md b/docs/reference/dotnet-Commands.md
index 5b7f59b9f..945538842 100644
--- a/docs/reference/dotnet-Commands.md
+++ b/docs/reference/dotnet-Commands.md
@@ -4,7 +4,7 @@ description: A short reference for NuGet-related commands using the dotnet comma
author: JonDouglas
ms.author: jodou
ms.date: 06/24/2019
-ms.topic: conceptual
+ms.topic: article
---
# dotnet CLI commands
diff --git a/docs/reference/errors-and-warnings/NU1015.md b/docs/reference/errors-and-warnings/NU1015.md
new file mode 100644
index 000000000..e109d8636
--- /dev/null
+++ b/docs/reference/errors-and-warnings/NU1015.md
@@ -0,0 +1,34 @@
+---
+title: NuGet Error NU1015
+description: NU1015 error code
+author: zivkan
+ms.author: zivkan
+ms.date: 06/04/2025
+ms.topic: reference
+f1_keywords:
+ - "NU1015"
+---
+
+# NuGet Error NU1015
+
+## Scenario
+
+> The following PackageReference item(s) do not have a version specified: Contoso.Utilities
+
+### Issue
+
+Your project file, or a file it imports (for example `Directory.Build.props`) has defined a `PackageReference` without a version.
+
+Projects using [Central Package Management (CPM)](../../consume-packages/Central-Package-Management.md) do not define a version on the PackageReference item, so this error could happen if a project has CPM disabled by accident, or if a project or `PackageReference` using CPM is copied into another solution that is not using CPM.
+
+### Solution
+
+- Add a version to the package reference
+
+If you edit your project, a package reference will generally look similar to ``, although [MSBuild allows multiple syntaxes to define item metadata](/visualstudio/msbuild/msbuild-items).
+Add the `Version="1.2.3"` item metadata as defined.
+
+- Check Central Package Management configuration
+
+This NU1015 error only happens when CPM is disabled.
+If Central Package Management (CPM) is intended to be enabled, check your configuration files to investigate why it is disabled.
diff --git a/docs/reference/errors-and-warnings/NU1016.md b/docs/reference/errors-and-warnings/NU1016.md
new file mode 100644
index 000000000..f8f297de7
--- /dev/null
+++ b/docs/reference/errors-and-warnings/NU1016.md
@@ -0,0 +1,38 @@
+---
+title: NuGet Error NU1016
+description: NU1016 error code
+author: donnie-msft
+ms.author: eagoodso
+ms.date: 01/28/2025
+ms.topic: reference
+f1_keywords:
+ - "NU1016"
+---
+
+# NuGet Error NU1016
+
+> Managing packages with project.json is deprecated. Migrate to PackageReference.
+
+### Issue
+
+Managing packages with project.json is deprecated. Migrate to PackageReference.
+
+### Solution
+
+[Migrate your project from project.json to PackageReference](../../archive/project-json.md#migrate-projectjson-to-packagereference).
+
+**Visual Studio 2026 or later:**
+
+Your project.json project will be automatically migrated to PackageReference when you open the solution. Visual Studio will create a backup of the original files in a `Backup` folder in the project directory.
+
+**Visual Studio 2022:**
+
+You need to use the built-in migrator:
+
+1. Open your project.json project in Visual Studio
+1. In Solution Explorer, find the project's Dependencies node
+1. Right-click and select **Migrate project.json to PackageReference...**
+
+For detailed migration guidance, see the [project.json reference documentation](../../archive/project-json.md).
+
+For more information about package management formats, see [Package references in project files](../../consume-packages/Package-References-in-Project-Files.md).
diff --git a/docs/reference/errors-and-warnings/NU1017.md b/docs/reference/errors-and-warnings/NU1017.md
new file mode 100644
index 000000000..2e68f8e0b
--- /dev/null
+++ b/docs/reference/errors-and-warnings/NU1017.md
@@ -0,0 +1,51 @@
+---
+title: NuGet Error NU1017
+description: NU1017 error code
+author: Nigusu-Allehu
+ms.author: Nigusu-Allehu
+ms.date: 09/23/2025
+ms.topic: reference
+f1_keywords:
+ - "NU1017"
+---
+
+# NuGet Error NU1017
+
+## Scenario
+
+> Invalid package id : `contoso../id`.
+
+### Issue
+
+The package ID is invalid because it does not match the required format.
+NuGet validates package IDs using this regex:
+
+```regex
+^\w+([.-]\w+)*$
+```
+
+* The ID must **start with a letter or number**.
+* It can only contain **letters, numbers, dots (`.`), and dashes (`-`)**.
+* Dots or dashes must be followed by more letters or numbers.
+* You can have multiple parts separated by `.` or `-`, like `Contoso.App.Service`.
+
+### Solution
+
+To fix this error:
+
+* Replace or remove any invalid characters from the package ID. Only letters, numbers, dots (`.`), and dashes (`-`) are allowed.
+* Ensure the package ID starts with a letter or number.
+* Dots (`.`) or dashes (`-`) must always be followed by another letter or number (no consecutive dots/dashes, and none at the end).
+* For example, change `contoso../id` to `Contoso.Id`.
+
+Valid:
+
+```xml
+
+```
+
+Invalid:
+
+```xml
+
+```
diff --git a/docs/reference/errors-and-warnings/NU1302.md b/docs/reference/errors-and-warnings/NU1302.md
index 8e2d44615..2dd3803d8 100644
--- a/docs/reference/errors-and-warnings/NU1302.md
+++ b/docs/reference/errors-and-warnings/NU1302.md
@@ -10,6 +10,8 @@ f1_keywords:
# NuGet Error NU1302
+## Scenario 1
+
> You are running the 'restore' operation with an 'HTTP' source: myHttpSource. NuGet requires HTTPS sources. To use an HTTP source, you must explicitly set 'allowInsecureConnections' to true in your NuGet.Config file. Please refer to https://aka.ms/nuget-https-everywhere for more information.
### Issue
@@ -51,4 +53,36 @@ Here's how it functions:
- For SDK Analysis Level value **below 9.0.100**, using HTTP sources triggers a warning ([NU1803](NU1803.md)).
- Starting with SDK Analysis Level **9.0.100 or higher**, HTTP sources result in an error (NU1302) unless `AllowInsecureConnections` is explicitly enabled.
+> [!WARNING]
+> Changing SdkAnalysisLevel has other side-effects. Refer to the [`SdkAnalysisLevel`](/dotnet/core/project-sdk/msbuild-props#sdkanalysislevel) for a summary of the full scope of .NET SDK features affected.
+
+## Scenario 2
+
+> You are using a NuGet source 'https://contoso/v3/index.json' that contains an 'HTTP' service index resource endpoint: 'http://contoso/v3-flatcontainer/contoso/index.json'. This is insecure and not recommended. To allow HTTP resources, you must explicitly set 'allowInsecureConnections' to true in your NuGet.Config file. For more information, visit https://aka.ms/nuget-https-everywhere.
+
+### Issue
+
+A configured package source uses **HTTPS**, but one of its resources (indicated in the error message) uses **HTTP**.
+
+NuGet requires that all sources and their resources use HTTPS.
+If you want to continue using this source despite its HTTP resource, you must set the `allowInsecureConnections` flag to true in your NuGet.config file.
+
+To learn more about package sources and resource endpoints, take a look at the [NuGet Server API](../../api/overview).
+
+#### Option 1: Update the Source to Use HTTPS
+
+Whenever possible, switch to a package source that provides only HTTPS resources. This is the recommended and most secure option.
+#### Option 2: Allow Insecure Connections (If Necessary)
+
+If you must use the source, explicitly allow insecure connections by adding the `allowInsecureConnections` flag in the `NuGet.Config`:
+
+For information about managing the setting in Visual Studio, see [NuGet Options in Visual Studio](../../consume-packages/nuget-visual-studio-options.md#allow-insecure-connections)
+
+```xml
+
+
+
+
+
+```
diff --git a/docs/reference/errors-and-warnings/NU1510.md b/docs/reference/errors-and-warnings/NU1510.md
index 12666d58f..2b4dbf758 100644
--- a/docs/reference/errors-and-warnings/NU1510.md
+++ b/docs/reference/errors-and-warnings/NU1510.md
@@ -11,15 +11,74 @@ f1_keywords:
# NuGet Warning NU1510
-## Scenario 1
+## Scenario
-> PackageReference System.Text.Json 9.0.0 will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary.
+> PackageReference System.Text.Json will not be pruned. Consider removing this package from your dependencies, as it is likely unnecessary.
### Issue
The package `System.Text.Json` has been specified for pruning through the [PrunePackageReference](../../consume-packages/Package-References-in-Project-Files.md#prunepackagereference) feature.
The `.NET SDK` generally specifies the list of packages to be pruned. The package is not needed as a direct PackageReference since the .NET runtime itself carries either the same or higher version of the assembly.
+This warning is *only* raised when the PackageReference in question *can be completely removed from the project*.
+
+#### Example 1
+
+```xml
+
+ net10.0
+
+
+
+
+
+```
+
+#### Example 2
+
+```xml
+
+ net9.0;net10.0
+
+
+
+
+
+
+```
+
+Each conditional `PackageReference` for the `System.Text.Json` package can be removed because the package is already included in the respective .NET runtime versions for the frameworks it is declared for.
+
+#### Example 3
+
+```xml
+
+ net9.0;net10.0
+
+
+
+
+
+```
+
+The `System.Text.Json` package is within the pruning range of the only framework it's declared for.
+
### Solution
Remove the PackageReference as it's unnecessary.
+
+> [!NOTE]
+> In order to allow for easier adoption of the PrunePackageReference feature, this warning is raised by default when a project targets the .NET 10 framework or newer.
+
+> [!NOTE]
+> The warning will not be raised in scenarios in which at least one of the frameworks still needs the package, such as `net48` in the below example.
+>
+> ```xml
+>
+> net10.0;net48
+>
+>
+>
+>
+>
+> ```
diff --git a/docs/reference/errors-and-warnings/NU1511.md b/docs/reference/errors-and-warnings/NU1511.md
index c91ba031e..310a69a07 100644
--- a/docs/reference/errors-and-warnings/NU1511.md
+++ b/docs/reference/errors-and-warnings/NU1511.md
@@ -25,3 +25,6 @@ Pruning of projects is not supported.
- The `.NET SDK` generally specifies the list of packages to be pruned. It may mean that you have a project matching the id of a platform assembly.
In this scenario, change the name of the project.
- If the `PrunePackageReference` has been specified within your project, you may need to remove the `PrunePackageReference`
+
+> [!NOTE]
+> In order to allow for easier adoption of the PrunePackageReference feature, this warning is raised by default when a project targets the .NET 10 framework or newer.
diff --git a/docs/reference/errors-and-warnings/NU1701.md b/docs/reference/errors-and-warnings/NU1701.md
index 077330f44..0fd319446 100644
--- a/docs/reference/errors-and-warnings/NU1701.md
+++ b/docs/reference/errors-and-warnings/NU1701.md
@@ -15,9 +15,9 @@ f1_keywords:
> Package 'packageId' was restored using 'TargetFrameworkA' instead the project target framework 'TargetFrameworkB'. This package may not be fully compatible with your project.
### Issue
-`PackageTargetFallback` / `AssetTargetFallback` was used to select assets from a package. The warning let users know that the assets may not be 100% compatible.
+`AssetTargetFallback` was used to select assets from a package. The warning let users know that the assets may not be 100% compatible.
### Solution
Change the project's target framework to one that the package supports.
-[!INCLUDE [nugetsolver-tool](../../includes/nugetsolver-tool.md)]
\ No newline at end of file
+[!INCLUDE [nugetsolver-tool](../../includes/nugetsolver-tool.md)]
diff --git a/docs/reference/errors-and-warnings/NU1802.md b/docs/reference/errors-and-warnings/NU1802.md
index da9738ae8..7e194460e 100644
--- a/docs/reference/errors-and-warnings/NU1802.md
+++ b/docs/reference/errors-and-warnings/NU1802.md
@@ -17,6 +17,7 @@ Updating last access time on file "C:\packages\contoso.library\1.0.0\.nupkg.meta
### Solution
-You have enabled an experimental feature that updates the last access of the .nupkg.metadata file in the NuGet global packages folder.
+You have enabled a feature that updates the last access of the .nupkg.metadata file in the NuGet global packages folder.
Failures are likely to be issues with permissions.
-The details of the failure reason will be contained in the error message. Consult that information for the exact action.
\ No newline at end of file
+The details of the failure reason will be contained in the error message.
+Consult that information for the exact action.
diff --git a/docs/reference/errors-and-warnings/NU1901-NU1904.md b/docs/reference/errors-and-warnings/NU1901-NU1904.md
index 46f6c3e29..4fb538434 100644
--- a/docs/reference/errors-and-warnings/NU1901-NU1904.md
+++ b/docs/reference/errors-and-warnings/NU1901-NU1904.md
@@ -33,7 +33,7 @@ For more information, see [the documentation on auditing packages](../../concept
### Solution
-We have [a blog post](https://devblogs.microsoft.com/nuget/nugetaudit-2-0-elevating-security-and-trust-in-package-management/) with more discussion about our recommended actions when your project uses a package with a known vulnerability, and tools that can help.
+We have [documentation on upgrading vulnerable packages](../../concepts/Auditing-Packages.md#actions-when-packages-with-known-vulnerabilities-are-reported) that goes in more detail about our recommended actions when your project uses a package with a known vulnerability, and tools that can help.
Upgrading to a newer version of the package is likely to resolve the warning.
If your project does not reference the package directly (it's a transitive package), [`dotnet nuget why`](/dotnet/core/tools/dotnet-nuget-why) can be used to understand which package caused it to be included in your project.
@@ -52,5 +52,6 @@ For example ` [!WARNING]
+> project.json support has been removed starting with [NuGet 7.0](../../release-notes/NuGet-7.0.md) and this error will no longer be raised.
> `project.json` pack is disabled in the current NuGet version, and will be permanently removed in a future version.
> Please consider migrating 'MyProject' to `PackageReference` and using the pack targets.
@@ -21,4 +24,4 @@ NuGet.exe pack for project.json projects is not supported.
### Solution
-Migrate your project to PackageReference and use the pack targets instead.
\ No newline at end of file
+[Migrate your project to PackageReference](../../archive/project-json.md#migrate-projectjson-to-packagereference) and use the pack targets instead.
diff --git a/docs/reference/extensibility/NuGet-Credential-Providers-for-Visual-Studio.md b/docs/reference/extensibility/NuGet-Credential-Providers-for-Visual-Studio.md
index 04ea8de23..e567da4aa 100644
--- a/docs/reference/extensibility/NuGet-Credential-Providers-for-Visual-Studio.md
+++ b/docs/reference/extensibility/NuGet-Credential-Providers-for-Visual-Studio.md
@@ -4,7 +4,7 @@ description: NuGet credential providers authenticate with feeds by implementing
author: JonDouglas
ms.author: jodou
ms.date: 01/09/2017
-ms.topic: conceptual
+ms.topic: how-to
---
# Authenticating feeds in Visual Studio with NuGet credential providers
diff --git a/docs/reference/extensibility/NuGet-Cross-Platform-Authentication-Plugin.md b/docs/reference/extensibility/NuGet-Cross-Platform-Authentication-Plugin.md
index a0e8d027b..624db0a23 100644
--- a/docs/reference/extensibility/NuGet-Cross-Platform-Authentication-Plugin.md
+++ b/docs/reference/extensibility/NuGet-Cross-Platform-Authentication-Plugin.md
@@ -4,7 +4,7 @@ description: NuGet cross platform authentication plugins for NuGet.exe, dotnet.e
author: nkolev92
ms.author: nikolev
ms.date: 07/01/2018
-ms.topic: conceptual
+ms.topic: article
---
# NuGet cross platform authentication plugin
@@ -58,10 +58,14 @@ The following table summarizes how the plugin should behave for all combinations
| IsNonInteractive | CanShowDialog | Plugin behavior |
| ---------------- | ------------- | --------------- |
-| true | true | The IsNonInteractive switch takes precedence over the dialog switch. The plugin is not allowed to pop a dialog. This combination is only valid for .NET Framework plugins |
-| true | false | The IsNonInteractive switch takes precedence over the dialog switch. The plugin is not allowed to block. This combination is only valid for .NET Core plugins |
-| false | true | The plugin should show a dialog. This combination is only valid for .NET Framework plugins |
-| false | false | The plugin should/can not show a dialog. The plugin should use device flow to authenticate by logging an instruction message via the logger. This combination is only valid for .NET Core plugins |
+| true | true | The IsNonInteractive switch takes precedence over the dialog switch. The plugin is not allowed to block. |
+| true | false | The IsNonInteractive switch takes precedence over the dialog switch. The plugin is not allowed to block. |
+| false | true | The plugin can show a dialog if required. For example, interactive login, or account selection. |
+| false | false | The plugin should/can not show a dialog. The plugin should use device flow to authenticate by logging an instruction message via the logger. |
+
+Prior to [NuGet 7.0](../../release-notes/NuGet-7.0.md), NuGet would always set `CanShowDialog` to false on the dotnet CLI, and true for MSBuild restore.
+From 7.0, NuGet will always set `CanShowDialog` to true, but plugins should still detect when graphical interfaces are not available.
+For example when running on Linux over an SSH connection without X forwarding, or a PowerShell remote session.
Please refer to the following specs before writing a plugin.
diff --git a/docs/reference/extensibility/NuGet-Cross-Platform-Plugins.md b/docs/reference/extensibility/NuGet-Cross-Platform-Plugins.md
index b2a2504b0..3fd832a9e 100644
--- a/docs/reference/extensibility/NuGet-Cross-Platform-Plugins.md
+++ b/docs/reference/extensibility/NuGet-Cross-Platform-Plugins.md
@@ -4,7 +4,7 @@ description: NuGet cross platform plugins for NuGet.exe, dotnet.exe, msbuild.exe
author: nkolev92
ms.author: nikolev
ms.date: 07/01/2018
-ms.topic: conceptual
+ms.topic: article
---
# NuGet cross platform plugins
diff --git a/docs/reference/extensibility/nuget-exe-Credential-Providers.md b/docs/reference/extensibility/nuget-exe-Credential-Providers.md
index 624c8c787..b0242a3b1 100644
--- a/docs/reference/extensibility/nuget-exe-Credential-Providers.md
+++ b/docs/reference/extensibility/nuget-exe-Credential-Providers.md
@@ -4,7 +4,7 @@ description: nuget.exe credential providers authenticate with a feed, and are im
author: JonDouglas
ms.author: jodou
ms.date: 12/12/2017
-ms.topic: conceptual
+ms.topic: concept-article
---
# Authenticating feeds with nuget.exe credential providers
diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md
index aa4406876..b4601c9c3 100644
--- a/docs/reference/msbuild-targets.md
+++ b/docs/reference/msbuild-targets.md
@@ -4,7 +4,7 @@ description: NuGet pack and restore can work directly as MSBuild targets with Nu
author: nkolev92
ms.author: nikolev
ms.date: 2/4/2022
-ms.topic: conceptual
+ms.topic: article
no-loc: [NuGet, MSBuild, .nuspec, nuspec]
---
@@ -38,6 +38,9 @@ Similarly, you can write an MSBuild task, write your own target and consume NuGe
For .NET projects that use the `PackageReference` format, using `msbuild -t:pack` draws inputs from the project file to use in creating a NuGet package.
+Non-SDK-style projects will need to install the NuGet.Build.Tasks.Pack package when using Visual Studio 2022 or earlier.
+We recommend uninstalling this package when upgrading to Visual Studio 2026 to ensure your project can use the latest pack features and bug fixes.
+
The following table describes the MSBuild properties that can be added to a project file within the first `` node. You can make these edits easily in Visual Studio 2017 and later by right-clicking the project and selecting **Edit {project_name}** on the context menu. For convenience, the table is organized by the equivalent property in a [`.nuspec` file](../reference/nuspec.md).
> [!NOTE]
@@ -307,7 +310,8 @@ When using `MSBuild -t:pack -p:IsTool=true`, all output files, as specified in t
### Packing using a `.nuspec` file
-Although it is recommended that you [include all the properties](../reference/msbuild-targets.md#pack-target) that are usually in the `.nuspec` file in the project file instead, you can choose to use a `.nuspec` file to pack your project. For a non-SDK-style project that uses `PackageReference`, you must import `NuGet.Build.Tasks.Pack.targets` so that the pack task can be executed. You still need to restore the project before you can pack a nuspec file. (An SDK-style project includes the pack targets by default.)
+Although it is recommended that you [include all the properties](../reference/msbuild-targets.md#pack-target) that are usually in the `.nuspec` file in the project file instead, you can choose to use a `.nuspec` file to pack your project.
+You still need to restore the project before you can pack a nuspec file. (An SDK-style project includes the pack targets by default.)
The target framework of the project file is irrelevant and not used when packing a nuspec. The following three MSBuild properties are relevant to packing using a `.nuspec`:
diff --git a/docs/reference/nuget-config-file.md b/docs/reference/nuget-config-file.md
index 355d1b37a..83aa92383 100644
--- a/docs/reference/nuget-config-file.md
+++ b/docs/reference/nuget-config-file.md
@@ -30,13 +30,14 @@ Contains miscellaneous configuration settings, which can be set using the [`nuge
| Key | Value |
| --- | --- |
+| defaultPushSource | Identifies the URL or path of the package source that should be used as the default if no other package sources are found for an operation. |
| dependencyVersion (`packages.config` only) | The default `DependencyVersion` value for package install, restore, and update, when the `-DependencyVersion` switch is not specified directly. This value is also used by the NuGet Package Manager UI. Values are `Lowest`, `HighestPatch`, `HighestMinor`, `Highest`. |
| globalPackagesFolder | The location of the default global packages folder. The default is `%userprofile%\.nuget\packages` (Windows) or `~/.nuget/packages` (Mac/Linux). A relative path can be used in project-specific `nuget.config` files. This setting is overridden by the `NUGET_PACKAGES` environment variable, which takes precedence. |
-| repositoryPath (`packages.config` only) | The location in which to install NuGet packages instead of the default `$(Solutiondir)/packages` folder. A relative path can be used in project-specific `nuget.config` files. |
-| defaultPushSource | Identifies the URL or path of the package source that should be used as the default if no other package sources are found for an operation. |
| http_proxy http_proxy.user http_proxy.password no_proxy | Proxy settings to use when connecting to package sources; `http_proxy` should be in the format `http://:@`. Passwords are encrypted and cannot be added manually. For `no_proxy`, the value is a comma-separated list of domains the bypass the proxy server. You can alternately use the http_proxy and no_proxy environment variables for those values. For additional details, see [NuGet proxy settings](http://skolima.blogspot.com/2012/07/nuget-proxy-settings.html) (skolima.blogspot.com). |
| maxHttpRequestsPerSource | Controls the maximum number of parallel requests sent from NuGet to every package source for package dependency resolution and downloads. The default value on `dotnet.exe` is `Int32.MaxValue` which is derived from `HttpClientHandler.MaxConnectionsPerServer` property. This setting has no impact on `dotnet.exe` for `Mac OS` because the throttling limit is set to `16` to avoid too many open files error. The default value for `NuGet client tools` that runs on `.NET Framework` such as `Visual Studio` and `nuget.exe` is `64` on `Windows` and `1` on `Mono`. The default value for `Packages.config` style projects is set to `Environment.ProcessorCount`. Configuring `maxHttpRequestsPerSource` property to a value less than the default could impact NuGet performance. |
-| signatureValidationMode | Specifies the validation mode used to verify package signatures for package install, and restore. Values are `accept`, `require`. Defaults to `accept`.
+| repositoryPath (`packages.config` only) | The location in which to install NuGet packages instead of the default `$(Solutiondir)/packages` folder. A relative path can be used in project-specific `nuget.config` files. |
+| signatureValidationMode | Specifies the validation mode used to verify package signatures for package install, and restore. Values are `accept`, `require`. Defaults to `accept`. |
+| updatePackageLastAccessTime | When set to `true`, restore will update the last access time of the `.nupkg.metadata` file in the global packages folder during restore. See [the documentation on the global packages folder for more information](../consume-packages/managing-the-global-packages-and-cache-folders.md#global-packages) |
**Example**:
@@ -48,6 +49,7 @@ Contains miscellaneous configuration settings, which can be set using the [`nuge
+
```
diff --git a/docs/release-notes/Index.md b/docs/release-notes/Index.md
index c7d4bc885..745e8f4db 100644
--- a/docs/release-notes/Index.md
+++ b/docs/release-notes/Index.md
@@ -1,17 +1,21 @@
---
title: Release Notes
description: Index of NuGet release notes and known issues for all versions.
-author: anangaur
-ms.author: anangaur
+author: donnie-msft
+ms.author: eagoodso
ms.date: 05/25/2022
-ms.topic: conceptual
+ms.topic: release-notes
---
# Release Notes
[Known Issues](../release-notes/known-issues.md)
-[Nuget 6.13](../release-notes/NuGet-6.13.md)
+[NuGet 7.0](../release-notes/NuGet-7.0.md)
+
+[NuGet 6.14](../release-notes/NuGet-6.14.md)
+
+[NuGet 6.13](../release-notes/NuGet-6.13.md)
[NuGet 6.12](../release-notes/NuGet-6.12.md)
diff --git a/docs/release-notes/Known-Issues.md b/docs/release-notes/Known-Issues.md
index a02dc0f60..051862356 100644
--- a/docs/release-notes/Known-Issues.md
+++ b/docs/release-notes/Known-Issues.md
@@ -4,7 +4,7 @@ description: Known issues with NuGet including authentication, package installat
author: JonDouglas
ms.author: jodou
ms.date: 06/06/2024
-ms.topic: conceptual
+ms.topic: troubleshooting-known-issue
---
# Known Issues with NuGet
diff --git a/docs/release-notes/NuGet-1.1.md b/docs/release-notes/NuGet-1.1.md
index 6ccec09fa..63b2c1586 100644
--- a/docs/release-notes/NuGet-1.1.md
+++ b/docs/release-notes/NuGet-1.1.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 1.1 including known issues, bug fixes, adde
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 1.0 and 1.1 Release Notes
@@ -268,4 +268,4 @@ The following is a list of features and bugs that were fixed for NuGet CTP 1.
* ```[Add Disclaimer Text to the Add Package Dialog](http://nuget.codeplex.com/workitem/140)```
* ```[Add Disclaimer When the Package Console is run the first time](http://nuget.codeplex.com/workitem/143)```
* ```[Display Disclaimer After Installing Package In The Console](http://nuget.codeplex.com/workitem/144)```
-* ```[Rename the .nupack extension to .nupkg](http://nuget.codeplex.com/workitem/146)```
\ No newline at end of file
+* ```[Rename the .nupack extension to .nupkg](http://nuget.codeplex.com/workitem/146)```
diff --git a/docs/release-notes/NuGet-1.2.md b/docs/release-notes/NuGet-1.2.md
index fe8f2022f..f43a1121a 100644
--- a/docs/release-notes/NuGet-1.2.md
+++ b/docs/release-notes/NuGet-1.2.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 1.2 including known issues, bug fixes, adde
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 1.2 Release Notes
@@ -87,4 +87,4 @@ need to update that project with the latest version of NuGet.Server.
you need to uninstall NuGet first and then install it. This is listed in our [Known Issues page](../release-notes/known-issues.md)
which provides more details. The issue only affects those running Visual Studio 2010 SP1 and have a version of NuGet
1.0 installed that was incorrectly signed. This version was only made available from the CodePlex website for a brief
-period so this issue shouldn't affect too many people.
\ No newline at end of file
+period so this issue shouldn't affect too many people.
diff --git a/docs/release-notes/NuGet-1.3.md b/docs/release-notes/NuGet-1.3.md
index 8db5d57bb..74115f60a 100644
--- a/docs/release-notes/NuGet-1.3.md
+++ b/docs/release-notes/NuGet-1.3.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 1.3 including known issues, bug fixes, adde
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 1.3 Release Notes
diff --git a/docs/release-notes/NuGet-1.4.md b/docs/release-notes/NuGet-1.4.md
index a1b4e3870..71514285b 100644
--- a/docs/release-notes/NuGet-1.4.md
+++ b/docs/release-notes/NuGet-1.4.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 1.4 including known issues, bug fixes, adde
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 1.4 Release Notes
diff --git a/docs/release-notes/NuGet-1.5.md b/docs/release-notes/NuGet-1.5.md
index 2ae23b70a..3bb052e73 100644
--- a/docs/release-notes/NuGet-1.5.md
+++ b/docs/release-notes/NuGet-1.5.md
@@ -4,7 +4,8 @@ description: Release notes for NuGet 1.5 including known issues, bug fixes, adde
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
+ms.custom: sfi-image-nochange
---
# NuGet 1.5 Release Notes
diff --git a/docs/release-notes/NuGet-1.6.md b/docs/release-notes/NuGet-1.6.md
index 0f8bc5d2f..4dd8dd1ca 100644
--- a/docs/release-notes/NuGet-1.6.md
+++ b/docs/release-notes/NuGet-1.6.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 1.6 including known issues, bug fixes, adde
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 1.6 Release Notes
diff --git a/docs/release-notes/NuGet-1.7.md b/docs/release-notes/NuGet-1.7.md
index 9395f1783..5a2f1b933 100644
--- a/docs/release-notes/NuGet-1.7.md
+++ b/docs/release-notes/NuGet-1.7.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 1.7 including known issues, bug fixes, adde
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 1.7 Release Notes
diff --git a/docs/release-notes/NuGet-1.8.md b/docs/release-notes/NuGet-1.8.md
index c8fe0e9c9..6179df1c7 100644
--- a/docs/release-notes/NuGet-1.8.md
+++ b/docs/release-notes/NuGet-1.8.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 1.8 including known issues, bug fixes, adde
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 1.8 Release Notes
@@ -72,4 +72,4 @@ By modifying the install command to download and install packages in parallel, N
## Bug Fixes
NuGet 1.8 includes quite a few bug fixes with an emphasis on the package manager console and package restore workflow, particularly as it relates to package restore consent and Windows 8 Express integration.
-For a full list of work items fixed in NuGet 1.8, please view the ```[NuGet Issue Tracker for this release](http://nuget.codeplex.com/workitem/list/advanced?keyword=&status=Closed&type=All&priority=All&release=NuGet%201.8&assignedTo=All&component=All&sortField=Votes&sortDirection=Descending&page=0)```.
\ No newline at end of file
+For a full list of work items fixed in NuGet 1.8, please view the ```[NuGet Issue Tracker for this release](http://nuget.codeplex.com/workitem/list/advanced?keyword=&status=Closed&type=All&priority=All&release=NuGet%201.8&assignedTo=All&component=All&sortField=Votes&sortDirection=Descending&page=0)```.
diff --git a/docs/release-notes/NuGet-2.0.md b/docs/release-notes/NuGet-2.0.md
index de1064776..d37a46008 100644
--- a/docs/release-notes/NuGet-2.0.md
+++ b/docs/release-notes/NuGet-2.0.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 2.0 including known issues, bug fixes, adde
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 2.0 Release Notes
diff --git a/docs/release-notes/NuGet-2.1.md b/docs/release-notes/NuGet-2.1.md
index ab2447af4..e2ed72aba 100644
--- a/docs/release-notes/NuGet-2.1.md
+++ b/docs/release-notes/NuGet-2.1.md
@@ -4,7 +4,8 @@ description: Release notes for NuGet 2.1 including known issues, bug fixes, adde
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
+ms.custom: sfi-image-nochange
---
# NuGet 2.1 Release Notes
diff --git a/docs/release-notes/NuGet-2.12-RC.md b/docs/release-notes/NuGet-2.12-RC.md
index ffd6d73ac..57b3f680e 100644
--- a/docs/release-notes/NuGet-2.12-RC.md
+++ b/docs/release-notes/NuGet-2.12-RC.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 2.12 RC including known issues, bug fixes,
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 2.12-RC Release Notes
diff --git a/docs/release-notes/NuGet-2.12.md b/docs/release-notes/NuGet-2.12.md
index eef3d737a..db1e010bb 100644
--- a/docs/release-notes/NuGet-2.12.md
+++ b/docs/release-notes/NuGet-2.12.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 2.12 including known issues, bug fixes, add
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 2.12 Release Notes
diff --git a/docs/release-notes/NuGet-2.2.1.md b/docs/release-notes/NuGet-2.2.1.md
index 2ad2f92c7..84de48489 100644
--- a/docs/release-notes/NuGet-2.2.1.md
+++ b/docs/release-notes/NuGet-2.2.1.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 2.2.1 including known issues, bug fixes, ad
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 2.2.1 Release Notes
diff --git a/docs/release-notes/NuGet-2.2.md b/docs/release-notes/NuGet-2.2.md
index ec4030efc..ea2296b2c 100644
--- a/docs/release-notes/NuGet-2.2.md
+++ b/docs/release-notes/NuGet-2.2.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 2.2 including known issues, bug fixes, adde
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 2.2 Release Notes
diff --git a/docs/release-notes/NuGet-2.5.md b/docs/release-notes/NuGet-2.5.md
index 09079a7a6..afaa2e90b 100644
--- a/docs/release-notes/NuGet-2.5.md
+++ b/docs/release-notes/NuGet-2.5.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 2.5 including known issues, bug fixes, adde
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 2.5 Release Notes
diff --git a/docs/release-notes/NuGet-2.6.1-for-WebMatrix.md b/docs/release-notes/NuGet-2.6.1-for-WebMatrix.md
index 1f46b40a9..e5abd798f 100644
--- a/docs/release-notes/NuGet-2.6.1-for-WebMatrix.md
+++ b/docs/release-notes/NuGet-2.6.1-for-WebMatrix.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 2.6.1 for WebMatrix including known issues,
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 2.6.1 for WebMatrix Release Notes
diff --git a/docs/release-notes/NuGet-2.6.md b/docs/release-notes/NuGet-2.6.md
index 222b8fd9a..b9a4db16c 100644
--- a/docs/release-notes/NuGet-2.6.md
+++ b/docs/release-notes/NuGet-2.6.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 2.6 including known issues, bug fixes, adde
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 2.6 Release Notes
@@ -158,4 +158,4 @@ package authors to fully understand how developers are installing their packages
## Bug Fixes
NuGet 2.6 also includes several bug fixes. For a full list of work items fixed in NuGet 2.6, please view
-the ```[NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?keyword=&status=Closed&type=All&priority=All&release=NuGet%202.6&assignedTo=All&component=All&sortField=LastUpdatedDate&sortDirection=Descending&page=0&reasonClosed=All)```.
\ No newline at end of file
+the ```[NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?keyword=&status=Closed&type=All&priority=All&release=NuGet%202.6&assignedTo=All&component=All&sortField=LastUpdatedDate&sortDirection=Descending&page=0&reasonClosed=All)```.
diff --git a/docs/release-notes/NuGet-2.7.1.md b/docs/release-notes/NuGet-2.7.1.md
index 867978a56..b9b3ed7de 100644
--- a/docs/release-notes/NuGet-2.7.1.md
+++ b/docs/release-notes/NuGet-2.7.1.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 2.7.1 including known issues, bug fixes, ad
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 2.7.1 Release Notes
diff --git a/docs/release-notes/NuGet-2.7.2.md b/docs/release-notes/NuGet-2.7.2.md
index 8b5778746..bc7b2a718 100644
--- a/docs/release-notes/NuGet-2.7.2.md
+++ b/docs/release-notes/NuGet-2.7.2.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 2.7.2 including known issues, bug fixes, ad
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 2.7.2 Release Notes
diff --git a/docs/release-notes/NuGet-2.7.md b/docs/release-notes/NuGet-2.7.md
index a8224e923..6154bfff3 100644
--- a/docs/release-notes/NuGet-2.7.md
+++ b/docs/release-notes/NuGet-2.7.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 2.7 including known issues, bug fixes, adde
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 2.7 Release Notes
diff --git a/docs/release-notes/NuGet-2.8.1.md b/docs/release-notes/NuGet-2.8.1.md
index 5efbb0905..1b9cea406 100644
--- a/docs/release-notes/NuGet-2.8.1.md
+++ b/docs/release-notes/NuGet-2.8.1.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 2.8.1 including known issues, bug fixes, ad
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 2.8.1 Release Notes
diff --git a/docs/release-notes/NuGet-2.8.2.md b/docs/release-notes/NuGet-2.8.2.md
index d6d38ce0f..30fc16840 100644
--- a/docs/release-notes/NuGet-2.8.2.md
+++ b/docs/release-notes/NuGet-2.8.2.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 2.8.2 including known issues, bug fixes, ad
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 2.8.2 Release Notes
diff --git a/docs/release-notes/NuGet-2.8.3.md b/docs/release-notes/NuGet-2.8.3.md
index 3e0b2a079..85476d164 100644
--- a/docs/release-notes/NuGet-2.8.3.md
+++ b/docs/release-notes/NuGet-2.8.3.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 2.8.3 including known issues, bug fixes, ad
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 2.8.3 Release Notes
diff --git a/docs/release-notes/NuGet-2.8.5.md b/docs/release-notes/NuGet-2.8.5.md
index a9ffa31c7..8952af0db 100644
--- a/docs/release-notes/NuGet-2.8.5.md
+++ b/docs/release-notes/NuGet-2.8.5.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 2.8.5 including known issues, bug fixes, ad
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 2.8.5 Release Notes
@@ -22,4 +22,4 @@ In this release, the support for NuGet Package Manager dialog was added for [DNX
One bug was fixed that prevented packages from installing into FSharp projects properly:
-```https://nuget.codeplex.com/workitem/4400```
\ No newline at end of file
+```https://nuget.codeplex.com/workitem/4400```
diff --git a/docs/release-notes/NuGet-2.8.6.md b/docs/release-notes/NuGet-2.8.6.md
index dbe2f5ee2..2d009fd6d 100644
--- a/docs/release-notes/NuGet-2.8.6.md
+++ b/docs/release-notes/NuGet-2.8.6.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 2.8.6 including known issues, bug fixes, ad
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 2.8.6 Release Notes
@@ -20,4 +20,4 @@ In this release, the NuGet Package Manager dialog had support added for:
* Introduced the UAP Target Framework Moniker to support Windows 10 Application Development.
* NuGet protocol version 3 endpoints
* Support for [Nuget.Config](../consume-packages/configuring-nuget-behavior.md) protocolVersion attribute on repository sources. Default value is "2"
-* Falling back to remote repository if a required package version is not available in the local cache
\ No newline at end of file
+* Falling back to remote repository if a required package version is not available in the local cache
diff --git a/docs/release-notes/NuGet-2.8.7.md b/docs/release-notes/NuGet-2.8.7.md
index cb3dde359..7eba6482a 100644
--- a/docs/release-notes/NuGet-2.8.7.md
+++ b/docs/release-notes/NuGet-2.8.7.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 2.8.7 including known issues, bug fixes, ad
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 2.8.7 Release Notes
@@ -12,4 +12,4 @@ ms.topic: conceptual
[NuGet 2.8.6 Release Notes](../release-notes/nuget-2.8.6.md) | [NuGet 2.9-RC Release Notes](../release-notes/nuget-2.9-RC.md)
NuGet 2.8.7 was released July 27, 2015 as a patch update to the 2.8.6 VSIX with fix specific to a bug that effected Powershell policy implementation.
-[https://github.com/NuGet/Home/issues/974](https://github.com/NuGet/Home/issues/974)
\ No newline at end of file
+[https://github.com/NuGet/Home/issues/974](https://github.com/NuGet/Home/issues/974)
diff --git a/docs/release-notes/NuGet-2.8.md b/docs/release-notes/NuGet-2.8.md
index 76ea22e1b..950ad8ac6 100644
--- a/docs/release-notes/NuGet-2.8.md
+++ b/docs/release-notes/NuGet-2.8.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 2.8 including known issues, bug fixes, adde
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 2.8 Release Notes
diff --git a/docs/release-notes/NuGet-2.9-RC.md b/docs/release-notes/NuGet-2.9-RC.md
index 8ba73ad39..a4c2a3ebb 100644
--- a/docs/release-notes/NuGet-2.9-RC.md
+++ b/docs/release-notes/NuGet-2.9-RC.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 2.9 RC including known issues, bug fixes, a
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 2.9-RC Release Notes
diff --git a/docs/release-notes/NuGet-3.0-Beta.md b/docs/release-notes/NuGet-3.0-Beta.md
index 4cd4e693c..0cd6ff14a 100644
--- a/docs/release-notes/NuGet-3.0-Beta.md
+++ b/docs/release-notes/NuGet-3.0-Beta.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.0 Beta including known issues, bug fixes,
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.0 Beta Release Notes
diff --git a/docs/release-notes/NuGet-3.0-Preview.md b/docs/release-notes/NuGet-3.0-Preview.md
index 9f1365d4f..00f990e0f 100644
--- a/docs/release-notes/NuGet-3.0-Preview.md
+++ b/docs/release-notes/NuGet-3.0-Preview.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.0 Preview including known issues, bug fix
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.0 Preview Release Notes
@@ -120,4 +120,4 @@ Between now and 3.0 RTM, we are also working on some fundamental new NuGet featu
## Stay Tuned
-Please keep an eye on [our blog](https://blog.nuget.org) for more progress and announcements for NuGet 3.0!
\ No newline at end of file
+Please keep an eye on [our blog](https://blog.nuget.org) for more progress and announcements for NuGet 3.0!
diff --git a/docs/release-notes/NuGet-3.0-RC.md b/docs/release-notes/NuGet-3.0-RC.md
index eb1dc61eb..867f4269b 100644
--- a/docs/release-notes/NuGet-3.0-RC.md
+++ b/docs/release-notes/NuGet-3.0-RC.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.0 RC including known issues, bug fixes, a
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.0 RC Release Notes
@@ -37,4 +37,4 @@ We've made some changes to our [source code repositories on GitHub](https://gith
## Stay Tuned
-Please keep an eye on [our blog](https://blog.nuget.org) for more progress and announcements for NuGet 3.0!
\ No newline at end of file
+Please keep an eye on [our blog](https://blog.nuget.org) for more progress and announcements for NuGet 3.0!
diff --git a/docs/release-notes/NuGet-3.0-RC2.md b/docs/release-notes/NuGet-3.0-RC2.md
index dad222238..193ae5190 100644
--- a/docs/release-notes/NuGet-3.0-RC2.md
+++ b/docs/release-notes/NuGet-3.0-RC2.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.0 RC2 including known issues, bug fixes,
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.0 RC2 Release Notes
@@ -31,4 +31,4 @@ In total, we closed 158 issues in this release, and you can review the [complete
* [Improved error logging](https://github.com/NuGet/Home/issues/407)
* [Improved powershell error messages when calling Update-Package](https://github.com/NuGet/Home/issues/5)
-Download this ```[update to the NuGet extension](https://nuget.codeplex.com/releases/view/615507)``` from Codeplex and please keep an eye on [our blog](https://blog.nuget.org) for more progress and announcements for NuGet 3.0!
\ No newline at end of file
+Download this ```[update to the NuGet extension](https://nuget.codeplex.com/releases/view/615507)``` from Codeplex and please keep an eye on [our blog](https://blog.nuget.org) for more progress and announcements for NuGet 3.0!
diff --git a/docs/release-notes/NuGet-3.0.0.md b/docs/release-notes/NuGet-3.0.0.md
index 71c46bb49..a404510af 100644
--- a/docs/release-notes/NuGet-3.0.0.md
+++ b/docs/release-notes/NuGet-3.0.0.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.0.0 including known issues, bug fixes, ad
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.0 Release Notes
@@ -49,4 +49,4 @@ There were a number of known issues delivered with this release, and all of thes
* [Multiple Packages can be gathered in parallel](https://github.com/NuGet/Home/issues/713)
* [Removed install-package -force command](https://github.com/NuGet/Home/issues/697)
-Please keep an eye on [our blog](https://blog.nuget.org) for more progress and announcements as we get ready to deliver support for Windows 10 development.
\ No newline at end of file
+Please keep an eye on [our blog](https://blog.nuget.org) for more progress and announcements as we get ready to deliver support for Windows 10 development.
diff --git a/docs/release-notes/NuGet-3.1.1.md b/docs/release-notes/NuGet-3.1.1.md
index 3331410e0..d755e1cd1 100644
--- a/docs/release-notes/NuGet-3.1.1.md
+++ b/docs/release-notes/NuGet-3.1.1.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.1.1 including known issues, bug fixes, ad
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.1.1 Release Notes
@@ -12,4 +12,4 @@ ms.topic: conceptual
[NuGet 3.1 Release Notes](../release-notes/nuget-3.1.md) | [NuGet 3.2-RC Release Notes](../release-notes/nuget-3.2-RC.md)
NuGet 3.1.1 was released July 27, 2015 as a patch update to the 3.1 VSIX with fix specific to a bug that effected Powershell policy implementation.
-[https://github.com/NuGet/Home/issues/974](https://github.com/NuGet/Home/issues/974)
\ No newline at end of file
+[https://github.com/NuGet/Home/issues/974](https://github.com/NuGet/Home/issues/974)
diff --git a/docs/release-notes/NuGet-3.1.md b/docs/release-notes/NuGet-3.1.md
index aa7c025b9..db0f53466 100644
--- a/docs/release-notes/NuGet-3.1.md
+++ b/docs/release-notes/NuGet-3.1.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.1 including known issues, bug fixes, adde
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.1 Release Notes
diff --git a/docs/release-notes/NuGet-3.2-RC.md b/docs/release-notes/NuGet-3.2-RC.md
index 0a398294f..28f9dd082 100644
--- a/docs/release-notes/NuGet-3.2-RC.md
+++ b/docs/release-notes/NuGet-3.2-RC.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.2 RC including known issues, bug fixes, a
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.2 RC Release Notes
@@ -111,4 +111,4 @@ A complete list of issues addressed for the Visual Studio extension can be found
## Known Issues
-We continue to track issues on our GitHub issues list which can be found at: [https://github.com/nuget/home/issues](https://github.com/nuget/home/issues)
\ No newline at end of file
+We continue to track issues on our GitHub issues list which can be found at: [https://github.com/nuget/home/issues](https://github.com/nuget/home/issues)
diff --git a/docs/release-notes/NuGet-3.2.1.md b/docs/release-notes/NuGet-3.2.1.md
index 6e571888f..543ed8742 100644
--- a/docs/release-notes/NuGet-3.2.1.md
+++ b/docs/release-notes/NuGet-3.2.1.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.2.1 including known issues, bug fixes, ad
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.2.1 Release Notes
@@ -30,4 +30,4 @@ A complete list of issues addressed for the command-line and Visual Studio exten
## Known Issues
-We continue to track issues on our GitHub issues list which can be found at: [https://github.com/nuget/home/issues](https://github.com/nuget/home/issues)
\ No newline at end of file
+We continue to track issues on our GitHub issues list which can be found at: [https://github.com/nuget/home/issues](https://github.com/nuget/home/issues)
diff --git a/docs/release-notes/NuGet-3.2.md b/docs/release-notes/NuGet-3.2.md
index 22ce6ecf1..48afecf3f 100644
--- a/docs/release-notes/NuGet-3.2.md
+++ b/docs/release-notes/NuGet-3.2.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.2 including known issues, bug fixes, adde
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.2 Release Notes
@@ -109,4 +109,4 @@ A complete list of issues addressed for the Visual Studio extension can be found
## Known Issues
-We continue to track issues on our GitHub issues list which can be found at: [https://github.com/nuget/home/issues](https://github.com/nuget/home/issues)
\ No newline at end of file
+We continue to track issues on our GitHub issues list which can be found at: [https://github.com/nuget/home/issues](https://github.com/nuget/home/issues)
diff --git a/docs/release-notes/NuGet-3.3.md b/docs/release-notes/NuGet-3.3.md
index 4fd3580cc..f9e990a61 100644
--- a/docs/release-notes/NuGet-3.3.md
+++ b/docs/release-notes/NuGet-3.3.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.3 including known issues, bug fixes, adde
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.3 Release Notes
@@ -54,4 +54,4 @@ The list of issues fixed in the 3.3 command-line release are recorded in the [3.
## Known Issues
-We continue to track issues on our GitHub issues list which can be found at: [https://github.com/nuget/home/issues](https://github.com/nuget/home/issues)
\ No newline at end of file
+We continue to track issues on our GitHub issues list which can be found at: [https://github.com/nuget/home/issues](https://github.com/nuget/home/issues)
diff --git a/docs/release-notes/NuGet-3.4-RC.md b/docs/release-notes/NuGet-3.4-RC.md
index 355733ecc..8e7e10089 100644
--- a/docs/release-notes/NuGet-3.4-RC.md
+++ b/docs/release-notes/NuGet-3.4-RC.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.4 RC including known issues, bug fixes, a
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.4-RC Release Notes
@@ -43,4 +43,4 @@ The following features are available in this RC, with more planned for the 3.4 f
## Known Issues
-We continue to track issues on our GitHub issues list which can be found at: [https://github.com/nuget/home/issues](https://github.com/nuget/home/issues)
\ No newline at end of file
+We continue to track issues on our GitHub issues list which can be found at: [https://github.com/nuget/home/issues](https://github.com/nuget/home/issues)
diff --git a/docs/release-notes/NuGet-3.4.1.md b/docs/release-notes/NuGet-3.4.1.md
index 95b157b65..2d9ddc85f 100644
--- a/docs/release-notes/NuGet-3.4.1.md
+++ b/docs/release-notes/NuGet-3.4.1.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.4.1 including known issues, bug fixes, ad
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.4.1 Release Notes
@@ -19,4 +19,4 @@ NuGet 3.4.1 was released March 30, 2016 at the same time as the Visual Studio 20
* Corrected an issue with Visual Studio locating `lucene.net.dll`
* All sources should not be the default repository source after a NuGet extension install or update. You can opt-in to this feature from the configuration settings.
-We continue to track issues on our GitHub issues list which can be found at: [https://github.com/nuget/home/issues](https://github.com/nuget/home/issues)
\ No newline at end of file
+We continue to track issues on our GitHub issues list which can be found at: [https://github.com/nuget/home/issues](https://github.com/nuget/home/issues)
diff --git a/docs/release-notes/NuGet-3.4.2.md b/docs/release-notes/NuGet-3.4.2.md
index f1914888f..ace3e38a3 100644
--- a/docs/release-notes/NuGet-3.4.2.md
+++ b/docs/release-notes/NuGet-3.4.2.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.4.2 including known issues, bug fixes, ad
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.4.2 Release Notes
@@ -40,4 +40,4 @@ These issues will be fixed early next week before we hit RTM.
* Running nuget delete command on a package using the V2 feed will fail. Use V3 feed instead.
-For the complete list of fixes and improvements in this release, check out the list of issues [here](https://github.com/NuGet/Home/issues?utf8=%E2%9C%93&q=is%3Aissue+milestone%3A3.4.2++is%3Aclosed+).
\ No newline at end of file
+For the complete list of fixes and improvements in this release, check out the list of issues [here](https://github.com/NuGet/Home/issues?utf8=%E2%9C%93&q=is%3Aissue+milestone%3A3.4.2++is%3Aclosed+).
diff --git a/docs/release-notes/NuGet-3.4.3.md b/docs/release-notes/NuGet-3.4.3.md
index b190f78b9..0e1471ab6 100644
--- a/docs/release-notes/NuGet-3.4.3.md
+++ b/docs/release-notes/NuGet-3.4.3.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.4.3 including known issues, bug fixes, ad
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.4.3 Release Notes
@@ -27,4 +27,4 @@ You can download both the VSIX and nuget.exe [here](https://dist.nuget.org/index
* Fixed an issue that caused restore failures in C++/CLI projects with `project.json`.
* Some packages (E.g ModernHttpClient) where not being unzipped correctly when you use nuget in mono. This has now been fixed in this release.
-For the complete list of fixes and improvements in this release, check out the list of issues [here](https://github.com/NuGet/Home/issues?q=is%3Aissue+milestone%3A3.4.3+is%3Aclosed).
\ No newline at end of file
+For the complete list of fixes and improvements in this release, check out the list of issues [here](https://github.com/NuGet/Home/issues?q=is%3Aissue+milestone%3A3.4.3+is%3Aclosed).
diff --git a/docs/release-notes/NuGet-3.4.4.md b/docs/release-notes/NuGet-3.4.4.md
index cd1396dd8..ac831086e 100644
--- a/docs/release-notes/NuGet-3.4.4.md
+++ b/docs/release-notes/NuGet-3.4.4.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.4.4 including known issues, bug fixes, ad
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.4.4 Release Notes
@@ -32,4 +32,4 @@ You can download both the VSIX and nuget.exe [here](https://dist.nuget.org/index
- Updating `NuGet.Core.dll` version to 2.12.0 to fix XML issue [\#594](https://github.com/NuGet/NuGet.Client/pull/594)
- Support ./NuGet.CommandLine.XPlat -v \ \ [\#593](https://github.com/NuGet/NuGet.Client/pull/593)
- Display error restoring without `project.json` or `packages.config` [\#590](https://github.com/NuGet/NuGet.Client/pull/590)
-- Fixing dependency versions when required versions differ [\#559](https://github.com/NuGet/NuGet.Client/pull/559)
\ No newline at end of file
+- Fixing dependency versions when required versions differ [\#559](https://github.com/NuGet/NuGet.Client/pull/559)
diff --git a/docs/release-notes/NuGet-3.4.md b/docs/release-notes/NuGet-3.4.md
index 3d94ced51..a9e55c5df 100644
--- a/docs/release-notes/NuGet-3.4.md
+++ b/docs/release-notes/NuGet-3.4.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.4 including known issues, bug fixes, adde
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.4 Release Notes
@@ -61,4 +61,4 @@ Custom NuGet repositories that redirect requests to an alternative host do not h
* **Workaround:** To work around this issue, configure the package repository URI in settings to point to the redirected server location.
For more information, see [GitHub pull request #387](https://github.com/NuGet/NuGet.Client/pull/387).
-We continue to track issues on our GitHub issues list which can be found at: [https://github.com/nuget/home/issues](https://github.com/nuget/home/issues)
\ No newline at end of file
+We continue to track issues on our GitHub issues list which can be found at: [https://github.com/nuget/home/issues](https://github.com/nuget/home/issues)
diff --git a/docs/release-notes/NuGet-3.5-Beta.md b/docs/release-notes/NuGet-3.5-Beta.md
index 01d3d6877..5d69352d7 100644
--- a/docs/release-notes/NuGet-3.5-Beta.md
+++ b/docs/release-notes/NuGet-3.5-Beta.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.5 Beta including known issues, bug fixes,
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.5 Beta Release Notes
@@ -23,4 +23,4 @@ NuGet 3.5 Beta is a superset of the changes introduced in the 3.4.3 release. For
## Fixes
-* The list of fixes and improvements in this release, is given [here](https://github.com/NuGet/Home/issues?q=is%3Aissue+milestone%3A%223.5+Beta%22+is%3Aclosed).
\ No newline at end of file
+* The list of fixes and improvements in this release, is given [here](https://github.com/NuGet/Home/issues?q=is%3Aissue+milestone%3A%223.5+Beta%22+is%3Aclosed).
diff --git a/docs/release-notes/NuGet-3.5-Beta2.md b/docs/release-notes/NuGet-3.5-Beta2.md
index 23b01454d..7cf76b2cb 100644
--- a/docs/release-notes/NuGet-3.5-Beta2.md
+++ b/docs/release-notes/NuGet-3.5-Beta2.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.5 Beta 2 including known issues, bug fixe
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.5 Beta2 Release Notes
@@ -85,4 +85,4 @@ NuGet 3.5 Beta 2 RTM was released June 27, 2016 for Visual Studio 2013 and nuget
* Print out nuget.exe version header in detailed output - [#1887](https://github.com/NuGet/Home/issues/1887)
-* NuGet should add support for /runtimes/{rid}/nativeassets/{txm}/ - [#2782](https://github.com/NuGet/Home/issues/2782)
\ No newline at end of file
+* NuGet should add support for /runtimes/{rid}/nativeassets/{txm}/ - [#2782](https://github.com/NuGet/Home/issues/2782)
diff --git a/docs/release-notes/NuGet-3.5-RC.md b/docs/release-notes/NuGet-3.5-RC.md
index e7b46f94e..b3bd58ed8 100644
--- a/docs/release-notes/NuGet-3.5-RC.md
+++ b/docs/release-notes/NuGet-3.5-RC.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.5 RC including known issues, bug fixes, a
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.5 RC Release Notes
diff --git a/docs/release-notes/NuGet-3.5-RTM.md b/docs/release-notes/NuGet-3.5-RTM.md
index e9a8ca006..3301d1b2a 100644
--- a/docs/release-notes/NuGet-3.5-RTM.md
+++ b/docs/release-notes/NuGet-3.5-RTM.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 3.5 including known issues, bug fixes, adde
author: JonDouglas
ms.author: jodou
ms.date: 11/11/2016
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 3.5 Release Notes
diff --git a/docs/release-notes/NuGet-4.0-RC.md b/docs/release-notes/NuGet-4.0-RC.md
index 759cbd418..cfeb207ad 100644
--- a/docs/release-notes/NuGet-4.0-RC.md
+++ b/docs/release-notes/NuGet-4.0-RC.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 4.0 RC including known issues, bug fixes, a
author: JonDouglas
ms.author: jodou
ms.date: 02/03/2017
-ms.topic: conceptual
+ms.topic: release-notes
ms.reviewer: ananguar
---
diff --git a/docs/release-notes/NuGet-4.0-RTM.md b/docs/release-notes/NuGet-4.0-RTM.md
index cea4530b9..7fd345079 100644
--- a/docs/release-notes/NuGet-4.0-RTM.md
+++ b/docs/release-notes/NuGet-4.0-RTM.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 4.0 RTM including known issues, bug fixes,
author: anangaur
ms.author: anangaur
ms.date: 03/03/2017
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 4.0 RTM Release Notes
diff --git a/docs/release-notes/NuGet-4.3-RTM.md b/docs/release-notes/NuGet-4.3-RTM.md
index aa9e7702b..9700bea1a 100644
--- a/docs/release-notes/NuGet-4.3-RTM.md
+++ b/docs/release-notes/NuGet-4.3-RTM.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 4.3 RTM including known issues, bug fixes,
author: JonDouglas
ms.author: jodou
ms.date: 08/14/2017
-ms.topic: conceptual
+ms.topic: release-notes
ms.reviewer: anangaur
---
diff --git a/docs/release-notes/NuGet-4.4-RTM.md b/docs/release-notes/NuGet-4.4-RTM.md
index da36710c4..a06c05f27 100644
--- a/docs/release-notes/NuGet-4.4-RTM.md
+++ b/docs/release-notes/NuGet-4.4-RTM.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 4.4 RTM including known issues, bug fixes,
author: JonDouglas
ms.author: jodou
ms.date: 08/14/2017
-ms.topic: conceptual
+ms.topic: release-notes
ms.reviewer: anangaur
---
diff --git a/docs/release-notes/NuGet-4.5-RTM.md b/docs/release-notes/NuGet-4.5-RTM.md
index 507e183f7..7acc5f0b1 100644
--- a/docs/release-notes/NuGet-4.5-RTM.md
+++ b/docs/release-notes/NuGet-4.5-RTM.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 4.5 RTM including known issues, bug fixes,
author: anangaur
ms.author: anangaur
ms.date: 12/4/2017
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 4.5 Release Notes
diff --git a/docs/release-notes/NuGet-4.6-rtm.md b/docs/release-notes/NuGet-4.6-rtm.md
index b1e089539..ce8438c4c 100644
--- a/docs/release-notes/NuGet-4.6-rtm.md
+++ b/docs/release-notes/NuGet-4.6-rtm.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 4.6.0 including known issues, bug fixes, ad
author: anangaur
ms.author: anangaur
ms.date: 3/7/2018
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 4.6 Release Notes
diff --git a/docs/release-notes/NuGet-4.7-RTM.md b/docs/release-notes/NuGet-4.7-RTM.md
index 4a189d084..a43b5ab53 100644
--- a/docs/release-notes/NuGet-4.7-RTM.md
+++ b/docs/release-notes/NuGet-4.7-RTM.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 4.7.0 including known issues, bug fixes, ad
author: JonDouglas
ms.author: jodou
ms.date: 5/14/2018
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 4.7 Release Notes
diff --git a/docs/release-notes/NuGet-4.8-RTM.md b/docs/release-notes/NuGet-4.8-RTM.md
index 56896037f..1fef31ac9 100644
--- a/docs/release-notes/NuGet-4.8-RTM.md
+++ b/docs/release-notes/NuGet-4.8-RTM.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 4.8.1 including known issues, bug fixes, ad
author: JonDouglas
ms.author: jodou
ms.date: 5/14/2018
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 4.8 Release Notes
diff --git a/docs/release-notes/NuGet-4.9-RTM.md b/docs/release-notes/NuGet-4.9-RTM.md
index 04951f3ef..fd729e748 100644
--- a/docs/release-notes/NuGet-4.9-RTM.md
+++ b/docs/release-notes/NuGet-4.9-RTM.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 4.9 including known issues, bug fixes, new
author: JonDouglas
ms.author: jodou
ms.date: 11/20/2018
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 4.9 Release Notes
diff --git a/docs/release-notes/NuGet-5.0-RTM.md b/docs/release-notes/NuGet-5.0-RTM.md
index 6c49464ad..bd75b0597 100644
--- a/docs/release-notes/NuGet-5.0-RTM.md
+++ b/docs/release-notes/NuGet-5.0-RTM.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 5.0 including known issues, bug fixes, new
author: JonDouglas
ms.author: jodou
ms.date: 04/02/2019
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 5.0 Release Notes
@@ -167,4 +167,4 @@ Disable the usage of the fallback folder by setting the `RestoreAdditionalProjec
``
-Use this with caution as packages that would be restored from the fallback folder will now be downloaded from NuGet.org.
\ No newline at end of file
+Use this with caution as packages that would be restored from the fallback folder will now be downloaded from NuGet.org.
diff --git a/docs/release-notes/NuGet-5.1-RTM.md b/docs/release-notes/NuGet-5.1-RTM.md
index b661d0365..1f04bff82 100644
--- a/docs/release-notes/NuGet-5.1-RTM.md
+++ b/docs/release-notes/NuGet-5.1-RTM.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 5.1 including new features, bug fixes, and
author: JonDouglas
ms.author: jodou
ms.date: 05/21/2019
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 5.1 Release Notes
diff --git a/docs/release-notes/NuGet-5.10.md b/docs/release-notes/NuGet-5.10.md
index d8018de5b..e83d28fa6 100644
--- a/docs/release-notes/NuGet-5.10.md
+++ b/docs/release-notes/NuGet-5.10.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 5.10 including new features, bug fixes, and
author: zkat
ms.author: kmarchan
ms.date: 6/11/2021
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 5.10 Release Notes
diff --git a/docs/release-notes/NuGet-5.11.md b/docs/release-notes/NuGet-5.11.md
index 615c7c535..dd8f31249 100644
--- a/docs/release-notes/NuGet-5.11.md
+++ b/docs/release-notes/NuGet-5.11.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 5.11 including new features, bug fixes, and
author: erdembayar
ms.author: eryondon
ms.date: 8/10/2021
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 5.11 Release Notes
diff --git a/docs/release-notes/NuGet-5.2-RTM.md b/docs/release-notes/NuGet-5.2-RTM.md
index f02714365..a57435a9c 100644
--- a/docs/release-notes/NuGet-5.2-RTM.md
+++ b/docs/release-notes/NuGet-5.2-RTM.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 5.2 including new features, bug fixes, and
author: JonDouglas
ms.author: jodou
ms.date: 07/23/2019
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 5.2 Release Notes
diff --git a/docs/release-notes/NuGet-5.3.md b/docs/release-notes/NuGet-5.3.md
index 6bbf19858..6559e3454 100644
--- a/docs/release-notes/NuGet-5.3.md
+++ b/docs/release-notes/NuGet-5.3.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 5.3 including new features, bug fixes, and
author: JonDouglas
ms.author: jodou
ms.date: 09/06/2019
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 5.3 Release Notes
diff --git a/docs/release-notes/NuGet-5.4.md b/docs/release-notes/NuGet-5.4.md
index 7e49fe0e6..9c8251328 100644
--- a/docs/release-notes/NuGet-5.4.md
+++ b/docs/release-notes/NuGet-5.4.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 5.4 including new features, bug fixes, and
author: JonDouglas
ms.author: jodou
ms.date: 09/06/2019
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 5.4 Release Notes
diff --git a/docs/release-notes/NuGet-5.5.md b/docs/release-notes/NuGet-5.5.md
index 67fdbc22f..8c51128bc 100644
--- a/docs/release-notes/NuGet-5.5.md
+++ b/docs/release-notes/NuGet-5.5.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 5.5 including new features, bug fixes, and
author: JonDouglas
ms.author: jodou
ms.date: 03/19/2020
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 5.5 Release Notes
diff --git a/docs/release-notes/NuGet-5.6.md b/docs/release-notes/NuGet-5.6.md
index be2dc0ce2..696fb3493 100644
--- a/docs/release-notes/NuGet-5.6.md
+++ b/docs/release-notes/NuGet-5.6.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 5.6 including new features, bug fixes, and
author: nkolev92
ms.author: nikolev
ms.date: 05/19/2020
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 5.6 Release Notes
diff --git a/docs/release-notes/NuGet-5.7.md b/docs/release-notes/NuGet-5.7.md
index af334fa98..ee702a83b 100644
--- a/docs/release-notes/NuGet-5.7.md
+++ b/docs/release-notes/NuGet-5.7.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 5.7 including new features, bug fixes, and
author: nkolev92
ms.author: nikolev
ms.date: 8/14/2020
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 5.7 Release Notes
diff --git a/docs/release-notes/NuGet-5.8.md b/docs/release-notes/NuGet-5.8.md
index 5ed41c6d0..837149983 100644
--- a/docs/release-notes/NuGet-5.8.md
+++ b/docs/release-notes/NuGet-5.8.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 5.8 including new features, bug fixes, and
author: JonDouglas
ms.author: jodou
ms.date: 11/9/2020
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 5.8 Release Notes
diff --git a/docs/release-notes/NuGet-5.9.md b/docs/release-notes/NuGet-5.9.md
index 57582f302..f10019cf8 100644
--- a/docs/release-notes/NuGet-5.9.md
+++ b/docs/release-notes/NuGet-5.9.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 5.9 including new features, bug fixes, and
author: erdembayar
ms.author: eryondon
ms.date: 3/11/2021
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 5.9 Release Notes
diff --git a/docs/release-notes/NuGet-6.0.md b/docs/release-notes/NuGet-6.0.md
index d45a359f9..5de5d1544 100644
--- a/docs/release-notes/NuGet-6.0.md
+++ b/docs/release-notes/NuGet-6.0.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 6.0 including new features, bug fixes, and
author: zkat
ms.author: kmarchan
ms.date: 10/7/2021
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 6.0 Release Notes
diff --git a/docs/release-notes/NuGet-6.1.md b/docs/release-notes/NuGet-6.1.md
index 242741db9..9ae87e416 100644
--- a/docs/release-notes/NuGet-6.1.md
+++ b/docs/release-notes/NuGet-6.1.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 6.1 including new features, bug fixes, and
author: zivkan
ms.author: zivkan
ms.date: 2/15/2022
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 6.1 Release Notes
diff --git a/docs/release-notes/NuGet-6.10.md b/docs/release-notes/NuGet-6.10.md
index a8eca0db0..cdc222c9d 100644
--- a/docs/release-notes/NuGet-6.10.md
+++ b/docs/release-notes/NuGet-6.10.md
@@ -3,7 +3,7 @@ title: NuGet 6.10 Release Notes
description: Release notes for NuGet 6.10 including new features, bug fixes, and DCRs.
author: kartheekp-ms
ms.date: 5/13/2024
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 6.10 Release Notes
diff --git a/docs/release-notes/NuGet-6.11.md b/docs/release-notes/NuGet-6.11.md
index bb12d50d8..0e74cce77 100644
--- a/docs/release-notes/NuGet-6.11.md
+++ b/docs/release-notes/NuGet-6.11.md
@@ -3,7 +3,7 @@ title: NuGet 6.11 Release Notes
description: Release notes for NuGet 6.11 including new features, bug fixes, and DCRs.
author: martinrrm
ms.date: 8/13/2024
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 6.11 Release Notes
diff --git a/docs/release-notes/NuGet-6.12.md b/docs/release-notes/NuGet-6.12.md
index 8a2373eca..51c3c9702 100644
--- a/docs/release-notes/NuGet-6.12.md
+++ b/docs/release-notes/NuGet-6.12.md
@@ -2,7 +2,7 @@
title: NuGet 6.12 Release Notes
description: Release notes for NuGet 6.12 including new features, bug fixes, and DCRs.
author: zivkan
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 6.12 Release Notes
diff --git a/docs/release-notes/NuGet-6.13.md b/docs/release-notes/NuGet-6.13.md
index 9cbe7007a..1c09115b4 100644
--- a/docs/release-notes/NuGet-6.13.md
+++ b/docs/release-notes/NuGet-6.13.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 6.13 including new features, bug fixes, and
author: Nigusu-Allehu
ms.author: nyenework
ms.date: 2/4/2025
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 6.13 Release Notes
@@ -133,4 +133,4 @@ Thank you to all the contributors who helped make this NuGet release awesome!
* [6025](https://github.com/NuGet/NuGet.Client/pull/6025) Fix typo in EnhancedHttpRetryHelper.cs
* [jimmylewis](https://github.com/NuGet/NuGet.Client/pull/6027)
* [6027](https://github.com/NuGet/NuGet.Client/pull/6027) Refactor calls to EnsureVisualStudioHost() to a base [TestInitialize] method
-
\ No newline at end of file
+
diff --git a/docs/release-notes/NuGet-6.14.md b/docs/release-notes/NuGet-6.14.md
index 0a4d59dd6..d14104ce5 100644
--- a/docs/release-notes/NuGet-6.14.md
+++ b/docs/release-notes/NuGet-6.14.md
@@ -3,7 +3,7 @@ title: NuGet 6.14 Release Notes
description: Release notes for NuGet 6.14 including new features, bug fixes, and DCRs.
author: zivkan
ms.date: 5/6/2025
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 6.14 Release Notes
diff --git a/docs/release-notes/NuGet-6.15.md b/docs/release-notes/NuGet-6.15.md
deleted file mode 100644
index 3db3e6311..000000000
--- a/docs/release-notes/NuGet-6.15.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: NuGet 6.15 Release Notes
-description: Release notes for NuGet 6.15 including new features, bug fixes, and DCRs.
-author: zivkan
-ms.topic: conceptual
----
-# NuGet 6.15 Release Notes
-
-
-
-NuGet distribution vehicles:
-
-| NuGet version | Available in Visual Studio version | Available in .NET SDK(s) |
-|:---|:---|:---|
-| [**6.15**](https://nuget.org/downloads) | [Visual Studio 2022 version 17.15](https://visualstudio.microsoft.com/downloads/) | [9.0.4xx](https://dotnet.microsoft.com/download/dotnet/9.0)1 |
-
-1 Installed with Visual Studio 2022 with any .NET workload
-
-## Not yet released
-
-This version of NuGet is in preview and these release notes will be updated when it is released.
diff --git a/docs/release-notes/NuGet-6.2.md b/docs/release-notes/NuGet-6.2.md
index 1789b57db..dc09706ea 100644
--- a/docs/release-notes/NuGet-6.2.md
+++ b/docs/release-notes/NuGet-6.2.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 6.2 including new features, bug fixes, and
author: martinrrm
ms.author: mruizmares
ms.date: 5/9/2022
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 6.2 Release Notes
diff --git a/docs/release-notes/NuGet-6.3.md b/docs/release-notes/NuGet-6.3.md
index fef6084e8..8e9b5fb30 100644
--- a/docs/release-notes/NuGet-6.3.md
+++ b/docs/release-notes/NuGet-6.3.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 6.3 including new features, bug fixes, and
author: martinrrm
ms.author: mruizmares
ms.date: 8/2/2022
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 6.3 Release Notes
@@ -127,4 +127,4 @@ NuGet distribution vehicles:
* Transitive lock files (with wildcard) result in NU1004 - [#8465](https://github.com/NuGet/Home/issues/8465)
-* Enhance the experimentation infrastructure in NuGet code to support transitive dependencies - [#10758](https://github.com/NuGet/Home/issues/10758)
\ No newline at end of file
+* Enhance the experimentation infrastructure in NuGet code to support transitive dependencies - [#10758](https://github.com/NuGet/Home/issues/10758)
diff --git a/docs/release-notes/NuGet-6.4.md b/docs/release-notes/NuGet-6.4.md
index 0693d8d2e..ffbcdc7d9 100644
--- a/docs/release-notes/NuGet-6.4.md
+++ b/docs/release-notes/NuGet-6.4.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 6.4 including new features, bug fixes, and
author: jebriede
ms.author: jebriede
ms.date: 10/27/2022
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 6.4 Release Notes
diff --git a/docs/release-notes/NuGet-6.5.md b/docs/release-notes/NuGet-6.5.md
index 503095188..8ee257234 100644
--- a/docs/release-notes/NuGet-6.5.md
+++ b/docs/release-notes/NuGet-6.5.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 6.5 including new features, bug fixes, and
author: martinrrm
ms.author: mruizmares
ms.date: 2/21/2023
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 6.5 Release Notes
@@ -124,4 +124,4 @@ Thank you to all the contributors who helped make this NuGet release awesome!
* [davidegiacometti](https://github.com/davidegiacometti)
* [4840](https://github.com/NuGet/NuGet.Client/pull/4840) Refactor PackageDependencyGroup Equals and GetHashCode
* [danjagnow](https://github.com/danjagnow)
- * [4843](https://github.com/NuGet/NuGet.Client/pull/4843) Updated NU1012 error message to display item paths
\ No newline at end of file
+ * [4843](https://github.com/NuGet/NuGet.Client/pull/4843) Updated NU1012 error message to display item paths
diff --git a/docs/release-notes/NuGet-6.6.md b/docs/release-notes/NuGet-6.6.md
index f6e1d1f37..29eb769cf 100644
--- a/docs/release-notes/NuGet-6.6.md
+++ b/docs/release-notes/NuGet-6.6.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 6.6 including new features, bug fixes, and
author: donnie-msft
ms.author: eagoodso
ms.date: 5/1/2023
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 6.6 Release Notes
@@ -84,4 +84,4 @@ Thank you to all the contributors who helped make this NuGet release awesome!
* [5046](https://github.com/NuGet/NuGet.Client/pull/5046) Limit concurrent connections via NUGET_CONCURRENCY_LIMIT
* [marcin-krystianc](https://github.com/marcin-krystianc)
* [4954](https://github.com/NuGet/NuGet.Client/pull/4954) Improved performance of calculation of PrivateAssets for transitively pinned centrally managed dependencies
- * [4953](https://github.com/NuGet/NuGet.Client/pull/4953) Effective PrivateAssets of centrally managed transitive dependencies should be an intersection of parent dependencies
\ No newline at end of file
+ * [4953](https://github.com/NuGet/NuGet.Client/pull/4953) Effective PrivateAssets of centrally managed transitive dependencies should be an intersection of parent dependencies
diff --git a/docs/release-notes/NuGet-6.7.md b/docs/release-notes/NuGet-6.7.md
index 29a3e4cb0..ac9bbe4db 100644
--- a/docs/release-notes/NuGet-6.7.md
+++ b/docs/release-notes/NuGet-6.7.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 6.7 including new features, bug fixes, and
author: jeffkl
ms.author: jeffkl
ms.date: 7/31/2023
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 6.7 Release Notes
diff --git a/docs/release-notes/NuGet-6.8.md b/docs/release-notes/NuGet-6.8.md
index d650e9fa9..bd351673e 100644
--- a/docs/release-notes/NuGet-6.8.md
+++ b/docs/release-notes/NuGet-6.8.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 6.8 including new features, bug fixes, and
author: nkolev92
ms.author: nikolev
ms.date: 10/30/2023
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 6.8 Release Notes
diff --git a/docs/release-notes/NuGet-6.9.md b/docs/release-notes/NuGet-6.9.md
index 84bb7e35e..4870ba3d2 100644
--- a/docs/release-notes/NuGet-6.9.md
+++ b/docs/release-notes/NuGet-6.9.md
@@ -4,7 +4,7 @@ description: Release notes for NuGet 6.9 including new features, bug fixes, and
author: jgonz120
ms.author: jongonza
ms.date: 2/1/2024
-ms.topic: conceptual
+ms.topic: release-notes
---
# NuGet 6.9 Release Notes
@@ -109,4 +109,4 @@ Thank you to all the contributors who helped make this NuGet release awesome!
* [NikolaMilosavljevic](https://github.com/NikolaMilosavljevic)
* Eliminate obsolete API warnings/errors in product source-build - [5496](https://github.com/NuGet/NuGet.Client/pull/5496)
* [amis92](https://github.com/amis92)
- * Add MemberNotNullWhen to SemanticVersion.HasMetadata - [5465](https://github.com/NuGet/NuGet.Client/pull/5465)
\ No newline at end of file
+ * Add MemberNotNullWhen to SemanticVersion.HasMetadata - [5465](https://github.com/NuGet/NuGet.Client/pull/5465)
diff --git a/docs/release-notes/NuGet-7.0.md b/docs/release-notes/NuGet-7.0.md
new file mode 100644
index 000000000..0de1486cc
--- /dev/null
+++ b/docs/release-notes/NuGet-7.0.md
@@ -0,0 +1,312 @@
+---
+title: NuGet 7.0 Release Notes
+description: Release notes for NuGet 7.0 including new features, bug fixes, and DCRs.
+author: donnie-msft
+ms.author: eagoodso
+ms.date: 10/29/2025
+ms.topic: release-notes
+---
+
+# NuGet 7.0 Release Notes
+
+NuGet distribution vehicles:
+
+| NuGet version | Available in Visual Studio version | Available in .NET SDK(s) |
+| :---|:---|:---|
+| [**7.0.0**](https://nuget.org/downloads) | [Visual Studio 2026 version 18.0.0](https://visualstudio.microsoft.com/downloads/) | [10.0.100](https://dotnet.microsoft.com/download/dotnet/10.0)1 |
+
+1 Installed with Visual Studio 2026 with any .NET workload
+
+## Summary: What's New in 7.0.0
+
+* Projects that target .NET 10 warn for vulnerabilities in transitive packages by defaulting to NuGetAuditMode=all [#14161](https://github.com/nuget/home/issues/14161)
+
+* [Package pruning](../consume-packages/Package-References-in-Project-Files.md#prunepackagereference) is enabled for all projects targeting .NET 10 [#14345](https://github.com/NuGet/Home/issues/14345)
+
+* Created the [NuGet Model Context Protocol (MCP) Server](../concepts/NuGet-MCP-Server.md), supported by .NET 10 SDK or later.
+NuGet's MCP is pre-installed in Visual Studio 2026, and installable in VS 17.14 and VS Code.
+The server is published on nuget.org as the [NuGet.Mcp.Server](https://www.nuget.org/packages/NuGet.Mcp.Server#readme-body-tab) package.
+
+* Enable packing legacy PackageReference projects without the need for a package - [#14046](https://github.com/NuGet/Home/issues/14046)
+
+* Deprecate SHA-1 usage in .NET 10 - [#13814](https://github.com/NuGet/Home/issues/13814)
+
+* Details pane reflects Vulnerability Data from Audit Sources - [#14554](https://github.com/NuGet/Home/issues/14554)
+
+* NuGet AuditSources support in the Package Manager UI - [#13954](https://github.com/NuGet/Home/issues/13954)
+
+* Migrate NuGet's settings to the new Visual Studio Options window
+
+ * Migrate "Package sources" settings in Visual Studio Options - [#14233](https://github.com/NuGet/Home/issues/14233)
+
+ * Migrate "Package Source Mapping" settings in Visual Studio Options - [#14234](https://github.com/NuGet/Home/issues/14234)
+
+* dotnet update package --vulnerable (Audit fix) - [#13372](https://github.com/NuGet/Home/issues/13372)
+
+### Breaking changes
+
+* Add package ID validation during restore - [#14407](https://github.com/NuGet/Home/issues/14407)
+
+* Project.json is no longer supported in 7.0. Visual Studio 2026 automatically migrated project.json projects to PackageReference
+
+* Package pruning will lead to a one-time diff in packages lock file - [#14272](https://github.com/NuGet/Home/issues/14272)
+
+* Pruning privatizes a direct references by apply PrivateAssets=all and IncludeAssets=none - [#14196](https://github.com/NuGet/Home/issues/14196)
+
+* Raise an error for SHA-1 fingerprints usage in NuGet.exe sign, mssign commands - [#13962](https://github.com/NuGet/Home/issues/13962)
+
+* Show an error when a non https source is used in a resource in a service index - [#13364](https://github.com/NuGet/Home/issues/13364)
+
+#### SDK Breaking changes
+
+* Project.json deprecation
+ * Remove project.json pack - [#7931](https://github.com/NuGet/Home/issues/7931)
+
+ * Remove project.json support - [#7199](https://github.com/NuGet/Home/issues/7199)
+
+ * Remove PackageSpec.Dependencies - [#14446](https://github.com/NuGet/Home/issues/14446)
+
+ * Clean up Package Spec redudant APIs - [#6231](https://github.com/NuGet/Home/issues/6231)
+
+* Unused NuGet VS Extensibility APIs removed - [#14403](https://github.com/NuGet/Home/issues/14403)
+
+* Remove all unused APIs marked as obsolete in NuGet.Frameworks, NuGet.Protocol, NuGet.Commands & NuGet.PackageManagement - [#14395](https://github.com/NuGet/Home/issues/14395)
+
+* Remove obsolete APIs from NuGet.Common, NuGet.Configuration, NuGet.LibraryModel, NuGet.Packaging and NuGet.ProjectModel - [#14393](https://github.com/NuGet/Home/issues/14393)
+
+* Block and remove code for unused restore implementations such as `Standalone`. - [#14184](https://github.com/NuGet/Home/issues/14184)
+
+* Remove `DotnetToolReference` restore - [#14183](https://github.com/NuGet/Home/issues/14183)
+
+### Issues fixed in this release
+
+#### NuGet SDK fixes
+
+* Don't use reflection based deserialization in NuGet.Protocol - [#14470](https://github.com/NuGet/Home/issues/14470)
+
+* JsonSerializerIsReflectionDisabled on update to Nuget.Protocols 6.13.1 in apps with JsonSerializerIsReflectionEnabledByDefault set to false - [#14111](https://github.com/NuGet/Home/issues/14111)
+
+#### .NET CLI
+
+* Enable CanShowDialog for .NET core Authentication Plugins - [#14010](https://github.com/NuGet/Home/issues/14010)
+
+* "dotnet package update" modifies wrong project file (csproj) - [#14585](https://github.com/NuGet/Home/issues/14585)
+
+* dotnet nuget verify should output package content hash - [#14384](https://github.com/NuGet/Home/issues/14384)
+
+* dotnet package update should support --verbosity - [#14319](https://github.com/NuGet/Home/issues/14319)
+
+* dotnet package update should support CPM and VersionOverride - [#14318](https://github.com/NuGet/Home/issues/14318)
+
+* dotnet package update should support multiple packages - [#14308](https://github.com/NuGet/Home/issues/14308)
+
+* dotnet package update should support package source mapping - [#14307](https://github.com/NuGet/Home/issues/14307)
+
+* dotnet package update to a specific version - [#14306](https://github.com/NuGet/Home/issues/14306)
+
+* dotnet package update initial version - [#14305](https://github.com/NuGet/Home/issues/14305)
+
+* [Bug Bash][Unstable] An error “Attempted to divide by zero.” occurs when executing command “dotnet list [ProjectPath] package --vulnerable” - [#14122](https://github.com/NuGet/Home/issues/14122)
+
+* [Feature]: dotnet list [project | solution] package does not work with solution filters - [#11789](https://github.com/NuGet/Home/issues/11789)
+
+#### Package Manager UI in Visual Studio
+
+* Convert Search Control to Fluent UI - [#14469](https://github.com/NuGet/Home/issues/14469)
+
+* Use Fluent TextBox for Project PM UI Installed Version - [#14466](https://github.com/NuGet/Home/issues/14466)
+
+* [Bug Bash] There is a tiny gap in the version drop-down list of PM UI - [#11990](https://github.com/NuGet/Home/issues/11990)
+
+* [Bug Bash] The dropdown list of PM UI doesn’t distinguish the background color between selected-item and hover-on item - [#10977](https://github.com/NuGet/Home/issues/10977)
+
+* [Bug Bash] Pressing the page-down button on the keyboard when focusing on ‘Version’ drop-down box with Tab key makes the box empty - [#13605](https://github.com/NuGet/Home/issues/13605)
+
+* Dead Code: ActionsAndVersions View - [#14464](https://github.com/NuGet/Home/issues/14464)
+
+#### Visual Studio options
+
+* Decommission Legacy VS Options NuGet Settings - [#14398](https://github.com/NuGet/Home/issues/14398)
+
+* When adding an http source in the options dialog, have the user click on a checkbox to more explicitly agree to AllowInsecureConnections being added - [#14377](https://github.com/NuGet/Home/issues/14377)
+
+* Error needed in Package Sources settings for HTTP source without AllowInsecureConnections - [#14367](https://github.com/NuGet/Home/issues/14367)
+
+* Improve validation of NuGet's settings in Visual Studio Options - [#14359](https://github.com/NuGet/Home/issues/14359)
+
+* Show validation errors on NuGet options pages while typing - [#14358](https://github.com/NuGet/Home/issues/14358)
+
+* [Bug Bash] [Unstable] The first removing of a source mapping from the ‘Package Source Mappings’ list in ‘Package Source Mapping’ dialog doesn’t work - [#13520](https://github.com/NuGet/Home/issues/13520)
+
+* [Localization] The table title ‘Package Source Mapping’ in the ‘Options->NuGet Package Manager->Package Source Mapping’ page was not localized - [#14550](https://github.com/NuGet/Home/issues/14550)
+
+* [Bug Bash] The offline package source cannot be enabled after disabling it from the ‘Machine-wide package sources’ source list previously in the ‘Options->NuGet Package Manager->Package Sources’ window - [#13434](https://github.com/NuGet/Home/issues/13434)
+
+* [Bug Bash] The “source” column of the “Add New Package Source Mapping” dialog doesn’t have the minimum width set which makes it can be dragged out of sight - [#13355](https://github.com/NuGet/Home/issues/13355)
+
+* [Bug Bash] The first reopening of Options dialog should bring back the default package source "Microsoft Visual Studio Offline Packages" in "package sources" list when all the sources were deleted previously - [#13278](https://github.com/NuGet/Home/issues/13278)
+
+* [Bug Bash] Newly added package source mapping shouldn’t be case-sensitive in “Option->NuGet Package Manager->Package Source Mapping” window - [#13210](https://github.com/NuGet/Home/issues/13210)
+
+* [Bug Bash] New added package source mapping will lost after switching back to the "Package Source Mapping" tab from other tab in “Option->NuGet Package Manager” window - [#13150](https://github.com/NuGet/Home/issues/13150)
+
+* [Bug Bash] The “Remove” button should be disable when no package source mapping is selected in the “Package Source Mappings” list - [#13115](https://github.com/NuGet/Home/issues/13115)
+
+* [CSY] Duplicated hotkeys show in “Options->NuGet Package Manager->Package Sources” dialog - [#7822](https://github.com/NuGet/Home/issues/7822)
+
+* VS NuGet PMUI - Machine-wide package sources area should be vertically resize-able as well - [#7560](https://github.com/NuGet/Home/issues/7560)
+
+* [Bug Bash] There will be a duplicated package source when modifying the name of source “Microsoft Visual Studio Offline Packages” - [#13057](https://github.com/NuGet/Home/issues/13057)
+
+* [Bug Bash] The “Options->NuGet Package Manager->Package Sources” page is disabled after checking or unchecking the checkbox “Enabled” of any one of the package sources having duplicated sources - [#14499](https://github.com/NuGet/Home/issues/14499)
+
+* Have to manually select pre-populated text on Add Package Source dialog - [#14450](https://github.com/NuGet/Home/issues/14450)
+
+* VS should not delete Package Source attributes when Name is updated - [#14370](https://github.com/NuGet/Home/issues/14370)
+
+#### Package Pruning
+
+* Warning rollout for PrunePackageReference - [#14126](https://github.com/NuGet/Home/issues/14126)
+
+* Missing audit warnings from "nuget install" when nuget.org is not a package source - [#14096](https://github.com/NuGet/Home/issues/14096)
+
+* It's not possible to push to HTTP sources specified via command line - [#14047](https://github.com/NuGet/Home/issues/14047)
+
+* Package pruning is enabled for all projects targeting .NET 10 including multi-targeted ones - [#14345](https://github.com/NuGet/Home/issues/14345)
+
+* Move pruning enabled frameworks to the NuGet.targets - [#14424](https://github.com/NuGet/Home/issues/14424)
+
+* Change _RestorePackagePruningDefault to RestorePackagePruningDefault - [#14511](https://github.com/NuGet/Home/issues/14511)
+
+#### Restore
+
+* dotnet restore/Visual Studio conflicting with .esproj + Nx project.json - [#13512](https://github.com/NuGet/Home/issues/13512)
+
+* Improve NU1004 when pruning is used with locked mode - [#14075](https://github.com/NuGet/Home/issues/14075)
+
+* Consider not writing NuGetToolVersion to generated MSBuild props files on Restore - [#14355](https://github.com/NuGet/Home/issues/14355)
+
+* NuGet Restore fails if SQL Server Management Studio 21 is installed - [#14349](https://github.com/NuGet/Home/issues/14349)
+
+* Remove NUGET_EXPERIMENTAL_USE_NJ_FOR_FILE_PARSING - [#14257](https://github.com/NuGet/Home/issues/14257)
+
+* Remove RestoreTargetGraph.Name as it's redundant with restoreTargetGraph.TargetGraphName being the widely used version - [#14529](https://github.com/NuGet/Home/issues/14529)
+
+* Remove RestoreArgs.LockFileVersion as it's functionality unused - [#14524](https://github.com/NuGet/Home/issues/14524)
+
+* Remove NUGET_BULK_RESTORE_COORDINATION and NUGET_SOLUTION_CACHE_INITIALIZATION fallbacks - [#14502](https://github.com/NuGet/Home/issues/14502)
+
+#### Dependency resolver
+
+* New dependency resolver does not properly handle floating prerelease versions - [#13833](https://github.com/NuGet/Home/issues/13833)
+
+* Reenable new algorithm resolution with lock files - [#13800](https://github.com/NuGet/Home/issues/13800)
+
+#### Other
+
+* Stop ilmerging pack - [#13079](https://github.com/NuGet/Home/issues/13079)
+
+* Make NuGet.Client's Build.ps1 more friendly to GitHub Copilot in VSCode - [#14453](https://github.com/NuGet/Home/issues/14453)
+
+* Generate identical [Content_Types].xml on repeated builds - [#14357](https://github.com/NuGet/Home/issues/14357)
+
+* pack legacy csproj: include pack targets and tasks in VS build tools - [#14520](https://github.com/NuGet/Home/issues/14520)
+
+* VS crashes when the only project in the solution is a project.json project - [#14553](https://github.com/NuGet/Home/issues/14553)
+
+* review exception handling - [#14440](https://github.com/NuGet/Home/issues/14440)
+
+* Improve perf by avoiding redundant dictionary lookups - [#14432](https://github.com/NuGet/Home/issues/14432)
+
+* LockFileLibrary does not need to be mutable - [#14385](https://github.com/NuGet/Home/issues/14385)
+
+[List of commits in this release](https://github.com/NuGet/NuGet.Client/compare/6.14.1.1...7.0.0.289)
+
+### Community contributions
+
+Thank you to all the contributors who helped make this NuGet release awesome!
+
+* [SimonCropp](https://github.com/NuGet/NuGet.Client/pull/6720)
+ * [6720](https://github.com/NuGet/NuGet.Client/pull/6720) remove redundant default constructors
+ * [6610](https://github.com/NuGet/NuGet.Client/pull/6610) add "does not have a min version" to messages in GetNupkgInfo
+ * [6581](https://github.com/NuGet/NuGet.Client/pull/6581) remove redundant dictionary lookups in MarkTransitiveOrigin
+ * [6596](https://github.com/NuGet/NuGet.Client/pull/6596) enable nullability in PackageItemViewModelTests
+ * [6634](https://github.com/NuGet/NuGet.Client/pull/6634) remove IFrameworkTargetable
+ * [6616](https://github.com/NuGet/NuGet.Client/pull/6616) avoid redundant version parsing in PluginFindPackageByIdResource
+ * [6595](https://github.com/NuGet/NuGet.Client/pull/6595) enable nullability in ReadmePreviewViewModelTests
+ * [6587](https://github.com/NuGet/NuGet.Client/pull/6587) remove redundant dictionary lookup in ProcessUnrankedEntries
+ * [6598](https://github.com/NuGet/NuGet.Client/pull/6598) enable nullability in EmbeddedResourcesCapabilityTests
+ * [6577](https://github.com/NuGet/NuGet.Client/pull/6577) use fields instead of private properties
+ * [6622](https://github.com/NuGet/NuGet.Client/pull/6622) remove un-used list in GetPackagesToBeReinstalled
+ * [6589](https://github.com/NuGet/NuGet.Client/pull/6589) redundant null check for projectManagerService.GetMetadataAsync return value
+ * [6605](https://github.com/NuGet/NuGet.Client/pull/6605) enable nullable in VSRestoreSettingsUtilityTests
+ * [6575](https://github.com/NuGet/NuGet.Client/pull/6575) remove redundant dictionary lookup in CredentialServiceAdapter.GetCredentials
+ * [6601](https://github.com/NuGet/NuGet.Client/pull/6601) enable nullabe in NuGetInstallCommandTest
+ * [6593](https://github.com/NuGet/NuGet.Client/pull/6593) enable nullable in IProjectContextInfoExtensionsTests
+ * [6614](https://github.com/NuGet/NuGet.Client/pull/6614) remove redundant lists in DependencyGraphFileRequestProvider
+ * [6625](https://github.com/NuGet/NuGet.Client/pull/6625) remove un-used variables in PackageExtractor
+ * [6609](https://github.com/NuGet/NuGet.Client/pull/6609) fix nullability in UnresolvedMessages
+ * [6608](https://github.com/NuGet/NuGet.Client/pull/6608) remove un-used contextForGather
+ * [6628](https://github.com/NuGet/NuGet.Client/pull/6628) remove redundant enumeration in CredentialsItem
+ * [6617](https://github.com/NuGet/NuGet.Client/pull/6617) remove toolItems list instance in MSBuildRestoreUtility
+ * [6599](https://github.com/NuGet/NuGet.Client/pull/6599) fix parameter nullability in Constructor_SetReportAbuseUrl_Initialize…
+ * [6604](https://github.com/NuGet/NuGet.Client/pull/6604) enable nullable in LegacyPackageReferenceProjectTests
+ * [6631](https://github.com/NuGet/NuGet.Client/pull/6631) remove DependencyGraphSpecRequestProvider.CollectReferences
+ * [6635](https://github.com/NuGet/NuGet.Client/pull/6635) remove EnvDteProjectExtensions.PathComparer
+ * [6623](https://github.com/NuGet/NuGet.Client/pull/6623) remove redundant GetManifestResourceNames in ManifestSchemaUtility
+ * [6619](https://github.com/NuGet/NuGet.Client/pull/6619) remove unused packageID variable
+ * [6620](https://github.com/NuGet/NuGet.Client/pull/6620) remove un-used variables in PackageManagerControl
+ * [6640](https://github.com/NuGet/NuGet.Client/pull/6640) remove redundant exception handling
+ * [6637](https://github.com/NuGet/NuGet.Client/pull/6637) remove PackageManagerControl.AddMigratorBar
+ * [6629](https://github.com/NuGet/NuGet.Client/pull/6629) remove un-used HashSet instance in ResolverMetadataClient
+ * [6602](https://github.com/NuGet/NuGet.Client/pull/6602) enable nullable in MSBuildUtilityTest
+ * [6641](https://github.com/NuGet/NuGet.Client/pull/6641) remove redundant null condition in UpdateCommand.ExecuteCommandAsync
+ * [6683](https://github.com/NuGet/NuGet.Client/pull/6683) remove redundant string alloc in GetTempFilePath
+ * [6626](https://github.com/NuGet/NuGet.Client/pull/6626) remove un-used variables in SignedPackageArchiveIOUtility
+ * [6574](https://github.com/NuGet/NuGet.Client/pull/6574) remove redundant dictionary lookup in CreatePackageSourceMappingDictionary
+ * [6594](https://github.com/NuGet/NuGet.Client/pull/6594) enable nullability in InfiniteScrollListTests
+ * [6682](https://github.com/NuGet/NuGet.Client/pull/6682) Use async delay in SafeReadAsync
+ * [6600](https://github.com/NuGet/NuGet.Client/pull/6600) enable nullable in NuGetUpdateCommandTests
+ * [6606](https://github.com/NuGet/NuGet.Client/pull/6606) enable nullable in VSNominationUtilitiesTests
+ * [6613](https://github.com/NuGet/NuGet.Client/pull/6613) remove redundant type variable in GetExternalProject
+ * [6611](https://github.com/NuGet/NuGet.Client/pull/6611) remove un-used solutionService instances
+ * [6643](https://github.com/NuGet/NuGet.Client/pull/6643) remove MsBuildUtility.GetMsBuildPathInPathVar
+ * [6632](https://github.com/NuGet/NuGet.Client/pull/6632) remove PackageSpecFactory.GetTargetFrameworkStrings
+ * [6573](https://github.com/NuGet/NuGet.Client/pull/6573) avoid some allocation in ProjectFactory.ProcessDependencies
+ * [6588](https://github.com/NuGet/NuGet.Client/pull/6588) remove dictionary lookups from GetPreviewResultsAsync
+ * [6597](https://github.com/NuGet/NuGet.Client/pull/6597) fix nullability in PackageModelCreationTestHelper
+ * [6612](https://github.com/NuGet/NuGet.Client/pull/6612) remove un-used list instances in NuGetPackageManager
+ * [6591](https://github.com/NuGet/NuGet.Client/pull/6591) enable nullable in PackageSourceValidatorTests
+ * [6603](https://github.com/NuGet/NuGet.Client/pull/6603) fix nullability in IVsProjectBuildProperties
+ * [6636](https://github.com/NuGet/NuGet.Client/pull/6636) remove _project* fields from PackageReferenceProject
+ * [6630](https://github.com/NuGet/NuGet.Client/pull/6630) remove un-used identity instance in LocalV3FindPackageByIdResource
+ * [6618](https://github.com/NuGet/NuGet.Client/pull/6618) remove LoggerAdapter instance in NuGetPackageManager
+ * [6621](https://github.com/NuGet/NuGet.Client/pull/6621) remove un-used projectsByUniqueName in SolutionUpToDateChecker
+ * [6624](https://github.com/NuGet/NuGet.Client/pull/6624) remove un-used variables in PackageBuilder
+ * [6633](https://github.com/NuGet/NuGet.Client/pull/6633) remove JsonPackageSpecReader DelimitedStringSeparators and VersionSeparators
+ * [6642](https://github.com/NuGet/NuGet.Client/pull/6642) use cast instead of as and null check in CommandLineParser.AssignValue
+ * [6615](https://github.com/NuGet/NuGet.Client/pull/6615) remove redundant list in GetPluginAsync
+ * [6627](https://github.com/NuGet/NuGet.Client/pull/6627) remove un-used GetDirectoryName in MisplacedAssemblyOutsideLibRule
+ * [6578](https://github.com/NuGet/NuGet.Client/pull/6578) remove redundant dictionary lookup in PrunePackageTree.PruneDowngrades
+ * [6576](https://github.com/NuGet/NuGet.Client/pull/6576) remove redundant dictionary lookup in RecommenderPackageFeed
+* [baronfel](https://github.com/NuGet/NuGet.Client/pull/6554)
+ * [6554](https://github.com/NuGet/NuGet.Client/pull/6554) Fix NuGet->SDK Codeflow
+ * [6514](https://github.com/NuGet/NuGet.Client/pull/6514) Pin and stabilize the `NuGetToolVersion` property in the generated NuGet props files during restore.
+* [omajid](https://github.com/NuGet/NuGet.Client/pull/6500)
+ * [6500](https://github.com/NuGet/NuGet.Client/pull/6500) Ensure stable order of entries in Content_Types.xml
+ * [6507](https://github.com/NuGet/NuGet.Client/pull/6507) Support building on Linux when full signing is not available
+* [AlexDelepine](https://github.com/NuGet/NuGet.Client/pull/6793)
+ * [6793](https://github.com/NuGet/NuGet.Client/pull/6793) Update Ngen Priorities for VS
+* [hickford](https://github.com/NuGet/NuGet.Client/pull/6475)
+ * [6475](https://github.com/NuGet/NuGet.Client/pull/6475) Populate audit sources consistently
+* [nohwnd](https://github.com/NuGet/NuGet.Client/pull/6735)
+ * [6735](https://github.com/NuGet/NuGet.Client/pull/6735) Disable loading profile in utility powershell.exe calls
+* [mmitche](https://github.com/NuGet/NuGet.Client/pull/6539)
+ * [6539](https://github.com/NuGet/NuGet.Client/pull/6539) Move NuGet to xliff-tasks
+* [dkurepa](https://github.com/NuGet/NuGet.Client/pull/6644)
+ * [6644](https://github.com/NuGet/NuGet.Client/pull/6644) Add Version.Details.props
+* [bdukes](https://github.com/NuGet/NuGet.Client/pull/6530)
+ * [6530](https://github.com/NuGet/NuGet.Client/pull/6530) Fix `nuget.exe` restore finding MSBuild from SSMS instead of Visual Studio
+* [ToddGrun](https://github.com/NuGet/NuGet.Client/pull/6519)
+ * [6519](https://github.com/NuGet/NuGet.Client/pull/6519) Make LockFileLibrary immutable for performance and sanity reasons
+
\ No newline at end of file
diff --git a/docs/resources/NuGet-FAQ.yml b/docs/resources/NuGet-FAQ.yml
index 264903b2c..07bb046b1 100644
--- a/docs/resources/NuGet-FAQ.yml
+++ b/docs/resources/NuGet-FAQ.yml
@@ -5,7 +5,7 @@ metadata:
author: shishirx34
ms.author: shishirh
ms.date: 01/31/2022
- ms.topic: conceptual
+ ms.topic: faq
title: NuGet frequently-asked questions
summary: |
diff --git a/docs/resources/check-project-format.md b/docs/resources/check-project-format.md
index b59c1e3aa..b7ed7d665 100644
--- a/docs/resources/check-project-format.md
+++ b/docs/resources/check-project-format.md
@@ -4,7 +4,7 @@ description: Describes how to identity your project format
author: mikejo5000
ms.author: mikejo
ms.date: 07/09/2019
-ms.topic: conceptual
+ms.topic: article
---
# Identify the project format
diff --git a/docs/visual-studio-extensibility/Visual-Studio-Templates.md b/docs/visual-studio-extensibility/Visual-Studio-Templates.md
index 6e12d412e..aa1cf0484 100644
--- a/docs/visual-studio-extensibility/Visual-Studio-Templates.md
+++ b/docs/visual-studio-extensibility/Visual-Studio-Templates.md
@@ -4,7 +4,7 @@ description: Instructions for including NuGet packages as part of Visual Studio
author: JonDouglas
ms.author: jodou
ms.date: 01/03/2018
-ms.topic: conceptual
+ms.topic: article
---
# Packages in Visual Studio templates
diff --git a/docs/visual-studio-extensibility/nuget-api-in-visual-studio.md b/docs/visual-studio-extensibility/nuget-api-in-visual-studio.md
index 3ba582ab3..e49186605 100644
--- a/docs/visual-studio-extensibility/nuget-api-in-visual-studio.md
+++ b/docs/visual-studio-extensibility/nuget-api-in-visual-studio.md
@@ -49,13 +49,11 @@ From NuGet 6.0, all of these APIs are available in the package [NuGet.VisualStud
- [`IVsFrameworkCompatibility3`](#ivsframeworkcompatibility3-interface) Contains methods to discover frameworks and compatibility between frameworks. (5.8+)
- [`IVsFrameworkParser`](#ivsframeworkparser-interface) An interface for dealing with the conversion between strings and [FrameworkName](/dotnet/api/system.runtime.versioning.frameworkname) (4.0+)
- [`IVsFrameworkParser2`](#ivsframeworkparser2-interface) An interface to parse .NET Framework strings. See [NuGet-IVsFrameworkParser](https://aka.ms/NuGet-IVsFrameworkParser). (5.8+)
-- [`IVsGlobalPackagesInitScriptExecutor`](#ivsglobalpackagesinitscriptexecutor-interface) Execute powershell scripts from package(s) in a solution (4.0+)
- [`IVsPackageInstaller`](#ivspackageinstaller-interface): Methods to install NuGet packages into projects. (3.3+)
- [`IVsPackageInstaller2](#ivspackageinstaller2-interface) Contains method to install latest version of a single package into a project within the current solution.
- [`IVsPackageInstallerEvents`](#ivspackageinstallerevents-interface): Events for package install/uninstall. (3.3+)
- [`IVsPackageInstallerProjectEvents`](#ivspackageinstallerprojectevents-interface): Batch events for package install/uninstall. (3.3+)
- [`IVsPackageInstallerServices`](#ivspackageinstallerservices-interface): Methods to retrieve installed packages in the current solution and to check whether a given package is installed in a project. (3.3+)
-- [`IVsPackageManagerProvider`](#ivspackagemanagerprovider-interface): Methods to provide alternative Package Manager suggestions for a NuGet package. (3.3 - 5.11)
- [`IVsPackageRestorer`](#ivspackagerestorer-interface): Methods to restore packages installed in a project. (3.3+)
- [`IVsPackageSourceProvider`](#ivspackagesourceprovider-interface): Methods to retrieve a list of NuGet package sources. (3.3+)
- [`IVsPackageUninstaller`](#ivspackageuninstaller-interface): Methods to uninstall NuGet packages from projects. (3.3+)
@@ -75,6 +73,7 @@ These interfaces are designed for project systems to interact with NuGet, allowi
- [`IVsSolutionRestoreService2`](#ivssolutionrestoreservice2-interface) (4.3+)
- [`IVsSolutionRestoreService3`](#ivssolutionrestoreservice3-interface) (5.1+)
- [`IVsSolutionRestoreService4`](#ivssolutionrestoreservice4-interface) (6.0+)
+- [`IVsSolutionRestoreService5`](#ivssolutionrestoreservice5-interface) (6.11+)
- [`IVsSolutionRestoreStatusProvider`](#ivssolutionrestorestatusprovider-interface) (6.0+)
## Using NuGet Services
@@ -414,31 +413,6 @@ public interface IRegistryKey
}
```
-## IVsGlobalPackagesInitScriptExecutor interface
-
-```cs
- ///
- /// Execute powershell scripts from package(s) in a solution
- ///
- /// Intended for internal use only.
- public interface IVsGlobalPackagesInitScriptExecutor
- {
- ///
- /// Executes the init script of the given package if available.
- /// 1) If the init.ps1 script has already been executed by the powershell host, it will not be executed again.
- /// True is returned.
- /// 2) If the package is found in the global packages folder it will be used.
- /// If not, it will return false and do nothing.
- /// 3) Also, note if other scripts are executing while this call was made, it will wait for them to complete.
- ///
- /// Id of the package whose init.ps1 will be executed.
- /// Version of the package whose init.ps1 will be executed.
- /// Returns true if the script was executed or has been executed already.
- /// This method throws if the init.ps1 being executed throws.
- Task ExecuteInitScriptAsync(string packageId, string packageVersion);
- }
-```
-
## IVsPackageInstaller interface
```cs
@@ -810,53 +784,6 @@ public interface IRegistryKey
}
```
-## IVsPackageManagerProvider interface
-
-This interface was primarily used by the ASP.NET team, to suggest that Javascript and CSS packages like `jQuery` and `bootstrap` are installed with Bower instead of NuGet. Since they removed that functionality From Visual Studio, NuGet has obsolete this interface, and it will no longer be used by the Package Manager UI in Visual Studio 2022 (version 17.0) and later.
-
-```cs
- ///
- /// Interface allowing integration of alternate package manager suggestion for a NuGet package.
- /// For example jQuery may appear on Bower and npm,
- /// it might be more appropriate to install a package from them for certain projects.
- ///
- [Obsolete]
- public interface IVsPackageManagerProvider
- {
- ///
- /// Localized display package manager name.
- ///
- string PackageManagerName { get; }
-
- ///
- /// Package manager unique id.
- ///
- string PackageManagerId { get; }
-
- ///
- /// The tool tip description for the package
- ///
- string Description { get; }
-
- ///
- /// Check if a recommendation should be surfaced for an alternate package manager.
- /// This code should not rely on slow network calls, and should return rapidly.
- ///
- /// Current package id
- /// Unique project name for finding the project through VS dte
- /// Cancellation Token
- /// return true if need to direct to integrated package manager for this package
- Task CheckForPackageAsync(string packageId, string projectName, CancellationToken token);
-
- ///
- /// This Action should take the user to the other package manager.
- ///
- /// Current package id
- /// Unique project name for finding the project through VS dte
- void GoToPackage(string packageId, string projectName);
- }
-```
-
## IVsPackageRestorer interface
```cs
@@ -1249,6 +1176,7 @@ This interface was primarily used by the ASP.NET team, to suggest that Javascrip
/// Thrown if is not the path of a project file.
/// Thrown if is null.
/// Thrown if is cancelled.
+ [Obsolete("Use IVsSolutionRestoreService5 instead")]
Task NominateProjectAsync(string projectUniqueName, IVsProjectRestoreInfo projectRestoreInfo, CancellationToken token);
}
```
@@ -1315,6 +1243,7 @@ This interface was primarily used by the ASP.NET team, to suggest that Javascrip
/// Thrown if is not the path of a project file.
/// Thrown if is null.
/// Thrown if is cancelled.
+ [Obsolete("Use IVsSolutionRestoreService5 instead")]
Task NominateProjectAsync(string projectUniqueName, IVsProjectRestoreInfo2 projectRestoreInfo, CancellationToken token);
}
```
@@ -1342,6 +1271,36 @@ This interface was primarily used by the ASP.NET team, to suggest that Javascrip
}
```
+## IVsSolutionRestoreService5 interface
+
+```cs
+ ///
+ /// Represents a package restore service API for integration with a project system.
+ /// Implemented by NuGet.
+ ///
+ public interface IVsSolutionRestoreService5 : IVsSolutionRestoreService4
+ {
+ ///
+ /// An entry point used by CPS to indicate given project needs to be restored.
+ ///
+ ///
+ /// The full path to the project file. In the VS SDK's IVsSolution, this is also known as the unique name.
+ ///
+ /// Metadata needed for restoring the project.
+ /// Cancellation token.
+ ///
+ /// Returns a restore task corresponding to the nominated project request.
+ /// NuGet will batch restore requests so it's possible the same restore task will be returned for multiple projects.
+ /// When the requested restore operation for the given project completes the task will indicate operation success or failure.
+ ///
+ /// Thrown if is not the path of a project file,
+ /// or if has some basic validation errors.
+ /// Thrown if is .
+ /// Thrown if is cancelled.
+ Task NominateProjectAsync(string projectUniqueName, IVsProjectRestoreInfo3 projectRestoreInfo, CancellationToken token);
+ }
+```
+
## IVsProjectRestoreInfoSource interface
```cs
diff --git a/global.json b/global.json
new file mode 100644
index 000000000..d894f924e
--- /dev/null
+++ b/global.json
@@ -0,0 +1,5 @@
+{
+ "msbuild-sdks": {
+ "Microsoft.Build.NoTargets" : "3.7.134"
+ }
+}
\ No newline at end of file