From 46c343e1c312847a40d1d1d0b7a33f4e88b32786 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Thu, 27 Apr 2017 12:16:06 -0700 Subject: [PATCH 0001/2943] Update Source-and-Config-File-Transformations.md May need better wording --- docs/Create-Packages/Source-and-Config-File-Transformations.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/Create-Packages/Source-and-Config-File-Transformations.md b/docs/Create-Packages/Source-and-Config-File-Transformations.md index 7ffa502e0..f906cc1ae 100644 --- a/docs/Create-Packages/Source-and-Config-File-Transformations.md +++ b/docs/Create-Packages/Source-and-Config-File-Transformations.md @@ -22,11 +22,14 @@ keywords: NuGet package installation, NuGet package transformations, modifying c ms.reviewer: - karann - unnir +- anangaur #ms.suite: #ms.tgt_pltfrm: #ms.custom: --- +> Note: This functionality is not available in the new [PackageReference](http://blog.nuget.org/20170316/NuGet-now-fully-integrated-into-MSBuild.html) world. + # Transforming source code and configuration files NuGet supports the ability to make transformations to source code and configuration files at package install and uninstall times. From d5f96e3e63872f60d87e503e406cee574eee5a18 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 28 Apr 2017 08:58:19 -0700 Subject: [PATCH 0002/2943] Update Source-and-Config-File-Transformations.md A couple edits. First, nothing should come before the top-level header (#); second, I'm pointing to the docs page on PackageReference rather than a blog (which we typically don't do); third, it's better to clarify when exactly this applies, so I've spelled out the cases; fourth, I'm using a >[!Note] callout rather than just a >. --- .../Source-and-Config-File-Transformations.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/Create-Packages/Source-and-Config-File-Transformations.md b/docs/Create-Packages/Source-and-Config-File-Transformations.md index f906cc1ae..5c5827f21 100644 --- a/docs/Create-Packages/Source-and-Config-File-Transformations.md +++ b/docs/Create-Packages/Source-and-Config-File-Transformations.md @@ -28,11 +28,13 @@ ms.reviewer: #ms.custom: --- -> Note: This functionality is not available in the new [PackageReference](http://blog.nuget.org/20170316/NuGet-now-fully-integrated-into-MSBuild.html) world. # Transforming source code and configuration files -NuGet supports the ability to make transformations to source code and configuration files at package install and uninstall times. +For projects using `packages.config` or `project.json`, NuGet supports the ability to make transformations to source code and configuration files at package install and uninstall times. + +> [!Note] +> Source and configuration file transformations are not applied when a package is installed in a project using [Package References in project files](../Consume-Packages/Package-References-in-Project-Files.md). A **source code transformation** applies one-way token replacement to files in the package's `content` folder when the package is installed, where tokens refer to Visual Studio [project properties](https://msdn.microsoft.com/library/vslangproj.projectproperties_properties.aspx). This allows you to insert a file into the project's namespace, or to customize code that would typically go into `global.asax` in an ASP.NET project. From 10547d9d7d1d6fb56684e1ddd9c41a65070b08f0 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Fri, 5 May 2017 13:03:08 -0700 Subject: [PATCH 0003/2943] updating governance to talk about Package succession under special circumstances --- docs/Policies/Governance.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/Policies/Governance.md b/docs/Policies/Governance.md index 0b2dffcd1..cc77b302c 100644 --- a/docs/Policies/Governance.md +++ b/docs/Policies/Governance.md @@ -88,6 +88,22 @@ Users should be encouraged to participate in the life of NuGet and the community Users who continue to engage with the project and its community will often find themselves becoming more and more involved. Such users may then go on to become contributors, as described above. +## Package succession under special circumstances +In the unfortunate situation where a NuGet account holder is incapacitated or deceased, we’ll work with the community to add appropriate owner/s to the package where the said account has sole ownership and the package is published under an [OSI approved license](https://opensource.org/licenses/alphabetical). To request ownership you must send us the following documents: + +1. A photocopy of your government-issued photo ID. +2. One of the following documents proving the previous account holder’s status: + - An official, government-issued death certificate if the previous account holder is deceased, or, + - A certified document such as a certificate signed by a medical professional in charge of the care of an incapacitated account holder. +3. One of the following documents proving your right to ownership: + - Marriage certificate showing that you are the surviving spouse of the account holder, + - Signed power of attorney, + - Copy of a will or trust document naming you as executor or beneficiary, + - Birth certificate for the account holder, if you are their parent, or, + - Guardianship paperwork if you are a legal guardian of the account holder. + +If you find yourself in need of invoking this policy, please send us an email at [support@nuget.org](mailto:support@nuget.org) with the ID and version of the package. + ## Transparency Building community trust in the governance of an open-source project is vital to its success. To that end, decision making must be done in a transparent, open fashion. Discussion about the project’s direction must be done publicly. The community should never be caught off-guard by a decision by the Benevolent Dictator. Additionally, discussion about project decisions must be archived so that community members can understand the entire history of a decision and its context. From 355270243927461001d2331873e0a88ab5204631 Mon Sep 17 00:00:00 2001 From: Maciej Klemarczyk Date: Fri, 12 May 2017 09:20:57 +0200 Subject: [PATCH 0004/2943] Insert link to semver 2.0 --- docs/Create-Packages/Prerelease-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Prerelease-Packages.md b/docs/Create-Packages/Prerelease-Packages.md index d6dc59d87..1252f7752 100644 --- a/docs/Create-Packages/Prerelease-Packages.md +++ b/docs/Create-Packages/Prerelease-Packages.md @@ -94,7 +94,7 @@ With this in mind, it's generally good to follow recognized naming conventions s - `-rc`: Release candidate, typically a release that's potentially final (stable) unless significant bugs emerge. > [!Note] -> NuGet does not support SemVer-compatible build numbers with dot notation, as in `1.0.1-build.23`. You can use a form like `1.0.1-build23` but this is always considered a pre-release version. +> NuGet does not support [SemVer-compatible (v2.0.0)](http://semver.org/spec/v2.0.0.html) prerelease numbers with dot notation, as in `1.0.1-build.23`. You can use a form like `1.0.1-build23` but this is always considered a pre-release version. Whatever suffixes you use, however, NuGet will give them precedence in reverse alphabetical order: From 0dd232e8c4a336da15a4051dfc74b8a375596180 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 15 May 2017 17:09:25 -0700 Subject: [PATCH 0005/2943] Fix italics and refine a link --- docs/Consume-Packages/Dependency-Resolution.md | 2 +- docs/Consume-Packages/Package-Restore.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Consume-Packages/Dependency-Resolution.md b/docs/Consume-Packages/Dependency-Resolution.md index 4e0c70e86..3cf9bdbb5 100644 --- a/docs/Consume-Packages/Dependency-Resolution.md +++ b/docs/Consume-Packages/Dependency-Resolution.md @@ -102,7 +102,7 @@ When an application specifies an exact version number, such as *1.2*, that is no #### Floating versions -A floating dependency version is specified with the * wildcard, as with *6.0.\** in the `project.json` file. This says "use the latest 6.0.x version"; a floating version of *4.\** means "use the latest 4.x version." Using a floating version allows a dependency package to continue evolving without requiring a change to the consuming application (or package). +A floating dependency version is specified with the * wildcard, as with *6.0.** in the `project.json` file. This says "use the latest 6.0.x version"; a floating version of *4.** means "use the latest 4.x version." Using a floating version allows a dependency package to continue evolving without requiring a change to the consuming application (or package). When a floating version constraint is specified then NuGet will resolve the highest version of a package that matches the version pattern, for example *6.0.** will get the highest version of a package that starts with *6.0*: diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/Consume-Packages/Package-Restore.md index 0b7909b34..8e6da0ef6 100644 --- a/docs/Consume-Packages/Package-Restore.md +++ b/docs/Consume-Packages/Package-Restore.md @@ -67,7 +67,7 @@ From the command line: | --- | --- | | `nuget restore` | All versions of NuGet and all reference types. See [Command-line restore](#command-line-restore) below. | | `dotnet restore` | Same as `nuget restore` for .NET Core projects. See [dotnet restore](https://docs.microsoft.com/dotnet/articles/core/tools/dotnet-restore). | -| `msbuild /t:restore` | Nuget 4.x+ and MSBuild 15.1+ with [package references in project files](../Consume-Packages/Package-References-in-Project-Files.md) only. `nuget restore` and `dotnet restore` both use this command for applicable projects. See [NuGet pack and restore as MSBuild targets](../schema/msbuild-targets.md).| +| `msbuild /t:restore` | Nuget 4.x+ and MSBuild 15.1+ with [package references in project files](../Consume-Packages/Package-References-in-Project-Files.md) only. `nuget restore` and `dotnet restore` both use this command for applicable projects. See [NuGet pack and restore as MSBuild targets- restore target](../schema/msbuild-targets.md#restore-target).| Inside Visual Studio, there are five ways that package restore can happen: From 2c6f69396a4e80cbf6a5b7e13a8596fe7a2f95e0 Mon Sep 17 00:00:00 2001 From: Alexander Batishchev Date: Wed, 17 May 2017 11:14:17 -0700 Subject: [PATCH 0006/2943] Update Symbol-Packages.md Fixing markup in last paragraph --- docs/Create-Packages/Symbol-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index ba8a0ce1b..4552ca0af 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -134,4 +134,4 @@ nuget push MyPackage.symbols.nupkg -source https://nuget.smbsrc.net/ nuget push MyPackage.nupkg ``` - In this case, NuGet will publish `MyPackage.symbols.nupkg`, if present, to symbolsource.org (https://nuget.smbsrc.net/), after it publishes the primary package to nuget.org. \ No newline at end of file +In this case, NuGet will publish `MyPackage.symbols.nupkg`, if present, to symbolsource.org (https://nuget.smbsrc.net/), after it publishes the primary package to nuget.org. From fb11b3f48539b7e704ccb6bd0087352004c38267 Mon Sep 17 00:00:00 2001 From: Morten Nielsen Date: Fri, 19 May 2017 14:50:52 -0700 Subject: [PATCH 0007/2943] Added missing registry key Added missing documentation regarding the using the HKCU location rather than HKLM which will enables per-user installs to also use this registry location without requiring admin rights to run the installer. --- docs/Visual-Studio-Extensibility/Visual-Studio-Templates.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Visual-Studio-Extensibility/Visual-Studio-Templates.md b/docs/Visual-Studio-Extensibility/Visual-Studio-Templates.md index 4da8a6ddb..98bdbb24a 100644 --- a/docs/Visual-Studio-Extensibility/Visual-Studio-Templates.md +++ b/docs/Visual-Studio-Extensibility/Visual-Studio-Templates.md @@ -139,7 +139,7 @@ SDKs that are installed using an MSI can install NuGet packages directly on the 1. Write a registry key to identify the package location: - - Key location: `HKEY_LOCAL_MACHINE\SOFTWARE[\Wow6432Node]\NuGet\Repository` + - Key location: Either the machine-wide `HKEY_LOCAL_MACHINE\SOFTWARE[\Wow6432Node]\NuGet\Repository` or if it's per-user installed templates and packages, alternatively use `HKEY_CURRENT_USER\SOFTWARE\NuGet\Repository` - Key name: use a name that's unique to you. For example, the ASP.NET MVC 4 templates for VS 2012 use `AspNetMvc4VS11`. - Values: the full path to the packages folder. @@ -170,4 +170,4 @@ SDKs that are installed using an MSI can install NuGet packages directly on the 1. Require project/item templates to be saved on creation by setting [``](http://msdn.microsoft.com/library/twfxayz5.aspx) in the `.vstemplate` file. -1. Templates do not include a `packages.config` or `project.json` file, and do not include or any references or content that would be added when NuGet packages are installed. \ No newline at end of file +1. Templates do not include a `packages.config` or `project.json` file, and do not include or any references or content that would be added when NuGet packages are installed. From 6b218d834b4cc9158bdf659ed79614aa8ce583e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nemanja=20=C4=90or=C4=91evi=C4=87?= Date: Sat, 20 May 2017 18:17:06 +0200 Subject: [PATCH 0008/2943] Update Create-NET-Standard-Packages-VS2017.md This example is creating .NET Standard Library, not .NET Core. --- docs/Guides/Create-NET-Standard-Packages-VS2017.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Guides/Create-NET-Standard-Packages-VS2017.md b/docs/Guides/Create-NET-Standard-Packages-VS2017.md index a42af0085..5db46027c 100644 --- a/docs/Guides/Create-NET-Standard-Packages-VS2017.md +++ b/docs/Guides/Create-NET-Standard-Packages-VS2017.md @@ -50,7 +50,7 @@ The require workload appears as follows in the Visual Studio installer: ![.NET Core cross-platform development workload in the Visual Studio Installer](media/NuGet4-01-Workload.png) -## Create the .NET Core class library project +## Create the .NET Standard class library project 1. In Visual Studio, **File > New > Project**, expand the **Visual C# > .NET Standard** node, select **Class Library (Net Standard)**, change the name to AppLogger, and click OK. From 77b67bcda4c90a09b43dcd15911effe05199f8ef Mon Sep 17 00:00:00 2001 From: Ghanshyam joshi Date: Mon, 22 May 2017 20:28:32 +0530 Subject: [PATCH 0009/2943] Typing mistake Typing mistake : (but not when when the package is installed as a dependency) -> removed extra when --- docs/Create-Packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 8cf7423ab..ac6054a79 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -294,7 +294,7 @@ To directly specify files to include in the package, use the `` node in t ``` -When you include a file named `readme.txt` in the package, the contents of that file will be displayed in Visual Studio as plain text immediately after the package is installed directly (but not when when the package is installed as a dependency). For example, here's how the readme for the HtmlAgilityPack package appears: +When you include a file named `readme.txt` in the package, the contents of that file will be displayed in Visual Studio as plain text immediately after the package is installed directly (but not when the package is installed as a dependency). For example, here's how the readme for the HtmlAgilityPack package appears: ![The display of a readme file for a NuGet package upon installation](media/Create_01-ShowReadme.png) From 4a5f44e64b84249270afa63f55faf529ff4bbdf8 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 22 May 2017 15:51:34 -0700 Subject: [PATCH 0010/2943] Small changes bsed on comments --- docs/Consume-Packages/Packages-and-Source-Control.md | 4 ++-- docs/Consume-Packages/Reinstalling-and-Updating-Packages.md | 2 +- docs/Tools/Package-Manager-Console.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/Consume-Packages/Packages-and-Source-Control.md b/docs/Consume-Packages/Packages-and-Source-Control.md index 84e7b5421..2f42dba1f 100644 --- a/docs/Consume-Packages/Packages-and-Source-Control.md +++ b/docs/Consume-Packages/Packages-and-Source-Control.md @@ -43,7 +43,7 @@ Note that although package restore is the default behavior with NuGet, some manu ## Omitting packages with Git -Use the [.gitignore file](https://www.kernel.org/pub/software/scm/git/docs/gitignore.html) to have Git ignore the contents of the `packages` folder. For reference, see the [sample `.gitignore` for Visual Studio projects](https://github.com/github/gitignore/blob/master/VisualStudio.gitignore). +Use the [.gitignore file](https://git-scm.com/docs/gitignore) to have Git ignore the contents of the `packages` folder. For reference, see the [sample `.gitignore` for Visual Studio projects](https://github.com/github/gitignore/blob/master/VisualStudio.gitignore). The important parts of the `.gitignore` file are: @@ -90,7 +90,7 @@ To disable source control integration with TFVC for selected files: 1. If you are using TFS 2010 or earlier, cloak the `packages` folder in your workspace mappings. -1. On TFS 2012 or later, or with Visual Studio Team Services, add a [`.tfignore`](https://msdn.microsoft.com/library/ms245454.aspx#tfignore) file with the content below to explicitly ignore modifications to the `\packages` folder on the repository level and a few other intermediate files. (You can create the file in Windows Explorer using the name a `.tfignore.` with the trailing dot, but you might need to disable the "Hide known file extensions" option first.): +1. On TFS 2012 or later, or with Visual Studio Team Services, add a `.tfignore` file (as described on [AddFiles to the Server](https://msdn.microsoft.com/library/ms245454.aspx#tfignore)) with the content below to explicitly ignore modifications to the `\packages` folder on the repository level and a few other intermediate files. (You can create the file in Windows Explorer using the name a `.tfignore.` with the trailing dot, but you might need to disable the "Hide known file extensions" option first.): ``` # Ignore the NuGet packages folder in the root of the repository. diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index 7a9cbda03..4b777cbb3 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -46,7 +46,7 @@ The same command without `-reinstall` will update a package to a newer version, Update-Package ``` -Using `Update-Package` without `-reinstall` will update all packages in the project. For other options, see the [Update-Package command](../Tools/PowerShell-Reference.md#update-package). +Using `Update-Package` without `-reinstall` will update all packages in all projects in the current folder. You can use `-ProjectName ` to update all packages in a specific project. For other options, see the [Update-Package command](../Tools/PowerShell-Reference.md#update-package). Any updates are subject to version constraints indicated in `packages.config`, as described below in [Constraining upgrade versions](#constraining-upgrade-versions), but do not apply to projects using `project.json` or package references in project files. diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index 6da97cddd..2a5db61f3 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -37,7 +37,7 @@ The Package Manager Console that is built into Visual Studio (2012 and later) le > > In Visual Studio 2017, NuGet and the NuGet Package Manager are automatically installed when you select any .NET-related workloads; you can also install it individually by checking the **Individual components > Code tools > NuGet package manager** option in the Visual Studio 2017 installer.) -Using the Console is necessary if you want to work with packages without having a solution open, and is required in cases where the Package Manager UI does not provide a way to perform an operation. Note, however, that all operations can be done with the [NuGet CLI](../tools/nuget-exe-cli-reference.md). +Using the Console is necessary in cases where the Package Manager UI does not provide a way to perform an operation. Note, however, that all operations can be done with the [NuGet CLI](../tools/nuget-exe-cli-reference.md). In all cases, you open the Console in Visual Studio through the **Tools > NuGet Package Manager > Package Manager Console** command. From 4e307e2e0898e47635fb8526f5c2fdc88458bda9 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 23 May 2017 16:34:27 -0700 Subject: [PATCH 0011/2943] Edits based on customer feedback --- docs/Guides/Create-NET-Standard-Packages-VS2017.md | 14 +++++++------- docs/Guides/Install-NuGet.md | 4 ++-- docs/Policies/NuGet-FAQ.md | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/Guides/Create-NET-Standard-Packages-VS2017.md b/docs/Guides/Create-NET-Standard-Packages-VS2017.md index a42af0085..934d1f154 100644 --- a/docs/Guides/Create-NET-Standard-Packages-VS2017.md +++ b/docs/Guides/Create-NET-Standard-Packages-VS2017.md @@ -5,7 +5,7 @@ title: Create .NET Standard NuGet Packages with Visual Studio 2017 | Microsoft D author: kraigb ms.author: kraigb manager: ghogen -ms.date: 2/8/2017 +ms.date: 5/23/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -57,9 +57,9 @@ The require workload appears as follows in the Visual Studio installer: ![Create new class library project](media/NuGet4-02-NewProject.png) 1. Change the build configuration to **Release**. -1. Right-click the `AppLogger (Portable)` in Solution Explorer, select **Properties**, select the **Build** tab, check the box for **XML documentation file**, and set the filename to just `AppLogger.xml`. Then save the project. +1. Right-click the `AppLogger` project in Solution Explorer, select **Properties**, select the **Build** tab, check the box for **XML documentation file**, and set the filename to just `AppLogger.xml`. Then save the project. -1. Add your code to the component, for example: +1. Add your code to the component, such as the following (which clearly just outputs messages to the console): ```cs namespace AppLogger @@ -68,7 +68,7 @@ The require workload appears as follows in the Visual Studio installer: { public void Log(string text) { - throw new NotImplementedException("Called Log"); + Console.WriteLine(text); } } } @@ -91,7 +91,7 @@ With NuGet 4.0 and .NET Core projects, package metadata is contained directly in Awesome application logging utility false First release - Copyright 2016 (c) Contoso Corporation. All rights reserved. + Copyright 2017 (c) Contoso Corporation. All rights reserved. logger logging logs ``` @@ -120,7 +120,7 @@ To make your package available to other developers, follow the instructions on ## Related topics -- [Package References in Project Files](../consume-packages/package-references-in-project-files.md) -- [NuGet pack and restore as MSBuild targets](../schema/msbuild-targets.md) +- [Package References in Project Files](../consume-packages/package-references-in-project-files.md) describes all the details of describing your package directly in the project file. +- [NuGet pack and restore as MSBuild targets](../schema/msbuild-targets.md) describes all the options for using `msbuild /t:pack` to create the package. - [.NET Standard Library documentation](https://docs.microsoft.com/dotnet/articles/standard/library) - [Porting to .NET Core from .NET Framework](https://docs.microsoft.com/dotnet/articles/core/porting/index) diff --git a/docs/Guides/Install-NuGet.md b/docs/Guides/Install-NuGet.md index 6466f4f0b..aea70d842 100644 --- a/docs/Guides/Install-NuGet.md +++ b/docs/Guides/Install-NuGet.md @@ -90,9 +90,9 @@ On Windows, the NuGet CLI can be installed using any of the following methods: On Mac OSX and Linux, there are two ways to run NuGet: -1. Install the [.NET Core SDK](https://www.microsoft.com/net/download/core), which includes NuGet capabilities. Downloads are also listed on [github.com/dotnet/cli](https://github.com/dotnet/cli). +1. Install the [.NET Core SDK](https://www.microsoft.com/net/download/core), which includes the core NuGet capabilities. Downloads are also listed on [github.com/dotnet/cli](https://github.com/dotnet/cli). If you need fuller capabilities, then use the second option below to use `nuget.exe` with Mono. -1. Install [Mono](http://www.mono-project.com/docs/getting-started/install/) and then use the nuget.exe command-line executable for Windows (version 3.2 and later) from [nuget.org/downloads](https://nuget.org/downloads). Running NuGet on Mono is subject to the following limitations: +1. Install [Mono](http://www.mono-project.com/docs/getting-started/install/) and then use the `nuget.exe` command-line executable for Windows (version 3.2 and later) from [nuget.org/downloads](https://nuget.org/downloads). Running NuGet on Mono is subject to the following limitations: - Commands tested to work: - Config diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index 7990112cd..4dbe183e0 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -94,7 +94,7 @@ Yes, it's possible to add custom commands to `nuget.exe`, as described in [Rob R **How do I get access to the DTE object in the Package Manager console?** -The console provides a variable named `$DTE` that returns the `DTE` object. See the [`Get-Project` command](../tools/powershell-reference.md#get-project). +The top-level object in the Visual Studio automation object model is called the DTE object. The console provides this through a variable named `$DTE`. For more information, see [Automation Model Overview](https://docs.microsoft.com/visualstudio/extensibility/internals/automation-model-overview) in the Visual Studio Extensibility documentation. **I try to cast the $DTE variable to the type DTE2, but I get an error: Cannot convert the "EnvDTE.DTEClass" value of type "EnvDTE.DTEClass" to type "EnvDTE80.DTE2". What's wrong?** From 67a0619a6696c2a2b289b75f2aaf53d604b2998a Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 30 May 2017 16:59:08 -0700 Subject: [PATCH 0012/2943] Various updates, addressing feedback --- .../Consume-Packages/Dependency-Resolution.md | 67 ++++++++----------- docs/Consume-Packages/Package-Restore.md | 4 +- .../Reinstalling-and-Updating-Packages.md | 18 +++-- docs/Create-Packages/Dependency-Versions.md | 3 + docs/Guides/Install-NuGet.md | 66 +++++++++--------- docs/Schema/packages-config.md | 7 +- 6 files changed, 77 insertions(+), 88 deletions(-) diff --git a/docs/Consume-Packages/Dependency-Resolution.md b/docs/Consume-Packages/Dependency-Resolution.md index 3cf9bdbb5..55d81622a 100644 --- a/docs/Consume-Packages/Dependency-Resolution.md +++ b/docs/Consume-Packages/Dependency-Resolution.md @@ -5,7 +5,7 @@ title: NuGet Package Dependency Resolution | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 2/8/2017 +ms.date: 5/25/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -36,65 +36,52 @@ Those immediate dependencies might then also have dependencies on their own, whi When multiple packages have the same dependency, then the same package ID can appear in the graph multiple times, potentially with different version constraints. However, only one version of a given package can be used in a project, so NuGet must choose which version will be used. -The exact process differs between NuGet 2.x (using `packages.config`) and NuGet 3.x (using `project.json`) as described in the sections below. +The exact process differs between projects using `packages.config` those using `project.json` or [package references in project files](Package-References-in-Project-Files.md), as described in the sections below. In some cases, such as when there's a conflict between a dependency specified in one project and an assembly that's produced by another, it might be necessary to explicitly exclude a reference. The section [Excluding references](#excluding-references) below. -## Dependency resolution in NuGet 2.x +## Dependency resolution with packages.config -With NuGet 2.x, a project's dependencies are written to the `packages.config` file as a flat list. Any dependencies of those packages are also written in the same list, and NuGet might also modify `.csproj` file and possibly also `app.config`, `web.config`, and other individual files. +When `packages.config` is used (NuGet 2.x+), a project's dependencies are written to `packages.config` as a flat list. Any dependencies of those packages are also written in the same list. When packages are installed, NuGet might also modify the `.csproj` file, `app.config`, `web.config`, and other individual files. -NuGet 2.x will attempt to resolve dependency conflicts during the installation of each individual package, which includes package restore. That is, if Package A is being installed and depends on Package B, and Package B is already listed in `packages.config` as a dependency of something else, NuGet will compare the versions of Package B being requested and attempt to find a version that will satisfy all version constraints. Specifically, NuGet will select the lower major.minor version that satisfies dependencies. +With `packages.config`, NuGet attempts to resolve dependency conflicts during the installation of each individual package. That is, if Package A is being installed and depends on Package B, and Package B is already listed in `packages.config` as a dependency of something else, NuGet compares the versions of Package B being requested and attempts to find a version that satisfies all version constraints. Specifically, NuGet selects the lower *major.minor* version that satisfies dependencies. -By default, NuGet 2.7 and earlier resolves the highest *patch* version (using the major.minor.patch.build convention). [NuGet 2.8](../release-notes/nuget-2.8.md#patch-resolution-for-dependencies) changes this behavior to look for the lowest patch version by default, and allows you to control this setting through the `DependencyVersion` attribute in `Nuget.Config` and the `-DependencyVersion` switch on the command line. +By default, NuGet 2.7 and earlier resolves the highest *patch* version (using the *major.minor.patch.build* convention). [NuGet 2.8 and higher](../release-notes/nuget-2.8.md#patch-resolution-for-dependencies) changes this behavior to look for the lowest patch version by default. You can control this setting through the `DependencyVersion` attribute in `Nuget.Config` and the `-DependencyVersion` switch on the command line. -On the downside, the NuGet 2.x process for resolving dependencies gets complicated for larger dependency graphs. This is especially true during package restore, because each new package installation requires a traversal of the whole graph and raises the chance for version conflicts. When a conflict occurs, package restoration is stopped, leaving the project in a partially-restored state, especially with potential modifications to the project file itself. +On the downside, the `packages.config` process for resolving dependencies gets complicated for larger dependency graphs. Each new package installation requires a traversal of the whole graph and raises the chance for version conflicts. When a conflict occurs, installation is stopped, leaving the project in an indeterminate state, especially with potential modifications to the project file itself. -This and other challenges is why dependency resolution was overhauled in NuGet 3.x, as described in the next section. +This and other challenges is why dependency resolution was overhauled in NuGet 3.x+ for projects using `project.json` and package references, as described in the next section. -## Dependency resolution in NuGet 3.x +## Dependency resolution with project.json and package references -As dependencies are installed into a project, NuGet 3.x adds them to a flat package graph in `project.json` in which conflicts are resolved ahead of time. This is referred to as *transitive restore*. Reinstalling or restoring packages is then simply a process of downloading the packages listed in the graph, resulting in faster and more predictable builds. +When installing packages into projects using `project.json` or packages references, NuGet adds them to a flat package graph in `project.json` or the project file, and resolves conflicts ahead of time. This is referred to as *transitive restore*. Reinstalling or restoring packages is then simply a process of downloading the packages listed in the graph, resulting in faster and more predictable builds. You can also take advantage of floating version ranges, such as *2.8.\**, avoiding expensive and error prone calls to `nuget update` on the client machines and build servers. -> [!Note] -> `project.json` is mandatory for UWP apps and ASP.NET 5 apps, is optional for PCLs, and currently is not fully supported on other project systems. - - -### Advantages of transitive restore - -1. Developers explicitly declare which package versions they depend on, without worrying about their down-level dependencies. -1. Project files are not modified, avoiding merge conflicts and file churn on commits. This also allows the project system to evolve independent of NuGet. -1. Developers can easily change dependency versions without worrying about side effects on the rest of the project. -1. Hint paths are not being burned into the project files, fixing the ability to move projects around on disk, and re-targeting problems. -1. Direct support for Native or special dependencies can be determined directly by the project system. This is related to a new package format in NuGet 3.x. -1. Developers can specify a floating version range such as *2.8.\**, avoiding expensive and error prone calls to NuGet update on the client machines and build servers. - -### Lock file and MSBuild - -When the NuGet restore process runs prior to a build, it resolves dependencies first in memory, then writes the resulting graph to a file called `project.lock.json` alongside `project.json`. MSBuild then reads this file and translates it into a set of folders where potential references can be found, and then adds them to the project tree in memory. +When the NuGet restore process runs prior to a build, it resolves dependencies first in memory, then writes the resulting graph to a file called `project.assets.json` in the `obj` folder of a project using package references, or in a file named `project.lock.json` alongside `project.json`. MSBuild then reads this file and translates it into a set of folders where potential references can be found, and then adds them to the project tree in memory. The lock file is temporary and does not need to be added to source control; it's listed by default in both `.gitignore` and `.tfignore`. +> [!Note] +> As of Visual Studio 2017 and NuGet 4.x, the default for all projects is to use package references in project files. `project.json` is used only for UWP projects that have not been updated to target the Windows 10 Creators Update (build 15063). Furthermore, although all NuGet versions 2.x+ support `packages.config`, you can simply migrate those dependencies into your project file as package references instead to benefit from better dependency resolution. ### Dependency resolution rules -NuGet 3.x applies four main rules to resolve dependencies: lowest applicable version, floating versions, nearest-wins, cousin dependencies. +Transitive restore applies four main rules to resolve dependencies: lowest applicable version, floating versions, nearest-wins, cousin dependencies. #### Lowest applicable version -NuGet 3.x restores the lowest possible version of a package as defined by its dependencies. This rule also applied to dependencies on the application or the class library unless declared as [floating](#floating-versions). +This rule restores the lowest possible version of a package as defined by its dependencies. It also applies to dependencies on the application or the class library unless declared as [floating](#floating-versions). For example, in the following figure *1.0-Beta* is considered lower than *1.0* so NuGet chooses the 1.0 version: ![Choosing the lowest applicable version](media/projectJson-dependency-1.png) -In the next figure, version *2.1* is not available on the feed but because the version constraint is *>= 2.1* NuGet will pick the next lowest version it can find, in this case *2.2*: +In the next figure, version *2.1* is not available on the feed but because the version constraint is *>= 2.1* NuGet picks the next lowest version it can find, in this case *2.2*: ![Choosing the next lowest version available on the feed](media/projectJson-dependency-2.png) -When an application specifies an exact version number, such as *1.2*, that is not available on the feed, NuGet will fail with an error when attempting to install or restore the package: +When an application specifies an exact version number, such as *1.2*, that is not available on the feed, NuGet fails with an error when attempting to install or restore the package: ![NuGet generates an error when an exact package version is not available](media/projectJson-dependency-3.png) @@ -102,9 +89,12 @@ When an application specifies an exact version number, such as *1.2*, that is no #### Floating versions -A floating dependency version is specified with the * wildcard, as with *6.0.** in the `project.json` file. This says "use the latest 6.0.x version"; a floating version of *4.** means "use the latest 4.x version." Using a floating version allows a dependency package to continue evolving without requiring a change to the consuming application (or package). +A floating dependency version is specified with the * wildcard, as with *6.0.** in either the project file or `project.json`. This says "use the latest 6.0.x version"; a floating version of *4.** means "use the latest 4.x version." A floating version allows a dependency package to continue evolving without requiring a change to the consuming application (or package). -When a floating version constraint is specified then NuGet will resolve the highest version of a package that matches the version pattern, for example *6.0.** will get the highest version of a package that starts with *6.0*: +> [!Note] +> Floating versions do not take pre-release versions into account (for example, versions suffixed with `-beta`). A version of *4.** will pick up 4.4 but not 4.5-alpha, 4.5-beta, 4.5-rc, etc. There is at present no means to say "use the latest version including pre-releases"; see [issue 912](https://github.com/NuGet/Home/issues/912). Using a version like *2.1-** doesn't work either as it resolves the lowest matching version, see issues [4513](https://github.com/NuGet/Home/issues/4513) and [4859](https://github.com/NuGet/Home/issues/4859). + +When a floating version constraint is specified, NuGet resolves the highest version of a package that matches the version pattern, for example *6.0.** will get the highest version of a package that starts with *6.0*: ![Choosing version 6.0.1 when a floating version 6.0.* is requested](media/projectJson-dependency-4.png) @@ -112,16 +102,16 @@ When a floating version constraint is specified then NuGet will resolve the high #### Nearest wins -When the package graph for an application contains different versions of the same package, the package that's closest to the application in the graph will be used and others will be ignored. This allows an application to override any particular package version in the dependency graph. +When the package graph for an application contains different versions of the same package, the package that's closest to the application in the graph is used and others are ignored. This allows an application to override any particular package version in the dependency graph. In the example below, the application depends directly on Package B with a version constraint of *>=2.0*. The application also depends on Package A which in turn also depends on Package B, but with a *>=1.0* constraint. Because the dependency on Package B *2.0* is nearer to the application in the graph, that version is used: ![Application using the Nearest Wins rule](media/projectJson-dependency-5.png) >[!Warning] -> Applying the Nearest Wins rule can downgrade the package version, thus potentially breaking other dependencies in the graph. Hence this rule is applied with a warning to alert the user. +> The Nearest Wins rule can result in a downgrade of the package version, thus potentially breaking other dependencies in the graph. Hence this rule is applied with a warning to alert the user. -This rule also results in greater efficiency with large dependency graph (such as those with the BCL packages) because by once a given dependency is ignored, NuGet also ignores all remaining dependencies on that branch of the graph. In the diagram below, for example, because Package C 2.0 will be used, NuGet can ignore any branches in the graph that refer to an older version of Package C: +This rule also results in greater efficiency with large dependency graph (such as those with the BCL packages) because by once a given dependency is ignored, NuGet also ignores all remaining dependencies on that branch of the graph. In the diagram below, for example, because Package C 2.0 is used, NuGet ignores any branches in the graph that refer to an older version of Package C: ![When NuGet ignores a package in the graph, it ignores that entire branch](media/projectJson-dependency-6.png) @@ -129,11 +119,11 @@ This rule also results in greater efficiency with large dependency graph (such a #### Cousin dependencies -When different package versions are referred to at the same distance in the graph from the application, NuGet uses the lowest version that satisfies all version requirements (as with the [lowest applicable version](#lowest-applicable-version) and [floating versions](#floating-versions) rules). In the image below, for example, version *2.0* of Package B will satisfy the other *>=1.0* constraint, and will thus be used: +When different package versions are referred to at the same distance in the graph from the application, NuGet uses the lowest version that satisfies all version requirements (as with the [lowest applicable version](#lowest-applicable-version) and [floating versions](#floating-versions) rules). In the image below, for example, version *2.0* of Package B satisfies the other *>=1.0* constraint, and is thus used: ![Resolving cousin dependencies using the lower version that satisfies all constraints](media/projectJson-dependency-7.png) -In some cases, it is not possible to meet all version requirements. As shown below, if Package A requires exactly Package B *1.0* and Package C requires Package B *>=2.0*, then NuGet cannot resolve the dependencies and will give an error. +In some cases, it is not possible to meet all version requirements. As shown below, if Package A requires exactly Package B *1.0* and Package C requires Package B *>=2.0*, then NuGet cannot resolve the dependencies and gives an error. ![Unresolvable dependencies due to an exact version requirement](media/projectJson-dependency-8.png) @@ -141,7 +131,7 @@ In these situations, the top-level consumer (the application or package) should ## Excluding references -There are scenarios in which assemblies with the same name might be referenced more than once in a project, producing design-time and build-time errors. For example, consider a project that contains a custom version of `C.dll`, and references packageC that also contains `C.dll`. At the same time, the project also depends on packageB which also depends on packageC and `C.dll`. As a result, NuGet won't be able to determine which `C.dll` to use, but you can't just remove the project's dependency on packageC because packageB also depends on it. +There are scenarios in which assemblies with the same name might be referenced more than once in a project, producing design-time and build-time errors. For example, consider a project that contains a custom version of `C.dll`, and references packageC that also contains `C.dll`. At the same time, the project also depends on packageB which also depends on packageC and `C.dll`. As a result, NuGet can't determine which `C.dll` to use, but you can't just remove the project's dependency on packageC because packageB also depends on it. To resolve this, you must directly reference the `C.dll` you want (or use another package that references the right one), and then add a dependency on packageC that excludes all its assets. This is done as follows: @@ -193,4 +183,3 @@ To resolve incompatibilities, do one of the following: - Retarget your project to a framework that is supported by the packages you want to use. - Contact the author of the packages and work with them to add support for your chosen framework. Each package listing page on [nuget.org](https://www.nuget.org/) has a **Contact Owners** link for this purpose. - **Not recommended**: as a temporary solution while you work with the package author, projects targeting `netcore`, `netstandard`, and `netcoreapp` can denote other frameworks as being compatible, thereby allowing packages targeting those other frameworks to be used. See [project.json imports](../Schema/project-json.md#imports) and [MSBuild restore target PackageTargetFallback](../Schema/msbuild-targets.md#packagetargetfallback). This can cause unexpected behaviors, so again, it's best to resolve package incompatibilities by working with the package author on an update. - diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/Consume-Packages/Package-Restore.md index 8e6da0ef6..0c075b0be 100644 --- a/docs/Consume-Packages/Package-Restore.md +++ b/docs/Consume-Packages/Package-Restore.md @@ -174,9 +174,9 @@ When enabled, automatic restore works as follows: 1. A `.nuget` folder is created in the solution containing a `Nuget.Config` file that contains only a single setting for `disableSourceControlIntegration` (as described in [Packages and source control](../consume-packages/packages-and-source-control.md) for Team Foundation Version Control). 2. When a build begins, Visual Studio instructs NuGet to restore packages. 3. NuGet recursively looks for all `packages.config` files in the solution, looks for `project.json`, or looks in the project file. -4. For each packages listed in the reference files, NuGet checks if it exists in the solution's `packages` folder. +4. For each packages listed in the reference files, NuGet checks if it already exists in the solution (the `packages` folder, `project.lock.json`, or `project.assets.json` depending on whether the project is using `packages.config`, `project.json`, or package references in project files). 5. If the package is not found, NuGet attempts to retrieve the package from its cache first (see [Managing the NuGet cache](../consume-packages/managing-the-nuget-cache.md). If the package is not in the cache, NuGet downloads the package from the enabled sources as listed in **Tools > Options > [NuGet] Package Manager > Package Sources**, in the order that the sources appear. -6. If the download is successful, NuGet caches it, and then installs the package into the `packages` folder; otherwise NuGet fails and the build fails. +6. If the download is successful, NuGet caches it, and then installs the package into the solution (again, either the `packages` folder, `project.lock.json`, or `project.assets.json`); otherwise NuGet fails and the build fails. During this process, developers see a progress dialog with the option to cancel package restore. diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index 4b777cbb3..edb3b7e54 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -5,7 +5,7 @@ title: Reinstalling and Updating NuGet Packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 5/3/2017 +ms.date: 5/24/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -46,11 +46,15 @@ The same command without `-reinstall` will update a package to a newer version, Update-Package ``` -Using `Update-Package` without `-reinstall` will update all packages in all projects in the current folder. You can use `-ProjectName ` to update all packages in a specific project. For other options, see the [Update-Package command](../Tools/PowerShell-Reference.md#update-package). +To update all packages in a specific project, use the `-ProjectName` argument: -Any updates are subject to version constraints indicated in `packages.config`, as described below in [Constraining upgrade versions](#constraining-upgrade-versions), but do not apply to projects using `project.json` or package references in project files. +```ps +Update-Package application-project.csproj +``` + +Using `Update-Package` by itself, with no other arguments, will update all packages in all projects in the current folder. See the [Update-Package command](../Tools/PowerShell-Reference.md#update-package) reference for complete usage details. -For complete usage, refer to the [PowerShell reference for Update-Package](../tools/powershell-reference.md#update-package). +Updating packages in a project or solution using `project.json` or [package references in project files](../Consume-Packages/Package-References-in-Project-Files.md) always updates to the latest version of the package (excluding pre-release packages). Projects that use `packages.config` can, if desired, limit update versions as described below in[Constraining upgrade versions](#constraining-upgrade-versions). ## When to Reinstall a Package @@ -83,9 +87,9 @@ The following may be affected when reinstalling a package: ## Constraining upgrade versions -In NuGet 3.x with projects using `project.json` or [package references in project files](../Consume-Packages/Package-References-in-Project-Files.md) to list dependencies, installing or updating a package will *always* install the latest version available from the package source. +By default, reinstalling or updating a package *always* installs the latest version available from the package source. -In projects using `packages.config`, the same behavior applies unless you specifically constrain the version range. For example, if you know that your application will work only with version 1.x of a package but not 2.0 and above, perhaps due to a major change in the package API, then you'd want to constrain upgrades to 1.x versions. This prevents accidental updates that would break the application. +In projects using `packages.config`, however, you can specifically constrain the version range. For example, if you know that your application works only with version 1.x of a package but not 2.0 and above, perhaps due to a major change in the package API, then you'd want to constrain upgrades to 1.x versions. This prevents accidental updates that would break the application. To set a constraint, open `packages.config` in a text editor, locate the dependency in question, and add the `allowedVersions` attribute with a version range. For example, to constrain updates to version 1.x, set `allowedVersions` to `[1,2)`: @@ -98,4 +102,4 @@ To set a constraint, open `packages.config` in a text editor, locate the depende ``` -In all cases, use the notation described in [Dependency versions](../create-packages/dependency-versions.md). +In all cases, use the notation described in [Dependency versions - version ranges](../create-packages/dependency-versions.md#version-ranges). diff --git a/docs/Create-Packages/Dependency-Versions.md b/docs/Create-Packages/Dependency-Versions.md index ed513b147..c08086289 100644 --- a/docs/Create-Packages/Dependency-Versions.md +++ b/docs/Create-Packages/Dependency-Versions.md @@ -77,6 +77,9 @@ NuGet supports using interval notation for specifying version ranges, summarized | [1.0,2.0) | 1.0 ≤ x < 2.0 | Mixed inclusive minimum and exclusive maximum version | | (1.0) | invalid | invalid | +> [!Note] +> Pre-release versions are not included when resolving version ranges. Pre-release versions are included when using a wildcard (*) with a floating version number. That is, *[1.0,2.0]* will not include 2.0-beta, but *2.0-** will. However, due to issues [4513](https://github.com/NuGet/Home/issues/4513) and [4859](https://github.com/NuGet/Home/issues/4859), this resolves the lowest matching version, not the latest. + A few examples: diff --git a/docs/Guides/Install-NuGet.md b/docs/Guides/Install-NuGet.md index aea70d842..134ddddfe 100644 --- a/docs/Guides/Install-NuGet.md +++ b/docs/Guides/Install-NuGet.md @@ -5,7 +5,7 @@ title: Installing NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 4/4/2017 +ms.date: 5/30/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -32,10 +32,10 @@ ms.reviewer: There are two primary tools available to help you build, publish and consume NuGet packages: -1. The [**NuGet CLI**](#nuget-cli) is the command-line utility for Windows that provides all NuGet capabilities; it can also be run on Mac OSX and Linux through either the .NET Core CLI or with Mono. -1. The [**NuGet Package Manager in Visual Studio**](#nuget-package-manager-in-visual-studio) is a GUI tool for managing packages and includes a console through which you can use certain NuGet commands directly within Visual Studio. It's included with Visual Studio 2012 and later and can be installed manually for earlier versions. +1. The [**NuGet CLI**](#nuget-cli) is the command-line utility for Windows that provides all NuGet capabilities; it can also be run on Mac OSX and Linux using Mono, or through the .NET Core CLI (`dotnet`). +1. The [**NuGet Package Manager in Visual Studio**](#nuget-package-manager-in-visual-studio) is a GUI tool for managing packages and includes a PowerShell console through which you can use certain NuGet commands directly within Visual Studio. The Package Manager UI and Console are both included with Visual Studio 2012 and later and can be installed manually for earlier versions. -Both support the following operations: +The NuGet CLI and Package Manager both support the following operations: - Search packages - Install packages @@ -54,8 +54,8 @@ The following capabilities are supported only in the NuGet CLI: - Replication a package > [!Note] -> You might also be interested in the [NuGet Package Explorer](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer), an open-source, stand-alone tool to visually explore and create NuGet packages. -> Also, the cross-platform [.NET Core CLI](https://docs.microsoft.com/dotnet/articles/core/tools/index#installation) toolchain for developing .NET Core applications also supports a [dotnet restore](https://docs.microsoft.com/dotnet/articles/core/tools/dotnet-restore) command that performs a nuget restore. No other nuget commands are available in the .NET Core CLI at present, however. +> Another good tool is the [NuGet Package Explorer](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer), an open-source, stand-alone tool to visually explore, create, and edit NuGet packages. It's very helpful, for example, to make experimental changes to a package structure without having to rebuild the package each time. +> The cross-platform [.NET Core CLI](https://docs.microsoft.com/dotnet/articles/core/tools/index#installation) toolchain, used for developing .NET Core applications, supports several NuGet commands, such as delete, locals, push, pack, and restore. ## NuGet CLI @@ -64,9 +64,9 @@ The NuGet command-line interface provides access to all NuGet capabilities, and ### Windows -On Windows, the NuGet CLI can be installed using any of the following methods: +On Windows, install the NuGet CLI using any of the following methods: -1. **nuget.org**: Download the latest version of the nuget.exe file from [nuget.org/downloads](https://nuget.org/downloads) and save it to an appropriate location on your machine. If desired, add that location to your PATH environment variable so you can NuGet from anywhere. (Note that the download is a single .exe file, so save it rather than running it from the browser.) +1. **nuget.org**: Various versions of `nuget.exe` are available on [nuget.org/downloads](https://nuget.org/downloads). Each download link points directly to an `.exe` file, so be sure to right-click and save the file to your computer rather than running it from the browser. If desired, add the save location to your PATH environment variable so you can NuGet from anywhere. > [!Note] > With NuGet 1.4+, you can use `nuget update -self` to update your existing nuget.exe to the latest version. @@ -82,35 +82,35 @@ On Windows, the NuGet CLI can be installed using any of the following methods: > **NuGet 2.x users** > -> Because there are a few breaking changes introduced in NuGet 3.2, [https://nuget.org/nuget.exe](https://nuget.org/nuget.exe) points to the latest stable NuGet 2.x release to prevent CI systems from potentially breaking at this time. +> Because of breaking changes introduced in NuGet 3.2, [https://nuget.org/nuget.exe](https://nuget.org/nuget.exe) points to the latest stable NuGet 2.x release to prevent CI systems from potentially breaking. ## Mac OSX and Linux -On Mac OSX and Linux, there are two ways to run NuGet: +On Mac OSX and Linux, there are two ways to run the NuGet CLI: 1. Install the [.NET Core SDK](https://www.microsoft.com/net/download/core), which includes the core NuGet capabilities. Downloads are also listed on [github.com/dotnet/cli](https://github.com/dotnet/cli). If you need fuller capabilities, then use the second option below to use `nuget.exe` with Mono. 1. Install [Mono](http://www.mono-project.com/docs/getting-started/install/) and then use the `nuget.exe` command-line executable for Windows (version 3.2 and later) from [nuget.org/downloads](https://nuget.org/downloads). Running NuGet on Mono is subject to the following limitations: - Commands tested to work: - - Config - - Delete - - Help - - Install - - List - - Push - - SetApiKey - - Sources - - Spec + - config + - delete + - help + - install + - list + - push + - setApiKey + - sources + - spec - Partially-working commands: - - Pack: works with `.nuspec` files but not with project files. - - Restore: works with `packages.config` and `project.json` files but not with solution (`.sln`) files. + - pack: works with `.nuspec` files but not with project files. + - restore: works with `packages.config` and `project.json` files but not with solution (`.sln`) files. - Commands that do not work: - - Update + - update ### Related topics @@ -122,16 +122,18 @@ On Mac OSX and Linux, there are two ways to run NuGet: ## NuGet Package Manager in Visual Studio -The NuGet Package Manager is included in every edition of Visual Studio 2012 and later. It includes the Package Manager UI ([reference](../tools/package-manager-ui.md)) and the Package Manager Console, through which you can access tools that come with certain packages ([reference](../tools/package-manager-console.md)). +The NuGet Package Manager is included in every edition of Visual Studio 2012 and later. It includes the Package Manager UI ([reference](../tools/package-manager-ui.md)), and the Package Manager Console through which you can access tools that come with certain packages ([reference](../tools/package-manager-console.md)). > [!Note] > The console requires [PowerShell 2.0](http://support.microsoft.com/kb/968929), which will already be installed on Windows 7 or higher and Windows Server 2008 R2 or higher. > -> Package Manager Console commands also work only within Visual Studio. Use the NuGet CLI outside of that environment. +> Package Manager Console commands also work only within Visual Studio. Use the NuGet CLI outside of that environment. ### Package Manager installation for Visual Studio 2010 and earlier +*These steps are not necessary for Visual Studio 2012 and later, which already include the Package Manager.* + 1. In Visual Studio, click **Tools > Extension and Updates**. 1. Navigate to **Online**, search for "NuGet Package Manager for Visual Studio," and click **Download**. 1. In the Installer dialog box, click **Install**. @@ -146,21 +148,13 @@ For Visual Studio 2015 Update 2 and later, the Package Manager is automatically For earlier versions of Visual Studio, select the **Tools > Extensions and Updates** command and click on the **Updates** tab to see if a new version of the Package Manager is available. -### NuGet beta channel - -The NuGet Beta Channel for the NuGet Package Manager in Visual Studio 2015 gives you access to high-quality builds that are close to completion. We use this channel to gather feedback on our near-final builds, and it's recommended for developers who want to try out new features and those who are experiencing blocking issues and need early access to updated builds before RTM. - -Accessing the beta channel is simple: - -1. In Visual Studio, navigate to **Tools > Options > Environment > Extensions and Updates**, then add the feed `https://dotnet.myget.org/F/nuget-beta/vsix/` to the **Additional Extension Galleries** list: - - ![Adding the NuGet beta channel feed to Visual Studio](media/BetaChannel-ToolsSettings.png) +### NuGet previews -1. Navigate to **Tools > Extensions and Updates** and select **Online**, which should show the NuGet-Beta Feed from which you can install a beta NuGet Package Manager: +If you'd like to preview upcoming NuGet features, install the [Visual Studio 2017 Preview](https://www.visualstudio.com/vs/preview/), which works side-by-side with stable releases of Visual Studio. - ![Checking NuGet beta channel updates](media/BetaChannel-ExtensionUpdate.png) +Note that the previous NuGet Beta Channel (`https://dotnet.myget.org/F/nuget-beta/vsix/`) for Visual Studio 2015 is no longer used. -To report problems with the Beta builds or to share ideas, open an issue on the [NuGet GitHub repository](https://github.com/Nuget/Home). +To report problems with any release of NuGet or to share ideas, open an issue on the [NuGet GitHub repository](https://github.com/Nuget/Home). ### Related topics diff --git a/docs/Schema/packages-config.md b/docs/Schema/packages-config.md index 62bd2cce4..e2279493c 100644 --- a/docs/Schema/packages-config.md +++ b/docs/Schema/packages-config.md @@ -41,7 +41,7 @@ The schema is simple: following the standard XML header is a single `` | id | Yes | The identifier of the package, such as Newtonsoft.json or Microsoft.AspNet.Mvc. | | version | Yes | The exact version of the package to install, such as 3.1.1 or 4.2.5.11-beta. A version string must have at least three numbers; a fourth is optional, as is a pre-release suffix. Ranges are not allowed. | | targetFramework | No | The [target framework moniker (TFM)](Target-Frameworks.md) to apply when installing the package. This is initially set to the project's target when a package is installed. As a result, different `` elements can have different TFMs. For example, if you create a project targeting .NET 4.5.2, packages installed at that point will use the TFM of net452. If you ;later retarget the project to .NET 4.6 and add more packages, those will use TFM of net46. A mismatch between the project's target and `targetFramework` attributes will generate warnings, in which case you can reinstall the affected packages. | -| allowedVersions | No | A range of allowed versions for this package in case the specific value in `version` cannot be found. | +| allowedVersions | No | A range of allowed versions for this package applied during package update (see [Constraining upgrade versions](../consume-packages/reinstalling-and-updating-packages.md#constraining-upgrade-versions). It does *not* affect what package is installed during an install or restore operation. See [Dependency versions - version Ranges](../create-packages/dependency-versions.md#version-ranges) for syntax. The PackageManager UI also disables all versions outside the allowed range. | | developmentDependency | No | If the consuming project itself creates a NuGet package, setting this to `true` for a dependency prevents that package from being included when the consuming package is created. The default is `false`. | ## Examples @@ -56,7 +56,7 @@ The following `packages.config` refers to two dependencies: ``` -The following `packages.config` refers to nine packages, but `Microsoft.Net.Compilers` will not be included when building the consuming package because of the `developmentDependency` attribute. +The following `packages.config` refers to nine packages, but `Microsoft.Net.Compilers` will not be included when building the consuming package because of the `developmentDependency` attribute. The reference to Newtonsoft.Json also restricts updates to 8.x and 9.x versions only. ```xml @@ -65,11 +65,10 @@ The following `packages.config` refers to nine packages, but `Microsoft.Net.Comp - + ``` - From df46c0944b1741a8cdcb095a342605bc17931361 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 30 May 2017 17:05:03 -0700 Subject: [PATCH 0013/2943] Correcting link --- docs/Create-Packages/project-json-Impact.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/project-json-Impact.md b/docs/Create-Packages/project-json-Impact.md index f45692b90..1ad845fd3 100644 --- a/docs/Create-Packages/project-json-Impact.md +++ b/docs/Create-Packages/project-json-Impact.md @@ -38,7 +38,7 @@ Traditional NuGet packages support a set of features that are not carried over t ### Install and uninstall scripts are ignored -The transitive restore model, described in [Dependency resolution](../consume-packages/dependency-resolution.md#dependency-resolution-in-nuget-3x), does not have a concept of "package install time". A package is either present or not present, but there is no consistent process that occurs when a package is installed. +The transitive restore model, described in [Dependency resolution](../consume-packages/dependency-resolution.md#dependency-resolution-with-project-json-and-packag- references), does not have a concept of "package install time". A package is either present or not present, but there is no consistent process that occurs when a package is installed. Also, install scripts were supported only in Visual Studio. Other IDEs had to mock the Visual Studio extensibility API to attempt to support such scripts, and no support was available in common editors and command-line tools. From a693561abbeb28099701abd8de38370090a10f35 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 30 May 2017 17:08:55 -0700 Subject: [PATCH 0014/2943] bookmark --- docs/Create-Packages/project-json-Impact.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/project-json-Impact.md b/docs/Create-Packages/project-json-Impact.md index 1ad845fd3..8aac7f764 100644 --- a/docs/Create-Packages/project-json-Impact.md +++ b/docs/Create-Packages/project-json-Impact.md @@ -38,7 +38,7 @@ Traditional NuGet packages support a set of features that are not carried over t ### Install and uninstall scripts are ignored -The transitive restore model, described in [Dependency resolution](../consume-packages/dependency-resolution.md#dependency-resolution-with-project-json-and-packag- references), does not have a concept of "package install time". A package is either present or not present, but there is no consistent process that occurs when a package is installed. +The transitive restore model, described in [Dependency resolution](../consume-packages/dependency-resolution.md#dependency-resolution-with-project-json-and-package-references), does not have a concept of "package install time". A package is either present or not present, but there is no consistent process that occurs when a package is installed. Also, install scripts were supported only in Visual Studio. Other IDEs had to mock the Visual Studio extensibility API to attempt to support such scripts, and no support was available in common editors and command-line tools. From abf69a48073f7d7477af0e53aa3ad000a0dbf1b2 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 30 May 2017 17:11:51 -0700 Subject: [PATCH 0015/2943] Third time a charm --- docs/Create-Packages/project-json-Impact.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/project-json-Impact.md b/docs/Create-Packages/project-json-Impact.md index 8aac7f764..8bc5ab128 100644 --- a/docs/Create-Packages/project-json-Impact.md +++ b/docs/Create-Packages/project-json-Impact.md @@ -38,7 +38,7 @@ Traditional NuGet packages support a set of features that are not carried over t ### Install and uninstall scripts are ignored -The transitive restore model, described in [Dependency resolution](../consume-packages/dependency-resolution.md#dependency-resolution-with-project-json-and-package-references), does not have a concept of "package install time". A package is either present or not present, but there is no consistent process that occurs when a package is installed. +The transitive restore model, described in [Dependency resolution](../consume-packages/dependency-resolution.md#dependency-resolution-with-projectjson-and-package-references), does not have a concept of "package install time". A package is either present or not present, but there is no consistent process that occurs when a package is installed. Also, install scripts were supported only in Visual Studio. Other IDEs had to mock the Visual Studio extensibility API to attempt to support such scripts, and no support was available in common editors and command-line tools. From 760b6e750610b5ecf2881440f7472aaf28e6c682 Mon Sep 17 00:00:00 2001 From: csrowell Date: Wed, 31 May 2017 16:24:29 -0500 Subject: [PATCH 0016/2943] Update Package-Manager-UI.md Grammatical fixes. --- docs/Tools/Package-Manager-UI.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index e15b9847d..f82f38908 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -138,7 +138,7 @@ When checked, a modal window displays which dependent packages will be loaded wi ### Install and Update Options -**Dependency behavior** configures how NuGet decide which versions of dependent packages to installed: +**Dependency behavior** configures how NuGet decides which versions of dependent packages to install: - *Ignore dependencies* skips installing any dependencies, which typically breaks the package being installed. - *Lowest* installs the dependency with the minimal version number that meets the requirements of the primary chosen package. From 770ab1eeeceb27866f1adceb582db0d490a35d00 Mon Sep 17 00:00:00 2001 From: csrowell Date: Wed, 31 May 2017 16:30:58 -0500 Subject: [PATCH 0017/2943] Update Package-Manager-UI.md Another grammatical change. --- docs/Tools/Package-Manager-UI.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index e15b9847d..32c3d61b8 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -105,7 +105,7 @@ The NuGet Package Manager UI allows you to easily switch between package sources To manage package sources: -1. Click on the **Settings** icon in the Package Manager UI outlined below or use the **Tools > Options** command. and scroll to **NuGet Package Manager**. +1. Click on the **Settings** icon in the Package Manager UI outlined below or use the **Tools > Options** command and scroll to **NuGet Package Manager**. ![Package manager UI settings icon](media/PackageSourceSettings.png) From da975d308ca8558a66d00814bfded9021e3e730a Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 31 May 2017 17:05:28 -0700 Subject: [PATCH 0018/2943] Initial breakout of PS ref --- .../Create-NET-Standard-Packages-VS2017.md | 2 +- docs/TOC.md | 9 + docs/Tools/PowerShell-Reference.md | 406 +----------------- docs/Tools/ps-ref-add-binding-redirect.md | 70 +++ docs/Tools/ps-ref-find-package.md | 81 ++++ docs/Tools/ps-ref-get-package.md | 90 ++++ docs/Tools/ps-ref-get-project.md | 73 ++++ docs/Tools/ps-ref-install-package.md | 101 +++++ docs/Tools/ps-ref-open-packagepage.md | 83 ++++ docs/Tools/ps-ref-sync-package.md | 86 ++++ docs/Tools/ps-ref-uninstall-package.md | 80 ++++ docs/Tools/ps-ref-update-package.md | 105 +++++ 12 files changed, 789 insertions(+), 397 deletions(-) create mode 100644 docs/Tools/ps-ref-add-binding-redirect.md create mode 100644 docs/Tools/ps-ref-find-package.md create mode 100644 docs/Tools/ps-ref-get-package.md create mode 100644 docs/Tools/ps-ref-get-project.md create mode 100644 docs/Tools/ps-ref-install-package.md create mode 100644 docs/Tools/ps-ref-open-packagepage.md create mode 100644 docs/Tools/ps-ref-sync-package.md create mode 100644 docs/Tools/ps-ref-uninstall-package.md create mode 100644 docs/Tools/ps-ref-update-package.md diff --git a/docs/Guides/Create-NET-Standard-Packages-VS2017.md b/docs/Guides/Create-NET-Standard-Packages-VS2017.md index 3690b5a8e..3e08e7aa5 100644 --- a/docs/Guides/Create-NET-Standard-Packages-VS2017.md +++ b/docs/Guides/Create-NET-Standard-Packages-VS2017.md @@ -37,7 +37,7 @@ The [.NET Standard Library](https://docs.microsoft.com/dotnet/articles/standard/ This guide will walk you through creating a nuget package targeting .NET Standard Library 1.4 with Visual Studio 2017 and NuGet 4.0. 1. [Pre-requisites](#pre-requisites) -1. [Create the class library project](#create-the-net-core-class-library-project) +1. [Create the class library project](#create-the-netstandard-class-library-project) 1. [Edit metadata in the .csproj file](#edit-metadata-in-the-csproj-file) 1. [Package the component](#package-the-component) 1. [Related topics](#related-topics) diff --git a/docs/TOC.md b/docs/TOC.md index c2a5defb0..21ed735fa 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -40,6 +40,15 @@ ## [Package Manager UI](Tools/Package-Manager-UI.md) ## [Package Manager Console](Tools/Package-Manager-Console.md) ## [PowerShell Reference](Tools/PowerShell-Reference.md) +### [Add-BindingRedirect](Tools/ps-ref-add-bindingredirect.md) +### [Find-Package](Tools/ps-ref-find-package.md) +### [Get-Package](Tools/ps-ref-get-package.md) +### [Get-Project](Tools/ps-ref-get-project.md) +### [Install-Package](Tools/ps-ref-install-package.md) +### [Open-PackagePage](Tools/ps-ref-open-packagepage.md) +### [Sync-Package](Tools/ps-ref-sync-package.md) +### [Uninstall-Package](Tools/ps-ref-uninstall-package.md) +### [Update-Package](Tools/ps-ref-update-package.md) ## [dotnet Commands](Tools/dotnet-Commands.md) # Schema ## [.nuspec](Schema/nuspec.md) diff --git a/docs/Tools/PowerShell-Reference.md b/docs/Tools/PowerShell-Reference.md index 619b83cd9..64b787f89 100644 --- a/docs/Tools/PowerShell-Reference.md +++ b/docs/Tools/PowerShell-Reference.md @@ -30,19 +30,19 @@ ms.reviewer: # PowerShell reference -The Package Manager Console provides a PowerShell interface within Visual Studio to interact with NuGet. This topic is the reference for those commands; for a guide to using the console, see the [Package Manager Console](../tools/package-manager-console.md) topic. +The Package Manager Console provides a PowerShell interface within Visual Studio to interact with NuGet through the specific commands listed below. For a guide to using the console, see the [Package Manager Console](../tools/package-manager-console.md) topic. Command | Description | NuGet Version --- | --- | --- -[Add-BindingRedirect](#add-bindingredirect) | Examines all assemblies within the output path for a project and adds binding redirects to the `app.config` or `web.config` where necessary. | All -[Find-Package](#find-package) | Searches a package source using a package ID or keywords. | 3.0+ -[Get-Package](#get-package) | Retrieves the list of packages installed in the local repository, or lists packages available from a package source. | All -[Get-Project](#get-project) | Displays information about the default or specified project. | 3.0+ -[Install-Package](#install-package) | Installs a package and its dependencies into the project. | All -[Open-PackagePage](#open-packagepage) | Launches the default browser with the project, license, or report abuse URL for the specified package. | Deprecated in 3.0+ -[Sync-Package](#sync-package) | Get the version of installed package from specified project and syncs the version to the rest of projects in the solution. | 3.0+ -[Uninstall-Package](#uninstall-package) | Removes a package from a project, optionally removing its dependencies. | All -[Update-Package](#update-package) | Updates a package and its dependencies, or all packages in a project. | All +[Add-BindingRedirect](ps-ref-add-bindingredirect,md) | Examines all assemblies within the output path for a project and adds binding redirects to the `app.config` or `web.config` where necessary. | All +[Find-Package](ps-ref-find-package,md) | Searches a package source using a package ID or keywords. | 3.0+ +[Get-Package](ps-ref-get-package,md) | Retrieves the list of packages installed in the local repository, or lists packages available from a package source. | All +[Get-Project](ps-ref-get-project,md) | Displays information about the default or specified project. | 3.0+ +[Install-Package](ps-ref-install-package,md) | Installs a package and its dependencies into the project. | All +[Open-PackagePage](ps-ref-open-packagepage,md) | Launches the default browser with the project, license, or report abuse URL for the specified package. | Deprecated in 3.0+ +[Sync-Package](ps-ref-sync-package,md) | Get the version of installed package from specified project and syncs the version to the rest of projects in the solution. | 3.0+ +[Uninstall-Package](ps-ref-uninstall-package,md) | Removes a package from a project, optionally removing its dependencies. | All +[Update-Package](ps-ref-update-package,md) | Updates a package and its dependencies, or all packages in a project. | All For detailed help on any of these commands within the console, just run the following with the command name in question: @@ -63,389 +63,3 @@ Note that all Package Manager Console commands support the following [common Pow - WarningVariable For details, refer to [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216) in the PowerShell documentation. - - -## Add-BindingRedirect - -Examines all assemblies within the output path for a project and adds binding redirects to the appropriate configuration files. For additional details on what this means, see [Redirecting Assembly Versions](https://msdn.microsoft.com/library/7wd6ex19.aspx) on MSDN. - -> [!NOTE] -> NuGet 1.2+ automatically runs this command when installing a package. - -### Usage - -```ps -Add-BindingRedirect [-ProjectName ] -``` - - -### Parameters - -| | | -| --- | --- | -ProjectName | Specifies the project to which to add binding redirects, defaulting to the default project. The -ProjectName switch itself is optional. - -### Examples - -```ps -Add-BindingRedirect MyProjectName -``` - - -## Find-Package - -*Version 3.0+* - -Searches a package source using a package ID or keywords. - -### Usage - -```ps -Find-Package [] [-Source ] [-First ] [-Skip ] [-AllVersions] [-IncludePrerelease] [-ExactMatch] -``` - -### Parameters - -| | | -| --- | --- | -<keywords> | Searches the package source for packages with the keywords. Use the `-ExactMatch` switch to return only those packages whose package ID matches the keywords. If no keywords are given, Find-Package returns a list of the top 20 packages by downloads. -Source | Specifies the URL or path for the package source to search. If omitted, searched the currently selected package source. -First | Specifies the number of packages to return from the beginning of the list. If not specified, Find-Package lists 20 packages. -Skip | Skips the specified number of packages, counting from the beginning of the list -AllVersions | Displays all available versions of each package instead of only the latest version. -IncludePrerelease | Indicates whether to include prerelease packages in the list. -ExactMatch | Specified to use the keywords as a case-sensitive package ID. - -### Examples - -```ps -# List packages with the keyword Elmah available -Find-Package Elmah - -# List all versions of the jquery package -Find-Package jquery -AllVersions -ExactMatch - -# List packages with the keyword EntityFramework and version 6.1.1 -Find-Package EntityFramework -version 6.1.1 -``` - -## Get-Package - -Retrieves the list of packages installed in the local repository, or lists packages available from a package source when used with the `-ListAvailable` switch. - -### Usage - -```ps -Get-Package [-Source ] [-ListAvailable] [-Updates] [-ProjectName ] [-Filter ] [-First ] [-Skip ] [-AllVersions] [-IncludePrerelease] [-PageSize ] -``` - -With no parameters, `Get-Package` displays the list of packages installed in the default project. - -### Parameters - -| | | -| --- | --- | -Source | Specifies the URL or path of a package source. When used with -ListAvailable, defaults to nuget.org. -ListAvailable | Lists packages available from a package source, defaulting to nuget.org. If -PageSize and/or -First are not specified, this will show 50 packages. -Updates | Lists packages that have an update available from the package source. -ProjectName | Specifies the project from which to get installed packages. -Filter | Specifies a filter string used to narrow down the list of packages returned. The filter is searched for in the package ID, the description and tags. -IncludePrerelease | Indicates that prerelease packages should be included in the list. -First | Specifies the number of packages to return from the beginning of the list. If not specified, defaults to 50. -Skip | Skips the specified number of packages, counting from the beginning of the list. -AllVersions | Displays all available versions of each package instead of only the latest version. -PageSize | *(3.0+)* When used with -ListAvailable, specifies the number of packages to list before giving a prompt to continue. The command will continue listing packages as long as there are more to return. Without -PageSize, at most 50 packages are listed by default. - -### Examples - -```ps -# Lists the packages installed in the current solution -Get-Package - -# Lists packages available in the current package source -Get-Package -ListAvailable - -# Lists all packages in the current source in pages of 20 -Get-Package -ListAvailable -PageSize 20 - -# Lists packages with the Ninject keyword in the current source, up to 50 -Get-Package -ListAvailable -Filter Ninject - -# Lists packages installed in the solution that have available updates -Get-Package -Updates -``` - -## Get-Project - -Displays information about the default or specified project. - -### Usage - -```ps -Get-Project [-Name ] [-All] -``` - -### Parameters - -| | | -| --- | --- | -Name | Specifies the project to display, defaulting to the default project. The -Name switch is itself optional. -All | Displays information for every project in the solution. - -### Examples - -```ps -# Displays information for the default project -Get-Project - -# Displays information for MyProjectName -Get-Project MyProjectName - - # Displays information for all projects in the solution -Get-Project -All -``` - - -## Install-Package - -Installs a package and its dependencies into the project. - -### Usage - -```ps -Install-Package [-Id] [-Version ] [-IgnoreDependencies] [-ProjectName ] [-Source ] [-IncludePrerelease] [-FileConflictAction] [-DependencyVersion ] [-WhatIf] -``` - -In NuGet 2.8+, `Install-Package` can downgrade an existing package in your project. For example, if you have Microsoft.AspNet.MVC 5.1.0-rc1 installed, the following command would downgrade it to 5.0.0: - -```ps -Install-Package Microsoft.AspNet.MVC -Version 5.0.0. -``` - -NuGet 2.7 and earlier will give an error saying that a newer version is already installed. - -### Parameters - -| | | -| --- | --- | -Id | Specifies the package ID of the package to install. With NuGet 3.0+, the ID can be a path or URL of a `packages.config` file or a `.nupkg` file. The -Id switch itself is optional. -Version | Specifies the version of the package to install, defaulting to the latest version. -IgnoreDependencies | Installs only this package and not its dependencies. -ProjectName | Specifies the project into which to install the package, defaulting to the default project. -Source | Specifies the URL or path to a package source. If omitted, defaults to the currently selected package source. -IncludePrerelease | Indicates that prerelease packages can be installed. -FileConflictAction | Specifies the action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *IgnoreAll* (3.0+). -DependencyVersion | Specifies the version of the dependency packages to use, which can be one of the following: -| | - Lowest (default): the lowest version -| | - HighestPatch: the version with the lowest major, lowest minor, highest patch -| | - HighestMinor: the version with the lowest major, highest minor, highest patch -| | - Highest: the highest version -| | You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the Nuget.Config file. -WhatIf | Shows what would happen when running the command without actually performing the install. - -### Examples - -```ps -Install-package https://raw.githubusercontent.com/json-ld.net/master/src/JsonLD/packages.config - -Install-package c:\temp\packages.config - -Install-package https://az320820.vo.msecnd.net/packages/microsoft.aspnet.mvc.5.2.3.nupkg - -Install-package c:\temp\packages\jQuery.1.10.2.nupkg - -# Installs the latest version of Elmah from the current source -Install-Package Elmah - -# Installs Glimpse 1.0.0 into the MvcApplication1 project -Install-Package Glimpse -Version 1.0.0 -Project MvcApplication1 - -# Installs Ninject.Mvc3 but not its dependencies from c:\temp\packages -Install-Package Ninject.Mvc3 -IgnoreDependencies -Source c:\temp\packages -``` - - -## Open-PackagePage - -*Deprecated in 3.0+* - -Launches the default browser with the project, license, or report abuse URL for the specified package. - -### Usage - -```ps -Open-PackagePage [-Id] [-Version ] [-Source ] [-License ] [-ReportAbuse] [-PassThru] -``` - -### Parameters - -| | | -| --- | --- | -Id | Specifies the package ID of the desired package. The -Id switch itself is optional. -Version | Specifies the version of the package, defaulting to the latest version. -Source | Specifies the package source, defaulting to the default source. -License | Opens the browser to the package's License URL. If neither -License nor -ReportAbuse is specified, the browser opens the package's Project URL. -ReportAbuse | Opens the browser to the package's Report Abuse URL. If neither -License nor -ReportAbuse is specified, the browser opens the package's Project URL. -PassThru | Displays the selected URL but does not open it in the browser. - -### Examples - -```ps -# Opens a browser with the Ninject's package's project page -Open-PackagePage Ninject - -# Opens a browser with the Ninject's package's license page -Open-PackagePage Ninject -License - -# Opens a browser with the Ninject's package's report abuse page -Open-PackagePage Ninject -ReportAbuse - -# Assigns the license URL to the variable, $url, without launching the browser -$url = Open-PackagePage Ninject -License -WhatIf -PassThru -``` - - -## Sync-Package - -*Version 3.0+* - -Get the version of installed package from specified project and syncs the version to the rest of projects in the solution. - -### Usage - -```ps -Sync-Package [-Id] [-Version ] [-IgnoreDependencies] [-ProjectName ] [-Source ] [-IncludePrerelease] [-FileConflictAction] [-DependencyVersion ] [-WhatIf] -``` - -### Parameters - -| | | -| --- | --- | -Id | Specifies the identifier of the package to sync. The -Id switch itself is optional. -Version | Specifies the version of the package to sync, defaulting to the currently installed version. -ProjectName | Specifies the project to sync the package from, defaulting to the default project. -Source | Specifies the URL or path of a package source, defaulting to the current package source. -IncludePrerelease | Includes prerelease packages in the sync. -FileConflictAction | Specifies the action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *IgnoreAll* (3.0+). -DependencyVersion | Specifies the version of the dependency packages to use, which can be one of the following: -| | -Lowest (default): the lowest version -| | -HighestPatch: the version with the lowest major, lowest minor, highest patch -| | -HighestMinor: the version with the lowest major, highest minor, highest patch -| | -Highest: the highest version -| | You can set the default value using the [*dependencyVersion*](../Schema/nuget-config-file.md#config-section) setting in the Nuget.Config file. -WhatIf | Shows what would happen when running the command without actually performing the sync. - -### Examples - -```ps -# Syncs the Ninject package installed in the default project into the other projects in the solution -Sync-Package Ninject - -# Syncs only Microsoft.Aspnet.package to the rest of the projects, but not its dependencies -Sync-Package Microsoft.Aspnet.Mvc -IgnoreDependencies - -# Syncs jQuery.Validation and installs the highest version of jQuery (a dependency) from the package source -Sync-Package jQuery.Validation -DependencyVersion highest -``` - - -## Uninstall-Package - -Removes a package from a project, optionally removing its dependencies. - -### Usage - -```ps -Uninstall-Package [-Id] [-Version ] [-RemoveDependencies] [-ProjectName ] [-Force] [-WhatIf] -``` - -If other packages depend on this package, the command will fail unless the –Force option is specified. - - -### Parameters - -| | | -| --- | --- | -Id | Specifies the identifier of the package to uninstall. The -Id switch itself is optional. -Version | Specifies the version of the package to uninstall, defaulting to the currently installed version. -RemoveDependencies | Uninstalls the package and its unused dependencies. That is, if any dependency has another package that depends on it, it is skipped. -ProjectName | Specifies the project from which to uninstall the package, defaulting to the default project. -Force | Forces a package to be uninstalled, even if there are dependencies on it. -WhatIf | Shows what would happen when running the command without actually performing the uninstall. - -### Examples - -```ps -# Uninstalls the Elmah package from the default project -Uninstall-Package Elmah - -# Uninstalls the Elmah package and all its unused dependencies -Uninstall-Package Elmah -RemoveDependencies - -# Uninstalls the Elmah package even if another package depends on it. -Uninstall-Package Elmah -Force -``` - - -## Update-Package - -Updates a package and its dependencies, or all packages in a project. - -### Usage - -```ps -Update-Package [-Id ] [-Source ] [-IgnoreDependencies] [-ProjectName ] [-Version ] [-Safe] [-IncludePrerelease] [-Reinstall] [-FileConflictAction] [-DependencyVersion] [-WhatIf] -``` - -In NuGet 2.8+, `Update-Package` can be used to downgrade an existing package in your project. For example, if you have Microsoft.AspNet.MVC 5.1.0-rc1 installed, the following command would downgrade it to 5.0.0: - -```ps -Update-Package Microsoft.AspNet.MVC -Version 5.0.0. -``` - -NuGet 2.7 and earlier will give an error saying that a newer version is already installed. - -### Parameters - -| | | -| --- | --- | -Id | Specifies the package ID of the package to update. If omitted, updates all packages. The -Id switch itself is optional. -Source | Specifies the URL or path for a package source. -IgnoreDependencies | Skips updating any of the package's dependencies. -ProjectName | Specifies the project containing the packages to update, defaulting to all projects. -Safe | Constrains upgrades to only versions with the same Major and Minor version as the currently installed package. -ToHighestMinor | Constrains upgrades to only versions with the same Major version as the currently installed package -Version | Specifies the version to use for the upgrade, defaulting to the latest version. In NuGet 3.0+, the version value must be one of *Lowest, Highest, HighestMinor*, or *HighestPatch* (equivalent to -Safe). -IncludePrerelease | Indicates that prerelease packages can be used for the update. -Reinstall | Resintalls packages using their currently installed versions. See [Reinstalling and updating packages](../consume-packages/reinstalling-and-updating-packages.md). -FileConflictAction | Specifies the action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *IgnoreAll* (3.0+). -DependencyVersion | Specifies the version of the dependency packages to use, which can be one of the following: -| | -Lowest (default): the lowest version -| | -HighestPatch: the version with the lowest major, lowest minor, highest patch -| | -HighestMinor: the version with the lowest major, highest minor, highest patch -| | -Highest (default for Update-Package with no parameters): the highest version -| | You can set the default value using the [*dependencyVersion*](../Schema/nuget-config-file.md#config-section) setting in the Nuget.Config file. -WhatIf | Shows what would happen when running the command without actually performing the update. - -### Examples - -```ps -# Updates all packages in every project. -Update-Package - -# Updates every package in the MvcApplication1 project -Update-Package -Project MvcApplication1 - -# Updates the Elmah package in every project to the latest version -Update-Package Elmah - -# Updates the Elmah package to version 1.1.0 in every project. -Update-Package Elmah -Version 1.1.0 - -# Updates the Elmah package within the MvcApplication1 project only -Update-Package Elmah -Project MvcApplication1 - -# Updates Elmah to the highest "safe" version. For example, if Elmah version 1.0.0 of a package is installed, and versions 1.0.1, 1.0.2, and 1.1 are available in the feed, the -Safe parameter updates the package to 1.0.2 instead of 1.1 as it would otherwise. -Update-Package Elmah -Safe -``` - \ No newline at end of file diff --git a/docs/Tools/ps-ref-add-binding-redirect.md b/docs/Tools/ps-ref-add-binding-redirect.md new file mode 100644 index 000000000..c6a6d5225 --- /dev/null +++ b/docs/Tools/ps-ref-add-binding-redirect.md @@ -0,0 +1,70 @@ +--- +# required metadata + +title: NuGet Add-BindingRedirect PowerShell Reference | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 6/1/2017 +ms.topic: article +ms.prod: nuget +#ms.service: +ms.technology: null +ms.assetid: 90f4dcb0-6e5a-4948-8ea9-62e0d061d95a + +# optional metadata + +description: Reference for Add-BindingRedirect PowerShell command in the NuGet Package Manager Console in Visual Studio. +keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Add-BindingRedirect +#ROBOTS: +#audience: +#ms.devlang: +ms.reviewer: +- karann +- unnir +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: + +--- + +# Add-BindingRedirect + +Examines all assemblies within the output path for a project and adds binding redirects to the appropriate configuration files. For additional details on what this means, see [Redirecting Assembly Versions](https://msdn.microsoft.com/library/7wd6ex19.aspx) on MSDN. + +> [!NOTE] +> NuGet 1.2+ automatically runs this command when installing a package. + +## Usage + +```ps +Add-BindingRedirect [-ProjectName ] +``` + + +### Parameters + +| Parameter | Description | +| --- | --- | +| ProjectName | Specifies the project to which to add binding redirects, defaulting to the default project. The -ProjectName switch itself is optional. | + +# Common Parameters + +`Install-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): + +- Debug +- ErrorAction +- ErrorVariable +- OutBuffer +- OutVariable +- PipelineVariable +- Verbose +- WarningAction +- WarningVariable + +## Examples + +```ps +Add-BindingRedirect MyProjectName +``` + \ No newline at end of file diff --git a/docs/Tools/ps-ref-find-package.md b/docs/Tools/ps-ref-find-package.md new file mode 100644 index 000000000..0f7228cd5 --- /dev/null +++ b/docs/Tools/ps-ref-find-package.md @@ -0,0 +1,81 @@ +--- +# required metadata + +title: NuGet Find-Package PowerShell Reference | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 6/1/2017 +ms.topic: article +ms.prod: nuget +#ms.service: +ms.technology: null +ms.assetid: 2f7b8847-8259-4366-98c0-13cab88d6e1b + +# optional metadata + +description: Reference for Find-Package PowerShell command in the NuGet Package Manager Console in Visual Studio. +keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Find-Package +#ROBOTS: +#audience: +#ms.devlang: +ms.reviewer: +- karann +- unnir +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: + +--- + +# Find-Package + +*Version 3.0+* + +Searches a package source using a package ID or keywords. + +## Usage + +```ps +Find-Package [] [-Source ] [-First ] [-Skip ] [-AllVersions] [-IncludePrerelease] [-ExactMatch] +``` + +## Parameters + +| Parameter | Description | +| --- | --- | +<keywords> | Searches the package source for packages with the keywords. Use the `-ExactMatch` switch to return only those packages whose package ID matches the keywords. If no keywords are given, Find-Package returns a list of the top 20 packages by downloads. +Source | Specifies the URL or path for the package source to search. If omitted, searched the currently selected package source. +First | Specifies the number of packages to return from the beginning of the list. If not specified, Find-Package lists 20 packages. +Skip | Skips the specified number of packages, counting from the beginning of the list +AllVersions | Displays all available versions of each package instead of only the latest version. +IncludePrerelease | Indicates whether to include prerelease packages in the list. +ExactMatch | Specified to use the keywords as a case-sensitive package ID. + +## Common Parameters + +`Find-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): + +- Debug +- ErrorAction +- ErrorVariable +- OutBuffer +- OutVariable +- PipelineVariable +- Verbose +- WarningAction +- WarningVariable + +## Examples + +```ps +# List packages with the keyword Elmah available +Find-Package Elmah + +# List all versions of the jquery package +Find-Package jquery -AllVersions -ExactMatch + +# List packages with the keyword EntityFramework and version 6.1.1 +Find-Package EntityFramework -version 6.1.1 +``` + diff --git a/docs/Tools/ps-ref-get-package.md b/docs/Tools/ps-ref-get-package.md new file mode 100644 index 000000000..7be6ef573 --- /dev/null +++ b/docs/Tools/ps-ref-get-package.md @@ -0,0 +1,90 @@ +--- +# required metadata + +title: NuGet Get-Package PowerShell Reference | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 6/1/2017 +ms.topic: article +ms.prod: nuget +#ms.service: +ms.technology: null +ms.assetid: 42476008-64b3-480e-a966-98b2fa38b681 + +# optional metadata + +description: Reference for Get-Package PowerShell command in the NuGet Package Manager Console in Visual Studio. +keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Get-Package +#ROBOTS: +#audience: +#ms.devlang: +ms.reviewer: +- karann +- unnir +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: + +--- + +# Get-Package + +Retrieves the list of packages installed in the local repository, or lists packages available from a package source when used with the `-ListAvailable` switch. + +## Usage + +```ps +Get-Package [-Source ] [-ListAvailable] [-Updates] [-ProjectName ] [-Filter ] [-First ] [-Skip ] [-AllVersions] [-IncludePrerelease] [-PageSize ] +``` + +With no parameters, `Get-Package` displays the list of packages installed in the default project. + +## Parameters + +| Parameter | Description | +| --- | --- | +Source | Specifies the URL or path of a package source. When used with -ListAvailable, defaults to nuget.org. +ListAvailable | Lists packages available from a package source, defaulting to nuget.org. If -PageSize and/or -First are not specified, this will show 50 packages. +Updates | Lists packages that have an update available from the package source. +ProjectName | Specifies the project from which to get installed packages. +Filter | Specifies a filter string used to narrow down the list of packages returned. The filter is searched for in the package ID, the description and tags. +IncludePrerelease | Indicates that prerelease packages should be included in the list. +First | Specifies the number of packages to return from the beginning of the list. If not specified, defaults to 50. +Skip | Skips the specified number of packages, counting from the beginning of the list. +AllVersions | Displays all available versions of each package instead of only the latest version. +PageSize | *(3.0+)* When used with -ListAvailable, specifies the number of packages to list before giving a prompt to continue. The command will continue listing packages as long as there are more to return. Without -PageSize, at most 50 packages are listed by default. + +## Common Parameters + +`Get-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): + +- Debug +- ErrorAction +- ErrorVariable +- OutBuffer +- OutVariable +- PipelineVariable +- Verbose +- WarningAction +- WarningVariable + +## Examples + +```ps +# Lists the packages installed in the current solution +Get-Package + +# Lists packages available in the current package source +Get-Package -ListAvailable + +# Lists all packages in the current source in pages of 20 +Get-Package -ListAvailable -PageSize 20 + +# Lists packages with the Ninject keyword in the current source, up to 50 +Get-Package -ListAvailable -Filter Ninject + +# Lists packages installed in the solution that have available updates +Get-Package -Updates +``` + diff --git a/docs/Tools/ps-ref-get-project.md b/docs/Tools/ps-ref-get-project.md new file mode 100644 index 000000000..3a87e0a32 --- /dev/null +++ b/docs/Tools/ps-ref-get-project.md @@ -0,0 +1,73 @@ +--- +# required metadata + +title: NuGet Get-Project PowerShell Reference | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 6/1/2017 +ms.topic: article +ms.prod: nuget +#ms.service: +ms.technology: null +ms.assetid: 09c10ea3-ba26-4bfa-999e-de5350e6e920 + +# optional metadata + +description: Reference for GetProject PowerShell command in the NuGet Package Manager Console in Visual Studio. +keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Get-Project +#ROBOTS: +#audience: +#ms.devlang: +ms.reviewer: +- karann +- unnir +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: + +--- + +# Get-Project + +Displays information about the default or specified project. + +## Usage + +```ps +Get-Project [-Name ] [-All] +``` + +## Parameters + +| Parameter | Description | +| --- | --- | +Name | Specifies the project to display, defaulting to the default project. The -Name switch is itself optional. +All | Displays information for every project in the solution. + +## Common Parameters + +`Get-Project` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): + +- Debug +- ErrorAction +- ErrorVariable +- OutBuffer +- OutVariable +- PipelineVariable +- Verbose +- WarningAction +- WarningVariable + +## Examples + +```ps +# Displays information for the default project +Get-Project + +# Displays information for MyProjectName +Get-Project MyProjectName + + # Displays information for all projects in the solution +Get-Project -All +``` \ No newline at end of file diff --git a/docs/Tools/ps-ref-install-package.md b/docs/Tools/ps-ref-install-package.md new file mode 100644 index 000000000..e3435ac5c --- /dev/null +++ b/docs/Tools/ps-ref-install-package.md @@ -0,0 +1,101 @@ +--- +# required metadata + +title: NuGet Install-Package PowerShell Reference | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 6/1/2017 +ms.topic: article +ms.prod: nuget +#ms.service: +ms.technology: null +ms.assetid: 879db0ef-6b72-4a4a-bb68-f9e3a00f64b8 + +# optional metadata + +description: Reference for Install-Package PowerShell command in the NuGet Package Manager Console in Visual Studio. +keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Install-Package +#ROBOTS: +#audience: +#ms.devlang: +ms.reviewer: +- karann +- unnir +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: + +--- + +# Install-Package + +Installs a package and its dependencies into the project. + +## Usage + +```ps +Install-Package [-Id] [-Version ] [-IgnoreDependencies] [-ProjectName ] [-Source ] [-IncludePrerelease] [-FileConflictAction] [-DependencyVersion ] [-WhatIf] +``` + +In NuGet 2.8+, `Install-Package` can downgrade an existing package in your project. For example, if you have Microsoft.AspNet.MVC 5.1.0-rc1 installed, the following command would downgrade it to 5.0.0: + +```ps +Install-Package Microsoft.AspNet.MVC -Version 5.0.0. +``` + +NuGet 2.7 and earlier will give an error saying that a newer version is already installed. + +## Parameters + +| Parameter | Description | +| --- | --- | +Id | Specifies the package ID of the package to install. With NuGet 3.0+, the ID can be a path or URL of a `packages.config` file or a `.nupkg` file. The -Id switch itself is optional. +Version | Specifies the version of the package to install, defaulting to the latest version. +IgnoreDependencies | Installs only this package and not its dependencies. +ProjectName | Specifies the project into which to install the package, defaulting to the default project. +Source | Specifies the URL or path to a package source. If omitted, defaults to the currently selected package source. +IncludePrerelease | Indicates that prerelease packages can be installed. +FileConflictAction | Specifies the action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *IgnoreAll* (3.0+). +DependencyVersion | Specifies the version of the dependency packages to use, which can be one of the following: +| | - Lowest (default): the lowest version +| | - HighestPatch: the version with the lowest major, lowest minor, highest patch +| | - HighestMinor: the version with the lowest major, highest minor, highest patch +| | - Highest: the highest version +| | You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the Nuget.Config file. +WhatIf | Shows what would happen when running the command without actually performing the install. + +## Common Parameters + +`Install-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): + +- Debug +- ErrorAction +- ErrorVariable +- OutBuffer +- OutVariable +- PipelineVariable +- Verbose +- WarningAction +- WarningVariable + +## Examples + +```ps +Install-package https://raw.githubusercontent.com/json-ld.net/master/src/JsonLD/packages.config + +Install-package c:\temp\packages.config + +Install-package https://az320820.vo.msecnd.net/packages/microsoft.aspnet.mvc.5.2.3.nupkg + +Install-package c:\temp\packages\jQuery.1.10.2.nupkg + +# Installs the latest version of Elmah from the current source +Install-Package Elmah + +# Installs Glimpse 1.0.0 into the MvcApplication1 project +Install-Package Glimpse -Version 1.0.0 -Project MvcApplication1 + +# Installs Ninject.Mvc3 but not its dependencies from c:\temp\packages +Install-Package Ninject.Mvc3 -IgnoreDependencies -Source c:\temp\packages +``` diff --git a/docs/Tools/ps-ref-open-packagepage.md b/docs/Tools/ps-ref-open-packagepage.md new file mode 100644 index 000000000..66d323482 --- /dev/null +++ b/docs/Tools/ps-ref-open-packagepage.md @@ -0,0 +1,83 @@ +--- +# required metadata + +title: NuGet Open-PackagePage PowerShell Reference | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 6/1/2017 +ms.topic: article +ms.prod: nuget +#ms.service: +ms.technology: null +ms.assetid: e9f84530-6b3d-43b0-a832-0acb2997f6fc + +# optional metadata + +description: Reference for Open-PackagePage PowerShell command in the NuGet Package Manager Console in Visual Studio. +keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Open-PackagePage +#ROBOTS: +#audience: +#ms.devlang: +ms.reviewer: +- karann +- unnir +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: + +--- + +# Open-PackagePage + +*Deprecated in 3.0+* + +Launches the default browser with the project, license, or report abuse URL for the specified package. + +## Usage + +```ps +Open-PackagePage [-Id] [-Version ] [-Source ] [-License ] [-ReportAbuse] [-PassThru] +``` + +## Parameters + +| Parameter | Description | +| --- | --- | +Id | Specifies the package ID of the desired package. The -Id switch itself is optional. +Version | Specifies the version of the package, defaulting to the latest version. +Source | Specifies the package source, defaulting to the default source. +License | Opens the browser to the package's License URL. If neither -License nor -ReportAbuse is specified, the browser opens the package's Project URL. +ReportAbuse | Opens the browser to the package's Report Abuse URL. If neither -License nor -ReportAbuse is specified, the browser opens the package's Project URL. +PassThru | Displays the selected URL but does not open it in the browser. + +## Common Parameters + +`Open-PackagePage` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): + +- Debug +- ErrorAction +- ErrorVariable +- OutBuffer +- OutVariable +- PipelineVariable +- Verbose +- WarningAction +- WarningVariable + +## Examples + +```ps +# Opens a browser with the Ninject's package's project page +Open-PackagePage Ninject + +# Opens a browser with the Ninject's package's license page +Open-PackagePage Ninject -License + +# Opens a browser with the Ninject's package's report abuse page +Open-PackagePage Ninject -ReportAbuse + +# Assigns the license URL to the variable, $url, without launching the browser +$url = Open-PackagePage Ninject -License -WhatIf -PassThru +``` + \ No newline at end of file diff --git a/docs/Tools/ps-ref-sync-package.md b/docs/Tools/ps-ref-sync-package.md new file mode 100644 index 000000000..3f2f95efc --- /dev/null +++ b/docs/Tools/ps-ref-sync-package.md @@ -0,0 +1,86 @@ +--- +# required metadata + +title: NuGet Sync-Package PowerShell Reference | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 6/1/2017 +ms.topic: article +ms.prod: nuget +#ms.service: +ms.technology: null +ms.assetid: 1b980b93-fa58-430c-b663-78ce069b1603 + +# optional metadata + +description: Reference for Sync-Package PowerShell command in the NuGet Package Manager Console in Visual Studio. +keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Sync-Package +#ROBOTS: +#audience: +#ms.devlang: +ms.reviewer: +- karann +- unnir +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: + +--- + +# Sync-Package + +*Version 3.0+* + +Get the version of installed package from specified project and syncs the version to the rest of projects in the solution. + +## Usage + +```ps +Sync-Package [-Id] [-Version ] [-IgnoreDependencies] [-ProjectName ] [-Source ] [-IncludePrerelease] [-FileConflictAction] [-DependencyVersion ] [-WhatIf] +``` + +## Parameters + +| Parameter | Description | +| --- | --- | +Id | Specifies the identifier of the package to sync. The -Id switch itself is optional. +Version | Specifies the version of the package to sync, defaulting to the currently installed version. +ProjectName | Specifies the project to sync the package from, defaulting to the default project. +Source | Specifies the URL or path of a package source, defaulting to the current package source. +IncludePrerelease | Includes prerelease packages in the sync. +FileConflictAction | Specifies the action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *IgnoreAll* (3.0+). +DependencyVersion | Specifies the version of the dependency packages to use, which can be one of the following: +| | -Lowest (default): the lowest version +| | -HighestPatch: the version with the lowest major, lowest minor, highest patch +| | -HighestMinor: the version with the lowest major, highest minor, highest patch +| | -Highest: the highest version +| | You can set the default value using the [*dependencyVersion*](../Schema/nuget-config-file.md#config-section) setting in the Nuget.Config file. +WhatIf | Shows what would happen when running the command without actually performing the sync. + +## Common Parameters + +`Sync-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): + +- Debug +- ErrorAction +- ErrorVariable +- OutBuffer +- OutVariable +- PipelineVariable +- Verbose +- WarningAction +- WarningVariable + +## Examples + +```ps +# Syncs the Ninject package installed in the default project into the other projects in the solution +Sync-Package Ninject + +# Syncs only Microsoft.Aspnet.package to the rest of the projects, but not its dependencies +Sync-Package Microsoft.Aspnet.Mvc -IgnoreDependencies + +# Syncs jQuery.Validation and installs the highest version of jQuery (a dependency) from the package source +Sync-Package jQuery.Validation -DependencyVersion highest +``` diff --git a/docs/Tools/ps-ref-uninstall-package.md b/docs/Tools/ps-ref-uninstall-package.md new file mode 100644 index 000000000..cd57b6e28 --- /dev/null +++ b/docs/Tools/ps-ref-uninstall-package.md @@ -0,0 +1,80 @@ +--- +# required metadata + +title: NuGet Uninstall-Package PowerShell Reference | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 6/1/2017 +ms.topic: article +ms.prod: nuget +#ms.service: +ms.technology: null +ms.assetid: f4f5dc79-8e8e-4012-8986-873a5d9283d9 + +# optional metadata + +description: Reference for Uninstall-Package PowerShell command in the NuGet Package Manager Console in Visual Studio. +keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Uninstall-Package +#ROBOTS: +#audience: +#ms.devlang: +ms.reviewer: +- karann +- unnir +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: + +--- + +# Uninstall-Package + +Removes a package from a project, optionally removing its dependencies. + +## Usage + +```ps +Uninstall-Package [-Id] [-Version ] [-RemoveDependencies] [-ProjectName ] [-Force] [-WhatIf] +``` + +If other packages depend on this package, the command will fail unless the –Force option is specified. + + +## Parameters + +| Parameter | Description | +| --- | --- | +Id | Specifies the identifier of the package to uninstall. The -Id switch itself is optional. +Version | Specifies the version of the package to uninstall, defaulting to the currently installed version. +RemoveDependencies | Uninstalls the package and its unused dependencies. That is, if any dependency has another package that depends on it, it is skipped. +ProjectName | Specifies the project from which to uninstall the package, defaulting to the default project. +Force | Forces a package to be uninstalled, even if there are dependencies on it. +WhatIf | Shows what would happen when running the command without actually performing the uninstall. + +## Common Parameters + +`Uninstall-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): + +- Debug +- ErrorAction +- ErrorVariable +- OutBuffer +- OutVariable +- PipelineVariable +- Verbose +- WarningAction +- WarningVariable + +## Examples + +```ps +# Uninstalls the Elmah package from the default project +Uninstall-Package Elmah + +# Uninstalls the Elmah package and all its unused dependencies +Uninstall-Package Elmah -RemoveDependencies + +# Uninstalls the Elmah package even if another package depends on it. +Uninstall-Package Elmah -Force +``` diff --git a/docs/Tools/ps-ref-update-package.md b/docs/Tools/ps-ref-update-package.md new file mode 100644 index 000000000..9bcf3cbba --- /dev/null +++ b/docs/Tools/ps-ref-update-package.md @@ -0,0 +1,105 @@ +--- +# required metadata + +title: NuGet Update-Package PowerShell Reference | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 6/1/2017 +ms.topic: article +ms.prod: nuget +#ms.service: +ms.technology: null +ms.assetid: 90f4dcb0-6e5a-4948-8ea9-62e0d061d95a + +# optional metadata + +description: Reference for Update-Package PowerShell command in the NuGet Package Manager Console in Visual Studio. +keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Update-Package +#ROBOTS: +#audience: +#ms.devlang: +ms.reviewer: +- karann +- unnir +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: + +--- + +# Update-Package + +Updates a package and its dependencies, or all packages in a project. + +## Usage + +```ps +Update-Package [[-Id] ] [-Source ] [-IgnoreDependencies] [-ProjectName ] [-Version ] [-Safe] [-IncludePrerelease] [-Reinstall] [-FileConflictAction] [-DependencyVersion] [-WhatIf] +``` + +In NuGet 2.8+, `Update-Package` can be used to downgrade an existing package in your project. For example, if you have Microsoft.AspNet.MVC 5.1.0-rc1 installed, the following command would downgrade it to 5.0.0: + +```ps +Update-Package Microsoft.AspNet.MVC -Version 5.0.0. +``` + +NuGet 2.7 and earlier will give an error saying that a newer version is already installed. + +## Parameters + +| Parameter | Description | +| --- | --- | +| Id | The ID of the package to update. If omitted, updates all packages. The `-Id` switch itself is optional. | +| Source | The URL or path for a package source. | +| IgnoreDependencies | Skips updating any of the package's dependencies. | +| ProjectName | The filename of the project containing the packages to update, defaulting to all projects. | +| Safe | Constrains upgrades to only versions with the same Major and Minor version as the currently installed package. | +| ToHighestMinor | Constrains upgrades to only versions with the same Major version as the currently installed package. | +| Version | The version to use for the upgrade, defaulting to the latest version. In NuGet 3.0+, the version value must be one of *Lowest, Highest, HighestMinor*, or *HighestPatch* (equivalent to `-Safe`). | +| IncludePrerelease | Indicates that prerelease packages can be used for the update. | +| Reinstall | Resintalls packages using their currently installed versions. See [Reinstalling and updating packages](../consume-packages/reinstalling-and-updating-packages.md). | +| FileConflictAction | The action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *IgnoreAll* (3.0+). | +| DependencyVersion | The version of the dependency packages to use, which can be one of the following:
+
  • -Lowest (default): the lowest version
  • +
  • -HighestPatch: the version with the lowest major, lowest minor, highest patch
  • +
  • -HighestMinor: the version with the lowest major, highest minor, highest patch
  • +
  • -Highest (default for Update-Package with no parameters): the highest version
+ You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | +| WhatIf | Shows what would happen when running the command without actually performing the update. | + +### Common Parameters + +`Update-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): + +- Debug +- ErrorAction +- ErrorVariable +- OutBuffer +- OutVariable +- PipelineVariable +- Verbose +- WarningAction +- WarningVariable + +### Examples + +```ps +# Updates all packages in every project. +Update-Package + +# Updates every package in the MvcApplication1 project +Update-Package -Project MvcApplication1 + +# Updates the Elmah package in every project to the latest version +Update-Package Elmah + +# Updates the Elmah package to version 1.1.0 in every project showing optional -Id usage +Update-Package -Id Elmah -Version 1.1.0 + +# Updates the Elmah package within the MvcApplication1 project only +Update-Package Elmah -Project MvcApplication1 + +# Updates Elmah to the highest "safe" version. For example, if Elmah version 1.0.0 of a package is installed, and versions 1.0.1, 1.0.2, and 1.1 are available in the feed, the -Safe parameter updates the package to 1.0.2 instead of 1.1 as it would otherwise. +Update-Package Elmah -Safe +``` \ No newline at end of file From e9ac652e543c7ca8317241e6544cda16770a1f91 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 31 May 2017 17:10:49 -0700 Subject: [PATCH 0019/2943] Link fixes --- docs/Tools/PowerShell-Reference.md | 18 +++++++++--------- ...direct.md => ps-ref-add-bindingredirect.md} | 0 2 files changed, 9 insertions(+), 9 deletions(-) rename docs/Tools/{ps-ref-add-binding-redirect.md => ps-ref-add-bindingredirect.md} (100%) diff --git a/docs/Tools/PowerShell-Reference.md b/docs/Tools/PowerShell-Reference.md index 64b787f89..476b56fe4 100644 --- a/docs/Tools/PowerShell-Reference.md +++ b/docs/Tools/PowerShell-Reference.md @@ -34,15 +34,15 @@ The Package Manager Console provides a PowerShell interface within Visual Studio Command | Description | NuGet Version --- | --- | --- -[Add-BindingRedirect](ps-ref-add-bindingredirect,md) | Examines all assemblies within the output path for a project and adds binding redirects to the `app.config` or `web.config` where necessary. | All -[Find-Package](ps-ref-find-package,md) | Searches a package source using a package ID or keywords. | 3.0+ -[Get-Package](ps-ref-get-package,md) | Retrieves the list of packages installed in the local repository, or lists packages available from a package source. | All -[Get-Project](ps-ref-get-project,md) | Displays information about the default or specified project. | 3.0+ -[Install-Package](ps-ref-install-package,md) | Installs a package and its dependencies into the project. | All -[Open-PackagePage](ps-ref-open-packagepage,md) | Launches the default browser with the project, license, or report abuse URL for the specified package. | Deprecated in 3.0+ -[Sync-Package](ps-ref-sync-package,md) | Get the version of installed package from specified project and syncs the version to the rest of projects in the solution. | 3.0+ -[Uninstall-Package](ps-ref-uninstall-package,md) | Removes a package from a project, optionally removing its dependencies. | All -[Update-Package](ps-ref-update-package,md) | Updates a package and its dependencies, or all packages in a project. | All +[Add-BindingRedirect](ps-ref-add-bindingredirect.md) | Examines all assemblies within the output path for a project and adds binding redirects to the `app.config` or `web.config` where necessary. | All +[Find-Package](ps-ref-find-package.md) | Searches a package source using a package ID or keywords. | 3.0+ +[Get-Package](ps-ref-get-package.md) | Retrieves the list of packages installed in the local repository, or lists packages available from a package source. | All +[Get-Project](ps-ref-get-project.md) | Displays information about the default or specified project. | 3.0+ +[Install-Package](ps-ref-install-package.md) | Installs a package and its dependencies into the project. | All +[Open-PackagePage](ps-ref-open-packagepage.md) | Launches the default browser with the project, license, or report abuse URL for the specified package. | Deprecated in 3.0+ +[Sync-Package](ps-ref-sync-package.md) | Get the version of installed package from specified project and syncs the version to the rest of projects in the solution. | 3.0+ +[Uninstall-Package](ps-ref-uninstall-package.md) | Removes a package from a project, optionally removing its dependencies. | All +[Update-Package](ps-ref-update-package.md) | Updates a package and its dependencies, or all packages in a project. | All For detailed help on any of these commands within the console, just run the following with the command name in question: diff --git a/docs/Tools/ps-ref-add-binding-redirect.md b/docs/Tools/ps-ref-add-bindingredirect.md similarity index 100% rename from docs/Tools/ps-ref-add-binding-redirect.md rename to docs/Tools/ps-ref-add-bindingredirect.md From c0e78897a4fec1a593d7b40a5ef7fa9924004484 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 1 Jun 2017 11:42:21 -0700 Subject: [PATCH 0020/2943] Align PS ref to the tool's help --- docs/Policies/NuGet-FAQ.md | 2 +- docs/Tools/ps-ref-add-bindingredirect.md | 33 +++++------- docs/Tools/ps-ref-find-package.md | 42 +++++++-------- docs/Tools/ps-ref-get-package.md | 52 +++++++++--------- docs/Tools/ps-ref-get-project.md | 26 +++------ docs/Tools/ps-ref-install-package.md | 69 +++++++++++------------- docs/Tools/ps-ref-open-packagepage.md | 39 ++++++-------- docs/Tools/ps-ref-sync-package.md | 61 ++++++++++----------- docs/Tools/ps-ref-uninstall-package.md | 35 +++++------- docs/Tools/ps-ref-update-package.md | 49 ++++++++--------- 10 files changed, 173 insertions(+), 235 deletions(-) diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index 4dbe183e0..b6f525776 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -94,7 +94,7 @@ Yes, it's possible to add custom commands to `nuget.exe`, as described in [Rob R **How do I get access to the DTE object in the Package Manager console?** -The top-level object in the Visual Studio automation object model is called the DTE object. The console provides this through a variable named `$DTE`. For more information, see [Automation Model Overview](https://docs.microsoft.com/visualstudio/extensibility/internals/automation-model-overview) in the Visual Studio Extensibility documentation. +The top-level object in the Visual Studio automation object model is called the DTE (Development Tools Environment) object. The console provides this through a variable named `$DTE`. For more information, see [Automation Model Overview](https://docs.microsoft.com/visualstudio/extensibility/internals/automation-model-overview) in the Visual Studio Extensibility documentation. **I try to cast the $DTE variable to the type DTE2, but I get an error: Cannot convert the "EnvDTE.DTEClass" value of type "EnvDTE.DTEClass" to type "EnvDTE80.DTE2". What's wrong?** diff --git a/docs/Tools/ps-ref-add-bindingredirect.md b/docs/Tools/ps-ref-add-bindingredirect.md index c6a6d5225..ecb11baff 100644 --- a/docs/Tools/ps-ref-add-bindingredirect.md +++ b/docs/Tools/ps-ref-add-bindingredirect.md @@ -30,41 +30,32 @@ ms.reviewer: # Add-BindingRedirect -Examines all assemblies within the output path for a project and adds binding redirects to the appropriate configuration files. For additional details on what this means, see [Redirecting Assembly Versions](https://msdn.microsoft.com/library/7wd6ex19.aspx) on MSDN. +Examines all assemblies within the output path for a project and adds binding redirects to the application (or web) configuration file where necessary. For additional details on what this means, see [Redirecting Assembly Versions](https://msdn.microsoft.com/library/7wd6ex19.aspx) on MSDN. -> [!NOTE] +> [!Note] > NuGet 1.2+ automatically runs this command when installing a package. -## Usage +## Syntax ```ps -Add-BindingRedirect [-ProjectName ] +Add-BindingRedirect [-ProjectName] [] ``` +## Parameters -### Parameters - -| Parameter | Description | +| Parameter | Description | | --- | --- | -| ProjectName | Specifies the project to which to add binding redirects, defaulting to the default project. The -ProjectName switch itself is optional. | - -# Common Parameters +| ProjectName | The project to which to add binding redirects. The -ProjectName switch itself is optional. | -`Install-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): +## Common Parameters -- Debug -- ErrorAction -- ErrorVariable -- OutBuffer -- OutVariable -- PipelineVariable -- Verbose -- WarningAction -- WarningVariable +`Add-BindingRedirect` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): Debug, Error Action, ErrorVariable, OutBuffer, OutVariable, PipelineVariable, Verbose, WarningAction, and WarningVariable. ## Examples ```ps -Add-BindingRedirect MyProjectName +Add-BindingRedirect MyProject + +Add-BindingRedirect -ProjectName MyProject ``` \ No newline at end of file diff --git a/docs/Tools/ps-ref-find-package.md b/docs/Tools/ps-ref-find-package.md index 0f7228cd5..d3c68c2c9 100644 --- a/docs/Tools/ps-ref-find-package.md +++ b/docs/Tools/ps-ref-find-package.md @@ -32,50 +32,44 @@ ms.reviewer: *Version 3.0+* -Searches a package source using a package ID or keywords. +Gets the set of remote packages with specified ID or keywords from the package source. -## Usage +## Syntax ```ps -Find-Package [] [-Source ] [-First ] [-Skip ] [-AllVersions] [-IncludePrerelease] [-ExactMatch] +Find-Package [-Id] -Source [-AllVersions] [-First []] + [-Skip ] [-IncludePrerelease] [-ExactMatch] [-StartWith] [] ``` ## Parameters -| Parameter | Description | +| Parameter | Description | | --- | --- | -<keywords> | Searches the package source for packages with the keywords. Use the `-ExactMatch` switch to return only those packages whose package ID matches the keywords. If no keywords are given, Find-Package returns a list of the top 20 packages by downloads. -Source | Specifies the URL or path for the package source to search. If omitted, searched the currently selected package source. -First | Specifies the number of packages to return from the beginning of the list. If not specified, Find-Package lists 20 packages. -Skip | Skips the specified number of packages, counting from the beginning of the list -AllVersions | Displays all available versions of each package instead of only the latest version. -IncludePrerelease | Indicates whether to include prerelease packages in the list. -ExactMatch | Specified to use the keywords as a case-sensitive package ID. +| Id/<keywords> | (Required) Keywords to use when searching the package source. Use `-ExactMatch` to return only those packages whose package ID matches the keywords. If no keywords are given, `Find-Package` returns a list of the top 20 packages by downloads, or the number specified by -First. Note that -Id is optional and a no-op. | +| Source | The URL or folder path for the package source to search. Local folder paths can be absolute, or relative to the current folder. If omitted, `Find-Package` searches the currently selected package source. | +| AllVersions | Displays all available versions of each package instead of only the latest version. | +| First | The number of packages to return from the beginning of the list; the default is 20. | +| Skip | Omits the first <int> packages from the displayed list. | +| IncludePrerelease | Includes prerelease packages in the results. | +| ExactMatch | Specified to use <keywords> as a case-sensitive package ID. | +| StartWith | Returns packages whose package ID begins with <keywords>. | ## Common Parameters -`Find-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): - -- Debug -- ErrorAction -- ErrorVariable -- OutBuffer -- OutVariable -- PipelineVariable -- Verbose -- WarningAction -- WarningVariable +`Find-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): Debug, Error Action, ErrorVariable, OutBuffer, OutVariable, PipelineVariable, Verbose, WarningAction, and WarningVariable. ## Examples ```ps -# List packages with the keyword Elmah available +# List available packages with the keyword Elmah Find-Package Elmah +# List packages whose ID begins with Elmah +Find-Package Elmah -StartWith + # List all versions of the jquery package Find-Package jquery -AllVersions -ExactMatch # List packages with the keyword EntityFramework and version 6.1.1 Find-Package EntityFramework -version 6.1.1 ``` - diff --git a/docs/Tools/ps-ref-get-package.md b/docs/Tools/ps-ref-get-package.md index 7be6ef573..283e958cc 100644 --- a/docs/Tools/ps-ref-get-package.md +++ b/docs/Tools/ps-ref-get-package.md @@ -30,44 +30,36 @@ ms.reviewer: # Get-Package -Retrieves the list of packages installed in the local repository, or lists packages available from a package source when used with the `-ListAvailable` switch. +Retrieves the list of packages installed in the local repository, lists packages available from a package source when used with the -ListAvailable switch, or lists available updates when used with the -Update switch. -## Usage +## Syntax ```ps -Get-Package [-Source ] [-ListAvailable] [-Updates] [-ProjectName ] [-Filter ] [-First ] [-Skip ] [-AllVersions] [-IncludePrerelease] [-PageSize ] +Get-Package -Source [-ListAvailable] [-Updates] [-ProjectName ] + [-Filter ] [-First ] [-Skip ] [-AllVersions] [-IncludePrerelease] + [-PageSize] [] ``` With no parameters, `Get-Package` displays the list of packages installed in the default project. ## Parameters -| Parameter | Description | +| Parameter | Description | | --- | --- | -Source | Specifies the URL or path of a package source. When used with -ListAvailable, defaults to nuget.org. -ListAvailable | Lists packages available from a package source, defaulting to nuget.org. If -PageSize and/or -First are not specified, this will show 50 packages. -Updates | Lists packages that have an update available from the package source. -ProjectName | Specifies the project from which to get installed packages. -Filter | Specifies a filter string used to narrow down the list of packages returned. The filter is searched for in the package ID, the description and tags. -IncludePrerelease | Indicates that prerelease packages should be included in the list. -First | Specifies the number of packages to return from the beginning of the list. If not specified, defaults to 50. -Skip | Skips the specified number of packages, counting from the beginning of the list. -AllVersions | Displays all available versions of each package instead of only the latest version. -PageSize | *(3.0+)* When used with -ListAvailable, specifies the number of packages to list before giving a prompt to continue. The command will continue listing packages as long as there are more to return. Without -PageSize, at most 50 packages are listed by default. +| Source | The URL or folder path for the package . Local folder paths can be absolute, or relative to the current folder. If omitted, `Get-Package` searches the currently selected package source. When used with -ListAvailable, defaults to nuget.org. | +| ListAvailable | Lists packages available from a package source, defaulting to nuget.org. Shows a default of 50 packages unless -PageSize and/or -First are specified. | +| Updates | Lists packages that have an update available from the package source. | +| ProjectName | The project from which to get installed packages. If omitted, returns installed projects for the entire solution. | +| Filter | A filter string used to narrow down the list of packages by applying it to the package ID, description, and tags. | +| First | The number of packages to return from the beginning of the list. If not specified, defaults to 50. | +| Skip | Omits the first <int> packages from the displayed list. | +| AllVersions | Displays all available versions of each package instead of only the latest version. | +| IncludePrerelease | Includes prerelease packages in the results. | +| PageSize | *(3.0+)* When used with -ListAvailable (required), the number of packages to list before giving a prompt to continue. | ## Common Parameters -`Get-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): - -- Debug -- ErrorAction -- ErrorVariable -- OutBuffer -- OutVariable -- PipelineVariable -- Verbose -- WarningAction -- WarningVariable +`Get-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): Debug, Error Action, ErrorVariable, OutBuffer, OutVariable, PipelineVariable, Verbose, WarningAction, and WarningVariable. ## Examples @@ -75,16 +67,22 @@ PageSize | *(3.0+)* When used with -ListAvailable, specifies the number of packa # Lists the packages installed in the current solution Get-Package +# Lists the packages installed in a project +Get-Package -ProjectName MyProject + # Lists packages available in the current package source Get-Package -ListAvailable -# Lists all packages in the current source in pages of 20 -Get-Package -ListAvailable -PageSize 20 +# Lists 30 packages at a time from the current source, and prompts to continue if more are available +Get-Package -ListAvailable -PageSize 30 # Lists packages with the Ninject keyword in the current source, up to 50 Get-Package -ListAvailable -Filter Ninject # Lists packages installed in the solution that have available updates Get-Package -Updates + +# Lists packages installed in a specific project that have available updates +Get-Package -Updates -ProjectName MyProject ``` diff --git a/docs/Tools/ps-ref-get-project.md b/docs/Tools/ps-ref-get-project.md index 3a87e0a32..9e0995bfe 100644 --- a/docs/Tools/ps-ref-get-project.md +++ b/docs/Tools/ps-ref-get-project.md @@ -30,34 +30,24 @@ ms.reviewer: # Get-Project -Displays information about the default or specified project. +Displays information about the default or specified project. `Get-Project` specifically returns a referent to the Visual Studio DTE (Development Tools Environment) object for the project. -## Usage +## Syntax ```ps -Get-Project [-Name ] [-All] +Get-Project [[-Name] ] [-All] [] ``` ## Parameters -| Parameter | Description | +| Parameter | Description | | --- | --- | -Name | Specifies the project to display, defaulting to the default project. The -Name switch is itself optional. -All | Displays information for every project in the solution. +| Name | Specifies the project to display, defaulting to the default project selected in the Package Manager Console. The -Name switch is itself optional. | +| All | Displays information for every project in the solution; the order of projects is not deterministic. | ## Common Parameters -`Get-Project` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): - -- Debug -- ErrorAction -- ErrorVariable -- OutBuffer -- OutVariable -- PipelineVariable -- Verbose -- WarningAction -- WarningVariable +`Get-Project` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): Debug, Error Action, ErrorVariable, OutBuffer, OutVariable, PipelineVariable, Verbose, WarningAction, and WarningVariable. ## Examples @@ -65,7 +55,7 @@ All | Displays information for every project in the solution. # Displays information for the default project Get-Project -# Displays information for MyProjectName +# Displays information for a project in the solution Get-Project MyProjectName # Displays information for all projects in the solution diff --git a/docs/Tools/ps-ref-install-package.md b/docs/Tools/ps-ref-install-package.md index e3435ac5c..fa3770438 100644 --- a/docs/Tools/ps-ref-install-package.md +++ b/docs/Tools/ps-ref-install-package.md @@ -30,12 +30,14 @@ ms.reviewer: # Install-Package -Installs a package and its dependencies into the project. +Installs a package and its dependencies into a project. -## Usage +## Syntax ```ps -Install-Package [-Id] [-Version ] [-IgnoreDependencies] [-ProjectName ] [-Source ] [-IncludePrerelease] [-FileConflictAction] [-DependencyVersion ] [-WhatIf] +Install-Package [-Id] [-IgnoreDependencies] [-ProjectName ] [[-Source] ] + [[-Version] ] [-IncludePrerelease] [-FileConflictAction] [-DependencyVersion] [-WhatIf] [] + ``` In NuGet 2.8+, `Install-Package` can downgrade an existing package in your project. For example, if you have Microsoft.AspNet.MVC 5.1.0-rc1 installed, the following command would downgrade it to 5.0.0: @@ -48,49 +50,31 @@ NuGet 2.7 and earlier will give an error saying that a newer version is already ## Parameters -| Parameter | Description | +| Parameter | Description | | --- | --- | -Id | Specifies the package ID of the package to install. With NuGet 3.0+, the ID can be a path or URL of a `packages.config` file or a `.nupkg` file. The -Id switch itself is optional. -Version | Specifies the version of the package to install, defaulting to the latest version. -IgnoreDependencies | Installs only this package and not its dependencies. -ProjectName | Specifies the project into which to install the package, defaulting to the default project. -Source | Specifies the URL or path to a package source. If omitted, defaults to the currently selected package source. -IncludePrerelease | Indicates that prerelease packages can be installed. -FileConflictAction | Specifies the action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *IgnoreAll* (3.0+). -DependencyVersion | Specifies the version of the dependency packages to use, which can be one of the following: -| | - Lowest (default): the lowest version -| | - HighestPatch: the version with the lowest major, lowest minor, highest patch -| | - HighestMinor: the version with the lowest major, highest minor, highest patch -| | - Highest: the highest version -| | You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the Nuget.Config file. -WhatIf | Shows what would happen when running the command without actually performing the install. +| Id | The package ID of the package to install. (*3.0+*) The ID can be a path or URL of a `packages.config` file or a `.nupkg` file. The -Id switch itself is optional. | +| IgnoreDependencies | Install only this package and not its dependencies. | +| ProjectName | The project into which to install the package, defaulting to the default project. | +| Source | The URL or folder path for the package source to search. Local folder paths can be absolute, or relative to the current folder. If omitted, `Install-Package` searches the currently selected package source. | +| Version | The version of the package to install, defaulting to the latest version. | +| IncludePrerelease | Considers prerelease packages for the install. If omitted, only stable packages are considered. | +| FileConflictAction | The action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *(3.0+)* *IgnoreAll*. | +| DependencyVersion | The version of the dependency packages to use, which can be one of the following:
+
  • -Lowest (default): the lowest version
  • +
  • -HighestPatch: the version with the lowest major, lowest minor, highest patch
  • +
  • -HighestMinor: the version with the lowest major, highest minor, highest patch
  • +
  • -Highest (default for Update-Package with no parameters): the highest version
+ You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | +| WhatIf | Shows what would happen when running the command without actually performing the install. | ## Common Parameters -`Install-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): - -- Debug -- ErrorAction -- ErrorVariable -- OutBuffer -- OutVariable -- PipelineVariable -- Verbose -- WarningAction -- WarningVariable +`Install-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): Debug, Error Action, ErrorVariable, OutBuffer, OutVariable, PipelineVariable, Verbose, WarningAction, and WarningVariable. ## Examples ```ps -Install-package https://raw.githubusercontent.com/json-ld.net/master/src/JsonLD/packages.config - -Install-package c:\temp\packages.config - -Install-package https://az320820.vo.msecnd.net/packages/microsoft.aspnet.mvc.5.2.3.nupkg - -Install-package c:\temp\packages\jQuery.1.10.2.nupkg - -# Installs the latest version of Elmah from the current source +# Installs the latest version of Elmah from the current source into the default project Install-Package Elmah # Installs Glimpse 1.0.0 into the MvcApplication1 project @@ -98,4 +82,13 @@ Install-Package Glimpse -Version 1.0.0 -Project MvcApplication1 # Installs Ninject.Mvc3 but not its dependencies from c:\temp\packages Install-Package Ninject.Mvc3 -IgnoreDependencies -Source c:\temp\packages + +# Installs the package listed on the online packages.config into the current project. +Install-package https://raw.githubusercontent.com/json-ld.net/master/src/JsonLD/packages.config + +# Installs jquery 1.10.2 package, using the .nupkg file under local path of c:\temp\packages. +Install-package c:\temp\packages\jQuery.1.10.2.nupkg + +# Installs the specific online package +Install-package https://az320820.vo.msecnd.net/packages/microsoft.aspnet.mvc.5.2.3.nupkg ``` diff --git a/docs/Tools/ps-ref-open-packagepage.md b/docs/Tools/ps-ref-open-packagepage.md index 66d323482..82f2ebbbe 100644 --- a/docs/Tools/ps-ref-open-packagepage.md +++ b/docs/Tools/ps-ref-open-packagepage.md @@ -34,50 +34,41 @@ ms.reviewer: Launches the default browser with the project, license, or report abuse URL for the specified package. -## Usage +## Syntax ```ps -Open-PackagePage [-Id] [-Version ] [-Source ] [-License ] [-ReportAbuse] [-PassThru] +Open-PackagePage [-Id] [-Version] [-Source] [-License] [-ReportAbuse] + [-PassThru] [] ``` ## Parameters -| Parameter | Description | +| Parameter | Description | | --- | --- | -Id | Specifies the package ID of the desired package. The -Id switch itself is optional. -Version | Specifies the version of the package, defaulting to the latest version. -Source | Specifies the package source, defaulting to the default source. -License | Opens the browser to the package's License URL. If neither -License nor -ReportAbuse is specified, the browser opens the package's Project URL. -ReportAbuse | Opens the browser to the package's Report Abuse URL. If neither -License nor -ReportAbuse is specified, the browser opens the package's Project URL. -PassThru | Displays the selected URL but does not open it in the browser. +| Id | The package ID of the desired package. The -Id switch itself is optional. | +| Version | The version of the package, defaulting to the latest version. | +| Source | The package source, defaulting to the selected source in the source drop-down. | +| License | Opens the browser to the package's License URL. If neither -License nor -ReportAbuse is specified, the browser opens the package's Project URL. | +| ReportAbuse | Opens the browser to the package's Report Abuse URL. If neither -License nor -ReportAbuse is specified, the browser opens the package's Project URL. | +| PassThru | Displays the URL but does not open it in the browser. | ## Common Parameters -`Open-PackagePage` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): - -- Debug -- ErrorAction -- ErrorVariable -- OutBuffer -- OutVariable -- PipelineVariable -- Verbose -- WarningAction -- WarningVariable +`Open-PackagePage` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): Debug, Error Action, ErrorVariable, OutBuffer, OutVariable, PipelineVariable, Verbose, WarningAction, and WarningVariable. ## Examples ```ps -# Opens a browser with the Ninject's package's project page +# Opens a browser with the Ninject package's project page Open-PackagePage Ninject -# Opens a browser with the Ninject's package's license page +# Opens a browser with the Ninject package's license page Open-PackagePage Ninject -License -# Opens a browser with the Ninject's package's report abuse page +# Opens a browser with the Ninject package's report abuse page Open-PackagePage Ninject -ReportAbuse # Assigns the license URL to the variable, $url, without launching the browser -$url = Open-PackagePage Ninject -License -WhatIf -PassThru +$url = Open-PackagePage Ninject -License -PassThru ``` \ No newline at end of file diff --git a/docs/Tools/ps-ref-sync-package.md b/docs/Tools/ps-ref-sync-package.md index 3f2f95efc..2669a2b8d 100644 --- a/docs/Tools/ps-ref-sync-package.md +++ b/docs/Tools/ps-ref-sync-package.md @@ -32,55 +32,52 @@ ms.reviewer: *Version 3.0+* -Get the version of installed package from specified project and syncs the version to the rest of projects in the solution. +Gets the version of installed package from specified (or default) project and synchronizes the version to the rest of projects in the solution. -## Usage +## Syntax ```ps -Sync-Package [-Id] [-Version ] [-IgnoreDependencies] [-ProjectName ] [-Source ] [-IncludePrerelease] [-FileConflictAction] [-DependencyVersion ] [-WhatIf] +Sync-Package [-Id] [-IgnoreDependencies] [-ProjectName ] [[-Version] ] + [[-Source] ] [-IncludePrerelease] [-FileConflictAction] [-DependencyVersion] + [-WhatIf] [] ``` ## Parameters -| Parameter | Description | +| Parameter | Description | | --- | --- | -Id | Specifies the identifier of the package to sync. The -Id switch itself is optional. -Version | Specifies the version of the package to sync, defaulting to the currently installed version. -ProjectName | Specifies the project to sync the package from, defaulting to the default project. -Source | Specifies the URL or path of a package source, defaulting to the current package source. -IncludePrerelease | Includes prerelease packages in the sync. -FileConflictAction | Specifies the action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *IgnoreAll* (3.0+). -DependencyVersion | Specifies the version of the dependency packages to use, which can be one of the following: -| | -Lowest (default): the lowest version -| | -HighestPatch: the version with the lowest major, lowest minor, highest patch -| | -HighestMinor: the version with the lowest major, highest minor, highest patch -| | -Highest: the highest version -| | You can set the default value using the [*dependencyVersion*](../Schema/nuget-config-file.md#config-section) setting in the Nuget.Config file. -WhatIf | Shows what would happen when running the command without actually performing the sync. +| Id | The identifier of the package to sync. The -Id switch itself is optional. | +| IgnoreDependencies | Install only this package and not its dependencies. | +| ProjectName | The project to sync the package from, defaulting to the default project. | +| Version | The version of the package to sync, defaulting to the currently installed version. | +| Source | The URL or folder path for the package source to search. Local folder paths can be absolute, or relative to the current folder. If omitted, `Sync-Package` searches the currently selected package source. | +| IncludePrerelease | Includes prerelease packages in the sync. | +| FileConflictAction | The action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *(3.0+)* *IgnoreAll*. | +| DependencyVersion | The version of the dependency packages to use, which can be one of the following:
+
  • -Lowest (default): the lowest version
  • +
  • -HighestPatch: the version with the lowest major, lowest minor, highest patch
  • +
  • -HighestMinor: the version with the lowest major, highest minor, highest patch
  • +
  • -Highest (default for Update-Package with no parameters): the highest version
+ You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | +| WhatIf | Shows what would happen when running the command without actually performing the sync. | -## Common Parameters -`Sync-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): +## Common Parameters -- Debug -- ErrorAction -- ErrorVariable -- OutBuffer -- OutVariable -- PipelineVariable -- Verbose -- WarningAction -- WarningVariable +`Sync-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): Debug, Error Action, ErrorVariable, OutBuffer, OutVariable, PipelineVariable, Verbose, WarningAction, and WarningVariable. ## Examples ```ps -# Syncs the Ninject package installed in the default project into the other projects in the solution -Sync-Package Ninject +# Sync the Elmah package installed in the default project into the other projects in the solution +Sync-Package Elmah + +# Sync the Elmah package installed in the ClassLibrary1 project into other projects in the solution +Sync-Package Elmah -ProjectName ClassLibrary1 -# Syncs only Microsoft.Aspnet.package to the rest of the projects, but not its dependencies +# Sync Microsoft.Aspnet.package but not its dependencies into the other projects in the solution Sync-Package Microsoft.Aspnet.Mvc -IgnoreDependencies -# Syncs jQuery.Validation and installs the highest version of jQuery (a dependency) from the package source +# Sync jQuery.Validation and install the highest version of jQuery (a dependency) from the package source Sync-Package jQuery.Validation -DependencyVersion highest ``` diff --git a/docs/Tools/ps-ref-uninstall-package.md b/docs/Tools/ps-ref-uninstall-package.md index cd57b6e28..6cd1ab058 100644 --- a/docs/Tools/ps-ref-uninstall-package.md +++ b/docs/Tools/ps-ref-uninstall-package.md @@ -30,12 +30,13 @@ ms.reviewer: # Uninstall-Package -Removes a package from a project, optionally removing its dependencies. +Removes a package from a project, optionally removing its dependencies. If other packages depend on this package, the command will fail unless the –Force option is specified. -## Usage +## Syntax ```ps -Uninstall-Package [-Id] [-Version ] [-RemoveDependencies] [-ProjectName ] [-Force] [-WhatIf] +Uninstall-Package [-Id] [-RemoveDependencies] [-ProjectName ] [-Force] + [-Version ] [-WhatIf] [] ``` If other packages depend on this package, the command will fail unless the –Force option is specified. @@ -43,28 +44,18 @@ If other packages depend on this package, the command will fail unless the –Fo ## Parameters -| Parameter | Description | +| Parameter | Description | | --- | --- | -Id | Specifies the identifier of the package to uninstall. The -Id switch itself is optional. -Version | Specifies the version of the package to uninstall, defaulting to the currently installed version. -RemoveDependencies | Uninstalls the package and its unused dependencies. That is, if any dependency has another package that depends on it, it is skipped. -ProjectName | Specifies the project from which to uninstall the package, defaulting to the default project. -Force | Forces a package to be uninstalled, even if there are dependencies on it. -WhatIf | Shows what would happen when running the command without actually performing the uninstall. +| Id | The identifier of the package to uninstall. The -Id switch itself is optional. | +| Version | The version of the package to uninstall, defaulting to the currently installed version. | +| RemoveDependencies | Uninstall the package and its unused dependencies. That is, if any dependency has another package that depends on it, it is skipped. | +| ProjectName | The project from which to uninstall the package, defaulting to the default project. | +| Force | Forces a package to be uninstalled, even if other packages depend on it. | +| WhatIf | Shows what would happen when running the command without actually performing the uninstall. | ## Common Parameters -`Uninstall-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): - -- Debug -- ErrorAction -- ErrorVariable -- OutBuffer -- OutVariable -- PipelineVariable -- Verbose -- WarningAction -- WarningVariable +`Uninstall-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): Debug, Error Action, ErrorVariable, OutBuffer, OutVariable, PipelineVariable, Verbose, WarningAction, and WarningVariable. ## Examples @@ -75,6 +66,6 @@ Uninstall-Package Elmah # Uninstalls the Elmah package and all its unused dependencies Uninstall-Package Elmah -RemoveDependencies -# Uninstalls the Elmah package even if another package depends on it. +# Uninstalls the Elmah package even if another package depends on it Uninstall-Package Elmah -Force ``` diff --git a/docs/Tools/ps-ref-update-package.md b/docs/Tools/ps-ref-update-package.md index 9bcf3cbba..0cdbeeb03 100644 --- a/docs/Tools/ps-ref-update-package.md +++ b/docs/Tools/ps-ref-update-package.md @@ -30,12 +30,14 @@ ms.reviewer: # Update-Package -Updates a package and its dependencies, or all packages in a project. +Updates a package and its dependencies, or all packages in a project, to a newer version. -## Usage +## Syntax ```ps -Update-Package [[-Id] ] [-Source ] [-IgnoreDependencies] [-ProjectName ] [-Version ] [-Safe] [-IncludePrerelease] [-Reinstall] [-FileConflictAction] [-DependencyVersion] [-WhatIf] +Update-Package [-Id] [-IgnoreDependencies] [-ProjectName ] [-Version ] + [-Safe] [-Source ] [-IncludePrerelease] [-Reinstall] [-FileConflictAction] [-DependencyVersion] + [-ToHighestPatch] [-ToHighestMinor] [-WhatIf] [] ``` In NuGet 2.8+, `Update-Package` can be used to downgrade an existing package in your project. For example, if you have Microsoft.AspNet.MVC 5.1.0-rc1 installed, the following command would downgrade it to 5.0.0: @@ -48,16 +50,15 @@ NuGet 2.7 and earlier will give an error saying that a newer version is already ## Parameters -| Parameter | Description | +| Parameter | Description | | --- | --- | -| Id | The ID of the package to update. If omitted, updates all packages. The `-Id` switch itself is optional. | -| Source | The URL or path for a package source. | -| IgnoreDependencies | Skips updating any of the package's dependencies. | -| ProjectName | The filename of the project containing the packages to update, defaulting to all projects. | -| Safe | Constrains upgrades to only versions with the same Major and Minor version as the currently installed package. | -| ToHighestMinor | Constrains upgrades to only versions with the same Major version as the currently installed package. | +| Id | The package Id of the package to update. If omitted, updates all packages. The -Id switch itself is optional. | +| IgnoreDependencies | Skips updating the package's dependencies. | +| ProjectName | The name of the project containing the packages to update, defaulting to all projects. | | Version | The version to use for the upgrade, defaulting to the latest version. In NuGet 3.0+, the version value must be one of *Lowest, Highest, HighestMinor*, or *HighestPatch* (equivalent to `-Safe`). | -| IncludePrerelease | Indicates that prerelease packages can be used for the update. | +| Safe | Constrains upgrades to only versions with the same Major and Minor version as the currently installed package. | +| Source | The URL or folder path for the package source to search. Local folder paths can be absolute, or relative to the current folder. If omitted, `Uninstall-Package` searches the currently selected package source. | +| IncludePrerelease | Includes prerelease packages for updates. | | Reinstall | Resintalls packages using their currently installed versions. See [Reinstalling and updating packages](../consume-packages/reinstalling-and-updating-packages.md). | | FileConflictAction | The action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *IgnoreAll* (3.0+). | | DependencyVersion | The version of the dependency packages to use, which can be one of the following:
@@ -66,26 +67,18 @@ NuGet 2.7 and earlier will give an error saying that a newer version is already
  • -HighestMinor: the version with the lowest major, highest minor, highest patch
  • -Highest (default for Update-Package with no parameters): the highest version
  • You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | +| ToHighestPatch | Constrains upgrades to only versions with the same Minor version as the currently installed package. | +| ToHighestMinor | Constrains upgrades to only versions with the same Major version as the currently installed package. | | WhatIf | Shows what would happen when running the command without actually performing the update. | ### Common Parameters -`Update-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): - -- Debug -- ErrorAction -- ErrorVariable -- OutBuffer -- OutVariable -- PipelineVariable -- Verbose -- WarningAction -- WarningVariable +`Update-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): Debug, Error Action, ErrorVariable, OutBuffer, OutVariable, PipelineVariable, Verbose, WarningAction, and WarningVariable. ### Examples ```ps -# Updates all packages in every project. +# Updates all packages in every project Update-Package # Updates every package in the MvcApplication1 project @@ -97,9 +90,9 @@ Update-Package Elmah # Updates the Elmah package to version 1.1.0 in every project showing optional -Id usage Update-Package -Id Elmah -Version 1.1.0 -# Updates the Elmah package within the MvcApplication1 project only -Update-Package Elmah -Project MvcApplication1 - -# Updates Elmah to the highest "safe" version. For example, if Elmah version 1.0.0 of a package is installed, and versions 1.0.1, 1.0.2, and 1.1 are available in the feed, the -Safe parameter updates the package to 1.0.2 instead of 1.1 as it would otherwise. -Update-Package Elmah -Safe +# Updates the Elmah package within the MvcApplication1 project to the highest "safe" version. +# For example, if Elmah version 1.0.0 of a package is installed, and versions 1.0.1, 1.0.2, +# and 1.1 are available in the feed, the -Safe parameter updates the package to 1.0.2 instead +# of 1.1 as it would otherwise. +Update-Package Elmah -Project MvcApplication1 -Safe ``` \ No newline at end of file From 96789b02287bbf402951fd3a12e479faaafb3fbd Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 1 Jun 2017 11:53:16 -0700 Subject: [PATCH 0021/2943] Add note about pipeline input and wildcards --- docs/Tools/ps-ref-add-bindingredirect.md | 4 +++- docs/Tools/ps-ref-find-package.md | 2 ++ docs/Tools/ps-ref-get-package.md | 2 ++ docs/Tools/ps-ref-get-project.md | 2 ++ docs/Tools/ps-ref-install-package.md | 4 +++- docs/Tools/ps-ref-open-packagepage.md | 2 ++ docs/Tools/ps-ref-sync-package.md | 3 ++- docs/Tools/ps-ref-uninstall-package.md | 4 +++- docs/Tools/ps-ref-update-package.md | 4 +++- 9 files changed, 22 insertions(+), 5 deletions(-) diff --git a/docs/Tools/ps-ref-add-bindingredirect.md b/docs/Tools/ps-ref-add-bindingredirect.md index ecb11baff..2e9249d17 100644 --- a/docs/Tools/ps-ref-add-bindingredirect.md +++ b/docs/Tools/ps-ref-add-bindingredirect.md @@ -45,7 +45,9 @@ Add-BindingRedirect [-ProjectName] [] | Parameter | Description | | --- | --- | -| ProjectName | The project to which to add binding redirects. The -ProjectName switch itself is optional. | +| ProjectName | (Required) The project to which to add binding redirects. The -ProjectName switch itself is optional. | + +None of these parameters accept pipeline input or wildcard characters. ## Common Parameters diff --git a/docs/Tools/ps-ref-find-package.md b/docs/Tools/ps-ref-find-package.md index d3c68c2c9..640f25dfa 100644 --- a/docs/Tools/ps-ref-find-package.md +++ b/docs/Tools/ps-ref-find-package.md @@ -54,6 +54,8 @@ Find-Package [-Id] -Source [-AllVersions] [-First []] | ExactMatch | Specified to use <keywords> as a case-sensitive package ID. | | StartWith | Returns packages whose package ID begins with <keywords>. | +None of these parameters accept pipeline input or wildcard characters. + ## Common Parameters `Find-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): Debug, Error Action, ErrorVariable, OutBuffer, OutVariable, PipelineVariable, Verbose, WarningAction, and WarningVariable. diff --git a/docs/Tools/ps-ref-get-package.md b/docs/Tools/ps-ref-get-package.md index 283e958cc..e71ba9609 100644 --- a/docs/Tools/ps-ref-get-package.md +++ b/docs/Tools/ps-ref-get-package.md @@ -57,6 +57,8 @@ With no parameters, `Get-Package` displays the list of packages installed in the | IncludePrerelease | Includes prerelease packages in the results. | | PageSize | *(3.0+)* When used with -ListAvailable (required), the number of packages to list before giving a prompt to continue. | +None of these parameters accept pipeline input or wildcard characters. + ## Common Parameters `Get-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): Debug, Error Action, ErrorVariable, OutBuffer, OutVariable, PipelineVariable, Verbose, WarningAction, and WarningVariable. diff --git a/docs/Tools/ps-ref-get-project.md b/docs/Tools/ps-ref-get-project.md index 9e0995bfe..6054e3f8d 100644 --- a/docs/Tools/ps-ref-get-project.md +++ b/docs/Tools/ps-ref-get-project.md @@ -45,6 +45,8 @@ Get-Project [[-Name] ] [-All] [] | Name | Specifies the project to display, defaulting to the default project selected in the Package Manager Console. The -Name switch is itself optional. | | All | Displays information for every project in the solution; the order of projects is not deterministic. | +None of these parameters accept pipeline input or wildcard characters. + ## Common Parameters `Get-Project` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): Debug, Error Action, ErrorVariable, OutBuffer, OutVariable, PipelineVariable, Verbose, WarningAction, and WarningVariable. diff --git a/docs/Tools/ps-ref-install-package.md b/docs/Tools/ps-ref-install-package.md index fa3770438..c2d011ab6 100644 --- a/docs/Tools/ps-ref-install-package.md +++ b/docs/Tools/ps-ref-install-package.md @@ -52,7 +52,7 @@ NuGet 2.7 and earlier will give an error saying that a newer version is already | Parameter | Description | | --- | --- | -| Id | The package ID of the package to install. (*3.0+*) The ID can be a path or URL of a `packages.config` file or a `.nupkg` file. The -Id switch itself is optional. | +| Id | (Required) The identifier of the package to install. (*3.0+*) The identifier can be a path or URL of a `packages.config` file or a `.nupkg` file. The -Id switch itself is optional. | | IgnoreDependencies | Install only this package and not its dependencies. | | ProjectName | The project into which to install the package, defaulting to the default project. | | Source | The URL or folder path for the package source to search. Local folder paths can be absolute, or relative to the current folder. If omitted, `Install-Package` searches the currently selected package source. | @@ -67,6 +67,8 @@ NuGet 2.7 and earlier will give an error saying that a newer version is already You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | | WhatIf | Shows what would happen when running the command without actually performing the install. | +None of these parameters accept pipeline input or wildcard characters. + ## Common Parameters `Install-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): Debug, Error Action, ErrorVariable, OutBuffer, OutVariable, PipelineVariable, Verbose, WarningAction, and WarningVariable. diff --git a/docs/Tools/ps-ref-open-packagepage.md b/docs/Tools/ps-ref-open-packagepage.md index 82f2ebbbe..6b67e0c04 100644 --- a/docs/Tools/ps-ref-open-packagepage.md +++ b/docs/Tools/ps-ref-open-packagepage.md @@ -52,6 +52,8 @@ Open-PackagePage [-Id] [-Version] [-Source] [-License] [-ReportAbuse] | ReportAbuse | Opens the browser to the package's Report Abuse URL. If neither -License nor -ReportAbuse is specified, the browser opens the package's Project URL. | | PassThru | Displays the URL but does not open it in the browser. | +None of these parameters accept pipeline input or wildcard characters. + ## Common Parameters `Open-PackagePage` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): Debug, Error Action, ErrorVariable, OutBuffer, OutVariable, PipelineVariable, Verbose, WarningAction, and WarningVariable. diff --git a/docs/Tools/ps-ref-sync-package.md b/docs/Tools/ps-ref-sync-package.md index 2669a2b8d..164e8654a 100644 --- a/docs/Tools/ps-ref-sync-package.md +++ b/docs/Tools/ps-ref-sync-package.md @@ -46,7 +46,7 @@ Sync-Package [-Id] [-IgnoreDependencies] [-ProjectName ] [[-Ver | Parameter | Description | | --- | --- | -| Id | The identifier of the package to sync. The -Id switch itself is optional. | +| Id | (Required) The identifier of the package to sync. The -Id switch itself is optional. | | IgnoreDependencies | Install only this package and not its dependencies. | | ProjectName | The project to sync the package from, defaulting to the default project. | | Version | The version of the package to sync, defaulting to the currently installed version. | @@ -61,6 +61,7 @@ Sync-Package [-Id] [-IgnoreDependencies] [-ProjectName ] [[-Ver You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | | WhatIf | Shows what would happen when running the command without actually performing the sync. | +None of these parameters accept pipeline input or wildcard characters. ## Common Parameters diff --git a/docs/Tools/ps-ref-uninstall-package.md b/docs/Tools/ps-ref-uninstall-package.md index 6cd1ab058..3e4e785ab 100644 --- a/docs/Tools/ps-ref-uninstall-package.md +++ b/docs/Tools/ps-ref-uninstall-package.md @@ -46,13 +46,15 @@ If other packages depend on this package, the command will fail unless the –Fo | Parameter | Description | | --- | --- | -| Id | The identifier of the package to uninstall. The -Id switch itself is optional. | +| Id | (Required) The identifier of the package to uninstall. The -Id switch itself is optional. | | Version | The version of the package to uninstall, defaulting to the currently installed version. | | RemoveDependencies | Uninstall the package and its unused dependencies. That is, if any dependency has another package that depends on it, it is skipped. | | ProjectName | The project from which to uninstall the package, defaulting to the default project. | | Force | Forces a package to be uninstalled, even if other packages depend on it. | | WhatIf | Shows what would happen when running the command without actually performing the uninstall. | +None of these parameters accept pipeline input or wildcard characters. + ## Common Parameters `Uninstall-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): Debug, Error Action, ErrorVariable, OutBuffer, OutVariable, PipelineVariable, Verbose, WarningAction, and WarningVariable. diff --git a/docs/Tools/ps-ref-update-package.md b/docs/Tools/ps-ref-update-package.md index 0cdbeeb03..364de519b 100644 --- a/docs/Tools/ps-ref-update-package.md +++ b/docs/Tools/ps-ref-update-package.md @@ -52,7 +52,7 @@ NuGet 2.7 and earlier will give an error saying that a newer version is already | Parameter | Description | | --- | --- | -| Id | The package Id of the package to update. If omitted, updates all packages. The -Id switch itself is optional. | +| Id | (Required) The identifier of the package to update. If omitted, updates all packages. The -Id switch itself is optional. | | IgnoreDependencies | Skips updating the package's dependencies. | | ProjectName | The name of the project containing the packages to update, defaulting to all projects. | | Version | The version to use for the upgrade, defaulting to the latest version. In NuGet 3.0+, the version value must be one of *Lowest, Highest, HighestMinor*, or *HighestPatch* (equivalent to `-Safe`). | @@ -71,6 +71,8 @@ NuGet 2.7 and earlier will give an error saying that a newer version is already | ToHighestMinor | Constrains upgrades to only versions with the same Major version as the currently installed package. | | WhatIf | Shows what would happen when running the command without actually performing the update. | +None of these parameters accept pipeline input or wildcard characters. + ### Common Parameters `Update-Package` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): Debug, Error Action, ErrorVariable, OutBuffer, OutVariable, PipelineVariable, Verbose, WarningAction, and WarningVariable. From 9c033ced3cb03cc370f892a09ee5edc516250123 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 1 Jun 2017 12:00:43 -0700 Subject: [PATCH 0022/2943] Update links into PS ref --- .../Reinstalling-and-Updating-Packages.md | 4 ++-- docs/Tools/Package-Manager-Console.md | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index edb3b7e54..b32ceb56d 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -32,7 +32,7 @@ ms.reviewer: There are a number of situations, described below under [When to Reinstall a Package](#when-to-reinstall-a-package), where references to a package might get broken within a Visual Studio project. In these cases, uninstalling and then reinstalling the same version of the package will restore those reference to working order. -Being mindful of the [Considerations](#considerations) described later, you can easily reinstall any package using the [Update-Package command](../Tools/PowerShell-Reference.md#update-package) in the Visual Studio Package Manager Console (**Tools** > **NuGet Package Manager** > **Package Manager Console**): +Being mindful of the [Considerations](#considerations) described later, you can easily reinstall any package using the [Update-Package command](../Tools/ps-ref-update-package.md) in the Visual Studio Package Manager Console (**Tools** > **NuGet Package Manager** > **Package Manager Console**): ```ps Update-Package –reinstall @@ -52,7 +52,7 @@ To update all packages in a specific project, use the `-ProjectName` argument: Update-Package application-project.csproj ``` -Using `Update-Package` by itself, with no other arguments, will update all packages in all projects in the current folder. See the [Update-Package command](../Tools/PowerShell-Reference.md#update-package) reference for complete usage details. +Using `Update-Package` by itself, with no other arguments, will update all packages in all projects in the current folder. See the [Update-Package command](../Tools/ps-ref-update-package.md) reference for complete usage details. Updating packages in a project or solution using `project.json` or [package references in project files](../Consume-Packages/Package-References-in-Project-Files.md) always updates to the latest version of the package (excluding pre-release packages). Projects that use `packages.config` can, if desired, limit update versions as described below in[Constraining upgrade versions](#constraining-upgrade-versions). diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index 2a5db61f3..0bd6eba31 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -1,11 +1,11 @@ --- # required metadata -title: NuGet Package Manager Console Reference | Microsoft Docs +title: NuGet Package Manager Console Guide | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 2/8/2017 +ms.date: 6/1/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -59,7 +59,7 @@ In this topic: ## Finding a package -In the console, [`Get-Package -ListAvailable`](../tools/powershell-reference.md#get-package) see all the packages available from the selected source. For nuget.org, the list will contain thousands of packages, so it's helpful to use the `-Filter` switch along with `-PageSize`. In NuGet 3.0 and later, you can instead use the [`Find-Package`](../tools/powershell-reference.md#find-package) command that is better suited to this operation. +In the console, [`Get-Package -ListAvailable`](../tools/ps-ref-get-package.md) see all the packages available from the selected source. For nuget.org, the list will contain thousands of packages, so it's helpful to use the `-Filter` switch along with `-PageSize`. In NuGet 3.0 and later, you can instead use the [`Find-Package`](../tools/ps-ref-find-package.md) command that is better suited to this operation. Examples: @@ -85,7 +85,7 @@ Find-Package jquery -AllVersions -ExactMatch ## Installing a package -Once you know the identifier of the package you want to install use [`Install-Package`](../tools/powershell-reference.md#install-package), such as `Install-Package elmah`. +Once you know the identifier of the package you want to install use [`Install-Package`](../tools/ps-ref-install-package.md), such as `Install-Package elmah`. NuGet downloads the package from the specified package source and installs it in the default project of the solution, unless you specify another project using the `-ProjectName` switch. @@ -100,9 +100,9 @@ Installing a package performs the following actions: ## Uninstalling a package -If you do not already know the name of the package you want to remove, use the [`Get-Package`](../tools/powershell-reference.md#get-package) command with no parameters to see all of the currently-installed packages. +If you do not already know the name of the package you want to remove, use the [`Get-Package`](../tools/ps-ref-get-package.md) command with no parameters to see all of the currently-installed packages. -To uninstall a package, use [`Uninstall-Package`](../tools/powershell-reference.md#uninstall-package) with the package ID, such as `Uninstall-Package jQuery`. +To uninstall a package, use [`Uninstall-Package`](../tools/ps-ref-uninstall-package.md) with the package ID, such as `Uninstall-Package jQuery`. Uninstalling a package performs the following actions: @@ -114,9 +114,9 @@ Uninstalling a package performs the following actions: ## Updating a package -The [`Get-Package -updates`](../tools/powershell-reference.md#get-package) command checks if there are newer versions available for any installed packages. +The [`Get-Package -updates`](../tools/ps-ref-get-package.md) command checks if there are newer versions available for any installed packages. -To update a package, use [`Update-Package`](../tools/powershell-reference.md#update-package) with the package ID, such as `Update-Package jQuery`. +To update a package, use [`Update-Package`](../tools/ps-ref-update-package.md) with the package ID, such as `Update-Package jQuery`. ## Extending the Package Manager Console From b983f649eb8a3d7cb1b62fadd3b62d3aa7a434a2 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 1 Jun 2017 12:11:25 -0700 Subject: [PATCH 0023/2943] Tweaks from staging review --- docs/Tools/PowerShell-Reference.md | 4 ++-- docs/Tools/ps-ref-find-package.md | 2 +- docs/Tools/ps-ref-install-package.md | 14 +++++++------- docs/Tools/ps-ref-sync-package.md | 10 +++++----- docs/Tools/ps-ref-update-package.md | 16 ++++++++-------- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/Tools/PowerShell-Reference.md b/docs/Tools/PowerShell-Reference.md index 476b56fe4..f628fb469 100644 --- a/docs/Tools/PowerShell-Reference.md +++ b/docs/Tools/PowerShell-Reference.md @@ -44,10 +44,10 @@ Command | Description | NuGet Version [Uninstall-Package](ps-ref-uninstall-package.md) | Removes a package from a project, optionally removing its dependencies. | All [Update-Package](ps-ref-update-package.md) | Updates a package and its dependencies, or all packages in a project. | All -For detailed help on any of these commands within the console, just run the following with the command name in question: +For complete, detailed help on any of these commands within the console, just run the following with the command name in question: ```ps -Get-Help +Get-Help -full ``` Note that all Package Manager Console commands support the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): diff --git a/docs/Tools/ps-ref-find-package.md b/docs/Tools/ps-ref-find-package.md index 640f25dfa..a817e8c06 100644 --- a/docs/Tools/ps-ref-find-package.md +++ b/docs/Tools/ps-ref-find-package.md @@ -45,7 +45,7 @@ Find-Package [-Id] -Source [-AllVersions] [-First []] | Parameter | Description | | --- | --- | -| Id/<keywords> | (Required) Keywords to use when searching the package source. Use `-ExactMatch` to return only those packages whose package ID matches the keywords. If no keywords are given, `Find-Package` returns a list of the top 20 packages by downloads, or the number specified by -First. Note that -Id is optional and a no-op. | +| Id <keywords> | (Required) Keywords to use when searching the package source. Use -ExactMatch to return only those packages whose package ID matches the keywords. If no keywords are given, `Find-Package` returns a list of the top 20 packages by downloads, or the number specified by -First. Note that -Id is optional and a no-op. | | Source | The URL or folder path for the package source to search. Local folder paths can be absolute, or relative to the current folder. If omitted, `Find-Package` searches the currently selected package source. | | AllVersions | Displays all available versions of each package instead of only the latest version. | | First | The number of packages to return from the beginning of the list; the default is 20. | diff --git a/docs/Tools/ps-ref-install-package.md b/docs/Tools/ps-ref-install-package.md index c2d011ab6..aa61627f9 100644 --- a/docs/Tools/ps-ref-install-package.md +++ b/docs/Tools/ps-ref-install-package.md @@ -36,8 +36,8 @@ Installs a package and its dependencies into a project. ```ps Install-Package [-Id] [-IgnoreDependencies] [-ProjectName ] [[-Source] ] - [[-Version] ] [-IncludePrerelease] [-FileConflictAction] [-DependencyVersion] [-WhatIf] [] - + [[-Version] ] [-IncludePrerelease] [-FileConflictAction] [-DependencyVersion] + [-WhatIf] [] ``` In NuGet 2.8+, `Install-Package` can downgrade an existing package in your project. For example, if you have Microsoft.AspNet.MVC 5.1.0-rc1 installed, the following command would downgrade it to 5.0.0: @@ -60,11 +60,11 @@ NuGet 2.7 and earlier will give an error saying that a newer version is already | IncludePrerelease | Considers prerelease packages for the install. If omitted, only stable packages are considered. | | FileConflictAction | The action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *(3.0+)* *IgnoreAll*. | | DependencyVersion | The version of the dependency packages to use, which can be one of the following:
    -
    • -Lowest (default): the lowest version
    • -
    • -HighestPatch: the version with the lowest major, lowest minor, highest patch
    • -
    • -HighestMinor: the version with the lowest major, highest minor, highest patch
    • -
    • -Highest (default for Update-Package with no parameters): the highest version
    - You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | +
    • -Lowest (default): the lowest version
    • +
    • -HighestPatch: the version with the lowest major, lowest minor, highest patch
    • +
    • -HighestMinor: the version with the lowest major, highest minor, highest patch
    • +
    • -Highest (default for Update-Package with no parameters): the highest version
    +You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | | WhatIf | Shows what would happen when running the command without actually performing the install. | None of these parameters accept pipeline input or wildcard characters. diff --git a/docs/Tools/ps-ref-sync-package.md b/docs/Tools/ps-ref-sync-package.md index 164e8654a..d12b8dd19 100644 --- a/docs/Tools/ps-ref-sync-package.md +++ b/docs/Tools/ps-ref-sync-package.md @@ -54,11 +54,11 @@ Sync-Package [-Id] [-IgnoreDependencies] [-ProjectName ] [[-Ver | IncludePrerelease | Includes prerelease packages in the sync. | | FileConflictAction | The action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *(3.0+)* *IgnoreAll*. | | DependencyVersion | The version of the dependency packages to use, which can be one of the following:
    -
    • -Lowest (default): the lowest version
    • -
    • -HighestPatch: the version with the lowest major, lowest minor, highest patch
    • -
    • -HighestMinor: the version with the lowest major, highest minor, highest patch
    • -
    • -Highest (default for Update-Package with no parameters): the highest version
    - You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | +
    • -Lowest (default): the lowest version
    • +
    • -HighestPatch: the version with the lowest major, lowest minor, highest patch
    • +
    • -HighestMinor: the version with the lowest major, highest minor, highest patch
    • +
    • -Highest (default for Update-Package with no parameters): the highest version
    +You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | | WhatIf | Shows what would happen when running the command without actually performing the sync. | None of these parameters accept pipeline input or wildcard characters. diff --git a/docs/Tools/ps-ref-update-package.md b/docs/Tools/ps-ref-update-package.md index 364de519b..cfc1e3934 100644 --- a/docs/Tools/ps-ref-update-package.md +++ b/docs/Tools/ps-ref-update-package.md @@ -36,8 +36,8 @@ Updates a package and its dependencies, or all packages in a project, to a newer ```ps Update-Package [-Id] [-IgnoreDependencies] [-ProjectName ] [-Version ] - [-Safe] [-Source ] [-IncludePrerelease] [-Reinstall] [-FileConflictAction] [-DependencyVersion] - [-ToHighestPatch] [-ToHighestMinor] [-WhatIf] [] + [-Safe] [-Source ] [-IncludePrerelease] [-Reinstall] [-FileConflictAction] + [-DependencyVersion] [-ToHighestPatch] [-ToHighestMinor] [-WhatIf] [] ``` In NuGet 2.8+, `Update-Package` can be used to downgrade an existing package in your project. For example, if you have Microsoft.AspNet.MVC 5.1.0-rc1 installed, the following command would downgrade it to 5.0.0: @@ -55,18 +55,18 @@ NuGet 2.7 and earlier will give an error saying that a newer version is already | Id | (Required) The identifier of the package to update. If omitted, updates all packages. The -Id switch itself is optional. | | IgnoreDependencies | Skips updating the package's dependencies. | | ProjectName | The name of the project containing the packages to update, defaulting to all projects. | -| Version | The version to use for the upgrade, defaulting to the latest version. In NuGet 3.0+, the version value must be one of *Lowest, Highest, HighestMinor*, or *HighestPatch* (equivalent to `-Safe`). | +| Version | The version to use for the upgrade, defaulting to the latest version. In NuGet 3.0+, the version value must be one of *Lowest, Highest, HighestMinor*, or *HighestPatch* (equivalent to -Safe). | | Safe | Constrains upgrades to only versions with the same Major and Minor version as the currently installed package. | | Source | The URL or folder path for the package source to search. Local folder paths can be absolute, or relative to the current folder. If omitted, `Uninstall-Package` searches the currently selected package source. | | IncludePrerelease | Includes prerelease packages for updates. | | Reinstall | Resintalls packages using their currently installed versions. See [Reinstalling and updating packages](../consume-packages/reinstalling-and-updating-packages.md). | | FileConflictAction | The action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *IgnoreAll* (3.0+). | | DependencyVersion | The version of the dependency packages to use, which can be one of the following:
    -
    • -Lowest (default): the lowest version
    • -
    • -HighestPatch: the version with the lowest major, lowest minor, highest patch
    • -
    • -HighestMinor: the version with the lowest major, highest minor, highest patch
    • -
    • -Highest (default for Update-Package with no parameters): the highest version
    - You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | +
    • -Lowest (default): the lowest version
    • +
    • -HighestPatch: the version with the lowest major, lowest minor, highest patch
    • +
    • -HighestMinor: the version with the lowest major, highest minor, highest patch
    • +
    • -Highest (default for Update-Package with no parameters): the highest version
    +You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | | ToHighestPatch | Constrains upgrades to only versions with the same Minor version as the currently installed package. | | ToHighestMinor | Constrains upgrades to only versions with the same Major version as the currently installed package. | | WhatIf | Shows what would happen when running the command without actually performing the update. | From 4e67fdd318b78eb9ec2192a43bedb813b4dcc7ac Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 1 Jun 2017 13:09:23 -0700 Subject: [PATCH 0024/2943] Fix table --- docs/Tools/ps-ref-install-package.md | 7 +------ docs/Tools/ps-ref-sync-package.md | 7 +------ docs/Tools/ps-ref-update-package.md | 8 +------- 3 files changed, 3 insertions(+), 19 deletions(-) diff --git a/docs/Tools/ps-ref-install-package.md b/docs/Tools/ps-ref-install-package.md index aa61627f9..6192d98f3 100644 --- a/docs/Tools/ps-ref-install-package.md +++ b/docs/Tools/ps-ref-install-package.md @@ -59,12 +59,7 @@ NuGet 2.7 and earlier will give an error saying that a newer version is already | Version | The version of the package to install, defaulting to the latest version. | | IncludePrerelease | Considers prerelease packages for the install. If omitted, only stable packages are considered. | | FileConflictAction | The action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *(3.0+)* *IgnoreAll*. | -| DependencyVersion | The version of the dependency packages to use, which can be one of the following:
    -
    • -Lowest (default): the lowest version
    • -
    • -HighestPatch: the version with the lowest major, lowest minor, highest patch
    • -
    • -HighestMinor: the version with the lowest major, highest minor, highest patch
    • -
    • -Highest (default for Update-Package with no parameters): the highest version
    -You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | +| DependencyVersion | The version of the dependency packages to use, which can be one of the following:
    • -Lowest (default): the lowest version
    • -HighestPatch: the version with the lowest major, lowest minor, highest patch
    • -HighestMinor: the version with the lowest major, highest minor, highest patch
    • -Highest (default for Update-Package with no parameters): the highest version
    You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | | WhatIf | Shows what would happen when running the command without actually performing the install. | None of these parameters accept pipeline input or wildcard characters. diff --git a/docs/Tools/ps-ref-sync-package.md b/docs/Tools/ps-ref-sync-package.md index d12b8dd19..43dd37831 100644 --- a/docs/Tools/ps-ref-sync-package.md +++ b/docs/Tools/ps-ref-sync-package.md @@ -53,12 +53,7 @@ Sync-Package [-Id] [-IgnoreDependencies] [-ProjectName ] [[-Ver | Source | The URL or folder path for the package source to search. Local folder paths can be absolute, or relative to the current folder. If omitted, `Sync-Package` searches the currently selected package source. | | IncludePrerelease | Includes prerelease packages in the sync. | | FileConflictAction | The action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *(3.0+)* *IgnoreAll*. | -| DependencyVersion | The version of the dependency packages to use, which can be one of the following:
    -
    • -Lowest (default): the lowest version
    • -
    • -HighestPatch: the version with the lowest major, lowest minor, highest patch
    • -
    • -HighestMinor: the version with the lowest major, highest minor, highest patch
    • -
    • -Highest (default for Update-Package with no parameters): the highest version
    -You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | +| DependencyVersion | The version of the dependency packages to use, which can be one of the following:
    • -Lowest (default): the lowest version
    • -HighestPatch: the version with the lowest major, lowest minor, highest patch
    • -HighestMinor: the version with the lowest major, highest minor, highest patch
    • -Highest (default for Update-Package with no parameters): the highest version
    You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | | WhatIf | Shows what would happen when running the command without actually performing the sync. | None of these parameters accept pipeline input or wildcard characters. diff --git a/docs/Tools/ps-ref-update-package.md b/docs/Tools/ps-ref-update-package.md index cfc1e3934..82013deba 100644 --- a/docs/Tools/ps-ref-update-package.md +++ b/docs/Tools/ps-ref-update-package.md @@ -61,13 +61,7 @@ NuGet 2.7 and earlier will give an error saying that a newer version is already | IncludePrerelease | Includes prerelease packages for updates. | | Reinstall | Resintalls packages using their currently installed versions. See [Reinstalling and updating packages](../consume-packages/reinstalling-and-updating-packages.md). | | FileConflictAction | The action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *IgnoreAll* (3.0+). | -| DependencyVersion | The version of the dependency packages to use, which can be one of the following:
    -
    • -Lowest (default): the lowest version
    • -
    • -HighestPatch: the version with the lowest major, lowest minor, highest patch
    • -
    • -HighestMinor: the version with the lowest major, highest minor, highest patch
    • -
    • -Highest (default for Update-Package with no parameters): the highest version
    -You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | -| ToHighestPatch | Constrains upgrades to only versions with the same Minor version as the currently installed package. | +| DependencyVersion | The version of the dependency packages to use, which can be one of the following:
    • -Lowest (default): the lowest version
    • -HighestPatch: the version with the lowest major, lowest minor, highest patch
    • -HighestMinor: the version with the lowest major, highest minor, highest patch
    • -Highest (default for Update-Package with no parameters): the highest version
    You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. || ToHighestPatch | Constrains upgrades to only versions with the same Minor version as the currently installed package. | | ToHighestMinor | Constrains upgrades to only versions with the same Major version as the currently installed package. | | WhatIf | Shows what would happen when running the command without actually performing the update. | From e9eed0fb0b1d33e20affeb8090053659a861f157 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 1 Jun 2017 16:34:19 -0700 Subject: [PATCH 0025/2943] Remove spuious dashes --- docs/Tools/ps-ref-install-package.md | 2 +- docs/Tools/ps-ref-sync-package.md | 2 +- docs/Tools/ps-ref-update-package.md | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/Tools/ps-ref-install-package.md b/docs/Tools/ps-ref-install-package.md index 6192d98f3..ce5ee142e 100644 --- a/docs/Tools/ps-ref-install-package.md +++ b/docs/Tools/ps-ref-install-package.md @@ -59,7 +59,7 @@ NuGet 2.7 and earlier will give an error saying that a newer version is already | Version | The version of the package to install, defaulting to the latest version. | | IncludePrerelease | Considers prerelease packages for the install. If omitted, only stable packages are considered. | | FileConflictAction | The action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *(3.0+)* *IgnoreAll*. | -| DependencyVersion | The version of the dependency packages to use, which can be one of the following:
    • -Lowest (default): the lowest version
    • -HighestPatch: the version with the lowest major, lowest minor, highest patch
    • -HighestMinor: the version with the lowest major, highest minor, highest patch
    • -Highest (default for Update-Package with no parameters): the highest version
    You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | +| DependencyVersion | The version of the dependency packages to use, which can be one of the following:
    • *Lowest* (default): the lowest version
    • *HighestPatch*: the version with the lowest major, lowest minor, highest patch
    • *HighestMinor*: the version with the lowest major, highest minor, highest patch
    • *Highest* (default for Update-Package with no parameters): the highest version
    You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | | WhatIf | Shows what would happen when running the command without actually performing the install. | None of these parameters accept pipeline input or wildcard characters. diff --git a/docs/Tools/ps-ref-sync-package.md b/docs/Tools/ps-ref-sync-package.md index 43dd37831..92e2f04b9 100644 --- a/docs/Tools/ps-ref-sync-package.md +++ b/docs/Tools/ps-ref-sync-package.md @@ -53,7 +53,7 @@ Sync-Package [-Id] [-IgnoreDependencies] [-ProjectName ] [[-Ver | Source | The URL or folder path for the package source to search. Local folder paths can be absolute, or relative to the current folder. If omitted, `Sync-Package` searches the currently selected package source. | | IncludePrerelease | Includes prerelease packages in the sync. | | FileConflictAction | The action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *(3.0+)* *IgnoreAll*. | -| DependencyVersion | The version of the dependency packages to use, which can be one of the following:
    • -Lowest (default): the lowest version
    • -HighestPatch: the version with the lowest major, lowest minor, highest patch
    • -HighestMinor: the version with the lowest major, highest minor, highest patch
    • -Highest (default for Update-Package with no parameters): the highest version
    You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | +| DependencyVersion | The version of the dependency packages to use, which can be one of the following:
    • *Lowest* (default): the lowest version
    • *HighestPatch*: the version with the lowest major, lowest minor, highest patch
    • *HighestMinor*: the version with the lowest major, highest minor, highest patch
    • *Highest* (default for Update-Package with no parameters): the highest version
    You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | | WhatIf | Shows what would happen when running the command without actually performing the sync. | None of these parameters accept pipeline input or wildcard characters. diff --git a/docs/Tools/ps-ref-update-package.md b/docs/Tools/ps-ref-update-package.md index 82013deba..3cbcec87c 100644 --- a/docs/Tools/ps-ref-update-package.md +++ b/docs/Tools/ps-ref-update-package.md @@ -61,7 +61,8 @@ NuGet 2.7 and earlier will give an error saying that a newer version is already | IncludePrerelease | Includes prerelease packages for updates. | | Reinstall | Resintalls packages using their currently installed versions. See [Reinstalling and updating packages](../consume-packages/reinstalling-and-updating-packages.md). | | FileConflictAction | The action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *IgnoreAll* (3.0+). | -| DependencyVersion | The version of the dependency packages to use, which can be one of the following:
    • -Lowest (default): the lowest version
    • -HighestPatch: the version with the lowest major, lowest minor, highest patch
    • -HighestMinor: the version with the lowest major, highest minor, highest patch
    • -Highest (default for Update-Package with no parameters): the highest version
    You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. || ToHighestPatch | Constrains upgrades to only versions with the same Minor version as the currently installed package. | +| DependencyVersion | The version of the dependency packages to use, which can be one of the following:
    • *Lowest* (default): the lowest version
    • *HighestPatch*: the version with the lowest major, lowest minor, highest patch
    • *HighestMinor*: the version with the lowest major, highest minor, highest patch
    • *Highest* (default for Update-Package with no parameters): the highest version
    You can set the default value using the [`dependencyVersion`](../Schema/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | +| ToHighestPatch | Constrains upgrades to only versions with the same Minor version as the currently installed package. | | ToHighestMinor | Constrains upgrades to only versions with the same Major version as the currently installed package. | | WhatIf | Shows what would happen when running the command without actually performing the update. | From ecd902f22dc26a87e8b3e0d2d3f9c70c071efcd5 Mon Sep 17 00:00:00 2001 From: Muhamed AlGhzawi Date: Fri, 2 Jun 2017 07:50:41 +0300 Subject: [PATCH 0026/2943] Pre-release version tip. I've added a tip on how to mark the package as pre-release right after the "Create and update the .nuspec file" section.. --- docs/Guides/Create-Cross-Platform-Packages.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/Guides/Create-Cross-Platform-Packages.md b/docs/Guides/Create-Cross-Platform-Packages.md index 4bdf606ac..8be538703 100644 --- a/docs/Guides/Create-Cross-Platform-Packages.md +++ b/docs/Guides/Create-Cross-Platform-Packages.md @@ -148,6 +148,9 @@ nuget spec
    ``` + +> [!Tip] +> You can suffix your package version with `-alpha`, `-beta` or `-rc` to mark your package as pre-release, check [Pre-release versions](../create-packages/prerelease-packages.md) for more information about pre-release versions. ### Add reference assemblies @@ -286,4 +289,4 @@ To make your package available to other developers, follow the instructions on - [Dependency Versions](../create-packages/dependency-versions.md) - [Supporting Multiple .NET Framework Versions](../create-packages/supporting-multiple-target-frameworks.md) - [Including MSBuild props and targets in a package](../create-packages/creating-a-package.md#including-msbuild-props-and-targets-in-a-package) -- [Creating Localized Packages](../create-packages/creating-localized-packages.md) \ No newline at end of file +- [Creating Localized Packages](../create-packages/creating-localized-packages.md) From 5bbe370fb6e0f3fc5923d5d5517ca4b5b99ccb97 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Sat, 3 Jun 2017 22:58:23 -0700 Subject: [PATCH 0027/2943] Update nuspec.md --- docs/Schema/nuspec.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index e2f3fa7ad..970cb8875 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -20,6 +20,7 @@ keywords: nuspec reference, NuGet package metadata, NuGet package manifest, nusp #audience: #ms.devlang: ms.reviewer: +- anangaur - karann - unnir #ms.suite: @@ -94,7 +95,7 @@ Element | Description **owners** | A comma-separated list of the package creators using profile names on nuget.org. This is often the same list as in authors, and is ignored when uploading the package to nuget.org. See [Managing package owners on nuget.org](../create-packages/publish-a-package.md#managing-package-owners-on-nugetorg) **projectUrl** | A URL for the package's home page, often shown in UI displays as well as nuget.org. **licenseUrl** | A URL for the package's license, often shown in UI displays as well as nuget.org. -**iconUrl** | A URL for a 64x64 image with transparency background to use as the icon for the package in UI display. +**iconUrl** | A URL for a 64x64 image with transparency background to use as the icon for the package in UI display. Note: this should be the image URL and not a webpage containing the image. E.g. if you want to put an image URL from GitHub, make sure it is the raw file URL (like `https://github.com///raw//`) **requireLicenseAcceptance** | A Boolean value specifying whether the client must prompt the consumer to accept the package license before installing the package. **developmentDependency** | *(2.8+)* A Boolean value specifying whether the package will be marked as a development-only-dependency, which prevents the package from being included as a dependency in other packages. **summary** | A short description of the package for UI display. If omitted, a truncated version of the **description** is used. From ed55eb59de9371f94dda363e3d0e9fde936bc82a Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 5 Jun 2017 16:50:19 -0700 Subject: [PATCH 0028/2943] A little editing --- docs/Schema/nuspec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index 970cb8875..41ecf2b2f 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -95,7 +95,7 @@ Element | Description **owners** | A comma-separated list of the package creators using profile names on nuget.org. This is often the same list as in authors, and is ignored when uploading the package to nuget.org. See [Managing package owners on nuget.org](../create-packages/publish-a-package.md#managing-package-owners-on-nugetorg) **projectUrl** | A URL for the package's home page, often shown in UI displays as well as nuget.org. **licenseUrl** | A URL for the package's license, often shown in UI displays as well as nuget.org. -**iconUrl** | A URL for a 64x64 image with transparency background to use as the icon for the package in UI display. Note: this should be the image URL and not a webpage containing the image. E.g. if you want to put an image URL from GitHub, make sure it is the raw file URL (like `https://github.com///raw//`) +**iconUrl** | A URL for a 64x64 image with transparency background to use as the icon for the package in UI display. Note: this should be the image URL and not a webpage containing the image. For example, to use an image from GitHub, use the raw file URL like `https://github.com///raw//`. **requireLicenseAcceptance** | A Boolean value specifying whether the client must prompt the consumer to accept the package license before installing the package. **developmentDependency** | *(2.8+)* A Boolean value specifying whether the package will be marked as a development-only-dependency, which prevents the package from being included as a dependency in other packages. **summary** | A short description of the package for UI display. If omitted, a truncated version of the **description** is used. From 7af0c72b5136c63c519c4f00d4fa4697993ea8d9 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 5 Jun 2017 16:50:53 -0700 Subject: [PATCH 0029/2943] Update nuspec.md --- docs/Schema/nuspec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index 41ecf2b2f..61b945872 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -95,7 +95,7 @@ Element | Description **owners** | A comma-separated list of the package creators using profile names on nuget.org. This is often the same list as in authors, and is ignored when uploading the package to nuget.org. See [Managing package owners on nuget.org](../create-packages/publish-a-package.md#managing-package-owners-on-nugetorg) **projectUrl** | A URL for the package's home page, often shown in UI displays as well as nuget.org. **licenseUrl** | A URL for the package's license, often shown in UI displays as well as nuget.org. -**iconUrl** | A URL for a 64x64 image with transparency background to use as the icon for the package in UI display. Note: this should be the image URL and not a webpage containing the image. For example, to use an image from GitHub, use the raw file URL like `https://github.com///raw//`. +**iconUrl** | A URL for a 64x64 image with transparency background to use as the icon for the package in UI display. Note: this should be the image URL and not a web page containing the image. For example, to use an image from GitHub, use the raw file URL like `https://github.com///raw//`. **requireLicenseAcceptance** | A Boolean value specifying whether the client must prompt the consumer to accept the package license before installing the package. **developmentDependency** | *(2.8+)* A Boolean value specifying whether the package will be marked as a development-only-dependency, which prevents the package from being included as a dependency in other packages. **summary** | A short description of the package for UI display. If omitted, a truncated version of the **description** is used. From 6565e80747189605ac45f7a63c6167c86177d356 Mon Sep 17 00:00:00 2001 From: Funkrusha Date: Wed, 7 Jun 2017 03:13:02 +0200 Subject: [PATCH 0030/2943] Update Reinstalling-and-Updating-Packages.md added missing -ProjectName in command --- docs/Consume-Packages/Reinstalling-and-Updating-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index b32ceb56d..d275e08ca 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -49,7 +49,7 @@ Update-Package To update all packages in a specific project, use the `-ProjectName` argument: ```ps -Update-Package application-project.csproj +Update-Package -ProjectName application-project.csproj ``` Using `Update-Package` by itself, with no other arguments, will update all packages in all projects in the current folder. See the [Update-Package command](../Tools/ps-ref-update-package.md) reference for complete usage details. From 70b6c96b1656df16dfe0b9449931a6487978dbef Mon Sep 17 00:00:00 2001 From: Blake Niemyjski Date: Wed, 7 Jun 2017 08:18:32 -0500 Subject: [PATCH 0031/2943] Updated sample to install latest package and use the default source The specified source 'nuget.org' is invalid. Please provide a valid source. Parameter name: source --- .../NuGet-API-in-Visual-Studio.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 89821e09b..7197f3dbc 100644 --- a/docs/Visual-Studio-Extensibility/NuGet-API-in-Visual-Studio.md +++ b/docs/Visual-Studio-Extensibility/NuGet-API-in-Visual-Studio.md @@ -59,14 +59,14 @@ As of NuGet 3.3+, NuGet exports the following services all of which reside in th ```cs //Using the Import attribute - [Import(typeof(IVsPackageInstaller))] - public IVsPackageInstaller packageInstaller; - packageInstaller.InstallPackage("nuget.org", currentProject, - "Newtonsoft.Json", "9.0.1", false); + [Import(typeof(IVsPackageInstaller2))] + public IVsPackageInstaller2 packageInstaller; + packageInstaller.InstallLatestPackage(null, currentProject, + "Newtonsoft.Json", false, false); //Using the IComponentModel service var componentModel = (IComponentModel)GetService(typeof(SComponentModel)); - IVsPackageInstallerServices installerServices = + IVsPackageInstallerServices installerServices = componentModel.GetService(); var installedPackages = installerServices.GetInstalledPackages(); From 69c8cea750184ac0e07ec521d5ecb67d413423b8 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 12 Jun 2017 10:36:16 -0700 Subject: [PATCH 0032/2943] Adding link to VS Mac docs for PM UI --- docs/Tools/Package-Manager-UI.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index 75e45b93a..7b14663fa 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -5,7 +5,7 @@ title: NuGet Package Manager UI Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 4/24/2017 +ms.date: 6/11/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -36,6 +36,8 @@ ms.reviewer: The NuGet Package Manager UI in Visual Studio allows you to easily install, uninstall, and update NuGet packages in projects and solutions. +**NOTE:** This topic covers the Package Manager UI for Visual Studio on Windows only. For the experience in Visual Studio for Mac, see [Including a NuGet package in your project)](../../mac/nuget-walkthrough.md). + In this topic: - [Finding and installing a package](#finding-and-installing-a-package) From c728e3d7aba5bfb8c2d1616e8c8e445cc5e9d8ce Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 12 Jun 2017 10:39:44 -0700 Subject: [PATCH 0033/2943] Fix link --- docs/Tools/Package-Manager-UI.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index 7b14663fa..1e39adfcb 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -36,7 +36,7 @@ ms.reviewer: The NuGet Package Manager UI in Visual Studio allows you to easily install, uninstall, and update NuGet packages in projects and solutions. -**NOTE:** This topic covers the Package Manager UI for Visual Studio on Windows only. For the experience in Visual Studio for Mac, see [Including a NuGet package in your project)](../../mac/nuget-walkthrough.md). +**NOTE:** This topic covers the Package Manager UI for Visual Studio on Windows only. For the experience in Visual Studio for Mac, see [Including a NuGet package in your project)](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough). In this topic: From 2cc9af541a42b5306571d828e0f1d3d7935f337d Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 12 Jun 2017 10:41:29 -0700 Subject: [PATCH 0034/2943] Remove spurious ) --- docs/Tools/Package-Manager-UI.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index 1e39adfcb..070e26ca3 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -36,7 +36,7 @@ ms.reviewer: The NuGet Package Manager UI in Visual Studio allows you to easily install, uninstall, and update NuGet packages in projects and solutions. -**NOTE:** This topic covers the Package Manager UI for Visual Studio on Windows only. For the experience in Visual Studio for Mac, see [Including a NuGet package in your project)](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough). +**NOTE:** This topic covers the Package Manager UI for Visual Studio on Windows only. For the experience in Visual Studio for Mac, see [Including a NuGet package in your project](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough). In this topic: From dd0dd007c24e6c1961a2f900d181596d4972156f Mon Sep 17 00:00:00 2001 From: Kouji Matsui Date: Tue, 13 Jun 2017 09:22:00 +0900 Subject: [PATCH 0035/2943] Fixed framework name for Windows Phone's. --- docs/Schema/Target-Frameworks.md | 60 ++++++++++++++++---------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/docs/Schema/Target-Frameworks.md b/docs/Schema/Target-Frameworks.md index 23b13e4d1..91d6ab481 100644 --- a/docs/Schema/Target-Frameworks.md +++ b/docs/Schema/Target-Frameworks.md @@ -74,12 +74,12 @@ The NuGet clients support the following frameworks. Equivalents are shown within | | | win10 (not supported by Windows 10 Platform) Silverlight | sl | sl4 | | | sl5 -Windows Phone | wp | wp [wp7] +Windows Phone (SL) | wp | wp [wp7] | | | wp7 | | | wp75 | | | wp8 | | | wp81 -| | | wpa81 +Windows Phone (UWP) | | wpa81 Universal Windows Platform | uap | uap [uap10.0] | | | uap10.0 .NET Standard | netstandard | netstandard1.0 @@ -175,13 +175,13 @@ Profile # | Frameworks | Full name | .NET Standard Profile24 | .NETFramework 4.5 | portable-net45+sl5 | | Silverlight 5.0 | Profile31 | Windows 8.1 | portable-win81+wp81 | netstandard1.0 - | | WindowsPhone 8.1 | + | | WindowsPhone 8.1 (SL) | Profile32 | Windows 8.1 | portable-win81+wpa81 | netstandard1.2 - | | WindowsPhone 8.1 | + | | WindowsPhone 8.1 (UWP) | Profile36 | .NETFramework 4.0 | portable-net40+sl4+win8+wp8 | | Silverlight 4.0 | | | Windows 8.0 | - | | WindowsPhone 8.0 | + | | WindowsPhone 8.0 (SL) | Profile37 | .NETFramework 4.0 | portable-net40+sl5+win8 | | Silverlight 5.0 | | | Windows 8.0 | @@ -200,19 +200,19 @@ Profile # | Frameworks | Full name | .NET Standard | | Silverlight 5.0 | | | Windows 8.0 | Profile49 | .NETFramework 4.5 | portable-net45+wp8 | netstandard1.0 - | | WindowsPhone 8.0 | + | | WindowsPhone 8.0 (SL) | Profile78 | .NETFramework 4.5 | portable-net45+win8+wp8 | netstandard1.0 | | Windows 8.0 | - | | WindowsPhone 8.0 | + | | WindowsPhone 8.0 (SL) | Profile84 | WindowsPhone 8.1 | portable-wp81+wpa81 | netstandard1.0 - | | WindowsPhone 8.1 | + | | WindowsPhone 8.1 (UWP) | Profile88 | .NETFramework 4.0 | portable-net40+sl4+win8+wp75 | | Silverlight 4.0 | | | Windows 8.0 | | | WindowsPhone 7.5 | Profile92 | .NETFramework 4.0 | portable-net40+win8+wpa81 | | Windows 8.0 | - | | WindowsPhone 8.1 | + | | WindowsPhone 8.1 (UWP) | Profile95 | .NETFramework 4.0.3 | portable-net403+sl4+win8+wp7 | | Silverlight 4.0 | | | Windows 8.0 | @@ -223,71 +223,71 @@ Profile # | Frameworks | Full name | .NET Standard | | WindowsPhone 7.5 | Profile102 | .NETFramework 4.0.3 | portable-net403+win8+wpa81 | | Windows 8.0 | - | | WindowsPhone 8.1 | + | | WindowsPhone 8.1 (UWP) | Profile104 | .NETFramework 4.5 | portable-net45+sl4+win8+wp75 | | Silverlight 4.0 | | | Windows 8.0 | | | WindowsPhone 7.5 | Profile111 | .NETFramework 4.5 | portable-net45+win8+wpa81 | netstandard1.1 | | Windows 8.0 | - | | WindowsPhone 8.1 | + | | WindowsPhone 8.1 (UWP) | Profile136 | .NETFramework 4.0 | portable-net40+sl5+win8+wp8 | | Silverlight 5.0 | | | Windows 8.0 | - | | WindowsPhone 8.0 | + | | WindowsPhone 8.0 (SL) | Profile143 | .NETFramework 4.0.3 | portable-net403+sl4+win8+wp8 | | Silverlight 4.0 | | | Windows 8.0 | - | | WindowsPhone 8.0 | + | | WindowsPhone 8.0 (SL) | Profile147 | .NETFramework 4.0.3 | portable-net403+sl5+win8+wp8 | | Silverlight 5.0 | | | Windows 8.0 | - | | WindowsPhone 8.0 | + | | WindowsPhone 8.0 (SL) | Profile151 | NETFramework 4.5.1 | portable-net451+win81+wpa81 | netstandard1.2 | | Windows 8.1 | - | | WindowsPhone 8.1 | + | | WindowsPhone 8.1 (UWP) | Profile154 | .NETFramework 4.5 | portable-net45+sl4+win8+wp8 | | Silverlight 4.0 | | | Windows 8.0 | - | | WindowsPhone 8.0 | + | | WindowsPhone 8.0 (SL) | Profile157 | Windows 8.1 | portable-win81+wp81+wpa81 | netstandard1.0 - | | WindowsPhone 8.1 | - | | WindowsPhone 8.1 | + | | WindowsPhone 8.1 (SL) | + | | WindowsPhone 8.1 (UWP) | Profile158 | .NETFramework 4.5 | portable-net45+sl5+win8+wp8 | | Silverlight 5.0 | | | Windows 8.0 | - | | WindowsPhone 8.0 | + | | WindowsPhone 8.0 (SL) | Profile225 | .NETFramework 4.0 | portable-net40+sl5+win8+wpa81 | | Silverlight 5.0 | | | Windows 8.0 | - | | WindowsPhone 8.1 | + | | WindowsPhone 8.1 (UWP) | Profile240 | .NETFramework 4.0.3 | portable-net403+sl5+win8+wpa8 | | Silverlight 5.0 | | | Windows 8.0 | - | | WindowsPhone 8.1 | + | | WindowsPhone 8.1 (UWP) | Profile255 | .NETFramework 4.5 | portable-net45+sl5+win8+wpa81 | | Silverlight 5.0 | | | Windows 8.0 | - | | WindowsPhone 8.1 | + | | WindowsPhone 8.1 (UWP) | Profile259 | .NETFramework 4.5 | portable-net45+win8+wpa81+wp8 | netstandard1.0 | | Windows 8.0 | - | | WindowsPhone 8.1 | - | | WindowsPhone 8.0 | + | | WindowsPhone 8.1 (UWP) | + | | WindowsPhone 8.0 (SL) | Profile328 | .NETFramework 4.0 | portable-net40+sl5+win8+wpa81+wp8 | | Silverlight 5.0 | | | Windows 8.0 | - | | WindowsPhone 8.1 | - | | WindowsPhone 8.0 | + | | WindowsPhone 8.1 (UWP) | + | | WindowsPhone 8.0 (SL) | Profile336 | .NETFramework 4.0.3 | portable-net403+sl5+win8+wpa81+wp8 | | Silverlight 5.0 | | | Windows 8.0 | - | | WindowsPhone 8.1 | - | | WindowsPhone 8.1 | + | | WindowsPhone 8.1 (UWP) | + | | WindowsPhone 8.0 (SL) | Profile344 | .NETFramework 4.5 | portable-net45+sl5+win8+wpa81+wp8 | | Silverlight 5.0 | | | Windows 8.0 | - | | WindowsPhone 8.1 | - | | WindowsPhone 8.0 | + | | WindowsPhone 8.1 (UWP) | + | | WindowsPhone 8.0 (SL) | Additionally, NuGet packages targeting Xamarin can use additional Xamarin-defined frameworks. See [Creating NuGet packages for Xamarin](https://developer.xamarin.com/guides/cross-platform/advanced/nuget/). From de6cfb35774484a22f1f212fe42bb9fdaba8171d Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 13 Jun 2017 14:22:06 -0700 Subject: [PATCH 0036/2943] Add note about VS for Mac --- docs/Tools/Package-Manager-Console.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index 0bd6eba31..d7ed45592 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -3,9 +3,9 @@ title: NuGet Package Manager Console Guide | Microsoft Docs author: kraigb -ms.author: kraigb +hms.author: kraigb manager: ghogen -ms.date: 6/1/2017 +ms.date: 6/13/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -13,7 +13,7 @@ ms.technology: null ms.assetid: 2b92b119-6861-406c-82af-9d739af230e4 # optional metadata - +T description: Instructions for using the NuGet Package Manager Console in Visual Studio for working with packages. keywords: NuGet package manager console, NuGet powershell, managing NuGet packages #ROBOTS: @@ -30,7 +30,7 @@ ms.reviewer: # Package Manager Console -The Package Manager Console that is built into Visual Studio (2012 and later) lets you use [NuGet PowerShell commands](../tools/powershell-reference.md) to find, install, uninstall, and update NuGet packages. +The Package Manager Console lets you use [NuGet PowerShell commands](../tools/powershell-reference.md) to find, install, uninstall, and update NuGet packages. The Console is built into Visual Studio on Windows, version 2012 and later; it is not presently available with Visual Studio for Mac. The equivalent commands, however, are available through the [NuGet CLI](nuget-exe-CLI-reference.md). > [!Note] > If you're missing the NuGet Package Manager in Visual Studio 2015, check **Tools > Extensions and Updates...** and search for the NuGet Package Manager extension. If you're unable to use the extensions installer in Visual Studio, you can download the extension directly from [https://dist.nuget.org/index.html](https://dist.nuget.org/index.html). @@ -137,4 +137,4 @@ To find the profile file, type `$profile` in the Console: $profile C:\Users\\Documents\WindowsPowerShell\NuGet_profile.ps1 -For more details, refer to [Windows PowerShell Profiles](https://technet.microsoft.com/library/bb613488.aspx). \ No newline at end of file +For more details, refer to [Windows PowerShell Profiles](https://technet.microsoft.com/library/bb613488.aspx). From 0becad5d9319f6f2d97cb4e9072ab04fe1647c69 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 13 Jun 2017 14:30:12 -0700 Subject: [PATCH 0037/2943] Small edits, wording changes, clarify roles of CLI commands --- .../Consume-Packages/Overview-and-Workflow.md | 8 ++-- .../Create-and-Publish-a-Package.md | 20 ++++---- docs/Quickstart/Use-a-Package.md | 8 ++-- docs/Schema/project-json.md | 9 ++-- docs/Tools/PowerShell-Reference.md | 3 ++ docs/Tools/nuget-exe-CLI-Reference.md | 48 +++++++++++-------- docs/Tools/ps-ref-install-package.md | 2 +- 7 files changed, 54 insertions(+), 44 deletions(-) diff --git a/docs/Consume-Packages/Overview-and-Workflow.md b/docs/Consume-Packages/Overview-and-Workflow.md index 13a2463da..722fae77f 100644 --- a/docs/Consume-Packages/Overview-and-Workflow.md +++ b/docs/Consume-Packages/Overview-and-Workflow.md @@ -5,7 +5,7 @@ title: Overview and workflow of using NuGet packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 6/6/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -36,18 +36,20 @@ Between nuget.org and private package galleries that your organization might est \* _Except with `nuget install` from the command-line, in which case it's necessary to edit the configuration files by hand. See the [install command reference](../tools/nuget-exe-cli-reference.md#install)._ -NuGet remembers the identity and version number of each installed package, recording it in either `packages.config` or `project.json` in your project root, depending on project type. With NuGet 4.0+ and .NET Core projects, dependencies are instead stored in the project file directly. See [Package References in Project Files](../consume-packages/package-references-in-project-files.md). In any case, you can look in the appropriate file at any time to see the full list of dependencies for your project. +NuGet remembers the identity and version number of each installed package, recording it in either `packages.config`, the project file, or a `project.json` file in your project root, depending on project type and your version of NuGet. With NuGet 4.0+, [storing dependencies in the project file](../consume-packages/package-references-in-project-files.md) is the default (except for UWP projects targeting Windows 10 RS1). In any case, you can look in the appropriate file at any time to see the full list of dependencies for your project. > [!Tip] > It's prudent to always check the license for each package you intend to use in your software. On nuget.org, you'll find a **License** link on the left side of each package's description page. When installing packages, NuGet typically checks if the package is already available from its cache. You can manually clear this cache from the command line, as described on [Managing the NuGet cache](../consume-packages/managing-the-nuget-cache.md). +NuGet also makes sure that the target frameworks supported by the package are compatible with your project. If the package does not contain compatible assemblies, NuGet will give you an error message. See [Resolving incompatible package errors](dependency-resolution.md#resolving-incompatible-package-errors). + When adding project code to a source repository, you typically don't include NuGet packages. Those who later clone the repository, which includes build agents on systems like Visual Studio Team Services, must restore the necessary packages prior to running a build: ![Flow of restoring NuGet packages by cloning a repository and using either a restore command](media/Overview-02-RestoreFlow.png) -[Package Restore](../consume-packages/package-restore.md) uses the information in `packages.config` or `project.json` to reinstall all dependencies. Note that there are differences in the process between NuGet 2.x and 3.x+, which are described in [Dependency Resolution](../consume-packages/dependency-resolution.md). +[Package Restore](../consume-packages/package-restore.md) uses the information in the project file, `packages.config`, `project.json` to reinstall all dependencies. Note that there are differences in the process involved, as described in [Dependency Resolution](../consume-packages/dependency-resolution.md). Occasionally it's necessary to reinstall packages that are already included in a project, which may also reinstall dependencies. This is easy to do using the `reinstall` command via the NuGet command line or the NuGet Package Manager Console. For details, see [Reinstalling and Updating Packages](../consume-packages/reinstalling-and-updating-packages.md). diff --git a/docs/Quickstart/Create-and-Publish-a-Package.md b/docs/Quickstart/Create-and-Publish-a-Package.md index 3561577c4..8db72a6c2 100644 --- a/docs/Quickstart/Create-and-Publish-a-Package.md +++ b/docs/Quickstart/Create-and-Publish-a-Package.md @@ -40,7 +40,7 @@ It's a simple process to create a NuGet package from a .NET Class Library and pu ## Install pre-requisites -1. Visual Studio 2015. Install the Community edition for free from [visualstudio.com](https://www.visualstudio.com/); you can use the Professional and Enterprise editions as well, of course. +1. Visual Studio 2015. Install the Community edition for free from [visualstudio.com](https://www.visualstudio.com/); you can use the Professional and Enterprise editions as well. 1. NuGet CLI. Download the latest version of nuget.exe from [nuget.org/downloads](https://nuget.org/downloads), saving it to a location of your choice. Then add that location to your PATH environment variable if it isn't already. > [!Note] @@ -53,13 +53,13 @@ In Visual Studio, choose **File > New > Project**, expand the **Visual C# > Wind ![Create new class library project](media/QS_Create-01-NewProject.png) -Right click on the resulting project file and select **Build** to make sure the project was created properly. +Right-click on the resulting project file and select **Build** to make sure the project was created properly. -Within a real NuGet package, of course, you'll implement many useful features upon which others can build applications. For this walkthrough, however, you won't add any additional code because a class library from the template is sufficient to create a package. +Within a real NuGet package, of course, you'll implement many useful features upon which others can build applications. For this walkthrough, however, you won't write any additional code because a class library from the template is sufficient to create a package. ## Create the .nuspec package manifest file -Every NuGet package needs a manifest–a `.nuspec` file–to describe its contents and its dependencies. The NuGet CLI will create this file for you, which you then customize. +Every NuGet package needs a manifest–a `.nuspec` file–to describe its contents and its dependencies. The NuGet CLI creates this file for you, which you then customize. 1. Open a command prompt and navigate to the folder containing the AppLogger project file (`.csproj`). 1. Run the NuGet CLI `spec` command to generate `AppLogg.nuspec`: @@ -91,7 +91,7 @@ Every NuGet package needs a manifest–a `.nuspec` file–to describe its conten
    ``` -1. Select a package ID that is unique across nuget.org. We recommend using the naming conventions described in [Creating a package](../create-packages/creating-a-package.md#choosing-a-unique-package-identifier-and-setting-the-version-number). You must also update the author and description tags or you will get an error in the next step. Here's an updated `.nuspec` file as an example: +1. Select a package ID that is unique across nuget.org. We recommend using the naming conventions described in [Creating a package](../create-packages/creating-a-package.md#choosing-a-unique-package-identifier-and-setting-the-version-number). Be sure to update the author and description tags or you will get an error in the next step. Here's an updated `.nuspec` file as an example: ```xml @@ -122,7 +122,7 @@ Creating a NuGet package from a project is simple: just run the `pack` command: nuget pack AppLogger.csproj ``` -This will create a NuGet package file like `AppLogger.1.0.0.0.nupkg` using, of course, the package name and version number from the `.nuspec` file. +This creates a NuGet package file like `AppLogger.1.0.0.0.nupkg` using the package name and version number from the `.nuspec` file. Note that you'll get warnings if you haven't updated various fields in the `.nuspec` file from their default values. @@ -132,10 +132,10 @@ Note that you'll get warnings if you haven't updated various fields in the `.nus You're now ready to publish the package to nuget.org using the NuGet CLI. (Alternately, you can use the [nuget.org publishing workflow](../create-packages/publish-a-package.md#publish-to-nugetorg). > [!Warning] -> The packages you publish to nuget.org will be publicly visible to other developers. To host packages privately, see [Hosting packages](../hosting-packages/overview.md). +> The packages you publish to nuget.org are publicly visible to other developers. To host packages privately, see [Hosting packages](../hosting-packages/overview.md). -1. Create a free account on [nuget.org](https://www.nuget.org/users/account/LogOn?returnUrl=%2F), or log in if you already have one. When creating a new account, you'll receive a confirmation email. You must confirm the account before you can upload a package. +1. Create a free account on [nuget.org](https://www.nuget.org/users/account/LogOn?returnUrl=%2F), or log in if you already have one. When creating a new account, you'll receive a confirmation email . You must confirm the account before you can upload a package. 1. Once logged in, click your user name (on the upper right) to navigate to your account settings. 1. Under **API Key**, click **copy to clipboard** to retrieve the access key you'll need in the CLI: @@ -160,12 +160,12 @@ You're now ready to publish the package to nuget.org using the NuGet CLI. (Alter Your package was pushed. ``` -1. In your account on nuget.org, click **Manage my packages** to see the one that you just published; you'll also receive a confirmation email. Note that it might take a while for your package to be indexed and appear in search results where others can find it, during which time you'll see the following message on your package page: +1. In your account on nuget.org, click **Manage my packages** to see the one that you just published; you'll also receive a confirmation email. Note that it might take a while for your package to be indexed and appear in search results where others can find it. During that time your package page will show the message below: ![This package has not been indexed yet. It will appear in search results and will be available for install/restore after indexing is complete.](media/QS_Create-03-NotIndexed.png) > [!Note] -> **Virus scanning**: Before being made public, all packages uploaded to nuget.org are scanned for viruses and rejected if any viruses are found. All packages listed on nuget.org are also scanned periodically. +> **Virus scanning**: All packages uploaded to nuget.org are scanned for viruses and rejected if any viruses are found. All packages listed on nuget.org are also scanned periodically. And that's it! You've just created and published your first NuGet package to [nuget.org](https://www.nuget.org/), that other developers can use in their own projects. diff --git a/docs/Quickstart/Use-a-Package.md b/docs/Quickstart/Use-a-Package.md index 52858dcb4..b427826ff 100644 --- a/docs/Quickstart/Use-a-Package.md +++ b/docs/Quickstart/Use-a-Package.md @@ -34,13 +34,13 @@ ms.reviewer: This tutorial walks you through installing and using the popular [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) package in a Universal Windows Platform (UWP) project: - [Install pre-requisites](#install-pre-requisites) -- [Create a new UWP project](#create-a-new-uwp-project) +- [Create a UWP project](#create-a-uwp-project) - [Add the Newtonsoft.Json NuGet package](#add-the-newtonsoftjson-nuget-package) - [Use the Newtonsoft.Json API in the app](#use-the-newtonsoftjson-api-in-the-app) -You'll use a similar same workflow for virtually every NuGet package you use in a project. +You use a similar same workflow for virtually every NuGet package you use in a project. -> **Start with nuget.org**: Installing packages from nuget.org is a very common workflow that .NET developers use to find components they can reuse in their own applications. You can always search nuget.org directly or find and install packages within Visual Studio as we'll do here. +> **Start with nuget.org**: Installing packages from nuget.org is a common workflow that .NET developers use to find components they can reuse in their own applications. You can always search nuget.org directly or find and install packages within Visual Studio as we do here. ## Install pre-requisites @@ -48,7 +48,7 @@ This tutorial requires Visual Studio 2015 Update 3 with Tools for Universal Wind You can install the Community edition for free from [visualstudio.com](https://www.visualstudio.com/) or use the Professional or Enterprise editions. The UWP tools option can be selected through the Custom install option during setup, checking the box under **Windows and Web Development > Universal Windows App Development Tools**. If you already have Visual Studio installed, you can run the installer again and click **Modify** to add the UWP tools. -## Create a new UWP project +## Create a UWP project In Visual Studio, choose **File > New > Project**, expand **Visual C# > Windows > Universal**, select the **Blank App (Universal Windows)**, and click OK. Accept the default values for Target Version and Minimum Version when prompted. diff --git a/docs/Schema/project-json.md b/docs/Schema/project-json.md index 5edc4b66b..61cf16c64 100644 --- a/docs/Schema/project-json.md +++ b/docs/Schema/project-json.md @@ -30,15 +30,12 @@ ms.reviewer: # project.json reference -*NuGet 3.x+; also see the end of this topic for project.lock.json* +*NuGet 3.x+* -The `project.json` file replaces `packages.config` in UWP, ASP.NET 5, and .NET desktop projects (WPF and WinForms) as a means to maintain the list of packages used in a project. (For .NET Core, refer to [NET Core Tools - project.json](https://docs.microsoft.com/dotnet/articles/core/tools/project-json)). +The `project.json` file maintains a list of packages used in a project. It supercedes using `packages.config` to maintain that list, but is in turn superceded by [package references in project files](../Consume-Packages/Package-References-in-Project-Files.md) with NuGet 4.0+. The [`project.lock.json`](#projectlockjson) file (described below) is also used in projects with a `project.json` file. -> [!Note] -> When tooling for .NET Core and ASP.NET Core is complete, the function of `project.json` will be incorporated directly into project files (`.csproj`, `.vsproj`, etc.). NuGet clients will continue to support `project.json` for existing scenarios. - A `project.json` file has the following basic structure, where each of the four top-level objects can have any number of child objects: ```json @@ -137,7 +134,7 @@ Imports are designed to allow packages that use the dotnet TxM to operate with p ``` -## Differences from Portable Apps and Web Projects +## Differences from portable apps and web projects The `project.json` file used by NuGet is a subset of that found in ASP.NET Core projects. In ASP.NET Core the `project.json` file is used for project metadata, compilation information, and dependencies. When used in other project systems those three things are split into separate files so the `project.json` specifies less information. Notable differences include: diff --git a/docs/Tools/PowerShell-Reference.md b/docs/Tools/PowerShell-Reference.md index f628fb469..8d6d48402 100644 --- a/docs/Tools/PowerShell-Reference.md +++ b/docs/Tools/PowerShell-Reference.md @@ -32,6 +32,9 @@ ms.reviewer: The Package Manager Console provides a PowerShell interface within Visual Studio to interact with NuGet through the specific commands listed below. For a guide to using the console, see the [Package Manager Console](../tools/package-manager-console.md) topic. +> [!Note] +> All PowerShell commands relate only to package consumption. No PowerShell commands relate to creating and publishing packages except to the extent that a package can also be a consumer of other packages. + Command | Description | NuGet Version --- | --- | --- [Add-BindingRedirect](ps-ref-add-bindingredirect.md) | Examines all assemblies within the output path for a project and adds binding redirects to the `app.config` or `web.config` where necessary. | All diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index ab5e1f804..37433b178 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -5,7 +5,7 @@ title: NuGet Command-Line Interface (CLI) Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 5/4/2017 +ms.date: 6/7/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -32,29 +32,37 @@ ms.reviewer: The NuGet Command Line Interface (CLI) provides the full extent of NuGet functionality to install, create, publish, and manage packages. Refer to the [Install Guide](../guides/install-nuget.md) for installation instructions. -Available commands are listed below. Also see the section on [Environment variables](#environment-variables) for how they're used with nuget.exe. +Available commands are listed below, and each indicate whether they're applicable to package creation, package consumption, and/or publishing a package to a host. Also see the section on [Environment variables](#environment-variables) for how `nuget.exe` uses such variables. > [!Note] > Command option names are case-insensitive. Options that are deprecated are not included in this reference, such as `NoPrompt` (replaced by `NonInteractive`) and `Verbose` (replaced by `Verbosity`). -Command | Description | NuGet Version ---- | --- | --- -[add](#add) | Adds a package to a non-HTTP package source using hierarchical layout. For HTTP sources, use *push*. | 3.3+ -[config](#config) | Gets or sets NuGet configuration values. | All -[delete](#delete) | Removes or unlists a package from a package source. | All -[help or ?](#help) | Displays help information or help for a command. | All -[init](#init) | Adds packages from a folder to a package source using hierarchical layout. | 3.3+ -[install](#install) | Installs a package into the current project but does not modify the project or `packages.config`. | All -[list](#list) | Displays packages from a given source. | All -[locals](#locals) | Clears or lists packages in various caches or the global packages folder, or identifies those folders. | 3.3+ -[mirror](#mirror) | Mirrors a package and its dependencies from a source to a target repository. | Deprecated in 3.2+ -[pack](#pack) | Creates a NuGet package from a `.nuspec` or project file. | 2.7+ -[push](#push) | Publishes a package to a package source. | All -[restore](#restore) | Restores all packages referenced by `packages.config` or `project.json`. | 2.7+ -[setapikey](#setapikey) | Saves an API key for a given package source. | All -[sources](#sources) | Manages package sources in configuration files. | All -[spec](#spec) | Generates a `.nuspec` file, using tokens if generating the file from a Visual Studio project. | All -[update](#update) | Updates a project's packages to the latest available versions. | All +| Command | Applicable Roles | NuGet Version | Description | +| --- | --- | --- | --- | +| [add](#add) | Publishing | 3.3+ | Adds a package to a non-HTTP package source using hierarchical layout. For HTTP sources, use *push*. | +| [config](#config) | All | All | Gets or sets NuGet configuration values. | +| [delete](#delete) | Publishing | All | Removes or unlists a package from a package source. | +| [help or ?](#help) | All | All | Displays help information or help for a command. | +| [init](#init) | Creation | 3.3+ | Adds packages from a folder to a package source using hierarchical layout. | +| [install](#install) | Consumption | All | Installs a package into the current project but does not modify the project or `packages.config`. | +| [list](#list) | Consumption, perhaps Publishing | All | Displays packages from a given source. | +| [locals](#locals) | Consumption | 3.3+ | Clears or lists packages in various caches or the global packages folder, or identifies those folders. | +| [mirror](#mirror) | Publishing | Deprecated in 3.2+ | Mirrors a package and its dependencies from a source to a target repository. | +| [pack](#pack) | Creation | 2.7+ | Creates a NuGet package from a `.nuspec` or project file. | +| [push](#push) | Publishing | All | Publishes a package to a package source. | +| [restore](#restore) | Consumption | 2.7+ | Restores all packages referenced by `packages.config` or `project.json`. | +| [setapikey](#setapikey) | Consumption, Publishing | All | Saves an API key for a given package source when that package source requires a key for access. | +| [sources](#sources) | Consumption, Publishing | All | Manages package sources in configuration files. | +| [spec](#spec) | Creation | All | Generates a `.nuspec` file, using tokens if generating the file from a Visual Studio project. | +| [update](#update) | Consumption | All | Updates a project's packages to the latest available versions. | + +For convenience, the following table lists the NuGet commands that are applicable to each specific roles. Developers concerned only with consuming packages, for example, need only understand that subset of NuGet commands. + +| Role | Commands | +| --- | --- | +| Consumption | `config`, `help`, `install`, `list`, `locals`, `restore`, `setapikey`, `sources`, `update` | +| Creation | `config`, `help`, `init`, `pack`, `spec` | +| Publishing | `add`, `config`, `delete`, `help`, `list`, `push`, `setapikey`, `sources` | ## add diff --git a/docs/Tools/ps-ref-install-package.md b/docs/Tools/ps-ref-install-package.md index ce5ee142e..dc699543b 100644 --- a/docs/Tools/ps-ref-install-package.md +++ b/docs/Tools/ps-ref-install-package.md @@ -46,7 +46,7 @@ In NuGet 2.8+, `Install-Package` can downgrade an existing package in your proje Install-Package Microsoft.AspNet.MVC -Version 5.0.0. ``` -NuGet 2.7 and earlier will give an error saying that a newer version is already installed. +NuGet 2.7 and earlier gives an error saying that a newer version is already installed. ## Parameters From 21cb02f7eb9434e14014c40245b7559b3bd9f924 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 13 Jun 2017 16:59:48 -0700 Subject: [PATCH 0038/2943] Edits from comments --- docs/Create-Packages/Publish-a-package.md | 8 +++++--- docs/Create-Packages/project-json-and-UWP.md | 2 +- docs/Guides/Install-NuGet.md | 6 +++--- docs/Hosting-Packages/Overview.md | 4 ++-- docs/Tools/PowerShell-Reference.md | 2 +- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index 47605079c..079da057a 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -5,7 +5,7 @@ title: How to Publish a NuGet Package | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 6/13/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -31,8 +31,10 @@ ms.reviewer: Once you have [created a package](../create-packages/creating-a-package.md) with `nuget pack`, it's a simple process to make it available to other developers, either publicly or privately: -- Public packages are made available to all developers globally through [nuget.org](https://www.nuget.org/packages/manage/upload). See instructions below. -- Private packages are available to only a team or organization, by hosting them either a file share, a private NuGet server, Visual Studio Team Services package management, or a third-party repository such as myget, ProGet, Nexus Repository, and Artifactory. For additional details, see [Hosting Packages Overview](../hosting-packages/overview.md)) +- Public packages are made available to all developers globally through [nuget.org](https://www.nuget.org/packages/manage/upload) as described in this topic. +- Private packages are available to only a team or organization, by hosting them either a file share, a private NuGet server, [Visual Studio Team Services Package Management](https://www.visualstudio.com/docs/package/nuget/publish), or a third-party repository such as myget, ProGet, Nexus Repository, and Artifactory. For additional details, see [Hosting Packages Overview](../hosting-packages/overview.md). + +This topic covers publishing to nuget.org; for publishing to Visual Studio Team Services, see [Package Management](https://www.visualstudio.com/docs/package/nuget/publish). ## Publish to nuget.org diff --git a/docs/Create-Packages/project-json-and-UWP.md b/docs/Create-Packages/project-json-and-UWP.md index bd93ec527..857adb9f9 100644 --- a/docs/Create-Packages/project-json-and-UWP.md +++ b/docs/Create-Packages/project-json-and-UWP.md @@ -129,7 +129,7 @@ In this example the assemblies in the `ref` directories would all be identical. ## Runtimes -The runtimes folder contains assemblies and native libraries required to run on specific "runtimes", which are generally defined by Operating System and CPU architecture. These runtimes are identified using Runtime Identifiers (RIDs) such as `win`, `win-x86`, `win7-x86`, `win8-64`, etc. +The runtimes folder contains assemblies and native libraries required to run on specific "runtimes", which are generally defined by Operating System and CPU architecture. These runtimes are identified using [Runtime Identifiers (RIDs)](https://docs.microsoft.com/dotnet/core/rid-catalog) such as `win`, `win-x86`, `win7-x86`, `win8-64`, etc. ## Native light-up diff --git a/docs/Guides/Install-NuGet.md b/docs/Guides/Install-NuGet.md index 134ddddfe..7cedb7b64 100644 --- a/docs/Guides/Install-NuGet.md +++ b/docs/Guides/Install-NuGet.md @@ -33,7 +33,7 @@ ms.reviewer: There are two primary tools available to help you build, publish and consume NuGet packages: 1. The [**NuGet CLI**](#nuget-cli) is the command-line utility for Windows that provides all NuGet capabilities; it can also be run on Mac OSX and Linux using Mono, or through the .NET Core CLI (`dotnet`). -1. The [**NuGet Package Manager in Visual Studio**](#nuget-package-manager-in-visual-studio) is a GUI tool for managing packages and includes a PowerShell console through which you can use certain NuGet commands directly within Visual Studio. The Package Manager UI and Console are both included with Visual Studio 2012 and later and can be installed manually for earlier versions. +1. The [**NuGet Package Manager in Visual Studio (Windows only)**](#nuget-package-manager-in-visual-studio) is a GUI tool for managing packages and includes a PowerShell console through which you can use certain NuGet commands directly within Visual Studio. The Package Manager UI and Console are both included with Visual Studio (on Windows) 2012 and later and can be installed manually for earlier versions. The NuGet CLI and Package Manager both support the following operations: @@ -122,12 +122,12 @@ On Mac OSX and Linux, there are two ways to run the NuGet CLI: ## NuGet Package Manager in Visual Studio -The NuGet Package Manager is included in every edition of Visual Studio 2012 and later. It includes the Package Manager UI ([reference](../tools/package-manager-ui.md)), and the Package Manager Console through which you can access tools that come with certain packages ([reference](../tools/package-manager-console.md)). +The NuGet Package Manager is included in every edition of Visual Studio on Windows, 2012 and later. It includes the Package Manager UI ([reference](../tools/package-manager-ui.md)), and the Package Manager Console through which you can access tools that come with certain packages ([reference](../tools/package-manager-console.md)). > [!Note] > The console requires [PowerShell 2.0](http://support.microsoft.com/kb/968929), which will already be installed on Windows 7 or higher and Windows Server 2008 R2 or higher. > -> Package Manager Console commands also work only within Visual Studio. Use the NuGet CLI outside of that environment. +> Package Manager Console commands also work only within Visual Studio on Windows. Use the NuGet CLI outside of that environment, including with Visual Studio for Mac. ### Package Manager installation for Visual Studio 2010 and earlier diff --git a/docs/Hosting-Packages/Overview.md b/docs/Hosting-Packages/Overview.md index cc61483ad..6cd48bb70 100644 --- a/docs/Hosting-Packages/Overview.md +++ b/docs/Hosting-Packages/Overview.md @@ -5,7 +5,7 @@ title: Overview of Hosting Your Own NuGet Feeds | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 6/13/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -40,7 +40,7 @@ For all such purposes, NuGet supports setting up a private package source in the There are also several other NuGet hosting products that support remote private feeds, including the following: -- [Package Management](https://www.visualstudio.com/docs/package/overview) from [VS Team Services](https://www.visualstudio.com/team-services/) and [TFS](https://www.visualstudio.com/tfs/) +- [Visual Studio Team Services Package Management](https://www.visualstudio.com/docs/package/nuget/publish), which is also available on Team Foundation Server 2017 and later. - [MyGet](http://myget.org) - [ProGet](http://inedo.com/proget) from Inedo - [NuGet Server](http://nugetserver.net/), a community project from Inedo diff --git a/docs/Tools/PowerShell-Reference.md b/docs/Tools/PowerShell-Reference.md index 8d6d48402..52fb921f0 100644 --- a/docs/Tools/PowerShell-Reference.md +++ b/docs/Tools/PowerShell-Reference.md @@ -30,7 +30,7 @@ ms.reviewer: # PowerShell reference -The Package Manager Console provides a PowerShell interface within Visual Studio to interact with NuGet through the specific commands listed below. For a guide to using the console, see the [Package Manager Console](../tools/package-manager-console.md) topic. +The Package Manager Console provides a PowerShell interface within Visual Studio on Windows to interact with NuGet through the specific commands listed below. (The console is not presently available in Visual Studio for Mac.) For a guide to using the console, see the [Package Manager Console](../tools/package-manager-console.md) topic. > [!Note] > All PowerShell commands relate only to package consumption. No PowerShell commands relate to creating and publishing packages except to the extent that a package can also be a consumer of other packages. From 1713fa1c9e6aa85e60dcdfa64e7b8ca907dcd813 Mon Sep 17 00:00:00 2001 From: reyou Date: Wed, 14 Jun 2017 16:49:54 -0400 Subject: [PATCH 0039/2943] Update NuGet-2.1.md --- docs/Release-Notes/NuGet-2.1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Release-Notes/NuGet-2.1.md b/docs/Release-Notes/NuGet-2.1.md index 23b3aac13..02986b77a 100644 --- a/docs/Release-Notes/NuGet-2.1.md +++ b/docs/Release-Notes/NuGet-2.1.md @@ -47,7 +47,7 @@ Additionally, if package restore is enabled for the solution, the following fold C:\myteam\solution1\.nuget -In order to have the team’s internal package repository available for all projects that the team works on, while not making it available for every project on the machine, we can create a new Nuget.Config file and place it in the c:\myteam folder. There is no way to specificy a packages forlder per project. +In order to have the team’s internal package repository available for all projects that the team works on, while not making it available for every project on the machine, we can create a new Nuget.Config file and place it in the c:\myteam folder. There is no way to specificy a packages folder per project. ```xml From 515a46e1c6f667a40b3753677ef9bdfbdad84153 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 14 Jun 2017 15:40:46 -0700 Subject: [PATCH 0040/2943] First draft of What is NuGet? --- docs/What-is-NuGet.md | 100 +++++++++++++++++++++++++++++++++++++ docs/media/nuget-roles.png | Bin 0 -> 77849 bytes 2 files changed, 100 insertions(+) create mode 100644 docs/What-is-NuGet.md create mode 100644 docs/media/nuget-roles.png diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md new file mode 100644 index 000000000..b3e65d63d --- /dev/null +++ b/docs/What-is-NuGet.md @@ -0,0 +1,100 @@ +--- +# required metadata + +title: What is NuGet and what does it do? | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 6/14/2017 +ms.topic: article +ms.prod: nuget +#ms.service: +ms.technology: null +ms.assetid: c3faf278-4cbf-4733-96f6-9ee9f7203af9 + +# optional metadata + +description: A comprehensive introduction to what NuGet is and does +keywords: NuGet package manager, consumption, package creation, package hosting +#ROBOTS: +#audience: +#ms.devlang: +ms.reviewer: +- karann +- unnir +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: + +--- + +# A simple introduction to NuGet + +A mechanism through which developers can create, distribute, and consume useful libraries and packages with each other is essential for any modern development platform. For .NET, that mechanism is **NuGet**, first released in early 2011, which defines how packages for .NET are created, hosted, and consumed and provides the tools for each of those roles. + +## The flow of packages between creators, hosts, and consumers + +With hosting, NuGet itself maintains the central repository for over 80,000 unique, publicly-available packages at [nuget.org](https://www.nuget.org), which are employed by millions of .NET developers. NuGet also enables you to host packages privately in the cloud, on a private network, or even on just your local file system, making packages available to only those developers within a particular organization or customer group. The options are explained on [Hosting your own NuGet feeds](../hosting/overview.md). + +Whatever its nature, the host serves as a point of connection between package *creators* and package *consumers*. Creators build useful packages and publish them to a host. Consumers then search for useful and compatible packages on accessible NuGet hosts, downloading and including those packages in their projects which makes the packages' APIs available to the rest of the project code. + +![Relationship between package creators, package hosts, and package consumers](media/nuget-roles.png) + +A "compatible" package in this case means that it contains assemblies that are built for at least one target .NET framework that's compatible with the consuming project's target framework. To make a package widely compatible, it's creator compiles separate assemblies for each target framework and includes all of them in the same package. When a consumer installs that package, NuGet extracts only those assemblies that are needed by the project, thereby minimizing the package's footprint in the final application and/or assemblies produced by that project. + +## NuGet tools + +In addition to providing the public nuget.org host, NuGet also provides a variety of tools used by both creators and consumers: + +| Tool | Applicable Scenarios | Description | +| [`nuget.exe` CLI](../tools/nuget-exe-cli-reference.md) | Creation, Consumption | Provides all NuGet capabilities, with some commands applying specifically to package creators, some applying only to consumers, and others applying to both. For example, the `nuget pack` command creates a package from various assemblies and related files and is used exclusively by package creators. The `nuget install` command installs a package into a project and is used by consumers. The `nuget config` command is used by everyone to set NuGet configuration variables. | +| [Package Manager UI](../tools/package-manager-ui.md) | Consumption | Provides an easy-to-use UI through which developers can install and manage packages in .NET projects. | +| [Package Manager Console](../tools/package-manager-console.md) | Consumption | Provides [PowerShell commands](../tools/Powershell-Reference.md) for installing and managing packages in .NET projects. | +| [dotnet CLI](../tools/dotnet-commands.md) | Creation, Consumption | Provides certain NuGet CLI capabilities directly within the .NET Core toolchain. | +| [MSBuild](../schema/msbuild-targets.md) | Creation, Consumption | Provides the ability to create packages and restore packages used in a project directly through the MSBuild toolchain. | + +As you can see, the tools you work with depend greatly on whether you're creating (and publishing) packages or consuming them. More specific details can be found in the [Package creation workflow](./Create-Packages/Overview-and-Workflow.md) and [Package consumption workflow](./Consume-Packages/Overview-and-Workflow.md) topics, along with other topics in those sections. + +Package creators are typically also consumers, as they build on top of functionality that exists in other NuGet packages. And those packages, of course, may in turn depend on still others. + +## Managing dependencies and package restore + +The ability to easily build on the work of others is one of the things that makes a package management system so powerful, and thus much of what NuGet does is managing that dependency tree or "graph" on behalf of your project. Simply said, all that any given project should concern itself with are only those packages that it's using directly. NuGet can worry about all other down-level dependencies. + +It's also important to manage those dependencies in such a way that projects can easily move between developer computers, source control repositories, build servers, and so forth. For this reason it's highly impractical to keep binary assemblies from NuGet packages directly bound to a project. Not only would this make each copy of the project unnecessarily bloated (and thereby waste space in source control repositories), it would also make it very difficult to update package binaries to newer versions as this would have to be done across all copies of the project. + +Instead, NuGet simply maintains a reference list of the packages upon which a project depends, and provides the means to restore all referenced packages upon request. That is, whenever you install a package from some host into a project, NuGet records the package identifier and version number in this reference list. (Uninstalling a package, of course, removes it from the list.) When it comes time to commit the project to source control (or to share is some other way), you need include only the reference list and not any of the package binaries, because those packages can simply be reinstalled—restores—from a public and/or private hosts at any later time using only the reference list. (For this reason, nuget.org does not allow permanent deletion of published packages, although they can be hidden; see [Deleting packages](policies/deleting-packages.md).) + +Thus if the project is copied onto a build server as part of an automated deployment system, for example, the build system can simply ask NuGet to restore dependencies at the beginning of the process. Build systems like Visual Studio Team Services provide NuGet package restore steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository) then open the project in Visual Studio and run a build, Visual Studio automatically restores the necessary NuGet packages. Developers can also tell NuGet to restore packages at any time using the the `nuget restore` CLI command or the `Install-Package` cmdlet in the Package Manager Console. + +Clearly, then, NuGet's primarily role where developers are concerned is maintaining that reference list on behalf of your project and providing the means to efficiently restore (and update) those referenced packages. + +How this exactly happens has evolved over the different versions of NuGet: + +- [`packages.config`](../schema/packages.config.md): *(NuGet 1.0+)* An XML file that maintains a flat list of all dependencies in the project, including the dependencies of other installed packages. +- [`project.json`](../schema/project-json.md): *(NuGet 3.0+)* A JSON file that maintains a list of the project's dependencies with an overall package graph in an associated file, `project.lock.json`. This structure provides improved performance over `packages.config` as described on [Dependency Resolution](../consume-packages/dependency-resolution.md). +- [Package references in project files](../consume-packages/package-references-in-project-files.md) (also known as "PackageReference") | *(NuGet 4.0+)* Maintains a list of a project's top-level dependencies directly within the project file, so no separate file is needed. An associated file, `project.assets.json`, is dynamically generated like `project.lock.json` to manage the overall dependency graph. + +To check what method is in use for project, simply look for `packages.config` or `project.json` in the project root after installing your first package. If you don't see either file, look in the project file directly for a <PackageReference>element. This is the case for most new projects created in Visual Studio 2017. + +You can also switch from one method to another. NuGet literally doesn't care which method you use, so long as you have the appropriate version of [NuGet installed](../guides/install-nuget.md). Older projects that use `packages.config` can be converted to use either `project.json` or PackageReference, and projects using `project.json` can also be converted to use PackageReference. For each package, simply create the appropriate reference element in the new file using the same package identifier and version number shown in the older file. ((TODO: make a topic for this migration showing examples.)) When it comes time to restore or update packages, NuGet will find whatever method you're using. + +# What else does NuGet do? + +So far we've seen NuGet's central hosting role with nuget.org, its support for private hosting, the tools it provides for creating, publishing, and consuming packages, and its most important function of maintaining a reference list of packages used in a project along with the ability to restore and update those packages. + +To make these processes work efficiently, NuGet does some behind-the-scenes optimizations. Most notably, NuGet manages both machine-wide and project-specific package caches to shortcut installation and reinstallation. Where the machine-wide cache is concerned, any package that you download and install in a project is stored in the cache, such that installing the same package in another project doesn't have to download it again. This is clearly very helpful when you're frequently restoring a larger number of packages, as on a build server. For more details on the mechanism and how to work with it, see [Managing the NuGet cache](../consume-packages/managing-the-nuget-cache.md). + +Within an individual project, NuGet does a lot of work to manage the overall dependency graph, which includes resolving multiple references to different versions of the same package. (When using `project.json` or <PackageReference>, NuGet keeps that information in a secondary file called `project.lock.json` and `project.assets.json`, respectively.) That is, it's quite common that a project takes a dependency on one or more packages that themselves had the same dependencies. For example, the most popular package on nuget.org, Newtonsoft.Json, is quite frequently used by application and packages alike to manage JSON data, so in the entire dependency graph you could easily have ten different references to Newtonsoft.Json. At the same time, you don't want to bring multiple versions of that package into the application itself, so NuGet sorts out which single version that everyone can use. (See Dependency Resolution](consume-packages/dependency-resolution.md) for more on this topic.) + +Beyond that, NuGet maintains all the specifications related to how packages are structured (including [localization](Create-Packages/Creating-Localized-Packages.md) and [debug symbols](Create-Packages/Symbol-Packages.md) , how they are referenced (including [version ranges](consume-packages/dependency-versions.md) and [pre-release versions](create-packages/Prerelease-Packages.md), and provides APIs for credential providers (for accessing private hosts) and developer who write Visual Studio extensions and project templates... + +Take a moment to browse the table of contents for this documentation, and you'll see all of these capabilities represented there, along with release notes dating back to NuGet's beginnings. + +## Comments, contributions, and issues + +Finally, we very much welcome comments and contributions to this documentation—just select the **Comments** and **Edit** commands on this page, or visit the [docs repository](https://github.com/NuGet/docs.microsoft.com-nuget/) and [docs issue list](https://github.com/NuGet/docs.microsoft.com-nuget/issues) on GitHub. + +We also welcome contributions to NuGet itself through its [various GitHub repositories](https://github.com/NuGet); NuGet issues can be found on [https://github.com/NuGet/home/issues](https://github.com/NuGet/home/issues). + +Enjoy your NuGet experience! \ No newline at end of file diff --git a/docs/media/nuget-roles.png b/docs/media/nuget-roles.png new file mode 100644 index 0000000000000000000000000000000000000000..23eb5e7edad6a08021c89ab74fb165de8a8c2f03 GIT binary patch literal 77849 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∈aB5_jtIAb!>c`IV)wMXuQ}{FL!sqXvjN8~6 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 literal 0 HcmV?d00001 From bd874e4ad1c187db18477ea5b1b153128623fe08 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 14 Jun 2017 15:44:07 -0700 Subject: [PATCH 0041/2943] Add What is NuGet to TOC --- docs/TOC.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/TOC.md b/docs/TOC.md index 21ed735fa..790a02f11 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -1,3 +1,4 @@ +# [What is NuGet?](What-is-NuGet.md) # Quickstart ## [Create and Publish a Package](Quickstart/Create-and-Publish-a-Package.md) ## [Use a Package](Quickstart/Use-a-Package.md) From a368d38e5111cbf5accb8ac6fed223bf17877ac8 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 14 Jun 2017 15:46:52 -0700 Subject: [PATCH 0042/2943] Fix table --- docs/What-is-NuGet.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index b3e65d63d..5bf5174ae 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -47,6 +47,7 @@ A "compatible" package in this case means that it contains assemblies that are b In addition to providing the public nuget.org host, NuGet also provides a variety of tools used by both creators and consumers: | Tool | Applicable Scenarios | Description | +| --- | --- | --- | | [`nuget.exe` CLI](../tools/nuget-exe-cli-reference.md) | Creation, Consumption | Provides all NuGet capabilities, with some commands applying specifically to package creators, some applying only to consumers, and others applying to both. For example, the `nuget pack` command creates a package from various assemblies and related files and is used exclusively by package creators. The `nuget install` command installs a package into a project and is used by consumers. The `nuget config` command is used by everyone to set NuGet configuration variables. | | [Package Manager UI](../tools/package-manager-ui.md) | Consumption | Provides an easy-to-use UI through which developers can install and manage packages in .NET projects. | | [Package Manager Console](../tools/package-manager-console.md) | Consumption | Provides [PowerShell commands](../tools/Powershell-Reference.md) for installing and managing packages in .NET projects. | From 6b5687ad1816c788076c2b36d4c8a37046272f05 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 14 Jun 2017 15:51:24 -0700 Subject: [PATCH 0043/2943] Word change --- docs/What-is-NuGet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index 5bf5174ae..cc649a581 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -94,7 +94,7 @@ Take a moment to browse the table of contents for this documentation, and you'll ## Comments, contributions, and issues -Finally, we very much welcome comments and contributions to this documentation—just select the **Comments** and **Edit** commands on this page, or visit the [docs repository](https://github.com/NuGet/docs.microsoft.com-nuget/) and [docs issue list](https://github.com/NuGet/docs.microsoft.com-nuget/issues) on GitHub. +Finally, we very much welcome comments and contributions to this documentation—just select the **Comments** and **Edit** commands on any page, or visit the [docs repository](https://github.com/NuGet/docs.microsoft.com-nuget/) and [docs issue list](https://github.com/NuGet/docs.microsoft.com-nuget/issues) on GitHub. We also welcome contributions to NuGet itself through its [various GitHub repositories](https://github.com/NuGet); NuGet issues can be found on [https://github.com/NuGet/home/issues](https://github.com/NuGet/home/issues). From 65fd74c12b0a5102afa182213db2e53909a34714 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 14 Jun 2017 15:57:12 -0700 Subject: [PATCH 0044/2943] Add platforms to tools table --- docs/What-is-NuGet.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index cc649a581..b5131b882 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -46,15 +46,15 @@ A "compatible" package in this case means that it contains assemblies that are b In addition to providing the public nuget.org host, NuGet also provides a variety of tools used by both creators and consumers: -| Tool | Applicable Scenarios | Description | +| Tool | Platforms | Applicable Scenarios | Description | | --- | --- | --- | -| [`nuget.exe` CLI](../tools/nuget-exe-cli-reference.md) | Creation, Consumption | Provides all NuGet capabilities, with some commands applying specifically to package creators, some applying only to consumers, and others applying to both. For example, the `nuget pack` command creates a package from various assemblies and related files and is used exclusively by package creators. The `nuget install` command installs a package into a project and is used by consumers. The `nuget config` command is used by everyone to set NuGet configuration variables. | -| [Package Manager UI](../tools/package-manager-ui.md) | Consumption | Provides an easy-to-use UI through which developers can install and manage packages in .NET projects. | -| [Package Manager Console](../tools/package-manager-console.md) | Consumption | Provides [PowerShell commands](../tools/Powershell-Reference.md) for installing and managing packages in .NET projects. | -| [dotnet CLI](../tools/dotnet-commands.md) | Creation, Consumption | Provides certain NuGet CLI capabilities directly within the .NET Core toolchain. | -| [MSBuild](../schema/msbuild-targets.md) | Creation, Consumption | Provides the ability to create packages and restore packages used in a project directly through the MSBuild toolchain. | +| [nuget.exe CLI](../tools/nuget-exe-cli-reference.md) | All | Creation, Consumption | Provides all NuGet capabilities, with some commands applying specifically to package creators, some applying only to consumers, and others applying to both. For example, the `nuget pack` command creates a package from various assemblies and related files and is used exclusively by package creators. The `nuget install` command installs a package into a project and is used by consumers. The `nuget config` command is used by everyone to set NuGet configuration variables. | +| [Package Manager UI](../tools/package-manager-ui.md) | Visual Studio on Windows | Consumption | Provides an easy-to-use UI through which developers can install and manage packages in .NET projects. | +| [Package Manager Console](../tools/package-manager-console.md) | Visual Studio on Windows | Consumption | Provides [PowerShell commands](../tools/Powershell-Reference.md) for installing and managing packages in .NET projects. | +| [dotnet CLI](../tools/dotnet-commands.md) | All | Creation, Consumption | Provides certain NuGet CLI capabilities directly within the .NET Core toolchain. | +| [MSBuild](../schema/msbuild-targets.md) | Windows | Creation, Consumption | Provides the ability to create packages and restore packages used in a project directly through the MSBuild toolchain. | -As you can see, the tools you work with depend greatly on whether you're creating (and publishing) packages or consuming them. More specific details can be found in the [Package creation workflow](./Create-Packages/Overview-and-Workflow.md) and [Package consumption workflow](./Consume-Packages/Overview-and-Workflow.md) topics, along with other topics in those sections. +As you can see, the tools you work with depend greatly on whether you're creating (and publishing) packages or consuming them, and the platform you're working on. More specific details can be found in the [Package creation workflow](./Create-Packages/Overview-and-Workflow.md) and [Package consumption workflow](./Consume-Packages/Overview-and-Workflow.md) topics, along with other topics in those sections. Package creators are typically also consumers, as they build on top of functionality that exists in other NuGet packages. And those packages, of course, may in turn depend on still others. From 5295ba1495a3b9d756254aeba795df80adb970a2 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 14 Jun 2017 15:59:02 -0700 Subject: [PATCH 0045/2943] Table header --- docs/What-is-NuGet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index b5131b882..dc089fcfa 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -47,7 +47,7 @@ A "compatible" package in this case means that it contains assemblies that are b In addition to providing the public nuget.org host, NuGet also provides a variety of tools used by both creators and consumers: | Tool | Platforms | Applicable Scenarios | Description | -| --- | --- | --- | +| --- | --- | --- | --- | | [nuget.exe CLI](../tools/nuget-exe-cli-reference.md) | All | Creation, Consumption | Provides all NuGet capabilities, with some commands applying specifically to package creators, some applying only to consumers, and others applying to both. For example, the `nuget pack` command creates a package from various assemblies and related files and is used exclusively by package creators. The `nuget install` command installs a package into a project and is used by consumers. The `nuget config` command is used by everyone to set NuGet configuration variables. | | [Package Manager UI](../tools/package-manager-ui.md) | Visual Studio on Windows | Consumption | Provides an easy-to-use UI through which developers can install and manage packages in .NET projects. | | [Package Manager Console](../tools/package-manager-console.md) | Visual Studio on Windows | Consumption | Provides [PowerShell commands](../tools/Powershell-Reference.md) for installing and managing packages in .NET projects. | From 9c34212464bbefc63c3a96e6c4d1dc1addce4069 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 14 Jun 2017 16:15:15 -0700 Subject: [PATCH 0046/2943] Fix header --- docs/What-is-NuGet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index dc089fcfa..f15b47273 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -80,7 +80,7 @@ To check what method is in use for project, simply look for `packages.config` or You can also switch from one method to another. NuGet literally doesn't care which method you use, so long as you have the appropriate version of [NuGet installed](../guides/install-nuget.md). Older projects that use `packages.config` can be converted to use either `project.json` or PackageReference, and projects using `project.json` can also be converted to use PackageReference. For each package, simply create the appropriate reference element in the new file using the same package identifier and version number shown in the older file. ((TODO: make a topic for this migration showing examples.)) When it comes time to restore or update packages, NuGet will find whatever method you're using. -# What else does NuGet do? +## What else does NuGet do? So far we've seen NuGet's central hosting role with nuget.org, its support for private hosting, the tools it provides for creating, publishing, and consuming packages, and its most important function of maintaining a reference list of packages used in a project along with the ability to restore and update those packages. From f127fec2fe411efd82d8ecf4f0b8b4df6e8ee85d Mon Sep 17 00:00:00 2001 From: Nithin VR Date: Tue, 20 Jun 2017 12:37:24 +0530 Subject: [PATCH 0047/2943] Changing %ProgramFiles(x86)\NuGet to %ProgramFiles(x86)%\NuGet Changing %ProgramFiles(x86)\NuGet to %ProgramFiles(x86)%\NuGet, since copy paste the location is nor working since we missed a %. --- docs/Consume-Packages/Configuring-NuGet-Behavior.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index 81e3cd0a6..b14a3caab 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -54,7 +54,7 @@ The behavior of every NuGet command, whether issued from the command line, the P - NuGet 4.0+: located under `%ProgramFiles(x86)%\NuGet\Config` rather than `%ProgramData%`. > [!Note] -> The `%ProgramData%\NuGet` and `%ProgramFiles(x86)\NuGet` folders typically requires Administrator permissions to modify. Administrators are expected to set the correct permissions on these folders based on the user and/or machine information. +> The `%ProgramData%\NuGet` and `%ProgramFiles(x86)%\NuGet` folders typically requires Administrator permissions to modify. Administrators are expected to set the correct permissions on these folders based on the user and/or machine information. ## Changing config settings From 6a6045a0b58ca129931ebaaf3b9a2d60a2d01f8c Mon Sep 17 00:00:00 2001 From: Pascal Berger Date: Tue, 20 Jun 2017 10:49:22 +0200 Subject: [PATCH 0048/2943] Add link to 4.0 RTM release notes --- docs/TOC.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/TOC.md b/docs/TOC.md index 21ed735fa..44033ca1f 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -74,6 +74,7 @@ ## [Deleting Packages](Policies/Deleting-Packages.md) # Release Notes ## [Known Issues](Release-Notes/Known-Issues.md) +## [NuGet 4.0 RTM](Release-Notes/NuGet-4.0-RTM.md) ## [NuGet 4.0 RC](Release-Notes/NuGet-4.0-RC.md) ## [NuGet 3.5 RTM](Release-Notes/NuGet-3.5-RTM.md) ## [NuGet 3.5 RC](Release-Notes/NuGet-3.5-RC.md) From c7a200ba2ce73a73666225ffa7097a87197d454f Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 28 Jun 2017 15:53:06 -0700 Subject: [PATCH 0049/2943] Editing, and adding two more images. --- docs/What-is-NuGet.md | 48 +++++++++++++++++++++----------- docs/media/dependency-graph.png | Bin 0 -> 32308 bytes docs/media/nuget-restore.png | Bin 0 -> 46192 bytes 3 files changed, 31 insertions(+), 17 deletions(-) create mode 100644 docs/media/dependency-graph.png create mode 100644 docs/media/nuget-restore.png diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index f15b47273..33bad6ea2 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -30,43 +30,57 @@ ms.reviewer: # A simple introduction to NuGet -A mechanism through which developers can create, distribute, and consume useful libraries and packages with each other is essential for any modern development platform. For .NET, that mechanism is **NuGet**, first released in early 2011, which defines how packages for .NET are created, hosted, and consumed and provides the tools for each of those roles. +An essential tool for any modern development platform is a mechanism through which developers can create, share, and consume useful libraries and packages. For .NET, that mechanism is **NuGet**, which defines how packages for .NET are created, hosted, and consumed, and provides the tools for each of those roles. ## The flow of packages between creators, hosts, and consumers -With hosting, NuGet itself maintains the central repository for over 80,000 unique, publicly-available packages at [nuget.org](https://www.nuget.org), which are employed by millions of .NET developers. NuGet also enables you to host packages privately in the cloud, on a private network, or even on just your local file system, making packages available to only those developers within a particular organization or customer group. The options are explained on [Hosting your own NuGet feeds](../hosting/overview.md). +In its role as host, NuGet itself maintains the central repository of over 60,000 unique, publicly-available packages at [nuget.org](https://www.nuget.org). These packages are employed by millions of .NET developers every day. NuGet also enables you to host packages privately in the cloud, on a private network, or even on just your local file system. By doing so, those packages are available to only those developers within a particular organization or customer group. The options are explained on [Hosting your own NuGet feeds](../hosting/overview.md). -Whatever its nature, the host serves as a point of connection between package *creators* and package *consumers*. Creators build useful packages and publish them to a host. Consumers then search for useful and compatible packages on accessible NuGet hosts, downloading and including those packages in their projects which makes the packages' APIs available to the rest of the project code. +Whatever its nature, a host serves as a point of connection between package *creators* and package *consumers*. Creators build useful NuGet packages and publish them to a host. Consumers then search for useful and compatible packages on accessible hosts, downloading and including those packages in their projects. Once installed in a project, the packages' APIs are available to the rest of the project code. ![Relationship between package creators, package hosts, and package consumers](media/nuget-roles.png) -A "compatible" package in this case means that it contains assemblies that are built for at least one target .NET framework that's compatible with the consuming project's target framework. To make a package widely compatible, it's creator compiles separate assemblies for each target framework and includes all of them in the same package. When a consumer installs that package, NuGet extracts only those assemblies that are needed by the project, thereby minimizing the package's footprint in the final application and/or assemblies produced by that project. +A "compatible" package in this case means that it contains assemblies built for at least one target .NET framework that's compatible with the consuming project's target framework. To make a package widely compatible, it's creator compiles separate assemblies for various target frameworks and includes all of them in the same package. When a consumer installs that package, NuGet extracts only those assemblies that are needed by the project. This minimizes the package's footprint in the final application and/or assemblies produced by that project. ## NuGet tools -In addition to providing the public nuget.org host, NuGet also provides a variety of tools used by both creators and consumers: +In addition to hosting support, NuGet also provides a variety of tools used by both creators and consumers: | Tool | Platforms | Applicable Scenarios | Description | | --- | --- | --- | --- | -| [nuget.exe CLI](../tools/nuget-exe-cli-reference.md) | All | Creation, Consumption | Provides all NuGet capabilities, with some commands applying specifically to package creators, some applying only to consumers, and others applying to both. For example, the `nuget pack` command creates a package from various assemblies and related files and is used exclusively by package creators. The `nuget install` command installs a package into a project and is used by consumers. The `nuget config` command is used by everyone to set NuGet configuration variables. | -| [Package Manager UI](../tools/package-manager-ui.md) | Visual Studio on Windows | Consumption | Provides an easy-to-use UI through which developers can install and manage packages in .NET projects. | +| [nuget.exe CLI](../tools/nuget-exe-cli-reference.md) | All | Creation, Consumption | Provides all NuGet capabilities, with some commands applying specifically to package creators, some applying only to consumers, and others applying to both. For example, package creators use the `nuget pack` command to create a package from various assemblies and related files, package consumers use `nuget install` to include packages in a project, and everyone uses `nuget config` to set NuGet configuration variables. | +| [Package Manager UI](../tools/package-manager-ui.md) | Visual Studio on Windows | Consumption | Provides an easy-to-use UI for installing and managing packages in .NET projects. | | [Package Manager Console](../tools/package-manager-console.md) | Visual Studio on Windows | Consumption | Provides [PowerShell commands](../tools/Powershell-Reference.md) for installing and managing packages in .NET projects. | | [dotnet CLI](../tools/dotnet-commands.md) | All | Creation, Consumption | Provides certain NuGet CLI capabilities directly within the .NET Core toolchain. | | [MSBuild](../schema/msbuild-targets.md) | Windows | Creation, Consumption | Provides the ability to create packages and restore packages used in a project directly through the MSBuild toolchain. | -As you can see, the tools you work with depend greatly on whether you're creating (and publishing) packages or consuming them, and the platform you're working on. More specific details can be found in the [Package creation workflow](./Create-Packages/Overview-and-Workflow.md) and [Package consumption workflow](./Consume-Packages/Overview-and-Workflow.md) topics, along with other topics in those sections. +As you can see, the tools with which you work with NuGet depend greatly on whether you're creating (and publishing) packages or consuming them, and the platform you're working on. More specific details can be found in the [Package creation workflow](./Create-Packages/Overview-and-Workflow.md) and [Package consumption workflow](./Consume-Packages/Overview-and-Workflow.md) topics, along with other topics in those sections. Package creators are typically also consumers, as they build on top of functionality that exists in other NuGet packages. And those packages, of course, may in turn depend on still others. -## Managing dependencies and package restore +## Managing dependencies -The ability to easily build on the work of others is one of the things that makes a package management system so powerful, and thus much of what NuGet does is managing that dependency tree or "graph" on behalf of your project. Simply said, all that any given project should concern itself with are only those packages that it's using directly. NuGet can worry about all other down-level dependencies. +The ability to easily build on the work of others is one of the things that makes a package management system so powerful. Accordingly, much of what NuGet does is managing that dependency tree or "graph" on behalf of your project. Simply said, you need only concern yourself with those packages that you're directly using in a project. If any of those packages themselves consume other packages (which can consume packages), NuGet takes care of all those down-level dependencies. -It's also important to manage those dependencies in such a way that projects can easily move between developer computers, source control repositories, build servers, and so forth. For this reason it's highly impractical to keep binary assemblies from NuGet packages directly bound to a project. Not only would this make each copy of the project unnecessarily bloated (and thereby waste space in source control repositories), it would also make it very difficult to update package binaries to newer versions as this would have to be done across all copies of the project. +The following image shows a project that depends on five packages, which in turn depend on a number of others. -Instead, NuGet simply maintains a reference list of the packages upon which a project depends, and provides the means to restore all referenced packages upon request. That is, whenever you install a package from some host into a project, NuGet records the package identifier and version number in this reference list. (Uninstalling a package, of course, removes it from the list.) When it comes time to commit the project to source control (or to share is some other way), you need include only the reference list and not any of the package binaries, because those packages can simply be reinstalled—restores—from a public and/or private hosts at any later time using only the reference list. (For this reason, nuget.org does not allow permanent deletion of published packages, although they can be hidden; see [Deleting packages](policies/deleting-packages.md).) +![An example NuGet dependency graph for a .NET project](media/dependency-graph.png) -Thus if the project is copied onto a build server as part of an automated deployment system, for example, the build system can simply ask NuGet to restore dependencies at the beginning of the process. Build systems like Visual Studio Team Services provide NuGet package restore steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository) then open the project in Visual Studio and run a build, Visual Studio automatically restores the necessary NuGet packages. Developers can also tell NuGet to restore packages at any time using the the `nuget restore` CLI command or the `Install-Package` cmdlet in the Package Manager Console. +Notice that some packages appear multiple times in the dependency graph. For example, there are four different consumers of package B, and each consumer might also specify a different version for that package (not shown). Because this is a common occurrence, NuGet fortunately does all the hard work to determine exactly which version of package B will satisfy all its consumers. NuGet then does the same for all other packages, no matter how deep the dependency graph becomes. + +For more details on how NuGet performs this service, see [Dependency resolution](./Consume-Packages/Dependency-Resolution.md). + +## Tracking references and restoring packages + +Because projects can easily move between developer computers, source control repositories, build servers, and so forth, it's highly impractical to keep binary assemblies from NuGet packages directly bound to a project. Not only would this make each copy of the project unnecessarily bloated (and thereby waste space in source control repositories), it would also make it very difficult to update package binaries to newer versions as this would have to be done across all copies of the project. + +Instead, NuGet simply maintains a reference list of the packages upon which a project depends (including both top-level and down-level dependencies), and provides the means to restore all referenced packages upon request as described on [Package restore](./Consume-Packages/Package-Restore.md). That is, whenever you install a package from some host into a project, NuGet records the package identifier and version number in this reference list. (Uninstalling a package, of course, removes it from the list.) + +![A NuGet reference list is created on package installation and can be used to restore packages elsewhere](media/nuget-restore.png) + +With only the reference list, NuGet can then reinstall—that is, restore—all of those packages from public and/or private hosts at any later time. (For this reason, nuget.org does not allow permanent deletion of published packages, although they can be hidden; see [Deleting packages](policies/deleting-packages.md).) When committing a project to source control, or sharing it is some other way, you need only include the reference list and need not include any package binaries (see [Packages and source control](./Consume-Packages/Packages-and-Source-Control.md). + +The computer that receives a project, such as a build server obtaining a copy of the project as part of an automated deployment system, simply asks NuGet to restore dependencies whenever they're needed. Build systems like Visual Studio Team Services provide "NuGet restore" steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository) then open the project in Visual Studio and run a build, Visual Studio automatically restores the necessary NuGet packages. Developers can also tell NuGet to restore packages at any time using the the `nuget restore` CLI command or the `Install-Package` cmdlet in the Package Manager Console. Clearly, then, NuGet's primarily role where developers are concerned is maintaining that reference list on behalf of your project and providing the means to efficiently restore (and update) those referenced packages. @@ -78,17 +92,17 @@ How this exactly happens has evolved over the different versions of NuGet: To check what method is in use for project, simply look for `packages.config` or `project.json` in the project root after installing your first package. If you don't see either file, look in the project file directly for a <PackageReference>element. This is the case for most new projects created in Visual Studio 2017. -You can also switch from one method to another. NuGet literally doesn't care which method you use, so long as you have the appropriate version of [NuGet installed](../guides/install-nuget.md). Older projects that use `packages.config` can be converted to use either `project.json` or PackageReference, and projects using `project.json` can also be converted to use PackageReference. For each package, simply create the appropriate reference element in the new file using the same package identifier and version number shown in the older file. ((TODO: make a topic for this migration showing examples.)) When it comes time to restore or update packages, NuGet will find whatever method you're using. +You can also switch from one method to another. NuGet literally doesn't care which method you use, so long as you have the appropriate version of [NuGet installed](../guides/install-nuget.md). Older projects that use `packages.config` can be converted to use either `project.json` or PackageReference, and projects using `project.json` can also be converted to use PackageReference. For each package, simply create the appropriate reference element in the new file using the same package identifier and version number shown in the older file. When it comes time to restore or update packages, NuGet will find whatever method you're using. ## What else does NuGet do? -So far we've seen NuGet's central hosting role with nuget.org, its support for private hosting, the tools it provides for creating, publishing, and consuming packages, and its most important function of maintaining a reference list of packages used in a project along with the ability to restore and update those packages. +So far we've seen a number of NuGet's capabilities and services. In its hosting role, NuGet provides the central nuget.org repository and supports private hosting. NuGet provides the tools developers need for creating, publishing, and consuming packages. And most importantly, NuGet maintains a reference list of packages used in a project and the ability to restore and update those packages from that list. To make these processes work efficiently, NuGet does some behind-the-scenes optimizations. Most notably, NuGet manages both machine-wide and project-specific package caches to shortcut installation and reinstallation. Where the machine-wide cache is concerned, any package that you download and install in a project is stored in the cache, such that installing the same package in another project doesn't have to download it again. This is clearly very helpful when you're frequently restoring a larger number of packages, as on a build server. For more details on the mechanism and how to work with it, see [Managing the NuGet cache](../consume-packages/managing-the-nuget-cache.md). -Within an individual project, NuGet does a lot of work to manage the overall dependency graph, which includes resolving multiple references to different versions of the same package. (When using `project.json` or <PackageReference>, NuGet keeps that information in a secondary file called `project.lock.json` and `project.assets.json`, respectively.) That is, it's quite common that a project takes a dependency on one or more packages that themselves had the same dependencies. For example, the most popular package on nuget.org, Newtonsoft.Json, is quite frequently used by application and packages alike to manage JSON data, so in the entire dependency graph you could easily have ten different references to Newtonsoft.Json. At the same time, you don't want to bring multiple versions of that package into the application itself, so NuGet sorts out which single version that everyone can use. (See Dependency Resolution](consume-packages/dependency-resolution.md) for more on this topic.) +Within an individual project, NuGet does a lot of work to manage the overall dependency graph. (When using `project.json` or <PackageReference>, NuGet keeps that information in a secondary file called `project.lock.json` and `project.assets.json`, respectively.) This again includes resolving multiple references to different versions of the same package. That is, it's quite common that a project takes a dependency on one or more packages that themselves had the same dependencies. For example, the most popular package on nuget.org, Newtonsoft.Json, is quite frequently used by application and packages alike to manage JSON data, so in the entire dependency graph you could easily have ten different references to Newtonsoft.Json. At the same time, you don't want to bring multiple versions of that package into the application itself, so NuGet sorts out which single version that everyone can use. (See [Dependency Resolution](consume-packages/dependency-resolution.md) for more on this topic.) -Beyond that, NuGet maintains all the specifications related to how packages are structured (including [localization](Create-Packages/Creating-Localized-Packages.md) and [debug symbols](Create-Packages/Symbol-Packages.md) , how they are referenced (including [version ranges](consume-packages/dependency-versions.md) and [pre-release versions](create-packages/Prerelease-Packages.md), and provides APIs for credential providers (for accessing private hosts) and developer who write Visual Studio extensions and project templates... +Beyond that, NuGet maintains all the specifications related to how packages are structured (including [localization](Create-Packages/Creating-Localized-Packages.md) and [debug symbols](Create-Packages/Symbol-Packages.md) and how they are referenced (including [version ranges](consume-packages/dependency-versions.md) and [pre-release versions](create-packages/Prerelease-Packages.md). NuGet also and provides APIs for credential providers (for accessing private hosts) and for developers who write Visual Studio extensions and project templates. Take a moment to browse the table of contents for this documentation, and you'll see all of these capabilities represented there, along with release notes dating back to NuGet's beginnings. diff --git a/docs/media/dependency-graph.png b/docs/media/dependency-graph.png new file mode 100644 index 0000000000000000000000000000000000000000..402365ce70f5567b857e276c4b76506e97584458 GIT binary patch literal 32308 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 f5NY8PLjTp}BV*NZ&PhlxP^c-NRmxJhkLgkc literal 0 HcmV?d00001 diff --git a/docs/media/nuget-restore.png b/docs/media/nuget-restore.png new file mode 100644 index 0000000000000000000000000000000000000000..2d7d344e5bdac5aff1d881f429118ac1bbbaf603 GIT binary patch literal 46192 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\2B+KaiZ#CygQ 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 literal 0 HcmV?d00001 From bbeae1c89796c1d0831e1bd31b2caaadc5e3593c Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 28 Jun 2017 15:58:09 -0700 Subject: [PATCH 0050/2943] Add link to Mac docs --- docs/What-is-NuGet.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index 33bad6ea2..6e2a5bb80 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -50,6 +50,7 @@ In addition to hosting support, NuGet also provides a variety of tools used by b | --- | --- | --- | --- | | [nuget.exe CLI](../tools/nuget-exe-cli-reference.md) | All | Creation, Consumption | Provides all NuGet capabilities, with some commands applying specifically to package creators, some applying only to consumers, and others applying to both. For example, package creators use the `nuget pack` command to create a package from various assemblies and related files, package consumers use `nuget install` to include packages in a project, and everyone uses `nuget config` to set NuGet configuration variables. | | [Package Manager UI](../tools/package-manager-ui.md) | Visual Studio on Windows | Consumption | Provides an easy-to-use UI for installing and managing packages in .NET projects. | +| [Manage NuGet UI](https://docs.microsoft.com/en-us/visualstudio/mac/nuget-walkthrough) | Visual Studio for Mac | Consumption | Provide an easy-to-use UI for installing and managing packages in .NET projects. | | [Package Manager Console](../tools/package-manager-console.md) | Visual Studio on Windows | Consumption | Provides [PowerShell commands](../tools/Powershell-Reference.md) for installing and managing packages in .NET projects. | | [dotnet CLI](../tools/dotnet-commands.md) | All | Creation, Consumption | Provides certain NuGet CLI capabilities directly within the .NET Core toolchain. | | [MSBuild](../schema/msbuild-targets.md) | Windows | Creation, Consumption | Provides the ability to create packages and restore packages used in a project directly through the MSBuild toolchain. | From 5feb667ffcfe47e2d1bf7162b0dd6e585f267981 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 28 Jun 2017 16:01:05 -0700 Subject: [PATCH 0051/2943] Resize graphic --- docs/media/dependency-graph.png | Bin 32308 -> 45877 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/media/dependency-graph.png b/docs/media/dependency-graph.png index 402365ce70f5567b857e276c4b76506e97584458..1312332a6df2f38449a2bcc82195e49f06e8ae03 100644 GIT binary patch literal 45877 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 literal 32308 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 f5NY8PLjTp}BV*NZ&PhlxP^c-NRmxJhkLgkc From 3b5a0c6e3ae3859eec0b81a116beb6c5b35bc120 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 29 Jun 2017 16:15:21 -0700 Subject: [PATCH 0052/2943] Correcting typo --- docs/Tools/Package-Manager-Console.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index d7ed45592..e05876fb6 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -13,7 +13,7 @@ ms.technology: null ms.assetid: 2b92b119-6861-406c-82af-9d739af230e4 # optional metadata -T + description: Instructions for using the NuGet Package Manager Console in Visual Studio for working with packages. keywords: NuGet package manager console, NuGet powershell, managing NuGet packages #ROBOTS: From 1994ed67507bf806f37fe4b505fe8989ab864722 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 29 Jun 2017 16:16:41 -0700 Subject: [PATCH 0053/2943] Fixing metadata typo --- docs/Tools/Package-Manager-Console.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index d7ed45592..e05876fb6 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -13,7 +13,7 @@ ms.technology: null ms.assetid: 2b92b119-6861-406c-82af-9d739af230e4 # optional metadata -T + description: Instructions for using the NuGet Package Manager Console in Visual Studio for working with packages. keywords: NuGet package manager console, NuGet powershell, managing NuGet packages #ROBOTS: From 5854e4c425c03927fcfab7fa6534df6830a35478 Mon Sep 17 00:00:00 2001 From: Csaba Toth Date: Sun, 2 Jul 2017 16:22:41 -0700 Subject: [PATCH 0054/2943] .csproj is not needed when reinstalling all packages for a specific project I'm using VS 2017 + NuGet 4.0.0, not sure for what version is this true --- docs/Consume-Packages/Reinstalling-and-Updating-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index d275e08ca..53402a244 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -49,7 +49,7 @@ Update-Package To update all packages in a specific project, use the `-ProjectName` argument: ```ps -Update-Package -ProjectName application-project.csproj +Update-Package -ProjectName ``` Using `Update-Package` by itself, with no other arguments, will update all packages in all projects in the current folder. See the [Update-Package command](../Tools/ps-ref-update-package.md) reference for complete usage details. From 7cd3615ca2fbd653873a473505be4919683327b2 Mon Sep 17 00:00:00 2001 From: Csaba Toth Date: Sun, 2 Jul 2017 16:27:40 -0700 Subject: [PATCH 0055/2943] Just removing an unnecessary space --- docs/Consume-Packages/Reinstalling-and-Updating-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index d275e08ca..9836a44d6 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -54,7 +54,7 @@ Update-Package -ProjectName application-project.csproj Using `Update-Package` by itself, with no other arguments, will update all packages in all projects in the current folder. See the [Update-Package command](../Tools/ps-ref-update-package.md) reference for complete usage details. -Updating packages in a project or solution using `project.json` or [package references in project files](../Consume-Packages/Package-References-in-Project-Files.md) always updates to the latest version of the package (excluding pre-release packages). Projects that use `packages.config` can, if desired, limit update versions as described below in[Constraining upgrade versions](#constraining-upgrade-versions). +Updating packages in a project or solution using `project.json` or [package references in project files](../Consume-Packages/Package-References-in-Project-Files.md) always updates to the latest version of the package (excluding pre-release packages). Projects that use `packages.config` can, if desired, limit update versions as described below in [Constraining upgrade versions](#constraining-upgrade-versions). ## When to Reinstall a Package From 7ade7c5e4486dda5a1cc225c1cf58794b128c7b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Gill=C3=A9?= Date: Mon, 3 Jul 2017 23:08:00 +0200 Subject: [PATCH 0056/2943] Fix spelling --- docs/Consume-Packages/Dependency-Resolution.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Dependency-Resolution.md b/docs/Consume-Packages/Dependency-Resolution.md index 55d81622a..7eb965fee 100644 --- a/docs/Consume-Packages/Dependency-Resolution.md +++ b/docs/Consume-Packages/Dependency-Resolution.md @@ -135,7 +135,7 @@ There are scenarios in which assemblies with the same name might be referenced m To resolve this, you must directly reference the `C.dll` you want (or use another package that references the right one), and then add a dependency on packageC that excludes all its assets. This is done as follows: -- If you're project is using `packages.config` for tracking NuGet dependencies, simply remove the reference to packageC from the `.csproj` file so that it references only the version of `C.dll` that you want. +- If your project is using `packages.config` for tracking NuGet dependencies, simply remove the reference to packageC from the `.csproj` file so that it references only the version of `C.dll` that you want. - If your project uses `project.json` for NuGet, add `"exclude" : "all"` in the dependency for packageC: From d2f3d831703a538f7d1b9538d672d66c421aacb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louis=20Hau=C3=9Fknecht?= Date: Tue, 4 Jul 2017 17:27:59 +0200 Subject: [PATCH 0057/2943] Make the default dependency behavior visible --- docs/Tools/Package-Manager-UI.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index 070e26ca3..5efc4dc89 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -143,7 +143,7 @@ When checked, a modal window displays which dependent packages will be loaded wi **Dependency behavior** configures how NuGet decides which versions of dependent packages to install: - *Ignore dependencies* skips installing any dependencies, which typically breaks the package being installed. -- *Lowest* installs the dependency with the minimal version number that meets the requirements of the primary chosen package. +- *Lowest* [Default] installs the dependency with the minimal version number that meets the requirements of the primary chosen package. - *Highest Patch* installs the version with the same major and minor version numbers, but the highest patch number. For example, if version 1.2.2 is specified then the highest version that starts with 1.2 will be installed - *Highest Minor* installs the version with the same major version number but the highest minor number and patch number. If version 1.2.2 is specified, then the highest version that starts with 1 will be installed - *Highest* installs the highest available version of the package. From 24337b8dfdebfc6fc468e8d8278f80a03a65930e Mon Sep 17 00:00:00 2001 From: jefsmo Date: Tue, 4 Jul 2017 14:04:00 -0700 Subject: [PATCH 0058/2943] Update msbuild-targets.md Added two dots to the path for the .nupkg file. $(OutputPath)..\$(PackageId).$(PackageVersion).nupkg This is because $(OutputPath) for a .Net Standard class library is set in the .csproj file by default to 'bin\Release\netstandard1.6\'. (Note the trailing backslash char also, no need to add an extra backslash, just the two dots.) Therefore, you need to navigate up one level to get to bin\Release\*.nupkg --- docs/Schema/msbuild-targets.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Schema/msbuild-targets.md b/docs/Schema/msbuild-targets.md index 101183f3e..dbdc32756 100644 --- a/docs/Schema/msbuild-targets.md +++ b/docs/Schema/msbuild-targets.md @@ -50,7 +50,7 @@ Because `pack` and `restore` are MSBuild targets, you can access them to enhanc ```xml From 6c8b8f30bd209e14999bf23c39b178492332a305 Mon Sep 17 00:00:00 2001 From: tsahi Date: Wed, 5 Jul 2017 17:09:36 +0300 Subject: [PATCH 0059/2943] fix indentation in .nuspec example --- docs/Schema/nuspec.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index 61b945872..7a33c5ebf 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -53,14 +53,14 @@ Within this schema, a `.nuspec` file has the following general form: - - - - - - - - + + + + + + + + From 7c1010844e69d053dc11f768367b2dea13b5fa2b Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 17 Jul 2017 11:29:52 -0700 Subject: [PATCH 0060/2943] Updates to What is NuGet --- docs/Consume-Packages/Dependency-Resolution.md | 2 +- .../Packages-and-Source-Control.md | 2 +- docs/What-is-NuGet.md | 18 ++++++++++-------- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/docs/Consume-Packages/Dependency-Resolution.md b/docs/Consume-Packages/Dependency-Resolution.md index 55d81622a..be83aedcf 100644 --- a/docs/Consume-Packages/Dependency-Resolution.md +++ b/docs/Consume-Packages/Dependency-Resolution.md @@ -44,7 +44,7 @@ In some cases, such as when there's a conflict between a dependency specified in When `packages.config` is used (NuGet 2.x+), a project's dependencies are written to `packages.config` as a flat list. Any dependencies of those packages are also written in the same list. When packages are installed, NuGet might also modify the `.csproj` file, `app.config`, `web.config`, and other individual files. -With `packages.config`, NuGet attempts to resolve dependency conflicts during the installation of each individual package. That is, if Package A is being installed and depends on Package B, and Package B is already listed in `packages.config` as a dependency of something else, NuGet compares the versions of Package B being requested and attempts to find a version that satisfies all version constraints. Specifically, NuGet selects the lower *major.minor* version that satisfies dependencies. +With `packages.config`, NuGet attempts to resolve dependency conflicts during the installation of each individual package. That is, if Package A is being installed and depends on Package B, and Package B is already listed in `packages.config` as a dependency of something else, NuGet compares the versions of Package B being requested and attempts to find a version that satisfies all version constraints. Specifically, NuGet selects the lowest *major.minor* version that satisfies dependencies. By default, NuGet 2.7 and earlier resolves the highest *patch* version (using the *major.minor.patch.build* convention). [NuGet 2.8 and higher](../release-notes/nuget-2.8.md#patch-resolution-for-dependencies) changes this behavior to look for the lowest patch version by default. You can control this setting through the `DependencyVersion` attribute in `Nuget.Config` and the `-DependencyVersion` switch on the command line. diff --git a/docs/Consume-Packages/Packages-and-Source-Control.md b/docs/Consume-Packages/Packages-and-Source-Control.md index 2f42dba1f..b241e9679 100644 --- a/docs/Consume-Packages/Packages-and-Source-Control.md +++ b/docs/Consume-Packages/Packages-and-Source-Control.md @@ -73,7 +73,7 @@ project.lock.json To disable source control integration with TFVC for selected files: 1. Create a folder called `.nuget` in your solution folder (where the `.sln` file is). - - Tip: on Windows, to create this folder in Windows Explorer, use the name `.nuget.` *with* the training dot. + - Tip: on Windows, to create this folder in Windows Explorer, use the name `.nuget.` *with* the trailing dot. 1. In that folder, create a file named `NuGet.Config` and open it for editing. diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index 6e2a5bb80..7a9ebcd95 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -5,8 +5,8 @@ title: What is NuGet and what does it do? | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 6/14/2017 -ms.topic: article +ms.date: 7/12/2017 +ms.topic: hero-article ms.prod: nuget #ms.service: ms.technology: null @@ -85,15 +85,15 @@ The computer that receives a project, such as a build server obtaining a copy of Clearly, then, NuGet's primarily role where developers are concerned is maintaining that reference list on behalf of your project and providing the means to efficiently restore (and update) those referenced packages. -How this exactly happens has evolved over the different versions of NuGet: +How this exactly happens has evolved over the different versions of NuGet, resulting in several *package management formats*, as they're called: - [`packages.config`](../schema/packages.config.md): *(NuGet 1.0+)* An XML file that maintains a flat list of all dependencies in the project, including the dependencies of other installed packages. -- [`project.json`](../schema/project-json.md): *(NuGet 3.0+)* A JSON file that maintains a list of the project's dependencies with an overall package graph in an associated file, `project.lock.json`. This structure provides improved performance over `packages.config` as described on [Dependency Resolution](../consume-packages/dependency-resolution.md). +- [`project.json`](../schema/project-json.md): *(NuGet 3.0+)* A JSON file that maintains a list of the project's dependencies with an overall package graph in an associated file, `project.lock.json`. This structure provides improved performance over `packages.config` as described on [Dependency Resolution](../consume-packages/dependency-resolution.md), but also has been generally superceded by PackageReference below. - [Package references in project files](../consume-packages/package-references-in-project-files.md) (also known as "PackageReference") | *(NuGet 4.0+)* Maintains a list of a project's top-level dependencies directly within the project file, so no separate file is needed. An associated file, `project.assets.json`, is dynamically generated like `project.lock.json` to manage the overall dependency graph. -To check what method is in use for project, simply look for `packages.config` or `project.json` in the project root after installing your first package. If you don't see either file, look in the project file directly for a <PackageReference>element. This is the case for most new projects created in Visual Studio 2017. +Which package management format is employed in any given project depends on the project type and the available version of NuGet. To check what format is being used, simply look for `packages.config` or `project.json` in the project root after installing your first package. If you don't see either file, look in the project file directly for a <PackageReference>element. This is the case for most new projects created in Visual Studio 2017. (You can change this default in Visual Studio through **Tools > Options > NuGet Package Manager** in the **Package Management** settings. -You can also switch from one method to another. NuGet literally doesn't care which method you use, so long as you have the appropriate version of [NuGet installed](../guides/install-nuget.md). Older projects that use `packages.config` can be converted to use either `project.json` or PackageReference, and projects using `project.json` can also be converted to use PackageReference. For each package, simply create the appropriate reference element in the new file using the same package identifier and version number shown in the older file. When it comes time to restore or update packages, NuGet will find whatever method you're using. +You can also switch from one format to another. NuGet literally doesn't care which method you use, so long as you have the appropriate version of [NuGet installed](../guides/install-nuget.md). Older projects that use `packages.config` can be converted to use either `project.json` or PackageReference, and projects using `project.json` can also be converted to use PackageReference. For each package, simply create the appropriate reference element in the new file using the same package identifier and version number shown in the older file. When it comes time to restore or update packages, NuGet will find whatever method you're using. ## What else does NuGet do? @@ -101,7 +101,9 @@ So far we've seen a number of NuGet's capabilities and services. In its hosting To make these processes work efficiently, NuGet does some behind-the-scenes optimizations. Most notably, NuGet manages both machine-wide and project-specific package caches to shortcut installation and reinstallation. Where the machine-wide cache is concerned, any package that you download and install in a project is stored in the cache, such that installing the same package in another project doesn't have to download it again. This is clearly very helpful when you're frequently restoring a larger number of packages, as on a build server. For more details on the mechanism and how to work with it, see [Managing the NuGet cache](../consume-packages/managing-the-nuget-cache.md). -Within an individual project, NuGet does a lot of work to manage the overall dependency graph. (When using `project.json` or <PackageReference>, NuGet keeps that information in a secondary file called `project.lock.json` and `project.assets.json`, respectively.) This again includes resolving multiple references to different versions of the same package. That is, it's quite common that a project takes a dependency on one or more packages that themselves had the same dependencies. For example, the most popular package on nuget.org, Newtonsoft.Json, is quite frequently used by application and packages alike to manage JSON data, so in the entire dependency graph you could easily have ten different references to Newtonsoft.Json. At the same time, you don't want to bring multiple versions of that package into the application itself, so NuGet sorts out which single version that everyone can use. (See [Dependency Resolution](consume-packages/dependency-resolution.md) for more on this topic.) +Within an individual project, NuGet does a lot of work to manage the overall dependency graph. (When using `project.json` or <PackageReference>, NuGet keeps that information in a secondary file called `project.lock.json` and `project.assets.json`, respectively.) This again includes resolving multiple references to different versions of the same package. + +That is, it's quite common that a project takes a dependency on one or more packages that themselves have the same dependencies. For example, some of the most useful utility packages on nuget.org are employed by many other packages. In the entire dependency graph, ten, you could easily have ten different references to different versions of the same package. However, you don't want to bring multiple versions of that package into the application itself, so NuGet sorts out which single version that everyone can use. (See [Dependency Resolution](consume-packages/dependency-resolution.md) for more on this topic.) Beyond that, NuGet maintains all the specifications related to how packages are structured (including [localization](Create-Packages/Creating-Localized-Packages.md) and [debug symbols](Create-Packages/Symbol-Packages.md) and how they are referenced (including [version ranges](consume-packages/dependency-versions.md) and [pre-release versions](create-packages/Prerelease-Packages.md). NuGet also and provides APIs for credential providers (for accessing private hosts) and for developers who write Visual Studio extensions and project templates. @@ -111,6 +113,6 @@ Take a moment to browse the table of contents for this documentation, and you'll Finally, we very much welcome comments and contributions to this documentation—just select the **Comments** and **Edit** commands on any page, or visit the [docs repository](https://github.com/NuGet/docs.microsoft.com-nuget/) and [docs issue list](https://github.com/NuGet/docs.microsoft.com-nuget/issues) on GitHub. -We also welcome contributions to NuGet itself through its [various GitHub repositories](https://github.com/NuGet); NuGet issues can be found on [https://github.com/NuGet/home/issues](https://github.com/NuGet/home/issues). +We also welcome contributions to NuGet itself through its [various GitHub repositories](https://github.com/NuGet/Home); NuGet issues can be found on [https://github.com/NuGet/home/issues](https://github.com/NuGet/home/issues). Enjoy your NuGet experience! \ No newline at end of file From ce8801639dea148d52e9393159c4952efd090e83 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 17 Jul 2017 11:30:35 -0700 Subject: [PATCH 0061/2943] Add link to repos https://github.com/NuGet/docs.microsoft.com-nuget/issues/390 --- docs/TOC.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/TOC.md b/docs/TOC.md index 21ed735fa..d41dc1ec9 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -72,6 +72,7 @@ ## [Ecosystem](Policies/Ecosystem.md) ## [Dispute Resolution](Policies/Dispute-Resolution.md) ## [Deleting Packages](Policies/Deleting-Packages.md) +# [GitHub Repositories](https://github.com/NuGet) # Release Notes ## [Known Issues](Release-Notes/Known-Issues.md) ## [NuGet 4.0 RC](Release-Notes/NuGet-4.0-RC.md) From d96fec17082b5b89fcfc4bd850b7217c6829f783 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 17 Jul 2017 12:08:03 -0700 Subject: [PATCH 0062/2943] Corrections to UpdatePackage usage From customer comments --- .../Packages-and-Source-Control.md | 2 +- .../Reinstalling-and-Updating-Packages.md | 29 ++++++++++++++----- docs/Tools/ps-ref-update-package.md | 10 +++---- 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/docs/Consume-Packages/Packages-and-Source-Control.md b/docs/Consume-Packages/Packages-and-Source-Control.md index 2f42dba1f..b241e9679 100644 --- a/docs/Consume-Packages/Packages-and-Source-Control.md +++ b/docs/Consume-Packages/Packages-and-Source-Control.md @@ -73,7 +73,7 @@ project.lock.json To disable source control integration with TFVC for selected files: 1. Create a folder called `.nuget` in your solution folder (where the `.sln` file is). - - Tip: on Windows, to create this folder in Windows Explorer, use the name `.nuget.` *with* the training dot. + - Tip: on Windows, to create this folder in Windows Explorer, use the name `.nuget.` *with* the trailing dot. 1. In that folder, create a file named `NuGet.Config` and open it for editing. diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index b32ceb56d..bdaa3b78f 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -5,7 +5,7 @@ title: Reinstalling and Updating NuGet Packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 5/24/2017 +ms.date: 7/17/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -35,27 +35,40 @@ There are a number of situations, described below under [When to Reinstall a Pac Being mindful of the [Considerations](#considerations) described later, you can easily reinstall any package using the [Update-Package command](../Tools/ps-ref-update-package.md) in the Visual Studio Package Manager Console (**Tools** > **NuGet Package Manager** > **Package Manager Console**): ```ps -Update-Package –reinstall +Update-Package -Id –reinstall ``` -Using this command, where `` is replaced with the specific package name you want, is much easier than removing a package and then trying to locate the same package in the NuGet gallery with the same version. +Using this command is much easier than removing a package and then trying to locate the same package in the NuGet gallery with the same version. Note that the `-Id` switch is optional. -The same command without `-reinstall` will update a package to a newer version, if applicable: +The same command without `-reinstall` updates a package to a newer version, if applicable: ```ps Update-Package ``` -To update all packages in a specific project, use the `-ProjectName` argument: +By default, `Update-Package` affects all packages in a solution. To limit the action to a specific project, use the `-Project` switch, using the name of the project as it appears in Solution Explorer: ```ps -Update-Package application-project.csproj +# Reinstall the package in just MyProject +Update-Package -ProjectName MyProject -reinstall ``` +To *update* all packages in a project (or reinstall using `-reinstall`), use `-ProjectName` without specifying any particular package: -Using `Update-Package` by itself, with no other arguments, will update all packages in all projects in the current folder. See the [Update-Package command](../Tools/ps-ref-update-package.md) reference for complete usage details. +```ps +Update-Package -ProjectName MyProject +``` + +To update all packages in a solution, just use `Update-Package` by itself with no other arguments or switches. Use this form carefully, because it can take considerable time to perform all the updates: + +```ps +# Updates all packages in all projects in the solution +Update-Package +``` Updating packages in a project or solution using `project.json` or [package references in project files](../Consume-Packages/Package-References-in-Project-Files.md) always updates to the latest version of the package (excluding pre-release packages). Projects that use `packages.config` can, if desired, limit update versions as described below in[Constraining upgrade versions](#constraining-upgrade-versions). +For full details on the command, see the [Update-Package](../Tools/ps-ref-update-package.md) reference. + ## When to Reinstall a Package 1. **Broken references after package restore**: If you've opened a project and restored NuGet packages, but still see broken references, try reinstalling each of those packages. @@ -76,7 +89,7 @@ The following may be affected when reinstalling a package: - If reinstalling packages after retargeting your application results in build or runtime errors, you may need to revert your target framework or search for alternative packages that properly support your new target framework. 1. **requireReinstallation attribute added in packages.config after project retargeting or upgrade** - - If NuGet detects that packages were affected by retargeting or upgrading a project, it add a `requireReinstallation="true"` attribute in `packages.config` to all affected package references. Because of this, each subsequent build in Visual Studio will raise build warnings for those packages so you can remember to reinstall them. + - If NuGet detects that packages were affected by retargeting or upgrading a project, it add a `requireReinstallation="true"` attribute in `packages.config` to all affected package references. Because of this, each subsequent build in Visual Studio raises build warnings for those packages so you can remember to reinstall them. 1. **Reinstalling packages with dependencies** - `Update-Package –reinstall` reinstalls the same version of the original package, but installs the latest version of dependencies unless specific version constraints are provided. This allows you to update only the dependencies as required to fix an issue. However, if this rolls a dependency back to an earlier version, you can use `Update-Package ` to reinstall that one dependency without affecting the dependent package. diff --git a/docs/Tools/ps-ref-update-package.md b/docs/Tools/ps-ref-update-package.md index 3cbcec87c..c53420ab7 100644 --- a/docs/Tools/ps-ref-update-package.md +++ b/docs/Tools/ps-ref-update-package.md @@ -5,7 +5,7 @@ title: NuGet Update-Package PowerShell Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 6/1/2017 +ms.date: 7/17/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -46,13 +46,13 @@ In NuGet 2.8+, `Update-Package` can be used to downgrade an existing package in Update-Package Microsoft.AspNet.MVC -Version 5.0.0. ``` -NuGet 2.7 and earlier will give an error saying that a newer version is already installed. +NuGet 2.7 and earlier gives an error saying that a newer version is already installed. ## Parameters | Parameter | Description | | --- | --- | -| Id | (Required) The identifier of the package to update. If omitted, updates all packages. The -Id switch itself is optional. | +| Id | The identifier of the package to update. If omitted, updates all packages. The -Id switch itself is optional. | | IgnoreDependencies | Skips updating the package's dependencies. | | ProjectName | The name of the project containing the packages to update, defaulting to all projects. | | Version | The version to use for the upgrade, defaulting to the latest version. In NuGet 3.0+, the version value must be one of *Lowest, Highest, HighestMinor*, or *HighestPatch* (equivalent to -Safe). | @@ -75,11 +75,11 @@ None of these parameters accept pipeline input or wildcard characters. ### Examples ```ps -# Updates all packages in every project +# Updates all packages in every project of the solution Update-Package # Updates every package in the MvcApplication1 project -Update-Package -Project MvcApplication1 +Update-Package -ProjectName MvcApplication1 # Updates the Elmah package in every project to the latest version Update-Package Elmah From f3eae8dc68049e07479a5fb63b779066f6953ae8 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 17 Jul 2017 17:06:06 -0700 Subject: [PATCH 0063/2943] Addressing various customer comments --- .../Configuring-NuGet-Behavior.md | 14 ++++---- .../Package-References-in-Project-Files.md | 4 +-- docs/Consume-Packages/Package-Restore.md | 33 ++++++++++++------ .../Packages-and-Source-Control.md | 34 +++++++++++-------- docs/Create-Packages/Publish-a-package.md | 10 +++--- docs/Create-Packages/project-json-Impact.md | 8 ++--- docs/Create-Packages/project-json-and-UWP.md | 30 ++++++++-------- docs/Guides/Create-UWP-Packages.md | 4 +-- docs/Guides/Install-NuGet.md | 7 ++-- docs/Tools/nuget-exe-CLI-Reference.md | 29 ++++++++++------ 10 files changed, 99 insertions(+), 74 deletions(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index 81e3cd0a6..d8a0b21da 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -5,7 +5,7 @@ title: Configuring the behavior of NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 3/27/2017 +ms.date: 7/17/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -158,13 +158,13 @@ It can also help to think about the "priority order" in which settings are appli Let's say you have the following folder structure: c:\ - └───Users + Users d:\ - ├───Project1 - │ └───Source - ├───Project2 - │ └───Source - └───tmp + Project1 + Source + Project2 + Source + tmp You then have four `NuGet.Config` files in the following locations with the given content: diff --git a/docs/Consume-Packages/Package-References-in-Project-Files.md b/docs/Consume-Packages/Package-References-in-Project-Files.md index 436211599..4b43b51bf 100644 --- a/docs/Consume-Packages/Package-References-in-Project-Files.md +++ b/docs/Consume-Packages/Package-References-in-Project-Files.md @@ -5,7 +5,7 @@ title: NuGet PackageReference in Visual Studio Project Files | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 4/24/2017 +ms.date: 7/17/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -135,7 +135,7 @@ 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. +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. 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: diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/Consume-Packages/Package-Restore.md index 0c075b0be..b89fa72a1 100644 --- a/docs/Consume-Packages/Package-Restore.md +++ b/docs/Consume-Packages/Package-Restore.md @@ -5,7 +5,7 @@ title: NuGet Package Restore | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 5/3/2017 +ms.date: 7/17/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -51,7 +51,7 @@ For additional details on package restore on build servers, see [Package restore ## Package restore overview -First, package references are maintained in one of the following ways, depending on project type and NuGet version. (Note that NuGet 4 and MSBuild 15.1 are installed with Visual Studio 2017.) +First, package references are maintained in one of the following package management formats, depending on project type and NuGet version. (Note that NuGet 4 and MSBuild 15.1 are installed with Visual Studio 2017.) | Method | NuGet Version | Description | | --- | --- | --- | @@ -61,15 +61,16 @@ First, package references are maintained in one of the following ways, depending Using these reference lists, package restore then happens in different ways both from the command line and inside Visual Studio. -From the command line: +From the command line or Package Manager Console: | Command | Applicable scenarios | | --- | --- | | `nuget restore` | All versions of NuGet and all reference types. See [Command-line restore](#command-line-restore) below. | | `dotnet restore` | Same as `nuget restore` for .NET Core projects. See [dotnet restore](https://docs.microsoft.com/dotnet/articles/core/tools/dotnet-restore). | | `msbuild /t:restore` | Nuget 4.x+ and MSBuild 15.1+ with [package references in project files](../Consume-Packages/Package-References-in-Project-Files.md) only. `nuget restore` and `dotnet restore` both use this command for applicable projects. See [NuGet pack and restore as MSBuild targets- restore target](../schema/msbuild-targets.md#restore-target).| +| `Update-Package -reinstall -ProjectName ` | Restores a project's packages from the Package Manager Console. See [Udpate-Package reference](../tools/ps-ref-update-package.md). | -Inside Visual Studio, there are five ways that package restore can happen: +Inside Visual Studio, there are four ways that package restore can happen: | Type | When restore happens | | --- | --- | @@ -162,6 +163,17 @@ c:\proj\> nuget restore app For NuGet 4.0+ and MSBuild 15.1+, you can also use `MSBuild /t:restore` as described on [NuGet pack and restore as MSBuild targets](../schema/msbuild-targets.md). +In the [Package Manager Console](../tools/Package-Manager-Console.md) you can use the [`Update-Package`](../tools/ps-ref-update-package.md) command: + +```ps +# Restore packages for a project +Update-Package -reinstall -ProjectName + +# Restore packages for all projects in the solution +Update-Package -reinstall +``` + +Note that the `-reinstall` argument is what specifically instructs `Update-Package` to restore packages to their currently installed versions rather than updating any of those versions. ## Automatic restore in Visual Studio @@ -172,14 +184,13 @@ Automatic restore is also ignored if a `.nuget\NuGet.targets` file exists in a p When enabled, automatic restore works as follows: 1. A `.nuget` folder is created in the solution containing a `Nuget.Config` file that contains only a single setting for `disableSourceControlIntegration` (as described in [Packages and source control](../consume-packages/packages-and-source-control.md) for Team Foundation Version Control). -2. When a build begins, Visual Studio instructs NuGet to restore packages. -3. NuGet recursively looks for all `packages.config` files in the solution, looks for `project.json`, or looks in the project file. -4. For each packages listed in the reference files, NuGet checks if it already exists in the solution (the `packages` folder, `project.lock.json`, or `project.assets.json` depending on whether the project is using `packages.config`, `project.json`, or package references in project files). -5. If the package is not found, NuGet attempts to retrieve the package from its cache first (see [Managing the NuGet cache](../consume-packages/managing-the-nuget-cache.md). If the package is not in the cache, NuGet downloads the package from the enabled sources as listed in **Tools > Options > [NuGet] Package Manager > Package Sources**, in the order that the sources appear. -6. If the download is successful, NuGet caches it, and then installs the package into the solution (again, either the `packages` folder, `project.lock.json`, or `project.assets.json`); otherwise NuGet fails and the build fails. - -During this process, developers see a progress dialog with the option to cancel package restore. +1. When a build begins, Visual Studio instructs NuGet to restore packages. +1. NuGet recursively looks for all `packages.config` files in the solution, looks for `project.json`, or looks in the project file. +1. For each packages listed in the reference files, NuGet checks if it already exists in the solution (the `packages` folder, `project.lock.json`, or `project.assets.json` depending on whether the project is using `packages.config`, `project.json`, or package references in project files). +1. If the package is not found, NuGet attempts to retrieve the package from its cache first (see [Managing the NuGet cache](../consume-packages/managing-the-nuget-cache.md). If the package is not in the cache, NuGet attempts to download the package from the enabled sources as listed in **Tools > Options > [NuGet] Package Manager > Package Sources**, in the order that the sources appear. In this case, NuGet does not indicate a failure to find the package until all the sources have been checked, at which time it reports the failure only for the last source in the list. By implication such an error also means that the package wasn't present on any of the other sources either, even though errors were not shown for those sources individually. +1. If the download is successful, NuGet caches the package and installs it into the solution (again, into either the `packages` folder, `project.lock.json`, or `project.assets.json`); otherwise NuGet fails and the build fails. +During this process, you see a progress dialog with the option to cancel package restore. ### Automatic restore errors diff --git a/docs/Consume-Packages/Packages-and-Source-Control.md b/docs/Consume-Packages/Packages-and-Source-Control.md index b241e9679..184801cbb 100644 --- a/docs/Consume-Packages/Packages-and-Source-Control.md +++ b/docs/Consume-Packages/Packages-and-Source-Control.md @@ -5,7 +5,7 @@ title: NuGet Packages and Source Control | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 4/24/2017 +ms.date: 7/17/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -30,16 +30,16 @@ ms.reviewer: # Omitting NuGet packages in source control systems -Developers typically omit binaries, such as NuGet packages, from their source control repository and rely instead on [package restore](../consume-packages/package-restore.md) to reinstall a project's dependencies before doing a build. +Developers typically omit NuGet packages from their source control repositories and rely instead on [package restore](../consume-packages/package-restore.md) to reinstall a project's dependencies before a build. -The reasons for doing so include the following: +The reasons for relying on package restore include the following: -1. Distributed version control systems, such as Git, include full copies of every version of every file within the repository. Binary files that are frequently updated will lead to significant bloat and lengthens the time it takes to clone the repository. +1. Distributed version control systems, such as Git, include full copies of every version of every file within the repository. Binary files that are frequently updated lead to significant bloat and lengthens the time it takes to clone the repository. 1. When packages are included in the repository, developers are liable to add references directly to package contents on disk rather than referencing packages through NuGet, which can lead to hard-coded path names in the project. 1. It becomes harder to "clean" your solution of any unused package folders, as you need to ensure you don't delete any package folders still in use. 1. By omitting packages, you maintain clean boundaries of ownership between your code and the packages from others that you depend upon. Many NuGet packages are maintained in their own source control repositories already. -Note that although package restore is the default behavior with NuGet, some manual work is necessary to omit packages (the `packages` folder in your project) from source control, as described in the following sections. +Although package restore is the default behavior with NuGet, some manual work is necessary to omit packages—namely, the `packages` folder in your project—from source control, as described in the following sections. ## Omitting packages with Git @@ -54,14 +54,16 @@ The important parts of the `.gitignore` file are: # Ignore the packages folder **/packages/* -# except build/, which is used as an MSBuild target. +# Include packages/build/, which is used as an MSBuild target !**/packages/build/ -# Uncomment if necessary; generally it will be regenerated when needed +# Uncomment if necessary; generally it's regenerated when needed #!**/packages/repositories.config -# Ignore other intermediate files that NuGet might create +# Ignore other intermediate files that NuGet might create. project.lock.json is used in conjunction +# with project.json; project.assets.json is used in conjunction with package references in project files. project.lock.json +project.assets.json *.nuget.props ``` @@ -90,20 +92,24 @@ To disable source control integration with TFVC for selected files: 1. If you are using TFS 2010 or earlier, cloak the `packages` folder in your workspace mappings. -1. On TFS 2012 or later, or with Visual Studio Team Services, add a `.tfignore` file (as described on [AddFiles to the Server](https://msdn.microsoft.com/library/ms245454.aspx#tfignore)) with the content below to explicitly ignore modifications to the `\packages` folder on the repository level and a few other intermediate files. (You can create the file in Windows Explorer using the name a `.tfignore.` with the trailing dot, but you might need to disable the "Hide known file extensions" option first.): +1. On TFS 2012 or later, or with Visual Studio Team Services, create a `.tfignore` file as described on [AddFiles to the Server](https://www.visualstudio.com/en-us/docs/tfvc/add-files-server#tfignore). In that file, include the content below to explicitly ignore modifications to the `\packages` folder on the repository level and a few other intermediate files. (You can create the file in Windows Explorer using the name a `.tfignore.` with the trailing dot, but you might need to disable the "Hide known file extensions" option first.): ``` - # Ignore the NuGet packages folder in the root of the repository. - # If needed, prefix 'packages' with additional folder names if it's - # not in the same folder as .tfignore. + # Ignore NuGet Packages + *.nupkg + + # Ignore the NuGet packages folder in the root of the repository. If needed, prefix 'packages' + & with additional folder names if it's not in the same folder as .tfignore. packages # Include package target files which may be required for MSBuild, # again prefixing the folder name as needed. !packages/*.targets - # Make sure not to exclude packages.config - !packages.config + # Omit temporary files + project.lock.json + project.assets.json + *.nuget.props ``` 1. Add `NuGet.Config` and `.tfignore` to source control and check in your changes. diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index 079da057a..67eff2be7 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -5,7 +5,7 @@ title: How to Publish a NuGet Package | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 6/13/2017 +ms.date: 7/17/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -60,7 +60,7 @@ Next, you can either upload the package through the nuget.org web portal, or pus nuget setApiKey Your-API-Key ``` - This will store your API key on the machine so that you will not need to do this step again on the same machine. + This stores your API key on the machine so that you need not do this step again on the same machine. 4. Push your package to NuGet Gallery using the command: @@ -77,7 +77,7 @@ Next, you can either upload the package through the nuget.org web portal, or pus ## Managing package owners on nuget.org -Although each NuGet package's `.nuspec` file defines the package's authors, the nuget.org gallery does not use that metadata to define ownership. Instead, nuget.org assigns initial ownership to the person who publishes the package. This will be either the logged-in user who uploaded the package through the nuget.org UI, or the users whose API key was used with `nuget SetApiKey` or `nuget push`. +Although each NuGet package's `.nuspec` file defines the package's authors, the nuget.org gallery does not use that metadata to define ownership. Instead, nuget.org assigns initial ownership to the person who publishes the package. This is either the logged-in user who uploaded the package through the nuget.org UI, or the users whose API key was used with `nuget SetApiKey` or `nuget push`. All package owners have full permissions for the package, including adding and removing other owners, and publishing updates. @@ -89,7 +89,7 @@ To change ownership of a package, do the following: From here you have several options: -1. To add an owner, enter their NuGet account name and click **Add**. This sends an email to that new co-owner with a confirmation link. Once confirmed, that person has full permissions to add and remove owners. (Until confirmed, the **Manage owners** page will indicate "pending approval" for that person). +1. To add an owner, enter their NuGet account name and click **Add**. This sends an email to that new co-owner with a confirmation link. Once confirmed, that person has full permissions to add and remove owners. (Until confirmed, the **Manage owners** page indicates "pending approval" for that person). 1. To remove an owner, select their name on the **Manage owners** and click **Remove**. 1. To transfer ownership (as when ownership changes or a package was published under the wrong account), simply add the new owner, and once they've confirmed ownership they can remove you from the list. @@ -99,4 +99,4 @@ To assign ownership to a company or group, create a nuget.org account using an e Occasionally, a package may not have an active owner. For example, the original owner may have left the company that produces the package, nuget.org credentials are lost, or earlier bugs in the gallery left a package ownerless. -If you are the rightful owner of a package and need to regain ownership, use the [contact form](https://www.nuget.org/policies/Contact) on nuget.org to explain your situation to the NuGet team. We will then follow a process to verify your ownership of the package, including trying to locate the existing owner through the package's Project URL, Twitter, email, or other means. But if all else fails, we can send you a new invite to become an owner. +If you are the rightful owner of a package and need to regain ownership, use the [contact form](https://www.nuget.org/policies/Contact) on nuget.org to explain your situation to the NuGet team. We then follow a process to verify your ownership of the package, including trying to locate the existing owner through the package's Project URL, Twitter, email, or other means. But if all else fails, we can send you a new invite to become an owner. diff --git a/docs/Create-Packages/project-json-Impact.md b/docs/Create-Packages/project-json-Impact.md index 8bc5ab128..a77b34f19 100644 --- a/docs/Create-Packages/project-json-Impact.md +++ b/docs/Create-Packages/project-json-Impact.md @@ -30,7 +30,7 @@ ms.reviewer: # Impact of project.json when creating packages -The `project.json` system used in NuGet 3.x affects package authors in several ways as described in the following sections. +The `project.json` system used in NuGet 3+ affects package authors in several ways as described in the following sections. ## Changes affecting existing packages usage @@ -44,7 +44,7 @@ Also, install scripts were supported only in Visual Studio. Other IDEs had to mo ### Content transforms are not supported. -Similar to install scripts, transforms run on package install and are typically not idempotent. Since there is no install time anymore, XDT Transform and similar features are not supported, and will be ignored if such a package is used in a transitive scenario. +Similar to install scripts, transforms run on package install and are typically not idempotent. Since there is no install time anymore, XDT Transform and similar features are not supported, and are ignored if such a package is used in a transitive scenario. ### Content @@ -57,7 +57,7 @@ Traditional NuGet packages are shipping content files such as source code and co Support for content is currently disabled for similar reasons for scripts and transforms, but we are in the process of designing support for content. -Content files can still be carried inside the packages, and will be ignored currently, however the end user can still copy them into the right spot. +Content files can still be carried inside the packages, and are ignored currently, however the end user can still copy them into the right spot. You can see one of the proposals for bringing back content files, and follow its progress, here: [https://github.com/NuGet/Home/issues/627](https://github.com/NuGet/Home/issues/627). @@ -65,7 +65,7 @@ You can see one of the proposals for bringing back content files, and follow its Packages using the above features would have to use a different mechanism. The most commonly useful mechanism for this would be the MSBuild targets/props that continues to get fully supported. The build system can choose to pick up other conventions in the package. This is how MSBuild targets are supported as well as Roslyn analyzers. It is possible to build packages that supports targets and analyzers for `packages.config` and `project.json` scenarios. -Packages that attempt to modify the project to ease startup, typically work in a very limited set of scenarios, and will instead provide a readme, or guidance on how to use the package. +Packages that attempt to modify the project to ease startup typically work in a very limited set of scenarios, and should instead provide a readme, or guidance on how to use the package. Most existing packages should not need to use the package format described below. diff --git a/docs/Create-Packages/project-json-and-UWP.md b/docs/Create-Packages/project-json-and-UWP.md index 857adb9f9..27749ef7d 100644 --- a/docs/Create-Packages/project-json-and-UWP.md +++ b/docs/Create-Packages/project-json-and-UWP.md @@ -5,7 +5,7 @@ title: NuGet project.json file with UWP projects | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 7/17/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -29,11 +29,11 @@ ms.reviewer: # project.json and UWP -This document describes a the package structure that can be used to take advantage of features in NuGet v3. The `minClientVersion` property of your `.nuspec` can be used to state that you require the features described here by setting it to 3.1. Note that NuGet v3 is available in Visual Studio 2015 and later. +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. ## Adding UWP support to an existing package -If you have an existing package and you want to add support for UWP applications then you don’t need to adopt the packaging format described here. You only need to adopt this format if you require the features it describes and are willing to only work with clients that have updated to the latest version of the NuGet client. +If you have an existing package and you want to add support for UWP applications, then you don’t need to adopt the packaging format described here. You only need to adopt this format if you require the features it describes and are willing to work only with clients that have updated to version 3+ of the NuGet client. ## I already target netcore45 @@ -45,7 +45,7 @@ In this case you need to add the `uap10.0` target framework moniker (TFM or TxM) ## I don’t need Windows 10 specific APIs, but want new .NET features or don’t have netcore45 already -In this case you would add the `dotnet` TxM to your package. Unlike other TxMs, `dotnet` doesn't imply a surface area or platform. It is stating that your package will work on any platform that your dependencies work on. When building a package with the `dotnet` TxM, you are likely to have many more TxM-specific dependencies in your `.nuspec`, as you will need to define the BCL packages you depend on, such `System.Text`, `System.Xml`, etc. The locations that those dependencies work on define where your package will work. +In this case you would add the `dotnet` TxM to your package. Unlike other TxMs, `dotnet` doesn't imply a surface area or platform. It is stating that your package works on any platform that your dependencies work on. When building a package with the `dotnet` TxM, you are likely to have many more TxM-specific dependencies in your `.nuspec`, as you need to define the BCL packages you depend on, such `System.Text`, `System.Xml`, etc. The locations that those dependencies work on define where your package works. ### How do I find out my dependencies @@ -69,14 +69,14 @@ NuGet packages using this format have the following well-known folder and behavi | Build | Contains MSBuild targets and props files in this folder are integrated differently into the project, but otherwise there is no change. | | Tools | `install.ps1` and `uninstall.ps1` are not run. `init.ps1` works as it always has. | | Content | Content is not copied automatically into a user's project. Support for content inclusion in the project is planned for a later release. | -| Lib | For many packages the `lib` will work the same way it does in NuGet 2.x, but with expanded options for what names can be used inside it and better logic for picking the correct sub-folder when consuming packages. However, when used in conjunction with `ref`, the `lib` folder will contain assemblies that implement the surface area defined by the assemblies in the `ref` folder. | +| Lib | For many packages the `lib` works the same way it does in NuGet 2.x, but with expanded options for what names can be used inside it and better logic for picking the correct sub-folder when consuming packages. However, when used in conjunction with `ref`, the `lib` folder contains assemblies that implement the surface area defined by the assemblies in the `ref` folder. | | Ref | `ref` is an optional folder that contains .NET assemblies defining the public surface (public types and methods) for an application to compile against. The assemblies in this folder may have no implementation, they are purely used to define surface area for the compiler. If the package has no `ref` folder, then the `lib` is both the reference assembly and the implementation assembly. | -| Runtimes | `runtimes` is an optional folder that will contain OS specific code, such as CPU architecture and OS specific or otherwise platform-dependent binaries. | +| Runtimes | `runtimes` is an optional folder that contains OS specific code, such as CPU architecture and OS specific or otherwise platform-dependent binaries. | ## MSBuild targets and props files in packages -NuGet packages can contain `.targets` and `.props` files which will be imported into any MSBuild project that the package is installed into. In NuGet 2.x, this was done by injecting `` statements into the `.csproj` file, in NuGet 3.0 there is no specific "installation to project" action. Instead the package restore process writes two files `[projectname].nuget.props` and `[projectname].NuGet.targets`. +NuGet packages can contain `.targets` and `.props` files which are imported into any MSBuild project that the package is installed into. In NuGet 2.x, this was done by injecting `` statements into the `.csproj` file, in NuGet 3.0 there is no specific "installation to project" action. Instead the package restore process writes two files `[projectname].nuget.props` and `[projectname].NuGet.targets`. MSBuild knows to look for these two files and automatically imports them near the beginning and near the end of the project build process. This provides very similar behavior to NuGet 2.x, but with one major difference: *there is no guaranteed order of targets/props files in this case*. However, MSBuild does provide ways to order targets through the `BeforeTargets` and `AfterTargets` attributes of the `` definition (see [Target Element (MSBuild)](https://docs.microsoft.com/visualstudio/msbuild/target-element-msbuild). @@ -93,13 +93,13 @@ An example lib structure: └───wp81 MyLibrary.dll -The `lib` folder contains assemblies that will be used at runtime. For most packages a folder under `lib` for each of the target TxMs is all that is required. +The `lib` folder contains assemblies that are used at runtime. For most packages a folder under `lib` for each of the target TxMs is all that is required. ## Ref There are sometimes cases where a different assembly should be used during compilation (.NET Reference Assemblies do this today). For those cases, use a top-level folder called `ref` (short for "Reference Assemblies"). -Most package authors will not require the `ref` folder. It is useful for packages that need to provide a consistent surface area for compilation and IntelliSense but then have different implementation for different TxMs. The biggest use case of this will be the `System.*` packages that are being produced as part of shipping .NET Core on NuGet. These packages have various implementations that are being unified by a consistent set of ref assemblies. +Most package authors don't require the `ref` folder. It is useful for packages that need to provide a consistent surface area for compilation and IntelliSense but then have different implementation for different TxMs. The biggest use case of this are the `System.*` packages that are being produced as part of shipping .NET Core on NuGet. These packages have various implementations that are being unified by a consistent set of ref assemblies. Mechanically, the assemblies included in the `ref` folder are the reference assemblies being passed to the compiler. For those of you who have used csc.exe these are the assemblies we are passing to the [C# /reference option](https://docs.microsoft.com/dotnet/articles/csharp/language-reference/compiler-options/reference-compiler-option) switch. @@ -157,15 +157,15 @@ The following example shows a package that has a purely managed implementation f └───native MyNativeLibrary.dll -Given the above package the following things will happen: +Given the above package the following things happen: -- When not on Windows 8 the `lib/net40/MyLibrary.dll` assembly will be used. +- When not on Windows 8 the `lib/net40/MyLibrary.dll` assembly is used. -- When on Windows 8 the `runtimes/win8-/lib/MyLibrary.dll` will be used and the `native/MyNativeHelper.dll` will be copied to the output of your build. +- When on Windows 8 the `runtimes/win8-/lib/MyLibrary.dll` is used and the `native/MyNativeHelper.dll` is copied to the output of your build. In the example above the `lib/net40` assembly is purely managed code, whilst the assemblies in the runtimes folder will p/invoke into the native helper assembly to call APIs specific to Windows 8. -Only a single `lib` folder will ever be picked, so if there is a runtime specific folder it will be chosen over non-runtime specific `lib`. The native folder is additive, if it exists it will be copied to the output of the build. +Only a single `lib` folder is ever be picked, so if there is a runtime specific folder it is chosen over non-runtime specific `lib`. The native folder is additive, if it exists it's copied to the output of the build. ## Managed wrapper @@ -196,9 +196,9 @@ In this case there is no top-level `lib` folder as that folder as there is no im If you want to create a package that can be consumed by projects using `packages.config` as well as packages using `project.json` then the following apply: -- Ref and runtimes only work on NuGet 3. They will both be ignored by NuGet 2. +- Ref and runtimes only work on NuGet 3. They are both ignored by NuGet 2. -- You cannot rely on `install.ps1` or `uninstall.ps1` to function. These files will execute when using `packages.config`, but are ignored with `project.json`. So your package needs to be usable without them running. `init.ps1` still runs on NuGet 3. +- You cannot rely on `install.ps1` or `uninstall.ps1` to function. These files execute when using `packages.config`, but are ignored with `project.json`. So your package needs to be usable without them running. `init.ps1` still runs on NuGet 3. - Targets and Props installation is different, so make sure that your package works as expected on both clients. diff --git a/docs/Guides/Create-UWP-Packages.md b/docs/Guides/Create-UWP-Packages.md index c0d75e35e..ae660c69f 100644 --- a/docs/Guides/Create-UWP-Packages.md +++ b/docs/Guides/Create-UWP-Packages.md @@ -5,7 +5,7 @@ title: Create NuGet Packages for the Universal Windows Platform | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 7/17/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -42,7 +42,7 @@ In this walkthrough you'll create a NuGet package with a native UWP component (i ## Pre-requisites -1. Visual Studio 2015. Install the Community edition for free from [visualstudio.com](https://www.visualstudio.com/); you can use the Professional and Enterprise editions as well, of course. +1. Visual Studio 2017 or Visual Studio 2015. Install the Community edition for free from [visualstudio.com](https://www.visualstudio.com/); you can use the Professional and Enterprise editions as well. 1. NuGet CLI. Download the latest version of nuget.exe from [nuget.org/downloads](https://nuget.org/downloads), saving it to a location of your choice. Then add that location to your PATH environment variable if it isn't already. > [!Note] diff --git a/docs/Guides/Install-NuGet.md b/docs/Guides/Install-NuGet.md index 7cedb7b64..87a693b21 100644 --- a/docs/Guides/Install-NuGet.md +++ b/docs/Guides/Install-NuGet.md @@ -5,7 +5,7 @@ title: Installing NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 5/30/2017 +ms.date: 7/17/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -80,9 +80,8 @@ On Windows, install the NuGet CLI using any of the following methods: 1. **Visual Studio**: Install the [NuGet.CommandLine](http://www.nuget.org/packages/NuGet.CommandLine/) package from the Package Manager Console in Visual Studio. -> **NuGet 2.x users** -> -> Because of breaking changes introduced in NuGet 3.2, [https://nuget.org/nuget.exe](https://nuget.org/nuget.exe) points to the latest stable NuGet 2.x release to prevent CI systems from potentially breaking. +> [!Note] +> **For NuGet 2.x users**: Because of breaking changes introduced in NuGet 3.2, [https://nuget.org/nuget.exe](https://nuget.org/nuget.exe) points to the latest stable NuGet 2.x release to prevent continuous integration systems from potentially breaking. diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 37433b178..8aa325024 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -5,7 +5,7 @@ title: NuGet Command-Line Interface (CLI) Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 6/7/2017 +ms.date: 7/17/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -37,6 +37,9 @@ Available commands are listed below, and each indicate whether they're applicabl > [!Note] > Command option names are case-insensitive. Options that are deprecated are not included in this reference, such as `NoPrompt` (replaced by `NonInteractive`) and `Verbose` (replaced by `Verbosity`). +> [!Important] +> On Mac OSX and Linux, some NuGet capabilities are available through the [dotnet CLI](dotnet-Commands.md) and through the [NuGet CLI running on Mono](../guides/install-nuget.md#mac-osx-and-linux). + | Command | Applicable Roles | NuGet Version | Description | | --- | --- | --- | --- | | [add](#add) | Publishing | 3.3+ | Adds a package to a non-HTTP package source using hierarchical layout. For HTTP sources, use *push*. | @@ -48,13 +51,13 @@ Available commands are listed below, and each indicate whether they're applicabl | [list](#list) | Consumption, perhaps Publishing | All | Displays packages from a given source. | | [locals](#locals) | Consumption | 3.3+ | Clears or lists packages in various caches or the global packages folder, or identifies those folders. | | [mirror](#mirror) | Publishing | Deprecated in 3.2+ | Mirrors a package and its dependencies from a source to a target repository. | -| [pack](#pack) | Creation | 2.7+ | Creates a NuGet package from a `.nuspec` or project file. | +| [pack](#pack) | Creation | 2.7+ | Creates a NuGet package from a `.nuspec` or project file. On Mac OSX with Mono, creating a package from a project file is not supported. | | [push](#push) | Publishing | All | Publishes a package to a package source. | -| [restore](#restore) | Consumption | 2.7+ | Restores all packages referenced by `packages.config` or `project.json`. | +| [restore](#restore) | Consumption | 2.7+ | Restores all packages referenced by `packages.config`, `project.json`, or project files (using package references). Note: restoring packages from package references in a project file is not supported with the CLI on Mono. | | [setapikey](#setapikey) | Consumption, Publishing | All | Saves an API key for a given package source when that package source requires a key for access. | | [sources](#sources) | Consumption, Publishing | All | Manages package sources in configuration files. | | [spec](#spec) | Creation | All | Generates a `.nuspec` file, using tokens if generating the file from a Visual Studio project. | -| [update](#update) | Consumption | All | Updates a project's packages to the latest available versions. | +| [update](#update) | Consumption | All | Updates a project's packages to the latest available versions. Note: this command is not supported with the CLI running on Mono. | For convenience, the following table lists the NuGet commands that are applicable to each specific roles. Developers concerned only with consuming packages, for example, need only understand that subset of NuGet commands. @@ -256,7 +259,12 @@ nuget init \\foo\packages \\bar\packages -Expand ## install -Downloads and installs a package into a project using the specified package sources. If no sources are specified, those listed in the global configuration file, `%APPDATA%\NuGet\NuGet.Config`, will be used. See [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md) for additional details. +Downloads and installs a package into a project using the specified package sources. + +> [!Tip] +> The nuget.exe CLI downloads packages within the context of a project. To download a package directly outside the context of a project, visit the package's page on [nuget.org](https://www.nuget.org) and select the **Download** link. + +If no sources are specified, those listed in the global configuration file, `%APPDATA%\NuGet\NuGet.Config`, will be used. See [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md) for additional details. If no specific packages are specified, `install` installs all packages listed in the project's `packages.config` file, making it similar to [`restore`](#restore). In this case, `install` does not work with projects that use `project.json`. @@ -264,7 +272,6 @@ The `install` command does not modify a project file or `packages.config`; in th To add a dependency, either add a project through the Package Manager UI or Console in Visual Studio, or modify `packages.config` and then run either `install` or `restore`. For projects using `project.json`, you can modify that file and then run `restore`. - ### Usage ``` @@ -420,9 +427,9 @@ nuget mirror Microsoft.Net.Http https://MyRepo/nuget https://MyRepo/api/v2/packa *Version 2.7+* -Creates a NuGet package based on the specified `.nuspec` or project file. Note that the `pack` command requires MSBuild and will not work on Linux systems. On Mac OS X, you need to have Mono 4.4.2 or later installed. +Creates a NuGet package based on the specified `.nuspec` or project file. -With Mono, you also need to adjust non-local paths in the `.nuspec` file to Unix-style paths, as nuget.exe will not itself convert Windows pathnames. +On Mac OS X and Linux, you need to have Mono 4.4.2 or later installed. Under Mono, creating a package from a project file is not supported. You also need to adjust non-local paths in the `.nuspec` file to Unix-style paths, as nuget.exe doesn't convert Windows pathnames itself. ### Usage @@ -556,6 +563,8 @@ NuGet 3.3+ with projects using `project.json`: Generates a `project.lock.json` f NuGet 4.0+ with project in which package references are included in the project file directly: Generates a `.nuget.props` file, if needed, in the `obj` folder. (The file can be omitted from source control.) +On Mac OSX and Linux with the CLI on Mono, restoring packages from package references in a project file is not supported. + ### Usage ``` @@ -741,9 +750,9 @@ nuget spec -a MyAssembly.dll Updates all packages in a project the latest available versions. It is recommended to run ['restore'](#restore) before running the `update`. -Note: `update` does not work with projects using `project.json`. +Note: `update` does not work with the CLI running under Mono (Mac OSX or Linux). The command also does not work with projects using `project.json`. -The `update` command will also update assembly references in the project file, provided those references already exist. If an updated package has an added assembly, a new reference will *not* be added. New package dependencies will also not have their assembly references added. To include these operations as part of an update, update the package in Visual Studio using the Package Manager UI or the Package Manager Console. +The `update` command also updates assembly references in the project file, provided those references already exist. If an updated package has an added assembly, a new reference is *not* added. New package dependencies also don't have their assembly references added. To include these operations as part of an update, update the package in Visual Studio using the Package Manager UI or the Package Manager Console. This command can also be used to update nuget.exe itself using the *-self* flag. From c97c3d0687a26cc39d510592eb2bc715e847b3a2 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 17 Jul 2017 17:13:53 -0700 Subject: [PATCH 0064/2943] Tweaks --- docs/Consume-Packages/Packages-and-Source-Control.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/Consume-Packages/Packages-and-Source-Control.md b/docs/Consume-Packages/Packages-and-Source-Control.md index 184801cbb..cf039e137 100644 --- a/docs/Consume-Packages/Packages-and-Source-Control.md +++ b/docs/Consume-Packages/Packages-and-Source-Control.md @@ -99,11 +99,10 @@ To disable source control integration with TFVC for selected files: *.nupkg # Ignore the NuGet packages folder in the root of the repository. If needed, prefix 'packages' - & with additional folder names if it's not in the same folder as .tfignore. + # with additional folder names if it's not in the same folder as .tfignore. packages - # Include package target files which may be required for MSBuild, - # again prefixing the folder name as needed. + # Include package target files which may be required for MSBuild, again prefixing the folder name as needed. !packages/*.targets # Omit temporary files From 777b63162dda4acadd5ff9aa162f6463b3352bca Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 18 Jul 2017 14:13:42 -0700 Subject: [PATCH 0065/2943] Overhauling PM Console (for CSAT) --- docs/Tools/Package-Manager-Console.md | 109 ++++++++++++------ .../media/PackageManagerConsoleControls1.png | Bin 0 -> 3389 bytes .../media/PackageManagerConsoleControls2.png | Bin 0 -> 3347 bytes .../media/PackageManagerConsoleControls3.png | Bin 0 -> 6674 bytes docs/index.md | 9 +- 5 files changed, 80 insertions(+), 38 deletions(-) create mode 100644 docs/Tools/media/PackageManagerConsoleControls1.png create mode 100644 docs/Tools/media/PackageManagerConsoleControls2.png create mode 100644 docs/Tools/media/PackageManagerConsoleControls3.png diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index e05876fb6..5a4ca3ca9 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -5,7 +5,7 @@ title: NuGet Package Manager Console Guide | Microsoft Docs author: kraigb hms.author: kraigb manager: ghogen -ms.date: 6/13/2017 +ms.date: 7/17/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -30,25 +30,14 @@ ms.reviewer: # Package Manager Console -The Package Manager Console lets you use [NuGet PowerShell commands](../tools/powershell-reference.md) to find, install, uninstall, and update NuGet packages. The Console is built into Visual Studio on Windows, version 2012 and later; it is not presently available with Visual Studio for Mac. The equivalent commands, however, are available through the [NuGet CLI](nuget-exe-CLI-reference.md). +The NuGet Package Manager Console, which is build into Visual Studio version 2012 and later, lets you use [NuGet PowerShell commands](../tools/powershell-reference.md) to find, install, uninstall, and update NuGet packages. Using the console is necessary in cases where the Package Manager UI does not provide a way to perform an operation. -> [!Note] -> If you're missing the NuGet Package Manager in Visual Studio 2015, check **Tools > Extensions and Updates...** and search for the NuGet Package Manager extension. If you're unable to use the extensions installer in Visual Studio, you can download the extension directly from [https://dist.nuget.org/index.html](https://dist.nuget.org/index.html). -> -> In Visual Studio 2017, NuGet and the NuGet Package Manager are automatically installed when you select any .NET-related workloads; you can also install it individually by checking the **Individual components > Code tools > NuGet package manager** option in the Visual Studio 2017 installer.) - -Using the Console is necessary in cases where the Package Manager UI does not provide a way to perform an operation. Note, however, that all operations can be done with the [NuGet CLI](../tools/nuget-exe-cli-reference.md). - -In all cases, you open the Console in Visual Studio through the **Tools > NuGet Package Manager > Package Manager Console** command. - -At the top of the pane you can select the desired package source, manage sources (by clicking the gear icon), and select the default project to which commands will be applied: - -![Package Manager Console controls](media/PackageManagerConsoleControls.png) - -You can override these settings with most commands by using the `-Source` and `-ProjectName` options. +All operations that are available in the console can also be done with the [NuGet CLI](../tools/nuget-exe-cli-reference.md). However, console commands operate within the context of Visual Studio and often accomplish more than their equivalent CLI commands. For example, installing a package through the console adds a reference to the project whereas the CLI command does not. For this reason, developers working in Visual Studio typically prefer using the console to the CLI. In this topic: +- [Availability of the console](#availability-of-the-console) +- [Opening the console](#opening-the-console) - [Finding a package](#finding-a-package) - [Installing a package](#installing-a-package) - [Uninstalling a package](#uninstalling-a-package) @@ -56,23 +45,52 @@ In this topic: - [Extending the Package Manager Console](#extending-the-package-manager-console) - [Setting up a NuGet PowerShell profile](#setting-up-a-nuget-powershell-profile) +## Availability of the console + +In Visual Studio 2017, NuGet and the NuGet Package Manager are automatically installed when you select any .NET-related workloads; you can also install it individually by checking the **Individual components > Code tools > NuGet package manager** option in the Visual Studio 2017 installer. + +Also, if you're missing the NuGet Package Manager in Visual Studio 2015 and earlier, check **Tools > Extensions and Updates...** and search for the NuGet Package Manager extension. If you're unable to use the extensions installer in Visual Studio, you can download the extension directly from [https://dist.nuget.org/index.html](https://dist.nuget.org/index.html). + +The Package Manager Console it is not presently available with Visual Studio for Mac. The equivalent commands, however, are available through the [NuGet CLI](nuget-exe-CLI-reference.md). Visual Studio for Mac does have a UI managing NuGet packages. See [Including a NuGet package in your project](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough). + +## Opening the console and console controls + +Open the console in Visual Studio using the **Tools > NuGet Package Manager > Package Manager Console** command. The console is a Visual Studio window that can be arranged and positioned however you like (see [Customize window layouts in Visual Studio](https://docs.microsoft.com/visualstudio/ide/customizing-window-layouts-in-visual-studio)). + +By default, console commands operate against a specific package source and project as set in the control at the top of the window: + +![Package Manager Console controls for package source and project](media/PackageManagerConsoleControls1.png) + +Selecting a different package source and/or project changes those defaults for subsequent commands. To overrride these settings without changing the defaults, most commands support `-Source` and `-ProjectName` options. + +To manage package sources, select the gear icon. This is a shortcut to the **Tools > Options > NuGet Package Manager > Package Sources** dialog box as described on the [Package Manager UI](Package-Manager-UI.md#package-sources) page. Also, the control to the right of the project selector clears the console's contents: + +![Package Manager Console settings and clear controls](media/PackageManagerConsoleControls2.png) + +Finally, the rightmost button interrupts a long-running command. For example, running `Get-Package -ListAvailable -PageSize 500` lists the top 500 packages on the default source (such as nuget.org), which could take several minutes to run. + +![Package Manager Console stop control](media/PackageManagerConsoleControls3.png) + ## Finding a package -In the console, [`Get-Package -ListAvailable`](../tools/ps-ref-get-package.md) see all the packages available from the selected source. For nuget.org, the list will contain thousands of packages, so it's helpful to use the `-Filter` switch along with `-PageSize`. In NuGet 3.0 and later, you can instead use the [`Find-Package`](../tools/ps-ref-find-package.md) command that is better suited to this operation. +To see the packages available from the selected source, use the [`Get-Package -ListAvailable`](../tools/ps-ref-get-package.md) command. For nuget.org, the list contains thousands of packages, so it's helpful to use the `-Filter` switch along with `-PageSize` to limit the results. In NuGet 3+, you can instead use the [`Find-Package`](../tools/ps-ref-find-package.md) command that is better suited to this operation. Examples: ```ps -# All versions of NuGet +# Show specific packages (all versions of NuGet) Get-Package -ListAvailable -Filter elmah Get-Package -ListAvailable -Filter Logging # List all versions of packages matching the filter "jquery" Get-Package -ListAvailable -Filter jquery -AllVersions +# List the top 100 packages +Get-Package -ListAvailable -PageSize 100 + -# NuGet 3.0+ +# Find-Package in NuGet 3+ is more efficient than Get-Package Find-Package elmah Find-Package Logging @@ -85,56 +103,75 @@ Find-Package jquery -AllVersions -ExactMatch ## Installing a package -Once you know the identifier of the package you want to install use [`Install-Package`](../tools/ps-ref-install-package.md), such as `Install-Package elmah`. +Once you know the identifier of the package you want to install, use the [`Install-Package`](../tools/ps-ref-install-package.md) command. This command adds the package to the default project as specified in the console's project selector. To install the package into a different project, use the `-ProjectName` switch: -NuGet downloads the package from the specified package source and installs it in the default project of the solution, unless you specify another project using the `-ProjectName` switch. +```ps +# Add the Elmah package to the default project +Install-Package Elmah + +# Add the Elmah package to a project named UtilitiesLib that is not the default +Install-Package Elmah -ProjectName UtilitiesLib +``` Installing a package performs the following actions: -- Display applicable license terms in the Console window with implied agreement. If you do not agree to the terms, you should uninstall the package immediately. -- Creates a `packages` folder (if needed) and copies package files into a subfolder within it. -- Adds references to the project, which subsequently appear in Solution Explorer +- Displays applicable license terms in the console window with implied agreement. If you do not agree to the terms, you should uninstall the package immediately. +- Adds a reference to the project in whatever reference format is in use. References subsequently appear in Solution Explorer and the applicable reference format file. Note, however, that with PackageReference, you need to save the project to see the changes in the project file directly. +- Caches the package in the project depending on the reference format in use: + - `packages.config`: creates a `packages` folder and copies package files into a subfolder within it. + - `project.json`: package is cached within `project.lock.json` + - PackageReference: package is cached within or `project.assets.json` - Updates `app.config` and/or `web.config` if the package uses [source and config file transformations](../create-packages/source-and-config-file-transformations.md). - Installs any dependencies if not already present in the project. This might update package versions in the process, as described in [Dependency Resolution](../consume-packages/dependency-resolution.md). +- Displays the package's readme file, if available, in a Visual Studio window. +> [!Tip] +> One of the primary advantages of installing packages with the `Install-Package` command in the console is that adds a reference to the project just as of you used the Package Manager UI. In contrast, the `nuget install` CLI command only downloads the package and does not automatically add a reference. ## Uninstalling a package -If you do not already know the name of the package you want to remove, use the [`Get-Package`](../tools/ps-ref-get-package.md) command with no parameters to see all of the currently-installed packages. +If you do not already know the name of the package you want to remove, use the [`Get-Package`](../tools/ps-ref-get-package.md) command with no arguments to see all of the packages currently installed in the default project. To uninstall a package, use [`Uninstall-Package`](../tools/ps-ref-uninstall-package.md) with the package ID, such as `Uninstall-Package jQuery`. Uninstalling a package performs the following actions: -- References to the package no longer appear in the **Reference** or **Bin** folders in Solution Explorer. (You might need to rebuild the project to see it removed from the **Bin** folder.) -- The folder for the package is removed from the `packages` folder; the `packages` folder itself is deleted if no packages remain. -- Any changes made to `app.config` or `web.config` when the package was installed are removed. -- If other packages were installed because they were dependencies of the package that was removed, and if no remaining packages use those dependencies, the dependency packages are also removed. +- Removes references to the package from the project (and whatever reference format is in use). References no longer appear in Solution Explorer. (You might need to rebuild the project to see it removed from the **Bin** folder.) +- Removes the package from the project cache (`packages` folder, `project.lock.json`, or `project.assets.json`) +- Reverses any changes made to `app.config` or `web.config` when the package was installed. +- Removes previously-installed dependencies if no remaining packages use those dependencies. +> [!Tip] +> Like `Install-Package`, the `Uninstall-Package` command has the benefit of managing references in the project, unlike the `nuget uninstall` CLI command. ## Updating a package The [`Get-Package -updates`](../tools/ps-ref-get-package.md) command checks if there are newer versions available for any installed packages. -To update a package, use [`Update-Package`](../tools/ps-ref-update-package.md) with the package ID, such as `Update-Package jQuery`. +To update a package, use [`Update-Package`](../tools/ps-ref-update-package.md) with the package ID, such as `Update-Package jQuery`. +To update all packages in the project, use `Update-Package -ProjectName `; to update all packages in the solution, use `Update-Package` with no arguments. ## Extending the Package Manager Console -Some packages install new commands for the Console. For example, `MvcScaffolding`, creates commands, such as `Scaffold` shown below, to generate ASP.NET MVC controllers and views: +Some packages install new commands for the console. For example, `MvcScaffolding` creates commands like `Scaffold` shown below, which generates ASP.NET MVC controllers and views: ![Installing and using MvcScaffold](media/PackageManagerConsoleInstall.png) ## Setting up a NuGet PowerShell Profile -A PowerShell profile lets you make commonly-used commands available wherever you use PowerShell. NuGet supports a NuGet specific profile typically located at: +A PowerShell profile lets you make commonly-used commands available wherever you use PowerShell. NuGet supports a NuGet-specific profile typically found at the following location: - %UserProfile%\Documents\WindowsPowerShell\NuGet_profile.ps1 +``` +%UserProfile%\Documents\WindowsPowerShell\NuGet_profile.ps1 +``` -To find the profile file, type `$profile` in the Console: +To find the profile, type `$profile` in the console: - $profile - C:\Users\\Documents\WindowsPowerShell\NuGet_profile.ps1 +```ps +$profile +C:\Users\\Documents\WindowsPowerShell\NuGet_profile.ps1 +``` For more details, refer to [Windows PowerShell Profiles](https://technet.microsoft.com/library/bb613488.aspx). diff --git a/docs/Tools/media/PackageManagerConsoleControls1.png b/docs/Tools/media/PackageManagerConsoleControls1.png new file mode 100644 index 0000000000000000000000000000000000000000..f49c017c9e07ff3b9cf3f334e3f0db97c72148a4 GIT binary patch literal 3389 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 literal 0 HcmV?d00001 diff --git a/docs/Tools/media/PackageManagerConsoleControls2.png b/docs/Tools/media/PackageManagerConsoleControls2.png new file mode 100644 index 0000000000000000000000000000000000000000..4a2f7ca04a1e9766badd71984aa32e619af19e75 GIT binary patch literal 3347 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 literal 0 HcmV?d00001 diff --git a/docs/Tools/media/PackageManagerConsoleControls3.png b/docs/Tools/media/PackageManagerConsoleControls3.png new file mode 100644 index 0000000000000000000000000000000000000000..56266b96e6a8634a9c7463403c840735195b25f2 GIT binary patch literal 6674 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 literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index 902028a75..fc7e37aa5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,4 +1,3 @@ - --- layout: HubPage @@ -17,7 +16,7 @@ keywords: author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 7/17/2017 ms.topic: hubpage ms.prod: nuget #ms.service: @@ -192,6 +191,12 @@ ms.reviewer:

    Detailed release notes for every version of NuGet back to the beginning.

    +
  • + +

    GitHub Repositories

    +

    NuGet is entirely open source, including the NuGet client, server, documentation, and more.

    +
    +
  • From c4f8bd248bdf420b107593e248fbf7063d56e61a Mon Sep 17 00:00:00 2001 From: Matt Klaber Date: Wed, 19 Jul 2017 11:44:23 -0500 Subject: [PATCH 0066/2943] Fixing typo in Update-Package command `Udpate-Package` → `Update-Package` --- docs/Consume-Packages/Package-Restore.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/Consume-Packages/Package-Restore.md index b89fa72a1..70a90747f 100644 --- a/docs/Consume-Packages/Package-Restore.md +++ b/docs/Consume-Packages/Package-Restore.md @@ -68,7 +68,7 @@ From the command line or Package Manager Console: | `nuget restore` | All versions of NuGet and all reference types. See [Command-line restore](#command-line-restore) below. | | `dotnet restore` | Same as `nuget restore` for .NET Core projects. See [dotnet restore](https://docs.microsoft.com/dotnet/articles/core/tools/dotnet-restore). | | `msbuild /t:restore` | Nuget 4.x+ and MSBuild 15.1+ with [package references in project files](../Consume-Packages/Package-References-in-Project-Files.md) only. `nuget restore` and `dotnet restore` both use this command for applicable projects. See [NuGet pack and restore as MSBuild targets- restore target](../schema/msbuild-targets.md#restore-target).| -| `Update-Package -reinstall -ProjectName ` | Restores a project's packages from the Package Manager Console. See [Udpate-Package reference](../tools/ps-ref-update-package.md). | +| `Update-Package -reinstall -ProjectName ` | Restores a project's packages from the Package Manager Console. See [Update-Package reference](../tools/ps-ref-update-package.md). | Inside Visual Studio, there are four ways that package restore can happen: From 9bf5aa113a755c279a44aed11a653dac84a202ff Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 20 Jul 2017 15:34:24 -0700 Subject: [PATCH 0067/2943] Refactoring versioning content into a reference topic --- .../Consume-Packages/Dependency-Resolution.md | 90 ++++---- .../Finding-and-Choosing-Packages.md | 17 +- .../Package-References-in-Project-Files.md | 2 +- docs/Consume-Packages/Package-Restore.md | 2 +- .../Reinstalling-and-Updating-Packages.md | 2 +- .../Creating-Localized-Packages.md | 2 +- docs/Create-Packages/Creating-a-Package.md | 44 ++-- docs/Create-Packages/Dependency-Versions.md | 148 +------------ docs/Create-Packages/Overview-and-Workflow.md | 10 +- docs/Create-Packages/Prerelease-Packages.md | 65 +----- docs/Create-Packages/project-json-Impact.md | 2 +- docs/Guides/Create-Cross-Platform-Packages.md | 4 +- .../Create-NET-Standard-Packages-VS2015.md | 6 +- docs/Guides/Create-UWP-Packages.md | 2 +- .../Create-and-Publish-a-Package.md | 2 +- docs/Release-Notes/NuGet-1.4.md | 2 +- docs/Schema/Package-Versioning.md | 198 ++++++++++++++++++ docs/Schema/nuspec.md | 2 +- docs/Schema/packages-config.md | 2 +- 19 files changed, 310 insertions(+), 292 deletions(-) create mode 100644 docs/Schema/Package-Versioning.md diff --git a/docs/Consume-Packages/Dependency-Resolution.md b/docs/Consume-Packages/Dependency-Resolution.md index 55d81622a..713726fab 100644 --- a/docs/Consume-Packages/Dependency-Resolution.md +++ b/docs/Consume-Packages/Dependency-Resolution.md @@ -5,7 +5,7 @@ title: NuGet Package Dependency Resolution | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 5/25/2017 +ms.date: 7/20/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -34,46 +34,33 @@ Any time a package is installed or reinstalled, which includes being installed a Those immediate dependencies might then also have dependencies on their own, which can continue to an arbitrary depth. This produces what's called a *dependency graph* that describes the relationships between packages are all levels. -When multiple packages have the same dependency, then the same package ID can appear in the graph multiple times, potentially with different version constraints. However, only one version of a given package can be used in a project, so NuGet must choose which version will be used. +When multiple packages have the same dependency, then the same package ID can appear in the graph multiple times, potentially with different version constraints. However, only one version of a given package can be used in a project, so NuGet must choose which version is be used. The exact process depends on the package reference format being used. -The exact process differs between projects using `packages.config` those using `project.json` or [package references in project files](Package-References-in-Project-Files.md), as described in the sections below. +In this topic: +- [Dependency resolution with PackageReference and project.json](#dependency-resolution-with-packagereference-and-projectjson) +- [Dependency resolution with packages.confid](#dependency-resolution-with-packagesconfig) +- [Excluding references](#excluding-references), which is necessary when there's a conflict between a dependency specified in one project and an assembly that's produced by another. +- [Resolving incompatible package errors](#resolving-incompatible-package-errors) -In some cases, such as when there's a conflict between a dependency specified in one project and an assembly that's produced by another, it might be necessary to explicitly exclude a reference. The section [Excluding references](#excluding-references) below. +## Dependency resolution with PackageReference and project.json -## Dependency resolution with packages.config - -When `packages.config` is used (NuGet 2.x+), a project's dependencies are written to `packages.config` as a flat list. Any dependencies of those packages are also written in the same list. When packages are installed, NuGet might also modify the `.csproj` file, `app.config`, `web.config`, and other individual files. - -With `packages.config`, NuGet attempts to resolve dependency conflicts during the installation of each individual package. That is, if Package A is being installed and depends on Package B, and Package B is already listed in `packages.config` as a dependency of something else, NuGet compares the versions of Package B being requested and attempts to find a version that satisfies all version constraints. Specifically, NuGet selects the lower *major.minor* version that satisfies dependencies. - -By default, NuGet 2.7 and earlier resolves the highest *patch* version (using the *major.minor.patch.build* convention). [NuGet 2.8 and higher](../release-notes/nuget-2.8.md#patch-resolution-for-dependencies) changes this behavior to look for the lowest patch version by default. You can control this setting through the `DependencyVersion` attribute in `Nuget.Config` and the `-DependencyVersion` switch on the command line. - -On the downside, the `packages.config` process for resolving dependencies gets complicated for larger dependency graphs. Each new package installation requires a traversal of the whole graph and raises the chance for version conflicts. When a conflict occurs, installation is stopped, leaving the project in an indeterminate state, especially with potential modifications to the project file itself. - -This and other challenges is why dependency resolution was overhauled in NuGet 3.x+ for projects using `project.json` and package references, as described in the next section. - -## Dependency resolution with project.json and package references +When installing packages into projects using the PackageReference or `project.json` formats, NuGet adds references to a flat package graph in the appropriate file and resolves conflicts ahead of time. This process is referred to as *transitive restore*. Reinstalling or restoring packages is then a process of downloading the packages listed in the graph, resulting in faster and more predictable builds. You can also take advantage of wildcard (floating) versions, such as *2.8.\**, avoiding expensive and error prone calls to `nuget update` on the client machines and build servers. -When installing packages into projects using `project.json` or packages references, NuGet adds them to a flat package graph in `project.json` or the project file, and resolves conflicts ahead of time. This is referred to as *transitive restore*. Reinstalling or restoring packages is then simply a process of downloading the packages listed in the graph, resulting in faster and more predictable builds. You can also take advantage of floating version ranges, such as *2.8.\**, avoiding expensive and error prone calls to `nuget update` on the client machines and build servers. +When the NuGet restore process runs prior to a build, it resolves dependencies first in memory, then writes the resulting graph to a file called `project.assets.json` in the `obj` folder of a project using PackageReference, or in a file named `project.lock.json` alongside `project.json`. MSBuild then reads this file and translates it into a set of folders where potential references can be found, and then adds them to the project tree in memory. -When the NuGet restore process runs prior to a build, it resolves dependencies first in memory, then writes the resulting graph to a file called `project.assets.json` in the `obj` folder of a project using package references, or in a file named `project.lock.json` alongside `project.json`. MSBuild then reads this file and translates it into a set of folders where potential references can be found, and then adds them to the project tree in memory. - -The lock file is temporary and does not need to be added to source control; it's listed by default in both `.gitignore` and `.tfignore`. - -> [!Note] -> As of Visual Studio 2017 and NuGet 4.x, the default for all projects is to use package references in project files. `project.json` is used only for UWP projects that have not been updated to target the Windows 10 Creators Update (build 15063). Furthermore, although all NuGet versions 2.x+ support `packages.config`, you can simply migrate those dependencies into your project file as package references instead to benefit from better dependency resolution. +The lock file is temporary should not be added to source control. It's listed by default in both `.gitignore` and `.tfignore`. See [Packages and source control](Packages-and-Source-Control.md). ### Dependency resolution rules -Transitive restore applies four main rules to resolve dependencies: lowest applicable version, floating versions, nearest-wins, cousin dependencies. +Transitive restore applies four main rules to resolve dependencies: lowest applicable version, floating versions, nearest-wins, and cousin dependencies. #### Lowest applicable version -This rule restores the lowest possible version of a package as defined by its dependencies. It also applies to dependencies on the application or the class library unless declared as [floating](#floating-versions). +The lowest applicable version rule restores the lowest possible version of a package as defined by its dependencies. It also applies to dependencies on the application or the class library unless declared as [floating](#floating-versions). -For example, in the following figure *1.0-Beta* is considered lower than *1.0* so NuGet chooses the 1.0 version: +In the following figure, for example, *1.0-beta* is considered lower than *1.0* so NuGet chooses the 1.0 version: ![Choosing the lowest applicable version](media/projectJson-dependency-1.png) @@ -87,22 +74,23 @@ When an application specifies an exact version number, such as *1.2*, that is no -#### Floating versions - -A floating dependency version is specified with the * wildcard, as with *6.0.** in either the project file or `project.json`. This says "use the latest 6.0.x version"; a floating version of *4.** means "use the latest 4.x version." A floating version allows a dependency package to continue evolving without requiring a change to the consuming application (or package). +#### Floating (wildcard) versions -> [!Note] -> Floating versions do not take pre-release versions into account (for example, versions suffixed with `-beta`). A version of *4.** will pick up 4.4 but not 4.5-alpha, 4.5-beta, 4.5-rc, etc. There is at present no means to say "use the latest version including pre-releases"; see [issue 912](https://github.com/NuGet/Home/issues/912). Using a version like *2.1-** doesn't work either as it resolves the lowest matching version, see issues [4513](https://github.com/NuGet/Home/issues/4513) and [4859](https://github.com/NuGet/Home/issues/4859). +A floating or wildcard dependency version is specified with the * wildcard, as with *6.0.\**. This version specification says "use the latest 6.0.x version"; *4.\** means "use the latest 4.x version." Using a wildcard allows a dependency package to continue evolving without requiring a change to the consuming application (or package). -When a floating version constraint is specified, NuGet resolves the highest version of a package that matches the version pattern, for example *6.0.** will get the highest version of a package that starts with *6.0*: +When using a wildcard, NuGet resolves the highest version of a package that matches the version pattern, for example *6.0.** gets the highest version of a package that starts with *6.0*: ![Choosing version 6.0.1 when a floating version 6.0.* is requested](media/projectJson-dependency-4.png) +> [!Note] +> For information on the behavior of wildcards and pre-release versions, see [Package versioning](../Schema/Package-Versioning.md#version-ranges-and-wildcards). + + #### Nearest wins -When the package graph for an application contains different versions of the same package, the package that's closest to the application in the graph is used and others are ignored. This allows an application to override any particular package version in the dependency graph. +When the package graph for an application contains different versions of the same package, NuGet chooses the package that's closest to the application in the graph and ignores all others. This behavior allows an application to override any particular package version in the dependency graph. In the example below, the application depends directly on Package B with a version constraint of *>=2.0*. The application also depends on Package A which in turn also depends on Package B, but with a *>=1.0* constraint. Because the dependency on Package B *2.0* is nearer to the application in the graph, that version is used: @@ -111,7 +99,7 @@ In the example below, the application depends directly on Package B with a versi >[!Warning] > The Nearest Wins rule can result in a downgrade of the package version, thus potentially breaking other dependencies in the graph. Hence this rule is applied with a warning to alert the user. -This rule also results in greater efficiency with large dependency graph (such as those with the BCL packages) because by once a given dependency is ignored, NuGet also ignores all remaining dependencies on that branch of the graph. In the diagram below, for example, because Package C 2.0 is used, NuGet ignores any branches in the graph that refer to an older version of Package C: +This rule also results in greater efficiency with a large dependency graph (such as those with the BCL packages) because once a given dependency is ignored, NuGet also ignores all remaining dependencies on that branch of the graph. In the diagram below, for example, because Package C 2.0 is used, NuGet ignores any branches in the graph that refer to an older version of Package C: ![When NuGet ignores a package in the graph, it ignores that entire branch](media/projectJson-dependency-6.png) @@ -129,20 +117,37 @@ In some cases, it is not possible to meet all version requirements. As shown bel In these situations, the top-level consumer (the application or package) should add its own direct dependency on Package B so that the [Nearest Wins](#nearest-wins) rule applies. +## Dependency resolution with packages.config + +With `packages.config`, a project's dependencies are written to `packages.config` as a flat list. Any dependencies of those packages are also written in the same list. When packages are installed, NuGet might also modify the `.csproj` file, `app.config`, `web.config`, and other individual files. + +With `packages.config`, NuGet attempts to resolve dependency conflicts during the installation of each individual package. That is, if Package A is being installed and depends on Package B, and Package B is already listed in `packages.config` as a dependency of something else, NuGet compares the versions of Package B being requested and attempts to find a version that satisfies all version constraints. Specifically, NuGet selects the lower *major.minor* version that satisfies dependencies. + +By default, NuGet 2.7 and earlier resolves the highest *patch* version (using the *major.minor.patch.build* convention). [NuGet 2.8 and higher](../release-notes/nuget-2.8.md#patch-resolution-for-dependencies) changes this behavior to look for the lowest patch version by default. You can control this setting through the `DependencyVersion` attribute in `Nuget.Config` and the `-DependencyVersion` switch on the command line. + +The `packages.config` process for resolving dependencies gets complicated for larger dependency graphs. Each new package installation requires a traversal of the whole graph and raises the chance for version conflicts. When a conflict occurs, installation is stopped, leaving the project in an indeterminate state, especially with potential modifications to the project file itself. This is not an issue when using other package reference formats. + + ## Excluding references -There are scenarios in which assemblies with the same name might be referenced more than once in a project, producing design-time and build-time errors. For example, consider a project that contains a custom version of `C.dll`, and references packageC that also contains `C.dll`. At the same time, the project also depends on packageB which also depends on packageC and `C.dll`. As a result, NuGet can't determine which `C.dll` to use, but you can't just remove the project's dependency on packageC because packageB also depends on it. +There are scenarios in which assemblies with the same name might be referenced more than once in a project, producing design-time and build-time errors. Consider a project that contains a custom version of `C.dll`, and references Package C that also contains `C.dll`. At the same time, the project also depends on Package B which also depends on Package C and `C.dll`. As a result, NuGet can't determine which `C.dll` to use, but you can't just remove the project's dependency on Package C because Package B also depends on it. + +To resolve this, you must directly reference the `C.dll` you want (or use another package that references the right one), and then add a dependency on Package C that excludes all its assets. This is done as follows depending on the package reference format in use: -To resolve this, you must directly reference the `C.dll` you want (or use another package that references the right one), and then add a dependency on packageC that excludes all its assets. This is done as follows: +- [PackageReference](../consume-packages/package-references-in-project-files.md): add `Exclude="All"` in the dependency: + + ```xml + + ``` -- If you're project is using `packages.config` for tracking NuGet dependencies, simply remove the reference to packageC from the `.csproj` file so that it references only the version of `C.dll` that you want. +- `packages.config`: remove the reference to PackageC from the `.csproj` file so that it references only the version of `C.dll` that you want. -- If your project uses `project.json` for NuGet, add `"exclude" : "all"` in the dependency for packageC: +- `project.json`: add `"exclude" : "all"` in the dependency for PackageC: ```json { "dependencies": { - "packageC": { + "PackageC": { "version": "1.0.0", "exclude": "all" } @@ -150,11 +155,6 @@ To resolve this, you must directly reference the `C.dll` you want (or use anothe } ``` -- With [package references in project files](../consume-packages/package-references-in-project-files.md) (NuGet 4.0+ only), add `Exclude="All"` in the dependency: - - ```xml - - ``` ## Resolving incompatible package errors diff --git a/docs/Consume-Packages/Finding-and-Choosing-Packages.md b/docs/Consume-Packages/Finding-and-Choosing-Packages.md index 8a3c14c1c..9c3e4ed07 100644 --- a/docs/Consume-Packages/Finding-and-Choosing-Packages.md +++ b/docs/Consume-Packages/Finding-and-Choosing-Packages.md @@ -5,7 +5,7 @@ title: Finding and choosing NuGet Packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 2/8/2017 +ms.date: 7/20/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -62,6 +62,21 @@ At present there is no means to search nuget.org for packages that support a spe +## Pre-release packages + +By default, NuGet does not include pre-release versions when working with packages, but you can change this behavior as follows: + +- **Package Manager UI in Visual Studio**: In the **Manage NuGet Packages** UI, check the **Include prerelease** box: + + ![The Include prerelease checkbox in Visual Studio](media/Prerelease_02-CheckPrerelease.png) + + Setting or clearing this box will refresh the Package Manager UI and the list of available versions you can install. + +- **Package Manager Console**: Use the `-IncludePrerelease` switch with the `Find-Package`, `Get-Package`, `Install-Package`, `Sync-Package`, and `Update-Package` commands. Refer to the [PowerShell Reference](../tools/powershell-reference.md). + +- **NuGet CLI**: Use the `-prerelease` switch with the `install`, `update`, `delete`, and `mirror` commands. Refer to the [NuGet CLI reference](../tools/nuget-exe-cli-reference.md) + + ### Native C++ packages NuGet 2.5+ supports native C++ packages can that can be used in C++ projects in Visual Studio. This enables the **Manage NuGet Packages** context-menu command for projects, introduces a `native` target framework, and provides MSBuild integration. diff --git a/docs/Consume-Packages/Package-References-in-Project-Files.md b/docs/Consume-Packages/Package-References-in-Project-Files.md index 4b43b51bf..d8d33dd0b 100644 --- a/docs/Consume-Packages/Package-References-in-Project-Files.md +++ b/docs/Consume-Packages/Package-References-in-Project-Files.md @@ -62,7 +62,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 [version ranges](../create-packages/dependency-versions.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 on [Package versioning](../schema/package-versioning.md#version-ranges-and-wildcards). ## Floating Versions diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/Consume-Packages/Package-Restore.md index b89fa72a1..0914aeda4 100644 --- a/docs/Consume-Packages/Package-Restore.md +++ b/docs/Consume-Packages/Package-Restore.md @@ -147,7 +147,7 @@ When NuGet restores packages through any method, it will honor any constraints s ``` -In all cases, use the notation described in [Dependency versions](../create-packages/dependency-versions.md). +In all cases, use the notation described in [Package versioning](../schema/package-versioning.md). ## Command-line restore diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index 7917e94a8..8bd08a972 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -115,4 +115,4 @@ To set a constraint, open `packages.config` in a text editor, locate the depende ``` -In all cases, use the notation described in [Dependency versions - version ranges](../create-packages/dependency-versions.md#version-ranges). +In all cases, use the notation described in [Package versioning](../schema/package-versioning.md#version-ranges-and-wildcards). diff --git a/docs/Create-Packages/Creating-Localized-Packages.md b/docs/Create-Packages/Creating-Localized-Packages.md index 22e19edb0..92c008554 100644 --- a/docs/Create-Packages/Creating-Localized-Packages.md +++ b/docs/Create-Packages/Creating-Localized-Packages.md @@ -118,7 +118,7 @@ A satellite assembly then uses the naming convention `{identifier}.{language}.{v Because this is a separate package, it has its own `.nuspec` file that contains localized metadata. Be mindful that the language in the `.nuspec` **must** match the one used in the filename. -The satellite assembly **must** also declare an exact version of the primary package as a dependency, using the [] version notation (see [Dependency Versions](../create-packages/dependency-versions.md)). For example, `ContosoUtilities.de.1.0.0.nupkg` must declare a dependency on `ContosoUtilities.1.0.0.nupkg` using the `[1.0.0]` notation. The satellite package can, of course, have a different version number than the primary package. +The satellite assembly **must** also declare an exact version of the primary package as a dependency, using the [] version notation (see [Package versioning](../schema/package-versioning.md)). For example, `ContosoUtilities.de.1.0.0.nupkg` must declare a dependency on `ContosoUtilities.1.0.0.nupkg` using the `[1.0.0]` notation. The satellite package can, of course, have a different version number than the primary package. The satellite package's structure must then include the resource assembly and XML IntelliSense file in a subfolder that matches `{language}` in the package filename: diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index ac6054a79..a84e7c268 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -116,14 +116,14 @@ Here's typical (but fictitious) `.nuspec` file, with annotation comments: - +
    ``` -For details on declaring dependencies and specifying version numbers, see [Dependencies](../create-packages/dependency-versions.md). +For details on declaring dependencies and specifying version numbers, see [Package versioning](../schema/package-versioning.md). Because the manifest is always included in a package, you can find any number of additional examples by examining existing packages. A good source is the global package cache on your machine, the location of which is returned by the following command: @@ -133,7 +133,7 @@ nuget locals -list global-packages Go into any *package\version* folder, copy the `.nupkg` file to a `.zip` file, then open that `.zip` file and examine the `.nuspec` within it. -Note that when creating a `.nuspec` from a Visual Studio project, the manifest will contain tokens that will be replaced with information from the project when the package is build. See [Creating the .nuspec from a Visual Studio project](#from-a-visual-studio-project) below. +Note that when creating a `.nuspec` from a Visual Studio project, the manifest contains tokens that are replaced with information from the project when the package is build. See [Creating the .nuspec from a Visual Studio project](#from-a-visual-studio-project) below. ## Creating the .nuspec file @@ -144,9 +144,9 @@ You can create a `.nuspec` file from scratch in any text editor, or by editing a nuget spec MyPackage ``` -The resulting `MyPackage.nuspec` file (or `Package.nuspec` if you omit a specific name) will contain placeholders for values like the `projectUrl`, so be sure to edit it before using it to creating the package. +The resulting `MyPackage.nuspec` file (or `Package.nuspec` if you omit a specific name) contains placeholders for values like the `projectUrl`, so be sure to edit it before using it to creating the package. -You can also use `nuget spec` with an existing assembly, a Visual Studio project, or a convention-based working directory as described in the following sections. Note that in all cases, the resulting `.nuspec` file will contain placeholders that you'll need to edit before creating the package itself. +You can also use `nuget spec` with an existing assembly, a Visual Studio project, or a convention-based working directory as described in the following sections. Note that in all cases, the resulting `.nuspec` file contains placeholders that you'll need to edit before creating the package itself. ### From an assembly DLL @@ -158,21 +158,21 @@ nuget spec MyAssembly.dll ### From a Visual Studio project -Creating a `.nuspec` from a `.csproj` or `.vbproj` file is convenient because other packages that have been installed into those project will be automatically referenced as dependencies. Simply use the following command in the same folder as the project file: +Creating a `.nuspec` from a `.csproj` or `.vbproj` file is convenient because other packages that have been installed into those project are automatically referenced as dependencies. Simply use the following command in the same folder as the project file: ``` nuget spec ``` -This creates a template `.nuspec` file as usual (where `` is replaced with your project name), but includes tokens that will be replaced at packaging time with values from the project. This means you do not need to update crucial values like the version number in the `.nuspec` as you update the project (but you can always replace the tokens with literal values, if desired). +This creates a template `.nuspec` file as usual (where `` is replaced with your project name), but includes tokens that are replaced at packaging time with values from the project. This means you do not need to update crucial values like the version number in the `.nuspec` as you update the project (but you can always replace the tokens with literal values, if desired). -For example, the `` value will typically appear as follows: +For example, the `` value typically appear as follows: ```xml $id$ ``` -and will be replaced with the `AssemblyName` value from the project file. For the exact mapping of project values to `.nuspec` tokens, see the [Replacement Tokens reference](../schema/nuspec.md#replacement-tokens). +and are replaced with the `AssemblyName` value from the project file. For the exact mapping of project values to `.nuspec` tokens, see the [Replacement Tokens reference](../schema/nuspec.md#replacement-tokens). Note that there are several additional packaging options available when working from a Visual Studio project, as described in the [Creating the package](#creating-the-package) section later on. @@ -211,7 +211,7 @@ Next, from the root folder of this layout, run the following command to create t nuget spec ``` -In this case, the `.nuspec` will not contain any explicit references to the folder structure, but all those files will be automatically included when creating the package later on. +In this case, the `.nuspec` doesn't contain any explicit references to the folder structure, but all those files are automatically included when creating the package later on. ## Choosing a unique package identifier and setting the version number @@ -219,14 +219,14 @@ The package identifier in `` and the version number in `` are the t For the `` value, the following best practices apply: -- **Uniqueness**: The identifier must be unique within nuget.org or whatever gallery will be hosting the package. Before deciding on an identifier, spend a little time searching in the applicable gallery to see if that name is already used. A good pattern to follow is to use your company name as the first part of the identifier, such as `Contoso.`. +- **Uniqueness**: The identifier must be unique within nuget.org or whatever gallery hosts the package. Before deciding on an identifier, spend a little time searching in the applicable gallery to see if that name is already used. A good pattern to follow is to use your company name as the first part of the identifier, such as `Contoso.`. - **Namespace-like names**: Identifiers should follow a pattern similar to namespaces in .NET, using dot notation instead of hyphens. For example, use `Contoso.Utility.UsefulStuff` rather than `Contoso-Utility-UsefulStuff` or `Contoso_Utility_UsefulStuff`. It's especially helpful to the consumers of your package to match the identifier to the namespaces of the code in the package, if applicable. - **Sample Packages**: If you produce a package of sample code that demonstrates how to use another package, attach `.Sample` as a suffix to the identifier, as in `Contoso.Utility.UsefulStuff.Sample`. (The sample package would of course have a dependency on the other package.) When creating a sample package, use the convention-based working directory method described earlier. In the `content` folder, arrange the sample code in a folder called `\Samples\` as in `\Samples\Contoso.Utility.UsefulStuff.Sample`. For the `` value: - In general, set the version of the package to match the library, though this is not strictly required. This is a simple matter when you limit a package to a single assembly, as described earlier in [Deciding which assemblies to package](#deciding-which-assemblies-to-package). Overall, remember that NuGet itself deals with package versions when resolving dependencies, not assembly versions. -- When using a non-standard version scheme, be sure to consider the NuGet versioning rules as explained in [Handling Dependencies](../create-packages/dependency-versions.md). +- When using a non-standard version scheme, be sure to consider the NuGet versioning rules as explained in [Package versioning](../schema/package-versioning.md). > The following series of brief blog posts are also helpful to understand versioning: > @@ -243,7 +243,7 @@ Beginning with NuGet 3.5, packages can be marked with a specific *package type* - `DotnetCliTool` type packages are extensions to the [.NET CLI](https://docs.microsoft.com/dotnet/articles/core/tools/index) and are invoked from the command line. Such packages can be installed only in .NET Core projects and have no effect on restore operations. More details about these per-project extensions are available in the [.NET Core extensibility](https://docs.microsoft.com/dotnet/articles/core/tools/extensibility#per-project-based-extensibility) documentation. - When a DotnetCliTool package is installed, Visual Studio will place the package in the `project.json` `tools` node instead of the `dependencies` node. + When a DotnetCliTool package is installed, Visual Studio places the package in the `project.json` `tools` node instead of the `dependencies` node. - Custom type packages use an arbitrary type identifier that conforms to the same format rules as package IDs. Any type other than Dependency and `DotnetCliTool`, however, are not recognized by the NuGet Package Manager in Visual Studio. @@ -294,12 +294,12 @@ To directly specify files to include in the package, use the `` node in t
    ``` -When you include a file named `readme.txt` in the package, the contents of that file will be displayed in Visual Studio as plain text immediately after the package is installed directly (but not when the package is installed as a dependency). For example, here's how the readme for the HtmlAgilityPack package appears: +When you include a file named `readme.txt` in the package, the contents of that file are displayed in Visual Studio as plain text immediately after the package is installed directly (but not when the package is installed as a dependency). For example, here's how the readme for the HtmlAgilityPack package appears: ![The display of a readme file for a NuGet package upon installation](media/Create_01-ShowReadme.png) > [!Note] -> If you include an empty `` node in the `.nuspec` file, NuGet will not include any other content in the package other than what's in the `lib` folder. +> If you include an empty `` node in the `.nuspec` file, NuGet doesn't include any other content in the package other than what's in the `lib` folder. ## Including MSBuild props and targets in a package @@ -333,7 +333,7 @@ Then in the `.nuspec` file, be sure to refer to these files in the `` nod
    ``` -When NuGet 2.x installs a package with `\build` files, it will add an MSBuild `` elements in the project file pointing to the `.targets` and `.props` files. (`.props` is added at the top of the project file; `.targets` is added at the bottom.) +When NuGet 2.x installs a package with `\build` files, it adds an MSBuild `` elements in the project file pointing to the `.targets` and `.props` files. (`.props` is added at the top of the project file; `.targets` is added at the bottom.) With NuGet 3.x, targets are not added to the project but are instead made available through the `project.lock.json`. @@ -346,7 +346,7 @@ When using an assembly or the convention-based working directory, create a packa nuget pack .nuspec ``` -When using a Visual Studio project, run `nuget pack` instead with your project file, which will automatically load the project's `.nuspec` file and replace any tokens within it using values in the project file: +When using a Visual Studio project, run `nuget pack` instead with your project file, which automatically loads the project's `.nuspec` file and replace any tokens within it using values in the project file: ``` nuget pack .csproj @@ -358,7 +358,7 @@ nuget pack .csproj In all cases, `nuget pack` excludes folders that start with a period, such as `.git` or `.hg`. -NuGet will indicate if there are any errors in the `.nuspec` file that need correcting, such as forgetting to change values in the manifest from their defaults. +NuGet indicates if there are any errors in the `.nuspec` file that need correcting, such as forgetting to change values in the manifest from their defaults. Once `nuget pack` succeeds, you'll have a `.nupkg` file that you can publish to a suitable gallery as described in [Publishing a Package](../create-packages/publish-a-package.md). @@ -378,11 +378,11 @@ The following options are a few that are common with Visual Studio projects: nuget pack MyProject.csproj -IncludeReferencedProjects ``` - This inclusion process is recursive, so if `MyProject.csproj` references projects B and C, and those projects reference D, E, and F, then files from B, C, D, E, and F will be included in the package. + This inclusion process is recursive, so if `MyProject.csproj` references projects B and C, and those projects reference D, E, and F, then files from B, C, D, E, and F are included in the package. - If a referenced project includes a `.nuspec` file of its own, then NuGet adds that referenced project as a dependency instead. You will need to package and publish that project separately. + If a referenced project includes a `.nuspec` file of its own, then NuGet adds that referenced project as a dependency instead. You need to package and publish that project separately. -- **Build configuration**: By default, NuGet will use the default build configuration set in the project file, typically *Debug*. To pack files from a different build configuration, such as *Release*, use the `-properties` option with the configuration: +- **Build configuration**: By default, NuGet uses the default build configuration set in the project file, typically *Debug*. To pack files from a different build configuration, such as *Release*, use the `-properties` option with the configuration: ``` nuget pack MyProject.csproj -properties Configuration=Release @@ -400,7 +400,7 @@ Once you've created a package, which is a `.nupkg` file, you can publish it to t You might also want to extend the capabilities of your package or otherwise support other scenarios as described in the following topics: -- [Handling dependencies](../create-packages/dependency-versions.md) +- [Package versioning](../schema/package-versioning.md) - [Supporting multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) - [Transformations of source and configuration files](../create-packages/source-and-config-file-transformations.md) - [Localization](../create-packages/creating-localized-packages.md) diff --git a/docs/Create-Packages/Dependency-Versions.md b/docs/Create-Packages/Dependency-Versions.md index c08086289..f7eb82b09 100644 --- a/docs/Create-Packages/Dependency-Versions.md +++ b/docs/Create-Packages/Dependency-Versions.md @@ -1,147 +1,3 @@ --- -# required metadata - -title: Dependency Versions in NuGet | Microsoft Docs -author: kraigb -ms.author: kraigb -manager: ghogen -ms.date: 5/4/2017 -ms.topic: article -ms.prod: nuget -#ms.service: -ms.technology: null -ms.assetid: ae6c6212-67e9-4968-9585-e265407fd9c8 - -# optional metadata - -description: Exact details on specifying version numbers and ranges for other packages upon which a NuGet package depends, and how dependencies are installed. -keywords: versioning, NuGet package dependencies, NuGet dependency versions, NuGet version numbers, NuGet package version, version ranges, version specifications, normalized version numbers -#ROBOTS: -#audience: -#ms.devlang: -ms.reviewer: -- karann -- unnir -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - ---- -# Specifying dependency versions for NuGet Packages - -*For .NET Core projects using NuGet 4.0+, see [Package References in Project Files](../consume-packages/package-references-in-project-files.md) for declaring dependencies.* - -When you [create a NuGet package](../create-packages/creating-a-package.md), you can specify dependencies for your package in the `` node of the `.nuspec` file, where each dependency is listed with a `` tag: - -```xml - - - - - - - - - - - -``` - -Dependencies are installed whenever the dependent package is installed, [reinstalled](../consume-packages/reinstalling-and-updating-packages.md), or included in a [package restore](../consume-packages/package-restore.md). NuGet chooses the exact version of the installed dependency by using the value of the `version` attribute specified for that dependency as described in the following sections. - -- [Version ranges](#version-ranges) -- [Normalized version numbers](#normalized-version-numbers) -- [Dependency updates during package install](#dependency-updates-during-package-install). - -> **Best practice** -> -> Developers most commonly specify a minimum version, which is a version number without adornments as shown above, like 6.1.0. This allows NuGet to install that version or later. - - -For additional details on how dependencies are installed, see [Reinstalling and updating packages](../consume-packages/reinstalling-and-updating-packages.md) and [Dependency resolution](../consume-packages/dependency-resolution.md). - - -## Version ranges - -NuGet supports using interval notation for specifying version ranges, summarized as follows: - -| Notation | Applied rule | Description | -|----------|--------------|-------------| -| 1.0 | 1.0 ≤ x | Minimum version, inclusive | -| (1.0,) | 1.0 < x | Minimum version, exclusive | -| [1.0] | x == 1.0 | Exact version match | -| (,1.0] | x ≤ 1.0 | Maximum version, inclusive | -| (,1.0) | x < 1.0 | Maximum version, exclusive | -| [1.0,2.0] | 1.0 ≤ x ≤ 2.0 | Exact range, inclusive | -| (1.0,2.0) | 1.0 < x < 2.0 | Exact range, exclusive | -| [1.0,2.0) | 1.0 ≤ x < 2.0 | Mixed inclusive minimum and exclusive maximum version | -| (1.0) | invalid | invalid | - -> [!Note] -> Pre-release versions are not included when resolving version ranges. Pre-release versions are included when using a wildcard (*) with a floating version number. That is, *[1.0,2.0]* will not include 2.0-beta, but *2.0-** will. However, due to issues [4513](https://github.com/NuGet/Home/issues/4513) and [4859](https://github.com/NuGet/Home/issues/4859), this resolves the lowest matching version, not the latest. - - -A few examples: - -```xml - - - - - - - - - - - - - - -``` - -
    - -> [!Important] -> Always specify a version or version range for package dependencies. NuGet.org will reject packages that lack dependency versions. In addition, without a version, NuGet 2.8.x and earlier will use the latest package version, whereas NuGet 3.x and later will use the lowest package version. Specifying versions avoids this uncertainty. - -## Normalized version numbers - -> [!Note] -> This is a breaking change for NuGet 3.4 and later. - - -When obtaining packages from a repository during install, reinstall, or restore operations, NuGet 3.4 and later will treat version numbers as follows: - -- Leading zeroes are removed from version numbers: - - ``` - 1.00 is treated as 1.0 - 1.01.1 is treated as 1.1.1 - 1.00.0.1 is treated as 1.0.0.1 - ``` - -- A zero in the fourth part of the version number will be omitted - - ``` - 1.0.0.0 is treated as 1.0.0 - 1.0.01.0 is treated as 1.0.1 - ``` - -This normalization does not affect the version numbers in the packages themselves; it affects only how NuGet matches versions. - -However, NuGet repositories must treat these values in the same way as NuGet to prevent package version duplication. Thus a repository that contains v1.0 of a package should not also host v1.0.0 as a separate and different package. - -## Dependency updates during package install - -With NuGet 2.4.x and earlier, when a package is installed whose dependency already exists in the project, the dependency is updated to the latest version that satisfies the version constraints, even if the existing version also satisfies those constraints. - -For example, consider package A that depends on package B and specifies 1.0 for the version number. The source repository contains both versions 1.0, 1.1, and 1.2 of package B. If A is installed in a project that already contains B version 1.0, then B is updated to version 1.2. - -With NuGet 2.5 and later, if a dependency version is already satisfied, the dependency will not be updated during other package installations. - -In the same example above, installing package A into a project with NuGet 2.5 and later will leave package B 1.0 in the project, as it already satisfies the version constraint. However, if package A had requests version 1.1 or higher of B, then B 1.2 would be installed. +redirect_url: /nuget/schema/package-versioning.md +--- \ No newline at end of file diff --git a/docs/Create-Packages/Overview-and-Workflow.md b/docs/Create-Packages/Overview-and-Workflow.md index 5eb2328e7..433d3aafb 100644 --- a/docs/Create-Packages/Overview-and-Workflow.md +++ b/docs/Create-Packages/Overview-and-Workflow.md @@ -5,7 +5,7 @@ title: Overview and workflow of creating NuGet packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 7/20/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -29,24 +29,24 @@ ms.reviewer: --- # Package creation workflow -Creating a package starts with the code you want to package and share with others, either through the public nuget.org gallery or a private gallery within your organization. The package can also include additional files such as a readme that is displayed when the package is installed, and can include transformations to certain project files. +Creating a package starts with the code you want to package and share with others, either through the public nuget.org gallery, a gallery hosted on Visual Studio Team Services, or a private gallery within your organization. The package can also include additional files such as a readme that is displayed when the package is installed, and can include transformations to certain project files. A package can also serve only to pull in a number of other dependencies and not contain any code of its own, which is a convenient way to create a single package for an SDK that's composed of multiple independent packages. In other cases, a package may contain only symbol (`.pdb`) files to aid debugging. > [!Note] -> When you create a package for use by other developers, it's important to understand that they will be taking a dependency on your work. As such, creating and publishing a package also implies a commitment to fixing bugs and making other updates, or at the very least making the package available as open source so others can help to maintain it. +> When you create a package for use by other developers, it's important to understand that they are taking a dependency on your work. As such, creating and publishing a package also implies a commitment to fixing bugs and making other updates, or at the very least making the package available as open source so others can help to maintain it. -To learn and understand the creation process, start with [Creating a package](../create-packages/creating-a-package.md) which will guide you through the core processes common to all packages. This includes deciding which assemblies to package, creating the `.nuspec` (manifest) file, choosing a package identity and version number, setting a package type, adding a readme, and including MSBuild props and targets. The topic ends with creating the package itself using the `nuget pack` command. +To learn and understand the creation process, start with [Creating a package](../create-packages/creating-a-package.md) which guides you through the core processes common to all packages. This includes deciding which assemblies to package, creating the `.nuspec` (manifest) file, choosing a package identity and version number, setting a package type, adding a readme, and including MSBuild props and targets. The topic ends with creating the package itself using the `nuget pack` command. From there, you can consider a number of other options for your package: -- [Dependency Versions](../create-packages/dependency-versions.md) discusses how to identify the exact versions that you allow for your dependencies (other packages that you consume from your package). - [Supporting Multiple Target Frameworks](../create-packages/supporting-multiple-target-frameworks.md) describes how to create a package with multiple variants for different .NET Frameworks. - [Source and Config File Transformations](../create-packages/source-and-config-file-transformations.md) describes how you can do both one-way token replacements in files that are added to a project, and modify `web.config` and `app.config` with settings that are also backed out when the package is uninstalled. - [Creating Localized Packages](../create-packages/creating-localized-packages.md) describes how to structure a package with multiple language resources and how to use separate localized satellite packages. - [Pre-release Packages](../create-packages/prerelease-packages.md) demonstrates how to release alpha, beta, and rc packages to those customers who are interested. - [Native Packages](../create-packages/native-packages.md) describes the process for creating a package for C++ consumers. - [Symbol Packages](../create-packages/symbol-packages.md) offers guidance for supplying symbols for your library that allow consumers to step into your code while debugging. +- [Package versioning](../schema/package-versioning.md) discusses how to identify the exact versions that you allow for your dependencies (other packages that you consume from your package). When you're then ready to publish a package to nuget.org, follow the simple process in [Publish a package](../create-packages/publish-a-package.md). diff --git a/docs/Create-Packages/Prerelease-Packages.md b/docs/Create-Packages/Prerelease-Packages.md index 1252f7752..69a1d305d 100644 --- a/docs/Create-Packages/Prerelease-Packages.md +++ b/docs/Create-Packages/Prerelease-Packages.md @@ -5,7 +5,7 @@ title: Pre-release versions in NuGet packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 7/20/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -14,7 +14,7 @@ ms.assetid: df6a366a-22c1-47bb-8017-18231311ce88 # optional metadata -description: How to specify pre-release version numbers for a NuGet package, using the semantic versioning conventions. +description: Guidance for building pre-release packages keywords: versioning, NuGet package versioning, NuGet prerelease versions, NuGet prerelease packages, preview package versions, RC package versions, Beta package versions, NuGet semantic versioning #ROBOTS: #audience: @@ -28,7 +28,7 @@ ms.reviewer: --- -# Pre-release versions +# Building pre-release packages Whenever you release an updated package with a new version number, NuGet considers that one as the "latest stable release" as shown, for example in the Package Manager UI within Visual Studio: @@ -36,7 +36,7 @@ Whenever you release an updated package with a new version number, NuGet conside A stable release is one that's considered reliable enough to be used in production. The latest stable release is also the one that will be installed as a package update or during package restore (subject to constraints as described in [Reinstalling and updating packages](../consume-packages/reinstalling-and-updating-packages.md)). -To support the software release lifecycle, NuGet 1.6 and later allows for the distribution of pre-release packages, where the version number includes a semantic versioning suffix such as `-alpha`, `-beta`, or `-rc` (as described in [semantic versioning](#semantic-versioning) later in this topic). +To support the software release lifecycle, NuGet 1.6 and later allows for the distribution of pre-release packages, where the version number includes a semantic versioning suffix such as `-alpha`, `-beta`, or `-rc`. For more information, see [Package versioning](../Schema/Package-Versioning.md#pre-release-versions). You can specify such versions in two ways: @@ -52,60 +52,9 @@ You can specify such versions in two ways: [assembly: AssemblyInformationalVersion("1.0.1-beta")] ``` - NuGet will pick up this value instead of the one specified in the `AssemblyVersion` attribute, which does not support SemVer. + NuGet picks up this value instead of the one specified in the `AssemblyVersion` attribute, which does not support semantic versioning. > [!Note] -> A stable package release cannot have a pre-release dependency. This avoids accidentally installing a potentially unstable releases. +> A stable package release cannot have a pre-release dependency. This avoids accidentally installing potentially unstable releases. -When you’re ready to release a stable version, just remove the suffix and the package will take precedence over any pre-release versions. - - -## Installing and updating pre-release packages - -By default, NuGet does not include pre-release versions when working with packages, but you can change this behavior as follows: - -- **Package Manager UI in Visual Studio**: In the **Manage NuGet Packages** UI, check the **Include prerelease** box: - - ![The Include prerelease checkbox in Visual Studio](media/Prerelease_02-CheckPrerelease.png) - - Setting or clearing this box will refresh the Package Manager UI and the list of available versions you can install. - -- **Package Manager Console**: Use the `-IncludePrerelease` switch with the `Find-Package`, `Get-Package`, `Install-Package`, `Sync-Package`, and `Update-Package` commands. Refer to the [PowerShell Reference](../tools/powershell-reference.md). - -- **NuGet CLI**: Use the `-prerelease` switch with the `install`, `update`, `delete`, and `mirror` commands. Refer to the [NuGet CLI reference](../tools/nuget-exe-cli-reference.md) - - -## Semantic versioning - -The [Semantic Versioning or SemVer convention](http://semver.org/spec/v1.0.0.html) describes how to utilize strings in version numbers to convey they meaning of the underlying code. - -In this convention, each version has three parts, `Major.Minor.Patch`, with the following meaning: - -- `Major`: Breaking changes -- `Minor`: New features, but backwards compatible -- `Patch`: Backwards compatible bug fixes only - -Pre-release versions are then denoted by appending a hyphen and a string after the patch number. Technically speaking, you can use *any *string after the hyphen and NuGet will treat the package as pre-release. NuGet then displays the full version number in the applicable UI, leaving consumers to interpret the meaning for themselves. - -With this in mind, it's generally good to follow recognized naming conventions such as the following: - -- `-alpha`: Alpha release, typically used for work-in-progress and experimentation -- `-beta`: Beta release, typically one that is feature complete for the next planned release, but may contain known bugs. -- `-rc`: Release candidate, typically a release that's potentially final (stable) unless significant bugs emerge. - -> [!Note] -> NuGet does not support [SemVer-compatible (v2.0.0)](http://semver.org/spec/v2.0.0.html) prerelease numbers with dot notation, as in `1.0.1-build.23`. You can use a form like `1.0.1-build23` but this is always considered a pre-release version. - -Whatever suffixes you use, however, NuGet will give them precedence in reverse alphabetical order: - -``` -1.0.1 -1.0.1-zzz -1.0.1-rc -1.0.1-open -1.0.1-beta -1.0.1-alpha2 -1.0.1-alpha -``` - -As shown, the version without any suffix will always take precedence over pre-release versions. +When you’re ready to release a stable version, just remove the suffix and the package takes precedence over any pre-release versions. Again, see [Package versioning](../Schema/Package-Versioning.md#pre-release-versions). \ No newline at end of file diff --git a/docs/Create-Packages/project-json-Impact.md b/docs/Create-Packages/project-json-Impact.md index a77b34f19..3b51d8fd9 100644 --- a/docs/Create-Packages/project-json-Impact.md +++ b/docs/Create-Packages/project-json-Impact.md @@ -38,7 +38,7 @@ Traditional NuGet packages support a set of features that are not carried over t ### Install and uninstall scripts are ignored -The transitive restore model, described in [Dependency resolution](../consume-packages/dependency-resolution.md#dependency-resolution-with-projectjson-and-package-references), does not have a concept of "package install time". A package is either present or not present, but there is no consistent process that occurs when a package is installed. +The transitive restore model, described in [Dependency resolution](../consume-packages/dependency-resolution.md#dependency-resolution-with-package-references-and-projectjson), does not have a concept of "package install time". A package is either present or not present, but there is no consistent process that occurs when a package is installed. Also, install scripts were supported only in Visual Studio. Other IDEs had to mock the Visual Studio extensibility API to attempt to support such scripts, and no support was available in common editors and command-line tools. diff --git a/docs/Guides/Create-Cross-Platform-Packages.md b/docs/Guides/Create-Cross-Platform-Packages.md index 8be538703..54ce4fdda 100644 --- a/docs/Guides/Create-Cross-Platform-Packages.md +++ b/docs/Guides/Create-Cross-Platform-Packages.md @@ -286,7 +286,7 @@ To make your package available to other developers, follow the instructions on - [Nuspec Reference](../schema/nuspec.md) - [Symbol packages](../create-packages/symbol-packages.md) -- [Dependency Versions](../create-packages/dependency-versions.md) +- [Package versioning](../schema/package-versioning.md) - [Supporting Multiple .NET Framework Versions](../create-packages/supporting-multiple-target-frameworks.md) - [Including MSBuild props and targets in a package](../create-packages/creating-a-package.md#including-msbuild-props-and-targets-in-a-package) -- [Creating Localized Packages](../create-packages/creating-localized-packages.md) +- [Creating Localized Packages](../create-packages/creating-localized-packages.md) \ No newline at end of file diff --git a/docs/Guides/Create-NET-Standard-Packages-VS2015.md b/docs/Guides/Create-NET-Standard-Packages-VS2015.md index 9e7a31940..28570b603 100644 --- a/docs/Guides/Create-NET-Standard-Packages-VS2015.md +++ b/docs/Guides/Create-NET-Standard-Packages-VS2015.md @@ -168,7 +168,7 @@ If you have any dependencies on other NuGet packages, list those in the ` ``` -The syntax of the *version* attribute here indicates that version 8.0.3 or above is acceptable. To specify different version ranges, refer to [Dependency Versions](../create-packages/dependency-versions.md). +The syntax of the *version* attribute here indicates that version 8.0.3 or above is acceptable. To specify different version ranges, refer to [Package versioning](../schema/package-versioning.md). ### Supporting multiple target frameworks @@ -334,8 +334,8 @@ To do this, create your `readme.txt` file, place it in the project root folder, - [Nuspec Reference](../schema/nuspec.md) - [Symbol packages](../create-packages/symbol-packages.md) -- [Dependency Versions](../create-packages/dependency-versions.md) --[Supporting Multiple .NET Framework Versions](../create-packages/supporting-multiple-target-frameworks.md) +- [Package versioning](../schema/package-versioning.md) +- [Supporting Multiple .NET Framework Versions](../create-packages/supporting-multiple-target-frameworks.md) - [Include MSBuild props and targets in a package](../create-packages/creating-a-package.md#including-msbuild-props-and-targets-in-a-package) - [Creating Localized Packages](../create-packages/creating-localized-packages.md) - [.NET Standard Library documentation](https://docs.microsoft.com/dotnet/articles/standard/library) diff --git a/docs/Guides/Create-UWP-Packages.md b/docs/Guides/Create-UWP-Packages.md index ae660c69f..26f68e101 100644 --- a/docs/Guides/Create-UWP-Packages.md +++ b/docs/Guides/Create-UWP-Packages.md @@ -278,7 +278,7 @@ To make your package available to other developers, follow the instructions on - [.nuspec Reference](../schema/nuspec.md) - [Symbol packages](../create-packages/symbol-packages.md) -- [Dependency Versions](../create-packages/dependency-versions.md) +- [Package versioning](../schema/package-versioning.md) - [Supporting Multiple .NET Framework Versions](../create-packages/supporting-multiple-target-frameworks.md) - [Include MSBuild props and targets in a package](../create-packages/creating-a-package.md#including-msbuild-props-and-targets-in-a-package) - [Creating Localized Packages](../create-packages/creating-localized-packages.md) \ No newline at end of file diff --git a/docs/Quickstart/Create-and-Publish-a-Package.md b/docs/Quickstart/Create-and-Publish-a-Package.md index 8db72a6c2..fbae60992 100644 --- a/docs/Quickstart/Create-and-Publish-a-Package.md +++ b/docs/Quickstart/Create-and-Publish-a-Package.md @@ -174,5 +174,5 @@ And that's it! You've just created and published your first NuGet package to [nu - [Create a Package](../create-packages/creating-a-package.md) - [Publish a Package](../create-packages/publish-a-package.md) - [Support multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) -- [Dependency versions](../create-packages/dependency-versions.md) +- [Package versioning](../schema/package-versioning.md) - [Creating localized packages](../create-packages/creating-localized-packages.md) diff --git a/docs/Release-Notes/NuGet-1.4.md b/docs/Release-Notes/NuGet-1.4.md index 1431c3bf4..ea2c0cce7 100644 --- a/docs/Release-Notes/NuGet-1.4.md +++ b/docs/Release-Notes/NuGet-1.4.md @@ -89,7 +89,7 @@ only work with version 2.* of a package, but not 3.0 and above. In order to prev `packages.config` file using the new `allowedVersions` attribute. For example, the following example shows how to lock the `SomePackage` package the version range 2.0 - 3.0 (exclusive). -The `allowedVersions` attribute accepts values using the [version range format](../create-packages/dependency-versions.md#version-ranges). +The `allowedVersions` attribute accepts values using the [version range format](../schema/package-versioning.md#version-ranges-and-wildcards). ```xml diff --git a/docs/Schema/Package-Versioning.md b/docs/Schema/Package-Versioning.md new file mode 100644 index 000000000..df33be5d4 --- /dev/null +++ b/docs/Schema/Package-Versioning.md @@ -0,0 +1,198 @@ +--- +# required metadata + +title: NuGet Package Version Reference | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 7/20/2017 +ms.topic: article +ms.prod: nuget +#ms.service: +ms.technology: null +ms.assetid: 6ee3c826-dd3a-4fa9-863f-1fd80bc4230f + +# optional metadata + +description: Exact details on specifying version numbers and ranges for other packages upon which a NuGet package depends, and how dependencies are installed. +keywords: versioning, NuGet package dependencies, NuGet dependency versions, NuGet version numbers, NuGet package version, version ranges, version specifications, normalized version numbers +#ROBOTS: +#audience: +#ms.devlang: +ms.reviewer: +- anandr +- karann +- unnir +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: + +--- + +# Package versioning + +A specific package is always referred to using its package identifier and an exact version number. For example, [Entity Framework](https://www.nuget.org/packages/EntityFramework/) on nuget.org has several dozen specific packages available, ranging from version *4.1.10311* to version *6.1.3* (the latest stable release) and a variety of pre-release versions like *6.2.0-beta1*. + +When creating a package, you assign a specific version number with an optional pre-release text suffix. When consuming packages, on the other hand, you can specify either an exact version number or a range of acceptable versions. + +In this topic: + +- [Version basics](#version-basics) including pre-release suffixes. +- [Version ranges and wildcards](#version-ranges-and-wildcards) +- [Normalized version numbers](#normalized-version-numbers) + +## Version basics + +A specific version number is in the form *Major.Minor.Patch[-Suffix]*, where the components have the following meanings: + +- *Major*: Breaking changes +- *Minor*: New features, but backwards compatible +- *Patch*: Backwards compatible bug fixes only +- *-Suffix* (optional): a hyphen followed by a string denoting a pre-release version (following the [Semantic Versioning or SemVer 1.0 convention](http://semver.org/spec/v1.0.0.html)). + +**Examples:** +``` +1.0.1 +6.11.1231 +4.3.1-rc +2.2.44-beta1 +``` + +> [!Important] +> nuget.org rejects any package upload that lacks an exact version number. The version must be specified in the `.nuspec` or project file used to create the package. + +### Pre-release versions + +Technically speaking, package creators can use any string as a suffix to denote a pre-release version, as NuGet treats any such version as pre-release and makes no other interpretation. That is, NuGet displays the full version string in whatever UI is involved, leaving any interpretation of the suffix's meaning to the consumer. + +That said, package developers generally follow recognized naming conventions: + +- `-alpha`: Alpha release, typically used for work-in-progress and experimentation. +- `-beta`: Beta release, typically one that is feature complete for the next planned release, but may contain known bugs. +- `-rc`: Release candidate, typically a release that's potentially final (stable) unless significant bugs emerge. + +> [!Note] +> At present, NuGet does not support [SemVer-compatible (v2.0.0)](http://semver.org/spec/v2.0.0.html) prerelease numbers with dot notation, as in *1.0.1-build.23*. You can use a form like *1.0.1-build23* but this is always considered a pre-release version. + +When resolving package references and multiple package versions differ only by suffix, NuGet chooses a version without a suffix first, then applies precedence to pre-release versions in reverse alphabetical order. For example, the following versions would be chosen in the exact order shown: + +``` +1.0.1 +1.0.1-zzz +1.0.1-rc +1.0.1-open +1.0.1-beta +1.0.1-alpha2 +1.0.1-alpha +1.0.1-aaa +``` + + + + +## Version ranges and wildcards + +When referring to package dependencies, NuGet supports using interval notation for specifying version ranges, summarized as follows: + +| Notation | Applied rule | Description | +|----------|--------------|-------------| +| 1.0 | 1.0 ≤ x | Minimum version, inclusive | +| (1.0,) | 1.0 < x | Minimum version, exclusive | +| [1.0] | x == 1.0 | Exact version match | +| (,1.0] | x ≤ 1.0 | Maximum version, inclusive | +| (,1.0) | x < 1.0 | Maximum version, exclusive | +| [1.0,2.0] | 1.0 ≤ x ≤ 2.0 | Exact range, inclusive | +| (1.0,2.0) | 1.0 < x < 2.0 | Exact range, exclusive | +| [1.0,2.0) | 1.0 ≤ x < 2.0 | Mixed inclusive minimum and exclusive maximum version | +| (1.0) | invalid | invalid | + +When using the PackageReference or `project.json` package reference formats, NuGet also supports using a wildcard notation, \*, for Major, Minor, Patch, and pre-release suffix parts of the number. Wildcards are not supported with the `packages.config` format. + +> [!Note] +> Pre-release versions are not included when resolving version ranges. Pre-release versions *are* included when using a wildcard (\*). The version range *[1.0,2.0]*, for example, does not include 2.0-beta, but the wildcard notation _2.0-*_ does. However, due to issues [issue 912](https://github.com/NuGet/Home/issues/912), [4513](https://github.com/NuGet/Home/issues/4513), and [4859](https://github.com/NuGet/Home/issues/4859), the wildcard notation resolves the lowest matching version, not the latest. There is presently no means to resolve the latest version. + +### Examples + +> [!Important] +> Always specify a version or version range for package dependencies. Without a version or version range, NuGet 2.8.x and earlier chooses the latest available package version when resolving a dependency, whereas NuGet 3.x and later chooses the lowest package version. Specifying a version or version range avoids this uncertainty. + +**References in project files:** +```xml + + + + + + + + + + + + + + + + + + + + +``` + +**References in `packages.config`:** + +```xml + + + + + + + + + + + + + + + + + +``` + + +## Normalized version numbers + +> [!Note] +> This is a breaking change for NuGet 3.4 and later. + +When obtaining packages from a repository during install, reinstall, or restore operations, NuGet 3.4+ treats version numbers as follows: + +- Leading zeroes are removed from version numbers: + + ``` + 1.00 is treated as 1.0 + 1.01.1 is treated as 1.1.1 + 1.00.0.1 is treated as 1.0.0.1 + ``` + +- A zero in the fourth part of the version number will be omitted + + ``` + 1.0.0.0 is treated as 1.0.0 + 1.0.01.0 is treated as 1.0.1 + ``` + +This normalization does not affect the version numbers in the packages themselves; it affects only how NuGet matches versions when resolving dependencies. + +However, NuGet package repositories must treat these values in the same way as NuGet to prevent package version duplication. Thus a repository that contains version *1.0* of a package should not also host version *1.0.0* as a separate and different package. diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index 61b945872..35a1d41d1 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -175,7 +175,7 @@ The `` element within `` contains any number of `` | id | Yes | The identifier of the package, such as Newtonsoft.json or Microsoft.AspNet.Mvc. | | version | Yes | The exact version of the package to install, such as 3.1.1 or 4.2.5.11-beta. A version string must have at least three numbers; a fourth is optional, as is a pre-release suffix. Ranges are not allowed. | | targetFramework | No | The [target framework moniker (TFM)](Target-Frameworks.md) to apply when installing the package. This is initially set to the project's target when a package is installed. As a result, different `` elements can have different TFMs. For example, if you create a project targeting .NET 4.5.2, packages installed at that point will use the TFM of net452. If you ;later retarget the project to .NET 4.6 and add more packages, those will use TFM of net46. A mismatch between the project's target and `targetFramework` attributes will generate warnings, in which case you can reinstall the affected packages. | -| allowedVersions | No | A range of allowed versions for this package applied during package update (see [Constraining upgrade versions](../consume-packages/reinstalling-and-updating-packages.md#constraining-upgrade-versions). It does *not* affect what package is installed during an install or restore operation. See [Dependency versions - version Ranges](../create-packages/dependency-versions.md#version-ranges) for syntax. The PackageManager UI also disables all versions outside the allowed range. | +| allowedVersions | No | A range of allowed versions for this package applied during package update (see [Constraining upgrade versions](../consume-packages/reinstalling-and-updating-packages.md#constraining-upgrade-versions). It does *not* affect what package is installed during an install or restore operation. See [Package versioning](../schema/package-versioning.md#version-ranges-and-wildcards) for syntax. The PackageManager UI also disables all versions outside the allowed range. | | developmentDependency | No | If the consuming project itself creates a NuGet package, setting this to `true` for a dependency prevents that package from being included when the consuming package is created. The default is `false`. | ## Examples From fb07515320a20ac710ba2263cfed8ca3adf6b5a3 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 20 Jul 2017 15:53:55 -0700 Subject: [PATCH 0068/2943] Fix TOC --- docs/TOC.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/TOC.md b/docs/TOC.md index f6b56c1cf..f5ab831ed 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -11,7 +11,6 @@ # Create Packages ## [Overview and Workflow](Create-Packages/Overview-and-Workflow.md) ## [Creating a Package](Create-Packages/Creating-a-Package.md) -## [Dependency Versions](Create-Packages/Dependency-Versions.md) ## [Supporting Multiple Target Frameworks](Create-Packages/Supporting-Multiple-Target-Frameworks.md) ## [Source and Config File Transformations](Create-Packages/Source-and-Config-File-Transformations.md) ## [Creating Localized Packages](Create-Packages/Creating-Localized-Packages.md) @@ -56,6 +55,7 @@ ## [project.json](Schema/project-json.md) ## [MSBuild Targets](Schema/msbuild-targets.md) ## [Nuget.Config file](Schema/nuget-config-file.md) +## [Package Versioning](Schema/Package-Versioning.md) ## [Target Frameworks](Schema/Target-Frameworks.md) ## [Analyzers Conventions](Schema/Analyzers-Conventions.md) # API From 4c8544302f672edd64406d8007c2886a1d10b991 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 20 Jul 2017 16:05:35 -0700 Subject: [PATCH 0069/2943] Restore a missing section --- docs/Consume-Packages/Dependency-Resolution.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/Consume-Packages/Dependency-Resolution.md b/docs/Consume-Packages/Dependency-Resolution.md index 713726fab..63320010e 100644 --- a/docs/Consume-Packages/Dependency-Resolution.md +++ b/docs/Consume-Packages/Dependency-Resolution.md @@ -40,6 +40,7 @@ In this topic: - [Dependency resolution with PackageReference and project.json](#dependency-resolution-with-packagereference-and-projectjson) - [Dependency resolution with packages.confid](#dependency-resolution-with-packagesconfig) - [Excluding references](#excluding-references), which is necessary when there's a conflict between a dependency specified in one project and an assembly that's produced by another. +- [Dependency updates during package install](#dependency-updates-during-package-install) - [Resolving incompatible package errors](#resolving-incompatible-package-errors) ## Dependency resolution with PackageReference and project.json @@ -155,6 +156,15 @@ To resolve this, you must directly reference the `C.dll` you want (or use anothe } ``` +## Dependency updates during package install + +With NuGet 2.4.x and earlier, when a package is installed whose dependency already exists in the project, the dependency is updated to the latest version that satisfies the version constraints, even if the existing version also satisfies those constraints. + +For example, consider package A that depends on package B and specifies 1.0 for the version number. The source repository contains both versions 1.0, 1.1, and 1.2 of package B. If A is installed in a project that already contains B version 1.0, then B is updated to version 1.2. + +With NuGet 2.5 and later, if a dependency version is already satisfied, the dependency isn't updated during other package installations. + +In the same example above, installing package A into a project with NuGet 2.5 and later leaves package B 1.0 in the project, as it already satisfies the version constraint. However, if package A had requests version 1.1 or higher of B, then B 1.2 would be installed. ## Resolving incompatible package errors From 0847a9f0147c74024cf73731d652dcaebcc5a948 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 20 Jul 2017 16:11:35 -0700 Subject: [PATCH 0070/2943] Correct build errors --- .../media/Prerelease_02-CheckPrerelease.png | Bin docs/Create-Packages/project-json-Impact.md | 2 +- docs/Schema/nuspec.md | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename docs/{Create-Packages => Consume-Packages}/media/Prerelease_02-CheckPrerelease.png (100%) diff --git a/docs/Create-Packages/media/Prerelease_02-CheckPrerelease.png b/docs/Consume-Packages/media/Prerelease_02-CheckPrerelease.png similarity index 100% rename from docs/Create-Packages/media/Prerelease_02-CheckPrerelease.png rename to docs/Consume-Packages/media/Prerelease_02-CheckPrerelease.png diff --git a/docs/Create-Packages/project-json-Impact.md b/docs/Create-Packages/project-json-Impact.md index 3b51d8fd9..5ce626b3f 100644 --- a/docs/Create-Packages/project-json-Impact.md +++ b/docs/Create-Packages/project-json-Impact.md @@ -38,7 +38,7 @@ Traditional NuGet packages support a set of features that are not carried over t ### Install and uninstall scripts are ignored -The transitive restore model, described in [Dependency resolution](../consume-packages/dependency-resolution.md#dependency-resolution-with-package-references-and-projectjson), does not have a concept of "package install time". A package is either present or not present, but there is no consistent process that occurs when a package is installed. +The transitive restore model, described in [Dependency resolution](../consume-packages/dependency-resolution.md#dependency-resolution-with-packagereference-and-projectjson), does not have a concept of "package install time". A package is either present or not present, but there is no consistent process that occurs when a package is installed. Also, install scripts were supported only in Visual Studio. Other IDEs had to mock the Visual Studio extensibility API to attempt to support such scripts, and no support was available in common editors and command-line tools. diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index 35a1d41d1..b88efcfb9 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -79,7 +79,7 @@ These elements must appear within a `` element. Element | Description --- | --- **id** | The case-insensitive package identifier, which must be unique across nuget.org or whatever gallery the package will reside in. IDs may not contain spaces or characters that are not valid for a URL, and generally follow .NET namespace rules. See [Choosing a unique package identifier](../create-packages/creating-a-package.md#choosing-a-unique-package-identifier-and-setting-the-version-number) for guidance. -**version** | The version of the package, following the *major.minor.patch* pattern. Version numbers may include a pre-release suffix as described in [Prerelease Packages](../create-packages/prerelease-packages.md#semantic-versioning) +**version** | The version of the package, following the *major.minor.patch* pattern. Version numbers may include a pre-release suffix as described in [Package versioning](../schema/package-versioning.md#pre-release-versions) **description** | A long description of the package for UI display. **authors** | A comma-separated list of packages authors, matching the profile names on nuget.org. These are displayed in the NuGet Gallery on nuget.org and are used to cross-reference packages by the same authors. From 6cc6c5819e1989cb81b8d24292ffb93b7959909f Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 20 Jul 2017 16:21:42 -0700 Subject: [PATCH 0071/2943] Fix redirect --- docs/Create-Packages/Dependency-Versions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Dependency-Versions.md b/docs/Create-Packages/Dependency-Versions.md index f7eb82b09..64a9073a1 100644 --- a/docs/Create-Packages/Dependency-Versions.md +++ b/docs/Create-Packages/Dependency-Versions.md @@ -1,3 +1,3 @@ --- -redirect_url: /nuget/schema/package-versioning.md +redirect_url: /nuget/schema/package-versioning --- \ No newline at end of file From a0e0b64fe14ddf026cf2bb1b243785c0b5f80639 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 21 Jul 2017 11:09:26 -0700 Subject: [PATCH 0072/2943] Initial errors and warnings topic --- docs/Reference/Errors-and-Warnings.md | 479 ++++++++++++++++++++++++++ docs/TOC.md | 3 +- 2 files changed, 481 insertions(+), 1 deletion(-) create mode 100644 docs/Reference/Errors-and-Warnings.md diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md new file mode 100644 index 000000000..4e9c86dc3 --- /dev/null +++ b/docs/Reference/Errors-and-Warnings.md @@ -0,0 +1,479 @@ +--- +# required metadata + +title: NuGet Restore Errors and Warnings Reference | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 7/21/2017 +ms.topic: article +ms.prod: nuget +#ms.service: +ms.technology: null +ms.assetid: b76b8a00-7155-4163-b533-894086d2ef78 + +# optional metadata + +description: Complete reference for warnings and errors issued from NuGet during package restore +keywords: NuGet errors, NuGet warnings, diagnostics +#ROBOTS: +#audience: +#ms.devlang: +ms.reviewer: +- anandr +- karann +- unnir +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: + +--- + +# Errors and warnings + +This topic lists all warnings and errors that may occur with NuGet during package restore. + +[Errors](#errors): + +| Group | Error Numbers | +| --- | --- | +| [Non-specific errors and warnings](#non-specific-errors-and-warnings) | [NU1000](#nu1000), [NU1500](#nu1500) | +| [Invalid input errors](#invalid-input-errors) | [NU1001](#nu1001), [NU1002](#nu1002), [NU1003](#nu1003) | +| [Missing package and project errors](#missing-package-and-project-errors) | [NU1100](#nu1100), [NU1101](#nu1101), [NU1102](#nu1102), [NU1103](#nu1103), [NU1104](#nu1104), [NU1105](#nu1105), [NU1106](#nu1106) | +| [Compatibility errors](#compatibility-errors) | [NU1201](#nu1201), [NU1202](#nu1202), [NU1203](#nu1203), [NU1401](#nu1401) | + +[Warnings](#warnings): + +| Group | Warning numbers | +| --- | --- | +| [Invalid input warnings](#invalid-input-warnings) | [NU1501](#nu1501), [NU1502](#nu1502), [NU1503](#nu1503) | +| [Unexpected package version warnings](#unexpected-package-version-warnings) | [NU1601](#nu1601), [NU1602](#nu1602), [NU1603](#nu1603), [NU1604](#nu1604), [NU1605](#nu1605), [NU1606](#nu1606), [NU1607](#nu1607) | +| [Resolver conflict warnings](#resolver-conflict-warnings) | [NU1606](#nu1606), [NU1607](#nu1607) | +| [Package fallback warnings](#package-fallback-warnings) | [NU1701](#nu1701) | +| [Feed warnings](#feed-warnings) | [NU1801](#nu1801) | + + +## Errors + +| Group | Error Numbers | +| --- | --- | +| [Non-specific errors and warnings](#non-specific-errors-and-warnings) | [NU1000](#nu1000), [NU1500](#nu1500) | +| [Invalid input errors](#invalid-input-errors) | [NU1001](#nu1001), [NU1002](#nu1002), [NU1003](#nu1003) | +| [Missing package and project errors](#missing-package-and-project-errors) | [NU1100](#nu1100), [NU1101](#nu1101), [NU1102](#nu1102), [NU1103](#nu1103), [NU1104](#nu1104), [NU1105](#nu1105), [NU1106](#nu1106) | +| [Compatibility errors](#compatibility-errors) | [NU1201](#nu1201), [NU1202](#nu1202), [NU1203](#nu1203), [NU1401](#nu1401) | + +### Non-specific errors and warnings + +[NU1000](#nu1000) | [NU1500](#nu1500) + +#### NU1000 + +**Issue:** Generic error from NuGet. + +#### NU1500 + +**Issue:** Generic warning from NuGet. + +### Invalid input errors + +[NU1001](#nu1001) | [NU1002](#nu1002) | [NU1003](#nu1003) + +#### NU1001 + +| --- | --- | +| **Issue** | The project does not contain one or more frameworks. | +| **Common causes** | The project does not contain a `TargetFramework` or `TargetFrameworks` property. | +| **Example message** | The project projA does not specify any target frameworks in c:\tmp\projA.csproj. | + + +#### NU1002 + +**Issue**: Invalid combination of inputs along with a CLEAR keyword. + +**Common causes:** CLEAR may not be combined with other inputs. + +**Example:** +``` +'CLEAR' cannot be used in conjunction with other values. +``` + +#### NU1003 + +**Issue:** +`PackageTargetFallback` and `AssetTargetFallback` provide different behavior for selecting assets and can not be used together. + +**Common causes:** +Both `PackageTargetFallback` and `AssetTargetFallback` exist in the project. + +**Example:** +``` +PackageTargetFallback and AssetTargetFallback cannot be used together. Remove PackageTargetFallback(deprecated) references from the project environment. +``` + +### Missing package and project errors + +[NU1100](#nu1100) | [NU1101](#nu1101) | [NU1102](#nu1102) | [NU1103](#nu1103) | [NU1104](#nu1104) | [NU1105](#nu1105) | [NU1106](#nu1106) + +#### NU1100 + +**Issue:** +A dependency group not be resolved. This is a generic issue for types that are not packages or projects. + +**Common causes:** +The project contains a dependency on an item that does not exist. + +**Example:** +``` +Unable to resolve System.Missing for net45 +``` + +#### NU1101 + +**Issue:** +The package id cannot be found on any sources. + +**Common causes:** +The correct package source is missing or the package id has a typo. + +**Example:** +``` +Unable to find package System.Missing. No packages exist with this id in source(s): dotnet-core, dotnet-roslyn, NuGet.org +``` +#### NU1102 + +**Issue:** +The package id is found but a version within the specified dependency range cannot be found on any of the sources. + +**Common causes:** +The correct package source is missing or the dependency range is incorrect. The range might be specified by a package and not the user. + +The user may need to switch to an available version if this package is referenced by the project directly. + +**Example:** +``` +Unable to find package NuGet.Versioning with version (>= 9.0.1) + - Found 30 version(s) in NuGet.org [ Nearest version: 4.0.0 ] + - Found 10 version(s) in dotnet-buildtools [ Nearest version: 4.0.0-rc-2129 ] + - Found 9 version(s) in NuGetVolatile [ Nearest version: 3.0.0-beta-00032 ] + - Found 0 version(s) in dotnet-core + - Found 0 version(s) in dotnet-roslyn +``` + +#### NU1103 + +**Issue:** +No stable versions were found in the dependency range. Pre-release versions were found but are not allowed. + +**Common causes:** +The project specified a stable version for the dependency range. Users need to change this to include pre-release versions. + +**Example:** +``` +Unable to find a stable package NuGet.Versioning with version (>= 3.0.0) + - Found 10 version(s) in dotnet-buildtools [ Nearest version: 4.0.0-rc-2129 ] + - Found 9 version(s) in NuGetVolatile [ Nearest version: 3.0.0-beta-00032 ] + - Found 0 version(s) in dotnet-core + - Found 0 version(s) in dotnet-roslyn +``` + +#### NU1104 + +**Issue:** +A ProjectReference points to a file that does not exist. + +**Common causes:** +The project file is missing from disk or the reference is incorrect. + +**Example:** + +``` +Project reference does not exist 'c:\a.csproj'. Check that the project reference is valid and that the project file exists. +``` + +#### NU1105 + +**Issue:** +The project file exists but no restore information was provided for it. + +**Common causes:** +In Visual Studio this could mean that the project is unloaded. From the command line this could mean that the file is corrupt or that it does not contain the custom after imports target needed for restore to read the project. + +**Example:** + +``` +Unable to read project information for 'c:\a.csproj'. The project file may be invalid or missing targets required for restore. +``` + +#### NU1106 + +**Issue:** +Dependency constraints cannot be resolved. + +**Common causes:** +Packages contain dependency on exact versions of a package instead of open ended ranges. + +**Example:** +``` +Unable to satisfy conflicting requests for {id}: {conflict path} Framework: {target graph} +``` + +### Compatibility errors + +[NU1201](#nu1201) | [NU1202](#nu1202) | [NU1203](#nu1203) | [NU1401](#nu1401) + +#### NU1201 + +**Issue:** +A dependency project does not contain a framework compatible with the current project. + +**Common causes:** +The project's target framework is a higher version than the consuming project. + +**Example:** +``` +Project ServerWeb is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Project ServerWeb supports: + - netstandard1.6 (.NETStandard,Version=v1.6) + - netcoreapp1.0 (.NETCoreApp,Version=v1.0) +``` + +#### NU1202 + +**Issue:** +A dependency package does not contain any assets compatible with the project. + +**Common causes:** +The package does not support the project's target framework. + +**Example:** +``` +Package System.ComponentModel.EventBasedAsync 4.0.11 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package System.ComponentModel.EventBasedAsync 4.0.11 supports: + - monoandroid10 (MonoAndroid,Version=v1.0) + - monotouch10 (MonoTouch,Version=v1.0) + - net45 (.NETFramework,Version=v4.5) + - netcore50 (.NETCore,Version=v5.0) + - netstandard1.0 (.NETStandard,Version=v1.0) + - netstandard1.3 (.NETStandard,Version=v1.3) + - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259) + - win8 (Windows,Version=v8.0) + - wp8 (WindowsPhone,Version=v8.0) + - wpa81 (WindowsPhoneApp,Version=v8.1) + - xamarinios10 (Xamarin.iOS,Version=v1.0) + - xamarinmac20 (Xamarin.Mac,Version=v2.0) + - xamarintvos10 (Xamarin.TVOS,Version=v1.0) + - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0) +``` + +#### NU1203 + +**Issue:** +The package does not support the project's RuntimeIdentifier. + +**Common causes:** +The package does not support the current RuntimeIdentifier. Change the RuntimeIdentifiers used in the project if needed. + +**Example:** +``` +System.Example 1.0.0 provides a compile-time reference assembly for a.dll on net461, but there is no compatible run-time assembly. +``` + +#### NU1401 + +**Issue:** +The package requires features or frameworks not currently supported by the installed version of NuGet. + +**Common causes:** +Upgrade NuGet to fix the issue. + +**Example:** +``` +The 'NuGet.Versioning' package requires NuGet client version '5.0.0' or above, but the current NuGet version is '4.3.0'. To upgrade NuGet, please go to http://docs.nuget.org/consume/installing-nuget. +``` + +## Warnings + +| Group | Warning numbers | +| --- | --- | +| [Invalid input warnings](#invalid-input-warnings) | [NU1501](#nu1501), [NU1502](#nu1502), [NU1503](#nu1503) | +| [Unexpected package version warnings](#unexpected-package-version-warnings) | [NU1601](#nu1601), [NU1602](#nu1602), [NU1603](#nu1603), [NU1604](#nu1604), [NU1605](#nu1605), [NU1606](#nu1606), [NU1607](#nu1607) | +| [Resolver conflict warnings](#resolver-conflict-warnings) | [NU1606](#nu1606), [NU1607](#nu1607) | +| [Package fallback warnings](#package-fallback-warnings) | [NU1701](#nu1701) | +| [Feed warnings](#feed-warnings) | [NU1801](#nu1801) | + +### Invalid input warnings + +[NU1501](#nu1501) | [NU1502](#nu1502) | [NU1503](#nu1503) + +#### NU1501 + +**Issue:** +The project restore is attempting to operate on was not found. + +**Common causes:** +The project is missing. + +**Example:** +``` +The folder 'c:\projects\a' does not contain a project to restore. +``` + +#### NU1502 + +**Issue:** +`RuntimeSupports` contains an invalid profile. + +**Common causes:** +The supports profile was not found in a runtime.json file from the current dependency packages. + +**Example:** +``` +Unknown Compatibility Profile: aaa +``` + +#### NU1503 + +**Issue:** +A dependency project does not import NuGet's restore targets. This is similar to NU1105 but here the project is skipped and ignored instead of causing all of restore to fail. In complex solutions there are often other types of projects that may not support restore. + +**Common causes:** +This can happen for projects that do not import common props/targets which automatically import restore. If the project does not need to be restored this can be ignored. + +**Example:** +``` +Skipping restore for project 'c:\a.csproj'. The project file may be invalid or missing targets required for restore. +``` + +### Unexpected package version warnings + +[NU1601](#nu1601) | [NU1602](#nu1602) | [NU1603](#nu1603) | [NU1604](#nu1604) | [NU1605](#nu1605) | [NU1606](#nu1606) | [NU1607](#nu1607) + +#### NU1601 + +**Issue:** +A direct project dependency was bumped to a higher version than the project specified. + +**Common causes:** +Another dependency package required a higher version and bumped the package up. + +**Example:** +``` +Dependency specified was NuGet.Versioning (>= 3.5.0) but ended up with NuGet.Versioning 4.0.0. +``` + +#### NU1602 + +**Issue:** +A package dependency is missing a lower bound. This does not allow restore to find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. + +**Common causes:** +This is usually a package authoring error. + +**Example:** +``` +NuGet.Packaging 4.0.0 does not provide an inclusive lower bound for dependency NuGet.Versioning (> 3.5.0). An approximate best match of 3.6.0 was resolved. +``` + +#### NU1603 + +**Issue:** +A package dependency specified a version that could not be found. A higher version was used instead, which differs from what the package was authored against. + +This means that restore did not find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. + +**Common causes:** +The package sources do not contain the expected lower bound version. If the package expected has not been released then this may be a package authoring error. + +**Example:** +``` +NuGet.Packaging 4.0.0 depends on NuGet.Versioning (>= 4.0.0) but 4.0.0 was not found. An approximate best match of 5.0.0 was resolved. +``` + +#### NU1604 + +**Issue:** +A project dependency does not define a lower bound. + +This means that restore did not find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. + +**Common causes:** +The project's *PackageReference* *Version* attribute should be updated to include a lower bound. + +**Example:** +``` +Project dependency NuGet.Versioning (<= 9.0.0) does not contain an inclusive lower bound. Include a lower bound in the dependency version to ensure consistent restore results. +``` + +#### NU1605 + +**Issue:** +A dependency package specified a version constraint on a higher version of a package than restore ultimately resolved. + +**Common causes:** +Nearest wins when resolving packages. A nearer package in the graph may have overridden a distant package. + +**Example:** +``` +Detected package downgrade: NuGet.Versioning from 4.0.0 to 3.5.0. Reference the package directly from the project to select a different version. + NuGet.Packaging 3.5.0 -> NuGet.Versioning 3.5.0 + NuGet.Commands 4.0.0 -> NuGet.Configuration 4.0.0 -> NuGet.Versioning 4.0.0 +``` + +### Resolver conflict warnings + +[NU1606](#nu1606) | [NU1607](#nu1607) + +#### NU1606 + +**Issue:** +A circular dependency was detected. + +**Common causes:** +A package is authored incorrectly. + +**Example:** +``` +Cycle detected: A -> B -> A +``` + +#### NU1607 + +**Issue:** +Unable to resolve dependency constaints between packages. + +**Common causes:** +Packages with dependency constaints on exact versions do not allow other packages to increase the version if needed. + +**Example:** +``` +Version conflict detected for NuGet.Versioning. Reference the package directly from the project to resolve this issue. + NuGet.Packaging 3.5.0 -> NuGet.Versioning (= 3.5.0) + NuGet.Configuration 4.0.0 -> NuGet.Versioning (= 4.0.0) +``` + +### Package fallback warnings + +[NU1701](#nu1701) + +#### NU1701 + +**Issue:** +*PackageTargetFallback* was used to select assets from a package. This is a warning to let the user know that the assets may not be 100% compatible. + +**Common causes:** +The package does not support the project framework. + +**Example:** +``` +Package 'NuGet.Versioning' was restored using 'portable-net45+win8' instead the project target framework 'netstandard1.5'. This package may not be fully compatible with your project. +``` + +### Feed warnings + +[NU1801](#nu1801) + +### NU1801 + +**Issue:** +An error occurred when reading the feed. IgnoreFailedSources was set to true, converting it to a non-fatal warning. This could contain any message and is generic. + +**Common causes:** +The source is invalid. diff --git a/docs/TOC.md b/docs/TOC.md index f6b56c1cf..50d54e970 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -50,7 +50,8 @@ ### [Uninstall-Package](Tools/ps-ref-uninstall-package.md) ### [Update-Package](Tools/ps-ref-update-package.md) ## [dotnet Commands](Tools/dotnet-Commands.md) -# Schema +# Reference +## [Errors and warnings](Reference/Errors-and-Warnings.md) ## [.nuspec](Schema/nuspec.md) ## [packages.config](Schema/packages-config.md) ## [project.json](Schema/project-json.md) From a7f6225f835962067998f59ab2f6c34ab00ff6cb Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 21 Jul 2017 11:20:15 -0700 Subject: [PATCH 0073/2943] Testing a formatting --- docs/Reference/Errors-and-Warnings.md | 94 +++++++++++---------------- 1 file changed, 39 insertions(+), 55 deletions(-) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index 4e9c86dc3..437f17971 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -33,7 +33,7 @@ ms.reviewer: This topic lists all warnings and errors that may occur with NuGet during package restore. -[Errors](#errors): +**Errors:** | Group | Error Numbers | | --- | --- | @@ -42,7 +42,7 @@ This topic lists all warnings and errors that may occur with NuGet during packag | [Missing package and project errors](#missing-package-and-project-errors) | [NU1100](#nu1100), [NU1101](#nu1101), [NU1102](#nu1102), [NU1103](#nu1103), [NU1104](#nu1104), [NU1105](#nu1105), [NU1106](#nu1106) | | [Compatibility errors](#compatibility-errors) | [NU1201](#nu1201), [NU1202](#nu1202), [NU1203](#nu1203), [NU1401](#nu1401) | -[Warnings](#warnings): +**Warnings:** | Group | Warning numbers | | --- | --- | @@ -53,40 +53,32 @@ This topic lists all warnings and errors that may occur with NuGet during packag | [Feed warnings](#feed-warnings) | [NU1801](#nu1801) | -## Errors - -| Group | Error Numbers | -| --- | --- | -| [Non-specific errors and warnings](#non-specific-errors-and-warnings) | [NU1000](#nu1000), [NU1500](#nu1500) | -| [Invalid input errors](#invalid-input-errors) | [NU1001](#nu1001), [NU1002](#nu1002), [NU1003](#nu1003) | -| [Missing package and project errors](#missing-package-and-project-errors) | [NU1100](#nu1100), [NU1101](#nu1101), [NU1102](#nu1102), [NU1103](#nu1103), [NU1104](#nu1104), [NU1105](#nu1105), [NU1106](#nu1106) | -| [Compatibility errors](#compatibility-errors) | [NU1201](#nu1201), [NU1202](#nu1202), [NU1203](#nu1203), [NU1401](#nu1401) | - -### Non-specific errors and warnings +## Non-specific errors and warnings [NU1000](#nu1000) | [NU1500](#nu1500) -#### NU1000 +### NU1000 **Issue:** Generic error from NuGet. -#### NU1500 +### NU1500 **Issue:** Generic warning from NuGet. -### Invalid input errors +## Invalid input errors [NU1001](#nu1001) | [NU1002](#nu1002) | [NU1003](#nu1003) -#### NU1001 +### NU1001 +| | | | --- | --- | | **Issue** | The project does not contain one or more frameworks. | | **Common causes** | The project does not contain a `TargetFramework` or `TargetFrameworks` property. | | **Example message** | The project projA does not specify any target frameworks in c:\tmp\projA.csproj. | -#### NU1002 +### NU1002 **Issue**: Invalid combination of inputs along with a CLEAR keyword. @@ -97,7 +89,7 @@ This topic lists all warnings and errors that may occur with NuGet during packag 'CLEAR' cannot be used in conjunction with other values. ``` -#### NU1003 +### NU1003 **Issue:** `PackageTargetFallback` and `AssetTargetFallback` provide different behavior for selecting assets and can not be used together. @@ -110,11 +102,11 @@ Both `PackageTargetFallback` and `AssetTargetFallback` exist in the project. PackageTargetFallback and AssetTargetFallback cannot be used together. Remove PackageTargetFallback(deprecated) references from the project environment. ``` -### Missing package and project errors +## Missing package and project errors [NU1100](#nu1100) | [NU1101](#nu1101) | [NU1102](#nu1102) | [NU1103](#nu1103) | [NU1104](#nu1104) | [NU1105](#nu1105) | [NU1106](#nu1106) -#### NU1100 +### NU1100 **Issue:** A dependency group not be resolved. This is a generic issue for types that are not packages or projects. @@ -127,7 +119,7 @@ The project contains a dependency on an item that does not exist. Unable to resolve System.Missing for net45 ``` -#### NU1101 +### NU1101 **Issue:** The package id cannot be found on any sources. @@ -139,7 +131,7 @@ The correct package source is missing or the package id has a typo. ``` Unable to find package System.Missing. No packages exist with this id in source(s): dotnet-core, dotnet-roslyn, NuGet.org ``` -#### NU1102 +### NU1102 **Issue:** The package id is found but a version within the specified dependency range cannot be found on any of the sources. @@ -159,7 +151,7 @@ Unable to find package NuGet.Versioning with version (>= 9.0.1) - Found 0 version(s) in dotnet-roslyn ``` -#### NU1103 +### NU1103 **Issue:** No stable versions were found in the dependency range. Pre-release versions were found but are not allowed. @@ -176,7 +168,7 @@ Unable to find a stable package NuGet.Versioning with version (>= 3.0.0) - Found 0 version(s) in dotnet-roslyn ``` -#### NU1104 +### NU1104 **Issue:** A ProjectReference points to a file that does not exist. @@ -190,7 +182,7 @@ The project file is missing from disk or the reference is incorrect. Project reference does not exist 'c:\a.csproj'. Check that the project reference is valid and that the project file exists. ``` -#### NU1105 +### NU1105 **Issue:** The project file exists but no restore information was provided for it. @@ -204,7 +196,7 @@ In Visual Studio this could mean that the project is unloaded. From the command Unable to read project information for 'c:\a.csproj'. The project file may be invalid or missing targets required for restore. ``` -#### NU1106 +### NU1106 **Issue:** Dependency constraints cannot be resolved. @@ -217,11 +209,11 @@ Packages contain dependency on exact versions of a package instead of open ended Unable to satisfy conflicting requests for {id}: {conflict path} Framework: {target graph} ``` -### Compatibility errors +## Compatibility errors [NU1201](#nu1201) | [NU1202](#nu1202) | [NU1203](#nu1203) | [NU1401](#nu1401) -#### NU1201 +### NU1201 **Issue:** A dependency project does not contain a framework compatible with the current project. @@ -236,7 +228,7 @@ Project ServerWeb is not compatible with netstandard1.3 (.NETStandard,Version=v1 - netcoreapp1.0 (.NETCoreApp,Version=v1.0) ``` -#### NU1202 +### NU1202 **Issue:** A dependency package does not contain any assets compatible with the project. @@ -263,7 +255,7 @@ Package System.ComponentModel.EventBasedAsync 4.0.11 is not compatible with nets - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0) ``` -#### NU1203 +### NU1203 **Issue:** The package does not support the project's RuntimeIdentifier. @@ -276,7 +268,7 @@ The package does not support the current RuntimeIdentifier. Change the RuntimeId System.Example 1.0.0 provides a compile-time reference assembly for a.dll on net461, but there is no compatible run-time assembly. ``` -#### NU1401 +### NU1401 **Issue:** The package requires features or frameworks not currently supported by the installed version of NuGet. @@ -289,21 +281,13 @@ Upgrade NuGet to fix the issue. The 'NuGet.Versioning' package requires NuGet client version '5.0.0' or above, but the current NuGet version is '4.3.0'. To upgrade NuGet, please go to http://docs.nuget.org/consume/installing-nuget. ``` -## Warnings -| Group | Warning numbers | -| --- | --- | -| [Invalid input warnings](#invalid-input-warnings) | [NU1501](#nu1501), [NU1502](#nu1502), [NU1503](#nu1503) | -| [Unexpected package version warnings](#unexpected-package-version-warnings) | [NU1601](#nu1601), [NU1602](#nu1602), [NU1603](#nu1603), [NU1604](#nu1604), [NU1605](#nu1605), [NU1606](#nu1606), [NU1607](#nu1607) | -| [Resolver conflict warnings](#resolver-conflict-warnings) | [NU1606](#nu1606), [NU1607](#nu1607) | -| [Package fallback warnings](#package-fallback-warnings) | [NU1701](#nu1701) | -| [Feed warnings](#feed-warnings) | [NU1801](#nu1801) | -### Invalid input warnings +## Invalid input warnings [NU1501](#nu1501) | [NU1502](#nu1502) | [NU1503](#nu1503) -#### NU1501 +### NU1501 **Issue:** The project restore is attempting to operate on was not found. @@ -316,7 +300,7 @@ The project is missing. The folder 'c:\projects\a' does not contain a project to restore. ``` -#### NU1502 +### NU1502 **Issue:** `RuntimeSupports` contains an invalid profile. @@ -329,7 +313,7 @@ The supports profile was not found in a runtime.json file from the current depen Unknown Compatibility Profile: aaa ``` -#### NU1503 +### NU1503 **Issue:** A dependency project does not import NuGet's restore targets. This is similar to NU1105 but here the project is skipped and ignored instead of causing all of restore to fail. In complex solutions there are often other types of projects that may not support restore. @@ -342,11 +326,11 @@ This can happen for projects that do not import common props/targets which autom Skipping restore for project 'c:\a.csproj'. The project file may be invalid or missing targets required for restore. ``` -### Unexpected package version warnings +## Unexpected package version warnings [NU1601](#nu1601) | [NU1602](#nu1602) | [NU1603](#nu1603) | [NU1604](#nu1604) | [NU1605](#nu1605) | [NU1606](#nu1606) | [NU1607](#nu1607) -#### NU1601 +### NU1601 **Issue:** A direct project dependency was bumped to a higher version than the project specified. @@ -359,7 +343,7 @@ Another dependency package required a higher version and bumped the package up. Dependency specified was NuGet.Versioning (>= 3.5.0) but ended up with NuGet.Versioning 4.0.0. ``` -#### NU1602 +### NU1602 **Issue:** A package dependency is missing a lower bound. This does not allow restore to find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. @@ -372,7 +356,7 @@ This is usually a package authoring error. NuGet.Packaging 4.0.0 does not provide an inclusive lower bound for dependency NuGet.Versioning (> 3.5.0). An approximate best match of 3.6.0 was resolved. ``` -#### NU1603 +### NU1603 **Issue:** A package dependency specified a version that could not be found. A higher version was used instead, which differs from what the package was authored against. @@ -387,7 +371,7 @@ The package sources do not contain the expected lower bound version. If the pack NuGet.Packaging 4.0.0 depends on NuGet.Versioning (>= 4.0.0) but 4.0.0 was not found. An approximate best match of 5.0.0 was resolved. ``` -#### NU1604 +### NU1604 **Issue:** A project dependency does not define a lower bound. @@ -402,7 +386,7 @@ The project's *PackageReference* *Version* attribute should be updated to includ Project dependency NuGet.Versioning (<= 9.0.0) does not contain an inclusive lower bound. Include a lower bound in the dependency version to ensure consistent restore results. ``` -#### NU1605 +### NU1605 **Issue:** A dependency package specified a version constraint on a higher version of a package than restore ultimately resolved. @@ -417,11 +401,11 @@ Detected package downgrade: NuGet.Versioning from 4.0.0 to 3.5.0. Reference the NuGet.Commands 4.0.0 -> NuGet.Configuration 4.0.0 -> NuGet.Versioning 4.0.0 ``` -### Resolver conflict warnings +## Resolver conflict warnings [NU1606](#nu1606) | [NU1607](#nu1607) -#### NU1606 +### NU1606 **Issue:** A circular dependency was detected. @@ -434,7 +418,7 @@ A package is authored incorrectly. Cycle detected: A -> B -> A ``` -#### NU1607 +### NU1607 **Issue:** Unable to resolve dependency constaints between packages. @@ -449,11 +433,11 @@ Version conflict detected for NuGet.Versioning. Reference the package directly f NuGet.Configuration 4.0.0 -> NuGet.Versioning (= 4.0.0) ``` -### Package fallback warnings +## Package fallback warnings [NU1701](#nu1701) -#### NU1701 +### NU1701 **Issue:** *PackageTargetFallback* was used to select assets from a package. This is a warning to let the user know that the assets may not be 100% compatible. @@ -466,7 +450,7 @@ The package does not support the project framework. Package 'NuGet.Versioning' was restored using 'portable-net45+win8' instead the project target framework 'netstandard1.5'. This package may not be fully compatible with your project. ``` -### Feed warnings +## Feed warnings [NU1801](#nu1801) From 73d9d0e8c944f9ed3727ecb8a97dd273c5b673a5 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 21 Jul 2017 11:54:42 -0700 Subject: [PATCH 0074/2943] Table formatting --- docs/Reference/Errors-and-Warnings.md | 404 ++++++++------------------ 1 file changed, 122 insertions(+), 282 deletions(-) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index 437f17971..b3b6176cf 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -33,7 +33,7 @@ ms.reviewer: This topic lists all warnings and errors that may occur with NuGet during package restore. -**Errors:** +**Errors** | Group | Error Numbers | | --- | --- | @@ -42,12 +42,12 @@ This topic lists all warnings and errors that may occur with NuGet during packag | [Missing package and project errors](#missing-package-and-project-errors) | [NU1100](#nu1100), [NU1101](#nu1101), [NU1102](#nu1102), [NU1103](#nu1103), [NU1104](#nu1104), [NU1105](#nu1105), [NU1106](#nu1106) | | [Compatibility errors](#compatibility-errors) | [NU1201](#nu1201), [NU1202](#nu1202), [NU1203](#nu1203), [NU1401](#nu1401) | -**Warnings:** +**Warnings** | Group | Warning numbers | | --- | --- | | [Invalid input warnings](#invalid-input-warnings) | [NU1501](#nu1501), [NU1502](#nu1502), [NU1503](#nu1503) | -| [Unexpected package version warnings](#unexpected-package-version-warnings) | [NU1601](#nu1601), [NU1602](#nu1602), [NU1603](#nu1603), [NU1604](#nu1604), [NU1605](#nu1605), [NU1606](#nu1606), [NU1607](#nu1607) | +| [Unexpected package version warnings](#unexpected-package-version-warnings) | [NU1601](#nu1601), [NU1602](#nu1602), [NU1603](#nu1603), [NU1604](#nu1604), [NU1605](#nu1605) | | [Resolver conflict warnings](#resolver-conflict-warnings) | [NU1606](#nu1606), [NU1607](#nu1607) | | [Package fallback warnings](#package-fallback-warnings) | [NU1701](#nu1701) | | [Feed warnings](#feed-warnings) | [NU1801](#nu1801) | @@ -59,11 +59,19 @@ This topic lists all warnings and errors that may occur with NuGet during packag ### NU1000 -**Issue:** Generic error from NuGet. +| | | +| --- | --- | +| **Issue** | Generic error from NuGet. | +| **Common causes** | n/a | +| **Example message** | n/a | ### NU1500 -**Issue:** Generic warning from NuGet. +| | | +| --- | --- | +| **Issue** | Generic error from NuGet. | +| **Common causes** | n/a | +| **Example message** | n/a | ## Invalid input errors @@ -75,32 +83,23 @@ This topic lists all warnings and errors that may occur with NuGet during packag | --- | --- | | **Issue** | The project does not contain one or more frameworks. | | **Common causes** | The project does not contain a `TargetFramework` or `TargetFrameworks` property. | -| **Example message** | The project projA does not specify any target frameworks in c:\tmp\projA.csproj. | +| **Example message** | *The project projA does not specify any target frameworks in c:\tmp\projA.csproj* | ### NU1002 -**Issue**: Invalid combination of inputs along with a CLEAR keyword. - -**Common causes:** CLEAR may not be combined with other inputs. - -**Example:** -``` -'CLEAR' cannot be used in conjunction with other values. -``` +| | | +| --- | --- | +| **Issue** | Invalid combination of inputs along with a CLEAR keyword. | +| **Common causes** | CLEAR may not be combined with other inputs. | +| **Example message** | *'CLEAR' cannot be used in conjunction with other values* | ### NU1003 -**Issue:** -`PackageTargetFallback` and `AssetTargetFallback` provide different behavior for selecting assets and can not be used together. - -**Common causes:** -Both `PackageTargetFallback` and `AssetTargetFallback` exist in the project. +| **Issue** | `PackageTargetFallback` and `AssetTargetFallback` provide different behavior for selecting assets and can not be used together. | +| **Common causes** | Both `PackageTargetFallback` and `AssetTargetFallback` exist in the project. | +| **Example message** | *PackageTargetFallback and AssetTargetFallback cannot be used together. Remove PackageTargetFallback(deprecated) references from the project environment.* | -**Example:** -``` -PackageTargetFallback and AssetTargetFallback cannot be used together. Remove PackageTargetFallback(deprecated) references from the project environment. -``` ## Missing package and project errors @@ -108,106 +107,55 @@ PackageTargetFallback and AssetTargetFallback cannot be used together. Remove Pa ### NU1100 -**Issue:** -A dependency group not be resolved. This is a generic issue for types that are not packages or projects. +| **Issue** | A dependency group not be resolved. This is a generic issue for types that are not packages or projects. | +| **Common causes** | The project contains a dependency on an item that does not exist. | +| **Example message** | *Unable to resolve System.Missing for net45* | -**Common causes:** -The project contains a dependency on an item that does not exist. - -**Example:** -``` -Unable to resolve System.Missing for net45 -``` ### NU1101 -**Issue:** -The package id cannot be found on any sources. - -**Common causes:** -The correct package source is missing or the package id has a typo. - -**Example:** -``` -Unable to find package System.Missing. No packages exist with this id in source(s): dotnet-core, dotnet-roslyn, NuGet.org -``` +| **Issue** | The package id cannot be found on any sources. | +| **Common causes** | The correct package source is missing or the package id has a typo. | +| **Example message** | *Unable to find package System.Missing. No packages exist with this id in source(s): dotnet-core, dotnet-roslyn, NuGet.org* | ### NU1102 -**Issue:** -The package id is found but a version within the specified dependency range cannot be found on any of the sources. - -**Common causes:** -The correct package source is missing or the dependency range is incorrect. The range might be specified by a package and not the user. - -The user may need to switch to an available version if this package is referenced by the project directly. - -**Example:** -``` -Unable to find package NuGet.Versioning with version (>= 9.0.1) - - Found 30 version(s) in NuGet.org [ Nearest version: 4.0.0 ] - - Found 10 version(s) in dotnet-buildtools [ Nearest version: 4.0.0-rc-2129 ] - - Found 9 version(s) in NuGetVolatile [ Nearest version: 3.0.0-beta-00032 ] - - Found 0 version(s) in dotnet-core - - Found 0 version(s) in dotnet-roslyn -``` +| **Issue** | The package id is found but a version within the specified dependency range cannot be found on any of the sources. | +| **Common causes** | The correct package source is missing or the dependency range is incorrect. The range might be specified by a package and not the user. The user may need to switch to an available version if this package is referenced by the project directly. | +| **Example message** | *Unable to find package NuGet.Versioning with version (>= 9.0.1)
    + - Found 30 version(s) in NuGet.org [ Nearest version: 4.0.0 ]
    + - Found 10 version(s) in dotnet-buildtools [ Nearest version: 4.0.0-rc-2129 ]
    + - Found 9 version(s) in NuGetVolatile [ Nearest version: 3.0.0-beta-00032 ]
    + - Found 0 version(s) in dotnet-core
    + - Found 0 version(s) in dotnet-roslyn* | ### NU1103 -**Issue:** -No stable versions were found in the dependency range. Pre-release versions were found but are not allowed. - -**Common causes:** -The project specified a stable version for the dependency range. Users need to change this to include pre-release versions. +| **Issue** | No stable versions were found in the dependency range. Pre-release versions were found but are not allowed. | +| **Common causes** | The project specified a stable version for the dependency range. Users need to change this to include pre-release versions. | +| **Example message** | *Unable to find a stable package NuGet.Versioning with version (>= 3.0.0)
    + - Found 10 version(s) in dotnet-buildtools [ Nearest version: 4.0.0-rc-2129 ]
    + - Found 9 version(s) in NuGetVolatile [ Nearest version: 3.0.0-beta-00032 ]
    + - Found 0 version(s) in dotnet-core
    + - Found 0 version(s) in dotnet-roslyn* | -**Example:** -``` -Unable to find a stable package NuGet.Versioning with version (>= 3.0.0) - - Found 10 version(s) in dotnet-buildtools [ Nearest version: 4.0.0-rc-2129 ] - - Found 9 version(s) in NuGetVolatile [ Nearest version: 3.0.0-beta-00032 ] - - Found 0 version(s) in dotnet-core - - Found 0 version(s) in dotnet-roslyn -``` ### NU1104 -**Issue:** -A ProjectReference points to a file that does not exist. - -**Common causes:** -The project file is missing from disk or the reference is incorrect. - -**Example:** - -``` -Project reference does not exist 'c:\a.csproj'. Check that the project reference is valid and that the project file exists. -``` +| **Issue** | A ProjectReference points to a file that does not exist. | +| **Common causes** | The project file is missing from disk or the reference is incorrect. | +| **Example message** | *Project reference does not exist 'c:\a.csproj'. Check that the project reference is valid and that the project file exists.* | ### NU1105 -**Issue:** -The project file exists but no restore information was provided for it. - -**Common causes:** -In Visual Studio this could mean that the project is unloaded. From the command line this could mean that the file is corrupt or that it does not contain the custom after imports target needed for restore to read the project. - -**Example:** - -``` -Unable to read project information for 'c:\a.csproj'. The project file may be invalid or missing targets required for restore. -``` +| **Issue** | The project file exists but no restore information was provided for it. | +| **Common causes** | In Visual Studio this could mean that the project is unloaded. From the command line this could mean that the file is corrupt or that it does not contain the custom after imports target needed for restore to read the project. | +| **Example message** | *Unable to read project information for 'c:\a.csproj'. The project file may be invalid or missing targets required for restore.* | ### NU1106 -**Issue:** -Dependency constraints cannot be resolved. - -**Common causes:** -Packages contain dependency on exact versions of a package instead of open ended ranges. - -**Example:** -``` -Unable to satisfy conflicting requests for {id}: {conflict path} Framework: {target graph} -``` +| **Issue** | Dependency constraints cannot be resolved. | +| **Common causes** | Packages contain dependency on exact versions of a package instead of open ended ranges. | +| **Example message** | *Unable to satisfy conflicting requests for {id}: {conflict path} Framework: {target graph}* | ## Compatibility errors @@ -215,73 +163,46 @@ Unable to satisfy conflicting requests for {id}: {conflict path} Framework: {tar ### NU1201 -**Issue:** -A dependency project does not contain a framework compatible with the current project. +| **Issue** | A dependency project does not contain a framework compatible with the current project. | -**Common causes:** -The project's target framework is a higher version than the consuming project. +| **Common causes** | The project's target framework is a higher version than the consuming project. | +| **Example message** | *Project ServerWeb is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Project ServerWeb supports:
    + - netstandard1.6 (.NETStandard,Version=v1.6)
    + - netcoreapp1.0 (.NETCoreApp,Version=v1.0)* | -**Example:** -``` -Project ServerWeb is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Project ServerWeb supports: - - netstandard1.6 (.NETStandard,Version=v1.6) - - netcoreapp1.0 (.NETCoreApp,Version=v1.0) -``` ### NU1202 -**Issue:** -A dependency package does not contain any assets compatible with the project. - -**Common causes:** -The package does not support the project's target framework. - -**Example:** -``` -Package System.ComponentModel.EventBasedAsync 4.0.11 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package System.ComponentModel.EventBasedAsync 4.0.11 supports: - - monoandroid10 (MonoAndroid,Version=v1.0) - - monotouch10 (MonoTouch,Version=v1.0) - - net45 (.NETFramework,Version=v4.5) - - netcore50 (.NETCore,Version=v5.0) - - netstandard1.0 (.NETStandard,Version=v1.0) - - netstandard1.3 (.NETStandard,Version=v1.3) - - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259) - - win8 (Windows,Version=v8.0) - - wp8 (WindowsPhone,Version=v8.0) - - wpa81 (WindowsPhoneApp,Version=v8.1) - - xamarinios10 (Xamarin.iOS,Version=v1.0) - - xamarinmac20 (Xamarin.Mac,Version=v2.0) - - xamarintvos10 (Xamarin.TVOS,Version=v1.0) - - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0) -``` +| **Issue** | A dependency package does not contain any assets compatible with the project. | +| **Common causes** | The package does not support the project's target framework. | +| **Example message** | *Package System.ComponentModel.EventBasedAsync 4.0.11 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package System.ComponentModel.EventBasedAsync 4.0.11 supports:
    + - monoandroid10 (MonoAndroid,Version=v1.0)
    + - monotouch10 (MonoTouch,Version=v1.0)
    + - net45 (.NETFramework,Version=v4.5)
    + - netcore50 (.NETCore,Version=v5.0)
    + - netstandard1.0 (.NETStandard,Version=v1.0)
    + - netstandard1.3 (.NETStandard,Version=v1.3)
    + - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
    + - win8 (Windows,Version=v8.0)
    + - wp8 (WindowsPhone,Version=v8.0)
    + - wpa81 (WindowsPhoneApp,Version=v8.1)
    + - xamarinios10 (Xamarin.iOS,Version=v1.0)
    + - xamarinmac20 (Xamarin.Mac,Version=v2.0)
    + - xamarintvos10 (Xamarin.TVOS,Version=v1.0)
    + - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0)*| -### NU1203 - -**Issue:** -The package does not support the project's RuntimeIdentifier. -**Common causes:** -The package does not support the current RuntimeIdentifier. Change the RuntimeIdentifiers used in the project if needed. +### NU1203 -**Example:** -``` -System.Example 1.0.0 provides a compile-time reference assembly for a.dll on net461, but there is no compatible run-time assembly. -``` +| **Issue** | The package does not support the project's RuntimeIdentifier. | +| **Common causes** | The package does not support the current RuntimeIdentifier. Change the RuntimeIdentifiers used in the project if needed. | +| **Example message** | *System.Example 1.0.0 provides a compile-time reference assembly for a.dll on net461, but there is no compatible run-time assembly.* | ### NU1401 -**Issue:** -The package requires features or frameworks not currently supported by the installed version of NuGet. - -**Common causes:** -Upgrade NuGet to fix the issue. - -**Example:** -``` -The 'NuGet.Versioning' package requires NuGet client version '5.0.0' or above, but the current NuGet version is '4.3.0'. To upgrade NuGet, please go to http://docs.nuget.org/consume/installing-nuget. -``` - - +| **Issue** | The package requires features or frameworks not currently supported by the installed version of NuGet. | +| **Common causes** | Upgrade NuGet to fix the issue. | +| **Example message** | *The 'NuGet.Versioning' package requires NuGet client version '5.0.0' or above, but the current NuGet version is '4.3.0'. To upgrade NuGet, please go to http://docs.nuget.org/consume/installing-nuget.* | ## Invalid input warnings @@ -289,117 +210,59 @@ The 'NuGet.Versioning' package requires NuGet client version '5.0.0' or above, b ### NU1501 -**Issue:** -The project restore is attempting to operate on was not found. - -**Common causes:** -The project is missing. - -**Example:** -``` -The folder 'c:\projects\a' does not contain a project to restore. -``` +| **Issue** | The project restore is attempting to operate on was not found. | +| **Common causes** | The project is missing. | +| **Example message** | *The folder 'c:\projects\a' does not contain a project to restore.* | ### NU1502 -**Issue:** -`RuntimeSupports` contains an invalid profile. - -**Common causes:** -The supports profile was not found in a runtime.json file from the current dependency packages. - -**Example:** -``` -Unknown Compatibility Profile: aaa -``` +| **Issue** | `RuntimeSupports` contains an invalid profile. | +| **Common causes** | The supports profile was not found in a runtime.json file from the current dependency packages. | +| **Example message** | *Unknown Compatibility Profile: aaa* | ### NU1503 -**Issue:** -A dependency project does not import NuGet's restore targets. This is similar to NU1105 but here the project is skipped and ignored instead of causing all of restore to fail. In complex solutions there are often other types of projects that may not support restore. +| **Issue** | A dependency project does not import NuGet's restore targets. This is similar to NU1105 but here the project is skipped and ignored instead of causing all of restore to fail. In complex solutions there are often other types of projects that may not support restore. | -**Common causes:** -This can happen for projects that do not import common props/targets which automatically import restore. If the project does not need to be restored this can be ignored. +| **Common causes** | This can happen for projects that do not import common props/targets which automatically import restore. If the project does not need to be restored this can be ignored. | -**Example:** -``` -Skipping restore for project 'c:\a.csproj'. The project file may be invalid or missing targets required for restore. -``` +| **Example message** | *Skipping restore for project 'c:\a.csproj'. The project file may be invalid or missing targets required for restore.* | ## Unexpected package version warnings -[NU1601](#nu1601) | [NU1602](#nu1602) | [NU1603](#nu1603) | [NU1604](#nu1604) | [NU1605](#nu1605) | [NU1606](#nu1606) | [NU1607](#nu1607) +[NU1601](#nu1601) | [NU1602](#nu1602) | [NU1603](#nu1603) | [NU1604](#nu1604) | [NU1605](#nu1605) ### NU1601 -**Issue:** -A direct project dependency was bumped to a higher version than the project specified. - -**Common causes:** -Another dependency package required a higher version and bumped the package up. - -**Example:** -``` -Dependency specified was NuGet.Versioning (>= 3.5.0) but ended up with NuGet.Versioning 4.0.0. -``` +| **Issue** | A direct project dependency was bumped to a higher version than the project specified. | +| **Common causes** | Another dependency package required a higher version and bumped the package up. | +| **Example message** | *Dependency specified was NuGet.Versioning (>= 3.5.0) but ended up with NuGet.Versioning 4.0.0.* | ### NU1602 -**Issue:** -A package dependency is missing a lower bound. This does not allow restore to find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. - -**Common causes:** -This is usually a package authoring error. - -**Example:** -``` -NuGet.Packaging 4.0.0 does not provide an inclusive lower bound for dependency NuGet.Versioning (> 3.5.0). An approximate best match of 3.6.0 was resolved. -``` +| **Issue** | A package dependency is missing a lower bound. This does not allow restore to find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. | +| **Common causes** | This is usually a package authoring error. | +| **Example message** | *NuGet.Packaging 4.0.0 does not provide an inclusive lower bound for dependency NuGet.Versioning (> 3.5.0). An approximate best match of 3.6.0 was resolved.* | ### NU1603 -**Issue:** -A package dependency specified a version that could not be found. A higher version was used instead, which differs from what the package was authored against. - -This means that restore did not find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. - -**Common causes:** -The package sources do not contain the expected lower bound version. If the package expected has not been released then this may be a package authoring error. - -**Example:** -``` -NuGet.Packaging 4.0.0 depends on NuGet.Versioning (>= 4.0.0) but 4.0.0 was not found. An approximate best match of 5.0.0 was resolved. -``` +| **Issue** | A package dependency specified a version that could not be found. A higher version was used instead, which differs from what the package was authored against.
    This means that restore did not find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. | +| **Common causes** | The package sources do not contain the expected lower bound version. If the package expected has not been released then this may be a package authoring error. | +| **Example message** | NuGet.Packaging 4.0.0 depends on NuGet.Versioning (>= 4.0.0) but 4.0.0 was not found. An approximate best match of 5.0.0 was resolved. | ### NU1604 -**Issue:** -A project dependency does not define a lower bound. - -This means that restore did not find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. - -**Common causes:** -The project's *PackageReference* *Version* attribute should be updated to include a lower bound. - -**Example:** -``` -Project dependency NuGet.Versioning (<= 9.0.0) does not contain an inclusive lower bound. Include a lower bound in the dependency version to ensure consistent restore results. -``` +| **Issue** | A project dependency does not define a lower bound.
    This means that restore did not find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. | +| **Common causes** | The project's *PackageReference* *Version* attribute should be updated to include a lower bound. | +| **Example message** | *Project dependency NuGet.Versioning (<= 9.0.0) does not contain an inclusive lower bound. Include a lower bound in the dependency version to ensure consistent restore results.* | ### NU1605 -**Issue:** -A dependency package specified a version constraint on a higher version of a package than restore ultimately resolved. - -**Common causes:** -Nearest wins when resolving packages. A nearer package in the graph may have overridden a distant package. - -**Example:** -``` -Detected package downgrade: NuGet.Versioning from 4.0.0 to 3.5.0. Reference the package directly from the project to select a different version. - NuGet.Packaging 3.5.0 -> NuGet.Versioning 3.5.0 - NuGet.Commands 4.0.0 -> NuGet.Configuration 4.0.0 -> NuGet.Versioning 4.0.0 -``` +| **Issue** | A dependency package specified a version constraint on a higher version of a package than restore ultimately resolved. | +| **Common causes** | Nearest wins when resolving packages. A nearer package in the graph may have overridden a distant package. | +| **Example message** | *Detected package downgrade: NuGet.Versioning from 4.0.0 to 3.5.0. Reference the package directly from the project to select a different version.
    + NuGet.Packaging 3.5.0 -> NuGet.Versioning 3.5.0
    + NuGet.Commands 4.0.0 -> NuGet.Configuration 4.0.0 -> NuGet.Versioning 4.0.0* | ## Resolver conflict warnings @@ -407,31 +270,17 @@ Detected package downgrade: NuGet.Versioning from 4.0.0 to 3.5.0. Reference the ### NU1606 -**Issue:** -A circular dependency was detected. - -**Common causes:** -A package is authored incorrectly. - -**Example:** -``` -Cycle detected: A -> B -> A -``` +| **Issue** | A circular dependency was detected. | +| **Common causes** | A package is authored incorrectly. | +| **Example message** | *Cycle detected: A -> B -> A* | ### NU1607 -**Issue:** -Unable to resolve dependency constaints between packages. - -**Common causes:** -Packages with dependency constaints on exact versions do not allow other packages to increase the version if needed. - -**Example:** -``` -Version conflict detected for NuGet.Versioning. Reference the package directly from the project to resolve this issue. - NuGet.Packaging 3.5.0 -> NuGet.Versioning (= 3.5.0) - NuGet.Configuration 4.0.0 -> NuGet.Versioning (= 4.0.0) -``` +| **Issue** | Unable to resolve dependency constraints between packages. | +| **Common causes** | Packages with dependency constraints on exact versions do not allow other packages to increase the version if needed. | +| **Example message** | *Version conflict detected for NuGet.Versioning. Reference the package directly from the project to resolve this issue.
    + NuGet.Packaging 3.5.0 -> NuGet.Versioning (= 3.5.0)
    + NuGet.Configuration 4.0.0 -> NuGet.Versioning (= 4.0.0)* | ## Package fallback warnings @@ -439,16 +288,9 @@ Version conflict detected for NuGet.Versioning. Reference the package directly f ### NU1701 -**Issue:** -*PackageTargetFallback* was used to select assets from a package. This is a warning to let the user know that the assets may not be 100% compatible. - -**Common causes:** -The package does not support the project framework. - -**Example:** -``` -Package 'NuGet.Versioning' was restored using 'portable-net45+win8' instead the project target framework 'netstandard1.5'. This package may not be fully compatible with your project. -``` +| **Issue** | *PackageTargetFallback* was used to select assets from a package. This is a warning to let the user know that the assets may not be 100% compatible. | +| **Common causes** | The package does not support the project framework. | +| **Example message** | *Package 'NuGet.Versioning' was restored using 'portable-net45+win8' instead the project target framework 'netstandard1.5'. This package may not be fully compatible with your project. | ## Feed warnings @@ -456,8 +298,6 @@ Package 'NuGet.Versioning' was restored using 'portable-net45+win8' instead the ### NU1801 -**Issue:** -An error occurred when reading the feed. IgnoreFailedSources was set to true, converting it to a non-fatal warning. This could contain any message and is generic. - -**Common causes:** -The source is invalid. +| **Issue** | An error occurred when reading the feed when `IgnoreFailedSources` is set to true, converting it to a non-fatal warning. This could contain any message and is generic. | +| **Common causes** | The source is invalid. | +| **Example message** | n/a | From 8d9dfcb3dfe00af4e4b4bc31256268227657ed0a Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 21 Jul 2017 12:03:49 -0700 Subject: [PATCH 0075/2943] Add table headers --- docs/Reference/Errors-and-Warnings.md | 51 +++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index b3b6176cf..5058258d2 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -96,6 +96,8 @@ This topic lists all warnings and errors that may occur with NuGet during packag ### NU1003 +| | | +| --- | --- | | **Issue** | `PackageTargetFallback` and `AssetTargetFallback` provide different behavior for selecting assets and can not be used together. | | **Common causes** | Both `PackageTargetFallback` and `AssetTargetFallback` exist in the project. | | **Example message** | *PackageTargetFallback and AssetTargetFallback cannot be used together. Remove PackageTargetFallback(deprecated) references from the project environment.* | @@ -107,6 +109,8 @@ This topic lists all warnings and errors that may occur with NuGet during packag ### NU1100 +| | | +| --- | --- | | **Issue** | A dependency group not be resolved. This is a generic issue for types that are not packages or projects. | | **Common causes** | The project contains a dependency on an item that does not exist. | | **Example message** | *Unable to resolve System.Missing for net45* | @@ -114,11 +118,15 @@ This topic lists all warnings and errors that may occur with NuGet during packag ### NU1101 +| | | +| --- | --- | | **Issue** | The package id cannot be found on any sources. | | **Common causes** | The correct package source is missing or the package id has a typo. | | **Example message** | *Unable to find package System.Missing. No packages exist with this id in source(s): dotnet-core, dotnet-roslyn, NuGet.org* | ### NU1102 +| | | +| --- | --- | | **Issue** | The package id is found but a version within the specified dependency range cannot be found on any of the sources. | | **Common causes** | The correct package source is missing or the dependency range is incorrect. The range might be specified by a package and not the user. The user may need to switch to an available version if this package is referenced by the project directly. | | **Example message** | *Unable to find package NuGet.Versioning with version (>= 9.0.1)
    @@ -130,6 +138,8 @@ This topic lists all warnings and errors that may occur with NuGet during packag ### NU1103 +| | | +| --- | --- | | **Issue** | No stable versions were found in the dependency range. Pre-release versions were found but are not allowed. | | **Common causes** | The project specified a stable version for the dependency range. Users need to change this to include pre-release versions. | | **Example message** | *Unable to find a stable package NuGet.Versioning with version (>= 3.0.0)
    @@ -141,18 +151,24 @@ This topic lists all warnings and errors that may occur with NuGet during packag ### NU1104 +| | | +| --- | --- | | **Issue** | A ProjectReference points to a file that does not exist. | | **Common causes** | The project file is missing from disk or the reference is incorrect. | | **Example message** | *Project reference does not exist 'c:\a.csproj'. Check that the project reference is valid and that the project file exists.* | ### NU1105 +| | | +| --- | --- | | **Issue** | The project file exists but no restore information was provided for it. | | **Common causes** | In Visual Studio this could mean that the project is unloaded. From the command line this could mean that the file is corrupt or that it does not contain the custom after imports target needed for restore to read the project. | | **Example message** | *Unable to read project information for 'c:\a.csproj'. The project file may be invalid or missing targets required for restore.* | ### NU1106 +| | | +| --- | --- | | **Issue** | Dependency constraints cannot be resolved. | | **Common causes** | Packages contain dependency on exact versions of a package instead of open ended ranges. | | **Example message** | *Unable to satisfy conflicting requests for {id}: {conflict path} Framework: {target graph}* | @@ -163,8 +179,9 @@ This topic lists all warnings and errors that may occur with NuGet during packag ### NU1201 +| | | +| --- | --- | | **Issue** | A dependency project does not contain a framework compatible with the current project. | - | **Common causes** | The project's target framework is a higher version than the consuming project. | | **Example message** | *Project ServerWeb is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Project ServerWeb supports:
    - netstandard1.6 (.NETStandard,Version=v1.6)
    @@ -173,6 +190,8 @@ This topic lists all warnings and errors that may occur with NuGet during packag ### NU1202 +| | | +| --- | --- | | **Issue** | A dependency package does not contain any assets compatible with the project. | | **Common causes** | The package does not support the project's target framework. | | **Example message** | *Package System.ComponentModel.EventBasedAsync 4.0.11 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package System.ComponentModel.EventBasedAsync 4.0.11 supports:
    @@ -194,12 +213,16 @@ This topic lists all warnings and errors that may occur with NuGet during packag ### NU1203 +| | | +| --- | --- | | **Issue** | The package does not support the project's RuntimeIdentifier. | | **Common causes** | The package does not support the current RuntimeIdentifier. Change the RuntimeIdentifiers used in the project if needed. | | **Example message** | *System.Example 1.0.0 provides a compile-time reference assembly for a.dll on net461, but there is no compatible run-time assembly.* | ### NU1401 +| | | +| --- | --- | | **Issue** | The package requires features or frameworks not currently supported by the installed version of NuGet. | | **Common causes** | Upgrade NuGet to fix the issue. | | **Example message** | *The 'NuGet.Versioning' package requires NuGet client version '5.0.0' or above, but the current NuGet version is '4.3.0'. To upgrade NuGet, please go to http://docs.nuget.org/consume/installing-nuget.* | @@ -210,22 +233,26 @@ This topic lists all warnings and errors that may occur with NuGet during packag ### NU1501 +| | | +| --- | --- | | **Issue** | The project restore is attempting to operate on was not found. | | **Common causes** | The project is missing. | | **Example message** | *The folder 'c:\projects\a' does not contain a project to restore.* | ### NU1502 +| | | +| --- | --- | | **Issue** | `RuntimeSupports` contains an invalid profile. | | **Common causes** | The supports profile was not found in a runtime.json file from the current dependency packages. | | **Example message** | *Unknown Compatibility Profile: aaa* | ### NU1503 +| | | +| --- | --- | | **Issue** | A dependency project does not import NuGet's restore targets. This is similar to NU1105 but here the project is skipped and ignored instead of causing all of restore to fail. In complex solutions there are often other types of projects that may not support restore. | - | **Common causes** | This can happen for projects that do not import common props/targets which automatically import restore. If the project does not need to be restored this can be ignored. | - | **Example message** | *Skipping restore for project 'c:\a.csproj'. The project file may be invalid or missing targets required for restore.* | ## Unexpected package version warnings @@ -234,30 +261,40 @@ This topic lists all warnings and errors that may occur with NuGet during packag ### NU1601 +| | | +| --- | --- | | **Issue** | A direct project dependency was bumped to a higher version than the project specified. | | **Common causes** | Another dependency package required a higher version and bumped the package up. | | **Example message** | *Dependency specified was NuGet.Versioning (>= 3.5.0) but ended up with NuGet.Versioning 4.0.0.* | ### NU1602 +| | | +| --- | --- | | **Issue** | A package dependency is missing a lower bound. This does not allow restore to find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. | | **Common causes** | This is usually a package authoring error. | | **Example message** | *NuGet.Packaging 4.0.0 does not provide an inclusive lower bound for dependency NuGet.Versioning (> 3.5.0). An approximate best match of 3.6.0 was resolved.* | ### NU1603 +| | | +| --- | --- | | **Issue** | A package dependency specified a version that could not be found. A higher version was used instead, which differs from what the package was authored against.
    This means that restore did not find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. | | **Common causes** | The package sources do not contain the expected lower bound version. If the package expected has not been released then this may be a package authoring error. | | **Example message** | NuGet.Packaging 4.0.0 depends on NuGet.Versioning (>= 4.0.0) but 4.0.0 was not found. An approximate best match of 5.0.0 was resolved. | ### NU1604 +| | | +| --- | --- | | **Issue** | A project dependency does not define a lower bound.
    This means that restore did not find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. | | **Common causes** | The project's *PackageReference* *Version* attribute should be updated to include a lower bound. | | **Example message** | *Project dependency NuGet.Versioning (<= 9.0.0) does not contain an inclusive lower bound. Include a lower bound in the dependency version to ensure consistent restore results.* | ### NU1605 +| | | +| --- | --- | | **Issue** | A dependency package specified a version constraint on a higher version of a package than restore ultimately resolved. | | **Common causes** | Nearest wins when resolving packages. A nearer package in the graph may have overridden a distant package. | | **Example message** | *Detected package downgrade: NuGet.Versioning from 4.0.0 to 3.5.0. Reference the package directly from the project to select a different version.
    @@ -270,12 +307,16 @@ This topic lists all warnings and errors that may occur with NuGet during packag ### NU1606 +| | | +| --- | --- | | **Issue** | A circular dependency was detected. | | **Common causes** | A package is authored incorrectly. | | **Example message** | *Cycle detected: A -> B -> A* | ### NU1607 +| | | +| --- | --- | | **Issue** | Unable to resolve dependency constraints between packages. | | **Common causes** | Packages with dependency constraints on exact versions do not allow other packages to increase the version if needed. | | **Example message** | *Version conflict detected for NuGet.Versioning. Reference the package directly from the project to resolve this issue.
    @@ -288,6 +329,8 @@ This topic lists all warnings and errors that may occur with NuGet during packag ### NU1701 +| | | +| --- | --- | | **Issue** | *PackageTargetFallback* was used to select assets from a package. This is a warning to let the user know that the assets may not be 100% compatible. | | **Common causes** | The package does not support the project framework. | | **Example message** | *Package 'NuGet.Versioning' was restored using 'portable-net45+win8' instead the project target framework 'netstandard1.5'. This package may not be fully compatible with your project. | @@ -298,6 +341,8 @@ This topic lists all warnings and errors that may occur with NuGet during packag ### NU1801 +| | | +| --- | --- | | **Issue** | An error occurred when reading the feed when `IgnoreFailedSources` is set to true, converting it to a non-fatal warning. This could contain any message and is generic. | | **Common causes** | The source is invalid. | | **Example message** | n/a | From 849715c64227337a3af9443dc8cfaba77b6464c7 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 21 Jul 2017 12:21:32 -0700 Subject: [PATCH 0076/2943] Formatting --- docs/Reference/Errors-and-Warnings.md | 47 +++++---------------------- 1 file changed, 9 insertions(+), 38 deletions(-) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index 5058258d2..649d70446 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -129,12 +129,7 @@ This topic lists all warnings and errors that may occur with NuGet during packag | --- | --- | | **Issue** | The package id is found but a version within the specified dependency range cannot be found on any of the sources. | | **Common causes** | The correct package source is missing or the dependency range is incorrect. The range might be specified by a package and not the user. The user may need to switch to an available version if this package is referenced by the project directly. | -| **Example message** | *Unable to find package NuGet.Versioning with version (>= 9.0.1)
    - - Found 30 version(s) in NuGet.org [ Nearest version: 4.0.0 ]
    - - Found 10 version(s) in dotnet-buildtools [ Nearest version: 4.0.0-rc-2129 ]
    - - Found 9 version(s) in NuGetVolatile [ Nearest version: 3.0.0-beta-00032 ]
    - - Found 0 version(s) in dotnet-core
    - - Found 0 version(s) in dotnet-roslyn* | +| **Example message** | *Unable to find package NuGet.Versioning with version (>= 9.0.1)
    - Found 30 version(s) in NuGet.org [ Nearest version: 4.0.0 ]
    - Found 10 version(s) in dotnet-buildtools [ Nearest version: 4.0.0-rc-2129 ]
    - Found 9 version(s) in NuGetVolatile [ Nearest version: 3.0.0-beta-00032 ]
    - Found 0 version(s) in dotnet-core
    - Found 0 version(s) in dotnet-roslyn* | ### NU1103 @@ -142,11 +137,7 @@ This topic lists all warnings and errors that may occur with NuGet during packag | --- | --- | | **Issue** | No stable versions were found in the dependency range. Pre-release versions were found but are not allowed. | | **Common causes** | The project specified a stable version for the dependency range. Users need to change this to include pre-release versions. | -| **Example message** | *Unable to find a stable package NuGet.Versioning with version (>= 3.0.0)
    - - Found 10 version(s) in dotnet-buildtools [ Nearest version: 4.0.0-rc-2129 ]
    - - Found 9 version(s) in NuGetVolatile [ Nearest version: 3.0.0-beta-00032 ]
    - - Found 0 version(s) in dotnet-core
    - - Found 0 version(s) in dotnet-roslyn* | +| **Example message** | *Unable to find a stable package NuGet.Versioning with version (>= 3.0.0)
    - Found 10 version(s) in dotnet-buildtools [ Nearest version: 4.0.0-rc-2129 ]
    - Found 9 version(s) in NuGetVolatile [ Nearest version: 3.0.0-beta-00032 ]
    - Found 0 version(s) in dotnet-core
    - Found 0 version(s) in dotnet-roslyn* | ### NU1104 @@ -183,9 +174,7 @@ This topic lists all warnings and errors that may occur with NuGet during packag | --- | --- | | **Issue** | A dependency project does not contain a framework compatible with the current project. | | **Common causes** | The project's target framework is a higher version than the consuming project. | -| **Example message** | *Project ServerWeb is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Project ServerWeb supports:
    - - netstandard1.6 (.NETStandard,Version=v1.6)
    - - netcoreapp1.0 (.NETCoreApp,Version=v1.0)* | +| **Example message** | *Project ServerWeb is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Project ServerWeb supports:
    - netstandard1.6 (.NETStandard,Version=v1.6)
    - netcoreapp1.0 (.NETCoreApp,Version=v1.0)* | ### NU1202 @@ -194,21 +183,7 @@ This topic lists all warnings and errors that may occur with NuGet during packag | --- | --- | | **Issue** | A dependency package does not contain any assets compatible with the project. | | **Common causes** | The package does not support the project's target framework. | -| **Example message** | *Package System.ComponentModel.EventBasedAsync 4.0.11 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package System.ComponentModel.EventBasedAsync 4.0.11 supports:
    - - monoandroid10 (MonoAndroid,Version=v1.0)
    - - monotouch10 (MonoTouch,Version=v1.0)
    - - net45 (.NETFramework,Version=v4.5)
    - - netcore50 (.NETCore,Version=v5.0)
    - - netstandard1.0 (.NETStandard,Version=v1.0)
    - - netstandard1.3 (.NETStandard,Version=v1.3)
    - - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
    - - win8 (Windows,Version=v8.0)
    - - wp8 (WindowsPhone,Version=v8.0)
    - - wpa81 (WindowsPhoneApp,Version=v8.1)
    - - xamarinios10 (Xamarin.iOS,Version=v1.0)
    - - xamarinmac20 (Xamarin.Mac,Version=v2.0)
    - - xamarintvos10 (Xamarin.TVOS,Version=v1.0)
    - - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0)*| +| **Example message** | *Package System.ComponentModel.EventBasedAsync 4.0.11 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package System.ComponentModel.EventBasedAsync 4.0.11 supports:
    - monoandroid10 (MonoAndroid,Version=v1.0)
    - monotouch10 (MonoTouch,Version=v1.0)
    - net45 (.NETFramework,Version=v4.5)
    - netcore50 (.NETCore,Version=v5.0)
    - netstandard1.0 (.NETStandard,Version=v1.0)
    - netstandard1.3 (.NETStandard,Version=v1.3)
    - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
    - win8 (Windows,Version=v8.0)
    - wp8 (WindowsPhone,Version=v8.0)
    - wpa81 (WindowsPhoneApp,Version=v8.1)
    - xamarinios10 (Xamarin.iOS,Version=v1.0)
    - xamarinmac20 (Xamarin.Mac,Version=v2.0)
    - xamarintvos10 (Xamarin.TVOS,Version=v1.0)
    - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0)*| ### NU1203 @@ -279,7 +254,7 @@ This topic lists all warnings and errors that may occur with NuGet during packag | | | | --- | --- | -| **Issue** | A package dependency specified a version that could not be found. A higher version was used instead, which differs from what the package was authored against.
    This means that restore did not find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. | +| **Issue** | A package dependency specified a version that could not be found. A higher version was used instead, which differs from what the package was authored against.

    This means that restore did not find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. | | **Common causes** | The package sources do not contain the expected lower bound version. If the package expected has not been released then this may be a package authoring error. | | **Example message** | NuGet.Packaging 4.0.0 depends on NuGet.Versioning (>= 4.0.0) but 4.0.0 was not found. An approximate best match of 5.0.0 was resolved. | @@ -287,7 +262,7 @@ This topic lists all warnings and errors that may occur with NuGet during packag | | | | --- | --- | -| **Issue** | A project dependency does not define a lower bound.
    This means that restore did not find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. | +| **Issue** | A project dependency does not define a lower bound.

    This means that restore did not find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. | | **Common causes** | The project's *PackageReference* *Version* attribute should be updated to include a lower bound. | | **Example message** | *Project dependency NuGet.Versioning (<= 9.0.0) does not contain an inclusive lower bound. Include a lower bound in the dependency version to ensure consistent restore results.* | @@ -297,9 +272,7 @@ This topic lists all warnings and errors that may occur with NuGet during packag | --- | --- | | **Issue** | A dependency package specified a version constraint on a higher version of a package than restore ultimately resolved. | | **Common causes** | Nearest wins when resolving packages. A nearer package in the graph may have overridden a distant package. | -| **Example message** | *Detected package downgrade: NuGet.Versioning from 4.0.0 to 3.5.0. Reference the package directly from the project to select a different version.
    - NuGet.Packaging 3.5.0 -> NuGet.Versioning 3.5.0
    - NuGet.Commands 4.0.0 -> NuGet.Configuration 4.0.0 -> NuGet.Versioning 4.0.0* | +| **Example message** | *Detected package downgrade: NuGet.Versioning from 4.0.0 to 3.5.0. Reference the package directly from the project to select a different version.
    NuGet.Packaging 3.5.0 -> NuGet.Versioning 3.5.0
    NuGet.Commands 4.0.0 -> NuGet.Configuration 4.0.0 -> NuGet.Versioning 4.0.0* | ## Resolver conflict warnings @@ -319,9 +292,7 @@ This topic lists all warnings and errors that may occur with NuGet during packag | --- | --- | | **Issue** | Unable to resolve dependency constraints between packages. | | **Common causes** | Packages with dependency constraints on exact versions do not allow other packages to increase the version if needed. | -| **Example message** | *Version conflict detected for NuGet.Versioning. Reference the package directly from the project to resolve this issue.
    - NuGet.Packaging 3.5.0 -> NuGet.Versioning (= 3.5.0)
    - NuGet.Configuration 4.0.0 -> NuGet.Versioning (= 4.0.0)* | +| **Example message** | *Version conflict detected for NuGet.Versioning. Reference the package directly from the project to resolve this issue.
    NuGet.Packaging 3.5.0 -> NuGet.Versioning (= 3.5.0)
    NuGet.Configuration 4.0.0 -> NuGet.Versioning (= 4.0.0)* | ## Package fallback warnings @@ -333,7 +304,7 @@ This topic lists all warnings and errors that may occur with NuGet during packag | --- | --- | | **Issue** | *PackageTargetFallback* was used to select assets from a package. This is a warning to let the user know that the assets may not be 100% compatible. | | **Common causes** | The package does not support the project framework. | -| **Example message** | *Package 'NuGet.Versioning' was restored using 'portable-net45+win8' instead the project target framework 'netstandard1.5'. This package may not be fully compatible with your project. | +| **Example message** | *Package 'NuGet.Versioning' was restored using 'portable-net45+win8' instead the project target framework 'netstandard1.5'. This package may not be fully compatible with your project.* | ## Feed warnings From a05b69aad9ae2f3abf4cfbb84057fb0e73b19687 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 21 Jul 2017 12:48:00 -0700 Subject: [PATCH 0077/2943] Grammar edits --- docs/Reference/Errors-and-Warnings.md | 46 +++++++++++++-------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index 649d70446..8b8ffef61 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -81,8 +81,8 @@ This topic lists all warnings and errors that may occur with NuGet during packag | | | | --- | --- | -| **Issue** | The project does not contain one or more frameworks. | -| **Common causes** | The project does not contain a `TargetFramework` or `TargetFrameworks` property. | +| **Issue** | The project doesn't contain one or more frameworks. | +| **Common causes** | The project doesn't contain a `TargetFramework` or `TargetFrameworks` property. | | **Example message** | *The project projA does not specify any target frameworks in c:\tmp\projA.csproj* | @@ -98,7 +98,7 @@ This topic lists all warnings and errors that may occur with NuGet during packag | | | | --- | --- | -| **Issue** | `PackageTargetFallback` and `AssetTargetFallback` provide different behavior for selecting assets and can not be used together. | +| **Issue** | `PackageTargetFallback` and `AssetTargetFallback` provide different behavior for selecting assets and cannot be used together. | | **Common causes** | Both `PackageTargetFallback` and `AssetTargetFallback` exist in the project. | | **Example message** | *PackageTargetFallback and AssetTargetFallback cannot be used together. Remove PackageTargetFallback(deprecated) references from the project environment.* | @@ -112,7 +112,7 @@ This topic lists all warnings and errors that may occur with NuGet during packag | | | | --- | --- | | **Issue** | A dependency group not be resolved. This is a generic issue for types that are not packages or projects. | -| **Common causes** | The project contains a dependency on an item that does not exist. | +| **Common causes** | The project contains a dependency on an item that doesn't exist. | | **Example message** | *Unable to resolve System.Missing for net45* | @@ -120,14 +120,14 @@ This topic lists all warnings and errors that may occur with NuGet during packag | | | | --- | --- | -| **Issue** | The package id cannot be found on any sources. | -| **Common causes** | The correct package source is missing or the package id has a typo. | +| **Issue** | The package cannot be found on any sources. | +| **Common causes** | The correct package source is missing or the package identifier is incorrect. | | **Example message** | *Unable to find package System.Missing. No packages exist with this id in source(s): dotnet-core, dotnet-roslyn, NuGet.org* | ### NU1102 | | | | --- | --- | -| **Issue** | The package id is found but a version within the specified dependency range cannot be found on any of the sources. | +| **Issue** | The package identifier is found but a version within the specified dependency range cannot be found on any of the sources. | | **Common causes** | The correct package source is missing or the dependency range is incorrect. The range might be specified by a package and not the user. The user may need to switch to an available version if this package is referenced by the project directly. | | **Example message** | *Unable to find package NuGet.Versioning with version (>= 9.0.1)
    - Found 30 version(s) in NuGet.org [ Nearest version: 4.0.0 ]
    - Found 10 version(s) in dotnet-buildtools [ Nearest version: 4.0.0-rc-2129 ]
    - Found 9 version(s) in NuGetVolatile [ Nearest version: 3.0.0-beta-00032 ]
    - Found 0 version(s) in dotnet-core
    - Found 0 version(s) in dotnet-roslyn* | @@ -136,7 +136,7 @@ This topic lists all warnings and errors that may occur with NuGet during packag | | | | --- | --- | | **Issue** | No stable versions were found in the dependency range. Pre-release versions were found but are not allowed. | -| **Common causes** | The project specified a stable version for the dependency range. Users need to change this to include pre-release versions. | +| **Common causes** | The project specified a stable version for the dependency range. Users need to change the version range to include pre-release versions. | | **Example message** | *Unable to find a stable package NuGet.Versioning with version (>= 3.0.0)
    - Found 10 version(s) in dotnet-buildtools [ Nearest version: 4.0.0-rc-2129 ]
    - Found 9 version(s) in NuGetVolatile [ Nearest version: 3.0.0-beta-00032 ]
    - Found 0 version(s) in dotnet-core
    - Found 0 version(s) in dotnet-roslyn* | @@ -144,7 +144,7 @@ This topic lists all warnings and errors that may occur with NuGet during packag | | | | --- | --- | -| **Issue** | A ProjectReference points to a file that does not exist. | +| **Issue** | A ProjectReference points to a file that doesn't exist. | | **Common causes** | The project file is missing from disk or the reference is incorrect. | | **Example message** | *Project reference does not exist 'c:\a.csproj'. Check that the project reference is valid and that the project file exists.* | @@ -153,7 +153,7 @@ This topic lists all warnings and errors that may occur with NuGet during packag | | | | --- | --- | | **Issue** | The project file exists but no restore information was provided for it. | -| **Common causes** | In Visual Studio this could mean that the project is unloaded. From the command line this could mean that the file is corrupt or that it does not contain the custom after imports target needed for restore to read the project. | +| **Common causes** | In Visual Studio this could mean that the project is unloaded. From the command line this could mean that the file is corrupt or that it doesn't contain the custom after imports target needed for restore to read the project. | | **Example message** | *Unable to read project information for 'c:\a.csproj'. The project file may be invalid or missing targets required for restore.* | ### NU1106 @@ -161,7 +161,7 @@ This topic lists all warnings and errors that may occur with NuGet during packag | | | | --- | --- | | **Issue** | Dependency constraints cannot be resolved. | -| **Common causes** | Packages contain dependency on exact versions of a package instead of open ended ranges. | +| **Common causes** | Packages contain dependency on exact versions of a package instead of open-ended ranges. | | **Example message** | *Unable to satisfy conflicting requests for {id}: {conflict path} Framework: {target graph}* | ## Compatibility errors @@ -172,7 +172,7 @@ This topic lists all warnings and errors that may occur with NuGet during packag | | | | --- | --- | -| **Issue** | A dependency project does not contain a framework compatible with the current project. | +| **Issue** | A dependency project doesn't contain a framework compatible with the current project. | | **Common causes** | The project's target framework is a higher version than the consuming project. | | **Example message** | *Project ServerWeb is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Project ServerWeb supports:
    - netstandard1.6 (.NETStandard,Version=v1.6)
    - netcoreapp1.0 (.NETCoreApp,Version=v1.0)* | @@ -181,8 +181,8 @@ This topic lists all warnings and errors that may occur with NuGet during packag | | | | --- | --- | -| **Issue** | A dependency package does not contain any assets compatible with the project. | -| **Common causes** | The package does not support the project's target framework. | +| **Issue** | A dependency package doesn't contain any assets compatible with the project. | +| **Common causes** | The package doesn't support the project's target framework. | | **Example message** | *Package System.ComponentModel.EventBasedAsync 4.0.11 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package System.ComponentModel.EventBasedAsync 4.0.11 supports:
    - monoandroid10 (MonoAndroid,Version=v1.0)
    - monotouch10 (MonoTouch,Version=v1.0)
    - net45 (.NETFramework,Version=v4.5)
    - netcore50 (.NETCore,Version=v5.0)
    - netstandard1.0 (.NETStandard,Version=v1.0)
    - netstandard1.3 (.NETStandard,Version=v1.3)
    - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
    - win8 (Windows,Version=v8.0)
    - wp8 (WindowsPhone,Version=v8.0)
    - wpa81 (WindowsPhoneApp,Version=v8.1)
    - xamarinios10 (Xamarin.iOS,Version=v1.0)
    - xamarinmac20 (Xamarin.Mac,Version=v2.0)
    - xamarintvos10 (Xamarin.TVOS,Version=v1.0)
    - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0)*| @@ -190,8 +190,8 @@ This topic lists all warnings and errors that may occur with NuGet during packag | | | | --- | --- | -| **Issue** | The package does not support the project's RuntimeIdentifier. | -| **Common causes** | The package does not support the current RuntimeIdentifier. Change the RuntimeIdentifiers used in the project if needed. | +| **Issue** | The package doesn't support the project's `RuntimeIdentifier`. | +| **Common causes** | The package doesn't support the current `RuntimeIdentifier`. Change the `RuntimeIdentifier` values used in the project if needed. | | **Example message** | *System.Example 1.0.0 provides a compile-time reference assembly for a.dll on net461, but there is no compatible run-time assembly.* | ### NU1401 @@ -219,15 +219,15 @@ This topic lists all warnings and errors that may occur with NuGet during packag | | | | --- | --- | | **Issue** | `RuntimeSupports` contains an invalid profile. | -| **Common causes** | The supports profile was not found in a runtime.json file from the current dependency packages. | +| **Common causes** | The supports profile was not found in a `runtime.json` file from the current dependency packages. | | **Example message** | *Unknown Compatibility Profile: aaa* | ### NU1503 | | | | --- | --- | -| **Issue** | A dependency project does not import NuGet's restore targets. This is similar to NU1105 but here the project is skipped and ignored instead of causing all of restore to fail. In complex solutions there are often other types of projects that may not support restore. | -| **Common causes** | This can happen for projects that do not import common props/targets which automatically import restore. If the project does not need to be restored this can be ignored. | +| **Issue** | A dependency project doesn't import NuGet's restore targets. This is similar to NU1105 but here the project is skipped and ignored instead of causing all of restore to fail. In complex solutions there are often other types of projects that may not support restore. | +| **Common causes** | This can happen for projects that do not import common props/targets which automatically import restore. If the project doesn't need to be restored this can be ignored. | | **Example message** | *Skipping restore for project 'c:\a.csproj'. The project file may be invalid or missing targets required for restore.* | ## Unexpected package version warnings @@ -246,7 +246,7 @@ This topic lists all warnings and errors that may occur with NuGet during packag | | | | --- | --- | -| **Issue** | A package dependency is missing a lower bound. This does not allow restore to find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. | +| **Issue** | A package dependency is missing a lower bound. This doesn't allow restore to find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. | | **Common causes** | This is usually a package authoring error. | | **Example message** | *NuGet.Packaging 4.0.0 does not provide an inclusive lower bound for dependency NuGet.Versioning (> 3.5.0). An approximate best match of 3.6.0 was resolved.* | @@ -262,9 +262,9 @@ This topic lists all warnings and errors that may occur with NuGet during packag | | | | --- | --- | -| **Issue** | A project dependency does not define a lower bound.

    This means that restore did not find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. | +| **Issue** | A project dependency doesn't define a lower bound.

    This means that restore did not find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. | | **Common causes** | The project's *PackageReference* *Version* attribute should be updated to include a lower bound. | -| **Example message** | *Project dependency NuGet.Versioning (<= 9.0.0) does not contain an inclusive lower bound. Include a lower bound in the dependency version to ensure consistent restore results.* | +| **Example message** | *Project dependency NuGet.Versioning (<= 9.0.0) doe not contain an inclusive lower bound. Include a lower bound in the dependency version to ensure consistent restore results.* | ### NU1605 @@ -303,7 +303,7 @@ This topic lists all warnings and errors that may occur with NuGet during packag | | | | --- | --- | | **Issue** | *PackageTargetFallback* was used to select assets from a package. This is a warning to let the user know that the assets may not be 100% compatible. | -| **Common causes** | The package does not support the project framework. | +| **Common causes** | The package doesn't support the project framework. | | **Example message** | *Package 'NuGet.Versioning' was restored using 'portable-net45+win8' instead the project target framework 'netstandard1.5'. This package may not be fully compatible with your project.* | ## Feed warnings From 315659857739006da682c032f18af8844bae8362 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 21 Jul 2017 14:37:57 -0700 Subject: [PATCH 0078/2943] Add preview note, also in TOC --- docs/Reference/Errors-and-Warnings.md | 8 +++++--- docs/TOC.md | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index 8b8ffef61..5415fcfc9 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -1,7 +1,7 @@ --- # required metadata -title: NuGet Restore Errors and Warnings Reference | Microsoft Docs +title: NuGet Restore Errors and Warnings Reference (PREVIEW) | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen @@ -29,9 +29,11 @@ ms.reviewer: --- -# Errors and warnings +# Errors and warnings (PREVIEW) -This topic lists all warnings and errors that may occur with NuGet during package restore. +In NuGet 4.3.0 (currently in preview), errors and warnings are numbered as described inthis topic and provide detailed information to help you address the issues involved. + +The errors and warnings listed here are available only with [PackageReference-based](../Consume-Packages/Package-References-in-Project-Files.md) projects and NuGet 4.3.0 (currently in preview). NuGet also honors MSBuild properties to suppress warnings or elevate them to errors. For more information, see [How to: Suppress Compiler Warnings](https://docs.microsoft.com/visualstudio/ide/how-to-suppress-compiler-warnings) in the Visual Studio documentation. **Errors** diff --git a/docs/TOC.md b/docs/TOC.md index 50d54e970..5c62017c7 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -51,7 +51,6 @@ ### [Update-Package](Tools/ps-ref-update-package.md) ## [dotnet Commands](Tools/dotnet-Commands.md) # Reference -## [Errors and warnings](Reference/Errors-and-Warnings.md) ## [.nuspec](Schema/nuspec.md) ## [packages.config](Schema/packages-config.md) ## [project.json](Schema/project-json.md) @@ -59,6 +58,7 @@ ## [Nuget.Config file](Schema/nuget-config-file.md) ## [Target Frameworks](Schema/Target-Frameworks.md) ## [Analyzers Conventions](Schema/Analyzers-Conventions.md) +## [Errors and warnings (PREVIEW)](Reference/Errors-and-Warnings.md) # API ## [NuGet API V3](API/NuGet-API-V3.md) ## [NuGet Credential Providers for Visual Studio](API/Nuget-Credential-Providers-for-Visual-Studio.md) From a5af579f07163411006bf9e69f21a30333560e1d Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 21 Jul 2017 14:51:59 -0700 Subject: [PATCH 0079/2943] Update Errors-and-Warnings.md --- docs/Reference/Errors-and-Warnings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index 5415fcfc9..54bed3b44 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -31,7 +31,7 @@ ms.reviewer: # Errors and warnings (PREVIEW) -In NuGet 4.3.0 (currently in preview), errors and warnings are numbered as described inthis topic and provide detailed information to help you address the issues involved. +In NuGet 4.3.0 (currently in preview), errors and warnings are numbered as described in this topic and provide detailed information to help you address the issues involved. The errors and warnings listed here are available only with [PackageReference-based](../Consume-Packages/Package-References-in-Project-Files.md) projects and NuGet 4.3.0 (currently in preview). NuGet also honors MSBuild properties to suppress warnings or elevate them to errors. For more information, see [How to: Suppress Compiler Warnings](https://docs.microsoft.com/visualstudio/ide/how-to-suppress-compiler-warnings) in the Visual Studio documentation. From 6de605dd38aca3b2e25df47379397332cfcd8b05 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 21 Jul 2017 14:58:41 -0700 Subject: [PATCH 0080/2943] Update Errors-and-Warnings.md --- docs/Reference/Errors-and-Warnings.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index 54bed3b44..347790198 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -57,6 +57,8 @@ The errors and warnings listed here are available only with [PackageReference-ba ## Non-specific errors and warnings +These are internal NuGet error/warning. If you get any of these error/warning codes, the log should contain more information. + [NU1000](#nu1000) | [NU1500](#nu1500) ### NU1000 From 508355c9692fc19e0e746e794628d1f0e52ae5ed Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 21 Jul 2017 15:06:42 -0700 Subject: [PATCH 0081/2943] Update Errors-and-Warnings.md --- docs/Reference/Errors-and-Warnings.md | 44 ++++++++++++--------------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index 347790198..6ead1dcbc 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -39,10 +39,10 @@ The errors and warnings listed here are available only with [PackageReference-ba | Group | Error Numbers | | --- | --- | -| [Non-specific errors and warnings](#non-specific-errors-and-warnings) | [NU1000](#nu1000), [NU1500](#nu1500) | | [Invalid input errors](#invalid-input-errors) | [NU1001](#nu1001), [NU1002](#nu1002), [NU1003](#nu1003) | | [Missing package and project errors](#missing-package-and-project-errors) | [NU1100](#nu1100), [NU1101](#nu1101), [NU1102](#nu1102), [NU1103](#nu1103), [NU1104](#nu1104), [NU1105](#nu1105), [NU1106](#nu1106) | | [Compatibility errors](#compatibility-errors) | [NU1201](#nu1201), [NU1202](#nu1202), [NU1203](#nu1203), [NU1401](#nu1401) | +| [NuGet internal errors and warnings](#nuget-internal-errors-and-warnings) | [NU1000](#nu1000), [NU1500](#nu1500) | **Warnings** @@ -54,29 +54,6 @@ The errors and warnings listed here are available only with [PackageReference-ba | [Package fallback warnings](#package-fallback-warnings) | [NU1701](#nu1701) | | [Feed warnings](#feed-warnings) | [NU1801](#nu1801) | - -## Non-specific errors and warnings - -These are internal NuGet error/warning. If you get any of these error/warning codes, the log should contain more information. - -[NU1000](#nu1000) | [NU1500](#nu1500) - -### NU1000 - -| | | -| --- | --- | -| **Issue** | Generic error from NuGet. | -| **Common causes** | n/a | -| **Example message** | n/a | - -### NU1500 - -| | | -| --- | --- | -| **Issue** | Generic error from NuGet. | -| **Common causes** | n/a | -| **Example message** | n/a | - ## Invalid input errors [NU1001](#nu1001) | [NU1002](#nu1002) | [NU1003](#nu1003) @@ -321,3 +298,22 @@ These are internal NuGet error/warning. If you get any of these error/warning co | **Issue** | An error occurred when reading the feed when `IgnoreFailedSources` is set to true, converting it to a non-fatal warning. This could contain any message and is generic. | | **Common causes** | The source is invalid. | | **Example message** | n/a | + + +## NuGet internal errors and warnings + +[NU1000](#nu1000) | [NU1500](#nu1500) + +### NU1000 + +| | | +| --- | --- | +| **Issue** | A non specific internal error from NuGet. | +| **Common causes** | Check the logs for more information | + +### NU1500 + +| | | +| --- | --- | +| **Issue** | A non specific internal warning from NuGet. | +| **Common causes** | Check the logs for more information | From 47e77d38dd39fef3b72b7c3467502ad8166be0f4 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 21 Jul 2017 15:28:13 -0700 Subject: [PATCH 0082/2943] Slight change to index table --- docs/Reference/Errors-and-Warnings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index 6ead1dcbc..1acf2ae0b 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -42,7 +42,6 @@ The errors and warnings listed here are available only with [PackageReference-ba | [Invalid input errors](#invalid-input-errors) | [NU1001](#nu1001), [NU1002](#nu1002), [NU1003](#nu1003) | | [Missing package and project errors](#missing-package-and-project-errors) | [NU1100](#nu1100), [NU1101](#nu1101), [NU1102](#nu1102), [NU1103](#nu1103), [NU1104](#nu1104), [NU1105](#nu1105), [NU1106](#nu1106) | | [Compatibility errors](#compatibility-errors) | [NU1201](#nu1201), [NU1202](#nu1202), [NU1203](#nu1203), [NU1401](#nu1401) | -| [NuGet internal errors and warnings](#nuget-internal-errors-and-warnings) | [NU1000](#nu1000), [NU1500](#nu1500) | **Warnings** @@ -53,6 +52,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | [Resolver conflict warnings](#resolver-conflict-warnings) | [NU1606](#nu1606), [NU1607](#nu1607) | | [Package fallback warnings](#package-fallback-warnings) | [NU1701](#nu1701) | | [Feed warnings](#feed-warnings) | [NU1801](#nu1801) | +| [NuGet internal errors and warnings](#nuget-internal-errors-and-warnings) | [NU1000](#nu1000), [NU1500](#nu1500) | ## Invalid input errors From 750218c9bfdfea07c6659594313f0693ce494ff8 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 25 Jul 2017 11:30:12 -0700 Subject: [PATCH 0083/2943] Various edits and page refreshes, adding PS Ref topic --- docs/Consume-Packages/Package-Restore.md | 10 +- docs/Create-Packages/Creating-a-Package.md | 157 ++++++++++-------- docs/Guides/Install-NuGet.md | 6 +- docs/Tools/Package-Manager-UI.md | 52 +++--- docs/Tools/PowerShell-Reference.md | 30 ++-- .../media/Register-TabExpansion-Example.png | Bin 0 -> 10909 bytes docs/Tools/ps-ref-register-tabexpansion.md | 66 ++++++++ 7 files changed, 208 insertions(+), 113 deletions(-) create mode 100644 docs/Tools/media/Register-TabExpansion-Example.png create mode 100644 docs/Tools/ps-ref-register-tabexpansion.md diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/Consume-Packages/Package-Restore.md index b89fa72a1..1aa0c2d1a 100644 --- a/docs/Consume-Packages/Package-Restore.md +++ b/docs/Consume-Packages/Package-Restore.md @@ -59,18 +59,18 @@ First, package references are maintained in one of the following package managem | `project.json` | 3.x+ | Used only by default with UWP projects, but projects can be converted from `packages.config`. `project.json` lists only top-level dependencies. References, Targets, and Props are added dynamically to the project during build, resulting in better performance compared with `packages.config`. (See [project.json schema](../schema/project-json.md).)| | PackageReference | 4.x+ | Lists dependencies directly in the project file in the `` node, alongside `` and ``. Works similarly to `project.json`; see [Package references in project files](../Consume-Packages/Package-References-in-Project-Files.md). | -Using these reference lists, package restore then happens in different ways both from the command line and inside Visual Studio. +Second, you start a restore using the reference list in a variety of ways: -From the command line or Package Manager Console: +From the command line or [Package Manager Console](../tools/Package-Manager-Console.md): | Command | Applicable scenarios | | --- | --- | | `nuget restore` | All versions of NuGet and all reference types. See [Command-line restore](#command-line-restore) below. | | `dotnet restore` | Same as `nuget restore` for .NET Core projects. See [dotnet restore](https://docs.microsoft.com/dotnet/articles/core/tools/dotnet-restore). | | `msbuild /t:restore` | Nuget 4.x+ and MSBuild 15.1+ with [package references in project files](../Consume-Packages/Package-References-in-Project-Files.md) only. `nuget restore` and `dotnet restore` both use this command for applicable projects. See [NuGet pack and restore as MSBuild targets- restore target](../schema/msbuild-targets.md#restore-target).| -| `Update-Package -reinstall -ProjectName ` | Restores a project's packages from the Package Manager Console. See [Udpate-Package reference](../tools/ps-ref-update-package.md). | +| `Update-Package -reinstall -ProjectName ` | Restores a project's packages from the Package Manager Console. See [Update-Package reference](../tools/ps-ref-update-package.md). | -Inside Visual Studio, there are four ways that package restore can happen: +Visual Studio itself also restores packages at different times: | Type | When restore happens | | --- | --- | @@ -83,7 +83,7 @@ See [Automatic restore in Visual Studio](#automatic-restore-in-visual-studio) be ## Enabling and disabling package restore -Automatic restore and command-line restore is enabled by default with NuGet 2.7 and later. MSBuild-integrated restore and command-line restore is **not** enabled by default for NuGet 2.6 and earlier and must be enabled manually. +Automatic restore and command-line restore is enabled by default with NuGet 2.7+. MSBuild-integrated restore and command-line restore is **not** enabled by default for NuGet 2.6 and earlier and must be enabled manually. Package restore is primarily enabled through **Tools > Options > [NuGet] Package Manager > General** in Visual Studio: diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index ac6054a79..6f00a64c5 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -5,7 +5,7 @@ title: How to create a NuGet package | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 2/8/2017 +ms.date: 7/24/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -29,16 +29,14 @@ ms.reviewer: --- # Creating NuGet packages -> [!Note] -> This topic is intended to be a reference for the process of creating a package. For a focused walkthrough example, refer to the [Create and Publish a Package Quickstart](../quickstart/create-and-publish-a-package.md). -> -> Additionally, this topic applies to all project types other than .NET Core projects using Visual Studio 2017 and NuGet 4.0+. In these cases, NuGet uses information from a `.csproj` file directly. These details are explained in [Create .NET Standard Packages with Visual Studio 2017](../guides/create-net-standard-packages-vs2017.md) and [NuGet pack and restore as MSBuild targets](../schema/msbuild-targets.md). - No matter what your package does or what code it contains, NuGet is how you package that functionality into a component that can be shared with and used by any number of other developers. -The process of creating a package always begins with creating a `.nuspec` package manifest file that describes your package contents. This manifest drives the creation of the package as well as its usage when installed into a project. +This topic is a reference for different aspects of creating a package. For a focused walkthrough, refer to [Create and Publish a Package Quickstart](../quickstart/create-and-publish-a-package.md). -This topic covers the most common steps involved in package creation: +> [!Note] +> This topic applies to project types other than .NET Core projects using Visual Studio 2017 and NuGet 4.0+. In those .NET Core projects, NuGet uses information in the `.csproj` file directly. For details, see [Create .NET Standard Packages with Visual Studio 2017](../guides/create-net-standard-packages-vs2017.md) and [NuGet pack and restore as MSBuild targets](../schema/msbuild-targets.md). + +In this topic: - [Deciding which assemblies to package](#deciding-which-assemblies-to-package) - [The role and structure of the `.nuspec` file](#the-role-and-structure-of-the-nuspec-file) @@ -52,20 +50,38 @@ This topic covers the most common steps involved in package creation: - [Including MSBuild props and targets in a package](#including-msbuild-props-and-targets-in-a-package) - [Creating the package](#creating-the-package) -After these core steps, you can incorporate a variety of other features as described in the other topics in this documentation. See [Next steps](#next-steps) below for a list of those options. +After these core steps, you can incorporate a variety of other features as described elsewhere in this documentation. See [Next steps](#next-steps) below. ## Deciding which assemblies to package -In general, it's a best practice to have one NuGet package per assembly, provided that each assembly is independently useful. For example, if you have a `Utilities.dll` that depends on `Parser.dll`, and `Parser.dll` is useful on its own, then create one package for each. +In general, it's best to have one NuGet package per assembly, provided that each assembly is independently useful. For example, if you have a `Utilities.dll` that depends on `Parser.dll`, and `Parser.dll` is useful on its own, then create one package for each. -However, if your package contains assemblies that are used exclusively by your package, then it's fine to include them. For example, if `Utilities.dll` depends on `Utilities.resources.dll`, where the latter is not useful on its own, then you can put both in the same package. +However, if your package contains assemblies that are used exclusively by your package, then it's fine to include them. For example, if `Utilities.dll` depends on `Utilities.resources.dll`, where the latter is not useful on its own, then put both in the same package. > [!Note] -> When a package is installed into a project, NuGet automatically adds assembly references to the package's DLLs, *excluding* those that are named `.resources.dll` because they are assumed to be localized satellite assemblies (see [Creating localized packages](../create-packages/creating-localized-packages.md)). For this reason, avoid using `.resources.dll` for files that otherwise contain essential package code. +> When a package is installed into a project, NuGet automatically adds assembly references to the package's DLLs, *excluding* those that are named `.resources.dll` because they are assumed to be localized satellite assemblies (see [Creating localized packages](creating-localized-packages.md)). For this reason, avoid using `.resources.dll` for files that otherwise contain essential package code. ## The role and structure of the .nuspec file -A `.nuspec` is an XML manifest file that describes a package's contents and drives the process of creating a NuGet package. At a minimum, the manifest includes the package identifier, version number, the title that appears in a gallery, author and owner information, and a long description. It can also include release notes, copyright information, a short description for the Package Manager UI in Visual Studio, a locale ID, home page and license URLs, an icon URL, lists of dependencies and references, tags that assist in gallery searches, and more. See the [.nuspec reference](../schema/nuspec.md) for complete details. +The process of creating a package always begins with creating a `.nuspec` package manifest, an XML file that describes your package contents. This manifest drives the creation of the package as well as its usage when installed into a project. + +Required properties: +- The package identifier, which must be unique across the gallery that hosts the package. +- A specific version number in the form *Major.Minor.Patch.Build[-Suffix]* where *-Suffix* identifies [pre-release versions](Prerelease-Packages.md)- - The package title as it should appears on the host (like nuget.org) +- Author and owner information. +- A long description of the package. + +Common optional properties: +- Release note +- Copyright information +- A short description for the [Package Manager UI in Visual Studio](../Tools/Package-Manager-UI.md) +- A locale ID +- Home page and license URLs +- An icon URL +- Lists of dependencies and references +- Tags that assist in gallery searches + +For more information on all properties, see the [.nuspec reference](../schema/nuspec.md). Here's typical (but fictitious) `.nuspec` file, with annotation comments: @@ -116,7 +132,7 @@ Here's typical (but fictitious) `.nuspec` file, with annotation comments:
    - + @@ -133,77 +149,86 @@ nuget locals -list global-packages Go into any *package\version* folder, copy the `.nupkg` file to a `.zip` file, then open that `.zip` file and examine the `.nuspec` within it. -Note that when creating a `.nuspec` from a Visual Studio project, the manifest will contain tokens that will be replaced with information from the project when the package is build. See [Creating the .nuspec from a Visual Studio project](#from-a-visual-studio-project) below. - +> [!Note] +> When creating a `.nuspec` from a Visual Studio project, the manifest contains tokens that are be replaced with information from the project when the package is built. See [Creating the .nuspec from a Visual Studio project](#from-a-visual-studio-project). ## Creating the .nuspec file -You can create a `.nuspec` file from scratch in any text editor, or by editing a file from another project. You can also have NuGet create a template manifest for your by using the following command: +You can create a `.nuspec` file in a variety of ways: +- Use a text editor to create the file from scratch. +- Create a copy of an existing manifest and edit as desired. +- Use the [nuget spec](../Tools/nuget-exe-CLI-Reference.md#spec) command to create a template manifest. + +With `nuget spec`, you can create a new file with default values, or you can create a file using information in an existing assembly DLL, a Visual Studio project, or a convention-based working directory as explained in the following sections. + +> [!Important] +> Generated `.nuspec` files contain placeholders that must be modified before creating the package with the `nuget pack` command. That command fails if the `.nuspec` contains any placeholders. + +### New file with default values + +The following command creates a default manifest: ``` -nuget spec MyPackage +nuget spec [] ``` -The resulting `MyPackage.nuspec` file (or `Package.nuspec` if you omit a specific name) will contain placeholders for values like the `projectUrl`, so be sure to edit it before using it to creating the package. - -You can also use `nuget spec` with an existing assembly, a Visual Studio project, or a convention-based working directory as described in the following sections. Note that in all cases, the resulting `.nuspec` file will contain placeholders that you'll need to edit before creating the package itself. +If you omit ``, the resulting file is `Package.nuspec`. If you provide a name such as `Contoso.Utility.UsefulStuff`, the file is `Contoso.Utility.UsefulStuff.nuspec`. ### From an assembly DLL -If you have an assembly DLL, you can easily generate a `.nuspec` file from the metadata in the assembly using the following command: +If you have an assembly DLL, generate a `.nuspec` file from the metadata in the assembly using the following command: ``` -nuget spec MyAssembly.dll +nuget spec .dll ``` ### From a Visual Studio project -Creating a `.nuspec` from a `.csproj` or `.vbproj` file is convenient because other packages that have been installed into those project will be automatically referenced as dependencies. Simply use the following command in the same folder as the project file: +Using `nuget spec` in a folder containing a project file creates a `.nuspec` using that project information: ``` +# Use in a folder containing a project file .csproj or .vbproj nuget spec ``` -This creates a template `.nuspec` file as usual (where `` is replaced with your project name), but includes tokens that will be replaced at packaging time with values from the project. This means you do not need to update crucial values like the version number in the `.nuspec` as you update the project (but you can always replace the tokens with literal values, if desired). +The resulting `.nuspec` file contains tokens that are be replaced at packaging time with values from the project, including references to any other packages that have already been installed. -For example, the `` value will typically appear as follows: +Tokens relieve you from needing to update crucial values like the version number in the `.nuspec` as you update the project. (You can always replace the tokens with literal values, if desired). For example, the `` value typically appears as follows: ```xml $id$ ``` -and will be replaced with the `AssemblyName` value from the project file. For the exact mapping of project values to `.nuspec` tokens, see the [Replacement Tokens reference](../schema/nuspec.md#replacement-tokens). +The token is be replaced with the `AssemblyName` value from the project file at packing time. For the exact mapping of project values to `.nuspec` tokens, see the [Replacement Tokens reference](../schema/nuspec.md#replacement-tokens). Note that there are several additional packaging options available when working from a Visual Studio project, as described in the [Creating the package](#creating-the-package) section later on. -> **Solution-level packages (NuGet 2.x only)** -> -> NuGet 2.x supports the notion of a solution-level package that installs tools or additional commands for the Package Manager Console, but does not add references, content, or build customizations to any projects in the solution. -> -> A package is considered a solution-level package if it does not contain any files in its lib, content, or build directories. If the package has dependencies, they also must not have files in their lib, content, or build directories. -> -> When a solution-level package is installed, it is tracked in a `packages.config` file in the `.nuget` directory, rather than in a `packages.config` file in a specific project. +#### Solution-level packages + +*NuGet 2.x only. This capability is not present in NuGet 3.0+.* +NuGet 2.x supported the notion of a solution-level package that installs tools or additional commands for the Package Manager Console, but does not add references, content, or build customizations to any projects in the solution. Such packages contain no files in its direct `lib`, `content`, or `build` folders, and none of its dependencies have files in their respective `lib`, `content`, or `build` folders. + +NuGet tracks installed solution-level packages in a `packages.config` file in the `.nuget` folder, rather than the project's `packages.config` file. ### From a convention-based working directory In addition to assemblies and simple files like a readme, some packages may contain the following: -- Content and source code that should be injected into the target project -- PowerShell scripts (packages used in NuGet 2.x can include installation scripts as well, which is not supported in NuGet 3.x and later.) -- Transformations to existing configuration and source code files in a project +- Content and source code that should be injected into the target project. +- PowerShell scripts (packages used in NuGet 2.x can include installation scripts as well, which is not supported in NuGet 3.x and later). +- Transformations to existing configuration and source code files in a project. -To include all these files in a package, you lay out a folder structure using the following conventions: +To include all these files in a package, first lay out a folder structure using the following conventions: -|Folder |Description|Action upon package install| -|-------|-----------|---------------------------| -| tools |Powershell scripts and programs accessible from the Package Manager Console|Contents are copied to the project folder, and the `tools` folder is added to the PATH environment variable.| +| Folder | Description| Action upon package install | +| --- | --- | --- | +| tools | Powershell scripts and programs accessible from the Package Manager Console | Contents are copied to the project folder, and the `tools` folder is added to the PATH environment variable.| | lib | Assembly files (`.dll`), documentation (`.xml`) files, and symbol (`.pdb`) files | Assemblies are added as references; `.xml` and `.pdb` copied into project folders. | | content | Arbitrary files | Contents are copied to the project root | -| build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (NuGet 2.x) or `project.lock.json` (NuGet 3.x).| - +| build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (NuGet 2.x) or `project.lock.json` (NuGet 3.x). | -Think of the **content** folder as the root of the target application, so if you want the package to add an image in the application's */images* folder, place it in the *content/images* folder of the package. +Think of the **content** folder as the root of the target application. To have the package add an image in the application's */images* folder, place it in the package's *content/images* folder. Next, from the root folder of this layout, run the following command to create the `.nuspec` file: @@ -211,19 +236,19 @@ Next, from the root folder of this layout, run the following command to create t nuget spec ``` -In this case, the `.nuspec` will not contain any explicit references to the folder structure, but all those files will be automatically included when creating the package later on. +In this case, the `.nuspec` contains no explicit references to the folder structure, but the files are be automatically included when the package is created. ## Choosing a unique package identifier and setting the version number -The package identifier in `` and the version number in `` are the two most important values in the manifest because they uniquely identify the exact code that's contained in the package. +The package identifier (`` element) and the version number (`` element) are the two most important values in the manifest because they uniquely identify the exact code that's contained in the package. -For the `` value, the following best practices apply: +**Best practices for the package identifier:** -- **Uniqueness**: The identifier must be unique within nuget.org or whatever gallery will be hosting the package. Before deciding on an identifier, spend a little time searching in the applicable gallery to see if that name is already used. A good pattern to follow is to use your company name as the first part of the identifier, such as `Contoso.`. -- **Namespace-like names**: Identifiers should follow a pattern similar to namespaces in .NET, using dot notation instead of hyphens. For example, use `Contoso.Utility.UsefulStuff` rather than `Contoso-Utility-UsefulStuff` or `Contoso_Utility_UsefulStuff`. It's especially helpful to the consumers of your package to match the identifier to the namespaces of the code in the package, if applicable. +- **Uniqueness**: The identifier must be unique across nuget.org or whatever gallery hosts the package. Before deciding on an identifier, search the applicable gallery to check if the name is already in use. To avoid conflicts, a good pattern is to use your company name as the first part of the identifier, such as `Contoso.`. +- **Namespace-like names**: Follow a pattern similar to namespaces in .NET, using dot notation instead of hyphens. For example, use `Contoso.Utility.UsefulStuff` rather than `Contoso-Utility-UsefulStuff` or `Contoso_Utility_UsefulStuff`. Consumers also find it helpful when the package identifier matches the namespaces used in the code. - **Sample Packages**: If you produce a package of sample code that demonstrates how to use another package, attach `.Sample` as a suffix to the identifier, as in `Contoso.Utility.UsefulStuff.Sample`. (The sample package would of course have a dependency on the other package.) When creating a sample package, use the convention-based working directory method described earlier. In the `content` folder, arrange the sample code in a folder called `\Samples\` as in `\Samples\Contoso.Utility.UsefulStuff.Sample`. -For the `` value: +**Best practices for the package version:** - In general, set the version of the package to match the library, though this is not strictly required. This is a simple matter when you limit a package to a single assembly, as described earlier in [Deciding which assemblies to package](#deciding-which-assemblies-to-package). Overall, remember that NuGet itself deals with package versions when resolving dependencies, not assembly versions. - When using a non-standard version scheme, be sure to consider the NuGet versioning rules as explained in [Handling Dependencies](../create-packages/dependency-versions.md). @@ -237,15 +262,15 @@ For the `` value: ## Setting a package type -Beginning with NuGet 3.5, packages can be marked with a specific *package type* to indicate the package's intended use. Packages that are not marked with a type, including all packages created with earlier versions of NuGet, are assumed to be the `Dependency` type. +With NuGet 3.5+, packages can be marked with a specific *package type* to indicate its intended use. Packages not marked with a type, including all packages created with earlier versions of NuGet, default to the `Dependency` type. - `Dependency` type packages add build- or run-time assets to libraries and applications, and can be installed in any project type (assuming they are compatible). - `DotnetCliTool` type packages are extensions to the [.NET CLI](https://docs.microsoft.com/dotnet/articles/core/tools/index) and are invoked from the command line. Such packages can be installed only in .NET Core projects and have no effect on restore operations. More details about these per-project extensions are available in the [.NET Core extensibility](https://docs.microsoft.com/dotnet/articles/core/tools/extensibility#per-project-based-extensibility) documentation. - When a DotnetCliTool package is installed, Visual Studio will place the package in the `project.json` `tools` node instead of the `dependencies` node. + When a DotnetCliTool package is installed, Visual Studio places the package in the `project.json` `tools` node instead of the `dependencies` node. -- Custom type packages use an arbitrary type identifier that conforms to the same format rules as package IDs. Any type other than Dependency and `DotnetCliTool`, however, are not recognized by the NuGet Package Manager in Visual Studio. +- Custom type packages use an arbitrary type identifier that conforms to the same format rules as package IDs. Any type other than `Dependency` and `DotnetCliTool`, however, are not recognized by the NuGet Package Manager in Visual Studio. Package types are set either in the `.nuspec` file or in `project.json`. In both cases, it's best for backwards compatibility to *not* explicitly set the `Dependency` type and to instead rely on NuGet assuming this type when no type is specified. @@ -294,16 +319,16 @@ To directly specify files to include in the package, use the `` node in t
    ``` -When you include a file named `readme.txt` in the package, the contents of that file will be displayed in Visual Studio as plain text immediately after the package is installed directly (but not when the package is installed as a dependency). For example, here's how the readme for the HtmlAgilityPack package appears: +When you include a file named `readme.txt` in the package, Visual Studio displays the contents of that file as plain text immediately after installing the package directly. (Readme files are not displayed for packages installed as dependencies). For example, here's how the readme for the HtmlAgilityPack package appears: ![The display of a readme file for a NuGet package upon installation](media/Create_01-ShowReadme.png) > [!Note] -> If you include an empty `` node in the `.nuspec` file, NuGet will not include any other content in the package other than what's in the `lib` folder. +> If you include an empty `` node in the `.nuspec` file, NuGet doesn't include any other content in the package other than what's in the `lib` folder. ## Including MSBuild props and targets in a package -In some cases you might want to add custom build targets or properties in projects that consume your package, such as running a custom tool or process during build. You do this by placing files in the form `.targets` or `.props` (such as `Contoso.Utility.UsefulStuff.targets`) within the `\build` folder of the project. +In some cases, you might want to add custom build targets or properties in projects that consume your package, such as running a custom tool or process during build. You do this by placing files in the form `.targets` or `.props` (such as `Contoso.Utility.UsefulStuff.targets`) within the `\build` folder of the project. Files in the root `\build` folder are considered suitable for all target frameworks. To provide framework-specific files, first place those within appropriate subfolders, such as the following: @@ -333,23 +358,23 @@ Then in the `.nuspec` file, be sure to refer to these files in the `` nod
    ``` -When NuGet 2.x installs a package with `\build` files, it will add an MSBuild `` elements in the project file pointing to the `.targets` and `.props` files. (`.props` is added at the top of the project file; `.targets` is added at the bottom.) +When NuGet 2.x installs a package with `\build` files, it adds an MSBuild `` elements in the project file pointing to the `.targets` and `.props` files. (`.props` is added at the top of the project file; `.targets` is added at the bottom.) With NuGet 3.x, targets are not added to the project but are instead made available through the `project.lock.json`. ## Creating the package -When using an assembly or the convention-based working directory, create a package by running `nuget pack` with your `.nuspec` file: +When using an assembly or the convention-based working directory, create a package by running `nuget pack` with your `.nuspec` file, replacing `` with your specific project: ``` -nuget pack .nuspec +nuget pack .nuspec ``` -When using a Visual Studio project, run `nuget pack` instead with your project file, which will automatically load the project's `.nuspec` file and replace any tokens within it using values in the project file: +When using a Visual Studio project, run `nuget pack` with your project file, which automatically loads the project's `.nuspec` file and replaces any tokens within it using values in the project file: ``` -nuget pack .csproj +nuget pack .csproj ``` > [!Note] @@ -358,9 +383,9 @@ nuget pack .csproj In all cases, `nuget pack` excludes folders that start with a period, such as `.git` or `.hg`. -NuGet will indicate if there are any errors in the `.nuspec` file that need correcting, such as forgetting to change values in the manifest from their defaults. +NuGet indicates if there are any errors in the `.nuspec` file that need correcting, such as forgetting to change placeholder values in the manifest. -Once `nuget pack` succeeds, you'll have a `.nupkg` file that you can publish to a suitable gallery as described in [Publishing a Package](../create-packages/publish-a-package.md). +Once `nuget pack` succeeds, you have a `.nupkg` file that you can publish to a suitable gallery as described in [Publishing a Package](../create-packages/publish-a-package.md). > [!Tip] > A helpful way to examine a package after creating it is to open it in the [Package Explorer](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer) tool. This gives you a graphical view of the package contents and its manifest. You can also rename the resulting `.nupkg` file to a `.zip` file and explore its contents directly. @@ -378,11 +403,11 @@ The following options are a few that are common with Visual Studio projects: nuget pack MyProject.csproj -IncludeReferencedProjects ``` - This inclusion process is recursive, so if `MyProject.csproj` references projects B and C, and those projects reference D, E, and F, then files from B, C, D, E, and F will be included in the package. + This inclusion process is recursive, so if `MyProject.csproj` references projects B and C, and those projects reference D, E, and F, then files from B, C, D, E, and F are be included in the package. - If a referenced project includes a `.nuspec` file of its own, then NuGet adds that referenced project as a dependency instead. You will need to package and publish that project separately. + If a referenced project includes a `.nuspec` file of its own, then NuGet adds that referenced project as a dependency instead. You need to package and publish that project separately. -- **Build configuration**: By default, NuGet will use the default build configuration set in the project file, typically *Debug*. To pack files from a different build configuration, such as *Release*, use the `-properties` option with the configuration: +- **Build configuration**: By default, NuGet uses the default build configuration set in the project file, typically *Debug*. To pack files from a different build configuration, such as *Release*, use the `-properties` option with the configuration: ``` nuget pack MyProject.csproj -properties Configuration=Release diff --git a/docs/Guides/Install-NuGet.md b/docs/Guides/Install-NuGet.md index 87a693b21..437b72a74 100644 --- a/docs/Guides/Install-NuGet.md +++ b/docs/Guides/Install-NuGet.md @@ -33,7 +33,9 @@ ms.reviewer: There are two primary tools available to help you build, publish and consume NuGet packages: 1. The [**NuGet CLI**](#nuget-cli) is the command-line utility for Windows that provides all NuGet capabilities; it can also be run on Mac OSX and Linux using Mono, or through the .NET Core CLI (`dotnet`). -1. The [**NuGet Package Manager in Visual Studio (Windows only)**](#nuget-package-manager-in-visual-studio) is a GUI tool for managing packages and includes a PowerShell console through which you can use certain NuGet commands directly within Visual Studio. The Package Manager UI and Console are both included with Visual Studio (on Windows) 2012 and later and can be installed manually for earlier versions. +1. The [**NuGet Package Manager in Visual Studio**](#nuget-package-manager-in-visual-studio) (Windows only) is a GUI tool for managing packages and includes a PowerShell console through which you can use certain NuGet commands directly within Visual Studio. The Package Manager UI and Console are both included with Visual Studio (on Windows) 2012 and later and can be installed manually for earlier versions. + + With Visual Studio for Mac, NuGet capabilities are built in directly. See [Including a NuGet package in your project](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough) for a walkthrough. The NuGet CLI and Package Manager both support the following operations: @@ -134,7 +136,7 @@ The NuGet Package Manager is included in every edition of Visual Studio on Windo *These steps are not necessary for Visual Studio 2012 and later, which already include the Package Manager.* 1. In Visual Studio, click **Tools > Extension and Updates**. -1. Navigate to **Online**, search for "NuGet Package Manager for Visual Studio," and click **Download**. +1. Navigate to **Online**, then search for "NuGet Package Manager for Visual Studio" and click **Download**. 1. In the Installer dialog box, click **Install**. 1. When installation is complete, restart Visual Studio. diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index 070e26ca3..cb3dafe9d 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -5,7 +5,7 @@ title: NuGet Package Manager UI Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 6/11/2017 +ms.date: 7/24/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -34,9 +34,7 @@ ms.reviewer: # NuGet Package Manager UI -The NuGet Package Manager UI in Visual Studio allows you to easily install, uninstall, and update NuGet packages in projects and solutions. - -**NOTE:** This topic covers the Package Manager UI for Visual Studio on Windows only. For the experience in Visual Studio for Mac, see [Including a NuGet package in your project](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough). +The NuGet Package Manager UI in Visual Studio on Windows allows you to easily install, uninstall, and update NuGet packages in projects and solutions. For the experience in Visual Studio for Mac, see [Including a NuGet package in your project](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough). In this topic: @@ -48,42 +46,42 @@ In this topic: - [Package manager Options control](#package-manager-options-control) > [!Note] -> If you're missing the NuGet Package Manager in Visual Studio 2015, check **Tools > Extensions and Updates...** and search for the NuGet Package Manager extension. If you're unable to use the extensions installer in Visual Studio, you can download the extension directly from [https://dist.nuget.org/index.html](https://dist.nuget.org/index.html). +> If you're missing the NuGet Package Manager in Visual Studio 2015, check **Tools > Extensions and Updates...** and search for the *NuGet Package Manager* extension. If you're unable to use the extensions installer in Visual Studio, you can download the extension directly from [https://dist.nuget.org/index.html](https://dist.nuget.org/index.html). > -> In Visual Studio 2017, NuGet and the NuGet Package Manager are automatically installed when you select any .NET-related workloads; you can also install it individually by checking the **Individual components > Code tools > NuGet package manager** option in the Visual Studio 2017 installer.) +> In Visual Studio 2017, NuGet and the NuGet Package Manager are automatically installed when you select any .NET-related workloads; you can also install it individually by checking the **Individual components > Code tools > NuGet package manager** option in the Visual Studio 2017 installer. ## Finding and installing a package -1. In **Solution Explorer**, right-click **References** (or **Bin** in a Website project), or the desired project, and select **Manage NuGet Packages...**. +1. In **Solution Explorer**, right-click either **References** or a project and select **Manage NuGet Packages...**. (In web site projects, right-click the **Bin** folder instead.) ![Manage NuGet Packages menu option](media/ManagePackagesUICommand.png) -2. On the **Browse** tab, browse the list or search for a specific package using the search box on the top right. Selecting a package displays the package information on the right and enables the **Install** button along with a version-selection drop-down. +2. The **Browse** tab displays available packages by popularity. Search for a specific package using the search box on the top right. Select a package to display the package information on the right and to enable the **Install** button along with a version-selection drop-down. ![Manage NuGet Packages Dialog Browse tab](media/Search.png) -3. Select the desired version from the drop-down and click **Install**. This installs the package and its dependencies; you may be asked to accept license terms in the process. When installation is complete, the new packages appear on the **Installed** tab. **Solution Explorer** also shows the added packages, which you can now use in your project. +3. Select the desired version from the drop-down and select **Install**. Visual Studio installs the package and its dependencies into the project. You may be asked to accept license terms in the process. When installation is complete, the added packages appear on the **Installed** tab. **Solution Explorer** also shows the added packages, which you can now use in your project. ![References in Solution Explorer](media/References.png) ## Uninstalling a package -1. In **Solution Explorer**, right-click **References** (or **Bin** in a Website project), or the desired project, and select **Manage NuGet Packages...**. -2. Click on the **Installed** tab. -3. Select the package to uninstall and click **Uninstall**. +1. In **Solution Explorer**, right-click either **References** or the desired project, and select **Manage NuGet Packages...**. (In web site projects, right-click the **Bin** folder instead.) +2. Select the **Installed** tab. +3. Select the package to uninstall and select **Uninstall**. ![Uninstalling a package](media/UninstallPackage.png) ## Updating a package -1. In **Solution Explorer**, right-click **References** (or **Bin** in a Website project), or the desired project, and select **Manage NuGet Packages...**. -2. Click on the **Updates** tab to see packages that have available updates. -3. Select the package to update, select the desired version from the drop-down on the right, and click **Update**. +1. In **Solution Explorer**, right-click either **References** or the desired project, and select **Manage NuGet Packages...**. (In web site projects, right-click the **Bin** folder instead.) +2. Select the **Updates** tab to see packages that have available updates. +3. Select the package to update, select the desired version from the drop-down on the right, and select **Update**. ![Updating a package](media/UpdatePackages.png) -4. If the **Update** button is disabled and the package is marked as **AutoReferenced** as shown below, it means that it's part of a larger framework or SDK and should not be updated independently. (These packages, such as Microsoft.NETCore.App and Microsoft.NETStandard.Library, are marked internally with `True`.). To update the package, update the SDK to which it belongs. +4. If the **Update** button is disabled and the package is marked as **AutoReferenced**, it means that it's part of a larger framework or SDK and should not be updated independently. (These packages, such as Microsoft.NETCore.App and Microsoft.NETStandard.Library, are marked internally with `True`.) To update the package, you must update the SDK to which it belongs. ![Example package marked as AutoReferenced](media/PackageManagerUIAutoReferenced.png) @@ -95,19 +93,19 @@ In this topic: ![Manage NuGet packages for the solution](media/ManagePackagesSolutionUICommand.png) -2. When managing packages for the solution, the UI lets you select which projects will be affected: +2. When managing packages for the solution, the UI lets you select the projects that are affected by the operations: ![Project selector when managing packages for the solution](media/SolutionPackagesUI.png) -## Package Sources +## Package sources -The NuGet Package Manager UI allows you to easily switch between package sources using the package source selector: +To change the source Visual Studio uses to obtain packages, select one from the source selector: ![Package source selector in the package manager UI](media/PackageSourceDropDown.png) To manage package sources: -1. Click on the **Settings** icon in the Package Manager UI outlined below or use the **Tools > Options** command and scroll to **NuGet Package Manager**. +1. Select the **Settings** icon in the Package Manager UI outlined below or use the **Tools > Options** command and scroll to **NuGet Package Manager**: ![Package manager UI settings icon](media/PackageSourceSettings.png) @@ -115,11 +113,11 @@ To manage package sources: ![Package Sources options](media/options.png) -3. To add a source, click the **+** button, edit the name, enter the URL or path in the **Source** control, and click **Update**. This will make it appear in the selector drop-down. -4. To change a package source, select it, make edits in the **Name** and **Source** boxes, and click **Update**. +3. To add a source, select **+**, edit the name, enter the URL or path in the **Source** control, and select **Update**. The source now appears in the selector drop-down. +4. To change a package source, select it, make edits in the **Name** and **Source** boxes, and select **Update**. 5. To disable a package source, clear the box to the left of the name in the list. -6. To remove a package source, select it and click the **X** button. -7. Use the up and down arrow buttons to change the priority order of the package sources. +6. To remove a package source, select it and then select the **X** button. +7. Use the up and down arrow buttons to change the priority order of the package sources. Visual Studio searches these sources in the priority order when restoring packages for a project. For more information, see [Package restore](../Consume-Packages/Package-Restore.md). ## Package manager Options control @@ -131,7 +129,7 @@ The following sections explain these options. ### Show preview window -When checked, a modal window displays which dependent packages will be loaded with the package you have chosen. +When selected, a modal window displays which the dependencies of a chosen package. ![Example Preview Dialog](media/InstallPreviewDialog.png) @@ -159,6 +157,6 @@ When checked, a modal window displays which dependent packages will be loaded wi ### Uninstall Options -**Remove dependencies**: when checked, removes any dependent packages if they are not referenced elsewhere in the project. +**Remove dependencies**: when selected, removes any dependent packages if they are not referenced elsewhere in the project. -**Force uninstall even if there are dependencies on it**: when checked, uninstalls a package even if it's still being referenced in the project. This is typically used in combination with **Remove dependencies** to remove a package and whatever dependencies it installed. Using this option may, however, lead to a broken references in the project, in which case you may need to [reinstall those other packages](../consume-packages/reinstalling-and-updating-packages.md). +**Force uninstall even if there are dependencies on it**: when selected, uninstalls a package even if it's still being referenced in the project. This is typically used in combination with **Remove dependencies** to remove a package and whatever dependencies it installed. Using this option may, however, lead to a broken references in the project. In such cases you may need to [reinstall those other packages](../consume-packages/reinstalling-and-updating-packages.md). diff --git a/docs/Tools/PowerShell-Reference.md b/docs/Tools/PowerShell-Reference.md index 52fb921f0..9fbb2bd8d 100644 --- a/docs/Tools/PowerShell-Reference.md +++ b/docs/Tools/PowerShell-Reference.md @@ -5,7 +5,7 @@ title: NuGet PowerShell Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 4/24/2017 +ms.date: 7/25/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -32,20 +32,24 @@ ms.reviewer: The Package Manager Console provides a PowerShell interface within Visual Studio on Windows to interact with NuGet through the specific commands listed below. (The console is not presently available in Visual Studio for Mac.) For a guide to using the console, see the [Package Manager Console](../tools/package-manager-console.md) topic. -> [!Note] +> [!Tip] > All PowerShell commands relate only to package consumption. No PowerShell commands relate to creating and publishing packages except to the extent that a package can also be a consumer of other packages. -Command | Description | NuGet Version ---- | --- | --- -[Add-BindingRedirect](ps-ref-add-bindingredirect.md) | Examines all assemblies within the output path for a project and adds binding redirects to the `app.config` or `web.config` where necessary. | All -[Find-Package](ps-ref-find-package.md) | Searches a package source using a package ID or keywords. | 3.0+ -[Get-Package](ps-ref-get-package.md) | Retrieves the list of packages installed in the local repository, or lists packages available from a package source. | All -[Get-Project](ps-ref-get-project.md) | Displays information about the default or specified project. | 3.0+ -[Install-Package](ps-ref-install-package.md) | Installs a package and its dependencies into the project. | All -[Open-PackagePage](ps-ref-open-packagepage.md) | Launches the default browser with the project, license, or report abuse URL for the specified package. | Deprecated in 3.0+ -[Sync-Package](ps-ref-sync-package.md) | Get the version of installed package from specified project and syncs the version to the rest of projects in the solution. | 3.0+ -[Uninstall-Package](ps-ref-uninstall-package.md) | Removes a package from a project, optionally removing its dependencies. | All -[Update-Package](ps-ref-update-package.md) | Updates a package and its dependencies, or all packages in a project. | All +> ![Important] +> The commands listed here are specific to the Package Manager Console in Visual Studio, and differ from the [Package Management module commands](https://msdn.microsoft.com/powershell/reference/6/packagemanagement/packagemanagement) that are available in a general PowerShell environment. Specifically, each environment has commands that are not available in the other, and commands with the same name may also differ in their specific arguments. When using the Package Management Console in Visual Studio, the commands and arguments documented in this present topic apply. + +| Command | Description | NuGet Version | +| --- | --- | --- | +| [Add-BindingRedirect](ps-ref-add-bindingredirect.md) | Examines all assemblies within the output path for a project and adds binding redirects to the `app.config` or `web.config` where necessary. | All | +| [Find-Package](ps-ref-find-package.md) | Searches a package source using a package ID or keywords. | 3.0+ | +| [Get-Package](ps-ref-get-package.md) | Retrieves the list of packages installed in the local repository, or lists packages available from a package source. | All | +| [Get-Project](ps-ref-get-project.md) | Displays information about the default or specified project. | 3.0+ | +| [Install-Package](ps-ref-install-package.md) | Installs a package and its dependencies into the project. | All | +| [Open-PackagePage](ps-ref-open-packagepage.md) | Launches the default browser with the project, license, or report abuse URL for the specified package. | Deprecated in 3.0+ | +| [Register-TabExpansion](ps-ref-register-tabexpansion.md) | Registers a tab expansion for the parameters of a command, allowing you to create customized expansions for commonly-used parameter values. | All | +| [Sync-Package](ps-ref-sync-package.md) | Get the version of installed package from specified project and syncs the version to the rest of projects in the solution. | 3.0+ | +| [Uninstall-Package](ps-ref-uninstall-package.md) | Removes a package from a project, optionally removing its dependencies. | All | +| [Update-Package](ps-ref-update-package.md) | Updates a package and its dependencies, or all packages in a project. | All | For complete, detailed help on any of these commands within the console, just run the following with the command name in question: diff --git a/docs/Tools/media/Register-TabExpansion-Example.png b/docs/Tools/media/Register-TabExpansion-Example.png new file mode 100644 index 0000000000000000000000000000000000000000..21c1a5508d08f7b5995c4aa484767ef27e7b0d3a GIT binary patch literal 10909 zcmeHtXIN89_b;d@D#B3&LRS%KQbH9FP)g`Ux+qdY@6tOKia_W^=|TuC(g{dckPe}D z0i_d~bOIsVo#QF*`Frm3-21#A?w9)k_MX{0Gi$B+t>0Q}_JnGv$zQodcZrCI=!&9( ztR@lBSyJGBn)D3tpL)4u6Sxq&Xv#|y6`>hcfW|q?hpG>Wh)Sa_<4j0^_C+U!$1X%f z>^B4NfubesCyT}@*cAfHVhNdcEE^(zrN7ddIm=9wtVsg#4~ETdw@ zem}-T98X+Qy!Oyj6dMc!g3IMuBUJ05*g0&*>8QFw+#S_q!4;isiE-4qD>aEwT9!;t zIAf8*vK<)+UhLafC(OxP`L#BC{+g1L(%5ma5{KW&Em7u%z2}n}ab5=-X~l;Zv~_cF zlk>R{7xaTR=a{OE`R>`g$Z^U-)zrtiP>!6*UTLkTX6XEh3_e#DlD4)BL`24v=NttW z4TeBLsofg>nHBucPE+-)&5Nfe#3`KZ^wzDFo+w?btU5`Lw%u~k+Z@8+d`g81Un&?n z%hkkGUv!bu+a$YJ*dfthqW1RO>T9I%97dZ<;A_TiA9BkQN^-$l=hDc%&;T|-H|v4y zgES`70$b6S;LhGK*@ZNNG<5KEwo7Rw@}o`f{cf4;V~-XWU(i?0M(xt;3;r1eWz=#K zZG9Y8|8Z{ zFhQA|x`$olcHQ)D!mWib>N`3;RvW-I$KTm9P#zmL`8A9yx;pIO>R_bmmjC!b;O42q z*q8Lfi3yebY_CsqE7Z&a5V{{NRg!U(ai*=8_kDyuDdNNd9Tem4_$9BzIgvrHH|SL~ z1H%{Se#0>O7q|rLnP^XvDz^w&1AYE%7c!@;3+^wYN1X`PYZ$v`3a) zl-NRfRR~mj-a6GzMrzS_>UIzJAyt#rdLn3s>i4#Y0h|Yr(Z0{beGB7Gz@gifK%u08DVco>4?=aii%4BBE4v)tU8e2QBrpOX4LV=YnEXjuK;g5IfPCE7ow%a zKbqJr@zVozn$cOHGu7qGbrXVb5M2YY5H4q-f@f*jUvPfceCbEo%1l%c7-m=r2VHDang98c?dygz0^HBx-_ z9gK8c+s&HJNZ%jZukKjCWzc@#vHdp_SWc4xtRVT`YlrE&J!b7#(%J%8vC$I49TsVE z9m8Y@H8u9r{(f8lP6~h0i0y}-BFyj$MyDFWrwf*w0oX1hG}pVlwW-_uvLJYV2{pW+ z)v_;~x8ZOxCEzWkm#P;Yy95vfYi{5k?c>H59dG*7bl&D{1ueko9sM@LPu1%BXKtO*qU>XHNL~NoksI2C z|5k<8Fv5DNX*>MjbgP&5#9<#|8jD}?S$X|c#a~E?RMMsWw<~n;$*N)r@9#~11(#`< z{1?;m+u$UYUy6e;2DsKa8lL<3V0+wt)xm~hD@*TGjo!7&v-Wy20t%ixJ&j%GtrV~( znhBYEUFs_RGQD*)XYN-Sd8wH4+}~aIa8OT-zf}>;kMkozw^Unbfo-20C$7OYPCF*7j8@5;A|jRETjPa zetQptb6OriC`;kKr<@*z8(oTRSC2B&Bi$z}H1hX1k8}OrZ!7se`atri6PBdUDK&IA zeas<%|5o6u0_DNJCQWvA7=G=*Umm~SC{G!5O9CANPDUv)*(gqloS^Puvz8nd0$j*j zmlAGS{`0BnAa%#X&$>g3Xnaz@+zeWi7oF0h3uhjZTJ z`=wKOGg(p+U=1^aIHmOq3-A;JVF>28T zvp%^gu@i0H**3T_VZ&_6g&261&d=<-}Ot&lixrR&m1-hWTDc&N@gKQW=<6#?`s97U3+$b-f#~3|?%s z$5nBZXHoEYSE*{$-h@1|`>o})b=OhbqsoH>eitp2XnC6H9A&x4=UT0@!Hr!2jMc+m z5!O~FR|#v?a*awa9=qK7B*1^gV__y%;N{K{XW?4UYVv88OgYl9*r&EzV4*<X@hQ zUZ_+n_ioJdm-`~GpKUqF^jwl08m?@iZOz+~X`w}^!1~>FsBbjxz6rL7u4WqM0Kq$3 zzDC&1a+g!ibTRO74RWYPZ`5&V-9?1l$tf;h`5ws;3YNCYwcu8jxvUJi+drv}f8L(j z+Zyp`XQdG9`F4A6H8nXu+|U3&QLp+rg!$5{VWW2WJZjaVpwr;GTWa(MCsi zju-Q@Xhb%1?_abn4S0QL1xIBE>#t;8RnzyDl@VB8?0EvX=j=_$ROA68Qc-9`x)E`Qu! z)Ac;Sy7ot(3ULIlCl-+Aa^X&ezyo@iYap6>zowrRcW2yQHFSrwhWPu zVOr_|2~kwJ$qlxsjkaN$ogP!W_!q{1$(GaFcQ-<~6<}CCU;7sR7KQpS#Gz$ix2h5v z|9I0z#ByTrcs9UJpkB2LO$v405EOhJSby@-zdCzLcG;*~(%E>Cyobi9@>`124jPq3 zTpzl!N+!YZR6^5x0zkSBz=6TkiE^TjtqL?{yD#Q5+n9!X(^Ru1Bx8j73tw~SCsqa= zE=cJr2~q4LjT)%ko*__<#A`d|q1~6g$$WOfRn)aF9Q6DovUcqPCJa&yqwMqOECE;d zpi6$(B#|>2K zQxj{C+5eC#MpRt-PlD5u8SO;R?UrA(1sB-(o)6vYhzbf*G}z2Icah2JmVwRpi)b@h zt6YF0&_S%cT634=goDZYw_Di*4tFjQ6JuZ8+pYeg^7)ToP;?sA&eRJU=Pa>hd`A*@ zH8ZV%M^&6Au}&p|>-so|UpBe z#`3%0%q>3Js}uQ{0oU_1iRHk2-;EH3B!tkEZt>gdDCz$UTK^jEfS5{jn-4+=iRW7h znf)g|=oO0{Qj&&wR^3*UkujY>-e(Kp^FU1;DmGsj5GrfsLGf4Jn}y1si;`-?+(G(1If2fgDQOQ~0Hl?xwT z0`qo3HHt!&dPMP^!Xk%#|o$Tgv1Z-6I#Bnl*A? z^ZwGCR(cFYdweE+ak;u1B4q$E5Q4voW#~T)U5$IvoA5SVci<$LpH)g^zF1v?F|mkx z(0Ff&>wvH|wwqrV z<7Hx0e48C|ZDx_8f+^DPY7SZ1jkE)atFC-pEHj(FMcgWZpEHr%1qqqR;l~jwpEv5l zAw|8JBqdTe%1K+0U2=X8T#W}Uiud#_xt(>>hKaXi^v+jbj5JJETl2L+r1>T0gA?}3 zN7OSJ)(%Z{i+{W6-eG^#Rcqk8WFs(*t=2OP+l(C6SiEQ9zG#IDeWbJ$etbkF>LTwP zXijd~Sy(@R&h^8(f~J!XPgh3?M93s2q4te!%jn8Vlq2e zYIb|OUvZ*liMMz^s~^5IOisl+L?5dn5td1O)t9TsLZCe#9bYt(GOtDs7_H)7 zyg5r~%SGrjIt+zEPO=o(#Wd|KTaiS|@ttBKyz{VwVD3GHmU^pND*b@;Jr(t8X}faz z6%mIGEs{M z=os>3|6t_{vGfIGY3}($H`q!aYr0cRb#&x@wwnfwqz+^q(CC;|lUjfBXT~GnADBPz z)>9DD6e+wZbphEDViEG?F!RZeg1B2I=1iRopS#ucX2bX^r-r{#!e5a^OD&cO#;Zy# z`*ljEUf_DGx-#*ygIGjnJimMb{MqQ4^ujF2!Rm;%z);aWr;CSqZc{?$N=HZw9PWM_ z*}^6`lp|pBAn-RW!-Ce;-NV^+hK=ivVl$x?M5I zP_+dutW%AWZ2JNzXV-KO{*L2rwa7;|UCg6sMnpz&<>Zdx@Tcj&e+m&W(3z7@Vs;W!^#=ze!j89Qk0 zV|(Rd`FW9wjVFpM?`wTk49JsRQJIU9kBm5!wx+IByWS*&zESk)qMFI}7X&y$RVf(IZ;()g1`Wz~ryvMD9u~#u^a8(7n zM>#sbo1>BerBI-~^2q0vSYg$u%H9{ZSMn4t-weWHlE;M&KsBG5%m>$TkwNAoI&5pr zAQGwhQc|5Z5MyG6w=fHP`wb>X&Z3x1qzl!Dnw>$>?|U4`%Eo?g*Q=rk;`?lD$X;vm z?T2GCM@f$U;Gw#*^UXX0TnGE+#EOSDNwL$aMN8Gt&&* zQM^w=!ul1xX;h>789W?QUEjR!6HU>TKGKT=E#iD3QysHsoz+HqAJ0D|A9WIPxdeo; zWindA2FD8$Fp!J=zSl8!2k0h+oLNW z#i9|`n~+Skj;r7#Xf209EzP^cbE(8oR~$Mc72iHdW!lI?20ceaWJw|*USJ%2pE{FH z7}CSYGqoRClr3d-!)MSa&;dW4d43ItIHLoNr}r+v${|{eSJI}LLKKFp*|1enW(zrf zk$FSK!xKd@J}!HFtW%EcTH7u%)1VHkc%y^I+#68}@lmd(Qb;n7XQyT_b)We6rZ`H3 zU~|M9^IYF6e;-4#6t^lAMf+N`wQBJMhs(1U{6pBG-W&mk=#&wyY=po9d$KD+`2ZXr)E4gApUJ%LN)L-bdMM9$$g6u4FHTd# z9+Cg(WjfQ`n)mhcx-N!AoH(tKSHSbaFjHj|yVBe2X4ObudJ2Js1G<5BPpj%?j-1u7 z*6_D*dW>blN?PyPltEglbZOE)xYd#Fs^;F9mQ&|uL>+k$o+@Poq;p=jR@;UTD(LmV z%&{G)DnOsRBRSvQjFQVcp8=wpw@5T1GT-j$c1-kfrwZ_KkchU;`GfIT$VW1TdiL#qQCGAB6Ar%&o; z)t)=v4}tYp5Pt>{6Mee-*D_RrG2)qJ90vvgtA()+KB{S~>-0(@U8&<6s`w86sS_a~ zJ*8?KY*E%l1L6Hn=8ED3b3@;AXB0kucK8W?*Izf^{aG{w4py48Hr%$JT#e{|@b;*U z=a2=Jy2$5}M&r|(#~57zrn9Q2Ae2lNCKmEk-O+8gwA(}=!?hMv)r=UKxP5NL1{&cc z`*2M!^nLH@^-#fh0p4fTv$cA!CYMxJ_Gh%kald7Gzmq0#ASyEw(I?X-vS+gu%V9$i zU?7Erxi)NaAF<4AILpTf+Ztk+eeS?~!4M7!u^T{jA*2HOZJgd2@MQ>JIsB4EJM?Nn zBv?!+cw>W}1xw_SLIdaPS4ux)d!K~B0q=tTbU+i>{+oc=TiXq5VH{22G&PHlIL@N`Qj;9F<}DzxyB{2oj(Wc3`vD7%|3~^Sfy{0j>)U zg7w?J-Q&$NGxS&8p^ny_L~fi|HoDIE8F}yfO+L*BG%C@wqtg1_1XQi0y3Nk5Rvfvr zNG0n>Rf~2_1dT&J>wJswc`*qF}5PY``>33Gw9V5=C zGo3G#4q5bu(A-4*Q8Wwfv zh#oNh~T+Hu<|7fUyPv#w?YA|A6rW0;D3wuKf+; z^RRwmf?VhiB1O*^=7ykq2=@E~5 zZtCzOO(to68RTCjGs$RGz}pXDmG^FfuP>fD$m5ZW&wbVj7@;d={SS=f9)8Ko5Cz|5 z)l%ZGGr7$CGC5H78P)2`@@pq^u6RnQ&46qLO|mNGQr#8(n$ZgGEU) z-|@9l7Trib|9aVteqkmMLBxdrw0Q6W>}oRiFOt0gi@pEFlxJI)U;JtX5d18GA8o%R z^8HO7#xQdB|A&J%o3>izH;%^O$=)2t-C|5=q#h8i#7I>|{erDTFr=eL(0}>FGGl7g zh<~TG9oP3RN^Iv>J-a~gk-Rk>DyXZC{ie(>cs8Mh#(z~TVZ-P>E0>Cz*|0e^_V=2j zE;E3~arTsrl_4X>X#=ojLp+o9!O&m|N!DM{5(JBBhe4oRLkP3B*!^9y9^1Drc#*Wm-f@gHKH=)xUY#f6mJ zgZxlp2ftI^Ki!~@58|}SG6j*vlMU0`d#SSjIHc- zAI(CS#($BV7T!SqO+c6JzkwXU_*PZFX!n1C`SyBRa)o=0Kt|8}XGRZ*3hX%xga1fk zfJhCb8FrNa|MCBsS^h_f_cKK!lyktHamvp!?+=5z0O1a(R_slIEp1>CiHLsR)F;Fu zBBILBq%_gLmg2u1G!H+YFU8n&OPi2-5)sNzIufb)Qoo45ro9(Yd+YC+iy%*9fcg}8 z7sxNw)Mbhk{##L#zy>Vt=SXh`{w94{kt~=NK2rpwi9m~#n+JAP8h8+W5lU#@G;0D8 z-XcxnY+atNXU2U;ECo1krXw1o_d=vV?HmQ?PUo@8^(AtFV8YM(X2V+9MQQti580X` zENV+zBAT-!E*;;sUBY5{y>V9*>$VPQzC2dUI>-CRMAUkMkSw37bRXG>7)j!5(7069 zPL-&bBhkXm>I2~OcsIyUf$B|1joEqI=O!?MNEIJjBVxqT>|Wnadlt6mk_wKEJ*r!| zY?Dsy^>i15EXKc#vs?82sRs2Z12lf%B(-MGnu#V5)mfCNwDBgag*&}UzW4G z{nc7FzH&MC@8-wM&xa^`ZGvwnw*S5c1nt9ZyFrRIAiC#bpJ(G!8^V}7C6%s?tFNHV z{~QL;dOQuXvi??|e$v^ouSWFY!tcs{+-ZOz8U9D* z#Q}5jr~BJRmorXV_i`QmY{cCaFQeaNWPMHQZTulH>99MES}i}Sr0_dhVN;hHCmV_r znK^d-j#gn-ClJi1TfinsEi>CG7@OEA0(CvXvxyHUKM~6VAMK9x95-&ki)Tv6+ZP8_ zy*ao|VGfP>!qc&3+nJLaYlI_hz2s2AuGQ{K>3L6=MvXrDpQ6<7D)T$m9b;*x4eJV5 zfP+P0ToZ9>4zMp&5rr>BW_-TeQuwa!O}bIOCeXmU z6T;W`s(tiphDjZ-v;o4*v@XSZV0-f{He&LuIxfMy zfk!C28<%Qrng10y9`(t49J^q9@NPa>Vuz0+W@Cn`_j!Pm@`+{y!paes&uI&mg8+xE z-Z5(axRiDWR}@oXEwLqZ-CBR4L$$rw6*Z|ro457q<=)a{vfM z35MDONJ*%;qQJ;Y?K4WxIyrG-?X#j)mql2So_wKf z%z!F=-qI8W+}60BVF2WJ8idnc`Qbjlwma`h2Zpr0UU~qW%90edhiX5w##Sj@=m*B^ z0E!o2sz4b@u(UFv$|5Qu1sK5UIpNkx@-xW(At7qKkW*+S6@GB97%&B2ig+Xbw14Wh V3 [-Definition] [] +``` + +## Parameters + +| Parameter | Description | +| --- | --- | +| Name | (Required) The command to which to register expansions. The -Name switch itself is optional. | +| Definition | (Required) An object describing the argument in the syntax `@{'' = {'', '', ...}}` where `` is the name of the parameter to modify and each `` provides a specific expansion. Both single and double quotes are accepted. | + +None of these parameters accept pipeline input or wildcard characters. + +## Common Parameters + +`Register-TabExpansion` supports the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): Debug, Error Action, ErrorVariable, OutBuffer, OutVariable, PipelineVariable, Verbose, WarningAction, and WarningVariable. + +## Examples + +Consider a solution that contains three projects names EventManager, Utilities, and SpecialParser. The developer frequently uses the `Update-Package` command at different times with each of those projects. She finds it convenient to have the `Update-Package` command provide auto-completion expansions for the `-ProjectName` argument so she doesn't need to type out a project name each time. + +The following command, then, registers those three project names as an expansion for the `-ProjectName` parameter: + +```ps +Register-TabExpansion Update-Package @{'ProjectName' = {'EventManager', 'Utilities', 'SpecialParser'}} +``` + +The developer can then type `Update-Package -ProjectName `, press Tab, and see the expansions offered as auto-completion options: + +![Example of using Register-TabExpansion](media/Register-TabExpansion-Example.png) From 72e4ab461c797bddb35475ac41e099ac0f3e657e Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 26 Jul 2017 10:34:18 -0700 Subject: [PATCH 0084/2943] Updates and edits --- .../Configuring-NuGet-Behavior.md | 32 ++-- .../Managing-the-NuGet-Cache.md | 19 +- .../Supporting-Multiple-Target-Frameworks.md | 113 ++++++------ docs/Schema/nuspec.md | 170 +++++++++--------- docs/Schema/project-json.md | 45 +++-- 5 files changed, 191 insertions(+), 188 deletions(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index 31c53c724..9f03d3677 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -5,7 +5,7 @@ title: Configuring the behavior of NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/17/2017 +ms.date: 7/25/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -45,7 +45,7 @@ The behavior of every NuGet command, whether issued from the command line, the P - Project-specific `NuGet.Config` files located in any folder from the solution folder up to the drive root. These allow control over settings as they apply to a project or a group of projects. - A solution-specific `NuGet.Config` file located within a `.nuget` folder in the solution. Settings in this file apply only to solution-wide packages and is supported only in NuGet 3.3 and earlier. It is ignored for NuGet 3.4 and later. -- The global config file located in `%APPDATA%\NuGet\NuGet.Config`, which is always used unless you specify a different config file using the `-configFile` switch on any NuGet command. For example, `nuget restore -configfile c:\my.config` will use settings from `c:\my.config` for the command and ignores any settings in the global config file. +- The global config file located in `%APPDATA%\NuGet\NuGet.Config`, which is always used unless you specify a different config file using the `-configFile` switch on any NuGet command. For example, `nuget restore -configfile c:\my.config` uses settings from `c:\my.config` for the command and ignores any settings in the global config file. - Additional machine-wide config files: - NuGet 2.6 to NuGet 3.5: located in `%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}\]]]NuGet.Config`, where `{IDE}` can be `VisualStudio`, `{Version}` can be the Visual Studio version such as `14.0`, and `{SKU}` is either `Community`, `Pro`, or `Enterprise`. These variants allow you to create configurations that are specific to different versions and editions of Visual Studio if needs be. - NuGet 4.0+: located under `%ProgramFiles(x86)%\NuGet\Config` rather than `%ProgramData%`. @@ -74,7 +74,7 @@ nuget config -set repositoryPath=c:\packages -configfile %ProgramData%\NuGet\Con nuget config -set repositoryPath=c:\packages -configfile %ProgramData%\NuGet\NuGetDefaults.Config ``` -Without the `-configFile` switch, NuGet will make the change in the global config file. +Without the `-configFile` switch, NuGet makes the change in the global config file. > [!Note] > In NuGet 3.4 and later you can use environment variables in any value, as in `repositoryPath=%PACKAGEHOME%`. @@ -113,7 +113,7 @@ When `nuget.exe` is run from the command line or run implicitly within Visual St As settings are found in these files, they are processed as follows: -1. For single-item elements, the last value found for any given key will be used. This means that those settings that are "closest" to where NuGet was invoked will be applied. +1. For single-item elements, the last value found for any given key is used. This means that those settings that are "closest" to where NuGet was invoked is applied. 1. For collection elements (such as ``), values from all configuration files are added to the collection. @@ -168,7 +168,7 @@ Let's say you have the following folder structure: You then have four `NuGet.Config` files in the following locations with the given content: -A. Global configuration file, `%APPDATA%\NuGet\Nuget.Config`: +File A. Global configuration file, `%APPDATA%\NuGet\Nuget.Config`: ```xml @@ -179,7 +179,7 @@ A. Global configuration file, `%APPDATA%\NuGet\Nuget.Config`: ``` -B. `d:\NuGet.Config`: +File B. `d:\NuGet.Config`: ```xml @@ -193,7 +193,7 @@ B. `d:\NuGet.Config`: ``` -C. `d:\Project1\NuGet.Config`: +File C. `d:\Project1\NuGet.Config`: ```xml @@ -209,7 +209,7 @@ C. `d:\Project1\NuGet.Config`: ``` -D. `d:\Project2\NuGet.Config`: +File D. `d:\Project2\NuGet.Config`: ```xml @@ -221,30 +221,32 @@ D. `d:\Project2\NuGet.Config`: ``` -Here's how NuGet will load and apply the settings, depending on where it's invoked: +Here's how NuGet loads and apply the settings, depending on where it's invoked: - **Invoked from c:\users**: Only the default repository listed in the global configuration file (A) is used, because that's the only file found on the `c:` drive. -- **Invoked from d:\ or d:\tmp**: (A) is loaded first, then NuGet goes to the root of `d:` and finds (B). NuGet also looks for a configuration file in `d:\tmp` but does not find one. As a result, the default repository on nuget.org is used, package restore is enabled, and packages get expanded in `d:\tmp`. +- **Invoked from d:\ or d:\tmp**: File (A) is loaded first, then NuGet goes to the root of `d:` and finds file (B). NuGet also looks for a configuration file in `d:\tmp` but does not find one. As a result, the default repository on nuget.org is used, package restore is enabled, and packages get expanded in `d:\tmp`. -- **Invoked from d:\Project1 or d:\Project1\Source**: (A) is loaded first, then NuGet loads (B) from the `d:` root, followed by (C). Settings in (C) override those in (B) and (A), so the `repositoryPath` where packages get installed will be `d:\Project1\External\Packages` instead of `d:\tmp`. Also, because (C) clears ``, nuget.org will no longer be available a source leaving only `https://MyPrivateRepo/ES/nuget`. +- **Invoked from d:\Project1 or d:\Project1\Source**: File (A) is loaded first, then NuGet loads file (B) from the `d:` root, followed by file (C). Settings in (C) override those in (B) and (A), so the `repositoryPath` where packages get installed is `d:\Project1\External\Packages` instead of `d:\tmp`. Also, because (C) clears ``, nuget.org is no longer available a source leaving only `https://MyPrivateRepo/ES/nuget`. -- **Invoked from d:\Project2 or d:\Project2\Source**: (A) is loaded first followed by (B) and (D). Because `packageSources` is not cleared, both `nuget.org` and `https://MyPrivateRepo/DQ/nuget` are available as sources. Packages get expanded in `d:\tmp` as specified in (B). +- **Invoked from d:\Project2 or d:\Project2\Source**: File (A) is loaded first followed by file (B) and file (D). Because `packageSources` is not cleared, both `nuget.org` and `https://MyPrivateRepo/DQ/nuget` are available as sources. Packages get expanded in `d:\tmp` as specified in (B). ## NuGet defaults file -NuGet 3.3 and earlier uses a hardcoded default package source, nuget.org, that the user could not delete. However, when using NuGet with internal package sources, it's often desirable to make sure that developers and build servers use packages from those sources instead of nuget.org. With NuGet 2.7 to 3.5, you can use the `%ProgramData%\NuGet\NuGetDefaults.Config` file (or `%ProgramFiles(x86)%\NuGet\NuGetDefaults.Config` with NuGet 4.0+) to control certain machine-wide defaults described below. This provides administrators a convenient way to deploy (using Group Policy, for example) consistent `NuGetDefaults.Config` files to developer and build machines, thus ensuring correct use of package sources. +NuGet 3.3 and earlier is hardcoded to use nuget.org as the default package source, which cannot be changed. However, when using NuGet with internal package sources, it's often desirable to make sure that developers and build servers use packages from those sources instead of nuget.org. With NuGet 2.7 to 3.5, you can use the `%ProgramData%\NuGet\NuGetDefaults.Config` file (or `%ProgramFiles(x86)%\NuGet\NuGetDefaults.Config` with NuGet 4.0+) to control certain machine-wide defaults described below. This provides administrators a convenient way (using Group Policy, for example) to deploy consistent `NuGetDefaults.Config` files to developer and build machines, thus ensuring correct use of package sources. Note that NuGet 3.4 and later does not use a hardcoded default source. When nuget.exe is run for the first time, `NuGet.Config` is generated and nuget.org is added as the default package source in the config file. In the absence of the `NuGet.Config` file, the default package source is undefined. The defaults file works with the following settings: -- `packageSources`: this collection has the same meaning as `packageSources` in regular config files and specifies the default sources in their preferred order. If this setting exists in `NuGetDefaults.Config`, then NuGet will not use nuget.org as a default package source. An administrator can thus make sure that everyone using this file will be working with the same sources and avoids using nuget.org if desired. +- `packageSources`: this collection has the same meaning as `packageSources` in regular config files and specifies the default sources in their preferred order. If this setting exists in `NuGetDefaults.Config`, then NuGet doesn't use nuget.org as a default package source. An administrator can thus make sure that everyone using this file is working with the same sources and avoids using nuget.org if desired. + - `disabledPackageSources`: this collection also has the same meaning as in `NuGet.Config` files, where each affected source is listed by its name and a true/false value indicating whether it's disabled. This allows the source name and URL to remain in `packageSources` without it being turned on by default. Individual developers can then re-enable the source by setting the source's value to false in other `NuGet.Config` files without having to find the correct URL again. This is also useful to supply developers with a full list of internal source URLs for an organization while enabling only an individual team's source by default. + - `defaultPushSource`: when publishing a package, nuget.org is used as the destination or "push source" unless another is specified, which risks developers accidentally pushing internal packages to a public site. By changing the default push source, administrators can ensure that packages stay internal unless published to nuget.org explicitly. > [!Note] -> The `NuGetDefaults.Config` file will never cause a package source to be removed from a developer's NuGet configuration. That means if the developer has already used NuGet and therefore has the nuget.org package source registered, it won't be removed after the creation of a `NuGetDefaults.Config` file. +> The `NuGetDefaults.Config` file never causes a package source to be removed from a developer's NuGet configuration. That means if the developer has already used NuGet and therefore has the nuget.org package source registered, it won't be removed after the creation of a `NuGetDefaults.Config` file. > > Furthermore, neither `NuGetDefaults.Config` or any other mechanism in NuGet can prevent access to package sources like nuget.org. If an organization wishes to block such access, it much use other means such as firewalls to do so. diff --git a/docs/Consume-Packages/Managing-the-NuGet-Cache.md b/docs/Consume-Packages/Managing-the-NuGet-Cache.md index 29d73a223..5795f7b2e 100644 --- a/docs/Consume-Packages/Managing-the-NuGet-Cache.md +++ b/docs/Consume-Packages/Managing-the-NuGet-Cache.md @@ -5,7 +5,7 @@ title: How to manage package caching in NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 7/26/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -28,12 +28,11 @@ ms.reviewer: --- +# Managing the NuGet cache -#Managing the NuGet cache +NuGet manages several local caches to avoid downloading packages that are already on the computer, and to provide offline support. NuGet 2.8+ automatically falls back to the cache when installing or reinstalling packages without a network connection. -NuGet manages several local caches to avoid downloading packages that are already on the machine, and to provide offline support. NuGet versions 2.8 and later automatically fall back to the cache when installing or reinstalling packages without a network connection. - -To see the list of cache locations, use the [locals command](../tools/nuget-exe-cli-reference.md#locals): +Cache locations are available using the [locals command](../tools/nuget-exe-cli-reference.md#locals): ``` nuget locals all -list @@ -41,19 +40,19 @@ nuget locals all -list Typical output is as follows: - http-cache: C:\Users\user\AppData\Local\NuGet\v3-cache #3.x cache - packages-cache: C:\Users\user\AppData\Local\NuGet\Cache #2.x cache + http-cache: C:\Users\user\AppData\Local\NuGet\v3-cache #NuGet 3.x+ cache + packages-cache: C:\Users\user\AppData\Local\NuGet\Cache #NuGet 2.x cache global-packages: C:\Users\user\.nuget\packages\ #Global cache temp: C:\Users\user\AppData\Local\Temp\NuGetScratch #Temp folder -If you encounter package installation problems or otherwise want to ensure that you're installing packages from the remote gallery, use the `locals -clear` option in one or more of the following ways: +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: ``` -nuget locals http-cache -clear #Clear the 3.x cache +nuget locals http-cache -clear #Clear the 3.x+ cache nuget locals packages-cache -clear #Clear the 2.x cache nuget locals global-packages -clear #Clear the global cache nuget locals temp -clear #Clear the temporary cache -nuget locals all -clear #Clears all caches +nuget locals all -clear #Clear all caches ``` Note that managing the cache is presently supported only from the NuGet command line, and not within Visual Studio or through the Package Manager Console. Also, managing the 2.x cache is not supported in NuGet 3.6 and later. diff --git a/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md b/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md index 1600de9a7..a30e685b3 100644 --- a/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md +++ b/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md @@ -5,7 +5,7 @@ title: Multi-targeting for NuGet Packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 7/26/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -33,31 +33,33 @@ ms.reviewer: Many libraries target a specific version of the .NET Framework. For example, you might have one version of your library that's specific to UWP, and another version that takes advantage of features in .NET Framework 4.6. -Fortunately, NuGet supports putting multiple versions of the same library in a single package through the convention-based working directory method described in [Creating a package](../create-packages/creating-a-package.md#from-a-convention-based-working-directory). - -> [!Note] -> Assemblies that have no associated framework name or version should be stored directly in the `lib` folder and not in separate folders. +To accommodate this, NuGet supports putting multiple versions of the same library in a single package when using the convention-based working directory method described in [Creating a package](../create-packages/creating-a-package.md#from-a-convention-based-working-directory). In this topic: - [Framework version folder structure](#framework-version-folder-structure) -- [Content files and PowerShell scripts](#content-files-and-powershell-scripts) - [Matching assembly versions and the target framework in a project](#matching-assembly-versions-and-the-target-framework-in-a-project) - [Grouping assemblies by framework version](#grouping-assemblies-by-framework-version) - [Determining which NuGet target to use](#determining-which-nuget-target-to-use) +- [Content files and PowerShell scripts](#content-files-and-powershell-scripts) ## Framework version folder structure -When NuGet installs an assembly from a package, it checks the target .NET Framework version of the project, then selects the correct version of the assembly from the appropriate subfolder under `lib` in the package, provided those folders use the following convention: +When building a package that contains only one version of a library, you place its files in the `lib` folder of your project. + +When specifically targeting multiple frameworks, you instead make subfolders under `lib` using different case-sensitive framework names with the following convention: lib\{framework name}[{version}] -For a complete list of supported names, see the [Target Frameworks reference](../schema/target-frameworks.md#supported-frameworks). Note that names are case-sensitive +For a complete list of supported names, see the [Target Frameworks reference](../schema/target-frameworks.md#supported-frameworks). -The following example shows a folder structure that supports four versions of a library: +If you also have a version of the library that is not specific to a framework, place it in the root `lib` folder. + +For example, the following folder structure supports five versions of an assembly, four that are framework-specific and one that is not: \lib + MyAssembly.dll \net46 \MyAssembly.dll \net461 @@ -67,53 +69,35 @@ The following example shows a folder structure that supports four versions of a \netcore \MyAssembly.dll +To easily include all these files when building the package, use a recursive `**` wildcard in the `` section of your `.nuspec`: -## Content files and PowerShell scripts - -> [!Warning] -> Mutable content file support and script execution is available in NuGet 2.x, but deprecated in NuGet 3.x and later. - -With NuGet 2.x, content files and PowerShell scripts can be grouped by target framework using the same folder convention inside the `content` and `tools` folders. For example: - - \content - \net46 - \MyContent.txt - \net461 - \MyContent461.txt - \uap - \MyUWPContent.html - \netcore - \tools - init.ps1 - \net46 - install.ps1 - uninstall.ps1 - \uap - install.ps1 - uninstall.ps1 - -If a framework folder is left empty, NuGet will not 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. If placed under a framework folder, it will be ignored. - +```xml + + + +``` ## Matching assembly versions and the target framework in a project When NuGet installs a package that has multiple assembly versions, it tries to match the framework name of the assembly with the target framework of the project. -If a match is not found, NuGet copies the assembly for the highest version that is less than or equal to the project's target framework. +If a match is not found, NuGet copies the assembly for the highest version that is less than or equal to the project's target framework, using an assembly in the root `lib` folder, if present, as the fallback. For example, consider the following folder structure in a package: \lib + \MyAssembly.dll \net45 \MyAssembly.dll \net461 \MyAssembly.dll -Installing this package in a project that targets .NET Framework 4.6, NuGet installs the assembly in the `net45` folder. +When installing this package in a project that targets .NET Framework 4.6, NuGet installs the assembly in the `net45` folder, because that's the highest available version that's less than or equal to 4.6. + +If the project targets .NET Framework 4.6.1, on the other hand, NuGet installs the assembly in the `net461` folder. + +If the project targets .NET framework 4.0 and earlier, NuGet installs the assembly in the root `lib` folder. ## Grouping assemblies by framework version @@ -126,16 +110,7 @@ NuGet copies assemblies from only a single library folder in the package. For ex \net45 \MyAssembly.dll (v2.0) - -To easily include all these files, use a wildcard in the `` section of your `.nuspec`: - -```xml - - - -``` - -When the package is installed in a project that targets .NET Framework 4.5, `MyAssembly.dll (v2.0)` is the only assembly installed. `MyAssembly.Core.dll(v1.0)` is not installed because it's not listed in the `net45` folder. (One reason why NuGet behaves this way is that `MyAssembly.Core.dll` might have merged into version 2.0 of `MyAssembly.dll`.) +When the package is installed in a project that targets .NET Framework 4.5, `MyAssembly.dll` (v2.0) is the only assembly installed. `MyAssembly.Core.dll` (v1.0) is not installed because it's not listed in the `net45` folder. NuGet behaves this way because `MyAssembly.Core.dll` might have merged into version 2.0 of `MyAssembly.dll`. If you want `MyAssembly.Core.dll` to be installed for .NET Framework 4.5, place a copy in the `net45` folder. @@ -147,8 +122,7 @@ The rule about copying assemblies from only one folder also applies to the root \Net45 \MyAssembly.dll (v2.0) -In projects that target .NET Framework 4.0 and .NET Framework 3.5, NuGet copies both `MyAssembly.dll` and `MyAssembly.Core.dll` because their location in the package does not restrict them to a specific target. But as was true of the previous example, in projects that target .NET Framework 4.5, only `MyAssembly.dll` from the `net45` folder will be copied. If you want to include `MyAssembly.Core.dll` for .NET Framework 4.5, place a copy of it in the `net45` folder. - +In projects that target .NET Framework 4.0 and earlier, NuGet copies both `MyAssembly.dll` (v1.0) and `MyAssembly.Core.dll` (v1.0) because their location in the package does not restrict them to a specific target. In projects that target .NET Framework 4.5, however, only `MyAssembly.dll` (v2.0) from the `net45` folder is copied. Again, to include `MyAssembly.Core.dll` for .NET Framework 4.5, place a copy of it in the `net45` folder. ## Grouping assemblies by framework profile @@ -156,9 +130,7 @@ NuGet also supports targeting a specific framework profile by appending a dash a lib\{framework name}-{profile} -For example, to target the Windows Phone profile, place your assembly in a folder named `sl3-wp`. - -Profiles supported by NuGet : +The supported profiles are as follows: - `client`: Client Profile - `full`: Full Profile @@ -167,8 +139,37 @@ Profiles supported by NuGet : ## Determining which NuGet target to use -When packaging libraries targeting the Portable Class Library it can sometimes be tricky to determine which NuGet target you should use in your folder names and `.nuspec` file, especially if targeting only a subset of the PCL. Here are some links to useful external resources to help you with this: +When packaging libraries targeting the Portable Class Library it can be tricky to determine which NuGet target you should use in your folder names and `.nuspec` file, especially if targeting only a subset of the PCL. The following external resources will help you with this: - [Framework profiles in .NET](http://blog.stephencleary.com/2012/05/framework-profiles-in-net.html) (stephenclearly.com) - [Portable Class Library profiles](http://embed.plnkr.co/03ck2dCtnJogBKHJ9EjY/preview) (plnkr.co): Table enumerating PCL profiles and their equivalent NuGet targets - [Portable Class Library profiles tool](https://github.com/StephenCleary/PortableLibraryProfiles) (github.com): command line tool for determining PCL profiles available on your system + +## Content files and PowerShell scripts + +> [!Warning] +> Mutable content file support and script execution is available in NuGet 2.x, but deprecated in NuGet 3.x and later. + +With NuGet 2.x, content files and PowerShell scripts can be grouped by target framework using the same folder convention inside the `content` and `tools` folders. For example: + + \content + \net46 + \MyContent.txt + \net461 + \MyContent461.txt + \uap + \MyUWPContent.html + \netcore + \tools + init.ps1 + \net46 + install.ps1 + uninstall.ps1 + \uap + install.ps1 + uninstall.ps1 + +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. diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index 61b945872..f451117b3 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -5,7 +5,7 @@ title: .nuspec File Reference for NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 7/25/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -30,7 +30,7 @@ ms.reviewer: # .nuspec reference -A `.nuspec` file is an XML manifest that contains package metadata. This is used both to build the package and to provide information to consumers. The manifest is always included in a package. +A `.nuspec` file is an XML manifest that contains package metadata. This manifest is used both to build the package and to provide information to consumers. The manifest is always included in a package. In this topic: @@ -66,7 +66,7 @@ Within this schema, a `.nuspec` file has the following general form: ``` -For a clear visual representation of the schema, open the schema file in Visual Studio in Design mode and click on the **XML Schema Explorer** link, or open the file as code, right-click in the editor, and select **Show XML Schema Explorer**. Either way you'll get a view like the one below (when mostly expanded): +For a clear visual representation of the schema, open the schema file in Visual Studio in Design mode and click on the **XML Schema Explorer** link. Alternately, open the file as code, right-click in the editor, and select **Show XML Schema Explorer**. Either way you get a view like the one below (when mostly expanded): ![Visual Studio Schema Explorer with nuspec.xsd open](media/SchemaExplorer.png) @@ -76,12 +76,12 @@ Although the following elements are the minimum requirements for a package, you These elements must appear within a `` element. -Element | Description ---- | --- -**id** | The case-insensitive package identifier, which must be unique across nuget.org or whatever gallery the package will reside in. IDs may not contain spaces or characters that are not valid for a URL, and generally follow .NET namespace rules. See [Choosing a unique package identifier](../create-packages/creating-a-package.md#choosing-a-unique-package-identifier-and-setting-the-version-number) for guidance. -**version** | The version of the package, following the *major.minor.patch* pattern. Version numbers may include a pre-release suffix as described in [Prerelease Packages](../create-packages/prerelease-packages.md#semantic-versioning) -**description** | A long description of the package for UI display. -**authors** | A comma-separated list of packages authors, matching the profile names on nuget.org. These are displayed in the NuGet Gallery on nuget.org and are used to cross-reference packages by the same authors. +| Element | Description | +| --- | --- | +| **id** | The case-insensitive package identifier, which must be unique across nuget.org or whatever gallery the package resides in. IDs may not contain spaces or characters that are not valid for a URL, and generally follow .NET namespace rules. See [Choosing a unique package identifier](../create-packages/creating-a-package.md#choosing-a-unique-package-identifier-and-setting-the-version-number) for guidance. | +| **version** | The version of the package, following the *major.minor.patch* pattern. Version numbers may include a pre-release suffix as described in [Prerelease Packages](../create-packages/prerelease-packages.md#semantic-versioning). | +| **description** | A long description of the package for UI display. | +| **authors** | A comma-separated list of packages authors, matching the profile names on nuget.org. These are displayed in the NuGet Gallery on nuget.org and are used to cross-reference packages by the same authors. | ### Optional metadata elements @@ -89,40 +89,40 @@ These elements must appear within a `` element. #### Single elements -Element | Description ---- | --- -**title** | A human-friendly title of the package, typically used in UI displays as on nuget.org and the Package Manager in Visual Studio. If not specified, the package ID is used instead. -**owners** | A comma-separated list of the package creators using profile names on nuget.org. This is often the same list as in authors, and is ignored when uploading the package to nuget.org. See [Managing package owners on nuget.org](../create-packages/publish-a-package.md#managing-package-owners-on-nugetorg) -**projectUrl** | A URL for the package's home page, often shown in UI displays as well as nuget.org. -**licenseUrl** | A URL for the package's license, often shown in UI displays as well as nuget.org. -**iconUrl** | A URL for a 64x64 image with transparency background to use as the icon for the package in UI display. Note: this should be the image URL and not a web page containing the image. For example, to use an image from GitHub, use the raw file URL like `https://github.com///raw//`. -**requireLicenseAcceptance** | A Boolean value specifying whether the client must prompt the consumer to accept the package license before installing the package. -**developmentDependency** | *(2.8+)* A Boolean value specifying whether the package will be marked as a development-only-dependency, which prevents the package from being included as a dependency in other packages. -**summary** | A short description of the package for UI display. If omitted, a truncated version of the **description** is used. -**releaseNotes** | *(1.5+)* A description of the changes made in this release of the package, often used in UI like the Updates tab of the Visual Studio Package Manager in place of the package description. -**copyright** | *(1.5+)* Copyright details for the package. -**language** | The locale ID for the package. See [Creating localized packages](../create-packages/creating-localized-packages.md). -**tags** | A space-delimited list of tags and keywords that describe the package and aid discoverability of packages through search and filtering mechanisms. -**serviceable** | *(3.3+)*For internal NuGet use only -**minClientVersion** | *(2.5+)* Specifies the minimum version of the NuGet client that can install this package, enforced by nuget.exe and the Visual Studio Package Manager. This is used whenever the package depends on specific features of the `.nuspec` file that were added in a particular version of the NuGet client. For example, a package using the `developmentDependency` attribute would specify "2.8" for `minClientVersion`. Similarly, a package using the `contentFiles` element (see the next section) would set `minClientVersion` to "3.3". Note also that because NuGet clients prior to 2.5 do not recognize this flag, they will *always* refuse to install the package no matter what value you use in `minClientVersion`. +| Element | Description | +| --- | --- | +| **title** | A human-friendly title of the package, typically used in UI displays as on nuget.org and the Package Manager in Visual Studio. If not specified, the package ID is used. | +| **owners** | A comma-separated list of the package creators using profile names on nuget.org. This is often the same list as in *authors*, and is ignored when uploading the package to nuget.org. See [Managing package owners on nuget.org](../create-packages/publish-a-package.md#managing-package-owners-on-nugetorg). | +| **projectUrl** | A URL for the package's home page, often shown in UI displays as well as nuget.org. | +| **licenseUrl** | A URL for the package's license, often shown in UI displays as well as nuget.org. | +| **iconUrl** | A URL for a 64x64 image with transparency background to use as the icon for the package in UI display. Be sure this element contains the *direct image URL* and not the URL of a web page containing the image. For example, to use an image from GitHub, use the raw file URL like `https://github.com///raw//`. | +| **requireLicenseAcceptance** | A Boolean value specifying whether the client must prompt the consumer to accept the package license before installing the package. | +| **developmentDependency** | *(2.8+)* A Boolean value specifying whether the package is be marked as a development-only-dependency, which prevents the package from being included as a dependency in other packages. | +| **summary** | A short description of the package for UI display. If omitted, a truncated version of **description** is used. | +| **releaseNotes** | *(1.5+)* A description of the changes made in this release of the package, often used in UI like the **Updates** tab of the Visual Studio Package Manager in place of the package description. | +| **copyright** | *(1.5+)* Copyright details for the package. | +| **language** | The locale ID for the package. See [Creating localized packages](../create-packages/creating-localized-packages.md). | +| **tags** | A space-delimited list of tags and keywords that describe the package and aid discoverability of packages through search and filtering. | +| **serviceable** | *(3.3+)*For internal NuGet use only. | +| **minClientVersion** | *(2.5+)* Specifies the minimum version of the NuGet client that can install this package, enforced by nuget.exe and the Visual Studio Package Manager. This is used whenever the package depends on specific features of the `.nuspec` file that were added in a particular version of the NuGet client. For example, a package using the `developmentDependency` attribute should specify "2.8" for `minClientVersion`. Similarly, a package using the `contentFiles` element (see the next section) should set `minClientVersion` to "3.3". Note also that because NuGet clients prior to 2.5 do not recognize this flag, they *always* refuse to install the package no matter what `minClientVersion` contains. | #### Collection elements -||| ---- | --- -**packageTypes** | *(3.3+)* A collection of zero or more `` elements specifying the type of the package if other than a traditional dependency package. Each packageType has attributes of *name* and *version*. See [Setting a package type](../create-packages/creating-a-package.md#setting-a-package-type). -**dependencies** | A collection of zero or more `` elements specifying the dependencies for the package. Each dependency has attributes of *id*, *version*, *include* (3.x+), and *exclude* (3.x+). See [Dependencies](#dependencies) below. -**frameworkAssemblies** | *(1.2+)* A collection of zero or more `` elements identifying .NET Framework assembly references that this package requires, which ensures that references are added to projects consuming the package. Each frameworkAssembly has *assemblyName* and *targetFramework* attributes. See [Specifying framework assembly references GAC](#specifying-framework-assembly-references-gac) below. -**references** | *(1.5+)* A collection of zero or more `` elements naming assemblies in the package's `lib` folder that are added as project references. Each reference has a *file* attribute. `` can also contain a `` element with a *targetFramework* attribute, that then contains `` elements. If omitted, all references in `lib` are included. See [Specifying explicit assembly references](#specifying-explicit-assembly-references) below. -**contentFiles** | *(3.3+)* A collection of `` elements that identify content files that should be include in the consuming project. These files are specified with a set of attributes that describe how they should be used within the project system. See [Specifying files to include in the package](#specifying-files-to-include-in-the-package) below. +| Element | Description | +| --- | --- | +**packageTypes** | *(3.3+)* A collection of zero or more `` elements specifying the type of the package if other than a traditional dependency package. Each packageType has attributes of *name* and *version*. See [Setting a package type](../create-packages/creating-a-package.md#setting-a-package-type). | +| **dependencies** | A collection of zero or more `` elements specifying the dependencies for the package. Each dependency has attributes of *id*, *version*, *include* (3.x+), and *exclude* (3.x+). See [Dependencies](#dependencies) below. | +| **frameworkAssemblies** | *(1.2+)* A collection of zero or more `` elements identifying .NET Framework assembly references that this package requires, which ensures that references are added to projects consuming the package. Each frameworkAssembly has *assemblyName* and *targetFramework* attributes. See [Specifying framework assembly references GAC](#specifying-framework-assembly-references-gac) below. | +| **references** | *(1.5+)* A collection of zero or more `` elements naming assemblies in the package's `lib` folder that are added as project references. Each reference has a *file* attribute. `` can also contain a `` element with a *targetFramework* attribute, that then contains `` elements. If omitted, all references in `lib` are included. See [Specifying explicit assembly references](#specifying-explicit-assembly-references) below. | +| **contentFiles** | *(3.3+)* A collection of `` elements that identify content files to include in the consuming project. These files are specified with a set of attributes that describe how they should be used within the project system. See [Specifying files to include in the package](#specifying-files-to-include-in-the-package) below. | ### Files element -The `` node may also contain a `` and/or `` nodes as siblings to `` to specify which assembly and content files to include in the package. See [Including assembly files](#including-assembly-files) and [Including content files](#including-content-files) later in this topic for details. +The `` node may contain a `` and/or `` nodes as siblings to `` to specify which assembly and content files to include in the package. See [Including assembly files](#including-assembly-files) and [Including content files](#including-content-files) later in this topic for details. ## Replacement tokens -When creating a package, the [`nuget pack` command](../tools/nuget-exe-cli-reference.md#pack) will replace $-delimited tokens in the `.nuspec` file's `` node with values that come from either a project file or the `pack` command's `-properties` switch. +When creating a package, the [`nuget pack` command](../tools/nuget-exe-cli-reference.md#pack) replaces $-delimited tokens in the `.nuspec` file's `` node with values that come from either a project file or the `pack` command's `-properties` switch. On the command line, you specify token values with `nuget pack -properties =;=`. For example, you can use a token such as `$owners$` and `$desc$` in the `.nuspec` and provide the values at packing time as follows: @@ -133,24 +133,24 @@ nuget pack MyProject.csproj -properties To use values from a project, specify the tokens described in the table below (AssemblyInfo refers to the file in `Properties` such as `AssemblyInfo.cs` or `AssemblyInfo.vb`). -To use these tokens, you must run `nuget pack` with the project file rather than just the `.nuspec`. For example, when using the following command, the `$id$` and `$version$` tokens in a `.nuspec` file will be replaced with the project's `AssemblyName` and `AssemblyVersion` values: +To use these tokens, run `nuget pack` with the project file rather than just the `.nuspec`. For example, when using the following command, the `$id$` and `$version$` tokens in a `.nuspec` file are replaced with the project's `AssemblyName` and `AssemblyVersion` values: ``` nuget pack MyProject.csproj ``` -Typically, when you have a project you'll create the `.nuspec` initially using `nuget spec MyProject.csproj` which will automatically include some of these standard tokens. Note, however, that if a project lacks values for required `.nuspec` elements, then `nuget pack` will fail. Furthermore, if you change project values, be sure to rebuild before creating the package; this can be done conveniently with the pack command's `build` switch. +Typically, when you have a project, you create the `.nuspec` initially using `nuget spec MyProject.csproj` which automatically includes some of these standard tokens. However, if a project lacks values for required `.nuspec` elements, then `nuget pack` fails. Furthermore, if you change project values, be sure to rebuild before creating the package; this can be done conveniently with the pack command's `build` switch. -With the exception of `$configuration$`, values in the project will be used in preference to any assigned to the same token on the command line. +With the exception of `$configuration$`, values in the project are used in preference to any assigned to the same token on the command line. -Token | Value source | Value ---- | --- | --- -$id$ | Project file | AssemblyName from the project file -$version$ | AssemblyInfo | AssemblyInformationalVersion if present, otherwise AssemblyVersion -$author$ | AssemblyInfo | AssemblyCompany -$description$ | AssemblyInfo | AssemblyDescription -$copyright$ | AssemblyInfo | AssemblyCopyright -$configuration$ | Assembly DLL | Configuration used to build the assembly, defaulting to Debug. Note that to create a package using a Release configuration, you always use `-properties Configuration=Release` on the command line. +| Token | Value source | Value +| --- | --- | --- +| **$id$** | Project file | AssemblyName from the project file | +| **$version$** | AssemblyInfo | AssemblyInformationalVersion if present, otherwise AssemblyVersion | +| **$author$** | AssemblyInfo | AssemblyCompany | +| **$description$** | AssemblyInfo | AssemblyDescription | +| **$copyright$** | AssemblyInfo | AssemblyCopyright | +| **$configuration$** | Assembly DLL | Configuration used to build the assembly, defaulting to Debug. Note that to create a package using a Release configuration, you always use `-properties Configuration=Release` on the command line. | Tokens can also be used to resolve paths when you include [assembly files](#including-assembly-files) and [content files](#including-content-files). The tokens have the same names as the MSBuild properties, making it possible to select files to be included depending on the current build configuration. For example, if you use the following tokens in the `.nuspec` file: @@ -160,7 +160,7 @@ Tokens can also be used to resolve paths when you include [assembly files](#incl ``` -And you build an assembly whose `AssemblyName` is `LoggingLibrary` with the `Release` configuration in MSBuild, the resulting lines in the `.nuspec` file in the package will be as follows: +And you build an assembly whose `AssemblyName` is `LoggingLibrary` with the `Release` configuration in MSBuild, the resulting lines in the `.nuspec` file in the package is as follows: ```xml @@ -172,10 +172,10 @@ And you build an assembly whose `AssemblyName` is `LoggingLibrary` with the `Rel The `` element within `` contains any number of `` elements that identify other packages upon which the top-level package depends. The attributes for each `` are as follows: -Attribute | Description ---- | --- -`id` | (Required) The package ID of the dependency. -`version` | (Required) The range of versions acceptable as a dependency. See [Dependency versions](../create-packages/dependency-versions.md#version-ranges) for exact syntax. +| Attribute | Description | +| --- | --- | +| **id** | (Required) The package ID of the dependency. | +| **version** | (Required) The range of versions acceptable as a dependency. See [Dependency versions](../create-packages/dependency-versions.md#version-ranges) for exact syntax. | For example, the following lines indicate dependencies on `PackageA` version 1.1.0 or higher, and `PackageB` version 1.x. @@ -186,19 +186,19 @@ For example, the following lines indicate dependencies on `PackageA` version 1.1 ``` -When creating a `.nuspec` from a project using `nuget spec`, dependencies that exist in that project will be automatically included in the resulting `.nuspec` file. +When creating a `.nuspec` from a project using `nuget spec`, dependencies that exist in that project are automatically included in the resulting `.nuspec` file. ### Dependency groups *Version 2.0+* -As an alternative to a single flat list, dependencies can also be specified according to the framework profile of the target project using `` elements within ``. +As an alternative to a single flat list, dependencies can be specified according to the framework profile of the target project using `` elements within ``. -Each group has an attribute named `targetFramework` and contains zero or more `` elements. Those dependencies will be installed together when the target framework is compatible with the project's framework profile. +Each group has an attribute named `targetFramework` and contains zero or more `` elements. Those dependencies are installed together when the target framework is compatible with the project's framework profile. The `` element without a `targetFramework` attribute is used as the default or fallback list of dependencies. See [Target frameworks](../schema/target-frameworks.md) for the exact framework identifiers. -> [!Note] +> [!Important] > The group format cannot be intermixed with a flat list. The following example shows different variations of the `` element: @@ -223,7 +223,7 @@ The following example shows different variations of the `` element: ## Explicit assembly references -The `` element explicitly specifies the assemblies that the target project should reference when using the package. When this element is present, NuGet will add references to only the listed assemblies; it will not add references for any other assemblies in the package's `lib` folder. +The `` element explicitly specifies the assemblies that the target project should reference when using the package. When this element is present, NuGet add references to only the listed assemblies; it does not add references for any other assemblies in the package's `lib` folder. For example, the following `` element instructs NuGet to add references to only `xunit.dll` and `xunit.extensions.dll` even if there are additional assemblies in the package: @@ -234,7 +234,7 @@ For example, the following `` element instructs NuGet to add referen ``` -Explicit reference are typically used for design-time only assemblies. When using [Code Contracts](https://msdn.microsoft.com/library/dd264808.aspx), for example, contract assemblies need to be next to the runtime assemblies that they augment so that Visual Studio can find them, but the contract assemblies need not be referenced by the project or copied into the project's `bin` folder. +Explicit references are typically used for design-time only assemblies. When using [Code Contracts](https://docs.microsoft.com/dotnet/framework/debug-trace-profile/code-contracts), for example, contract assemblies need to be next to the runtime assemblies that they augment so that Visual Studio can find them, but the contract assemblies need not be referenced by the project or copied into the project's `bin` folder. Similarly, explicit references can be used for unit test frameworks, such as XUnit, which needs its tools assemblies located next to the runtime assemblies, but does not need them included as project references. @@ -242,13 +242,13 @@ Similarly, explicit references can be used for unit test frameworks, such as XUn *Version 2.5+* -As an alternative to a single flat list, references can also be specified according to the framework profile of the target project using `` elements within ``. +As an alternative to a single flat list, references can be specified according to the framework profile of the target project using `` elements within ``. -Each group has an attribute named `targetFramework` and contains zero or more `` elements. Those references will be added to a project when the target framework is compatible with the project's framework profile. +Each group has an attribute named `targetFramework` and contains zero or more `` elements. Those references are added to a project when the target framework is compatible with the project's framework profile. The `` element without a `targetFramework` attribute is used as the default or fallback list of references. See [Target frameworks](../schema/target-frameworks.md) for the exact framework identifiers. -> [!Note] +> [!Important] > The group format cannot be intermixed with a flat list. The following example shows different variations of the `` element: @@ -277,10 +277,10 @@ Framework assemblies are those that are part of the .NET framework and should al The `` element contains zero or more `` elements, each of which specifies the following attributes: -Attribute | Description ---- | --- -assemblyName | (Required) The fully qualified assembly name. -targetFramework | (Optional) Specifies the target framework to which this reference applies. If omitted, indicates that the reference applies to all frameworks. See [Target frameworks](../schema/target-frameworks.md) for the exact framework identifiers. +| Attribute | Description | +| --- | --- | +| **assemblyName** | (Required) The fully qualified assembly name. | +| **targetFramework** | (Optional) Specifies the target framework to which this reference applies. If omitted, indicates that the reference applies to all frameworks. See [Target frameworks](../schema/target-frameworks.md) for the exact framework identifiers. | The following example shows a reference to `System.Net` for all target frameworks, and a reference to `System.ServiceModel` for .NET Framework 4.0 only: @@ -296,9 +296,9 @@ The following example shows a reference to `System.Net` for all target framework ## Including assembly files -If you follow the conventions described in [Creating a Package](../create-packages/creating-a-package.md), you do not have to explicitly specify a list of files in the `.nuspec` file. The `nuget pack` command will automatically pick up the necessary files. +If you follow the conventions described in [Creating a Package](../create-packages/creating-a-package.md), you do not have to explicitly specify a list of files in the `.nuspec` file. The `nuget pack` command automatically picks up the necessary files. -> [!NOTE] +> [!Important] > When a package is installed into a project, NuGet automatically adds assembly references to the package's DLLs, *excluding* those that are named `.resources.dll` because they are assumed to be localized satellite assemblies. For this reason, avoid using `.resources.dll` for files that otherwise contain essential package code. To bypass this automatic behavior and explicitly control which files are included in a package, place a `` element as a child of `` (and a sibling of ``), identifying each file with a separate `` element. For example: @@ -311,17 +311,17 @@ To bypass this automatic behavior and explicitly control which files are include ``` -With NuGet 2.x and earlier, and projects using `packages.config`, the `` element is also used to include immutable content files when a package is installed. With NuGet 3.3+ and projects using `project.json`, the `` element is used instead. See [Including content files](#including-content-files) below for details. +With NuGet 2.x and earlier, and projects using `packages.config`, the `` element is also used to include immutable content files when a package is installed. With NuGet 3.3+ and projects using `project.json` pr PackageReference, the `` element is used instead. See [Including content files](#including-content-files) below for details. ### File element attributes Each `` element specifies the following attributes: -Attribute | Description ---- | --- -**src** | The location of the file or files to include, subject to exclusions specified by the `exclude` attribute. The path is relative to the `.nuspec` file unless an absolute path is specified. The wildcard character `*` is allowed, and the double wildcard `**` implies a recursive folder search. -**target** | The relative path to the folder within the package where the source files will be placed, which must begin with `lib`, `content`, or `tools`. -**exclude** | A semicolon-delimited list of files or file patterns to exclude from the `src` location. The wildcard character `*` is allowed, and the double wildcard `**` implies a recursive folder search. +| Attribute | Description | +| --- | --- | +| **src** | The location of the file or files to include, subject to exclusions specified by the `exclude` attribute. The path is relative to the `.nuspec` file unless an absolute path is specified. The wildcard character `*` is allowed, and the double wildcard `**` implies a recursive folder search. | +| **target** | The relative path to the folder within the package where the source files are placed, which must begin with `lib`, `content`, or `tools`. | +| **exclude** | A semicolon-delimited list of files or file patterns to exclude from the `src` location. The wildcard character `*` is allowed, and the double wildcard `**` implies a recursive folder search. | ### Examples @@ -389,14 +389,14 @@ Attribute | Description ## Including content files -Content files are files that a package needs to include in a project, but are considered immutable, that is, they are not intended to be modified by the consuming project. Example content files include: +Content files are immutable files that a package needs to include in a project. Being immutable, they are not intended to be modified by the consuming project. Example content files include: - Images that are embedded as resources - Source files that are already compiled - Scripts that need to be included with the build output of the project -- Configuration files for the package that need to be included in the project but don't need any project-specific changes. +- Configuration files for the package that need to be included in the project but don't need any project-specific changes -Content files are included in a package using the `` element, specifying the `content` folder in the `target` attribute. However, such files are ignored when the package is installed in a project using the `project.json` system in NuGet 3.3+, which instead uses the `` element. +Content files are included in a package using the `` element, specifying the `content` folder in the `target` attribute. However, such files are ignored when the package is installed in a project using the `project.json` system in NuGet 3.3+ or PackageReference in NuGet 4+, which instead uses the `` element. For maximum compatibility with consuming projects, a package ideally specifies content files in both locations. @@ -510,24 +510,26 @@ In this case, because the file extensions of the source and target match, NuGet All .txt files from docs except admin.txt and log.txt (second example) + ### Using the contentFiles element for content files *Version 3.3+ with project.json and 4.0+ with PackageReference* -By default, a package places content in a `contentFiles` folder (see below) and `nuget pack` will include all files in that folder using default attributes. In this case it's not necessary to include a `contentFiles` node in the `.nuspec` at all. +By default, a package places content in a `contentFiles` folder (see below) and `nuget pack` included all files in that folder using default attributes. In this case it's not necessary to include a `contentFiles` node in the `.nuspec` at all. To control which files are included, the `` element specifies is a collection of `` elements that identify the exact files include. + These files are specified with a set of attributes that describe how they should be used within the project system: -Attribute | Description ---- | --- -include | (Required) The location of the file or files to include, subject to exclusions specified by the `exclude` attribute. The path is relative to the `.nuspec` file unless an absolute path is specified. The wildcard character `*` is allowed, and the double wildcard `**` implies a recursive folder search. -exclude | A semicolon-delimited list of files or file patterns to exclude from the `src` location. The wildcard character `*` is allowed, and the double wildcard `**` implies a recursive folder search. -buildAction | The build action to assign to the content item for MSBuild, such as `Content`, `None`, `Embedded Resource`, `Compile`, etc. The default is `Compile`. -copyToOutput | A Boolean indicating whether to copy content items to the build output folder. The default is false. -flatten | A Boolean indicating whether to copy content items to a single folder in the build output (true), or to preserve the folder structure in the package (false). The default is false. +| Attribute | Description | +| --- | --- | +| **include** | (Required) The location of the file or files to include, subject to exclusions specified by the `exclude` attribute. The path is relative to the `.nuspec` file unless an absolute path is specified. The wildcard character `*` is allowed, and the double wildcard `**` implies a recursive folder search. | +| **exclude** | A semicolon-delimited list of files or file patterns to exclude from the `src` location. The wildcard character `*` is allowed, and the double wildcard `**` implies a recursive folder search. | +| **buildAction** | The build action to assign to the content item for MSBuild, such as `Content`, `None`, `Embedded Resource`, `Compile`, etc. The default is `Compile`. | +| **copyToOutput** | A Boolean indicating whether to copy content items to the build output folder. The default is false. | +| **flatten** | A Boolean indicating whether to copy content items to a single folder in the build output (true), or to preserve the folder structure in the package (false). The default is false. | -When installing a package, NuGet applies the child elements of `` from top to bottom. If multiple entries match the same file then all entries will be applied. The top-most entry will override the lower entries if there is a conflict for the same attribute. +When installing a package, NuGet applies the child elements of `` from top to bottom. If multiple entries match the same file then all entries are applied. The top-most entry overrides the lower entries if there is a conflict for the same attribute. #### Package folder structure @@ -655,7 +657,7 @@ Empty folders can use `.` to opt out of providing content for certain combinatio ``` -In this example, the following will be installed for specific project targets: +In this example, the following are installed for specific project targets: - .NET4 -> `System.Web`, `System.Net` - .NET4 Client Profile -> `System.Net` diff --git a/docs/Schema/project-json.md b/docs/Schema/project-json.md index 61cf16c64..5541838a8 100644 --- a/docs/Schema/project-json.md +++ b/docs/Schema/project-json.md @@ -5,7 +5,7 @@ title: project.json File Reference for NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 7/26/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -32,11 +32,11 @@ ms.reviewer: *NuGet 3.x+* -The `project.json` file maintains a list of packages used in a project. It supercedes using `packages.config` to maintain that list, but is in turn superceded by [package references in project files](../Consume-Packages/Package-References-in-Project-Files.md) with NuGet 4.0+. +The `project.json` file maintains a list of packages used in a project, known as a package reference format. It supercedes `packages.config` but is in turn superceded by [PackageReference](../Consume-Packages/Package-References-in-Project-Files.md) with NuGet 4.0+. -The [`project.lock.json`](#projectlockjson) file (described below) is also used in projects with a `project.json` file. +The [`project.lock.json`](#projectlockjson) file (described below) is also used in projects employing `project.json`. -A `project.json` file has the following basic structure, where each of the four top-level objects can have any number of child objects: +`project.json` has the following basic structure, where each of the four top-level objects can have any number of child objects: ```json { @@ -57,7 +57,7 @@ A `project.json` file has the following basic structure, where each of the four ## Dependencies -Lists the nuget package dependencies of your project in the form of: +Lists the NuGet package dependencies of your project in the following form: ```json "PackageID" : "version_constraint" @@ -72,17 +72,17 @@ For example: } ``` -The dependencies section is where the NuGet Package Manager dialog will add package dependencies to your project. +The `dependencies` section is where the NuGet Package Manager dialog adds package dependencies to your project. The Package id corresponds to the id of the package on nuget.org , the same as the id used in the package manager console: `Install-Package Microsoft.NETCore`. -The version constraint of `"5.0.0"` corresponds to the `>= 5.0.0` constraint. This means that if for some reason 5.0.0 is not available on the server and 5.0.1 is, the restore will pick 5.0.1 and warn you about the upgrade. Otherwise restore will pick the lowest possible version on the server matching the constraint which will be 5.0.0. +When restoring packages, the version constraint of `"5.0.0"` implies `>= 5.0.0`. That is, if 5.0.0 is not available on the server but 5.0.1 is, NuGet installs 5.0.1 and warns you about the upgrade. NuGet otherwise picks the lowest possible version on the server matching the constraint. -See [dependency resolution document](../consume-packages/dependency-resolution.md) for more details on resolution rules. +See [Dependency resolution](../consume-packages/dependency-resolution.md) for more details on resolution rules. ## Frameworks -This lists the frameworks that your project will run on. For example, `net45`, `netcoreapp`, `netstandard`. +Lists the frameworks that the project runs on, such as `net45`, `netcoreapp`, `netstandard`. ```json "frameworks": { @@ -90,13 +90,11 @@ This lists the frameworks that your project will run on. For example, `net45`, ` } ``` -Unlike the `project.json` used by ASP.NET Core, a `project.json` that is being used with other project types can only have a single entry in the frameworks section. This is because the build system, MSBuild, only ever builds for a single target in contrast to DNX where the build is run once for each of the targets. +Only a single entry is allowed in the `frameworks` section. (An exception is `project.json` files for ASP.NET projects that are build with deprecated DNX toolchain, which allows for multiple targets.) ## Runtimes -The Operating System and Architectures that your application will be running on. For example, win7-x64, win8-x64, win8-x86. - -If you are a portable class library that can run on any runtime, you don't need to specify a runtime. Of course any dependencies of your package have to run on any runtime as well. +Lists the operating systems and architectures that your app runs on, such as `win10-arm`, `win8-x64`, `win8-x86`. ```json "runtimes": { @@ -109,10 +107,12 @@ If you are a portable class library that can run on any runtime, you don't need } ``` +A package containing a PCL that can run on any runtime doesn't need to specify a runtime. This must also be true of any dependencies, otherwise you must specify runtimes. + ## Supports -Defines a set of checks for package dependencies. You can define where you expect the portable library/application to run, it is not restrictive, you may be able to run elsewhere but specifying things here will make NuGet check that all dependencies are able to be satisfied on the listed TxMs. Examples of the values for this are: net46.app, uwp.10.0.app, etc. +Defines a set of checks for package dependencies. You can define where you expect the PCL or app to run. The definitions are not restrictive, as your code may be able to run elsewhere. But specifying these checks makes NuGet check that all dependencies are satisfied on the listed TxMs. Examples of the values for this are: `net46.app`, `uwp.10.0.app`, etc. This section should be populated automatically when you select an entry in the Portable Class Library targets dialog. @@ -125,7 +125,7 @@ This section should be populated automatically when you select an entry in the P ## Imports -Imports are designed to allow packages that use the dotnet TxM to operate with packages that don't declare a dotnet TxM. If your project is using the dotnet TxM then all the packages you depend on must also have a dotnet TxM, unless you add the following to your `project.json` in order to allow non dotnet platforms to be compatible with dotnet. If you are using the dotnet TxM then the PCL project system will add the appropriate imports statement based on the supported targets. +Imports are designed to allow packages that use the `dotnet` TxM to operate with packages that don't declare a dotnet TxM. If your project is using the `dotnet` TxM then all the packages you depend on must also have a `dotnet` TxM, unless you add the following to your `project.json` to allow non `dotnet` platforms to be compatible with `dotnet`: ```json "frameworks": { @@ -133,24 +133,23 @@ Imports are designed to allow packages that use the dotnet TxM to operate with p } ``` +If you are using the `dotnet` TxM then the PCL project system adds the appropriate `imports` statement based on the supported targets. ## Differences from portable apps and web projects -The `project.json` file used by NuGet is a subset of that found in ASP.NET Core projects. In ASP.NET Core the `project.json` file is used for project metadata, compilation information, and dependencies. When used in other project systems those three things are split into separate files so the `project.json` specifies less information. Notable differences include: - -There can only be one framework in the frameworks section +The `project.json` file used by NuGet is a subset of that found in ASP.NET Core projects. In ASP.NET Core `project.json` is used for project metadata, compilation information, and dependencies. When used in other project systems, those three things are split into separate files and `project.json` contains less information. Notable differences include: -The framework should be empty, as shown above. No dependencies, compilation options, etc. that you can see in DNX `project.json` files. Given that there can only be a single framework it doesn't make sense to enter framework specific dependencies. +- There can only be one framework in the `frameworks` section. -Compilation is handled by MSBuild so compilation options, preprocessor defines, etc. are all part of the MSBuild project file and not your `project.json`. +- The file cannot contain dependencies, compilation options, etc. that you see in DNX `project.json` files. Given that there can only be a single framework it doesn't make sense to enter framework-specific dependencies. -In NuGet 3 unlike in ASP.NET Core projects the user is not expected to manually edit the file, the UI is responsible for manipulating the content. we're working on unifying the experiences across the project systems for `project.json`, its not unified yet for this release. +- Compilation is handled by MSBuild so compilation options, preprocessor defines, etc. are all part of the MSBuild project file and not `project.json`. -Note that it is possible to edit the file, the user is responsible to build the project to kick off a package restore. +In NuGet 3+, developers are not expected to manually edit the `project.json`, as the Package Manager UI in Visual Studio manipulates the content. That said, you can certainly edit the file, but you must build the project to start a package restore or invoke restore in another way. See [Package restore](../Consume-Packages/Package-Restore.md). ## project.lock.json The `project.lock.json` file is generated in the process of restoring the NuGet packages in projects that use `project.json`. It holds a snapshot of all the information that is generated as NuGet walks the graph of packages and includes the version, contents, and dependencies of all the packages in your project. The build system uses this to choose packages from a global location that are relevant when building the project instead of depending on a local packages folder in the project itself. This results in faster build performance because it's necessary to read only `project.lock.json` instead of many separate `.nuspec` files. -The `project.lock.json` is automatically generated on package restore, so it can be omitted from source control by adding it to `.gitignore` and `.tfignore` files. However, if you include it in source control, the change history will show changes in dependencies resolved over time. +`project.lock.json` is automatically generated on package restore, so it can be omitted from source control by adding it to `.gitignore` and `.tfignore` files (see [Packages and source control](../Consume-Packages/Packages-and-Source-Control.md). However, if you include it in source control, the change history shows changes in dependencies resolved over time. From cc5cb8f13c5552d9ea854a26b95be63887dfb39b Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 26 Jul 2017 16:17:43 -0700 Subject: [PATCH 0085/2943] Overhaul work, clarifying various parts --- docs/Create-Packages/Creating-a-Package.md | 80 ++++++++++++------- docs/Create-Packages/Overview-and-Workflow.md | 24 +++--- 2 files changed, 65 insertions(+), 39 deletions(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 6f00a64c5..7384a1cca 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -31,10 +31,9 @@ ms.reviewer: No matter what your package does or what code it contains, NuGet is how you package that functionality into a component that can be shared with and used by any number of other developers. -This topic is a reference for different aspects of creating a package. For a focused walkthrough, refer to [Create and Publish a Package Quickstart](../quickstart/create-and-publish-a-package.md). +The packaging process begins with the compiled code (assemblies), symbols, and/or other files that you want to deliver as a package (see [Overview and workflow](Overview-and-Workflow.md). That is, creating a package is an independent process from compiling or otherwise generating the files that go into the package. That said, the packaging process can can use information in a project file, helping you keep compiled assemblies and packages containing those assemblies in sync. -> [!Note] -> This topic applies to project types other than .NET Core projects using Visual Studio 2017 and NuGet 4.0+. In those .NET Core projects, NuGet uses information in the `.csproj` file directly. For details, see [Create .NET Standard Packages with Visual Studio 2017](../guides/create-net-standard-packages-vs2017.md) and [NuGet pack and restore as MSBuild targets](../schema/msbuild-targets.md). +This topic describes the detailed process of creating a package and serves as a reference for different aspects of that process. For a focused walkthrough, refer to [Create and Publish a Package Quickstart](../quickstart/create-and-publish-a-package.md). In this topic: @@ -52,18 +51,26 @@ In this topic: After these core steps, you can incorporate a variety of other features as described elsewhere in this documentation. See [Next steps](#next-steps) below. +> [!Note] +> This topic applies to project types other than .NET Core projects using Visual Studio 2017 and NuGet 4.0+. In those .NET Core projects, NuGet uses information in the `.csproj` file directly. For details, see [Create .NET Standard Packages with Visual Studio 2017](../guides/create-net-standard-packages-vs2017.md) and [NuGet pack and restore as MSBuild targets](../schema/msbuild-targets.md). + ## Deciding which assemblies to package -In general, it's best to have one NuGet package per assembly, provided that each assembly is independently useful. For example, if you have a `Utilities.dll` that depends on `Parser.dll`, and `Parser.dll` is useful on its own, then create one package for each. +Most general-purpose packages contain one or more assemblies that other developers can use in their own projects. -However, if your package contains assemblies that are used exclusively by your package, then it's fine to include them. For example, if `Utilities.dll` depends on `Utilities.resources.dll`, where the latter is not useful on its own, then put both in the same package. +In general, it's best to have one assembly per NuGet package, provided that each assembly is independently useful. For example, if you have a `Utilities.dll` that depends on `Parser.dll`, and `Parser.dll` is useful on its own, then create one package for each. Doing so allows developers to use `Parser.dll` independently of `Utilities.dll`. -> [!Note] -> When a package is installed into a project, NuGet automatically adds assembly references to the package's DLLs, *excluding* those that are named `.resources.dll` because they are assumed to be localized satellite assemblies (see [Creating localized packages](creating-localized-packages.md)). For this reason, avoid using `.resources.dll` for files that otherwise contain essential package code. +However, if your library is composed of multiple assemblies that aren't independently useful, then it's fine to combine them into one package. Using the previous example, if `Parser.dll` contains code that's used only by `Utilities.dll`, then it's fine to keep `Parser.dll` in the same package. + +Similarly, if `Utilities.dll` depends on `Utilities.resources.dll`, where again the latter is not useful on its own, then put both in the same package. + +Resources are, in fact, a special case. When a package is installed into a project, NuGet automatically adds assembly references to the package's DLLs, *excluding* those that are named `.resources.dll` because they are assumed to be localized satellite assemblies (see [Creating localized packages](creating-localized-packages.md)). For this reason, avoid using `.resources.dll` for files that otherwise contain essential package code. ## The role and structure of the .nuspec file -The process of creating a package always begins with creating a `.nuspec` package manifest, an XML file that describes your package contents. This manifest drives the creation of the package as well as its usage when installed into a project. +Once you know what files you want to package, the next step is creating a `.nuspec` package manifest. The manifest is an XML file that describes the package's contents and is itself included in the package. The manifest both drives the creation of the package and instructs NuGet on how to install the package into a project. The manifest, for example, identifies other package dependencies such that NuGet can also install those dependencies when the main package is installed. + +The manifest contains both required an optional properties as described below. For exact details, including other properties not mentioned here, see the [.nuspec reference](../schema/nuspec.md). Required properties: - The package identifier, which must be unique across the gallery that hosts the package. @@ -81,9 +88,7 @@ Common optional properties: - Lists of dependencies and references - Tags that assist in gallery searches -For more information on all properties, see the [.nuspec reference](../schema/nuspec.md). - -Here's typical (but fictitious) `.nuspec` file, with annotation comments: +The following is a typical (but fictitious) `.nuspec` file, with comments describing the properties: ```xml @@ -139,9 +144,9 @@ Here's typical (but fictitious) `.nuspec` file, with annotation comments: ``` -For details on declaring dependencies and specifying version numbers, see [Dependencies](../create-packages/dependency-versions.md). +For details on declaring dependencies and specifying version numbers, see [Dependency versions](../create-packages/dependency-versions.md). -Because the manifest is always included in a package, you can find any number of additional examples by examining existing packages. A good source is the global package cache on your machine, the location of which is returned by the following command: +Because the manifest is included in the package created from it, you can find any number of additional examples by examining existing packages. A good source is the global package cache on your machine, the location of which is returned by the following command: ``` nuget locals -list global-packages @@ -154,19 +159,18 @@ Go into any *package\version* folder, copy the `.nupkg` file to a `.zip` file, t ## Creating the .nuspec file -You can create a `.nuspec` file in a variety of ways: -- Use a text editor to create the file from scratch. -- Create a copy of an existing manifest and edit as desired. -- Use the [nuget spec](../Tools/nuget-exe-CLI-Reference.md#spec) command to create a template manifest. +Creating a complete manifest typically begins with a basic `.nuspec` file, which you then edit by hand into its final form so that it describes the package contains the content you want. + +The best way to create an initial `.nuspec` file is by using the [nuget spec](../Tools/nuget-exe-CLI-Reference.md#spec) command to create a template manifest. This ensures that you start with the proper file structure. You can also start with a manifest from another package and modify it to suit your needs. -With `nuget spec`, you can create a new file with default values, or you can create a file using information in an existing assembly DLL, a Visual Studio project, or a convention-based working directory as explained in the following sections. +With `nuget spec`, you can create a new file with default values, or you can create a file using information in an existing assembly DLL, a project file, or a convention-based working directory as explained in the following sections. > [!Important] > Generated `.nuspec` files contain placeholders that must be modified before creating the package with the `nuget pack` command. That command fails if the `.nuspec` contains any placeholders. ### New file with default values -The following command creates a default manifest: +The following command creates a default manifest with placeholders: ``` nuget spec [] @@ -182,6 +186,8 @@ If you have an assembly DLL, generate a `.nuspec` file from the metadata in the nuget spec .dll ``` +Using this form of the command replaces a few placeholders in the manifest with specific values from the assembly. For example, the `` property is set to the assembly name, and `` is set to the assembly version. Other properties in the manifest, however, don't have matching values in the assembly and thus still contain placeholders. + ### From a Visual Studio project Using `nuget spec` in a folder containing a project file creates a `.nuspec` using that project information: @@ -191,15 +197,17 @@ Using `nuget spec` in a folder containing a project file creates a `.nuspec` usi nuget spec ``` -The resulting `.nuspec` file contains tokens that are be replaced at packaging time with values from the project, including references to any other packages that have already been installed. +The resulting `.nuspec` file contains *tokens* that are replaced at packaging time with values from the project, including references to any other packages that have already been installed. -Tokens relieve you from needing to update crucial values like the version number in the `.nuspec` as you update the project. (You can always replace the tokens with literal values, if desired). For example, the `` value typically appears as follows: +A token is delimited by `$` symbols on both sides of the project property. For example, the `` value in a manifest generated in this way typically appears as follows: ```xml $id$ ``` -The token is be replaced with the `AssemblyName` value from the project file at packing time. For the exact mapping of project values to `.nuspec` tokens, see the [Replacement Tokens reference](../schema/nuspec.md#replacement-tokens). +This token is replaced with the `AssemblyName` value from the project file at packing time. For the exact mapping of project values to `.nuspec` tokens, see the [Replacement Tokens reference](../schema/nuspec.md#replacement-tokens). + +Tokens relieve you from needing to update crucial values like the version number in the `.nuspec` as you update the project. (You can always replace the tokens with literal values, if desired). Note that there are several additional packaging options available when working from a Visual Studio project, as described in the [Creating the package](#creating-the-package) section later on. @@ -213,20 +221,29 @@ NuGet tracks installed solution-level packages in a `packages.config` file in th ### From a convention-based working directory -In addition to assemblies and simple files like a readme, some packages may contain the following: +Technically speaking, a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension and whose contents match certain conventions. The package's assembly DLLs, for instance, are always placed in a `lib` folder. + +The practical upshot of this is that you can simply create a folder structure that follows the expected conventions and contains all the files you want to include in the package *excluding any folders that begin with `.`*. You then generate a manifest directly from that folder tree. When you create the package using that manifest, NuGet automatically adds all the files in the folder structure. + +An advantage to this approach is that you don't need to edit the manifest to specifically identify which files you want to include in the package (as explained later in this topic). That is, when creating a manifest and package from the contents of a project tree, NuGet includes only the files that you specify in the manifest. Otherwise you'd risk including temporary build files, project files, `.gitignore` files, and so forth. + +When using a convention-based working directory, on the other hand, NuGet assumes that everything in the folder structure is exactly what you want in the final package (again excluding folders starting with `.`). You don't need to specifically reference any files in the manifest. + +Such a folder structure also allows you to easily include files that might not be part of a project at all, including: - Content and source code that should be injected into the target project. - PowerShell scripts (packages used in NuGet 2.x can include installation scripts as well, which is not supported in NuGet 3.x and later). - Transformations to existing configuration and source code files in a project. -To include all these files in a package, first lay out a folder structure using the following conventions: +The folder conventions are as follows: -| Folder | Description| Action upon package install | +| Folder | Description | Action upon package install | | --- | --- | --- | -| tools | Powershell scripts and programs accessible from the Package Manager Console | Contents are copied to the project folder, and the `tools` folder is added to the PATH environment variable.| +| (root) | Location for readme.txt | Visual Studio displays a readme.txt file in the package root when the package is installed. | | lib | Assembly files (`.dll`), documentation (`.xml`) files, and symbol (`.pdb`) files | Assemblies are added as references; `.xml` and `.pdb` copied into project folders. | | content | Arbitrary files | Contents are copied to the project root | -| build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (NuGet 2.x) or `project.lock.json` (NuGet 3.x). | +| build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (NuGet 2.x) or `project.lock.json` (NuGet 3.x+). | +| tools | Powershell scripts and programs accessible from the Package Manager Console | Contents are copied to the project folder, and the `tools` folder is added to the PATH environment variable.| Think of the **content** folder as the root of the target application. To have the package add an image in the application's */images* folder, place it in the package's *content/images* folder. @@ -236,7 +253,7 @@ Next, from the root folder of this layout, run the following command to create t nuget spec ``` -In this case, the `.nuspec` contains no explicit references to the folder structure, but the files are be automatically included when the package is created. +In this case, the `.nuspec` contains no explicit references to files in the folder structure. Again, NuGet automatically includes all files when the package is created. ## Choosing a unique package identifier and setting the version number @@ -319,7 +336,10 @@ To directly specify files to include in the package, use the `` node in t ``` -When you include a file named `readme.txt` in the package, Visual Studio displays the contents of that file as plain text immediately after installing the package directly. (Readme files are not displayed for packages installed as dependencies). For example, here's how the readme for the HtmlAgilityPack package appears: +> [!Tip] +> When using the convention-based working directory approach, you can place the readme.txt in the package root and other content in the `content` folder. No `` elements are necessary in the manifest. + +When you include a file named `readme.txt` in the package root, Visual Studio displays the contents of that file as plain text immediately after installing the package directly. (Readme files are not displayed for packages installed as dependencies). For example, here's how the readme for the HtmlAgilityPack package appears: ![The display of a readme file for a NuGet package upon installation](media/Create_01-ShowReadme.png) @@ -365,7 +385,7 @@ With NuGet 3.x, targets are not added to the project but are instead made availa ## Creating the package -When using an assembly or the convention-based working directory, create a package by running `nuget pack` with your `.nuspec` file, replacing `` with your specific project: +When using an assembly or the convention-based working directory, create a package by running `nuget pack` with your `.nuspec` file, replacing `` with your specific filename: ``` nuget pack .nuspec diff --git a/docs/Create-Packages/Overview-and-Workflow.md b/docs/Create-Packages/Overview-and-Workflow.md index 5eb2328e7..bb060927e 100644 --- a/docs/Create-Packages/Overview-and-Workflow.md +++ b/docs/Create-Packages/Overview-and-Workflow.md @@ -5,7 +5,7 @@ title: Overview and workflow of creating NuGet packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 7/26/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -29,25 +29,31 @@ ms.reviewer: --- # Package creation workflow -Creating a package starts with the code you want to package and share with others, either through the public nuget.org gallery or a private gallery within your organization. The package can also include additional files such as a readme that is displayed when the package is installed, and can include transformations to certain project files. +Creating a package starts with the compiled code (typically .NET assemblies) that you want to package and share with others, either through the public nuget.org gallery or a private gallery within your organization. The package can also include additional files such as a readme that is displayed when the package is installed, and can include transformations to certain project files. -A package can also serve only to pull in a number of other dependencies and not contain any code of its own, which is a convenient way to create a single package for an SDK that's composed of multiple independent packages. In other cases, a package may contain only symbol (`.pdb`) files to aid debugging. +A package can also serve to only pull in any number of other dependencies, without containing any code of its own. Such a package is a convenient way to deliver an SDK that's composed of multiple independent packages. In other cases, a package may contain only symbol (`.pdb`) files to aid debugging. > [!Note] -> When you create a package for use by other developers, it's important to understand that they will be taking a dependency on your work. As such, creating and publishing a package also implies a commitment to fixing bugs and making other updates, or at the very least making the package available as open source so others can help to maintain it. +> When you create a package for use by other developers, it's important to understand that they are taking a dependency on your work. As such, creating and publishing a package also implies a commitment to fixing bugs and making other updates, or at the very least making the package available as open source so others can help to maintain it. -To learn and understand the creation process, start with [Creating a package](../create-packages/creating-a-package.md) which will guide you through the core processes common to all packages. This includes deciding which assemblies to package, creating the `.nuspec` (manifest) file, choosing a package identity and version number, setting a package type, adding a readme, and including MSBuild props and targets. The topic ends with creating the package itself using the `nuget pack` command. +Whatever the case, creating a package begins with deciding which assemblies and other files to package. You then create a manifest file, referred to as a `.nuspec` file, to describe the package's contents along with its identifer, version number, copyright information, MSBuild props and targets, and much more. + +When you've prepared all the necessary files in the appropriate folders and have created the appropriate `.nuspec` file, you then use the `nuget pack` command (or the[MSBuild pack target](../Schema/msbuild-targets.md)) to put everything together into a `.nupkg` file. You're then ready to deploy the package to whatever host makes it available to other developers. + +> [!Tip] +> A NuGet package with the `.nupkg` extension is simple a ZIP file. To easily examine any package's contents, change the extension to `.zip` and expand its contents as usual. Just be sure to change the extension back to `.nupkg` before attempting to upload it to a host. + +To learn and understand the creation process, start with [Creating a package](../create-packages/creating-a-package.md) which guides you through the core processes common to all packages. From there, you can consider a number of other options for your package: -- [Dependency Versions](../create-packages/dependency-versions.md) discusses how to identify the exact versions that you allow for your dependencies (other packages that you consume from your package). - [Supporting Multiple Target Frameworks](../create-packages/supporting-multiple-target-frameworks.md) describes how to create a package with multiple variants for different .NET Frameworks. -- [Source and Config File Transformations](../create-packages/source-and-config-file-transformations.md) describes how you can do both one-way token replacements in files that are added to a project, and modify `web.config` and `app.config` with settings that are also backed out when the package is uninstalled. - [Creating Localized Packages](../create-packages/creating-localized-packages.md) describes how to structure a package with multiple language resources and how to use separate localized satellite packages. - [Pre-release Packages](../create-packages/prerelease-packages.md) demonstrates how to release alpha, beta, and rc packages to those customers who are interested. -- [Native Packages](../create-packages/native-packages.md) describes the process for creating a package for C++ consumers. +- [Source and Config File Transformations](../create-packages/source-and-config-file-transformations.md) describes how you can do both one-way token replacements in files that are added to a project, and modify `web.config` and `app.config` with settings that are also backed out when the package is uninstalled. - [Symbol Packages](../create-packages/symbol-packages.md) offers guidance for supplying symbols for your library that allow consumers to step into your code while debugging. - +- [Dependency Versions](../create-packages/dependency-versions.md) discusses how to identify the exact versions that you allow for your dependencies (other packages that you consume from your package). +- [Native Packages](../create-packages/native-packages.md) describes the process for creating a package for C++ consumers. When you're then ready to publish a package to nuget.org, follow the simple process in [Publish a package](../create-packages/publish-a-package.md). From 73580c685dd88aea7e9cfb97160b7a7928139a09 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 26 Jul 2017 16:46:58 -0700 Subject: [PATCH 0086/2943] Edits from a few comments --- docs/Schema/nuspec.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index f451117b3..c752d5429 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -118,7 +118,7 @@ These elements must appear within a `` element. ### Files element -The `` node may contain a `` and/or `` nodes as siblings to `` to specify which assembly and content files to include in the package. See [Including assembly files](#including-assembly-files) and [Including content files](#including-content-files) later in this topic for details. +The `` node may contain a `` or `` node as siblings to `` to specify which assembly and content files to include in the package. See [Including assembly files](#including-assembly-files) and [Including content files](#including-content-files) later in this topic for details. ## Replacement tokens @@ -320,7 +320,7 @@ Each `` element specifies the following attributes: | Attribute | Description | | --- | --- | | **src** | The location of the file or files to include, subject to exclusions specified by the `exclude` attribute. The path is relative to the `.nuspec` file unless an absolute path is specified. The wildcard character `*` is allowed, and the double wildcard `**` implies a recursive folder search. | -| **target** | The relative path to the folder within the package where the source files are placed, which must begin with `lib`, `content`, or `tools`. | +| **target** | The relative path to the folder within the package where the source files are placed, which must begin with `lib`, `content`, `build`, or `tools`. See [Creating a .nuspec from a convention-based working directory](../Create-Packages/Creating-a-Package.md#from-a-convention-based-working-directory). | | **exclude** | A semicolon-delimited list of files or file patterns to exclude from the `src` location. The wildcard character `*` is allowed, and the double wildcard `**` implies a recursive folder search. | ### Examples @@ -398,7 +398,7 @@ Content files are immutable files that a package needs to include in a project. Content files are included in a package using the `` element, specifying the `content` folder in the `target` attribute. However, such files are ignored when the package is installed in a project using the `project.json` system in NuGet 3.3+ or PackageReference in NuGet 4+, which instead uses the `` element. -For maximum compatibility with consuming projects, a package ideally specifies content files in both locations. +For maximum compatibility with consuming projects, a package ideally specifies the content files in both elements. ### Using the files element for content files From ff3d3a3f44497d3a8224514ce0fcefd8d68b72bc Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 27 Jul 2017 10:35:47 -0700 Subject: [PATCH 0087/2943] Updating image and refernece format section --- docs/What-is-NuGet.md | 16 ++++++++-------- docs/media/dependency-graph.png | Bin 45877 -> 16970 bytes docs/media/nuget-restore.png | Bin 46192 -> 17499 bytes docs/media/nuget-roles.png | Bin 77849 -> 18753 bytes 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index 7a9ebcd95..a6cebf332 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -5,7 +5,7 @@ title: What is NuGet and what does it do? | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/12/2017 +ms.date: 7/27/2017 ms.topic: hero-article ms.prod: nuget #ms.service: @@ -28,7 +28,7 @@ ms.reviewer: --- -# A simple introduction to NuGet +# An introduction to NuGet An essential tool for any modern development platform is a mechanism through which developers can create, share, and consume useful libraries and packages. For .NET, that mechanism is **NuGet**, which defines how packages for .NET are created, hosted, and consumed, and provides the tools for each of those roles. @@ -67,7 +67,7 @@ The following image shows a project that depends on five packages, which in turn ![An example NuGet dependency graph for a .NET project](media/dependency-graph.png) -Notice that some packages appear multiple times in the dependency graph. For example, there are four different consumers of package B, and each consumer might also specify a different version for that package (not shown). Because this is a common occurrence, NuGet fortunately does all the hard work to determine exactly which version of package B will satisfy all its consumers. NuGet then does the same for all other packages, no matter how deep the dependency graph becomes. +Notice that some packages appear multiple times in the dependency graph. For example, there are four different consumers of package B, and each consumer might also specify a different version for that package (not shown). Because this is a common occurrence, NuGet fortunately does all the hard work to determine exactly which version of package B satisfies all its consumers. NuGet then does the same for all other packages, no matter how deep the dependency graph becomes. For more details on how NuGet performs this service, see [Dependency resolution](./Consume-Packages/Dependency-Resolution.md). @@ -88,18 +88,18 @@ Clearly, then, NuGet's primarily role where developers are concerned is maintain How this exactly happens has evolved over the different versions of NuGet, resulting in several *package management formats*, as they're called: - [`packages.config`](../schema/packages.config.md): *(NuGet 1.0+)* An XML file that maintains a flat list of all dependencies in the project, including the dependencies of other installed packages. -- [`project.json`](../schema/project-json.md): *(NuGet 3.0+)* A JSON file that maintains a list of the project's dependencies with an overall package graph in an associated file, `project.lock.json`. This structure provides improved performance over `packages.config` as described on [Dependency Resolution](../consume-packages/dependency-resolution.md), but also has been generally superceded by PackageReference below. +- [`project.json`](../schema/project-json.md): *(NuGet 3.0+)* A JSON file that maintains a list of the project's dependencies with an overall package graph in an associated file, `project.lock.json`. This structure provides improved performance over `packages.config` as described on [Dependency Resolution](../consume-packages/dependency-resolution.md), including transitive restore, but has itself been generally superceded by PackageReference below. - [Package references in project files](../consume-packages/package-references-in-project-files.md) (also known as "PackageReference") | *(NuGet 4.0+)* Maintains a list of a project's top-level dependencies directly within the project file, so no separate file is needed. An associated file, `project.assets.json`, is dynamically generated like `project.lock.json` to manage the overall dependency graph. -Which package management format is employed in any given project depends on the project type and the available version of NuGet. To check what format is being used, simply look for `packages.config` or `project.json` in the project root after installing your first package. If you don't see either file, look in the project file directly for a <PackageReference>element. This is the case for most new projects created in Visual Studio 2017. (You can change this default in Visual Studio through **Tools > Options > NuGet Package Manager** in the **Package Management** settings. +Which package management format is employed in any given project depends on the project type, and the available version of NuGet and Visual Studio. To check what format is being used, simply look for `packages.config` or `project.json` in the project root after installing your first package. If you don't see either file, look in the project file directly for a <PackageReference>element. -You can also switch from one format to another. NuGet literally doesn't care which method you use, so long as you have the appropriate version of [NuGet installed](../guides/install-nuget.md). Older projects that use `packages.config` can be converted to use either `project.json` or PackageReference, and projects using `project.json` can also be converted to use PackageReference. For each package, simply create the appropriate reference element in the new file using the same package identifier and version number shown in the older file. When it comes time to restore or update packages, NuGet will find whatever method you're using. +In Visual Studio 2017, for example, most project types use `packages.config` except for UWP C# and .NET Core projects in Visual Studio 2017 use PackageReference. ## What else does NuGet do? -So far we've seen a number of NuGet's capabilities and services. In its hosting role, NuGet provides the central nuget.org repository and supports private hosting. NuGet provides the tools developers need for creating, publishing, and consuming packages. And most importantly, NuGet maintains a reference list of packages used in a project and the ability to restore and update those packages from that list. +To summarize what we've covered so far, NuGet provides (in its hosting role) the central nuget.org repository and supports private hosting. NuGet provides the tools developers need for creating, publishing, and consuming packages. And most importantly, NuGet maintains a reference list of packages used in a project and the ability to restore and update those packages from that list. -To make these processes work efficiently, NuGet does some behind-the-scenes optimizations. Most notably, NuGet manages both machine-wide and project-specific package caches to shortcut installation and reinstallation. Where the machine-wide cache is concerned, any package that you download and install in a project is stored in the cache, such that installing the same package in another project doesn't have to download it again. This is clearly very helpful when you're frequently restoring a larger number of packages, as on a build server. For more details on the mechanism and how to work with it, see [Managing the NuGet cache](../consume-packages/managing-the-nuget-cache.md). +To make these processes work efficiently, NuGet does some behind-the-scenes optimizations. Most notably, NuGet manages both computer-wide and project-specific package caches to shortcut installation and reinstallation. Where the computer-wide cache is concerned, any package that you download and install in a project is stored in the cache, such that installing the same package in another project doesn't have to download it again. This is clearly very helpful when you're frequently restoring a larger number of packages, as on a build server. For more details on the mechanism and how to work with it, see [Managing the NuGet cache](../consume-packages/managing-the-nuget-cache.md). Within an individual project, NuGet does a lot of work to manage the overall dependency graph. (When using `project.json` or <PackageReference>, NuGet keeps that information in a secondary file called `project.lock.json` and `project.assets.json`, respectively.) This again includes resolving multiple references to different versions of the same package. diff --git a/docs/media/dependency-graph.png b/docs/media/dependency-graph.png index 1312332a6df2f38449a2bcc82195e49f06e8ae03..143ecee8dec81b5ef0ef14fb89480f0b10f8041c 100644 GIT binary patch literal 16970 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 literal 45877 zcmY(q1yohv7cIOmEgd2q(nvQ*Dku#i-QC?Nby1WOkuCuhkZzEME1eS3UDAzoeFuO4 z_r3APK=9sk&d#;wnrp6o!d|Gz;$V_v0swI2AC|zf`9i9Mrukh4Sh-G@l3}<-Py{++tkexxR}~Hd2l*edeHK7 za&z+V@gwWM2B5rLUgn90kI{A-s^5KCiVjy>)^|@EM_4_tH+L^azrI^~87@t`yIWgR zFPiYh)tivkC+OwO?BZqm?4&*?1xBLcu9NiK+UeEQWb)+Q zuVld||eY70I%bfc# zxC~wN<2($&Ko~Y6&qx9cYTb_8HX_iY(r!-|CLMiMgm#71nshK{mOsY& zoOsiSMF_)fT>floK79PCl1UsHc%LDLjtUC!YM7mVM9tZdH2##Zd+TqJDQ%Id{uj;q z?&%L}vkzkeuQCN`aVMTRx+u?l*8H(Ic!1Rg+mUw$HGY5Wb`mmw9i%eVk0qlN;>gVs z*8knBDcm{GohGWNX6BfVZuqRkFANOOFJ=gS`B970CijDQ`UhUwC zCw7t>Fu?rFpm4^e?Qz4}0&}@pivL4=Swv6aNKY=!_k)RZIZ2f%wwr^ZjE>(t)$#0gL05+*@g=@|aMDw| zR1b8}@KdD2k$2w_qjv@~U(ty>S&6B7J9wLl0IT}p`-x5mVb7Bod|f%mPn^KzPtR!N z?Pq>mJ!|4R2_F5|>d;tp{gIKq2qMt}a8kX}o;nbG!HMaOIn0jHoO$3rFw17{}k@o8jcRL)K4HV6X(EQcn+t zsKrX8G8fW)SFC8`RnTR@TRZDW(lp0p*E)HW_>NTOr7Cn!c+d6w0GxYQG@i7v$GaoM zqCH!9W6olA!p@0Vp?>zHLmm7!JBK~~e>J5FMs9%ctCJYRzULR~#!)IpP3AiZ=4-!< zI|?S|Z_^cwtJGh@I1SywbT)nGKxTQ8u7U5uc5Uw(mqDjZQK?nnR8N}lvzH!*+C`$D zE4QcqXf(d+yyu}*b=duz1dmcgTPyIz%ZkQ^e20N|5!%HDwROiCu`%Dg_%HQd#>kH) z(?4)>51aRRbE73=4-F-E&S&JYgTKMp{5=G(E{%$AnfZ9r?`Ns z*ih~7oV2xTPke#)fH8it+XnAA2GU<>iUvvbiZ7dYj5M1_3|klhkXQ2+skafzeXpod zD9*r2x7FdQJI(QQOw&R5X*1cErYSPu^S=M-7;27l^bAEgXAvgA5cLmcmQQ;C;5xdE zH~T%q;`v5ubvr$uK1Yu@*AE?CjlW-&m`J?Wz-So50hqSWayb!}GA@_-tlK6nhrf_0Wd?U+l zsiNED?m20su^?e=rx(1)#WvNi;QBbF$Hwb1pB*RHT&()9(cnaqz2_BO#z_@yIcCPA zb*4r&LLg<@?79>IVx9=SbP*i^EE9*U$5IJR-`9Au{0Ie?;E#~wnuPIG)t=I;>z}dKoaFsw?*^%)5m>PVcEZeRm>_7U8s$TVL=ruJfxvV-m?omzw zH`?a~SQq8!e{gXGI?tUVmF-ihUk41D7pziRkz?Q8e-b&-)y zGG-N{8UKa8=w*_LX6Xno1X|hZQiGvS;!_yX_0Td2{wW@f=s?r;+|3^A;8KQv&JgT< z&@waE7gnF6UqpF+lHHGgc&=YS!05syC!|>q0|my>b)(F->V9MM7T1qooqGi{%-ly2 zrsV9I_DsLkbGTh}XJzv$ee9_K7&xYXxh-H)gG4UlA{*i0#-i}sXHxeI^6I`HaNDDk z#NVIoq5}_BZ|JRM4UJ>Vg@msjA^Nd$}fusVxwzzPhzna>67&t-bppQs7e*J&EJ7+>}x?{+EwaI3PsTz$J7Nzt$#o#p;vi-YSsOuU($# z#_AIBKNM=myexxtb!;B?XdwjTG~w6<%p!ODl*zOQT%Uf&WHKsc68uH z+(@PC_B<4xqrRClb28+v@RhLq3E08P){mP$S_ME*r(reFA)`LQ=Dy)l#6(2bq1j>y z4#}unh!8JKO5&qlL%)dA^2304pY*iqVJ3Tv?q1Q6LjW<{+y(gCqpM#%F!~mFC;$+o|wx zDc8BWzXtBP)!_ZqD5i5I0{m=@Tf?DGL!bHL4xJ)|w4rf!Ht`8AM)E}50~g-z0Ab7K zO}!AvzciAp7+Ucf9n=N&5^L>sJ{PSvqd~IiIi$)Tg{jiD;b3mLI$m{a(4yq)u0)QMGhK;OnTVvX`r?Hw1@TEi(=7(?H-#kg7=ZgSdhm#Z(|IOI^T%n-M1&3xW5ln}pU!9_L1QBV7M2xXswmFerR{Wgu;9lr z(^6v*`T+3_TA|aH2|Q7+7vPIc>pUfb(|9$&s#1PvxLIg#CBPs18J4?uS>Gzq`P{s9 z|8_5Ad&>K{CtC5=Z|j=s$kkGL!&>^Br%5aZZ~Tvxz^At`IF9H&AVdQD((1dG{u?46 zliuqNZ+Jgd0TBG_qF;70;Xxe%z#o61ZU*__F%s~JKa}-X`P@`fxnNut>r-KBym(V_ zTB%bj0?s;W=aCVkSh~!$~3eo+0hOh4vOg-}F%2Hk}Yjw0okfq}NvZpR#IM z%inM+A?3RoE3#~ba(wc1K!T^x0S})FRcczEICn7N>kkmU;occb)s=&uFt}XEI{Wz~ zX-&-uI2kvywDO06O8W_qzjOnj59o>dZHq-5LOiH_U-PmR1`k{&fB~-VTkrX=?%S%O zpPPM>BM;8HBOD~~s6@HO43duUaMcLnRnwb7|AwiPxDv0xaSByPs?u+BSGjHE{)O1nkFE1MW&PS|u(UYh67)^O>UJBtFk)5Qz?jGo-hA-Pb zq?bG*x{<+~f3i#RJ}RvSK9tQq|5cB#K>Tpe)AuxPahnetdGRy4JRo zeazJZzgb-4@tP%N3Ur?d9UWzUEH}AL_C^>m(db~!=Rk~8vHG-XF5A;Z`!r&Or7b?P zs5VpS+JX9jcJq_7e~HG8!He1V^f7dY9JbJxcE+GE!mvD2DIrWv zvFG+x1|w=cgJ)ND7PRK!K&r{IvC?FGqatx)uL%Zb_TC8;NH;MmgBR*3;E-dhQd3lL zN4N|^GQ&$1?Gnk)pN^}ukj}LPU{cCeYybiW_POU!#&A)^3X>8i09_V`MOOa}t9wPi z9|Z_J1GKT-)hYk=#uV!;Kmvih04REpElnhheQd) zLCt0O32ZKQrr%S_ja{+tj!sTBm1nAr6nqGBnUSPKecykbcdVWr`h!+yzkf|Yre})C zaDN4^Ebj&xNW~YpU|58LpaKXa`6le^18sVmfWNl0K#D;3VoE>bcCCnu;e16f1$_CA z0d^erx_FTbLTgta?&r!sFs%3VJ<0aAB0Vpol%7t?eW%ZuQwhQOj-??ILY(1t?vjSe zZ$LW6&yC`4Lw0b1j8M6We#x`hI?uqp-^Nd0jwyss%?AGR)JBrh%fexUm1@KU(x(cy zvB79LVp8KlZv2XUs~VONI%9DVBQ%UDhA%h2Djbp0X-&b_K@Y|C6+*MtXRJBYV*BS_C8VTZ|lWqQ!+wIL8L=mmP zJS5Ifkz7l*Q~G#@A=d!)IqQ!_8%lMHKj}fe0_dRljTbh1>mbr&_GBT^b~AqJ_}WSO zIQvcn@5~f^>@DuO9u?`^cK&au>YXyrWO#b9747-mRm!~v@C$y{R7Q3_9SK&u9~bH! z&6K^)T>K`Y4y7=>Ya&-q!RpRPp(N!#wL|%EKEUVOX-I6k>c~OftqbvIbMb8!rSUy% zZ(e2FXQ;r8U8^~+H%F9Yu1Q`liTaql!lXD z^w}e$&z=s_x9-;NEk5y<-2Z9aicDyy_P2i^@ML?`cZ9*cjQ6V5na@=Og)6Huvq$3k zBC3ARe|^_CMC|a)-QRiZbmeymZKy2gOv|I&7Gz*<8bbJ%aWCMC=+T!Wao>}G{l%}& z{`=RC)u*?f+elil9ohv6o^8ty_jfW^7ksHN{-zGy90(M?$(-l)SdA^Y^|{QX;YMjn zGr|-5+qN!Q^b=@xGS@9FbIE=SITb%UYmJhezWr67?z3r$9}&MqNaH85RCIcK`3H~4 z)$Ej7d=P`lv@c_9u_y06K{-vpHW~k1mHqe)GFs!`j3}dk>)#KfB>I^!aaEkowx@aC z?!CfyKU-*3UF=wVRH1~_{$TEWJ!E&*S4m*sZ#_DPd!l%@ZdSyEo0DViZ)jhCjc62( zKfx)1Kf(f<1+ika$9>cE=qQSQyB5wTA|;K-=kOqJ^A|OAoTrCd8Nz3r=GoMy?}RCZ z*Nr}4@Oj-ztM*l36Ads%{KFkI#MABVt~ZY2uYlj7qRXLP!rSXrBGu+_x$9mUG^d}h zb|0cl`h8 z+%InVkq}&cm6d~iBV8{?JbuJdM$H^>y2T${Yy5mbHZNJ7aM-!wv}mFX5nNY~Hh=r~ z$eAwxxrGC@KsOSV)Rm@80xIL^w68TzlQ#xAw)_Jp9w=o8ED7b(n)Fh)Vs@NpHxRw8 zMJe_=G(I09X+B*aA|f~$=fTpUGB^!-s7lwNTlYQF-+*eoh4_~Dg-Q5}pF`ecEtYsF z*AG>H3F160Vfy8#^%=td_O~%)V?59K-zE8sf4RihRC~zl z-iw|Qxju)CymNi5s@~9|i0%08Ny_vd=>my*dtH$2hNKBM-Jypx&HQ>#xBCpiI?p*J zShCkmBUt`0gtWd+q90j6I@MvK^%MJ<3~K=Z`=-~pK#4%tZZ`&#(B#a$@2L)|^{wXH zJ%0>q<@BBR#pILiZ$fXWB*fVr-+D8k!%YVof7+S7NMieIy(u<;XcO44M4ek7SeuW; zl3%pCSyMaW{x;u1f&P`>wEt`am&p1t+W@069~7MkK;`->ICC#XPhaD@5tZQgY}DBq z5TS;!^YT3E75fPcU?kE69O%DziCh5xU6$B+Gcx2Y(rfFa3209u)6F8~ct)ijYVBil zJ?DM~H&1&q_@u_;Q2(bw4#)nJq|40^d5n1sP7D{W>os#37Oil!&MRAF3^JW(<)0q_ zASZU%<{ml{I>nCe_)P+h5y@ml#$BclRd7fxSzkxR#%>uIPyGA@eZC@j5e%*gqL@Vu zKGlNV?2b3%+vSk^e3e8nx3E0ri1=WJYJeL1fgc$p@w5)A7IJ&#bLb^Gl6T>DDpz!V zd9GTvH23I?(xI%Z=mBhjJkH&>877?(KpbjDyfEL9O8b1E`lDG0HdwH?33pMIRpITl z2srGw@jC0YU}JwPx%RqTdZOF;k3mFf=wD?*F!7qhljmO zO{8BE>YxChvAvJ5iQ|Z!Oy4^UqgNH9=`)XlEsP3Dnja@SHa;+aAsPAkZGv)Ij8pwJ zu8e9KDk+ydg4&Gd5g&l#=a)@)2|nO3Q6IpazgW10A@7x)=&)$PB`@5vFaZ92j8|tv z)*2;;zd9wq61*o%f+0HG2}FYlW}bvv8^2DZYPwim^PU%K(+-o?R0MF*i0hwQdwxZ) zYe|f*@pqOj35elJGe3Rz0{?bKyUX~*rl$Vm1$rLtfHrOcCg`a|xP_2VBR-YbUyoI7 zZlPQCgmM3#piwg!W>5T*bs;prY*x0O+yTq|f(hCNwdc;TkE1g;)5U$~PZ8!ui;TI; z6zT%&yXZ!~mx>NYLBW?aepf@x>DCmB=VQ^rBpe0l(*@r1(EZnz3-2&pumHDfXy*n! zb4u8>oemOw`tle(VDS4Uqs!04`Lnp4^%5-5p#SC1sU*e6>fl!oOee6+n@gsU#=DIg zWp8aGd$0kX2eDc^OA4A7mo zItM0)r*`?b&QzwfCF%4r8_B#l|Ly!dq9B6(-}K0UPN&5X9e5KnUjBKWIc1sZHZ|i0 zTX~vRE442W9X>%7U5gsB;$a>+eO0TSU@Xfhp`SPXUTn62}s5$cx^lU{%Co4Zd15A@@}-SIC!=nz~PvX&Ci z`dT}`3j6Yy`0jSq%vDpeKJF6|wi;JSA9A9ECN*MEny1b?2PAHt#PB(_nxb7V=%XY< ze*1r8gT!5PB=~DOU^CPYTOd+zzn$o&YF6b}mx-sBF`JJ>T(6XBi?xL7Pyt|lygrE~ z>am8P90-l6mbik6I5*zTBideT<orkhd=)R>HX!=_mIllC1q~l8#T7&7rF)GANIRMBBJUpfm zrb0f&=K5JPcl&qTsPVEi1If&D<|!ukJ@1)U<14khO=Y7s!BuNZ1I-ktYhqjvBFF&u z=GTF%&KX7=X;P6PN@PEiuGl0Z4Gd*Rzw23Nm-scK06bH20-~Chf<6cs-gKxvp#n8% zYm0(}(&f8~2nY#SwUa1|J$+KJBq5EDbU)Z(xGCC!+2aXCY%Zw_*f@2J6PX*l;Y z^PI_wZ=H0fAx@o`nAP`^RjX~=018x)cRBvMN4d$bc~$@5>cJ_Svoqw zhe4RbTu|(q@i}}t`H=X1lt7dHpubl*`@wxpbKe^%l+1ZurU{cYw)D0|H4oITHOU50 zHNrJRyC!&h8A!{bMuWIJ9!80YPxA{Sfv%a&1^Nb<3ANLn5WMPbO_*H29=tL05yVY9 zA@)uBkb-!y`{$_`iUKQL?<7=m`P|Yj`-kD*alx2!g}NyKYIvV@vRC7k&O_ zKZGVAwI4=XoS=!Jv-W zOYakcA#X$y({Qtu@%>9^B*`-!IV=aWp^rX~lP4!Kz?TFl>+^VF)@pFXEhEoU)4E;O zS?u-k)r44ti{d!;gHjn}fZ;`CCG7j2m}0V{p9inXMVVxIDDuN|d~cUOZ4`6j>p&HTkgF1=O2V9I+iTIi?enprb%fs*%Lh8zCKYy1EKcsqNGzpX z5_g7^$UI(8g^t?iUI#S_FNXDk#S#$)Wk^Wkhssp7k7q~?hi9cRTYd|cy+ngUQLRt1 z30ItC%J%VN(pJ}fT_+Rb?#E#)+ce%qvFm)lh^K?E%?fyoG~?c9JIeI6N5a);o{Z5~ zcC|euI5(p*KvfUItigO9X?No)V3rrTMz~@QH~Z+UBv2Pz&$J5Jq1(Ma*s2;)q&v;j z{<#UV6=Ik}z3`qnhSn~YTCAqmUwzg&s=oJCmrrMGw1VF;q(A$ocMt#zYXT5+rD6&F z_T$y1f|Lx6OQeMSyysf~ z+*b$;SO06paYgn&&Fbh&mFdQR4L~Upt1dDvzkep3f3)@M6fvrVCf#AvW2%(7_2hI; z+ZRkH3dSrOjs=u4OMgC(Lkih2; z8$`_Kc)7b=kpF(SZ1!l@Jm11PmQiv!Iod$>s)&HyOKka$X!#Dl8s%ie==eO zEf*Dpjy~wd%>C#wBHL&}eLieuxv)UUHvX4e-dX?8!r#{w?_#;1#U%VOsmN}X{w*Z; zc&0q^YV#i0lv@S4e8&8&1w3l+1qUvQ96@gRuXGk$btXYQ;iq@wrETou8ZfYxeo(z{$I>d`(I`_rkR^KV8n;1YR<5QJ{nv@9i#}bAy=b=9>f0{`2mT{=Y>!vl7kBXy8>CAA)tjicM=6+Za55% zJ*@{jNN}tE&G{X4xQ~3VTPY(<${sSCBvirR?~YEHZ->WptonrduHL=6Y1#Wga?65F z!ErN`gK+7t)46#VCS?4Wj=?cA>xg5Ts}aFq-r!~<*=u7H5fGa1VzvAR2IL2v?Veq{ zZ2hpfH28r1s$_-mqI~h&UaZ}9+t=irftbHn-%sRJ4L_apQB1vgCrQS6@x<+(|D?-M zAm3)|L=E@zL}-x*oHrLLUl(AT|1pdmuUL&2()Jqz@K2S`<=6CoJcMMwZhYWbtm~DG zL$E#9+nMM2GvHl^BMk1Wm)`4^$+)%DCTO`-%6plMnV7v5ER6#e;+wks1-!1ur{cn9 z-K`Cg5p}}Qx9RCC`X-MAS!kx&DPoOidWKVAv@At)0=*A2B@7(YnL273j@G!Guz(+w zg~)#gUAa+GU*h7`H{bYSMUs?6nud@ggI+!8PF%J>fR@@08<*$3)gZERu5uC z#8BnmgD+HiIvAANzfN*IF^)MoUT-6p6ij%53x3fOiE0pmAlvw*!Oz3~+ljZVw#HE% z4`L$QIjpUo7I7(>!|jj|LLAzZDbnxjdpF7Mo_=SaIpG4}BNzAyDmFMkBfZL^p7BUp zafdN+Fwy+cJ8O=3Wcbgge=44X!E{JAcxam{P%#-Z->N{BOc2%5v;7l@Owetew%eO8 zu1rbIBLUhJDqbM>d}!vz)>4J-_T|UkAexlFgs)v)!m4C<9RwfXfH@sg!9B4$it3<>5j~O3g(=qt&jCr360uuN|_KqcY*{_&KP1~ zW?_T!IzcWUXP=e3<=g$EQ8WaSS9l>dF!AmiekcaozG;CkgaH3nOcebqP|6SRjh8do z!?kF@gaO+?Otfq7K2y&ykiwK@<)oT_46c6tib;im1i3t{lOCZi4GDV`uoE^1oXn_! z0bSnMJmmDI(pgFKL-W7~xY#m+;BQ(;Qo@Q79}8V@x!g@`sll9?nmwTH6av%$#@>%i z8=9?u51co_N@WxbKWX1IDE-eeh`@Ik&d)r^I4s9<-{B1L@*{~WGK{)_uEHpb5GzGl zlx(NC58t4p5YKM>phfeLg9LS=sDdK7(81a3wR~WV1rVbazd~@_y&9t=*9%mjzSNV-8ALQp1pW!3B@~hTHAMH z|K?M8aLlRmNsXqskEU11BoHbGZ8-fXIHUSlHS_ z+4gM=s;i0>M0P|f7Ts$#G&gSp>h`T?__Rf@)MevD-?@Q>;o^dvPEFsiXGM^-Uf_~o zwVLqFP54`M>`ST?Bj&o*Ga5=B_w)aojxn*rzE=0~spE$(U7@ zKxptmV9_k#MbAIqBmrG~COI~%wh7CxPd0-H!ZwF8FW*MZ-HwJvQPF)+w|~lbJjy>; zUM6a_u>cu&=#Q(f55b@VZU0URIf?FWi;8Wg>-eg$%B#~}AvD~k3dM2G*?RB#+eP2` z+l!)&vE^26UrV|ae$i}H**KAR2~%bK=m!c%b6-u3AlB$3RO+pQ3JmeWT_%aMJ!+=_-QKz8Lp6;a(=oY>9sSZNvg>= z8O;7^M7xs`oXNQ1;DJ9C9WdJLJDh4ngg|T>!q+FPsREE{M5R70KJaItc(%qfto^*T zhAXz<4I{Ch{T)6m0B%WtoN5ls^B`6V#!MS0fM6Sdr+rKA?4$a)2uWO*zcc2n1Fl;W zeNT5Hm4X!uXpy<)-NGMt=nKA~S3ClxBoP2~vlQEtKv82!mwZ~_=hCEh#^z+~TZ580 zaT?!?McEAU7PN^>>nLxDK=C|YIX8t~T(0GS=CEv@j)_OAmTJO)maN^=G1)0xIroqq zXQzH}vDg>Q>^><~y(`W2X&Q67Z>8_)E=F37_nzNPMyV!sOog6cQlyYtf)y~a{V>GJ zp~M?bK?Y2$tJ*Ve4<9~v9T!KII6L8RwG2Pe-)6}x`FICi`3Gw-S}}VdWulO2ai7Ci z0^$a-D05x4TqH22?GdHORJ;?cB#_z3FZ@ zwBLW%2$54!>m&rhb|~;rL1fx8vHi*M_lpUO9Bb2(5_r0c={nTGefy*76;#Z4{x=6- zxx~_6JYW$iu!P!_paf_O)cvJtv@@bNt@0U4A>K_sjr!G2q{mp!VpQ7fD6XE^fFT#q zszFeCP-NYzsaQL|$vI({5Grp+gOEzRULts!R|BCdDVj9D$^-W|32i^Zz&ATmLc&X!EsaN z{2ip~e;(d1vPA`@wGVy`k4RwckO3$C7HO^m1oKjX4;XnDeqIFN3U7;!1pt3Pp5AJ> zU)RGPotIf3W9@vvzAX&&+y%Wpc`-#~(dVgiVX` zBbZ?1EW+B>Dnp4FI@p3bZ4|I35+`xfN3V817c)$u3qZyLfXLCu0r7$YM*<*s_B=HO z8Dz*6LQ>JcVXONhAsD_qKdNACn%vU62Nv1; zw_|N{P!J6A1QpR{Xx`}cUY?;SE!ohiAUuF#!0DKFjgAL6`|lhwvJZJd4?>&@<2k5& z`;c{bLJZVEfXamj7Il#U(o1p(FD9W1`e-rOcg9efD@=yLD+Np)4-67n{hjyRPp{uz zB?vF!yWZY}?6o7GbZ#4K6jY62{ADN5&VI2%VWJj(4(t98b>RLfd1bN#*Y99b0(^B{ zYdZtR(l-<|%`pa4g?d@viR`ZowN%YF5N5rfUe;F%eBJ(pEL9Q2F9h(7I+UxdK5`ue zu8w{sZ5dpn!7|+8WOa;a?b&{-=%7PxF5{x{0E$5nhOYil;!`d>P*2bP+E@ZJ`IZ$b z0)@FtVhvJ0RULDoDl9yZ@S}%1{>5_d@KF4&N}g$q+DsS3H%cp}%m_gAIi`GchoCN< zSpGc)P%4cJx+7!MD(^C`7(5W5T7We=As-)2mpM`)`@&@}M?e(EjtazCSB*Vno28}@M3MG|&^e}{R)5S0$}3=q97C;ZV)aGN z2USR5G+;?LB^enps{q-tWq`v(YwrHWz@Flvv&9T=Ls&T!ne2=cJ{H?B0*$GWzKrWW z*h2JIJmm^wf&c;=2my5;=g0qp8u)`T zi*cu!DCaOXqTSK@9PK*p^CAI=faPdF+%oM)Ziic^rN;fzEQhA zUvYIe9$CH4(!(M3V;)=YN|rQ>VqLB7x$_5y_(biwhB&>i&2rl7Tzt;~7my#W!7nhv%IJM9_)HTyqC%i1R_5*vIDGf9^Szj0}J4qh-I7 zX6xGwY5R=N96fCE3|+zmpeXA?^uH(z@sXky-4xwu(*hI(ihT6?S1~YmyQ&PGK`BH5 ziL0=M)?qbbr;q=ct{5n;%DY=~zs7?Dwxyn6$+KOK?GA?cQGUqFgIsIf0e-qbMB)5Z z?427Tfil6i;6=M3_MCL@_4o?p}U-5;omKR#O zGR<@#<>rVl%5QjB5O|0NWj_>Pzbma(WvDN(@0?7U)MHPIhq;!Cr5w@AE8l9v1y=$t3vVZ6)k`p1Dmi!2oDL+gq+8^<|7g53eN_UyI-gxz>bYXb zc661?GkgIp2c!djG$X(R8&XhTh^tTts7s*ThK}S7A)gzsp4l#q-&p`aJP*$1sE}>f z^sVsFcvoO@%iOg6eO zA)?lg=4N;V#h33^S}=G$v;wK@=gExRoToFoOLsKVwh^L7(+FQ2m=x74CLpag@kyk( z(Ik8_A9?;^{)OB?V;;e}F5UOxR&{C6X9clo3K;l-k@EYtSQH}FJnar~S?k|dL8$@? zoD9(Zin;(8998DfeW%U-vA3jOo25TQTY0b5L9@B{s0j@~>01ZmUnDr05J2qb&3~<& zPpkIjD!)6aY~uCd5vZw#arzg)zV!5pTWb+Q1jx=BoH08N_W_Wuit{0o;gVrxhs%iX zAkCCoSbyoX`4w_@^}MV8x}A1+?ItNig&;W(2G1f7qdpwy9A3_z)kE()B1M(`v# zXn&}{d!X5&LoVFOZWj-uB&BEg=9yJ!5`_A9)D((`>DfUX(yJ$%zp-3bwxVe|wa*k3 z1iW0rlugPQ72N@gH$jBbZ!7udu7>(q$z}m<&}LZI#RE`(5JNY?GnRDyX`NZJkwSfw zgS9dGr-Orx4msq?hh`gHZq|3W6yo&A0Gf9+ zv}3GQ!~?^Ku+f{6z$?P%e7;%wX(VR^p@i4 zLYeq9fOtv~4B-OJAKU2w_%QL0YyQUt5j8VzR^bB>=k?v30CKq}mnTuGb)H*Zr^s*p z5)33sQH$IHmTG19DRF(z!zSFEy}h9S68a;I`^>T9bmAs+ z{d#Y1<*9WAk-nEYNIC@j)*+9P!FJ=sNnRqgEDJ1a{%pna#SEPfuGx}7b@zPK<<;)x zUdyGjOi;*5VZtmnQ0buyY=p`xKd_UL^-%`W*ChVr$Q#cJtvIdB2guIz90i7z{Eh!S z@g@}}l|=SIjSCSqefBd;yvHSL0M&+rO(% z2h^Kzd%a^nfBRV5OjB$3Nb&Lj;6vLW<&qcalhEO%TJ3Wkn<(Y_Ay@y@>3X+e=L9mF z26ma7i}C6*Vu=`aJ+BvGo>FC~ilRjqd<`@5>@R6R=o5%NOw!N3fqn6wpOX@>{t$6% zi;8_xJ023`E~Hl}#Op*h_7F0dAx&!bNS+^f%*}Q3I(*EM8(sZbfi@pFZg`5zjg$0{wJz^Y63JE2 z4nC~0+dCttnegc5DuPKtZ=d{0{JcCoN+ zri+D}xeIdE!~>h*LNt}!g9ujb1#16;Y4nLhbC1yYfrgV6XTD}{RiUVYzX>DFd2ba8 zxhWI8^aL0SXP$`g??KF^tV+J3sA`_~lG)ft91Gfv5q6_?+ zyuMWw3iiYxBwmi9!&%YcO#OBX2OX`>TjScE9{K5i#Gbq~rn=+zLz=tABEOgOi5)zw zP(V?hILu^ad?B$$o(~z^3q?J=lbfRBi?tM)MXZuV*vsJk!`A1FPIq9{7^5)bW*uJC z-8msfmr`2k{58yROsSLIU6B8%^860}RVYDWJKCRR1R>k4nR|kl!Fi7ViCAZL%V42; z8Y85K!9ZWs#23F0`tLovh7)u%DJyU$2e%)j)-dGAJ$I!?24-)|@8UUt|B1QxQTKbx zo4%w!sS|gKS2|REQ7wldhUZCl{#b4Q)usE^(k|Ff2AdVl3-_+Fz!(=mhks5svp?iX z=jqf`*O{tDw6QY2jMgZoB>!PLe8sc zc1}J%CcR)87Y6G2wddQ8p%2dgG5P1ATT)t3V66BKk{Gu1A?|O3r7u%_&1xT1m_e7-teaw|p?G1oXlS!ubEujarvapf&l7f% z2q|>TSZ%d%aajbt2h#o+JAC}AYjwRC{lD4JqRFSkzlDK$I`d{TKJ0#t5On6n%5~yGm2pygZB@{knnT*1LP~ttnstD4nyFRd>O1Rxfmg2f z83NE74kH@%NQmm6LZ-1$mb}0yO_3cH?@^_BqJ#pzD^A6|rDroNe7VEW=on8G3jg=0Wy$Vt`B~LP<N=uOmZu7XT0&?GCNb9^)!6fcM zEDqqSFSANRb%Np_Jpiuw%R@fZ%|#}g576G#0g({~kQm?h?}J0SUHEx4KO4GeVaj&0 z4pb+!#{qKC44`V2wtygXu%P=M7)`(M^r%8#d*m&wP^y0kzD!nmI0P8X48|?H;jwu; zh=Qw#enyhv##Fri>aHv*@M4j@_S5dHgFxMM$>$LXVB^I>by;^8*G^*yK(N49X<3ch z;J8WD`}*hiQ(pg}c)dbiSH$a~XSMXn(yF?x&#A0d`TIM|{Hm;iB3?YWZOqmtVln>L zPs<-S?Fn=5Ivi|@*>I>TG()VMGAJMYHz_4ILr2m4De;CD0_h{RAN!pAErT=e*oIo9 zB37x7*)63jN_!x0(c^?}#|FXL!t$I&j`T?HHHFdQr_P9z*)Xx&zlvBSPgQ*7C@+;W zUWnJ>fR@9td_}uE+tXxMm#rF$Wig`)=|GpS=?5)|o=#SZVqJb2RQ^(s0HoB0JH-_A zZ+wXRs`Vu%dF>l^=+r|zBy-{z#*bhZABYj`9_jcTTb=J0@{)+t$hJNDQ(qOt>5s0oTp$yPVEiJMyqm6$(gMNJ#M zThMlJaKJvBV64Y?|H!ZJ;->4@`k`|1oS6F$f4frImq9&)S%!98(8q~lm(ijo`~@NcR5J}&RU8Awr$&Ql)C=twqq95yhBP2612 zRTsEBF2f8SoC*4LIuG}WftgBEhww%$oHT869c!Jb?`JiP#fKl~S!(M}wxa>KV%&Hs zIw_FbM_$7Fv3E^BTYr)ny`K60rkf3}Jb>F)7*)Nc&;N|9z%G7-Ls^bpG+am(LoY_y z!=OE${|X4py&mPnE%ErvRpv5~W?ene_Gq+&hxI30la`yOV=Cmu<~wGz{q=*Pfn)3r z>i3<(*cz9G+<;P3OA6eC$!fK5Uj$l>us?dFBU9J7Q+#0Oi)!j)bqz$Ws$fx8t2 z7o}zF>SpwdVv?-9x@&+)7r>gf3{0`?b5T(k->dj;cNe{|Kq<@HUdR1P+6Oik)(ru4 z!gZ^CWrhwGX`2f%H5z-WkSR=*d=72072_8(Pa@lUYM!X+UPO{IkyW$g_&n;T8b4Tw zmLwTcKKiQp7}YJqjO=kyl6AbPUFuTA8B1-r5jHq`@D_#}gInN?&G9Af@_w&tZIEW& zJ88Ep?Kj1eo3+uAB)21D)l$_9(cFF2s8wU=^VS$}Dj z-sASylRnimlL3t1P2)q8hSdxPLNB#;U%A(0`06^WBmAWj--g9hmdJ`SF-}_P>2jo5 z)cX-$Y#7^78*NND+#eTMYI@hZnVg_&?(jfQn2~wWv4gG2Xt*iBF?Q3b!iO_m0A0-f zozEC4wv!XP;YhV{khNoqVT#a+&J|Wan*603_kV7-S`7n62a!exTVjOyl(Dhw!yF&@ zI!U=GZL2)We{XK=zB;;(iscufeAUZ-rO?-i6?y;N`{LS)9jzE-C4f&O67? z=llEK^}Bc7zwW)P<$`s5&->0hv*+1+&pi8?2gKd)PMY>#VeyKW+Qi;dWccx2dFV55 zL11p}>~QA}|M(JB1Ecq?ccu661bX94--{18_iHDveZKTcsUG2nydH4t&-WA(%rP@{ ze#65Woz_R=luQS2OuoP4_Af`=`g1qi?Vhe()U0(3|K!y_Zl#KIHnA5A36lPFx)BjZ zpT*&N7#1OscxbLUxa3Em6ld|hM4kBHZngqJ9P3Z>$#mK{>5u#?)<+WMhk4>0S=yiU zXe~lp7#?^Jd5yf{7H+%IV$tojEjIW?rS!QtkgEg(v<}9M=Xa zL_J!yYS{Cf@2Y%JC;p~wqcL%qRyFp?eLV9}lAWWH-ORID>!W$8)6)$i#%-#ez%Kg8 z*|mrAH|Pn2m=fqjzs$?|XRs4aKsPuV=vbjO;c;*%z%A}SZz*YKiN8u|LD+qzC5cJ5 z$W-HcOfIL$Np}y`*;nfne&3yScI6145WAWy^Vd^^FFy4qka!MF*q!Ee^ueWd4kPfT zUjQ3aMJ4duS^Cvx^qw+ed>Fmv-UGH~_f<-Yt^;;Ovl7Ga)a;nxPEh;$DqNA@Q-C#X zE@tJ-EEuTre>qq>O6COQkQ_4pZ^_&L!+-xw1~;|}4&F_&Q{-aEX((J-ZLzs24@1j< ziTdOPWi%HH8`WK-_KT>I?Y0N!?o$k)WB1S9e+I}q)vZ>Xda4B6%bFSigF;`N}}ZPdiZQxR7Jfsku6HJM7Yi>ZQ6GJdh9_ z*-J)4TiR}3+ z*ioS(ThFu&tBe9vGN@sHin*_yvd8KUFA>3>*s~)82hzLmGXm}o1;ZBkN&Wqbp=fO;Vt#y=LKiA{P2Qw3Ixm^3{e!m!2-3aIXpL?NP54=)5O8fRK`1GkwNR_4G zzGGj9AdSV^n*ZHO>O`D^#1%ug-FYmQ;VzsYNB$^(Wv-bqZ*t^mjONl3 zT@&LU&+;kwI3@0wuKJ!g4<9I##pltKV&Ng+>bGOARBx6~_3wmM2F~TE6cH5~fO3e1 zW^PF~BsQ7e!<+X2=MwY(OhNP86GbGyO#+m+j?+2$`lcGz2gpENk3r=JgZf@xk2#wb z+QjhNG`1$Ff8W4Q>Nc>GU`k-%PW#}GgB;c!MHjB99K?PetXJ5x`4h2j= zuB>E&_54`kZ`^OA4hw` z7$k-d8~GZvv$_aOmVm2#e0+0{jg0urA|#5-?WYa11~XM--%RxIJds#g5wRJ8V<{1D zrvpcZo%}PTWTSsYL4U;>aVO~!d_iC1QBfqor>@5rv31I z8yY!(T^wU(_bml6*OfRv29{fNJjdsqKe^1hqi@9OScr41vmnoSL9gs5 zHLSniP*dqJF7Lkgi9L5M;$;i9z;mxMlR!ru3gDcVZb2M#TKAsk-CFCV#HXh0Zc1Ud z+f8#ZhB$zx?OjJ*;TA#r&X0El~vbx}F?Z z0&qQMHg`gBm94pjog!-p>xhb$Plv9H7!OELgPDg#an ztm^WnMLfL4Jz1GIl(V|jY7pxm0gwq4uX04#zJbI-N~>_6S#zSkCz zEQm8pk{)}~!XEG5FCoQHd;^5{qm<%QDS*VAT|!W^Fvp;!=EtCUSIFo%@$vrE)iv39 zW9N7Iri|cr@X+njTNo(fFVB66hLC!fM7mlNc#a-By6ryg%8MXdP_yB1cK}=F&$P!u zk)Di5l?Z8Wgdn+z?zD)Wgx7;x-)GB;Z{VPg9b)#cX+zPR2KYd!2g`d;&>T&@wvI9c zB)|vLejJ6oYaHF0EcU$bhK@?}Gwt}XeHwb@b}{f4EGhVbwLjSXDZg zOJx#a2bgcoDeH`oc0;12hqu_@Ucd#zq6oP#48SS@H|9KdrhSfLNLR>`&0A{)O#~cNd z-+w>86I0&97*&4dJ-pX%3NX*-?TZsG9b`0AA~-(W7%1$6W+jfG`@jSkQ}A*rApwU7 z_j-h&WO=75_W%{F)ZhS>UtIPrA$v9f^sy*_%6dHD@%|lR=93aI6H(~sgS->7L8THQ z5MF)dO(qp4DwO#QiQ=KDiXR`|!UK&pjW^O|UZG8k88FvQM4;RIc$r$?qhyXIr8&;c=Pe>T^9A;Wxg)gKzafn8#RF8cMZ$IC94cH=aTY;VK52tupe)dM4Fom_^+I z9KIN+h-5XdWiT0)lCZg>AJ~wQ{S*mqa%ghHjb!R&0G21FCun$wb*Dw=83~WN$e2do z@E9jQk^Hq6X4txjcjQFRsk)MD59z=^n$R@qI$XeT^B4!jl(m|J!{=XzM_%6v8nd+1 z`4f0(#iV$C3K>x*uqoqcYb$t(EH!u!4sUBTOFh6tjgZSKKj?xaYy?1WITtw71Un-D zx8uETaKq=^J|`a1h*G@wuFcDCudyjVZpu+yp;K2FOSl2qGm+M>wa2)^Kp%n~39`9A z4e5f$!@?h{8H%<-4TZnZoHc0Z@-1HIDT7EIOuko%P5fO00b^tLj}hdc#V7J(41>-F z`6HW_0Sxe7k%0_+7EUud+vnfed|~Xc)M;({ELt24e#T%9&#c>7Bm?t>p~NW8_kc9U z*fSoaDwW{?MoTil77ezdDa+R2mds^?w1;4e&Xx$ifZaLn&+mg{;f1~zm`4XP?rsVN zu~reskaCyxT2;^Dq6vxm2Np>Hw{=K9W~0`Bd#>_276{j+VO^vEUw8oXmw#H{?nsSb zzGgy=Abq&Tbn+pEwUt*1@04;Bak(^_r-9&8Z}6>%UKcC=@$`Fb>z{lwvej_2B@PdQxBw zZ9FJ$PDWr*e>V4{-K%hsQFxV;19-9jF1JAgg>7 z=rRGP$vrH-HG@x zUc%P-0U6A#GiJN@?kbSe$v{GC$ETsUR_53!f5wK3p9e-}_4e(P?NyNL^ux9-YshL! zAo)Ec68)v=_SVAPrz6!~Pz0wvpEVpl2ZI-x<9A?lY>bd?njSB5@P(N^?GB_UAJ20@Yy0&y6rs4tyAXDlv^|OhGv6WReU7OVnQ|F|+csMIdfJ$OrnDp4l|pFJ<4uT1%$#f+u@Bz~9<$`O zj)72f@I5i{(H!638O8{PY`zK?ZEBqOUjkRWu3a->w7&|ydf!6`+K{Yy7W^HJPgmW@ zgC(v4<607z^|8H|N}ELbKDJ^jdKjofYY=x2MjR3%AlYO2IX18{V^_5Of(Zhl&A{x_ ziUO=Ldd&LdgVbGGpzll!y?zJ}hFm0*-s0KUMD_HgBT>J%i`6PBKlzgbnst34A!?@k zZ?FCJtKI0t@&R4Bjn(Qqj8rgKM zHnq$;2Y7R{-o{D>DM}!~Y@VMc#*D?!?}sYW%AXqcs`A~2?F@X6{v;l%F#XgJ?nZ*Y z!xju&Vtvlkeg$6cusg!$G0s z_iuD%W6HlXQfcKIKZ7(c^h~?}#$Aen4Tt-J+Cyv>7bxj~jO>ub17UsEoPnQg_GHwx6eFB`SIG06mI7PO4$q`|UUFzQafmc=3=wm2Lg43< zMm9>VilT8^+hmT^p7O&gYlnRedKTq5m+A30arHI|+B4czE_tHe4Pc%M9+D^@7?+;J zAYhxvCSc2JB+5)C$cL0qbYzk-I8@R8CeuLkVj)ISRsRwk9FN?zI%+-fW;&I%h-YM# zo%{u3N*Yy# zqfU;rHuiM_fP1x^bn~s(cSLGmT&97R`o-@h^R%`xEq{RW?Aa})QOA?M;(|#A3Ltxd zQ4was0AiRQHZZZKM29jC5SE&w*|{LYkK@yrV09G=M?amFNru^EaAuk+Ux1m|GAPPo@)f4NVJXsHvl9_8mBgRqSXO|%0!daJoEY6j z`wlTL4<^l)Kqn=>)f*$%5X_QDK)EYf0HghiKRMUrX_O^sz>Jp7^(r>U8{mE^m-*!z{D1#t1SSNe9{+VxXg)Ex)2^DcurpV3AAwZE$(L+a&2(qbB9Y{uRU?@%Z~b=ylH(+ z^*t`3pnS*fJQBky{^xt2-hZ@J?Svic5$z-RDLsb*!JIS3pcl7=p9S}-r3MUNI6*u3 zmO#uc5LoDFG<7MqLOkhAqc;Y*cR}AjN#Y*PKEMw?=1j0&Pbwy9wD#AkM_|;=bt*Gf z3CgSHYpk9+ieypS88lP3mcL$AOOm~^t5GqFm?^OR^Y9nu&JiWAgTYzskIrk`kL_@` zFBr!?mOERzw0I5bJuaV|adjH)$uDIsO{c+`aYyUPiA2sAPsT(~Mf-@fo2zBKi%L>& z5D}hB4Svz5Wv!nJ*BC)-+}LENP-Gp{faD`iw*-CJ|og< zR!AY$?igvdZ2KzsYIr(ML$3nZL;8htoqr>;?yVK?$-Tm7|4!0ppVYOIVS!H)0U~}DtSnQcoXUI+rk)an_ zs%)R%j}K8gr*B|Qf4kQda&o=bNPdNOuLewET~6)80%+sO`*S7E}~e%~=z*ugzoP;R!! zszhsQZOq`vUu`q`m;Z?s?7Hh8m~@}`)9828YuL@jNPd$zA*rRdA2aeiU3+pIkdk2m zwE0fH)i~U|A5W#}s-1buJvz$l=Tv)k;4#ZWx%<~ir!20W#Ybz}O%1IBZLti7BN@ow z^)0spblh_Za-HAZ_kHq6;umG!)k1k>#ZTWBO$m5&r>Z%xK_@ob38SP3OiRgvlhST} zTIc%HCQ&m2tKp84K0fr77Fh#iBv=;g*BK&Se+yi6u2suT6VHta&_Fy*L6A zqYi3yUbdKDbCJ>hfj0BEhNku`Nj2^sbLR=CJeT8%Zo)OCAbBK2^W-BZuOPxRmAgl8 zpD<`V>Ea{Q%Rs8~cn9Cx9+-&{{lVs|<{rQP(Jy?(*D>_Nlv}WOfj5Nk+P1uLz2s8y zryXNOgA&v2`2LOLg43)UX^mS?3SU(PVIVI|qOw)8-s>_+=~GE+o_pGiyQD;{k5|xe zx$JYFbwsIgO2cJwy+{c33^H~0z1!=FB!g78dLOD=Wj|azF^m2A&{pf6leT!jpnbVp zQ|-w0;RU)`>+_CVeX@?`vKLw&mV8cK=(R!4UM5L*tAm1cJzCdT=-}Wg6r}j>cBaf# zT9vE^6|3cbVqP~g`=GxXRUz*Etv<(_)0I)yvr_PMPg6=*`+~EVq2)EWz9w5`y&1@G zgB(ZgEI14Aq1(o6e2i~K+tARyOlG<5_?7uci4Zdc2rRPxmb2hHJ-@TSwZ*Y)pE|+4 zBq=U_`KqGqxPvvWC__au4 z?=@4X;|5o&#&T&b=^@CMkD)xQBV0_)=;6YU<3z9ZuGId2`4Kz8&!M5?!^5@d1|zYd zlG)kWlG0K>gX+BtOUtf*A6ycimG#^EU{cG#fQR1tp;n=x_n&Ujws)7E7VlbI#KNhY zq>qWxd$>B3PbcAQsh)YfyZq;PwNO$_Oh`ybzmmDlm%4v)@@&d;Ge0MXJhbc@0HypM zyOtOLks1{Y9ISIbeOmnG&$KaIn1aRk@Zk?8-_z$?GfhZr!uwY#1qi(`K^3ebJ1~aHNhl}&Gll}D?uOoq#Q@E_3?KRW*GSO$!!vGXf_aROX20uT{)3UVs-IKJG zHQ&Psy8yD6O|Bfjvzu8FGZ;W%psxNM%bB4;7X)CLKilczi;JnQmWX-XXlrA0IvdOf zYhJ02NThfB)Md}UcpW(^+`XGrQQ-!~v&hNGwV%#oVqxtq^_#AZ6m#R`6c+kI@t7&! z3vbuMNw;b5-F_wfx9}$QOT&dmg@$!~?%LYgUDMKc0BS4g!-sd&euS5I4(GyTw;GX4 z`;i=~_c5p9cWiN{DLofwo$XGsi}E>b})T(bkr;LhtOkSWF$ZXi9~*B z@Yu7`yo}M?XG=mtLP+}NaMSlg#dT zaHAumw6v5g$)AMDXSNwnGiVu~h^VE2=@BVYn|kpZPX7Br_k_yly`eSy z$RhFN0pwTIliz)Vh7xO!LV}Mx<)<`!hRrM=d1m zR`U5^ij22J5&!d9h2|d*v(%*bM@->JQpx^;3>~lS7Kp>8x2|$>;%GGoV{BlFy;L2) zwlF{Me7yT?@BtQ>qVgkVz#l;If260U?<2BVe}EW2OA)YQm(@3EXEG^K2HK&l9q=2^i+0$OAHQ}OfGFGXjECz}mn zA^V-tTsqe%rm&MeH>yOZ+~+2$oWz>_Xd@0PrhRTzeh_%tDcCFZ(8wsv7>ymUwIsi1 zU0C?}AAGQYA|_gfqg76vl5Z{n(t~Z42b!9GhTCp_6oyx{Nwu)R%7jy|G%Q?ixTOe4 zSP$ReQQSw6Nl8i3XK`|J&fU0j1v}II=}nnxewUR;lzXegVM*7OsUTzWyW`>gY%BX)2GE6pXS=aNa#ceZH(;!r+PBnw!6_Y25kgd z=LP)7W-(R!0*OP+&Bwmy~J=>4Q|Pymp675g@1vuY|)fu+;eBr=EFZA=8hkKRyg zd&}V>y^a=Qw=rH;AeiyR+m%kRv9T*B;7aftr}tl79(1mdg1G-+?JyR=sLs#laUFs` z+>xwn`%t*`{PZXwERXnoO3HMpg}SGwC;wPNVxnnqNNU)Hgt$11zxQ%bY@p<3EycFh zDS|HhDZtg~&cH{Zjr@2ecciG4kFkKO`K+-182{vWaPZO0%D8<475@1_!{MR(yZ-L( zdt!E1{tIXCF~P_w8iS$6mK>(7t1Yyh5 zwb4=z4i1Vdca4qy2w-7i8qZxo3{E#UG)xXZX}Dksmp+=0f_`Faf8Sh|s9{P?kvFb%t5 z(r2^oppQ1-Ykg@8-8YCx)voJ7$1N=_d9)M&byjm7kS0AZkWaIOj09P1x7p@EGPc`< zaP~s4xI|_6a4ToK?-mLF=?ygdDl7GA>YdYTS8%r(_z;&U9a>20ILR-ayubFa8Q;Ek z8~co3>_2YJWu_5Tz*&R8dv6W=xBWih2MIW1OC+5sCfwWxD+R`}cKpE_>1$WBiKY*7=BE)pPCt zkLY7Yvk$(@#V-!}F6}J!l&NxCx|3M!J03LuU>%p`biH@4^udH_nDiBR$+KtAAf#|z zy-FIY>_PRPYkHHVp)2?fryL)=rlX^y@>f$sSl>3 zW!5yhJ}aNI9HRXhJ=**FNYg0_U$x>8(+6C9%E+iaKVG%`-9lqTNKCBBKrql1!()0O zbZX!>DQr6?v>SCcCm2WXeD}2CEq}G2pI=85r|jw0x5^0^6Ra#Rzu20&xowmq?y;Ml znYjRG&;8>eJ^Qp#y%VMomcQ|UNRb*-?Ou?H14h?2wQ6tiWZZpFQ{o2(AJsDJ+Ag}5II z-_FjilHLQ$@9g|!bB#&(oA1lJ^J3!SEp2V-yU^=togHl0L!th^W^^|oC!ihI3Rj)G zl|kIGxv2>uMT&4Z+jLSgZQ|y0#IKfMn)I8pva*_;>{HH%b&PKO&iPrKffeA2)I z#(oK6G_j<-`^^+E7YSd%QGvcU#rIr%Wv0QH?qg|ys4XrZR~%wDNTE8yV}DIYTl;EW z+4P)6y_71&V>ojpB_lCCykjM6Y_ zl+HhY8IqH8-8oRf>ZU=B>lw_0-cbFR8o&pwA#|L(NrQKDUg{x}BwX-s5?N!6Td)LQ zY|+xW{tQFiXJKYeeOti(vdb-INdmD$u?>Ucr~l@twtJ z+fQEhL3~{k%<%B4bRoelBeeeF-1AAxmkL}^tx1PKHO@n@>%LZ=jXTsch8qEUphNghQ8iII4pj@{AO8+@ddl6C{3)~Gh^da_!5-(SOo&! z$Ii7$MfCbuo4gP@Ec`{WfT3pJ6^~cvGm}^}_f%Al_lAuMPdK)|Jp0j?@cQ-Z!v!2Q z8eeCZxz>>9&z~;=^JN&qou8jCS$TO$<$fmmj4=bF#iGsKV;IN1U0xc%5>;(qfB!Xs z=E^JJ!1XxLi2zGw3rhw#$Y;6wGao}wq; zAjZf%GG)qxA{pOmi*S4w<1OR}m@)a6W}05-echgG^F3LIs^%_z7%Ni8OX+a7QM)z6 zx2S$OGFE8R05cDq?c+es!^Z>P>Rr356w6yyRwi$kMM+(BgN%U|z>t=Nv0sgMt?liyB?*ulIWhGQ zH8*;(K*hOuPLw6_ zT3K0*1d~lgeN0b>qfA42v%I`~4JYIaCk6`gHy=Qwf7D>U_C@{;)u;3%(B~?AK^~Xk zNe0+iK>*AmB_O4+fa{-Y;hK}u4rU_+)_ZPB4Xogf0y^2ObYZ^**f}^_T3drsqN8?M z|9i0jCQv5+?{$zyX`lu7S8>5dTu=c|Wyx3#f;38Wu01mZDWlE?`8uVGH#6Z9%$o@{ zZeL&DClZWa4ltgCWA_LLyAjSi&+8oLYWFRMatrIP-&N{O#srbsxiC7^R5@j+>)}oy zeL%yjf2e(pfPjFdqArsP%+Jqb!Zkt*3=U3Cf*<{}OqS^5T@6&YAm8;4d*mq$kRtA6 zs9lGIPX$&NjsJUIWwi`YGZI@)k{y2W)9l6Z%Ej&$@~dR1&3ortGCia3xpyPsQL%$V zdkBY>Q~tK-s1jNVGfP;hx`YMvNJQSe*Hx8Z!?76j=dr=1_E3h5O{-i*kf;7WZ4V#N zDO=3XygPP4H()@H2g!WXZ-^798nB!&mH4vZpC-!wkH$b*E+Nawp@h9$hA_wGm_FDi_`*qJ1!KWHtX6#cr{V0a0y=Q&X_IS| z_QcTul_BU+VHEM~(c54#x@trt+zP#=!VQ&h*^~NfzID;dtJ=oq(bTIi0OO=HB`bp> zLfd$0$L%rgIHX*}(Z{m>wLY_sUR|ulNS9xb2OHVb-Xv8=Wdj+PgIFcbRtyL^5)4rE zg1jL*BFr2AU6ESztt13<(TGjpPO!w$rERE4>hih7R01gnH!^0+_)SF3W+6oi2Q1h) zK#4rx{;^A!X@POz8`=~UYblg^9Ze$!;g9Cp3OKkrU z;qsu*9}29!!kVoR*x`r5HtQUWaF}OZo|-_q$k)eGgO?%Az=o`(8Q!q?v0)tPwg}{Y z+e9bvl)~d9Bkp%2Qz2_~1ryY->6VljrSXHF0jT(T<>zs!vx)&JLQeGf_tKS<1qymC zwU_HLVHNGildhxM;v*8C&QNaY!nh4X6-qk^IfY6KF2f`?lh zWsV3O+6RjEfy36I-R9|0WO93xyO5NlMd>f73q@`5P1m{s&ue4$S=M7;6%SU5abBi2 zKPJ5nq?|aNUvNDqxC1xl{S8z#A={;6Knk2{!;(2c1aNJS<>3;i=>HW;W$f-$E zfTAuIO8sS;JIj$+8Sf>itXO+V@sU_C`eVopXeQ|B=!cSCZI3)Koj`y&lsL+Z4e786 zh)jc`eF3@q`&3 zb;#T=q0em@pDiJ2gpFpxGgTB zj_fdF|0}^R7$7?NODFGh>V~`Lq1~uv_)EmSDiLzv_IYl6Ju`gdA1QULq!05p|)!-H#e$EwG)tXRZ-d*Pr+R(K6Xwe$dBwsq&6p9 z%%ddDz@?;)mZ5Tw>Ys-!>Qa4$7wdH%2Www*p)weh7#cS?AUr%gabt6;W8bs4>dKqe zVJ+wk#*q_~9K-{)qh&%{?SCaZqq|WG?V|e$5yiJXf)X^LHs3g3N+aYaatvK1=Mmu9+6Ho`xL_%qdc>we!Do5Z3_WcZRfD1o^=7i?D zauWi%Q!xXWsSYQ2-c#rk7#@~!$Lr6B5^Km!#;xYkFrVFNH<^>8*TYl3+f)7<^>aPr zHO}ihM|@0IG%=NXZTqQp8cH#dauNr&*lyW$pvd~!4B5j5r97OY*6(L7343CXdmZB_ z_0~8)7uI{bqxFKr@6UZ3P=R`9$>$bDSq3eT(FPKYX05%nB_cp77XsKIIYdpPntkqLXhORR z{z3${<#(RL3jY{ls3}JMj0(W5%^-Alp&L$p`+gvm<477gu>LB%e|W@J?Y8L`eh}L- zGM{6td`(c^S3l55*B}lGT{?joisIm|k9A#Y#e-6WQrM}+5#1M*G`Y{Hc=_k+c(!g7)N>A`M5 z+DR-)2x7>9oiLisW>jZsJnZh2N7OFZa$95YcAMslV=AaB!`jPS{q-^TfB;wwrWqKK z_SkRy@cm0tc=7GSH$TfuV5%PQ zUiuRT>uUGvS={{doway0en3LG2t5Q-YV0ctr!tTK+USd*QOn&*w8U42wrbFr9Y8^O zF6m2P1bP%wy@i&7Ovtyx?G4^RjRAb%S=7n2B0MCyzW+1<+U){Xvj$wf22b<8z$cEtqo&mxUH7FSepsP+7! z#RC+_uu<-5LlRZj=N}+|Y+yXUVm*`BiEG8iqGS$6dY&h+4;%}*s{8*m&51;ovr06ryLMC`J+FTC@H*auC0ev(*5fX(aWZ_gm z6aG*=&7iT~qrb6d7#Q(Iw`_BELbL@ke41R4z>d0@JX0J zs+!oO`?k6+j$9@uG#oqba?}H1;MS^}=_0v}AQ58s<+wUqQ)Citp5bb{O;BF@+KZm!}Px*f@u_ zz|4=AiZN-K`z8^th@u_!ZTWl`jZAVN===4Fm2I4D+>_1vI*+}L!0<>z&iul91UWjy zESV54YJY{~@oh&mUiTC-$u(zeM9#!so4%rn9Tczj{L|Vk=?CbQjMHI~xz5uT2^c*X z2QJ~e0p_BLa$(8bOwIB!~;HRo$LELN%F4Pbx^Qtlr{ zpieCH^$Fgdg49sdQ#D9@)s2vq{WuYyi9kU?XsC<653T7otP4V8RV}@#t=vXOf~cbb z7epZGKa00xB!d;la8M2`A^8~KmuJ0*L>dgmK`c~~B;hHe2>t>kYT+xGJY^=xf+o8d zOvc3eychZUwHEI5QCZ7pYk4$%7L)XDz@c{zE?VGGYL?Hg!c(uI-Y{MS>PT*SpJA`m z?j7awbKt}32`JCV0p;ZD2&mbeE42 z5TIana0G`)PQvK5eOg$bZ!0tft8Spvf-#DV>ef(ImYuSGxUF8s~Qbbi1C zr9cnr7pH-Yr*O443#5`S>NFH9utUBy^Jfv%-;V!nJUr0YaC$`4N&pTmB;nDlmWuT^ zVXYhlPX1^{?(PdV1oY>)ppj1KWd0sfvL#_FOqE8I7z_-QU*d{6OT~oZJolk%V!ng- zj}h6lW)9*r{VDI?{wV_`-b=suM(ErL%-8-KpIGHnT*tTsWX`uIn+_&_!jm>HytYhi zKBr_PV8hzD@YRf^+hY*&gc?8IJ9|DG%d2c|^1v%P#WSJh zA)j>U1AY*oh(-=PAP23pcqj#(QWQXZ*TzH{mDfS8bn7>2!;N-0^Cq+<{7$q?U;sc0 zYprC5Wn!(P8B9ZpMVN=py6LJ4wqw>F8n+L?v>a^#&}NIs_%ezwgY%NhQTkjw1K*$j zoPv?{2~9k9to{i~w+qB^L+1}m5ImhnZpHaeTbz?VoIN`#+(ZHx(HWBo;Ur2aFKCKi zPB#=u$b=sGro#Ejqn^Jm%Go3&<>9OCnUhWVVQ4-4#ts)s$sSvE_J$W*Cl&s6yN8W6 zn`=GOlj=SmqScfjJb4P9AmI=Qg(w+;&)R)X;PB)hLlJKEJYn!w>N$QA)N(cOtYq!q zA`5gWS@*@Z8wQGZ&j$qW7J@9rH_Wy(9A!+WN>1U2n1SPLEL|EF*OK+F9Uznr#5) zd#K=`U;*tgCJiM34$IwLnYeB6iHw&9m&-f2k`j0VeIfb{SBOya$9HY*8zY1-z6ULp=GGS)Z z3XhgCem1^f>Wv>V`r(lB5*bVzu)%&uBDQM)|NK{35_J7S2uvT62^SF#>vKxb(uT?T zGUC|?q(}TQo%FB3O?i!O`YssMoZ;VlrIOde%7ZkHL`Ojd6TiveK{9G4_rO#Tlx57a zt|&lP&e&9iX;+nD1MOEhsK7Y;%B2QEP%nU%4<dd8F+$;f05S?sl%`M^WfWxg0LNh>Ep(s>XZ4)gK`Y=E8`i5SMN*|msN zZOhkZJ|<ez$gTL!iD@$q%-gwRVEv&1q$UEB3t2_Oz_>zybqo z^{}|!lG$%hq|h*L8`$sSq?amF5@*p(p&*YU2NPO+v?DU+FUjF)V-WYmK29h{$fiJb zUj36C0CkQ$k(SzRVwCoDh9PgJTQX6{^O#3JpiKI?$ulEj5MvUt zk6_k^^Oy&!2R4>@T|6a*m53xeurT9E#^c~YXOny;*pWn#G)@}~Po82183t7zI&sf< za?`;KDGrEKYe53KtFql|m+S{iwZf9?JUw_yBH?^RFT<{p)@y021 zJ$K#ZL~bsghks9ceQX+KO=sKaD>@_-`gzB}@Qg;4Z3-(!JLo@wZ~0fx5iWIO`A^!R zk(A<`@lsn$-dB%32HPT8g>B2$NMahlHojrM`iJHQ6f$)0LKmbKDQH){4n>e^Zd`?3 z2ot=n0oN{cumnX;VYP)fQTj{M>y$w)LqQxv&mYS`&rZuV6nt?L?-Fp(k)9NED}Wlb zBaah-+=&U3?n1VP`m~KCiu8hr%Q?7kJNl7ja60-hn%SfuIiF{3w4a7idQ4AYfHf^O z@{>NR;lrashsHMwG42!DR~@3$zue(Dfkz&NFl2n|>_~p`)#j3!&o_`7o)$uLF|TE| z_Rw-ETDHPrm30!M@#er~@ewwAku^QDH{wl(bM5hG@?px=x>Kk{gE(6C%erB(`mQ3%`8Kg@ zZ=xdTgYzs!o^4z2^3kQjeOT;}o;$(DHL36PX_XMzRS9xPN1#<28MN*_Dg6~~|9=#B z-v3;^fBZja5(%N~y+>KuO0qIj_6XTK*|V&utgP&ikey_U$O_qeWbZB8_xYmF`~CTT zzJI{?7dLKRuXC<*o$EU1x}ML+^ZrQULi)0!Dd%1aeadSgf7y=^VFdncPDL8_gi8m+ zgWqJ@UCy<^WG}qPn16vaAIU!qykCwry?~EAaR`&2?+bmH9A zBSjOd`i-VX47keJe0?Zv$7Cvcm2DT4X*1-gpWbd@8Hgs=MYu@gI@Z!h15$%%05NpX!tsQVMjF5$*56KbI^a#&)?ANS{-O3%0goGMl ztVCG{)W#85X{+oj9K~QU`09jhQX$o`7+#y5{1qfD4&C+N!)M;;`^J^n$nc5YNCvzi zmy6@ww5Q71QMX7Aa&b+yWe_Prn)CaFt)jNe7eq-I=tjZy>Z|$SSGvbj+kGuAM8r;$ zt(z>IEgD2c9@ce`SMa7OPkKqXmnI4(0;EW)xQVXh!!lphTj!$G_X)2tt#0Ph(5L&u@-H$#&_&92HYz|e^5?u2Np zs+H8I{bHN8wJHuR0S2uET7xx24fnwk6Q4od{8=QYgo_qNN-ay=<{7Uw2w~Qevtf)C ze>79I>`QNGH|mcL!3)}QWrj3IpOQZ5WyHKuZJ;js>X#gTE{n+5tr`>+`+cM7trWdK zo0&2y&LE7Kgi<1vo%uA(+PKT^L9Z&-XP7WA0W13JOlyI*h`cD$5JNSWfU3g@{PV0z zAK!y_y0G6yjURB#dD=I0I)uqcNR~tFTKqDgI);#0l!Ob|)utB_ST;*MD*F;un-vEf zy?ojAhWJpGrJ|MZ^4->Pf(oOTmuLHmHWc_7F;x;b8SjyJG8mOVI@|ATIMMi2(pP6* zMhI}Hd!K|2cy|=!EO#mJzF82vO#R$ui>7!u9->a6lE+gxxx)IG7sp!2PNTPqKEnW3 zHznf|45>pn;|Z~^?}$r`XeFY*Xs|2W$0k=owszEibi-;IhcnfVF0S@nD>k52DWR1sD$ z<+J-Ykh`|J<0iirUp#0l=N}5*RxQcy!&N<0SdM(L1sRtLr`_l6SFc?_Y#L+O=iJI- z6R~A;4@%&1VUVR2$y2YgtW`8s{Z2f6yJ24ZEKJIo!O@3S-f52l51jjkB~=BUWCt^k zR+8pVRX2LJX$#TVr}50|m+vr)>QAgP{|I0<#(u>)qiOLQDivx2FY?DK=g~vdoyLE~ zjt7_=aa?S9Ey_2Qw_dYVNqz%pXo|QjTknCU{qLbGdmm?da1k%tV(l$zw9j@}d*u9)k!c~EFiNJRQ?M1b6^O#+1h}~d2=6)XL zd7r{n8A;-cq<$)W$&4RcnsUFNDWj4&8v1J1TVD|o#Xd^y88cShs9h4<`COKD_4!=9 zbrPe7*K47AlIQ#xc@xuTHYo33;A3d`=A&1SF3aZjm0~W&AHR?!<=bQy+0q1uaP^`!+E=&$-?=)%b-RGB_4ltIX9Loe!hb%O2F!*>l{UmurMdMx_Y(+jP@V z5CwLK0y77|^c&97%W?d6kau%%Qh;J8x?`!IyDz`&nn9CqJ}d#Edz;d-WRJd}H1-xg&2?HWZejHicbBgyZv_ z(xUGOINdnb7l@fjzI0D!%WYk0m zJSRqIY0QFP)(UUT>=3l-7Vx?aClquN$zM=4Q@w~Nc1L7I!PCkAPY^ti$weJ^W@BDR zwl4k{WYj-gEA&^07xh^FeeI|_rO++>BC%dMF;Bh6?;)iY45Jr`;V*u)k?U7I_P*BH zKgvQkCyRI)e-mnq625+`yy+T8&^8N0>CAoI4eKl9S#Nfzs1Ps95JQve{r$OpT^>`k z=?@<;JLU*DY$sWW&Y0dtynY7S{`C9s5<`ZK^pRZtgl7Sk?Y%7B1FiE2E#6!y6Zf zoya2?4-)qnpS8x!M+$Nk3_XT1_sq39IG*1L%grY6Leau(B-EF|Tvax67ejCHlWpaG z)eALf{3JcUEkL%XzRt`oMrOlZ-eTo!Ff<^Xc94ERb~JeN(&In*md}m}r>*2=H78b7 zEhazDE0j}ZwB8HhB>57sHDp0R!h(sd^)$UUIju*1A!Wglh)keJGOF-4NCPyoSyVX^ zE1dRrN@|_7_?B|nhDsSrdIaC@@0ORmVPR0`pm=@kGS#-taZ^5H1O92V@aW=kwA0t3{WM#H?X z3A(wA&Tae<{4FWWchzX(AgwSO`_q&(x|7BIKQI*;HsVo5*<%In*UJ4IcCKVLXPy({?6i<#eY>ClhCB11 z8ee|@HZ3hJL>A--HzA8zb^?#;4@8o*Q6h*i3s|i|Ei5gb^cUbff^GxvC9Ni)b68M9 zg|KY!(n4XTs2d-_;Z87Ah9DDh06E35)Opb8roRo5pq~5t&(hG!{pB*gx21H)9|WY2 zPLJ2|n%l4e_wf_^xjR70mN-33X(*hsBIvXce0U(way&if98?;GY_k976rlSUIc;Dn z31n+K%1+y3PXlcSJ@d)cSOI}cdgVVS1NF(A_WzfY0F1^oUHQiwGJHE}RFlr3dU_88 zFQ{viqCE^aZ9i?8$KN*MNsFFdEX*K^(+dJ@TkvVm0JBZ<^y(=?H)&3<@ZZCAb->=# zfo!l~;Uj6q%#K5HR4NYL>4!e185mzyHwwPQR1}(Q8TlHNDD#ScJ5>W6f$Vjw+5NZ4 zmQlg5kpK5Tcu1azk{>-{ulToX*=``L+KH6nz=!&H+9VtCCH~4`E^GQ47K;jtx3{PH z=w&@3Um7qEN96^ec>i^LCNx|YKaH4Zs9pQpTXObLMLhiD*eItzVkUx*FS%ZoUS1Qw)JdC^R7L;l zLjZAUvkC&XRYpmtgGUU14dHD07~I~H zFX6#axy70=^TSX0V0$L_o3+RKdmFQ#3M}31rl_(KzzTo+pU$ zkKzx60>XbfQppuf@A>%3S{hmlxZ^?Uz7)jAdeuTv8FS_}bjBGIchRfa82rJU=a9?kA5RRo7SR7RpL9tHGLi+Q1T7ikyk?(T+C zp)(O%j3Vn;c)$`Iul3h0v6F~q>R|{AK8{e)#WV(G zu=50q!{mWBVPjPD*AYdy3*3r2I^+~i(!ISu;Ov(RMjr}vZFz>V|8 z%#1?eudw&QRh~q<*6w>|W|je|Qe+G&`=v82`g2})xX4i>Lk!~zqCp6?7Eq`H_tX@1 z02nh5TJ8nKWE3UqT>DZy{Hqvj(F#c!(t3OYCFTVy2hKwr&yyU{M|~aio*J(Eq)$EvXaLFvN@66ODK79e-x~{#kMa1PtZb zy1GU_9+N}1GfR)C&NX&_LyZ}?h+xfD*2rxZZfv$9A{dd^;oDHVDh~ykFlwR`HHhBF zq+njXg!~cWoNb(;Fz{HM^I!4MQ-mnH%jWzIqmf+OCmvyiUAAr!#hR`6Q6c~aRF9t` z7ULDqc+u-4U?SYp66y;q@$jGbUdF6Vc|h7l^!`o(Xew6kri|86Z;`2{A&A;QZaZyi zmpmv&OejxqjRMK2IfzkBnZ_=~B}wQ~xjNnH&d{*;J~CCgk{++#dpnL^`#L18?D7C8Mi7u%($pi>(x>@< zFFO;vy#-?3GROft6K3;M*ZH&`O5BTSKkzdT>C*U~-B0s3Z@mO$Jx)yae8T@}KoJpg zuXT^g#uvZv_~!Xuf{iv$cZywis|DdUFl1nT)`FoY04b3H_J8~741{}r%6;1Eg_Byf zZ6L(VlNv6;MwnwW0Ti1WG^fK5Uw49r4}4QfKPA+6h@8C#YqS-? z{Ee{;;nn;?f1i%S_>6v!*E1L zU^DWgn{jeFK*o6gD*khs?1Ml#hz4j^6+cJeItNgLAKck{7$=R8YKPtE0K2j}^V+DK zAR!yGsCEM&d3Hb%6#Z{BPL?nAvQ_~2&?x7-n^FS|v6 zR0P~Kac%VKs&=Q0_0n})u~2@{M*`+C;q?76hr)l%Lb##|?*S-leIwL~EVVx$+Dw!L z8T%}RYA~Ji0^uaC*^{X=ILM=*-ns%Hh>9)xxt%EG0{s78`VtOOg~t^;WdQLw*ue<9 zu611@{70jG1YdCRD@VxJi?(Vv`srO?rK;`~EUnwZ(#+xr#SCuux5f9L&TM79?KQlZe{ETG%Gz|}zA!KAeatV+lqxuHN z${R^`3tl(D!U_MbTW@)cd{(-e;h`U8gw{j_4CJ{D2HZj)LTO7v`cB}hTI4)20c{e9 z&|m?I)eGcQOAN}SzBp~ENAj6le*l@(afA|0oOJoumq2r}+idZEy>E{Bg&hX!&5~BZ z%$ggYyKWZLh-CDzREQwEz;g+X8&MGLNTCDC{yZhZNe3)lST+vTd7k06g@xrMln1Zu z_lM4B2{lzAXX#0eR5g^Bo|YAcO z!nZ@tOO61W-64v}$7*Z>!BybFE-L4Nr#?;%Z?s7!SjsKqA&M0J4(Z)~{1UMqTpQmMj&vfl}&G51k*?EF;FT^dPojbhgZ#goTA zS@AcNN{woBnjv?O!?sC{MmYb;2Jl?-Bglo2n*QW%G`%MFRPPilw*(+uUfO*lxIcVY zP1*YAa_Q2WL8x3FD6?L%Jx3G9@&Y_r=X`*rS&4?STSdKm*9ico?RW#xdzzgOj_H!E zJ8N$QttGq4jze8N->q)B6`S%VV~y=DcX}jjvTau}UKiev0-k7N2^$IMjiO~PA5(8^ z?%6ne#6a?}Ovf1M5RcgH7mj|ypQMTlanx70jgRL#ikg=Wt;IFqZTV&fJk}7gyC6sX z&kX~ql;#bz{D%gbXIht@YEt-=GbDPpxF);XJz8_2~kIN=-H9BRV3O-Se{3;l2vcj9V7I3t3jc&=d%@g^h8!g z#X2^)wzc0v`Thah8MT=jszcM;_1WYZf5)FsJv$ebcvp+W?Kr6&l;s_~1I(@jU@rM} zpXi;fZMY~5xchy++%|@lc*vs(S_$3PJH)$f5XTddOP2%c?#UoN1>*5wqRXc-)!BJXLb-B~&|rzj`ZoM&J%D?^EsGi@*soZ1%~_<9_~%*X_el(O*u6X7Q-jz5xnd&+GYGrSUDI?AAWURq|*3fR4nO=jVi%f@=_e-9-*HGuI=8Z%Rea2hS=Qn6@{k6q1a zwKcN#Jko##vX0Zl+^W`P)P4#j5k9f&W&Gzf`e5m!g28fg(Q2WW=$qA-iPWwE+#91J zO*@CVqbggHqg4~c2JbZ_$-r_@|K&$JG-Oe60b%4cf*X8A2Dw!ECkM81mqgdQ#1GGJ zFANkdkYVh_oNtlNxfmJu{(}Kah0w-yJ~xKfKf_D*A}neiX@)*-MmR?gIl2#C)>qLy zcnH$DUHAH6>4)B#-BxCBk<B&YMY!%0ze#!-Re!R=KR!h`=7zoO^7&g5R4%7#D|euWVF-%ISz?ax0LKh2TLgM z$kuv2@deS4ng}G?jOSj<_gRDj1yBMqTDClshk#c}do; ziONK&-UhPnduvt4Ta5}U^%46rG7_MbJwJcxc%ke&vnNQmfO*)67dq8i>096U%zF_v zCzv?(q07ddVIBS|l7Q)^rJv9m5}0t<_TXYfb}Z(t4;>h=KU;ZzHu=dmYKsOZ4w=jW z^9YaQSiUR2&J7E47F0h_rY+q-^V)CxIE^4QqC1hXIb{^Y1fM(9VH>c4MAw2WXz|~{ zE`-$6^`0{`%4#oJynN&)ygu>uCWSOp;RP=r85E!QOUv~}Jiu=QJsa?vi;DXQry(@* zafy{eRSnvhLNn|{zt4Mt-6i~WRE7>-ZLn7XO=B>G7nb6y0AGvRCH;{|Eo{XlX$E7nvZ@x7I!*l@42v{8jpAX z`}#*NA9^*gRrNjDo|XTyfvx@8w(o7ffvb$x=>4=x{zf@o-OMqYUZ+SHxe0IuDY$i|+0Y`@HM+sPXX)#6(D&J+|ndVhSY)(b0Y+Dp^Pwf8v?|%j%x@pzUl;ZfC?uny2y(>2`_ncNVZjVyRRZb8#5bPj6fveO~uh9(k6i-1r|tg_#(NqZWVt3&AW=?Mfh zSRe^b`e;1Q-knyIYKD`l)R}_12wo>)Lv-LUP0)hxk|7Ra2^QY(SQWG=%%+qbkdmK( za$ER`i7@(!^x*SQ0@9xUw`YEJlcO+^<~AkSy7@1SkAx(=y&>~a95)A)(>W}J-1#Z3 za2G0X{k-Xud*CZ!$kk7^O)!8;eLWu-@2J@CGT<9=7xKfgnTyt$ZmzR&V>0t%vEIaH z$_E2vwF2Jqos~3{x zG(hnnWod-JzVa&@5*w&!@r9F~0TUB5N47z>r0+E})?YRiU1owLQ0FhM z^QgU?y#%>F)bSlV@QTf>eDUc zt7#(u6m@ntETUd-ad2nuGOSFNqy+3lx<#hQ+uxM{hElAz{JV7-#4W#;V>5E>GC(a z^i#lqPZV-gX-(YtObJG?){&6sgCt;odPAQ>ofB;Pco*6E-N$L&TRZzt1_k1!*~-0A zbJpY7dPZIcFW~nruj9n{fs_}7mTJ$9USEG3m}VNSl+KtZuJkooE+w2spM=fN=x)%L zSW_dV!_V@!yV9hl_s6wIIIZ{<1>cdv1NwDE~1VEul9 zcpa}y3Ay6Q=K5Y9#?r($lJ8mh^hE2~3z3%zmRxo>ABc%Gv3#P6cv2MAv(v?sM<(DI zRNwh=i@SeEXJzC*E0po39Z%~DSH0$CH;$2`D7%mh*F=ku9w+sIdCaS_EECSP1!JX(lW z3VjDBV(&7}y&KFMaE`Dok(F>ZLmpUyDLlVRIHkT; z62f6*%B-NXd$8@#$W~&DCg^A4MiaX9}*1z$v>@P>;tiJuBbh%s{L686f xbOaGg#f4v~ec=Z#(-{QulA?lN@6K&)VRu@~;Z6-Wsl(rhw1oWKoI85Y{|_^0QV9S6 diff --git a/docs/media/nuget-restore.png b/docs/media/nuget-restore.png index 2d7d344e5bdac5aff1d881f429118ac1bbbaf603..8265c17069171d9374ad1afe2fe1131ae1a076a9 100644 GIT binary patch literal 17499 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 C1{G-l literal 46192 zcmdqJWk8f`*EURtfPe@HNGaXY0t14AG$`E-(ka~|A|lcyt#l*Z4k6MZF?2UWGc>%{ zfcts&-uL}|-;eL#`(wLxysqz4TI|rvXA-yE%ZsaiRBhyE5p((X4Rz*nZW(Twd?qt<;-_3Pbl=dV{kanf z(~;kOzKcbNwt)2x4U3K!r;UaVgLdT=I#U2z*4(lVq4jxM5$w793wQUeT}?3^SGJ3t z$>XI-w=H7fzNf#hXxV9^3Ud}xYr*o?_@p8;n-U<4e?HuUy>;p?Wv z0b=0Dg$DLn8=w{JBvKNI-1&?a?4GpsTk{d7X^@S8?ZlGAw2BNv;}iRt23HID&E_|U zjO9)p5?F)+(b3VrbCjx&gNPIbGp+^D2Mq-kcgF7^c9WudtTJa_xr=s1|vQPsN&@`BeWAFD>m*#9yNCkAY3czG1gOZ&BD zijRRqgfs!kD1Wc%$H+Yfsd&W~ou%2_BrIU|7t23JozC!nX#1QUuDdVk)isp`Mik*x zuG@loeg-}aALyJFYUWY9z5qTu;^6-mpoIGv3^eauc_tc^a z=j~5sk&TA9-S~c<-^W}TXfTN)ciS?E6!~?256gJT$g(Z#IH|DQC_mGEfxEEY3p1}_ z)6qgLxOE~@FT|%)ehVMh-_(^>|D>6@Z4%-IVX!d&CERVFg)tp!WqP#{IfBfo`|C02 zD_bis+gMId?<2Mk_UySKVaS;lD725-RvPUvS*WB$iumjI2Y)4fKG9vw5f&vezvrF5 z+0X7_FGQCsGxGwuORTSbm?z~cu`6wtEU6K(^rDj47TFBBY0Gn6iYYeJ&jmIMC`^>G z{hQR;^Pd>su)ozD*s-OF7vBoZFf zEb_xE7C}%0RwS>BeJbg~dk;8&(D(Mg6Te!gY=T2R(t-w0aDtFBl_ochYyHzYNB#k=if1E5ATXw4=k_;fA8)xtyV8s#g2 zoMwID($Ud^11^W_k~XZ*#q_>I{>7f4U+0;OQ_4)A{(hY|fk#f!>=Vtw-1KiHus~bj z6!&>>&i-~D!B-0#mS4%yPg78muvt4+ii0|E|jf$xoKPnC2BT(-!N@_ z!=IF6$%wD4e9fbwD$;+-LHeS-Ku>eU969?XzNQ9E;OmH)EP_X}7a^hHrNWWusf1ql z_A2&0F!{5P8eH>;{s2m!I9W3F(?Q7dm0u+3@A+}YRcv_hQ)O`$B08T{hdWa-1+BlL zUK+PLoy$?VXtPe;4`q59yH_Zd_lW4>BOQiko~bB;p~cVIc4Q*9sec~aM0YFlFwLzs z)yyr~pA1R7hidyolj~@nt@v#RcCszk%i2YLexD2mj->z^r^TR?kdQzXGEQbO#*@=s z30_EAJ?>ICxpu1~Hb+k(g}G!l#M;y>`a!W-U$WfqOT*F_7gjE#vr0+s!`J4v<0B1j z2~V{iao~;?8>bH&l|EsZ0Mnj}E11|{UqRcgF#_;@`}bhp3r7P(WLvDvtSO_8Re7+K zJtJa^L;?%V4`=F+)A0ao)0v0&|{A=F@{c1ThEBlvd$}=GSDb|1&ODySaE!oC2ZMJ zJr?)vtoLBsaC7A5#m>eSJI3kjAMpmaRv8RgRPLf%m07a#NeT6kL=y5E19IIjt^6(Qw zV~nAX6ZOrZs&k*i+etLG1p^>+;v5NTHfQ^g3qxYor;Mg6sN6}PE~eK_WZVMZQm!cV zbb2d5NmvCy)5tv$BAct93JZ@>xEa+Lq@EWlNq43a#wrIxs#fVhRy<`!OJW-QrhAH8 z&70?@q7gmpp!^7IBFxIJ9yG25Eg_OXk^xI5;hyfWIHb%DOVz{H~-4&>3qL{^Q|u4I3k&p3+XyWP52 zU+~y9{gOM9$lE6hV`P5$h!p*?13>MsiJ`|MHA>?8GXrT{tAKtmwjH3X&UGR zt^41uRN&j(?euvhJlXxxZ@4SdDzq>9 zp{o8l_$7ErnnP(UC`osw_R64#+nvi=qZl7r%=U=rIJWY-Y|BuzDIQQ0>z&>9-X+~UAnXU%EnSJxb6v&i|C3g$I%{7 zLUiKH7KkF~&T4O&F#&*5m%@&tqP*-Gg@p8JZxTpL};&TRm(wfEl{5vOn zY}t+fhsP|(N``-w`ANC@8vtIXL(cC8vh2m4)^d-OG%cdEhNM12{VItMsbzUI zMDjj~DiI3kKw%4F=k#+w5c%a%euwleO|E~fg0i_{>BVnqA~c88j(!)}1LzfV^ClO* z#fri1j8S{7$&Ry{-?+>Gwn&iHaL|ON2DqVLvpv1j=eUS~!uCNZhw6v0Pd&604ee(D z)T$m~OVvKjnp^Mn$|vjbwhP^S4+(oe>D0j}ou=VJUeMr^Ok#)#4%ZN2vy0C7iBd`I zjAJAww{;YDv>BYM%<0mXb=x~GHPJ%fo>W7yTo4CCE3zSQf8kw@(1L+Zat6U;w4bG7 z784x@W*D{Xq9RH0Iru8BnTydnBEqL!TH@2535o|o&5H{2 z;|*OdHZkmvzz?~>5+AP0^3weeNkVU;vY+aL0mgjltj;`hUMUoxNW^w6k7}bClE^ttm@njX_>#c=hM=+?+w;oHiz@Z7|{o!^%xk1@Wr1>G@PnEOWA zjiwZYll2SeK=s5~NwjUPKO{9he<4r;MC4%O{X&G8lG(k?epVrcju^NLz^|X~gYB?w zoa?@QOoRLPd@*e?O$5nvpFb@*z?SRp;VHonW!2RUreTfJP}Wc0Reb{KW$9D?Fo+^Y zbO43d#F8x~hC4u1krG4&Lmxe;9zu2J=TxH3W@7*yXLs6YGsvqeSNDt(3jpT{&)iS# zEs#%?dLkb2+*}!JP|QOGS$+6}gBDg`n95B}ErHf?G4P#M3Wruz7g0%nw7JK3cH<=w z^_6#tY#zVXA3IHWf(@s%eK{biB31hdP0!X8?xC*{DwLOZ?2#kBXCe7Rl;h5Oy+qoi z(=DTf30;DS+VoBY^_)(bkK(cOxrJf2ax#^$dr0P##Xxclq*i{nODE=abgYo_Lso*) z_dR0#`VtG%J*$=%{21cL65nN6tR#+2wiEZU^#vvhaFnDs2+rpP&Pb~u@DSWc2?Z;g zM>w~1D7j5#8?qq5*jme(0v)f7j_1d@@hwkd+DnOlP_DL`qSM2-HQ#uxf5+d{3PqHvt$qVWF_FF%NTdv`Ort z#R$sQ=sEQh)2LcD_>+R2Vv{olY4h>w;!vjlGSQ?}by~{ISTXcy(iIP^R-_ z`dnhL$M_vu&+Nr5i|t_poN+{B3W|0(W4jH((z4;M&FNF**yCo4kJvnKN@6wTR|2_8 zHa|4Rk5}>!nyskI@5T;&rlhw@&z|XUnD70$%dSbL`TcM#yc>7C2a}tUnc*+Ls~fzZ znR_Zb$oShnwkReYY}M66CbcplGVZuQy%?co{I-7(ukc9R1dnHRRuB22pS199;_Q5xD>^#y>^7C1`sv=|Hfh5hEV#>Jo+({F%OrgO zYW1qnWo`a4nf!gYu0>>zB+Ae`ZzN@043VD!UY2kzohrj0IHM>@}t*_29=u!8P{C2 zI`M6}_eK9#qUawN)lI1{kh1RW#=>hNcgoY?UJovuIMy z-?uV$PE^BZZFV`bIl~cRFF(NRSMIQX*k3CiT3Q}3e>@XL*z)dBeEX6Bsd2XA9)?Wz%CpzPlV$)tm zeBb9+g6|4ia8IrC+P`N`?Lz9un6^&$bj1mj3TV(GU1|>^@OdpljFg0Tfkx7kylk`K z+JSvT9yZZrhx6kzD`<)tJrHvfuSIDk1rL`kpky#49r^Jl9x4)8kRQyO{X&$?(UB-d zL}LibClg%VPh$R#i)k!y3iRhBISD`g;5Nyp=`L-rirM`?^~fWE6Z>t=rw8;g26@jL zklGz*{n2bYS%rvnej^>yaUfUOe7|zZBiiziLaD!#-tR%mP4PxaQ2cw(I1heO#)ZUQ zAW&FD^;*8NE??SzcdO9N<)!mrbN1M%>f7sRp^aFNEo?TSL+F2$(6W3&TYJqPAtvq+ zD<up2V#FMCd-W}~}o&AU}HGnAo5%GNt34p6;*G*qTb z%_#2Y{09MtX&dr^l2Yaj{*azk{t~;Ydv{7hm=T?t%HwoVtFlmc2(4mx)FW}OP|lO> zO6`igm~M0lX^Px$TvbHEp{rRX)7_A(x~D#FY*HQB<*@;pA(e{^D6l^q_fW^Pi+||2 z#a^;npkNY!9`1?0kiv`v%Yh^62Mf^*8t0a!B*m2%uSBW|L^3^&UfNxGkH8jnf0Snb z4kXKVXEC8$oAGa`<{_x)o*Q4V2_gU~ix5NeF%EKYD$CrtlIBm3#^yP`{4m_5vFPJZ z`2OHUEhO0xgBVbLT=phmt9S1W1$}+dG?ppH8|dyhhR)@z`d)>}vomG4RC~FovFr+$ z!TAu0)3L+&0dB_elM^o43rXzv_kWU5g&&?b1`zhNdE9+CKxoupTu~cwToqQ%^d+4Q zSIcYe@>NnI_MAyX?L>K97PZFks5;dz5rHg!kA*yWtjC?Xwl!qo@CVv zNN<6wP8vVrXwerKooVYXgg?KZqNs9Ze#GVb?gO$2^Mj$QBouv<@9geVT)!e|d}Q|K zUW&v07ZW8s6~z;Yf(URFd2O5piwHFa`S6%G5(P&3peN|HFKlgQP~QkspgUyrYH(OmBpVy^LW1_o zBxF|T*VK}T_X3L;r2DHdNwtG(OrGG9&zwK-duaL~5}1s?@w+Ft34RNaL2NfoLfKOf z{9}7BlJ8#q&JrXMeD-6E!x9A?z*^Oo8-h~_shcLT6wSqdy{`&b5Kzt+p>&4&qClRZ zrY+0bL@&5Nmx=mZK6=UL*(cMhoK8!W@NaKzaCsY!VT4W{%z}5o9nU}Ud`Up;QlC`) zST{22sZ>T9mDbcI_13_$8))JKr}0FUTsg7|HqMyKF0Fr_)LiHZoP+f`Pyrjg((f0k zI9-xxVu^(h1dR$9pS_P$B3DJ_!)@XT>VDNfckiG_CCI>s+opHCY~oF&fl#-O*~!T-7d31%FVk`G zIftrW)ZE_!-+Rj(4TxpgP(5VSN-656vNmj_leGETsoObtMRDtT)4AHm9{$-tzuW@; zwNYcHY3GcXlcVW)S(r+YN#=EV5F=&3aH^-sxrJ`^DrWrF#Y#_+bKLf1%__KGRBXfi z4siIB!Iay>b%DcC8776Pd>50-t5Uh$#!BowT?aQ%Az=}8mLfspb6hU^PhW3NAbSTcfijpyg4RQ-m+5TDL%~oc#_oiy2GR1zV3Xvvl5eDCTghV zVpmCH>k6;(1i&6OAA*=`7qTb+0J8w=wEomj^57&B90f)3a&i z2l>mKXw$4RQ8A;HZVeyQ=I~dyJ(poh(;|=RUI4e#ndPs7GVfyO6o6!+>Y~)WK;_og zFK30^CQk)G6fSvmGOx>4*gUB=o7wv*oytR)!r&2fG8?&e#}OZIZ#-fsg4ZplcFdmr z>?vwag;F180xyy2flgZtdMD}*A!Ad?kAyNnbinzqPeGZw;G&UKI+;u9g2w%emE!oT z?F(C+ZBIuh7;6-rOyhc7ET=-V!}-=Eyf#sC=^NrbPnASarp=%CvST&p_2>%F=_89GMgauE7U0^!@yx6fYEWVgQM1HQFyOdI-!M84uXs zUgo9$v&;TB4|R=})Wgsl*9_Xdq%&@_VU;zaPi5b9U2mUKZ+q3&w5(DBoT`>p5WjOh zT3B=@7j0P)3^=RC0(~y@)6lw-QD%rHb3~sZN5AR(0=*x@2T0s-^9tL{dE-;zLuw+Q zo5w4=CjaMgf8g;S&xL0$uaYUnIb{&1tE|GB><=dGev)}19v`BKsSQ4?ytODmwg9vk zI_q}|3$3~~H})Hl1l&+tuM^fkv2UI@o9y@9SxMQGLO72ny$+(YD6O1`rn4Lvvg)r{ zoENwk&||D#(Wtjla2^5M!q3_Cz(wVoK7ZRTpJd^>3h8_U}2}{FeWFy zig39gNu%*1e%0o5E&8z?oJ{VIp;+&I ze3r6PJ8r=?NClY5_iOgK)t^fgv|+s|P`~Z4ezfUFGEux(dJPUcL2~fAaf^!q#KT8_ zf7qmH0@crFyDCYe>7h#~A|w^2N8NsoeIzIH0?1)xKoQX8@sCrz?!L*vYg_Vzk(n8A zaI>&i$MDbNk{_yY7dkd+-1~`3RM1`i#T*$=0C(m_egwB?)!=Emdt#=+r?8gd- zId;%LOZ8>8T#gM@_ud^O6{N_dPEPgMdp?SWhpQ;_xQM!Ux)P|6hZ>9T5pc;@s0!v) zC}@PNr{Mc`oKnh>aCCFGS896_s{2+3r)}3fM32p|N!d7PkK`<)n?9Y&pxK*yNA)a& zNvQFDoRs!r!$i{5?pc4y1d+=J)ev3MYUTu9-*d}N`-nLUf{vx1);M!$CqL`cY8RbO zvNA`?bQ@yP;&G)%i(OWw9~UJGh%~yx3L0wvWlc!8Aj-Fd>Tkx@Uug7wD>WFh@Jm=C z*#OB*I&;WJ> z-qZMyTJZ&t87aA`=U=i%X6BYCY$B>9B$BZM-BdF3b^7e$J0E6dS3A|u=x)*?OO{xSvk60L zijEf@I8S6Sa=Jc@tq^Oc2Ra#*d)%2SpRb&=F=@kq54?RXqvvtnl%{vUd+t#7V_ZR@xle4!WlFSd;26Zp>|=@^zYsS09q zK8m#sRly$LYNqf-UCyD2wwCXq&lGCGzmMFSc3W%fq5Wl!Yo$6UcqlMhJVpNAsL{h% zSyb9SH1UVVQ?uRJFTNFkGOgNoq%z9Hb@OHaM6qogQ*7@?HPyJ-1+rWg4W6k5STNP& zXC#fFniT&r`X2W}P!Ti3+b&mC?#UtCvVg?ic$QZ^1t6{g^x5jZY0rZ$QhNjEXZgB- zwF;Z5?x7`R-q=IW_<1lL{krfJV+l(XEGA#IFHgiw>J&*y*cjsLF~$zF7wEV2wEBJy zqsQN>vtBIUPPeKE<`o=&F)<0mQP2r%!K`gaoPhJOegcP^JUrrTT`2EU&243bfD>3n z&P(xF#l-MT%asUroGUHDl@ZT=co-;X$~x9l-mAPwA?VWHFo8PTd{_+e*b+N!Ur86p z%x|MwiMFO_UO$a?HaSBM|7~cI>f>E~p7o+ZzjB_>ddnh>x;=v)%w^Ji0NJ^iefk2= zz~dmAhRkgIk+{Rhz{%^~T|yo3Bb{Lu9@aatFQ>O)oYMAbl$qj$aUrT9Tn9CMVYm+f zDX@xzxl~qphGqw$P^1e1v0x&;{b zJkg?dNg`#BoOp$HRP9qjoiBd*|ymsEgK$a|yVg#?g>hYf%S zBCiA$qEzcX+!L}M>|~1H2Rdmg9DlO#C_&UZKHc)l<<153Sg``wE+C~UMpaxvnc$pV z!CYNge?7rHG1c#q315sg&ri~>^p6{k5S#zro3uc&\2B+KaiZ#CygQ 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 diff --git a/docs/media/nuget-roles.png b/docs/media/nuget-roles.png index 23eb5e7edad6a08021c89ab74fb165de8a8c2f03..3cb11c3c5a25990a7a47bfeccb91abea5d56e9e3 100644 GIT binary patch literal 18753 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∈aB5_jtIAb!>c`IV)wMXuQ}{FL!sqXvjN8~6 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 From eed501bddf822b3c94e05d44aeb0e907fdebfad3 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 27 Jul 2017 10:38:21 -0700 Subject: [PATCH 0088/2943] Fix relative links --- docs/What-is-NuGet.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index a6cebf332..8808c2330 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -34,7 +34,7 @@ An essential tool for any modern development platform is a mechanism through whi ## The flow of packages between creators, hosts, and consumers -In its role as host, NuGet itself maintains the central repository of over 60,000 unique, publicly-available packages at [nuget.org](https://www.nuget.org). These packages are employed by millions of .NET developers every day. NuGet also enables you to host packages privately in the cloud, on a private network, or even on just your local file system. By doing so, those packages are available to only those developers within a particular organization or customer group. The options are explained on [Hosting your own NuGet feeds](../hosting/overview.md). +In its role as host, NuGet itself maintains the central repository of over 60,000 unique, publicly-available packages at [nuget.org](https://www.nuget.org). These packages are employed by millions of .NET developers every day. NuGet also enables you to host packages privately in the cloud, on a private network, or even on just your local file system. By doing so, those packages are available to only those developers within a particular organization or customer group. The options are explained on [Hosting your own NuGet feeds](./hosting/overview.md). Whatever its nature, a host serves as a point of connection between package *creators* and package *consumers*. Creators build useful NuGet packages and publish them to a host. Consumers then search for useful and compatible packages on accessible hosts, downloading and including those packages in their projects. Once installed in a project, the packages' APIs are available to the rest of the project code. @@ -48,12 +48,12 @@ In addition to hosting support, NuGet also provides a variety of tools used by b | Tool | Platforms | Applicable Scenarios | Description | | --- | --- | --- | --- | -| [nuget.exe CLI](../tools/nuget-exe-cli-reference.md) | All | Creation, Consumption | Provides all NuGet capabilities, with some commands applying specifically to package creators, some applying only to consumers, and others applying to both. For example, package creators use the `nuget pack` command to create a package from various assemblies and related files, package consumers use `nuget install` to include packages in a project, and everyone uses `nuget config` to set NuGet configuration variables. | -| [Package Manager UI](../tools/package-manager-ui.md) | Visual Studio on Windows | Consumption | Provides an easy-to-use UI for installing and managing packages in .NET projects. | +| [nuget.exe CLI](./tools/nuget-exe-cli-reference.md) | All | Creation, Consumption | Provides all NuGet capabilities, with some commands applying specifically to package creators, some applying only to consumers, and others applying to both. For example, package creators use the `nuget pack` command to create a package from various assemblies and related files, package consumers use `nuget install` to include packages in a project, and everyone uses `nuget config` to set NuGet configuration variables. | +| [Package Manager UI](./tools/package-manager-ui.md) | Visual Studio on Windows | Consumption | Provides an easy-to-use UI for installing and managing packages in .NET projects. | | [Manage NuGet UI](https://docs.microsoft.com/en-us/visualstudio/mac/nuget-walkthrough) | Visual Studio for Mac | Consumption | Provide an easy-to-use UI for installing and managing packages in .NET projects. | -| [Package Manager Console](../tools/package-manager-console.md) | Visual Studio on Windows | Consumption | Provides [PowerShell commands](../tools/Powershell-Reference.md) for installing and managing packages in .NET projects. | -| [dotnet CLI](../tools/dotnet-commands.md) | All | Creation, Consumption | Provides certain NuGet CLI capabilities directly within the .NET Core toolchain. | -| [MSBuild](../schema/msbuild-targets.md) | Windows | Creation, Consumption | Provides the ability to create packages and restore packages used in a project directly through the MSBuild toolchain. | +| [Package Manager Console](./tools/package-manager-console.md) | Visual Studio on Windows | Consumption | Provides [PowerShell commands](./tools/Powershell-Reference.md) for installing and managing packages in .NET projects. | +| [dotnet CLI](./tools/dotnet-commands.md) | All | Creation, Consumption | Provides certain NuGet CLI capabilities directly within the .NET Core toolchain. | +| [MSBuild](./schema/msbuild-targets.md) | Windows | Creation, Consumption | Provides the ability to create packages and restore packages used in a project directly through the MSBuild toolchain. | As you can see, the tools with which you work with NuGet depend greatly on whether you're creating (and publishing) packages or consuming them, and the platform you're working on. More specific details can be found in the [Package creation workflow](./Create-Packages/Overview-and-Workflow.md) and [Package consumption workflow](./Consume-Packages/Overview-and-Workflow.md) topics, along with other topics in those sections. @@ -87,9 +87,9 @@ Clearly, then, NuGet's primarily role where developers are concerned is maintain How this exactly happens has evolved over the different versions of NuGet, resulting in several *package management formats*, as they're called: -- [`packages.config`](../schema/packages.config.md): *(NuGet 1.0+)* An XML file that maintains a flat list of all dependencies in the project, including the dependencies of other installed packages. -- [`project.json`](../schema/project-json.md): *(NuGet 3.0+)* A JSON file that maintains a list of the project's dependencies with an overall package graph in an associated file, `project.lock.json`. This structure provides improved performance over `packages.config` as described on [Dependency Resolution](../consume-packages/dependency-resolution.md), including transitive restore, but has itself been generally superceded by PackageReference below. -- [Package references in project files](../consume-packages/package-references-in-project-files.md) (also known as "PackageReference") | *(NuGet 4.0+)* Maintains a list of a project's top-level dependencies directly within the project file, so no separate file is needed. An associated file, `project.assets.json`, is dynamically generated like `project.lock.json` to manage the overall dependency graph. +- [`packages.config`](./schema/packages.config.md): *(NuGet 1.0+)* An XML file that maintains a flat list of all dependencies in the project, including the dependencies of other installed packages. +- [`project.json`](./schema/project-json.md): *(NuGet 3.0+)* A JSON file that maintains a list of the project's dependencies with an overall package graph in an associated file, `project.lock.json`. This structure provides improved performance over `packages.config` as described on [Dependency Resolution](./consume-packages/dependency-resolution.md), including transitive restore, but has itself been generally superceded by PackageReference below. +- [Package references in project files](./consume-packages/package-references-in-project-files.md) (also known as "PackageReference") | *(NuGet 4.0+)* Maintains a list of a project's top-level dependencies directly within the project file, so no separate file is needed. An associated file, `project.assets.json`, is dynamically generated like `project.lock.json` to manage the overall dependency graph. Which package management format is employed in any given project depends on the project type, and the available version of NuGet and Visual Studio. To check what format is being used, simply look for `packages.config` or `project.json` in the project root after installing your first package. If you don't see either file, look in the project file directly for a <PackageReference>element. @@ -99,7 +99,7 @@ In Visual Studio 2017, for example, most project types use `packages.config` exc To summarize what we've covered so far, NuGet provides (in its hosting role) the central nuget.org repository and supports private hosting. NuGet provides the tools developers need for creating, publishing, and consuming packages. And most importantly, NuGet maintains a reference list of packages used in a project and the ability to restore and update those packages from that list. -To make these processes work efficiently, NuGet does some behind-the-scenes optimizations. Most notably, NuGet manages both computer-wide and project-specific package caches to shortcut installation and reinstallation. Where the computer-wide cache is concerned, any package that you download and install in a project is stored in the cache, such that installing the same package in another project doesn't have to download it again. This is clearly very helpful when you're frequently restoring a larger number of packages, as on a build server. For more details on the mechanism and how to work with it, see [Managing the NuGet cache](../consume-packages/managing-the-nuget-cache.md). +To make these processes work efficiently, NuGet does some behind-the-scenes optimizations. Most notably, NuGet manages both computer-wide and project-specific package caches to shortcut installation and reinstallation. Where the computer-wide cache is concerned, any package that you download and install in a project is stored in the cache, such that installing the same package in another project doesn't have to download it again. This is clearly very helpful when you're frequently restoring a larger number of packages, as on a build server. For more details on the mechanism and how to work with it, see [Managing the NuGet cache](./consume-packages/managing-the-nuget-cache.md). Within an individual project, NuGet does a lot of work to manage the overall dependency graph. (When using `project.json` or <PackageReference>, NuGet keeps that information in a secondary file called `project.lock.json` and `project.assets.json`, respectively.) This again includes resolving multiple references to different versions of the same package. From ec91678c9f600c33035ab8a6eae1455a195c7954 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 27 Jul 2017 10:51:18 -0700 Subject: [PATCH 0089/2943] Relative links --- docs/What-is-NuGet.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index 8808c2330..9393b78f4 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -34,7 +34,7 @@ An essential tool for any modern development platform is a mechanism through whi ## The flow of packages between creators, hosts, and consumers -In its role as host, NuGet itself maintains the central repository of over 60,000 unique, publicly-available packages at [nuget.org](https://www.nuget.org). These packages are employed by millions of .NET developers every day. NuGet also enables you to host packages privately in the cloud, on a private network, or even on just your local file system. By doing so, those packages are available to only those developers within a particular organization or customer group. The options are explained on [Hosting your own NuGet feeds](./hosting/overview.md). +In its role as host, NuGet itself maintains the central repository of over 60,000 unique, publicly-available packages at [nuget.org](https://www.nuget.org). These packages are employed by millions of .NET developers every day. NuGet also enables you to host packages privately in the cloud, on a private network, or even on just your local file system. By doing so, those packages are available to only those developers within a particular organization or customer group. The options are explained on [Hosting your own NuGet feeds](Hosting-Packages/Overview.md). Whatever its nature, a host serves as a point of connection between package *creators* and package *consumers*. Creators build useful NuGet packages and publish them to a host. Consumers then search for useful and compatible packages on accessible hosts, downloading and including those packages in their projects. Once installed in a project, the packages' APIs are available to the rest of the project code. @@ -48,14 +48,14 @@ In addition to hosting support, NuGet also provides a variety of tools used by b | Tool | Platforms | Applicable Scenarios | Description | | --- | --- | --- | --- | -| [nuget.exe CLI](./tools/nuget-exe-cli-reference.md) | All | Creation, Consumption | Provides all NuGet capabilities, with some commands applying specifically to package creators, some applying only to consumers, and others applying to both. For example, package creators use the `nuget pack` command to create a package from various assemblies and related files, package consumers use `nuget install` to include packages in a project, and everyone uses `nuget config` to set NuGet configuration variables. | -| [Package Manager UI](./tools/package-manager-ui.md) | Visual Studio on Windows | Consumption | Provides an easy-to-use UI for installing and managing packages in .NET projects. | -| [Manage NuGet UI](https://docs.microsoft.com/en-us/visualstudio/mac/nuget-walkthrough) | Visual Studio for Mac | Consumption | Provide an easy-to-use UI for installing and managing packages in .NET projects. | -| [Package Manager Console](./tools/package-manager-console.md) | Visual Studio on Windows | Consumption | Provides [PowerShell commands](./tools/Powershell-Reference.md) for installing and managing packages in .NET projects. | -| [dotnet CLI](./tools/dotnet-commands.md) | All | Creation, Consumption | Provides certain NuGet CLI capabilities directly within the .NET Core toolchain. | -| [MSBuild](./schema/msbuild-targets.md) | Windows | Creation, Consumption | Provides the ability to create packages and restore packages used in a project directly through the MSBuild toolchain. | +| [nuget.exe CLI](Tools/nuget-exe-CLI-Reference.md) | All | Creation, Consumption | Provides all NuGet capabilities, with some commands applying specifically to package creators, some applying only to consumers, and others applying to both. For example, package creators use the `nuget pack` command to create a package from various assemblies and related files, package consumers use `nuget install` to include packages in a project, and everyone uses `nuget config` to set NuGet configuration variables. | +| [Package Manager UI](Tools/Package-Manager-UI.md) | Visual Studio on Windows | Consumption | Provides an easy-to-use UI for installing and managing packages in .NET projects. | +| [Manage NuGet UI](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough) | Visual Studio for Mac | Consumption | Provide an easy-to-use UI for installing and managing packages in .NET projects. | +| [Package Manager Console](Tools/Package-Manager-Console.md) | Visual Studio on Windows | Consumption | Provides [PowerShell commands](Tools/Powershell-Reference.md) for installing and managing packages in .NET projects. | +| [dotnet CLI](Tools/dotnet-Commands.md) | All | Creation, Consumption | Provides certain NuGet CLI capabilities directly within the .NET Core toolchain. | +| [MSBuild](Schema/msbuild-targets.md) | Windows | Creation, Consumption | Provides the ability to create packages and restore packages used in a project directly through the MSBuild toolchain. | -As you can see, the tools with which you work with NuGet depend greatly on whether you're creating (and publishing) packages or consuming them, and the platform you're working on. More specific details can be found in the [Package creation workflow](./Create-Packages/Overview-and-Workflow.md) and [Package consumption workflow](./Consume-Packages/Overview-and-Workflow.md) topics, along with other topics in those sections. +As you can see, the tools with which you work with NuGet depend greatly on whether you're creating (and publishing) packages or consuming them, and the platform you're working on. More specific details can be found in the [Package creation workflow](Create-Packages/Overview-and-Workflow.md) and [Package consumption workflow](Consume-Packages/Overview-and-Workflow.md) topics, along with other topics in those sections. Package creators are typically also consumers, as they build on top of functionality that exists in other NuGet packages. And those packages, of course, may in turn depend on still others. @@ -69,17 +69,17 @@ The following image shows a project that depends on five packages, which in turn Notice that some packages appear multiple times in the dependency graph. For example, there are four different consumers of package B, and each consumer might also specify a different version for that package (not shown). Because this is a common occurrence, NuGet fortunately does all the hard work to determine exactly which version of package B satisfies all its consumers. NuGet then does the same for all other packages, no matter how deep the dependency graph becomes. -For more details on how NuGet performs this service, see [Dependency resolution](./Consume-Packages/Dependency-Resolution.md). +For more details on how NuGet performs this service, see [Dependency resolution](Consume-Packages/Dependency-Resolution.md). ## Tracking references and restoring packages Because projects can easily move between developer computers, source control repositories, build servers, and so forth, it's highly impractical to keep binary assemblies from NuGet packages directly bound to a project. Not only would this make each copy of the project unnecessarily bloated (and thereby waste space in source control repositories), it would also make it very difficult to update package binaries to newer versions as this would have to be done across all copies of the project. -Instead, NuGet simply maintains a reference list of the packages upon which a project depends (including both top-level and down-level dependencies), and provides the means to restore all referenced packages upon request as described on [Package restore](./Consume-Packages/Package-Restore.md). That is, whenever you install a package from some host into a project, NuGet records the package identifier and version number in this reference list. (Uninstalling a package, of course, removes it from the list.) +Instead, NuGet simply maintains a reference list of the packages upon which a project depends (including both top-level and down-level dependencies), and provides the means to restore all referenced packages upon request as described on [Package restore](Consume-Packages/Package-Restore.md). That is, whenever you install a package from some host into a project, NuGet records the package identifier and version number in this reference list. (Uninstalling a package, of course, removes it from the list.) ![A NuGet reference list is created on package installation and can be used to restore packages elsewhere](media/nuget-restore.png) -With only the reference list, NuGet can then reinstall—that is, restore—all of those packages from public and/or private hosts at any later time. (For this reason, nuget.org does not allow permanent deletion of published packages, although they can be hidden; see [Deleting packages](policies/deleting-packages.md).) When committing a project to source control, or sharing it is some other way, you need only include the reference list and need not include any package binaries (see [Packages and source control](./Consume-Packages/Packages-and-Source-Control.md). +With only the reference list, NuGet can then reinstall—that is, restore—all of those packages from public and/or private hosts at any later time. (For this reason, nuget.org does not allow permanent deletion of published packages, although they can be hidden; see [Deleting packages](Policies/deleting-packages.md).) When committing a project to source control, or sharing it is some other way, you need only include the reference list and need not include any package binaries (see [Packages and source control](Consume-Packages/Packages-and-Source-Control.md). The computer that receives a project, such as a build server obtaining a copy of the project as part of an automated deployment system, simply asks NuGet to restore dependencies whenever they're needed. Build systems like Visual Studio Team Services provide "NuGet restore" steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository) then open the project in Visual Studio and run a build, Visual Studio automatically restores the necessary NuGet packages. Developers can also tell NuGet to restore packages at any time using the the `nuget restore` CLI command or the `Install-Package` cmdlet in the Package Manager Console. @@ -87,9 +87,9 @@ Clearly, then, NuGet's primarily role where developers are concerned is maintain How this exactly happens has evolved over the different versions of NuGet, resulting in several *package management formats*, as they're called: -- [`packages.config`](./schema/packages.config.md): *(NuGet 1.0+)* An XML file that maintains a flat list of all dependencies in the project, including the dependencies of other installed packages. -- [`project.json`](./schema/project-json.md): *(NuGet 3.0+)* A JSON file that maintains a list of the project's dependencies with an overall package graph in an associated file, `project.lock.json`. This structure provides improved performance over `packages.config` as described on [Dependency Resolution](./consume-packages/dependency-resolution.md), including transitive restore, but has itself been generally superceded by PackageReference below. -- [Package references in project files](./consume-packages/package-references-in-project-files.md) (also known as "PackageReference") | *(NuGet 4.0+)* Maintains a list of a project's top-level dependencies directly within the project file, so no separate file is needed. An associated file, `project.assets.json`, is dynamically generated like `project.lock.json` to manage the overall dependency graph. +- [`packages.config`](Schema/packages-config.md): *(NuGet 1.0+)* An XML file that maintains a flat list of all dependencies in the project, including the dependencies of other installed packages. +- [`project.json`](Schema/project-json.md): *(NuGet 3.0+)* A JSON file that maintains a list of the project's dependencies with an overall package graph in an associated file, `project.lock.json`. This structure provides improved performance over `packages.config` as described on [Dependency Resolution](Consume-Packages/Dependency-Resolution.md), including transitive restore, but has itself been generally superceded by PackageReference below. +- [Package references in project files](Consume-Packages/Package-References-in-Project-Files.md) (also known as "PackageReference") | *(NuGet 4.0+)* Maintains a list of a project's top-level dependencies directly within the project file, so no separate file is needed. An associated file, `project.assets.json`, is dynamically generated like `project.lock.json` to manage the overall dependency graph. Which package management format is employed in any given project depends on the project type, and the available version of NuGet and Visual Studio. To check what format is being used, simply look for `packages.config` or `project.json` in the project root after installing your first package. If you don't see either file, look in the project file directly for a <PackageReference>element. @@ -99,13 +99,13 @@ In Visual Studio 2017, for example, most project types use `packages.config` exc To summarize what we've covered so far, NuGet provides (in its hosting role) the central nuget.org repository and supports private hosting. NuGet provides the tools developers need for creating, publishing, and consuming packages. And most importantly, NuGet maintains a reference list of packages used in a project and the ability to restore and update those packages from that list. -To make these processes work efficiently, NuGet does some behind-the-scenes optimizations. Most notably, NuGet manages both computer-wide and project-specific package caches to shortcut installation and reinstallation. Where the computer-wide cache is concerned, any package that you download and install in a project is stored in the cache, such that installing the same package in another project doesn't have to download it again. This is clearly very helpful when you're frequently restoring a larger number of packages, as on a build server. For more details on the mechanism and how to work with it, see [Managing the NuGet cache](./consume-packages/managing-the-nuget-cache.md). +To make these processes work efficiently, NuGet does some behind-the-scenes optimizations. Most notably, NuGet manages both computer-wide and project-specific package caches to shortcut installation and reinstallation. Where the computer-wide cache is concerned, any package that you download and install in a project is stored in the cache, such that installing the same package in another project doesn't have to download it again. This is clearly very helpful when you're frequently restoring a larger number of packages, as on a build server. For more details on the mechanism and how to work with it, see [Managing the NuGet cache](Consume-Packages/Managing-the-Nuget-Cache.md). Within an individual project, NuGet does a lot of work to manage the overall dependency graph. (When using `project.json` or <PackageReference>, NuGet keeps that information in a secondary file called `project.lock.json` and `project.assets.json`, respectively.) This again includes resolving multiple references to different versions of the same package. -That is, it's quite common that a project takes a dependency on one or more packages that themselves have the same dependencies. For example, some of the most useful utility packages on nuget.org are employed by many other packages. In the entire dependency graph, ten, you could easily have ten different references to different versions of the same package. However, you don't want to bring multiple versions of that package into the application itself, so NuGet sorts out which single version that everyone can use. (See [Dependency Resolution](consume-packages/dependency-resolution.md) for more on this topic.) +That is, it's quite common that a project takes a dependency on one or more packages that themselves have the same dependencies. For example, some of the most useful utility packages on nuget.org are employed by many other packages. In the entire dependency graph, ten, you could easily have ten different references to different versions of the same package. However, you don't want to bring multiple versions of that package into the application itself, so NuGet sorts out which single version that everyone can use. (See [Dependency Resolution](Consume-Packages/Dependency-Resolution.md) for more on this topic.) -Beyond that, NuGet maintains all the specifications related to how packages are structured (including [localization](Create-Packages/Creating-Localized-Packages.md) and [debug symbols](Create-Packages/Symbol-Packages.md) and how they are referenced (including [version ranges](consume-packages/dependency-versions.md) and [pre-release versions](create-packages/Prerelease-Packages.md). NuGet also and provides APIs for credential providers (for accessing private hosts) and for developers who write Visual Studio extensions and project templates. +Beyond that, NuGet maintains all the specifications related to how packages are structured (including [localization](Create-Packages/Creating-Localized-Packages.md) and [debug symbols](Create-Packages/Symbol-Packages.md) and how they are referenced (including [version ranges](create-packages/dependency-versions.md) and [pre-release versions](create-packages/Prerelease-Packages.md). NuGet also and provides APIs for credential providers (for accessing private hosts) and for developers who write Visual Studio extensions and project templates. Take a moment to browse the table of contents for this documentation, and you'll see all of these capabilities represented there, along with release notes dating back to NuGet's beginnings. From b76346accc1fc366392e8e8c2e7d2f7b4aa0bc2b Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 28 Jul 2017 14:30:04 -0700 Subject: [PATCH 0090/2943] Update Implicit Referenced UI --- docs/Tools/Package-Manager-UI.md | 6 +++--- .../media/PackageManagerUIAutoReferenced.png | Bin 6801 -> 6897 bytes 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index cb3dafe9d..9c43ac4a1 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -5,7 +5,7 @@ title: NuGet Package Manager UI Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/24/2017 +ms.date: 07/24/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -81,9 +81,9 @@ In this topic: ![Updating a package](media/UpdatePackages.png) -4. If the **Update** button is disabled and the package is marked as **AutoReferenced**, it means that it's part of a larger framework or SDK and should not be updated independently. (These packages, such as Microsoft.NETCore.App and Microsoft.NETStandard.Library, are marked internally with `True`.) To update the package, you must update the SDK to which it belongs. +4. For some packages, the **Update** button is disabled and the package a message appears saying that it's "Implicitly referenced by an SDK". (In some versions of Visual Studio the text may read only "AutoReferenced".) These conditions indicate that the package, such as Microsoft.NETCore.App, is part of a larger framework or SDK and should not be updated independently. (Such packages, of which Microsoft.NETStandard.Library is another example, are marked internally with `True`.) To update the package, you must update the SDK to which it belongs. - ![Example package marked as AutoReferenced](media/PackageManagerUIAutoReferenced.png) + ![Example package marked as Implicitly references or AutoReferenced](media/PackageManagerUIAutoReferenced.png) ## Managing packages for the solution diff --git a/docs/Tools/media/PackageManagerUIAutoReferenced.png b/docs/Tools/media/PackageManagerUIAutoReferenced.png index 2b1e407a7dc2219b3b13065b2968ca10948b7284..2344e9aaf02ca5f1a7499b86255c4ddf74b246da 100644 GIT binary patch literal 6897 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 WUaC2C*2evwg1{9tz*2dOkpBQf43{VX literal 6801 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 IDZ_yO1u>DEzW@LL From 52f7a258a212543e9e72ace84b083e9fdd68cb98 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Mon, 31 Jul 2017 16:09:22 -0700 Subject: [PATCH 0091/2943] Change global cache to global packages folder --- docs/Consume-Packages/Managing-the-NuGet-Cache.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Consume-Packages/Managing-the-NuGet-Cache.md b/docs/Consume-Packages/Managing-the-NuGet-Cache.md index 5795f7b2e..6e2ae243e 100644 --- a/docs/Consume-Packages/Managing-the-NuGet-Cache.md +++ b/docs/Consume-Packages/Managing-the-NuGet-Cache.md @@ -42,7 +42,7 @@ Typical output is as follows: http-cache: C:\Users\user\AppData\Local\NuGet\v3-cache #NuGet 3.x+ cache packages-cache: C:\Users\user\AppData\Local\NuGet\Cache #NuGet 2.x cache - global-packages: C:\Users\user\.nuget\packages\ #Global cache + global-packages: C:\Users\user\.nuget\packages\ #Global packages folder temp: C:\Users\user\AppData\Local\Temp\NuGetScratch #Temp folder 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: @@ -50,7 +50,7 @@ If you encounter package installation problems or otherwise want to ensure that ``` nuget locals http-cache -clear #Clear the 3.x+ cache nuget locals packages-cache -clear #Clear the 2.x cache -nuget locals global-packages -clear #Clear the global cache +nuget locals global-packages -clear #Clear the global packages folder nuget locals temp -clear #Clear the temporary cache nuget locals all -clear #Clear all caches ``` From 9cec669ff7736688b82afebe1c8eacdd25c5320f Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Tue, 1 Aug 2017 16:22:33 -0700 Subject: [PATCH 0092/2943] Update Target-Frameworks.md --- docs/Schema/Target-Frameworks.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/Schema/Target-Frameworks.md b/docs/Schema/Target-Frameworks.md index 91d6ab481..a27c1d095 100644 --- a/docs/Schema/Target-Frameworks.md +++ b/docs/Schema/Target-Frameworks.md @@ -20,6 +20,7 @@ keywords: NuGet package targeting, .NET framework targets, .NET framework versio #audience: #ms.devlang: ms.reviewer: +- anangaur - karann - unnir #ms.suite: @@ -89,8 +90,12 @@ Universal Windows Platform | uap | uap [uap10.0] | | | netstandard1.4 | | | netstandard1.5 | | | netstandard1.6 -.NET Core App | netcoreapp | netcoreapp1.0 -| | | netcoreapp1.1 +| | | netstandard2.0 +.NET Core App | netcoreapp | netcoreapp1.0| +| | | netcoreapp1.1| +| | | netcoreapp2.0| +Tizen | tizen | tizen3| +| | | tizen4| ## Deprecated frameworks The following frameworks are deprecated. Packages targeting these frameworks should migrate to the indicated replacements. From 53575f767274da26e3be2f41c83f3d93859d9061 Mon Sep 17 00:00:00 2001 From: Vedant Koditkar Date: Mon, 7 Aug 2017 14:42:10 +0530 Subject: [PATCH 0093/2943] Typos --- docs/Create-Packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 7384a1cca..e55a0e0f6 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -70,7 +70,7 @@ Resources are, in fact, a special case. When a package is installed into a proje Once you know what files you want to package, the next step is creating a `.nuspec` package manifest. The manifest is an XML file that describes the package's contents and is itself included in the package. The manifest both drives the creation of the package and instructs NuGet on how to install the package into a project. The manifest, for example, identifies other package dependencies such that NuGet can also install those dependencies when the main package is installed. -The manifest contains both required an optional properties as described below. For exact details, including other properties not mentioned here, see the [.nuspec reference](../schema/nuspec.md). +The manifest contains both required and optional properties as described below. For exact details, including other properties not mentioned here, see the [.nuspec reference](../schema/nuspec.md). Required properties: - The package identifier, which must be unique across the gallery that hosts the package. From 41e1683e0c891d387bd853ba9ac35f755c7b4bae Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 8 Aug 2017 11:53:44 -0700 Subject: [PATCH 0094/2943] Addressing minor customer comments --- docs/Consume-Packages/Package-Restore.md | 2 +- docs/Create-Packages/Prerelease-Packages.md | 4 +++- docs/Guides/Install-NuGet.md | 15 +++++++-------- docs/Schema/msbuild-targets.md | 2 +- docs/Tools/nuget-exe-CLI-Reference.md | 2 +- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/Consume-Packages/Package-Restore.md index 1aa0c2d1a..1eae273d6 100644 --- a/docs/Consume-Packages/Package-Restore.md +++ b/docs/Consume-Packages/Package-Restore.md @@ -240,7 +240,7 @@ To avoid all these issues, it's recommended to migrate any project using MSBuild The process is as follows: 1. Close Visual Studio to avoid file potential file locks and conflicts. -1. If using TFS: +1. If using Team Foundation Server (TFS): 1. Remove `nuget.exe` and `NuGet.targets` from the solution's `.nuget` folder and remove those files from the solution workspace. 1. Retain `Nuget.Config` with the `disableSourceControlIntegration` setting as explained in [Omitting packages with Team Foundation Version Control](../consume-packages/packages-and-source-control.md#omitting-packages-with-team-foundation-version-control). 1. If not using TFS: diff --git a/docs/Create-Packages/Prerelease-Packages.md b/docs/Create-Packages/Prerelease-Packages.md index 1252f7752..9070106f0 100644 --- a/docs/Create-Packages/Prerelease-Packages.md +++ b/docs/Create-Packages/Prerelease-Packages.md @@ -103,9 +103,11 @@ Whatever suffixes you use, however, NuGet will give them precedence in reverse a 1.0.1-zzz 1.0.1-rc 1.0.1-open +1.0.1-beta12 +1.0.1-beta05 1.0.1-beta 1.0.1-alpha2 1.0.1-alpha ``` -As shown, the version without any suffix will always take precedence over pre-release versions. +As shown, the version without any suffix will always take precedence over pre-release versions. Note also that if you use numerical suffixes with pre-release tags that might use double-digit numbers (or more), use leading zeroes as in beta01 and beta05 to ensure that they sort correctly when the numbers get larger. diff --git a/docs/Guides/Install-NuGet.md b/docs/Guides/Install-NuGet.md index 437b72a74..3de77b851 100644 --- a/docs/Guides/Install-NuGet.md +++ b/docs/Guides/Install-NuGet.md @@ -68,12 +68,11 @@ The NuGet command-line interface provides access to all NuGet capabilities, and On Windows, install the NuGet CLI using any of the following methods: -1. **nuget.org**: Various versions of `nuget.exe` are available on [nuget.org/downloads](https://nuget.org/downloads). Each download link points directly to an `.exe` file, so be sure to right-click and save the file to your computer rather than running it from the browser. If desired, add the save location to your PATH environment variable so you can NuGet from anywhere. - -> [!Note] -> With NuGet 1.4+, you can use `nuget update -self` to update your existing nuget.exe to the latest version. - +1. **nuget.org**: Various versions of `nuget.exe` are available on [nuget.org/downloads](https://nuget.org/downloads). Each download link points directly to an `.exe` file, so be sure to right-click and save the file to your computer rather than running it from the browser. If desired, add the save location to your PATH environment variable so you can use NuGet from anywhere. + > [!Note] + > With NuGet 1.4+, you can use `nuget update -self` to update your existing nuget.exe to the latest version. + 1. **Chocolatey**: Install the [NuGet.CommandLine](http://chocolatey.org/packages/NuGet.CommandLine) Chocolatey package using the [Chocolatey](http://chocolatey.org) client. ``` @@ -82,9 +81,9 @@ On Windows, install the NuGet CLI using any of the following methods: 1. **Visual Studio**: Install the [NuGet.CommandLine](http://www.nuget.org/packages/NuGet.CommandLine/) package from the Package Manager Console in Visual Studio. -> [!Note] -> **For NuGet 2.x users**: Because of breaking changes introduced in NuGet 3.2, [https://nuget.org/nuget.exe](https://nuget.org/nuget.exe) points to the latest stable NuGet 2.x release to prevent continuous integration systems from potentially breaking. - + > [!Note] + > **For NuGet 2.x users**: Because of breaking changes introduced in NuGet 3.2, [https://nuget.org/nuget.exe](https://nuget.org/nuget.exe) points to the latest stable NuGet 2.x release to prevent continuous integration systems from potentially breaking. + ## Mac OSX and Linux diff --git a/docs/Schema/msbuild-targets.md b/docs/Schema/msbuild-targets.md index 101183f3e..1755a4de0 100644 --- a/docs/Schema/msbuild-targets.md +++ b/docs/Schema/msbuild-targets.md @@ -80,7 +80,7 @@ Note that the `Owners` and `Summary` properties from `.nuspec` are not supported | LicenseUrl | PackageLicenseUrl | empty | | | ProjectUrl | PackageProjectUrl | empty | | | IconUrl | PackageIconUrl | empty | | -| Tags | PackageTags | empty | | +| Tags | PackageTags | empty | Tags are semi-colon delimited. | | ReleaseNotes | PackageReleaseNotes | empty | | | RepositoryUrl | RepositoryUrl | empty | | | RepositoryType | RepositoryType | empty | | diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 8aa325024..d183268fb 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -30,7 +30,7 @@ ms.reviewer: # NuGet CLI reference -The NuGet Command Line Interface (CLI) provides the full extent of NuGet functionality to install, create, publish, and manage packages. Refer to the [Install Guide](../guides/install-nuget.md) for installation instructions. +The NuGet Command Line Interface (CLI) provides the full extent of NuGet functionality to install, create, publish, and manage packages. Refer to the [Install Guide](../guides/install-nuget.md) for installation instructions, which amounts to downloading the `nuget.exe` directly to a folder of your choice. On Windows, you typically add that folder to your PATH environment variable so you can use it from anywhere. Available commands are listed below, and each indicate whether they're applicable to package creation, package consumption, and/or publishing a package to a host. Also see the section on [Environment variables](#environment-variables) for how `nuget.exe` uses such variables. From 421881fe7bd06928b26b9dba7ebfc27e26af3d18 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 9 Aug 2017 13:53:49 -0700 Subject: [PATCH 0095/2943] Create NuGet-4.3.md --- docs/Release-Notes/NuGet-4.3.md | 114 ++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 docs/Release-Notes/NuGet-4.3.md diff --git a/docs/Release-Notes/NuGet-4.3.md b/docs/Release-Notes/NuGet-4.3.md new file mode 100644 index 000000000..b9b385cc6 --- /dev/null +++ b/docs/Release-Notes/NuGet-4.3.md @@ -0,0 +1,114 @@ +--- +# required metadata + +title: NuGet 4.0 RC Release Notes | Microsoft Docs +author: anangaur +ms.author: anangaur +manager: unnir +ms.date: 03/03/2017 +ms.topic: article +ms.prod: nuget +#ms.service: +ms.technology: null +ms.assetid: 906cc4dd-7948-4e86-a093-21df830ce8c3 + +# optional metadata + +description: Release notes for NuGet 4.0 RTM including known issues, bug fixes, added features, and DCRs. +keywords: NuGet 4.0 RTM release notes, bug fixes, known issues, added features, DCRs +#ROBOTS: +#audience: +#ms.devlang: +ms.reviewer: +- karann +- unnir +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: + +--- + +#4.3 Release Notes + +[Full Changelog]() + +[Issues List](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.3") + +**Bug:** + +* msbuild /t:pack fails with The "DevelopmentDependency" parameter is not supported by the "PackTask" task - [#5584](https://github.com/NuGet/Home/issues/5584) + +* nuget.org not added to %AppData%\NuGet\nuget.config if file already contains a packageSource - [#5477](https://github.com/NuGet/Home/issues/5477) + +* NU1201 for netcoreapp2.0 -> net461 project dependency using new csproj format/sdk, but not for classic csproj - [#5461](https://github.com/NuGet/Home/issues/5461) + +* SDK based projects, with SDK 2.0 restore causes a build error - [#5449](https://github.com/NuGet/Home/issues/5449) + +* build\native\PackageName.targets isn't imported after installing package in C++ project - [#5439](https://github.com/NuGet/Home/issues/5439) + +* Missing nuget restore error messages in VS Package Manager output window - [#5412](https://github.com/NuGet/Home/issues/5412) + +* Regression: msbuild /t:pack fails with `The file '' to be packed was not found on disk.` - [#5408](https://github.com/NuGet/Home/issues/5408) + +* NU1201 Does Not Produce a Library Id - [#5405](https://github.com/NuGet/Home/issues/5405) + +* Restore on .NET Core 2.0 project imports .NET Framework 3.5 package targets - [#5149](https://github.com/NuGet/Home/issues/5149) + +* [Test Failure] Some projects can't be created after installing NuGet client 4.3.0-preview1-2462 (Insertable) under dev folder - [#4952](https://github.com/NuGet/Home/issues/4952) + +* msbuild /t:restore refuses to restore one particular project from a solution - [#4845](https://github.com/NuGet/Home/issues/4845) + +* Directory structure for content files flattened if not adding Windows directory separator at the end of PackagePath - [#4795](https://github.com/NuGet/Home/issues/4795) + +* Pack targets don't support setting developmentDependency - [#4694](https://github.com/NuGet/Home/issues/4694) + +* RestoreManagerPackage being loaded synchronously which blocked UI thread and deadlocked VS - [#4679](https://github.com/NuGet/Home/issues/4679) + +* If your solution has projectreferences that refer to the same project, with different casing, restore may not work. This also affects different relative paths, without a difference in casing - [#4574](https://github.com/NuGet/Home/issues/4574) + +* Executables restored from NuGet packages are no longer executable with .NET Core "2.0" - [#4424](https://github.com/NuGet/Home/issues/4424) + +* NuGet.exe swallows details of exception when parsing solution file - [#4411](https://github.com/NuGet/Home/issues/4411) + +* Pack puts content files in wrong location if ContentTargetFolders contains a path that ends with '/' on Windows - [#4407](https://github.com/NuGet/Home/issues/4407) + +* Can't restore a DotNetCliToolReference for a tools package that targets netcoreapp1.1 - [#4396](https://github.com/NuGet/Home/issues/4396) + +* Nuget update CLI leaves the old package version condition in project file (C++) - [#2449](https://github.com/NuGet/Home/issues/2449) + +**DCR:** + +* Read DotnetCliToolTargetFramework from CPS nomation - [#5397](https://github.com/NuGet/Home/issues/5397) + +* TPMinV check should work for pj style UWP - [#4763](https://github.com/NuGet/Home/issues/4763) + +* Improve UI description for AutoReferenced packages - [#4471](https://github.com/NuGet/Home/issues/4471) + +* NuGet restore is selecting compile assets from runtime section. - [#4207](https://github.com/NuGet/Home/issues/4207) + +* Put dependency diagnostics in the lock file - [#1599](https://github.com/NuGet/Home/issues/1599) + +**Docs:** + +* MSBuild restore and NuGet.config - [#5043](https://github.com/NuGet/Home/issues/5043) + +* AutoReferenced docs and fwlink - [#4470](https://github.com/NuGet/Home/issues/4470) + +**Feature:** + +* dotnet.exe - additional nuget functionality - update - [#4965](https://github.com/NuGet/Home/issues/4965) + +* NET Core 2.0: VS/Dotnet CLI should start using existing NuGet functionality: FallBack folders - [#4939](https://github.com/NuGet/Home/issues/4939) + +* NET Core 2.0: Enable users to ignore specific restore warnings (or elevate to error) - [#4898](https://github.com/NuGet/Home/issues/4898) + +* NET Core 2.0: CLI localized assemblies - [#4896](https://github.com/NuGet/Home/issues/4896) + +* NET Core 2.0: register all warnings/errors to assets file (including PackageTargetFallback) - [#4895](https://github.com/NuGet/Home/issues/4895) + +* Enable TFM support: NetStandard2.0, Tizen, Unity - [#4892](https://github.com/NuGet/Home/issues/4892) + +* Reduce the number of NuGet.Core and NuGet.Client projects - [#2446](https://github.com/NuGet/Home/issues/2446) + +* Add ability to mark nuget warnings as errors - [#2395](https://github.com/NuGet/Home/issues/2395) + From 6a87bb768245c7b63b6b2eb872ed4997e3f3fb54 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 9 Aug 2017 13:59:58 -0700 Subject: [PATCH 0096/2943] Update NuGet-4.3.md --- docs/Release-Notes/NuGet-4.3.md | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/docs/Release-Notes/NuGet-4.3.md b/docs/Release-Notes/NuGet-4.3.md index b9b385cc6..feda33e98 100644 --- a/docs/Release-Notes/NuGet-4.3.md +++ b/docs/Release-Notes/NuGet-4.3.md @@ -28,11 +28,22 @@ ms.reviewer: --- -#4.3 Release Notes +# 4.3 Release Notes -[Full Changelog]() +[Visual Studio 2017](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.3 which adds support for .NET Core, has a bunch of quality fixes and improves performance. This release also brings several improvements like support for PackageReference, NuGet commands as MSBuild targets, background package restores, and more. -[Issues List](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.3") +## Known issues + +### NuGet restore may fail when you have multiple projects referencing another project in a solution + +#### Issue: +NuGet restore may not work if, in a solution, you have project references to the same project with different casing or with different relative paths. [NuGet#4574](https://github.com/NuGet/Home/issues/4574) + +#### Workaround: +Fix the casings or relative paths to be the same for all project references. + + +## Issues fixed in NuGet 4.3 RTM timeframe **Bug:** @@ -112,3 +123,6 @@ ms.reviewer: * Add ability to mark nuget warnings as errors - [#2395](https://github.com/NuGet/Home/issues/2395) +## Links to GitHub issues fixed in RTM + +[Issues List](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.3") From 864507cf5c8298df91054b24ed4ff28d8ec1760f Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 9 Aug 2017 14:09:47 -0700 Subject: [PATCH 0097/2943] Update NuGet-4.3.md --- docs/Release-Notes/NuGet-4.3.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/Release-Notes/NuGet-4.3.md b/docs/Release-Notes/NuGet-4.3.md index feda33e98..71b2de2a3 100644 --- a/docs/Release-Notes/NuGet-4.3.md +++ b/docs/Release-Notes/NuGet-4.3.md @@ -1,9 +1,9 @@ --- # required metadata -title: NuGet 4.0 RC Release Notes | Microsoft Docs -author: anangaur -ms.author: anangaur +title: NuGet 4.0 RTM Release Notes | Microsoft Docs +author: karann +ms.author: karann manager: unnir ms.date: 03/03/2017 ms.topic: article @@ -14,8 +14,8 @@ ms.assetid: 906cc4dd-7948-4e86-a093-21df830ce8c3 # optional metadata -description: Release notes for NuGet 4.0 RTM including known issues, bug fixes, added features, and DCRs. -keywords: NuGet 4.0 RTM release notes, bug fixes, known issues, added features, DCRs +description: Release notes for NuGet 4.3 RTM including known issues, bug fixes, added features, and DCRs. +keywords: NuGet 4.3 RTM release notes, bug fixes, known issues, added features, DCRs #ROBOTS: #audience: #ms.devlang: @@ -28,9 +28,9 @@ ms.reviewer: --- -# 4.3 Release Notes +# 4.3 RTM Release Notes -[Visual Studio 2017](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.3 which adds support for .NET Core, has a bunch of quality fixes and improves performance. This release also brings several improvements like support for PackageReference, NuGet commands as MSBuild targets, background package restores, and more. +[Visual Studio 2017](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.3 RTM which adds support for .NET Core, has a bunch of quality fixes and improves performance. This release also brings several improvements like support for PackageReference, NuGet commands as MSBuild targets, background package restores, and more. ## Known issues From bb38dfeb5fb86eeabb05b45c83ce2c3c225bdd58 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Wed, 9 Aug 2017 17:15:42 -0700 Subject: [PATCH 0098/2943] Update Package-Versioning.md --- docs/Schema/Package-Versioning.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/docs/Schema/Package-Versioning.md b/docs/Schema/Package-Versioning.md index df33be5d4..5cb5315d1 100644 --- a/docs/Schema/Package-Versioning.md +++ b/docs/Schema/Package-Versioning.md @@ -72,7 +72,7 @@ That said, package developers generally follow recognized naming conventions: - `-rc`: Release candidate, typically a release that's potentially final (stable) unless significant bugs emerge. > [!Note] -> At present, NuGet does not support [SemVer-compatible (v2.0.0)](http://semver.org/spec/v2.0.0.html) prerelease numbers with dot notation, as in *1.0.1-build.23*. You can use a form like *1.0.1-build23* but this is always considered a pre-release version. +> NuGet 4.3.0 and above has started supporting [SemVer 2.0.0](http://semver.org/spec/v2.0.0.html). However older NuGet versions do not support it. Hence with older version, you cannot use prerelease numbers with dot notation, as in *1.0.1-build.23*. You can use a form like *1.0.1-build23* but this is always considered a pre-release version. When resolving package references and multiple package versions differ only by suffix, NuGet chooses a version without a suffix first, then applies precedence to pre-release versions in reverse alphabetical order. For example, the following versions would be chosen in the exact order shown: @@ -90,6 +90,29 @@ When resolving package references and multiple package versions differ only by s +## Semantic Versioning 2.0.0 +Starting with NuGet 4.3.0 and Visual Studio 2017 version 15.3, NuGet has started to support [Semantic Versioning 2.0.0](http://semver.org/spec/v2.0.0.html). + +There are certain semantics of SemVer 2.0.0 that are not supported in older clients. NuGet considers a package version to be SemVer 2.0.0 speicifc if either of the following statements is true: + +1. The pre-release label is dot-separated, e.g. `1.0.0-alpha.1` + +2. The version has build-metadata, e.g. `1.0.0+githash` + +For NuGet.org, a package is defined as a SemVer v2.0.0 package if either of the following statements is true: + +1. The package's own version is SemVer v2.0.0 compliant but not SemVer v1.0.0 compliant, as per the above definition. +2. Any of the package's dependency version ranges has a minimum or maximum version that is SemVer v2.0.0 compliant but not SemVer v1.0.0 compliant, as per the above definition; e.g. `[1.0.0-alpha.1, )`. + +If you upload a SemVer v2.0.0 specific package as descibed above, to NuGet.org then this package will be invisible to older clients and only available in following NuGet clients: +- NuGet 4.3.0 and above +- Visual Studio 2017 version 15.3 and above. +- dotnet.exe version 2.0 and above + +Third-party clients: +- JetBrains Rider +- Paket version 5.0 and above + ## Version ranges and wildcards When referring to package dependencies, NuGet supports using interval notation for specifying version ranges, summarized as follows: From d7c599e674f08d74901b606f327348f8fcf05dc6 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 10 Aug 2017 11:14:45 -0700 Subject: [PATCH 0099/2943] Update Package-Versioning.md --- docs/Schema/Package-Versioning.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Schema/Package-Versioning.md b/docs/Schema/Package-Versioning.md index 5cb5315d1..c9e18f84c 100644 --- a/docs/Schema/Package-Versioning.md +++ b/docs/Schema/Package-Versioning.md @@ -72,7 +72,7 @@ That said, package developers generally follow recognized naming conventions: - `-rc`: Release candidate, typically a release that's potentially final (stable) unless significant bugs emerge. > [!Note] -> NuGet 4.3.0 and above has started supporting [SemVer 2.0.0](http://semver.org/spec/v2.0.0.html). However older NuGet versions do not support it. Hence with older version, you cannot use prerelease numbers with dot notation, as in *1.0.1-build.23*. You can use a form like *1.0.1-build23* but this is always considered a pre-release version. +> NuGet 4.3.0+ supports [SemVer 2.0.0](http://semver.org/spec/v2.0.0.html), which supports pre-release numbers with dot notation, as in *1.0.1-build.23*. Dot notation is not supported with NuGet versions before 4.3.0. You can use a form like *1.0.1-build23*. When resolving package references and multiple package versions differ only by suffix, NuGet chooses a version without a suffix first, then applies precedence to pre-release versions in reverse alphabetical order. For example, the following versions would be chosen in the exact order shown: From 7660788ec2d0c58686eaf1c75c45c90eb3b76007 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 10 Aug 2017 11:18:23 -0700 Subject: [PATCH 0100/2943] Update Package-Versioning.md --- docs/Schema/Package-Versioning.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/Schema/Package-Versioning.md b/docs/Schema/Package-Versioning.md index c9e18f84c..e53bcf02e 100644 --- a/docs/Schema/Package-Versioning.md +++ b/docs/Schema/Package-Versioning.md @@ -5,7 +5,7 @@ title: NuGet Package Version Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/20/2017 +ms.date: 8/10/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -91,27 +91,27 @@ When resolving package references and multiple package versions differ only by s ## Semantic Versioning 2.0.0 -Starting with NuGet 4.3.0 and Visual Studio 2017 version 15.3, NuGet has started to support [Semantic Versioning 2.0.0](http://semver.org/spec/v2.0.0.html). -There are certain semantics of SemVer 2.0.0 that are not supported in older clients. NuGet considers a package version to be SemVer 2.0.0 speicifc if either of the following statements is true: +With NuGet 4.3.0+ and Visual Studio 2017 version 15.3+, NuGet supports [Semantic Versioning 2.0.0](http://semver.org/spec/v2.0.0.html). -1. The pre-release label is dot-separated, e.g. `1.0.0-alpha.1` +Certain semantics of SemVer 2.0.0 that are not supported in older clients. NuGet considers a package version to be SemVer 2.0.0 specific if either of the following statements is true: -2. The version has build-metadata, e.g. `1.0.0+githash` +- The pre-release label is dot-separated, for example, *1.0.0-alpha.1* +- The version has build-metadata, for example, *1.0.0+githash* -For NuGet.org, a package is defined as a SemVer v2.0.0 package if either of the following statements is true: +For nuget.org, a package is defined as a SemVer v2.0.0 package if either of the following statements is true: -1. The package's own version is SemVer v2.0.0 compliant but not SemVer v1.0.0 compliant, as per the above definition. -2. Any of the package's dependency version ranges has a minimum or maximum version that is SemVer v2.0.0 compliant but not SemVer v1.0.0 compliant, as per the above definition; e.g. `[1.0.0-alpha.1, )`. +- The package's own version is SemVer v2.0.0 compliant but not SemVer v1.0.0 compliant, as defined above. +- Any of the package's dependency version ranges has a minimum or maximum version that is SemVer v2.0.0 compliant but not SemVer v1.0.0 compliant, defined above; for example, *[1.0.0-alpha.1, )*. -If you upload a SemVer v2.0.0 specific package as descibed above, to NuGet.org then this package will be invisible to older clients and only available in following NuGet clients: -- NuGet 4.3.0 and above -- Visual Studio 2017 version 15.3 and above. -- dotnet.exe version 2.0 and above +If you upload a SemVer v2.0.0-specific package to nuget.org, the package is invisible to older clients and available to only the following NuGet clients: +- NuGet 4.3.0+ +- Visual Studio 2017 version 15.3+ +- dotnet.exe version 2.0+ Third-party clients: - JetBrains Rider -- Paket version 5.0 and above +- Paket version 5.0+ ## Version ranges and wildcards From d812a9d8669145f987af6fd4d993538eeba665bc Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 10 Aug 2017 12:52:59 -0700 Subject: [PATCH 0101/2943] Update NuGet-4.3.md --- docs/Release-Notes/NuGet-4.3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Release-Notes/NuGet-4.3.md b/docs/Release-Notes/NuGet-4.3.md index 71b2de2a3..1b2f0ef1e 100644 --- a/docs/Release-Notes/NuGet-4.3.md +++ b/docs/Release-Notes/NuGet-4.3.md @@ -30,7 +30,7 @@ ms.reviewer: # 4.3 RTM Release Notes -[Visual Studio 2017](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.3 RTM which adds support for .NET Core, has a bunch of quality fixes and improves performance. This release also brings several improvements like support for PackageReference, NuGet commands as MSBuild targets, background package restores, and more. +[Visual Studio 2017 15.3 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.3 RTM which adds support new scenarios such as .NET Core 2.0/.NET Standard 2.0, has a bunch of quality fixes and improves performance. This release also brings several improvements like support for Semantic Versioning 2.0.0, MSBuild integration of NuGet warnings and errors, and more. ## Known issues From 0d93512c494ec66fb69e5013c2d4ab1cad10148a Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Thu, 10 Aug 2017 13:36:19 -0700 Subject: [PATCH 0102/2943] added NuGet#5704 known issue --- docs/Release-Notes/NuGet-4.3.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/Release-Notes/NuGet-4.3.md b/docs/Release-Notes/NuGet-4.3.md index 1b2f0ef1e..dad8bae36 100644 --- a/docs/Release-Notes/NuGet-4.3.md +++ b/docs/Release-Notes/NuGet-4.3.md @@ -30,10 +30,23 @@ ms.reviewer: # 4.3 RTM Release Notes -[Visual Studio 2017 15.3 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.3 RTM which adds support new scenarios such as .NET Core 2.0/.NET Standard 2.0, has a bunch of quality fixes and improves performance. This release also brings several improvements like support for Semantic Versioning 2.0.0, MSBuild integration of NuGet warnings and errors, and more. +[Visual Studio 2017 15.3 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.3 RTM which adds support for new scenarios such as .NET Standard 2.0/.NET Core 2.0, has a bunch of quality fixes and improves performance. This release also brings several improvements like support for Semantic Versioning 2.0.0, MSBuild integration of NuGet warnings and errors, and more. ## Known issues +### NuGet restore may treat disabled package sources as enabled in some cases + +#### Issue: +The following restore command line techniques will treat disabled packages sources as enabled. [NuGet#5704](https://github.com/NuGet/Home/issues/5704) +1) msbuild /t:restore +2) dotnet restore (either with dotnet.exe that ships with VS, or the one that comes with NetCore SDK 2.0.0) + +#### Workaround: +1) Use Visual Studio (2017 15.3 or later) or NuGet.exe (v4.3.0 or later) +2) Delete your disabled source and continue to use msbuild or dotnet.exe. +3) For your solution, you could use "Clear" in NuGet.config and then define the sources necessary for that solution. + + ### NuGet restore may fail when you have multiple projects referencing another project in a solution #### Issue: @@ -42,7 +55,6 @@ NuGet restore may not work if, in a solution, you have project references to the #### Workaround: Fix the casings or relative paths to be the same for all project references. - ## Issues fixed in NuGet 4.3 RTM timeframe **Bug:** From e927b9f81a315486709c84ee79909484cae5388c Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Thu, 10 Aug 2017 13:45:31 -0700 Subject: [PATCH 0103/2943] Removed several bugs that had never shipped --- docs/Release-Notes/NuGet-4.3.md | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/docs/Release-Notes/NuGet-4.3.md b/docs/Release-Notes/NuGet-4.3.md index dad8bae36..3310e6af9 100644 --- a/docs/Release-Notes/NuGet-4.3.md +++ b/docs/Release-Notes/NuGet-4.3.md @@ -61,20 +61,6 @@ Fix the casings or relative paths to be the same for all project references. * msbuild /t:pack fails with The "DevelopmentDependency" parameter is not supported by the "PackTask" task - [#5584](https://github.com/NuGet/Home/issues/5584) -* nuget.org not added to %AppData%\NuGet\nuget.config if file already contains a packageSource - [#5477](https://github.com/NuGet/Home/issues/5477) - -* NU1201 for netcoreapp2.0 -> net461 project dependency using new csproj format/sdk, but not for classic csproj - [#5461](https://github.com/NuGet/Home/issues/5461) - -* SDK based projects, with SDK 2.0 restore causes a build error - [#5449](https://github.com/NuGet/Home/issues/5449) - -* build\native\PackageName.targets isn't imported after installing package in C++ project - [#5439](https://github.com/NuGet/Home/issues/5439) - -* Missing nuget restore error messages in VS Package Manager output window - [#5412](https://github.com/NuGet/Home/issues/5412) - -* Regression: msbuild /t:pack fails with `The file '' to be packed was not found on disk.` - [#5408](https://github.com/NuGet/Home/issues/5408) - -* NU1201 Does Not Produce a Library Id - [#5405](https://github.com/NuGet/Home/issues/5405) - * Restore on .NET Core 2.0 project imports .NET Framework 3.5 package targets - [#5149](https://github.com/NuGet/Home/issues/5149) * [Test Failure] Some projects can't be created after installing NuGet client 4.3.0-preview1-2462 (Insertable) under dev folder - [#4952](https://github.com/NuGet/Home/issues/4952) From e160f949fec7519f8adcc15ddd0cd2893946bbcb Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Thu, 10 Aug 2017 14:03:12 -0700 Subject: [PATCH 0104/2943] More tweaks to issue notes (features) --- docs/Release-Notes/NuGet-4.3.md | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/docs/Release-Notes/NuGet-4.3.md b/docs/Release-Notes/NuGet-4.3.md index 3310e6af9..c71f63c82 100644 --- a/docs/Release-Notes/NuGet-4.3.md +++ b/docs/Release-Notes/NuGet-4.3.md @@ -61,21 +61,17 @@ Fix the casings or relative paths to be the same for all project references. * msbuild /t:pack fails with The "DevelopmentDependency" parameter is not supported by the "PackTask" task - [#5584](https://github.com/NuGet/Home/issues/5584) -* Restore on .NET Core 2.0 project imports .NET Framework 3.5 package targets - [#5149](https://github.com/NuGet/Home/issues/5149) - -* [Test Failure] Some projects can't be created after installing NuGet client 4.3.0-preview1-2462 (Insertable) under dev folder - [#4952](https://github.com/NuGet/Home/issues/4952) - -* msbuild /t:restore refuses to restore one particular project from a solution - [#4845](https://github.com/NuGet/Home/issues/4845) +* dotnet Restore (& therefore msbuild /t:restore) skips projects with an explicit solution project dependency [#4578](https://github.com/NuGet/Home/issues/4578) * Directory structure for content files flattened if not adding Windows directory separator at the end of PackagePath - [#4795](https://github.com/NuGet/Home/issues/4795) -* Pack targets don't support setting developmentDependency - [#4694](https://github.com/NuGet/Home/issues/4694) +* netcore projects don't support setting as developmentDependency - [#4694](https://github.com/NuGet/Home/issues/4694) * RestoreManagerPackage being loaded synchronously which blocked UI thread and deadlocked VS - [#4679](https://github.com/NuGet/Home/issues/4679) * If your solution has projectreferences that refer to the same project, with different casing, restore may not work. This also affects different relative paths, without a difference in casing - [#4574](https://github.com/NuGet/Home/issues/4574) -* Executables restored from NuGet packages are no longer executable with .NET Core "2.0" - [#4424](https://github.com/NuGet/Home/issues/4424) +* Executables restored from NuGet packages are no longer executable with .NET Core 2.0 - [#4424](https://github.com/NuGet/Home/issues/4424) * NuGet.exe swallows details of exception when parsing solution file - [#4411](https://github.com/NuGet/Home/issues/4411) @@ -87,7 +83,7 @@ Fix the casings or relative paths to be the same for all project references. **DCR:** -* Read DotnetCliToolTargetFramework from CPS nomation - [#5397](https://github.com/NuGet/Home/issues/5397) +* Read DotnetCliToolTargetFramework from CPS nomation - [#5397](https://github.com/NuGet/Home/issues/5397) * TPMinV check should work for pj style UWP - [#4763](https://github.com/NuGet/Home/issues/4763) @@ -105,21 +101,19 @@ Fix the casings or relative paths to be the same for all project references. **Feature:** -* dotnet.exe - additional nuget functionality - update - [#4965](https://github.com/NuGet/Home/issues/4965) - * NET Core 2.0: VS/Dotnet CLI should start using existing NuGet functionality: FallBack folders - [#4939](https://github.com/NuGet/Home/issues/4939) -* NET Core 2.0: Enable users to ignore specific restore warnings (or elevate to error) - [#4898](https://github.com/NuGet/Home/issues/4898) +* NET Core 2.0: register all warnings/errors to assets file (including PackageTargetFallback) - [#4895](https://github.com/NuGet/Home/issues/4895) -* NET Core 2.0: CLI localized assemblies - [#4896](https://github.com/NuGet/Home/issues/4896) +* NET Core 2.0: Enable users to ignore specific restore warnings (or elevate to error) - [#4898](https://github.com/NuGet/Home/issues/4898) -* NET Core 2.0: register all warnings/errors to assets file (including PackageTargetFallback) - [#4895](https://github.com/NuGet/Home/issues/4895) +* Add ability to mark nuget warnings as errors - [#2395](https://github.com/NuGet/Home/issues/2395) -* Enable TFM support: NetStandard2.0, Tizen, Unity - [#4892](https://github.com/NuGet/Home/issues/4892) +* NET Core 2.0: CLI localized assemblies - [#4896](https://github.com/NuGet/Home/issues/4896) -* Reduce the number of NuGet.Core and NuGet.Client projects - [#2446](https://github.com/NuGet/Home/issues/2446) +* Enable TFM support: NetStandard2.0, Tizen - [#4892](https://github.com/NuGet/Home/issues/4892) -* Add ability to mark nuget warnings as errors - [#2395](https://github.com/NuGet/Home/issues/2395) +* Reduce the number of NuGet.Core and NuGet.Client projects (and thus DLLs) - [#2446](https://github.com/NuGet/Home/issues/2446) ## Links to GitHub issues fixed in RTM From 3fe3557dc3e82254cb61759c501263fba9f2e694 Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Thu, 10 Aug 2017 14:09:10 -0700 Subject: [PATCH 0105/2943] added restore noop --- docs/Release-Notes/NuGet-4.3.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/Release-Notes/NuGet-4.3.md b/docs/Release-Notes/NuGet-4.3.md index c71f63c82..931b1df9a 100644 --- a/docs/Release-Notes/NuGet-4.3.md +++ b/docs/Release-Notes/NuGet-4.3.md @@ -101,6 +101,8 @@ Fix the casings or relative paths to be the same for all project references. **Feature:** +* Improve NuGet Restore Perf - Implement smarter NoOp for command line restores and VS - [#5080](https://github.com/NuGet/Home/issues/5080) + * NET Core 2.0: VS/Dotnet CLI should start using existing NuGet functionality: FallBack folders - [#4939](https://github.com/NuGet/Home/issues/4939) * NET Core 2.0: register all warnings/errors to assets file (including PackageTargetFallback) - [#4895](https://github.com/NuGet/Home/issues/4895) From 8f9c92f2d719967196c5f3d9946c35165e47f096 Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Thu, 10 Aug 2017 14:10:55 -0700 Subject: [PATCH 0106/2943] Update NuGet-4.3.md --- docs/Release-Notes/NuGet-4.3.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/docs/Release-Notes/NuGet-4.3.md b/docs/Release-Notes/NuGet-4.3.md index 931b1df9a..42e0a7213 100644 --- a/docs/Release-Notes/NuGet-4.3.md +++ b/docs/Release-Notes/NuGet-4.3.md @@ -47,14 +47,6 @@ The following restore command line techniques will treat disabled packages sourc 3) For your solution, you could use "Clear" in NuGet.config and then define the sources necessary for that solution. -### NuGet restore may fail when you have multiple projects referencing another project in a solution - -#### Issue: -NuGet restore may not work if, in a solution, you have project references to the same project with different casing or with different relative paths. [NuGet#4574](https://github.com/NuGet/Home/issues/4574) - -#### Workaround: -Fix the casings or relative paths to be the same for all project references. - ## Issues fixed in NuGet 4.3 RTM timeframe **Bug:** From 1c63ca3dfe9df79ad08b725371c16c1cf142ffdf Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 10 Aug 2017 14:15:44 -0700 Subject: [PATCH 0107/2943] Updated hub page --- docs/index.md | 412 ++++++++++++++++++++++++++++---------------------- 1 file changed, 235 insertions(+), 177 deletions(-) diff --git a/docs/index.md b/docs/index.md index fc7e37aa5..c709c4e18 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,6 @@ --- layout: HubPage - +hide_bc: true title: NuGet Documentation | Microsoft Docs description: NuGet is the package manager for Microsoft development platforms including .NET. The NuGet client tools provide the ability to create and consume packages. keywords: @@ -16,8 +16,8 @@ keywords: author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/17/2017 -ms.topic: hubpage +ms.date: 8/10/2017 +ms.topic: hub-page ms.prod: nuget #ms.service: ms.technology: null @@ -27,180 +27,238 @@ ms.reviewer: - karann --- - -
    -
    -

    NuGet Documentation

    -

    Welcome to NuGet! NuGet is the package manager for the Microsoft development platforms including .NET. NuGet gives you access to thousands of packages from other developers on nuget.org, and the NuGet tools let you create, share, and host packages of your own.

    -
    - - -
    -
    -
    -
    -
    + + + \ No newline at end of file From df3b4d5910faa7ad6ab999cb1bc73e9a4b475d3c Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 10 Aug 2017 14:20:29 -0700 Subject: [PATCH 0108/2943] Fix caps --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index c709c4e18..9461238dc 100644 --- a/docs/index.md +++ b/docs/index.md @@ -29,7 +29,7 @@ ms.reviewer: ---
    -

    Nuget Documentation

    +

    NuGet Documentation

    • Get Started From 099dd653d53f55f4608093d6655976936a69a2e8 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 10 Aug 2017 14:38:06 -0700 Subject: [PATCH 0109/2943] renamed the file --- docs/Release-Notes/{NuGet-4.3.md => NuGet-4.3-RTM.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/Release-Notes/{NuGet-4.3.md => NuGet-4.3-RTM.md} (100%) diff --git a/docs/Release-Notes/NuGet-4.3.md b/docs/Release-Notes/NuGet-4.3-RTM.md similarity index 100% rename from docs/Release-Notes/NuGet-4.3.md rename to docs/Release-Notes/NuGet-4.3-RTM.md From 668e225dfba258e9e9ec4a6b2efeb366da33fb1c Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 10 Aug 2017 14:43:26 -0700 Subject: [PATCH 0110/2943] rearranging stuff --- docs/Release-Notes/NuGet-4.3-RTM.md | 54 +++++++++++++---------------- 1 file changed, 25 insertions(+), 29 deletions(-) diff --git a/docs/Release-Notes/NuGet-4.3-RTM.md b/docs/Release-Notes/NuGet-4.3-RTM.md index 42e0a7213..6bbe9c2bf 100644 --- a/docs/Release-Notes/NuGet-4.3-RTM.md +++ b/docs/Release-Notes/NuGet-4.3-RTM.md @@ -1,7 +1,7 @@ --- # required metadata -title: NuGet 4.0 RTM Release Notes | Microsoft Docs +title: NuGet 4.3 RTM Release Notes | Microsoft Docs author: karann ms.author: karann manager: unnir @@ -10,7 +10,7 @@ ms.topic: article ms.prod: nuget #ms.service: ms.technology: null -ms.assetid: 906cc4dd-7948-4e86-a093-21df830ce8c3 +ms.assetid: da3bf363-4d9d-446c-b91d-41c4cf6e16a1 # optional metadata @@ -22,6 +22,7 @@ keywords: NuGet 4.3 RTM release notes, bug fixes, known issues, added features, ms.reviewer: - karann - unnir +- anangaur #ms.suite: #ms.tgt_pltfrm: #ms.custom: @@ -49,18 +50,37 @@ The following restore command line techniques will treat disabled packages sourc ## Issues fixed in NuGet 4.3 RTM timeframe +**Feature:** + +* Improve NuGet Restore Perf - Implement smarter NoOp for command line restores and VS - [#5080](https://github.com/NuGet/Home/issues/5080) + +* NET Core 2.0: VS/Dotnet CLI should start using existing NuGet functionality: FallBack folders - [#4939](https://github.com/NuGet/Home/issues/4939) + +* NET Core 2.0: Enable users to ignore specific restore warnings (or elevate to error) - [#4898](https://github.com/NuGet/Home/issues/4898) + +* NET Core 2.0: CLI localized assemblies - [#4896](https://github.com/NuGet/Home/issues/4896) + +* NET Core 2.0: register all warnings/errors to assets file (including PackageTargetFallback) - [#4895](https://github.com/NuGet/Home/issues/4895) + +* Enable TFM support: NetStandard2.0, Tizen - [#4892](https://github.com/NuGet/Home/issues/4892) + +* Reduce the number of NuGet.Core and NuGet.Client projects (and thus DLLs) - [#2446](https://github.com/NuGet/Home/issues/2446) + +* Add ability to mark nuget warnings as errors - [#2395](https://github.com/NuGet/Home/issues/2395) + + **Bug:** * msbuild /t:pack fails with The "DevelopmentDependency" parameter is not supported by the "PackTask" task - [#5584](https://github.com/NuGet/Home/issues/5584) -* dotnet Restore (& therefore msbuild /t:restore) skips projects with an explicit solution project dependency [#4578](https://github.com/NuGet/Home/issues/4578) - * Directory structure for content files flattened if not adding Windows directory separator at the end of PackagePath - [#4795](https://github.com/NuGet/Home/issues/4795) * netcore projects don't support setting as developmentDependency - [#4694](https://github.com/NuGet/Home/issues/4694) * RestoreManagerPackage being loaded synchronously which blocked UI thread and deadlocked VS - [#4679](https://github.com/NuGet/Home/issues/4679) +* dotnet Restore (& therefore msbuild /t:restore) skips projects with an explicit solution project dependency [#4578](https://github.com/NuGet/Home/issues/4578) + * If your solution has projectreferences that refer to the same project, with different casing, restore may not work. This also affects different relative paths, without a difference in casing - [#4574](https://github.com/NuGet/Home/issues/4574) * Executables restored from NuGet packages are no longer executable with .NET Core 2.0 - [#4424](https://github.com/NuGet/Home/issues/4424) @@ -85,30 +105,6 @@ The following restore command line techniques will treat disabled packages sourc * Put dependency diagnostics in the lock file - [#1599](https://github.com/NuGet/Home/issues/1599) -**Docs:** - -* MSBuild restore and NuGet.config - [#5043](https://github.com/NuGet/Home/issues/5043) - -* AutoReferenced docs and fwlink - [#4470](https://github.com/NuGet/Home/issues/4470) - -**Feature:** - -* Improve NuGet Restore Perf - Implement smarter NoOp for command line restores and VS - [#5080](https://github.com/NuGet/Home/issues/5080) - -* NET Core 2.0: VS/Dotnet CLI should start using existing NuGet functionality: FallBack folders - [#4939](https://github.com/NuGet/Home/issues/4939) - -* NET Core 2.0: register all warnings/errors to assets file (including PackageTargetFallback) - [#4895](https://github.com/NuGet/Home/issues/4895) - -* NET Core 2.0: Enable users to ignore specific restore warnings (or elevate to error) - [#4898](https://github.com/NuGet/Home/issues/4898) - -* Add ability to mark nuget warnings as errors - [#2395](https://github.com/NuGet/Home/issues/2395) - -* NET Core 2.0: CLI localized assemblies - [#4896](https://github.com/NuGet/Home/issues/4896) - -* Enable TFM support: NetStandard2.0, Tizen - [#4892](https://github.com/NuGet/Home/issues/4892) - -* Reduce the number of NuGet.Core and NuGet.Client projects (and thus DLLs) - [#2446](https://github.com/NuGet/Home/issues/2446) - -## Links to GitHub issues fixed in RTM +## Link to GitHub issues fixed in 4.3 RTM [Issues List](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.3") From c3b23ad3a8653654a629267a7580507813a86be2 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 10 Aug 2017 15:13:18 -0700 Subject: [PATCH 0111/2943] entry for 4.3 rtm --- docs/Release-Notes/Index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/Release-Notes/Index.md b/docs/Release-Notes/Index.md index 93141aa9f..c07c22746 100644 --- a/docs/Release-Notes/Index.md +++ b/docs/Release-Notes/Index.md @@ -32,6 +32,8 @@ ms.reviewer: [Known Issues](../release-notes/known-issues.md) +[NuGet 4.3 RTM](../release-notes/nuget-4.3-rtm.md) + [NuGet 4.0 RTM](../release-notes/nuget-4.0-rtm.md) [NuGet 4.0 RC](../release-notes/nuget-4.0-rc.md) From e8cd5e9627df40b35b6f28e3736adb75bfb5a011 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 10 Aug 2017 15:29:54 -0700 Subject: [PATCH 0112/2943] Update NuGet-4.3-RTM.md --- docs/Release-Notes/NuGet-4.3-RTM.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/Release-Notes/NuGet-4.3-RTM.md b/docs/Release-Notes/NuGet-4.3-RTM.md index 6bbe9c2bf..0de3938f5 100644 --- a/docs/Release-Notes/NuGet-4.3-RTM.md +++ b/docs/Release-Notes/NuGet-4.3-RTM.md @@ -50,6 +50,8 @@ The following restore command line techniques will treat disabled packages sourc ## Issues fixed in NuGet 4.3 RTM timeframe +[NuGet 4.0 RTM Release Notes](../release-notes/nuget-4.0-RTM.md) - Lists all the issues fixed for NuGet 4.0 RTM + **Feature:** * Improve NuGet Restore Perf - Implement smarter NoOp for command line restores and VS - [#5080](https://github.com/NuGet/Home/issues/5080) From c957f1a03c2a7f7c1eb36ac5a3990b0afa01ab7c Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 10 Aug 2017 15:34:18 -0700 Subject: [PATCH 0113/2943] Update Known-Issues.md --- docs/Release-Notes/Known-Issues.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/Release-Notes/Known-Issues.md b/docs/Release-Notes/Known-Issues.md index 0df6a2d61..abd4932d7 100644 --- a/docs/Release-Notes/Known-Issues.md +++ b/docs/Release-Notes/Known-Issues.md @@ -32,7 +32,8 @@ ms.reviewer: These are the most common known issues with NuGet that are repeatedly reported. If you are having trouble installing NuGet or managing packages, please take a look through these known issues and their resolutions. -[!Note] For known issues with NuGet 4.0, please refer to [NuGet 4.0 RTM release notes](https://docs.microsoft.com/nuget/release-notes/nuget-4.0-rtm) +> [!Note] +> Starting with NuGet 4.0, known issues are a part of the respective relase notes. ## Authentication issues with NuGet feeds in VSTS with nuget.exe v3.4.3 From 3c5526e4bc43c346f9106f32f82ddbf7b5be81e1 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 10 Aug 2017 15:34:45 -0700 Subject: [PATCH 0114/2943] Update Known-Issues.md --- docs/Release-Notes/Known-Issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Release-Notes/Known-Issues.md b/docs/Release-Notes/Known-Issues.md index abd4932d7..bf753d2d6 100644 --- a/docs/Release-Notes/Known-Issues.md +++ b/docs/Release-Notes/Known-Issues.md @@ -33,7 +33,7 @@ ms.reviewer: These are the most common known issues with NuGet that are repeatedly reported. If you are having trouble installing NuGet or managing packages, please take a look through these known issues and their resolutions. > [!Note] -> Starting with NuGet 4.0, known issues are a part of the respective relase notes. +> Starting with NuGet 4.0, known issues are a part of the respective release notes. ## Authentication issues with NuGet feeds in VSTS with nuget.exe v3.4.3 From 3b1535f066f1eaa20d9e41539eec33490e031196 Mon Sep 17 00:00:00 2001 From: Rohit Agrawal Date: Thu, 10 Aug 2017 16:58:24 -0700 Subject: [PATCH 0115/2943] Update msbuild-targets.md added a missing option of specifying PackageCopyToOutput and PackageFlatten on items that get copied as contentFiles --- docs/Schema/msbuild-targets.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/Schema/msbuild-targets.md b/docs/Schema/msbuild-targets.md index dbdc32756..6c3fb9859 100644 --- a/docs/Schema/msbuild-targets.md +++ b/docs/Schema/msbuild-targets.md @@ -187,6 +187,9 @@ If you want to copy all your content to only a specific root folder(s) (instead There is also an MSBuild property `$(IncludeContentInPack)`, which defaults to `true`. If this is set to `false` on any project, then the content from that project are not included in the nuget package. +Other pack specific metadata that you can set on any of the above items also includes ``` ``` and ``` ``` which will set CopyToOutput and Flatten values on the contentFiles entry in the output nuspec. + + > [!Note] > Apart from Content items, the `` and `` metadata can also be set on files with a build action of Compile, EmbeddedResource, ApplicationDefinition, Page, Resource, SplashScreen, DesignData, DesignDataWithDesignTimeCreatableTypes, CodeAnalysisDictionary, AndroidAsset, AndroidResource, BundleResource or None. > From a0d9d910d3b7a2033770c81ee39eae0751a48ede Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 11 Aug 2017 06:57:46 -0700 Subject: [PATCH 0116/2943] Update msbuild-targets.md --- docs/Schema/msbuild-targets.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Schema/msbuild-targets.md b/docs/Schema/msbuild-targets.md index 6c3fb9859..2f8fc8b8d 100644 --- a/docs/Schema/msbuild-targets.md +++ b/docs/Schema/msbuild-targets.md @@ -187,7 +187,7 @@ If you want to copy all your content to only a specific root folder(s) (instead There is also an MSBuild property `$(IncludeContentInPack)`, which defaults to `true`. If this is set to `false` on any project, then the content from that project are not included in the nuget package. -Other pack specific metadata that you can set on any of the above items also includes ``` ``` and ``` ``` which will set CopyToOutput and Flatten values on the contentFiles entry in the output nuspec. +Other pack specific metadata that you can set on any of the above items includes `````` and `````` which sets ```CopyToOutput``` and ```Flatten``` values on the ```contentFiles``` entry in the output nuspec. > [!Note] From 51a48b454ae0380f2825cb58ace04d83a453eea1 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Sun, 13 Aug 2017 23:41:46 -0700 Subject: [PATCH 0117/2943] Update Errors-and-Warnings.md 4.3 is going live 8/14 --- docs/Reference/Errors-and-Warnings.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index 1acf2ae0b..89c0c8142 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -1,7 +1,7 @@ --- # required metadata -title: NuGet Restore Errors and Warnings Reference (PREVIEW) | Microsoft Docs +title: NuGet Restore Errors and Warnings Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen @@ -20,7 +20,7 @@ keywords: NuGet errors, NuGet warnings, diagnostics #audience: #ms.devlang: ms.reviewer: -- anandr +- anangaur - karann - unnir #ms.suite: @@ -29,11 +29,11 @@ ms.reviewer: --- -# Errors and warnings (PREVIEW) +# Errors and warnings -In NuGet 4.3.0 (currently in preview), errors and warnings are numbered as described in this topic and provide detailed information to help you address the issues involved. +In NuGet 4.3.0, errors and warnings are numbered as described in this topic and provide detailed information to help you address the issues involved. -The errors and warnings listed here are available only with [PackageReference-based](../Consume-Packages/Package-References-in-Project-Files.md) projects and NuGet 4.3.0 (currently in preview). NuGet also honors MSBuild properties to suppress warnings or elevate them to errors. For more information, see [How to: Suppress Compiler Warnings](https://docs.microsoft.com/visualstudio/ide/how-to-suppress-compiler-warnings) in the Visual Studio documentation. +The errors and warnings listed here are available only with [PackageReference-based](../Consume-Packages/Package-References-in-Project-Files.md) projects and NuGet 4.3.0. NuGet also honors MSBuild properties to suppress warnings or elevate them to errors. For more information, see [How to: Suppress Compiler Warnings](https://docs.microsoft.com/visualstudio/ide/how-to-suppress-compiler-warnings) in the Visual Studio documentation. **Errors** From 9a9882ee242f1e1da0b4f6e21d4d040d81124b0a Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 14 Aug 2017 08:43:34 -0700 Subject: [PATCH 0118/2943] Move versioning into reference --- docs/Consume-Packages/Dependency-Resolution.md | 6 +++--- .../Consume-Packages/Package-References-in-Project-Files.md | 2 +- docs/Consume-Packages/Package-Restore.md | 2 +- docs/Consume-Packages/Reinstalling-and-Updating-Packages.md | 2 +- docs/Create-Packages/Creating-Localized-Packages.md | 2 +- docs/Create-Packages/Creating-a-Package.md | 6 +++--- docs/Create-Packages/Overview-and-Workflow.md | 2 +- docs/Guides/Create-Cross-Platform-Packages.md | 2 +- docs/Guides/Create-NET-Standard-Packages-VS2015.md | 4 ++-- docs/Guides/Create-UWP-Packages.md | 2 +- docs/Quickstart/Create-and-Publish-a-Package.md | 2 +- docs/{Schema => Reference}/Package-Versioning.md | 2 +- docs/Release-Notes/NuGet-1.4.md | 2 +- docs/Schema/nuspec.md | 4 ++-- docs/Schema/packages-config.md | 2 +- docs/TOC.md | 4 ++-- 16 files changed, 23 insertions(+), 23 deletions(-) rename docs/{Schema => Reference}/Package-Versioning.md (99%) diff --git a/docs/Consume-Packages/Dependency-Resolution.md b/docs/Consume-Packages/Dependency-Resolution.md index 63320010e..0c99a554a 100644 --- a/docs/Consume-Packages/Dependency-Resolution.md +++ b/docs/Consume-Packages/Dependency-Resolution.md @@ -5,7 +5,7 @@ title: NuGet Package Dependency Resolution | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/20/2017 +ms.date: 8/14/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -38,7 +38,7 @@ When multiple packages have the same dependency, then the same package ID can ap In this topic: - [Dependency resolution with PackageReference and project.json](#dependency-resolution-with-packagereference-and-projectjson) -- [Dependency resolution with packages.confid](#dependency-resolution-with-packagesconfig) +- [Dependency resolution with packages.config](#dependency-resolution-with-packagesconfig) - [Excluding references](#excluding-references), which is necessary when there's a conflict between a dependency specified in one project and an assembly that's produced by another. - [Dependency updates during package install](#dependency-updates-during-package-install) - [Resolving incompatible package errors](#resolving-incompatible-package-errors) @@ -84,7 +84,7 @@ When using a wildcard, NuGet resolves the highest version of a package that matc ![Choosing version 6.0.1 when a floating version 6.0.* is requested](media/projectJson-dependency-4.png) > [!Note] -> For information on the behavior of wildcards and pre-release versions, see [Package versioning](../Schema/Package-Versioning.md#version-ranges-and-wildcards). +> For information on the behavior of wildcards and pre-release versions, see [Package versioning](../reference/package-versioning.md#version-ranges-and-wildcards). diff --git a/docs/Consume-Packages/Package-References-in-Project-Files.md b/docs/Consume-Packages/Package-References-in-Project-Files.md index d8d33dd0b..c5f03bd27 100644 --- a/docs/Consume-Packages/Package-References-in-Project-Files.md +++ b/docs/Consume-Packages/Package-References-in-Project-Files.md @@ -62,7 +62,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](../schema/package-versioning.md#version-ranges-and-wildcards). +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](../reference/package-versioning.md#version-ranges-and-wildcards). ## Floating Versions diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/Consume-Packages/Package-Restore.md index 0914aeda4..042a64810 100644 --- a/docs/Consume-Packages/Package-Restore.md +++ b/docs/Consume-Packages/Package-Restore.md @@ -147,7 +147,7 @@ When NuGet restores packages through any method, it will honor any constraints s ``` -In all cases, use the notation described in [Package versioning](../schema/package-versioning.md). +In all cases, use the notation described in [Package versioning](../reference/package-versioning.md). ## Command-line restore diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index 8bd08a972..9591a9588 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -115,4 +115,4 @@ To set a constraint, open `packages.config` in a text editor, locate the depende ``` -In all cases, use the notation described in [Package versioning](../schema/package-versioning.md#version-ranges-and-wildcards). +In all cases, use the notation described in [Package versioning](../reference/package-versioning.md#version-ranges-and-wildcards). diff --git a/docs/Create-Packages/Creating-Localized-Packages.md b/docs/Create-Packages/Creating-Localized-Packages.md index 92c008554..3fa13e220 100644 --- a/docs/Create-Packages/Creating-Localized-Packages.md +++ b/docs/Create-Packages/Creating-Localized-Packages.md @@ -118,7 +118,7 @@ A satellite assembly then uses the naming convention `{identifier}.{language}.{v Because this is a separate package, it has its own `.nuspec` file that contains localized metadata. Be mindful that the language in the `.nuspec` **must** match the one used in the filename. -The satellite assembly **must** also declare an exact version of the primary package as a dependency, using the [] version notation (see [Package versioning](../schema/package-versioning.md)). For example, `ContosoUtilities.de.1.0.0.nupkg` must declare a dependency on `ContosoUtilities.1.0.0.nupkg` using the `[1.0.0]` notation. The satellite package can, of course, have a different version number than the primary package. +The satellite assembly **must** also declare an exact version of the primary package as a dependency, using the [] version notation (see [Package versioning](../reference/package-versioning.md)). For example, `ContosoUtilities.de.1.0.0.nupkg` must declare a dependency on `ContosoUtilities.1.0.0.nupkg` using the `[1.0.0]` notation. The satellite package can, of course, have a different version number than the primary package. The satellite package's structure must then include the resource assembly and XML IntelliSense file in a subfolder that matches `{language}` in the package filename: diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index a84e7c268..d3977c4f5 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -123,7 +123,7 @@ Here's typical (but fictitious) `.nuspec` file, with annotation comments: ``` -For details on declaring dependencies and specifying version numbers, see [Package versioning](../schema/package-versioning.md). +For details on declaring dependencies and specifying version numbers, see [Package versioning](../reference/package-versioning.md). Because the manifest is always included in a package, you can find any number of additional examples by examining existing packages. A good source is the global package cache on your machine, the location of which is returned by the following command: @@ -226,7 +226,7 @@ For the `` value, the following best practices apply: For the `` value: - In general, set the version of the package to match the library, though this is not strictly required. This is a simple matter when you limit a package to a single assembly, as described earlier in [Deciding which assemblies to package](#deciding-which-assemblies-to-package). Overall, remember that NuGet itself deals with package versions when resolving dependencies, not assembly versions. -- When using a non-standard version scheme, be sure to consider the NuGet versioning rules as explained in [Package versioning](../schema/package-versioning.md). +- When using a non-standard version scheme, be sure to consider the NuGet versioning rules as explained in [Package versioning](../reference/package-versioning.md). > The following series of brief blog posts are also helpful to understand versioning: > @@ -400,7 +400,7 @@ Once you've created a package, which is a `.nupkg` file, you can publish it to t You might also want to extend the capabilities of your package or otherwise support other scenarios as described in the following topics: -- [Package versioning](../schema/package-versioning.md) +- [Package versioning](../reference/package-versioning.md) - [Supporting multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) - [Transformations of source and configuration files](../create-packages/source-and-config-file-transformations.md) - [Localization](../create-packages/creating-localized-packages.md) diff --git a/docs/Create-Packages/Overview-and-Workflow.md b/docs/Create-Packages/Overview-and-Workflow.md index 433d3aafb..13ead3069 100644 --- a/docs/Create-Packages/Overview-and-Workflow.md +++ b/docs/Create-Packages/Overview-and-Workflow.md @@ -46,7 +46,7 @@ From there, you can consider a number of other options for your package: - [Pre-release Packages](../create-packages/prerelease-packages.md) demonstrates how to release alpha, beta, and rc packages to those customers who are interested. - [Native Packages](../create-packages/native-packages.md) describes the process for creating a package for C++ consumers. - [Symbol Packages](../create-packages/symbol-packages.md) offers guidance for supplying symbols for your library that allow consumers to step into your code while debugging. -- [Package versioning](../schema/package-versioning.md) discusses how to identify the exact versions that you allow for your dependencies (other packages that you consume from your package). +- [Package versioning](../reference/package-versioning.md) discusses how to identify the exact versions that you allow for your dependencies (other packages that you consume from your package). When you're then ready to publish a package to nuget.org, follow the simple process in [Publish a package](../create-packages/publish-a-package.md). diff --git a/docs/Guides/Create-Cross-Platform-Packages.md b/docs/Guides/Create-Cross-Platform-Packages.md index 54ce4fdda..54ab5dc71 100644 --- a/docs/Guides/Create-Cross-Platform-Packages.md +++ b/docs/Guides/Create-Cross-Platform-Packages.md @@ -286,7 +286,7 @@ To make your package available to other developers, follow the instructions on - [Nuspec Reference](../schema/nuspec.md) - [Symbol packages](../create-packages/symbol-packages.md) -- [Package versioning](../schema/package-versioning.md) +- [Package versioning](../reference/package-versioning.md) - [Supporting Multiple .NET Framework Versions](../create-packages/supporting-multiple-target-frameworks.md) - [Including MSBuild props and targets in a package](../create-packages/creating-a-package.md#including-msbuild-props-and-targets-in-a-package) - [Creating Localized Packages](../create-packages/creating-localized-packages.md) \ No newline at end of file diff --git a/docs/Guides/Create-NET-Standard-Packages-VS2015.md b/docs/Guides/Create-NET-Standard-Packages-VS2015.md index 28570b603..60632262f 100644 --- a/docs/Guides/Create-NET-Standard-Packages-VS2015.md +++ b/docs/Guides/Create-NET-Standard-Packages-VS2015.md @@ -168,7 +168,7 @@ If you have any dependencies on other NuGet packages, list those in the ` ``` -The syntax of the *version* attribute here indicates that version 8.0.3 or above is acceptable. To specify different version ranges, refer to [Package versioning](../schema/package-versioning.md). +The syntax of the *version* attribute here indicates that version 8.0.3 or above is acceptable. To specify different version ranges, refer to [Package versioning](../reference/package-versioning.md). ### Supporting multiple target frameworks @@ -334,7 +334,7 @@ To do this, create your `readme.txt` file, place it in the project root folder, - [Nuspec Reference](../schema/nuspec.md) - [Symbol packages](../create-packages/symbol-packages.md) -- [Package versioning](../schema/package-versioning.md) +- [Package versioning](../reference/package-versioning.md) - [Supporting Multiple .NET Framework Versions](../create-packages/supporting-multiple-target-frameworks.md) - [Include MSBuild props and targets in a package](../create-packages/creating-a-package.md#including-msbuild-props-and-targets-in-a-package) - [Creating Localized Packages](../create-packages/creating-localized-packages.md) diff --git a/docs/Guides/Create-UWP-Packages.md b/docs/Guides/Create-UWP-Packages.md index 26f68e101..1d5c6eaed 100644 --- a/docs/Guides/Create-UWP-Packages.md +++ b/docs/Guides/Create-UWP-Packages.md @@ -278,7 +278,7 @@ To make your package available to other developers, follow the instructions on - [.nuspec Reference](../schema/nuspec.md) - [Symbol packages](../create-packages/symbol-packages.md) -- [Package versioning](../schema/package-versioning.md) +- [Package versioning](../reference/package-versioning.md) - [Supporting Multiple .NET Framework Versions](../create-packages/supporting-multiple-target-frameworks.md) - [Include MSBuild props and targets in a package](../create-packages/creating-a-package.md#including-msbuild-props-and-targets-in-a-package) - [Creating Localized Packages](../create-packages/creating-localized-packages.md) \ No newline at end of file diff --git a/docs/Quickstart/Create-and-Publish-a-Package.md b/docs/Quickstart/Create-and-Publish-a-Package.md index fbae60992..c942f96ec 100644 --- a/docs/Quickstart/Create-and-Publish-a-Package.md +++ b/docs/Quickstart/Create-and-Publish-a-Package.md @@ -174,5 +174,5 @@ And that's it! You've just created and published your first NuGet package to [nu - [Create a Package](../create-packages/creating-a-package.md) - [Publish a Package](../create-packages/publish-a-package.md) - [Support multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) -- [Package versioning](../schema/package-versioning.md) +- [Package versioning](../reference/package-versioning.md) - [Creating localized packages](../create-packages/creating-localized-packages.md) diff --git a/docs/Schema/Package-Versioning.md b/docs/Reference/Package-Versioning.md similarity index 99% rename from docs/Schema/Package-Versioning.md rename to docs/Reference/Package-Versioning.md index e53bcf02e..b1d5517be 100644 --- a/docs/Schema/Package-Versioning.md +++ b/docs/Reference/Package-Versioning.md @@ -5,7 +5,7 @@ title: NuGet Package Version Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 8/10/2017 +ms.date: 8/14/2017 ms.topic: article ms.prod: nuget #ms.service: diff --git a/docs/Release-Notes/NuGet-1.4.md b/docs/Release-Notes/NuGet-1.4.md index ea2c0cce7..f941da2fe 100644 --- a/docs/Release-Notes/NuGet-1.4.md +++ b/docs/Release-Notes/NuGet-1.4.md @@ -89,7 +89,7 @@ only work with version 2.* of a package, but not 3.0 and above. In order to prev `packages.config` file using the new `allowedVersions` attribute. For example, the following example shows how to lock the `SomePackage` package the version range 2.0 - 3.0 (exclusive). -The `allowedVersions` attribute accepts values using the [version range format](../schema/package-versioning.md#version-ranges-and-wildcards). +The `allowedVersions` attribute accepts values using the [version range format](../reference/package-versioning.md#version-ranges-and-wildcards). ```xml diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index b88efcfb9..e363ada99 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -79,7 +79,7 @@ These elements must appear within a `` element. Element | Description --- | --- **id** | The case-insensitive package identifier, which must be unique across nuget.org or whatever gallery the package will reside in. IDs may not contain spaces or characters that are not valid for a URL, and generally follow .NET namespace rules. See [Choosing a unique package identifier](../create-packages/creating-a-package.md#choosing-a-unique-package-identifier-and-setting-the-version-number) for guidance. -**version** | The version of the package, following the *major.minor.patch* pattern. Version numbers may include a pre-release suffix as described in [Package versioning](../schema/package-versioning.md#pre-release-versions) +**version** | The version of the package, following the *major.minor.patch* pattern. Version numbers may include a pre-release suffix as described in [Package versioning](../reference/package-versioning.md#pre-release-versions) **description** | A long description of the package for UI display. **authors** | A comma-separated list of packages authors, matching the profile names on nuget.org. These are displayed in the NuGet Gallery on nuget.org and are used to cross-reference packages by the same authors. @@ -175,7 +175,7 @@ The `` element within `` contains any number of `` | id | Yes | The identifier of the package, such as Newtonsoft.json or Microsoft.AspNet.Mvc. | | version | Yes | The exact version of the package to install, such as 3.1.1 or 4.2.5.11-beta. A version string must have at least three numbers; a fourth is optional, as is a pre-release suffix. Ranges are not allowed. | | targetFramework | No | The [target framework moniker (TFM)](Target-Frameworks.md) to apply when installing the package. This is initially set to the project's target when a package is installed. As a result, different `` elements can have different TFMs. For example, if you create a project targeting .NET 4.5.2, packages installed at that point will use the TFM of net452. If you ;later retarget the project to .NET 4.6 and add more packages, those will use TFM of net46. A mismatch between the project's target and `targetFramework` attributes will generate warnings, in which case you can reinstall the affected packages. | -| allowedVersions | No | A range of allowed versions for this package applied during package update (see [Constraining upgrade versions](../consume-packages/reinstalling-and-updating-packages.md#constraining-upgrade-versions). It does *not* affect what package is installed during an install or restore operation. See [Package versioning](../schema/package-versioning.md#version-ranges-and-wildcards) for syntax. The PackageManager UI also disables all versions outside the allowed range. | +| allowedVersions | No | A range of allowed versions for this package applied during package update (see [Constraining upgrade versions](../consume-packages/reinstalling-and-updating-packages.md#constraining-upgrade-versions). It does *not* affect what package is installed during an install or restore operation. See [Package versioning](../reference/package-versioning.md#version-ranges-and-wildcards) for syntax. The PackageManager UI also disables all versions outside the allowed range. | | developmentDependency | No | If the consuming project itself creates a NuGet package, setting this to `true` for a dependency prevents that package from being included when the consuming package is created. The default is `false`. | ## Examples diff --git a/docs/TOC.md b/docs/TOC.md index f5ab831ed..10b71f972 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -49,13 +49,13 @@ ### [Uninstall-Package](Tools/ps-ref-uninstall-package.md) ### [Update-Package](Tools/ps-ref-update-package.md) ## [dotnet Commands](Tools/dotnet-Commands.md) -# Schema +# Reference ## [.nuspec](Schema/nuspec.md) ## [packages.config](Schema/packages-config.md) ## [project.json](Schema/project-json.md) ## [MSBuild Targets](Schema/msbuild-targets.md) ## [Nuget.Config file](Schema/nuget-config-file.md) -## [Package Versioning](Schema/Package-Versioning.md) +## [Package Versioning](reference/package-versioning.md) ## [Target Frameworks](Schema/Target-Frameworks.md) ## [Analyzers Conventions](Schema/Analyzers-Conventions.md) # API From 6975a8bf87529c0e0d85798aadaf921bca6c5098 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 14 Aug 2017 08:44:10 -0700 Subject: [PATCH 0119/2943] Change date --- docs/Create-Packages/Prerelease-Packages.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Create-Packages/Prerelease-Packages.md b/docs/Create-Packages/Prerelease-Packages.md index 69a1d305d..1e3b2b7fa 100644 --- a/docs/Create-Packages/Prerelease-Packages.md +++ b/docs/Create-Packages/Prerelease-Packages.md @@ -5,7 +5,7 @@ title: Pre-release versions in NuGet packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/20/2017 +ms.date: 8/14/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -36,7 +36,7 @@ Whenever you release an updated package with a new version number, NuGet conside A stable release is one that's considered reliable enough to be used in production. The latest stable release is also the one that will be installed as a package update or during package restore (subject to constraints as described in [Reinstalling and updating packages](../consume-packages/reinstalling-and-updating-packages.md)). -To support the software release lifecycle, NuGet 1.6 and later allows for the distribution of pre-release packages, where the version number includes a semantic versioning suffix such as `-alpha`, `-beta`, or `-rc`. For more information, see [Package versioning](../Schema/Package-Versioning.md#pre-release-versions). +To support the software release lifecycle, NuGet 1.6 and later allows for the distribution of pre-release packages, where the version number includes a semantic versioning suffix such as `-alpha`, `-beta`, or `-rc`. For more information, see [Package versioning](../reference/package-versioning.md#pre-release-versions). You can specify such versions in two ways: @@ -57,4 +57,4 @@ You can specify such versions in two ways: > [!Note] > A stable package release cannot have a pre-release dependency. This avoids accidentally installing potentially unstable releases. -When you’re ready to release a stable version, just remove the suffix and the package takes precedence over any pre-release versions. Again, see [Package versioning](../Schema/Package-Versioning.md#pre-release-versions). \ No newline at end of file +When you’re ready to release a stable version, just remove the suffix and the package takes precedence over any pre-release versions. Again, see [Package versioning](../reference/package-versioning.md#pre-release-versions). \ No newline at end of file From d58f0da276017f1ca80fd4b561a836e4ea423369 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 14 Aug 2017 09:14:00 -0700 Subject: [PATCH 0120/2943] Fixing up links --- docs/Create-Packages/Dependency-Versions.md | 2 +- .../media/Prerelease_02-CheckPrerelease.png | Bin 0 -> 3235 bytes docs/What-is-NuGet.md | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 docs/Create-Packages/media/Prerelease_02-CheckPrerelease.png diff --git a/docs/Create-Packages/Dependency-Versions.md b/docs/Create-Packages/Dependency-Versions.md index 64a9073a1..8817ed7c9 100644 --- a/docs/Create-Packages/Dependency-Versions.md +++ b/docs/Create-Packages/Dependency-Versions.md @@ -1,3 +1,3 @@ --- -redirect_url: /nuget/schema/package-versioning +redirect_url: /nuget/reference/package-versioning --- \ No newline at end of file diff --git a/docs/Create-Packages/media/Prerelease_02-CheckPrerelease.png b/docs/Create-Packages/media/Prerelease_02-CheckPrerelease.png new file mode 100644 index 0000000000000000000000000000000000000000..689089db94f1d027b0eb6b0121789c87fc45d1f9 GIT binary patch literal 3235 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 T$#}OPpDssxXS+%p|FnMrF-3*v literal 0 HcmV?d00001 diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index 9393b78f4..d397673ae 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -105,7 +105,7 @@ Within an individual project, NuGet does a lot of work to manage the overall dep That is, it's quite common that a project takes a dependency on one or more packages that themselves have the same dependencies. For example, some of the most useful utility packages on nuget.org are employed by many other packages. In the entire dependency graph, ten, you could easily have ten different references to different versions of the same package. However, you don't want to bring multiple versions of that package into the application itself, so NuGet sorts out which single version that everyone can use. (See [Dependency Resolution](Consume-Packages/Dependency-Resolution.md) for more on this topic.) -Beyond that, NuGet maintains all the specifications related to how packages are structured (including [localization](Create-Packages/Creating-Localized-Packages.md) and [debug symbols](Create-Packages/Symbol-Packages.md) and how they are referenced (including [version ranges](create-packages/dependency-versions.md) and [pre-release versions](create-packages/Prerelease-Packages.md). NuGet also and provides APIs for credential providers (for accessing private hosts) and for developers who write Visual Studio extensions and project templates. +Beyond that, NuGet maintains all the specifications related to how packages are structured (including [localization](Create-Packages/Creating-Localized-Packages.md) and [debug symbols](Create-Packages/Symbol-Packages.md) and how they are referenced (including [version ranges](reference/package-versioning.md#version-ranges-and-wildcards) and [pre-release versions](create-packages/Prerelease-Packages.md). NuGet also and provides APIs for credential providers (for accessing private hosts) and for developers who write Visual Studio extensions and project templates. Take a moment to browse the table of contents for this documentation, and you'll see all of these capabilities represented there, along with release notes dating back to NuGet's beginnings. From 40e99aaa3f677a0f8756662abee8251827187349 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 14 Aug 2017 09:17:46 -0700 Subject: [PATCH 0121/2943] Remove Preview, reorg ref TOC --- docs/Reference/Errors-and-Warnings.md | 8 ++++---- docs/TOC.md | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index 1acf2ae0b..d894e763c 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -5,7 +5,7 @@ title: NuGet Restore Errors and Warnings Reference (PREVIEW) | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/21/2017 +ms.date: 8/14/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -29,11 +29,11 @@ ms.reviewer: --- -# Errors and warnings (PREVIEW) +# Errors and warnings -In NuGet 4.3.0 (currently in preview), errors and warnings are numbered as described in this topic and provide detailed information to help you address the issues involved. +In NuGet 4.3.0, errors and warnings are numbered as described in this topic and provide detailed information to help you address the issues involved. -The errors and warnings listed here are available only with [PackageReference-based](../Consume-Packages/Package-References-in-Project-Files.md) projects and NuGet 4.3.0 (currently in preview). NuGet also honors MSBuild properties to suppress warnings or elevate them to errors. For more information, see [How to: Suppress Compiler Warnings](https://docs.microsoft.com/visualstudio/ide/how-to-suppress-compiler-warnings) in the Visual Studio documentation. +The errors and warnings listed here are available only with [PackageReference-based](../Consume-Packages/Package-References-in-Project-Files.md) projects and NuGet 4.3.0. NuGet also honors MSBuild properties to suppress warnings or elevate them to errors. For more information, see [How to: Suppress Compiler Warnings](https://docs.microsoft.com/visualstudio/ide/how-to-suppress-compiler-warnings) in the Visual Studio documentation. **Errors** diff --git a/docs/TOC.md b/docs/TOC.md index b24e12fb3..181423b3a 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -54,12 +54,12 @@ ## [.nuspec](Schema/nuspec.md) ## [packages.config](Schema/packages-config.md) ## [project.json](Schema/project-json.md) -## [MSBuild Targets](Schema/msbuild-targets.md) -## [Nuget.Config file](Schema/nuget-config-file.md) ## [Package Versioning](reference/package-versioning.md) +## [Nuget.Config file](Schema/nuget-config-file.md) +## [MSBuild Targets](Schema/msbuild-targets.md) ## [Target Frameworks](Schema/Target-Frameworks.md) ## [Analyzers Conventions](Schema/Analyzers-Conventions.md) -## [Errors and warnings (PREVIEW)](Reference/Errors-and-Warnings.md) +## [Errors and warnings](Reference/Errors-and-Warnings.md) # API ## [NuGet API V3](API/NuGet-API-V3.md) ## [NuGet Credential Providers for Visual Studio](API/Nuget-Credential-Providers-for-Visual-Studio.md) From ac4cff6a5dd0d45e5f20a2d9c8d952ce5eb71b20 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 14 Aug 2017 09:29:18 -0700 Subject: [PATCH 0122/2943] Small edits and update topic date --- docs/Release-Notes/NuGet-4.3-RTM.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/Release-Notes/NuGet-4.3-RTM.md b/docs/Release-Notes/NuGet-4.3-RTM.md index 0de3938f5..6ad6e5511 100644 --- a/docs/Release-Notes/NuGet-4.3-RTM.md +++ b/docs/Release-Notes/NuGet-4.3-RTM.md @@ -5,7 +5,7 @@ title: NuGet 4.3 RTM Release Notes | Microsoft Docs author: karann ms.author: karann manager: unnir -ms.date: 03/03/2017 +ms.date: 08/14/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -31,21 +31,21 @@ ms.reviewer: # 4.3 RTM Release Notes -[Visual Studio 2017 15.3 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.3 RTM which adds support for new scenarios such as .NET Standard 2.0/.NET Core 2.0, has a bunch of quality fixes and improves performance. This release also brings several improvements like support for Semantic Versioning 2.0.0, MSBuild integration of NuGet warnings and errors, and more. +[Visual Studio 2017 15.3 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.3 RTM which adds support for new scenarios such as .NET Standard 2.0/.NET Core 2.0, contains many quality fixes, and improves performance. This release also brings several improvements like support for Semantic Versioning 2.0.0, MSBuild integration of NuGet warnings and errors, and more. ## Known issues ### NuGet restore may treat disabled package sources as enabled in some cases #### Issue: -The following restore command line techniques will treat disabled packages sources as enabled. [NuGet#5704](https://github.com/NuGet/Home/issues/5704) -1) msbuild /t:restore -2) dotnet restore (either with dotnet.exe that ships with VS, or the one that comes with NetCore SDK 2.0.0) +The following restore command-line techniques treat disabled packages sources as enabled. [NuGet#5704](https://github.com/NuGet/Home/issues/5704) +- `msbuild /t:restore` +- `dotnet restore` (either with dotnet.exe that ships with VS, or the one that comes with NetCore SDK 2.0.0) #### Workaround: -1) Use Visual Studio (2017 15.3 or later) or NuGet.exe (v4.3.0 or later) -2) Delete your disabled source and continue to use msbuild or dotnet.exe. -3) For your solution, you could use "Clear" in NuGet.config and then define the sources necessary for that solution. +1. Use Visual Studio (2017 15.3 or later) or NuGet.exe (v4.3.0 or later) +1. Delete your disabled source and continue to use msbuild or dotnet.exe. +1. For your solution, you could use "Clear" in NuGet.config and then define the sources necessary for that solution. ## Issues fixed in NuGet 4.3 RTM timeframe From 3516f2cf94598bb5a80f8b9aaedf91fd6e7c7a90 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 14 Aug 2017 09:31:23 -0700 Subject: [PATCH 0123/2943] Remove "PREVIEW" from page title --- docs/Reference/Errors-and-Warnings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index d894e763c..fa380891a 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -1,7 +1,7 @@ --- # required metadata -title: NuGet Restore Errors and Warnings Reference (PREVIEW) | Microsoft Docs +title: NuGet Restore Errors and Warnings Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen From 6bfc2a145d359d1f062a93c900de830e16202674 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 14 Aug 2017 09:32:11 -0700 Subject: [PATCH 0124/2943] Update metadata topic date --- docs/Release-Notes/Index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Release-Notes/Index.md b/docs/Release-Notes/Index.md index c07c22746..db30ac819 100644 --- a/docs/Release-Notes/Index.md +++ b/docs/Release-Notes/Index.md @@ -6,7 +6,7 @@ title: NuGet Release Notes | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 8/14/2017 ms.topic: article ms.prod: nuget #ms.service: From 4f8da75c17db85f4750c38d847e0dd3f9abaf992 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 14 Aug 2017 09:36:24 -0700 Subject: [PATCH 0125/2943] Typos --- docs/Create-Packages/Creating-a-Package.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index a4566ab44..4164ae8e4 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -79,7 +79,7 @@ Required properties: - A long description of the package. Common optional properties: -- Release note +- Release notes - Copyright information - A short description for the [Package Manager UI in Visual Studio](../Tools/Package-Manager-UI.md) - A locale ID @@ -159,7 +159,7 @@ Go into any *package\version* folder, copy the `.nupkg` file to a `.zip` file, t ## Creating the .nuspec file -Creating a complete manifest typically begins with a basic `.nuspec` file, which you then edit by hand into its final form so that it describes the package contains the content you want. +Creating a complete manifest typically begins with a basic `.nuspec` file, which you then edit by hand into its final form so that it describes the exact content you want in the final package. The best way to create an initial `.nuspec` file is by using the [nuget spec](../Tools/nuget-exe-CLI-Reference.md#spec) command to create a template manifest. This ensures that you start with the proper file structure. You can also start with a manifest from another package and modify it to suit your needs. From 543c4b9952a868e8e3aa55473ee11625b73397f8 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 14 Aug 2017 09:38:06 -0700 Subject: [PATCH 0126/2943] Add 4.3 release notes to TOC --- docs/TOC.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/TOC.md b/docs/TOC.md index 181423b3a..59c482f86 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -77,6 +77,7 @@ # [GitHub Repositories](https://github.com/NuGet) # Release Notes ## [Known Issues](Release-Notes/Known-Issues.md) +## [NuGet 4.3 RTM](Release-Notes/NuGet-4.3-RTM.md) ## [NuGet 4.0 RTM](Release-Notes/NuGet-4.0-RTM.md) ## [NuGet 4.0 RC](Release-Notes/NuGet-4.0-RC.md) ## [NuGet 3.5 RTM](Release-Notes/NuGet-3.5-RTM.md) From f5cf27b18be07d25be90e9a8eb35ce687a6d235e Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 14 Aug 2017 09:52:35 -0700 Subject: [PATCH 0127/2943] Spacing tweak --- docs/TOC.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/TOC.md b/docs/TOC.md index 59c482f86..135a4e51b 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -31,7 +31,7 @@ ## [Configuring NuGet Behavior](Consume-Packages/Configuring-NuGet-Behavior.md) ## [Dependency Resolution](Consume-Packages/Dependency-Resolution.md) ## [Package References in Project Files](Consume-Packages/Package-References-in-Project-Files.md) -#Hosting Packages +# Hosting Packages ## [Overview](Hosting-Packages/Overview.md) ## [Local Feeds](Hosting-Packages/Local-Feeds.md) ## [NuGet.Server](Hosting-Packages/NuGet-Server.md) From a7ca38a2bffd9b739aa0ebd845153618c499f3ea Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 14 Aug 2017 09:53:48 -0700 Subject: [PATCH 0128/2943] Spacing tweak --- docs/TOC.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/TOC.md b/docs/TOC.md index 59c482f86..135a4e51b 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -31,7 +31,7 @@ ## [Configuring NuGet Behavior](Consume-Packages/Configuring-NuGet-Behavior.md) ## [Dependency Resolution](Consume-Packages/Dependency-Resolution.md) ## [Package References in Project Files](Consume-Packages/Package-References-in-Project-Files.md) -#Hosting Packages +# Hosting Packages ## [Overview](Hosting-Packages/Overview.md) ## [Local Feeds](Hosting-Packages/Local-Feeds.md) ## [NuGet.Server](Hosting-Packages/NuGet-Server.md) From 8980fb0bc04ee8b15fc5d31368823af5b3d80290 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 14 Aug 2017 10:43:18 -0700 Subject: [PATCH 0129/2943] Add images and update index.md links --- docs/index.md | 46 +++--- .../nuget-get-started-consume-packages.svg | 118 ++++++++++++++ .../hub/nuget-get-started-create-packages.svg | 144 +++++++++++++++++ docs/media/hub/nuget-get-started-guides.svg | 149 ++++++++++++++++++ .../hub/nuget-get-started-host-packages.svg | 88 +++++++++++ .../hub/nuget-get-started-quickstarts.svg | 82 ++++++++++ .../hub/nuget-get-started-what-is-nuget.svg | 77 +++++++++ docs/media/hub/nuget-tools-api.svg | 73 +++++++++ docs/media/hub/nuget-tools-policies.svg | 105 ++++++++++++ docs/media/hub/nuget-tools-reference.svg | 94 +++++++++++ docs/media/hub/nuget-tools-tools.svg | 95 +++++++++++ .../hub/nuget-tools-vs-extensibility.svg | 65 ++++++++ 12 files changed, 1113 insertions(+), 23 deletions(-) create mode 100644 docs/media/hub/nuget-get-started-consume-packages.svg create mode 100644 docs/media/hub/nuget-get-started-create-packages.svg create mode 100644 docs/media/hub/nuget-get-started-guides.svg create mode 100644 docs/media/hub/nuget-get-started-host-packages.svg create mode 100644 docs/media/hub/nuget-get-started-quickstarts.svg create mode 100644 docs/media/hub/nuget-get-started-what-is-nuget.svg create mode 100644 docs/media/hub/nuget-tools-api.svg create mode 100644 docs/media/hub/nuget-tools-policies.svg create mode 100644 docs/media/hub/nuget-tools-reference.svg create mode 100644 docs/media/hub/nuget-tools-tools.svg create mode 100644 docs/media/hub/nuget-tools-vs-extensibility.svg diff --git a/docs/index.md b/docs/index.md index 9461238dc..4a021d5c9 100644 --- a/docs/index.md +++ b/docs/index.md @@ -16,7 +16,7 @@ keywords: author: kraigb ms.author: kraigb manager: ghogen -ms.date: 8/10/2017 +ms.date: 8/15/2017 ms.topic: hub-page ms.prod: nuget #ms.service: @@ -38,13 +38,13 @@ ms.reviewer:
      • - +
      • - +
      • - +
      • - +
      • - +
      • - +
        - +
        @@ -162,13 +162,13 @@ ms.reviewer:
        • - +
        • - +
        • - +
        • - +
        • - +
          - +
          diff --git a/docs/media/hub/nuget-get-started-consume-packages.svg b/docs/media/hub/nuget-get-started-consume-packages.svg new file mode 100644 index 000000000..340c5a238 --- /dev/null +++ b/docs/media/hub/nuget-get-started-consume-packages.svg @@ -0,0 +1,118 @@ + + + + + nuget-get-started-consume-packages + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/media/hub/nuget-get-started-create-packages.svg b/docs/media/hub/nuget-get-started-create-packages.svg new file mode 100644 index 000000000..2312f695e --- /dev/null +++ b/docs/media/hub/nuget-get-started-create-packages.svg @@ -0,0 +1,144 @@ + + + + + nuget-get-started-create-packages + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/media/hub/nuget-get-started-guides.svg b/docs/media/hub/nuget-get-started-guides.svg new file mode 100644 index 000000000..e5df6c263 --- /dev/null +++ b/docs/media/hub/nuget-get-started-guides.svg @@ -0,0 +1,149 @@ + + + + + nuget-get-started-guides + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/media/hub/nuget-get-started-host-packages.svg b/docs/media/hub/nuget-get-started-host-packages.svg new file mode 100644 index 000000000..36acde6a4 --- /dev/null +++ b/docs/media/hub/nuget-get-started-host-packages.svg @@ -0,0 +1,88 @@ + + + + + nuget-get-started-host-packages + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/media/hub/nuget-get-started-quickstarts.svg b/docs/media/hub/nuget-get-started-quickstarts.svg new file mode 100644 index 000000000..8a79d7c4d --- /dev/null +++ b/docs/media/hub/nuget-get-started-quickstarts.svg @@ -0,0 +1,82 @@ + + + + + nuget-get-started-quickstarts + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/media/hub/nuget-get-started-what-is-nuget.svg b/docs/media/hub/nuget-get-started-what-is-nuget.svg new file mode 100644 index 000000000..7fdc205e4 --- /dev/null +++ b/docs/media/hub/nuget-get-started-what-is-nuget.svg @@ -0,0 +1,77 @@ + + + + + nuget-get-started-what-is-nuget + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/media/hub/nuget-tools-api.svg b/docs/media/hub/nuget-tools-api.svg new file mode 100644 index 000000000..85c58eb16 --- /dev/null +++ b/docs/media/hub/nuget-tools-api.svg @@ -0,0 +1,73 @@ + + + + + nuget-tools-api + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/media/hub/nuget-tools-policies.svg b/docs/media/hub/nuget-tools-policies.svg new file mode 100644 index 000000000..46503b2da --- /dev/null +++ b/docs/media/hub/nuget-tools-policies.svg @@ -0,0 +1,105 @@ + + + + + nuget-tools-policies + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/media/hub/nuget-tools-reference.svg b/docs/media/hub/nuget-tools-reference.svg new file mode 100644 index 000000000..b1935c8e3 --- /dev/null +++ b/docs/media/hub/nuget-tools-reference.svg @@ -0,0 +1,94 @@ + + + + + nuget-tools-reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/media/hub/nuget-tools-tools.svg b/docs/media/hub/nuget-tools-tools.svg new file mode 100644 index 000000000..d45a6b273 --- /dev/null +++ b/docs/media/hub/nuget-tools-tools.svg @@ -0,0 +1,95 @@ + + + + + nuget-tools-tools + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/media/hub/nuget-tools-vs-extensibility.svg b/docs/media/hub/nuget-tools-vs-extensibility.svg new file mode 100644 index 000000000..76f787687 --- /dev/null +++ b/docs/media/hub/nuget-tools-vs-extensibility.svg @@ -0,0 +1,65 @@ + + + + + nuget-tools-vs-extensibility + + + + + + + + + + + + + + + + + + + + + + + + + + From 16f06315f701ff244336982a05c3d7045efea0f1 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Mon, 14 Aug 2017 11:13:09 -0700 Subject: [PATCH 0130/2943] Update Errors-and-Warnings.md Added AssetTargetFallback --- docs/Reference/Errors-and-Warnings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index aa15d68dd..31c614ad8 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -283,7 +283,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | | | | --- | --- | -| **Issue** | *PackageTargetFallback* was used to select assets from a package. This is a warning to let the user know that the assets may not be 100% compatible. | +| **Issue** | *PackageTargetFallback/AssetTargetFallback* was used to select assets from a package. This is a warning to let the user know that the assets may not be 100% compatible. | | **Common causes** | The package doesn't support the project framework. | | **Example message** | *Package 'NuGet.Versioning' was restored using 'portable-net45+win8' instead the project target framework 'netstandard1.5'. This package may not be fully compatible with your project.* | From 7ed613118e9079722745ab7a5d0eb5054660d7fe Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Mon, 14 Aug 2017 11:20:01 -0700 Subject: [PATCH 0131/2943] Update Package-Versioning.md --- docs/Reference/Package-Versioning.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Reference/Package-Versioning.md b/docs/Reference/Package-Versioning.md index b1d5517be..530ea0b80 100644 --- a/docs/Reference/Package-Versioning.md +++ b/docs/Reference/Package-Versioning.md @@ -107,7 +107,7 @@ For nuget.org, a package is defined as a SemVer v2.0.0 package if either of the If you upload a SemVer v2.0.0-specific package to nuget.org, the package is invisible to older clients and available to only the following NuGet clients: - NuGet 4.3.0+ - Visual Studio 2017 version 15.3+ -- dotnet.exe version 2.0+ +- dotnet.exe (.NET SDK 2.0.0+) Third-party clients: - JetBrains Rider From e4e3ebd70095b8c03a8c8b3189ea5ebc647e3a73 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Mon, 14 Aug 2017 11:36:06 -0700 Subject: [PATCH 0132/2943] Update Package-Versioning.md --- docs/Reference/Package-Versioning.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Reference/Package-Versioning.md b/docs/Reference/Package-Versioning.md index 530ea0b80..d7ddb660a 100644 --- a/docs/Reference/Package-Versioning.md +++ b/docs/Reference/Package-Versioning.md @@ -94,7 +94,7 @@ When resolving package references and multiple package versions differ only by s With NuGet 4.3.0+ and Visual Studio 2017 version 15.3+, NuGet supports [Semantic Versioning 2.0.0](http://semver.org/spec/v2.0.0.html). -Certain semantics of SemVer 2.0.0 that are not supported in older clients. NuGet considers a package version to be SemVer 2.0.0 specific if either of the following statements is true: +Certain semantics of SemVer v2.0.0 that are not supported in older clients. NuGet considers a package version to be SemVer v2.0.0 specific if either of the following statements is true: - The pre-release label is dot-separated, for example, *1.0.0-alpha.1* - The version has build-metadata, for example, *1.0.0+githash* From be2c9c267335b184e2723491c28279d60bedb593 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 14 Aug 2017 12:06:39 -0700 Subject: [PATCH 0133/2943] Test image link --- docs/index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 4a021d5c9..051d2691f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -44,7 +44,8 @@ ms.reviewer:
          - + +
          From 1d84fab95a29e8398e7129b8b54bbe951efdc417 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 14 Aug 2017 12:19:43 -0700 Subject: [PATCH 0134/2943] Publishing test --- docs/media/hub/nuget-get-started-consume-packages.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/media/hub/nuget-get-started-consume-packages.svg b/docs/media/hub/nuget-get-started-consume-packages.svg index 340c5a238..5fa3f7e11 100644 --- a/docs/media/hub/nuget-get-started-consume-packages.svg +++ b/docs/media/hub/nuget-get-started-consume-packages.svg @@ -115,4 +115,4 @@ - + \ No newline at end of file From 68771572cf8cf5556de4b294ad016894070c739a Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 14 Aug 2017 13:50:59 -0700 Subject: [PATCH 0135/2943] SVG links --- docs/index.md | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/docs/index.md b/docs/index.md index 051d2691f..017a393db 100644 --- a/docs/index.md +++ b/docs/index.md @@ -44,8 +44,7 @@ ms.reviewer:
          - - +
          @@ -64,7 +63,7 @@ ms.reviewer:
          - +
          @@ -83,7 +82,7 @@ ms.reviewer:
          - +
          @@ -102,7 +101,7 @@ ms.reviewer:
          - +
          @@ -121,7 +120,7 @@ ms.reviewer:
          - +
          @@ -140,7 +139,7 @@ ms.reviewer:
          - +
          @@ -169,7 +168,7 @@ ms.reviewer:
          - +
          @@ -188,7 +187,7 @@ ms.reviewer:
          - +
          @@ -207,7 +206,7 @@ ms.reviewer:
          - +
          @@ -226,7 +225,7 @@ ms.reviewer:
          - +
          @@ -245,7 +244,7 @@ ms.reviewer:
          - +
          From 9cff4600648085f22c47641c0bf410fb2e608d47 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 14 Aug 2017 13:52:00 -0700 Subject: [PATCH 0136/2943] Add svg to published types --- docs/docfx.json | 3 ++- docs/index.md | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/docs/docfx.json b/docs/docfx.json index ff55b4f81..beeaf3dd5 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -17,7 +17,8 @@ { "files": [ "**/*.png", - "**/*.jpg" + "**/*.jpg", + "**/*.svg" ], "exclude": [ "**/obj/**", diff --git a/docs/index.md b/docs/index.md index 017a393db..fcbfb8852 100644 --- a/docs/index.md +++ b/docs/index.md @@ -44,7 +44,7 @@ ms.reviewer:
          - +
          @@ -63,7 +63,7 @@ ms.reviewer:
          - +
          @@ -82,7 +82,7 @@ ms.reviewer:
          - +
          @@ -101,7 +101,7 @@ ms.reviewer:
          - +
          @@ -120,7 +120,7 @@ ms.reviewer:
          - +
          @@ -139,7 +139,7 @@ ms.reviewer:
          - +
          @@ -168,7 +168,7 @@ ms.reviewer:
          - +
          @@ -187,7 +187,7 @@ ms.reviewer:
          - +
          @@ -206,7 +206,7 @@ ms.reviewer:
          - +
          @@ -225,7 +225,7 @@ ms.reviewer:
          - +
          @@ -244,7 +244,7 @@ ms.reviewer:
          - +
          From 2d7889031b579a2e0fba0e30cc7a6665b0f41b8f Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 14 Aug 2017 14:02:22 -0700 Subject: [PATCH 0137/2943] Fix warnings --- docs/index.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/index.md b/docs/index.md index fcbfb8852..f313e4be3 100644 --- a/docs/index.md +++ b/docs/index.md @@ -38,7 +38,7 @@ ms.reviewer:
          • - +
          • - +
          • - +
          • - +
          • - +
          • - +
            @@ -162,7 +162,7 @@ ms.reviewer: +
            \ No newline at end of file diff --git a/docs/media/hub/nuget-get-started-consume-packages.svg b/docs/media/hub/nuget-get-started-consume-packages.svg new file mode 100644 index 000000000..5fa3f7e11 --- /dev/null +++ b/docs/media/hub/nuget-get-started-consume-packages.svg @@ -0,0 +1,118 @@ + + + + + nuget-get-started-consume-packages + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/media/hub/nuget-get-started-create-packages.svg b/docs/media/hub/nuget-get-started-create-packages.svg new file mode 100644 index 000000000..2312f695e --- /dev/null +++ b/docs/media/hub/nuget-get-started-create-packages.svg @@ -0,0 +1,144 @@ + + + + + nuget-get-started-create-packages + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/media/hub/nuget-get-started-guides.svg b/docs/media/hub/nuget-get-started-guides.svg new file mode 100644 index 000000000..e5df6c263 --- /dev/null +++ b/docs/media/hub/nuget-get-started-guides.svg @@ -0,0 +1,149 @@ + + + + + nuget-get-started-guides + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/media/hub/nuget-get-started-host-packages.svg b/docs/media/hub/nuget-get-started-host-packages.svg new file mode 100644 index 000000000..36acde6a4 --- /dev/null +++ b/docs/media/hub/nuget-get-started-host-packages.svg @@ -0,0 +1,88 @@ + + + + + nuget-get-started-host-packages + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/media/hub/nuget-get-started-quickstarts.svg b/docs/media/hub/nuget-get-started-quickstarts.svg new file mode 100644 index 000000000..8a79d7c4d --- /dev/null +++ b/docs/media/hub/nuget-get-started-quickstarts.svg @@ -0,0 +1,82 @@ + + + + + nuget-get-started-quickstarts + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/media/hub/nuget-get-started-what-is-nuget.svg b/docs/media/hub/nuget-get-started-what-is-nuget.svg new file mode 100644 index 000000000..7fdc205e4 --- /dev/null +++ b/docs/media/hub/nuget-get-started-what-is-nuget.svg @@ -0,0 +1,77 @@ + + + + + nuget-get-started-what-is-nuget + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/media/hub/nuget-tools-api.svg b/docs/media/hub/nuget-tools-api.svg new file mode 100644 index 000000000..85c58eb16 --- /dev/null +++ b/docs/media/hub/nuget-tools-api.svg @@ -0,0 +1,73 @@ + + + + + nuget-tools-api + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/media/hub/nuget-tools-policies.svg b/docs/media/hub/nuget-tools-policies.svg new file mode 100644 index 000000000..46503b2da --- /dev/null +++ b/docs/media/hub/nuget-tools-policies.svg @@ -0,0 +1,105 @@ + + + + + nuget-tools-policies + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/media/hub/nuget-tools-reference.svg b/docs/media/hub/nuget-tools-reference.svg new file mode 100644 index 000000000..b1935c8e3 --- /dev/null +++ b/docs/media/hub/nuget-tools-reference.svg @@ -0,0 +1,94 @@ + + + + + nuget-tools-reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/media/hub/nuget-tools-tools.svg b/docs/media/hub/nuget-tools-tools.svg new file mode 100644 index 000000000..d45a6b273 --- /dev/null +++ b/docs/media/hub/nuget-tools-tools.svg @@ -0,0 +1,95 @@ + + + + + nuget-tools-tools + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/media/hub/nuget-tools-vs-extensibility.svg b/docs/media/hub/nuget-tools-vs-extensibility.svg new file mode 100644 index 000000000..76f787687 --- /dev/null +++ b/docs/media/hub/nuget-tools-vs-extensibility.svg @@ -0,0 +1,65 @@ + + + + + nuget-tools-vs-extensibility + + + + + + + + + + + + + + + + + + + + + + + + + + From 7f26ae600af037ca783aa72f72e20c9e6f50ab7b Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 15 Aug 2017 08:32:32 -0700 Subject: [PATCH 0140/2943] Typo --- docs/Hosting-Packages/Overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Hosting-Packages/Overview.md b/docs/Hosting-Packages/Overview.md index 6e5e7dec8..2c3d17817 100644 --- a/docs/Hosting-Packages/Overview.md +++ b/docs/Hosting-Packages/Overview.md @@ -44,7 +44,7 @@ There are also several other NuGet hosting products that support remote private - [MyGet](http://myget.org) - [ProGet](http://inedo.com/proget) from Inedo - [NuGet Server](http://nugetserver.net/), a community project from Inedo -- [NuGet Server (Open Source)](http://nuget-server.net), an open-source implementaion similar to Inedo's NuGet Server +- [NuGet Server (Open Source)](http://nuget-server.net), an open-source implementation similar to Inedo's NuGet Server - [Artifactory](https://www.jfrog.com/artifactory/) from JFrog. - [Nexus](http://www.sonatype.org/nexus/) from Sonatype. From bc0a18a95fb6d730dcac4521bc457b58f54b9485 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 15 Aug 2017 08:39:37 -0700 Subject: [PATCH 0141/2943] Update LICENSE --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 324695d03..3de968b27 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2016 NuGet +Copyright (c) .NET Foundation Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From cf0efd026a9ee60ce6f23ae5a44a7e6c2ff48947 Mon Sep 17 00:00:00 2001 From: Raymond Date: Tue, 22 Aug 2017 09:59:33 -0700 Subject: [PATCH 0142/2943] Update Creating-a-Package.md Fixing grammatical error. --- docs/Create-Packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 4164ae8e4..0a6ba480a 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -31,7 +31,7 @@ ms.reviewer: No matter what your package does or what code it contains, NuGet is how you package that functionality into a component that can be shared with and used by any number of other developers. -The packaging process begins with the compiled code (assemblies), symbols, and/or other files that you want to deliver as a package (see [Overview and workflow](Overview-and-Workflow.md). That is, creating a package is an independent process from compiling or otherwise generating the files that go into the package. That said, the packaging process can can use information in a project file, helping you keep compiled assemblies and packages containing those assemblies in sync. +The packaging process begins with the compiled code (assemblies), symbols, and/or other files that you want to deliver as a package (see [Overview and workflow](Overview-and-Workflow.md). That is, creating a package is an independent process from compiling or otherwise generating the files that go into the package. That said, the packaging process can use information in a project file, helping you keep compiled assemblies and packages containing those assemblies in sync. This topic describes the detailed process of creating a package and serves as a reference for different aspects of that process. For a focused walkthrough, refer to [Create and Publish a Package Quickstart](../quickstart/create-and-publish-a-package.md). From 2029f830609e0045a4a999366b5249ca428d96e5 Mon Sep 17 00:00:00 2001 From: Raymond Date: Tue, 22 Aug 2017 23:04:22 -0700 Subject: [PATCH 0143/2943] Update Creating-a-Package.md (#433) Fixing grammatical error. --- docs/Create-Packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 4164ae8e4..0a6ba480a 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -31,7 +31,7 @@ ms.reviewer: No matter what your package does or what code it contains, NuGet is how you package that functionality into a component that can be shared with and used by any number of other developers. -The packaging process begins with the compiled code (assemblies), symbols, and/or other files that you want to deliver as a package (see [Overview and workflow](Overview-and-Workflow.md). That is, creating a package is an independent process from compiling or otherwise generating the files that go into the package. That said, the packaging process can can use information in a project file, helping you keep compiled assemblies and packages containing those assemblies in sync. +The packaging process begins with the compiled code (assemblies), symbols, and/or other files that you want to deliver as a package (see [Overview and workflow](Overview-and-Workflow.md). That is, creating a package is an independent process from compiling or otherwise generating the files that go into the package. That said, the packaging process can use information in a project file, helping you keep compiled assemblies and packages containing those assemblies in sync. This topic describes the detailed process of creating a package and serves as a reference for different aspects of that process. For a focused walkthrough, refer to [Create and Publish a Package Quickstart](../quickstart/create-and-publish-a-package.md). From 60c59bac88bcbd9fbb572941605833fa8e056f26 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 23 Aug 2017 12:10:24 -0700 Subject: [PATCH 0144/2943] Setting ms.topic values --- docs/Guides/Create-Cross-Platform-Packages.md | 2 +- docs/Guides/Create-NET-Standard-Packages-VS2015.md | 2 +- docs/Guides/Create-NET-Standard-Packages-VS2017.md | 2 +- docs/Guides/Create-UWP-Controls.md | 2 +- docs/Guides/Create-UWP-Packages.md | 2 +- docs/Guides/Install-NuGet.md | 2 +- docs/Quickstart/Create-and-Publish-a-Package.md | 2 +- docs/Quickstart/Use-a-Package.md | 2 +- docs/Reference/Errors-and-Warnings.md | 2 +- docs/Reference/Package-Versioning.md | 2 +- docs/Schema/Target-Frameworks.md | 2 +- docs/Schema/nuget-config-file.md | 2 +- docs/Schema/nuspec.md | 2 +- docs/Schema/packages-config.md | 2 +- docs/Schema/project-json.md | 2 +- docs/Tools/PowerShell-Reference.md | 2 +- docs/Tools/nuget-exe-CLI-Reference.md | 2 +- docs/Tools/ps-ref-add-bindingredirect.md | 2 +- docs/Tools/ps-ref-find-package.md | 2 +- docs/Tools/ps-ref-get-package.md | 2 +- docs/Tools/ps-ref-get-project.md | 2 +- docs/Tools/ps-ref-install-package.md | 2 +- docs/Tools/ps-ref-open-packagepage.md | 2 +- docs/Tools/ps-ref-register-tabexpansion.md | 2 +- docs/Tools/ps-ref-sync-package.md | 2 +- docs/Tools/ps-ref-uninstall-package.md | 2 +- docs/Tools/ps-ref-update-package.md | 2 +- docs/Visual-Studio-Extensibility/NuGet-API-in-Visual-Studio.md | 2 +- docs/Visual-Studio-Extensibility/Project-System-Support.md | 2 +- 29 files changed, 29 insertions(+), 29 deletions(-) diff --git a/docs/Guides/Create-Cross-Platform-Packages.md b/docs/Guides/Create-Cross-Platform-Packages.md index 54ab5dc71..1846773a4 100644 --- a/docs/Guides/Create-Cross-Platform-Packages.md +++ b/docs/Guides/Create-Cross-Platform-Packages.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 1/9/2017 -ms.topic: article +ms.topic: get-started-article ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Guides/Create-NET-Standard-Packages-VS2015.md b/docs/Guides/Create-NET-Standard-Packages-VS2015.md index 60632262f..c9f9a8f88 100644 --- a/docs/Guides/Create-NET-Standard-Packages-VS2015.md +++ b/docs/Guides/Create-NET-Standard-Packages-VS2015.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 1/9/2017 -ms.topic: article +ms.topic: get-started-article ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Guides/Create-NET-Standard-Packages-VS2017.md b/docs/Guides/Create-NET-Standard-Packages-VS2017.md index 3e08e7aa5..4876e890f 100644 --- a/docs/Guides/Create-NET-Standard-Packages-VS2017.md +++ b/docs/Guides/Create-NET-Standard-Packages-VS2017.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 5/23/2017 -ms.topic: article +ms.topic: get-started-article ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Guides/Create-UWP-Controls.md b/docs/Guides/Create-UWP-Controls.md index f84843ec8..c61161bf3 100644 --- a/docs/Guides/Create-UWP-Controls.md +++ b/docs/Guides/Create-UWP-Controls.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 3/21/2017 -ms.topic: article +ms.topic: get-started-article ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Guides/Create-UWP-Packages.md b/docs/Guides/Create-UWP-Packages.md index 1d5c6eaed..4cbaa17f5 100644 --- a/docs/Guides/Create-UWP-Packages.md +++ b/docs/Guides/Create-UWP-Packages.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 7/17/2017 -ms.topic: article +ms.topic: get-started-article ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Guides/Install-NuGet.md b/docs/Guides/Install-NuGet.md index 3de77b851..2dc37eeec 100644 --- a/docs/Guides/Install-NuGet.md +++ b/docs/Guides/Install-NuGet.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 7/17/2017 -ms.topic: article +ms.topic: get-started-article ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Quickstart/Create-and-Publish-a-Package.md b/docs/Quickstart/Create-and-Publish-a-Package.md index c942f96ec..52bfada50 100644 --- a/docs/Quickstart/Create-and-Publish-a-Package.md +++ b/docs/Quickstart/Create-and-Publish-a-Package.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 1/9/2017 -ms.topic: article +ms.topic: get-started-article ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Quickstart/Use-a-Package.md b/docs/Quickstart/Use-a-Package.md index b427826ff..17b18c345 100644 --- a/docs/Quickstart/Use-a-Package.md +++ b/docs/Quickstart/Use-a-Package.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 1/9/2017 -ms.topic: article +ms.topic: get-started-article ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index 31c614ad8..446161b42 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 8/14/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Reference/Package-Versioning.md b/docs/Reference/Package-Versioning.md index d7ddb660a..5d3f70c5c 100644 --- a/docs/Reference/Package-Versioning.md +++ b/docs/Reference/Package-Versioning.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 8/14/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Schema/Target-Frameworks.md b/docs/Schema/Target-Frameworks.md index a27c1d095..df3d94c6a 100644 --- a/docs/Schema/Target-Frameworks.md +++ b/docs/Schema/Target-Frameworks.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 4/24/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Schema/nuget-config-file.md b/docs/Schema/nuget-config-file.md index 5375c191d..58c26c782 100644 --- a/docs/Schema/nuget-config-file.md +++ b/docs/Schema/nuget-config-file.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 1/9/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index 1e4223409..77345bdba 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 7/25/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Schema/packages-config.md b/docs/Schema/packages-config.md index b99c17993..1e752aca5 100644 --- a/docs/Schema/packages-config.md +++ b/docs/Schema/packages-config.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 4/3/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Schema/project-json.md b/docs/Schema/project-json.md index 5541838a8..bf4aa0f87 100644 --- a/docs/Schema/project-json.md +++ b/docs/Schema/project-json.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 7/26/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Tools/PowerShell-Reference.md b/docs/Tools/PowerShell-Reference.md index 9fbb2bd8d..829268f81 100644 --- a/docs/Tools/PowerShell-Reference.md +++ b/docs/Tools/PowerShell-Reference.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 7/25/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index d183268fb..081f1fe5d 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 7/17/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Tools/ps-ref-add-bindingredirect.md b/docs/Tools/ps-ref-add-bindingredirect.md index 2e9249d17..2114c2bdc 100644 --- a/docs/Tools/ps-ref-add-bindingredirect.md +++ b/docs/Tools/ps-ref-add-bindingredirect.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 6/1/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Tools/ps-ref-find-package.md b/docs/Tools/ps-ref-find-package.md index a817e8c06..85d437581 100644 --- a/docs/Tools/ps-ref-find-package.md +++ b/docs/Tools/ps-ref-find-package.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 6/1/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Tools/ps-ref-get-package.md b/docs/Tools/ps-ref-get-package.md index e71ba9609..28eec0c97 100644 --- a/docs/Tools/ps-ref-get-package.md +++ b/docs/Tools/ps-ref-get-package.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 6/1/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Tools/ps-ref-get-project.md b/docs/Tools/ps-ref-get-project.md index 6054e3f8d..bfcff1ff5 100644 --- a/docs/Tools/ps-ref-get-project.md +++ b/docs/Tools/ps-ref-get-project.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 6/1/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Tools/ps-ref-install-package.md b/docs/Tools/ps-ref-install-package.md index dc699543b..28a4480e5 100644 --- a/docs/Tools/ps-ref-install-package.md +++ b/docs/Tools/ps-ref-install-package.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 6/1/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Tools/ps-ref-open-packagepage.md b/docs/Tools/ps-ref-open-packagepage.md index 6b67e0c04..824d7ca5a 100644 --- a/docs/Tools/ps-ref-open-packagepage.md +++ b/docs/Tools/ps-ref-open-packagepage.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 6/1/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Tools/ps-ref-register-tabexpansion.md b/docs/Tools/ps-ref-register-tabexpansion.md index 1618a8e4c..b2316e73c 100644 --- a/docs/Tools/ps-ref-register-tabexpansion.md +++ b/docs/Tools/ps-ref-register-tabexpansion.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 7/25/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Tools/ps-ref-sync-package.md b/docs/Tools/ps-ref-sync-package.md index 92e2f04b9..fb9f38e20 100644 --- a/docs/Tools/ps-ref-sync-package.md +++ b/docs/Tools/ps-ref-sync-package.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 6/1/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Tools/ps-ref-uninstall-package.md b/docs/Tools/ps-ref-uninstall-package.md index 3e4e785ab..6c24d0f45 100644 --- a/docs/Tools/ps-ref-uninstall-package.md +++ b/docs/Tools/ps-ref-uninstall-package.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 6/1/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Tools/ps-ref-update-package.md b/docs/Tools/ps-ref-update-package.md index c53420ab7..a99540e8d 100644 --- a/docs/Tools/ps-ref-update-package.md +++ b/docs/Tools/ps-ref-update-package.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 7/17/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null 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 89821e09b..2ece81d47 100644 --- a/docs/Visual-Studio-Extensibility/NuGet-API-in-Visual-Studio.md +++ b/docs/Visual-Studio-Extensibility/NuGet-API-in-Visual-Studio.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 1/9/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null diff --git a/docs/Visual-Studio-Extensibility/Project-System-Support.md b/docs/Visual-Studio-Extensibility/Project-System-Support.md index 5a4ba9d28..4c5b1c28d 100644 --- a/docs/Visual-Studio-Extensibility/Project-System-Support.md +++ b/docs/Visual-Studio-Extensibility/Project-System-Support.md @@ -6,7 +6,7 @@ author: kraigb ms.author: kraigb manager: ghogen ms.date: 1/9/2017 -ms.topic: article +ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null From a336928900ca66abb572db0a56c77c69ff41e0dc Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 25 Aug 2017 11:08:51 -0700 Subject: [PATCH 0145/2943] Adding bits for runtimes --- docs/Create-Packages/Creating-a-Package.md | 3 ++- .../Supporting-Multiple-Target-Frameworks.md | 20 ++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 4164ae8e4..20a1f0cf0 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -244,7 +244,8 @@ The folder conventions are as follows: | Folder | Description | Action upon package install | | --- | --- | --- | | (root) | Location for readme.txt | Visual Studio displays a readme.txt file in the package root when the package is installed. | -| lib | Assembly files (`.dll`), documentation (`.xml`) files, and symbol (`.pdb`) files | Assemblies are added as references; `.xml` and `.pdb` copied into project folders. | +| lib | Assembly (`.dll`), documentation (`.xml`), and symbol (`.pdb`) files | Assemblies are added as references; `.xml` and `.pdb` copied into project folders. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md) for creating framework target-specific sub-folders. | +| runtimes | Architecture-specific assembly (`.dll`), symbol (`.pdb`), and native resource (`.pri`) files | Assemblies are added as references; other files are copied into project folders. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md). | | content | Arbitrary files | Contents are copied to the project root | | build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (NuGet 2.x) or `project.lock.json` (NuGet 3.x+). | | tools | Powershell scripts and programs accessible from the Package Manager Console | Contents are copied to the project folder, and the `tools` folder is added to the PATH environment variable.| diff --git a/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md b/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md index a30e685b3..c878b0b0e 100644 --- a/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md +++ b/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md @@ -5,7 +5,7 @@ title: Multi-targeting for NuGet Packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/26/2017 +ms.date: 8/25/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -77,6 +77,24 @@ To easily include all these files when building the package, use a recursive `** ``` +### Architecture-specific folders + +If you have architecture-specific assemblies, that is, separate assemblies that target ARM, x86, and x64, you must place them in a folder named `runtimes` within sub-folders named `{platform}-{architecture}\lib\{framework}` or `{platform}-{architecture}\native`. For example, the following folder structure would accommodate both native and managed DLLs targeting Windows 10 and the `uap10.0` framework: + + \runtimes + \win10-arm + \native + \lib\uap10.0 + \win10-x86 + \native + \lib\uap10.0 + \win10-x64 + \native + \lib\uap10.0 + +See [Create UWP Packages](../Guides/Create-UWP-Packages.md) for an example of referencing these files in the `.nuspec` manifest. + + ## Matching assembly versions and the target framework in a project When NuGet installs a package that has multiple assembly versions, it tries to match the framework name of the assembly with the target framework of the project. From 4c38f6e06d89eafb8d268606d08f8a429b1397fa Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 25 Aug 2017 13:29:26 -0700 Subject: [PATCH 0146/2943] Topic refreshes --- .../Configuring-NuGet-Behavior.md | 2 +- .../Consume-Packages/Dependency-Resolution.md | 6 +-- .../Finding-and-Choosing-Packages.md | 40 ++++++++--------- docs/Hosting-Packages/Local-Feeds.md | 12 ++--- docs/Hosting-Packages/NuGet-Server.md | 14 +++--- docs/Hosting-Packages/Overview.md | 12 ++--- docs/Policies/NuGet-FAQ.md | 42 +++++++++--------- docs/Quickstart/Use-a-Package.md | 19 ++++---- .../media/QS_Use-03-NewtonsoftJson.png | Bin 27843 -> 29581 bytes docs/Schema/Target-Frameworks.md | 2 +- docs/Schema/nuget-config-file.md | 17 +++---- 11 files changed, 82 insertions(+), 84 deletions(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index 9f03d3677..1eb989af8 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -48,7 +48,7 @@ The behavior of every NuGet command, whether issued from the command line, the P - The global config file located in `%APPDATA%\NuGet\NuGet.Config`, which is always used unless you specify a different config file using the `-configFile` switch on any NuGet command. For example, `nuget restore -configfile c:\my.config` uses settings from `c:\my.config` for the command and ignores any settings in the global config file. - Additional machine-wide config files: - NuGet 2.6 to NuGet 3.5: located in `%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}\]]]NuGet.Config`, where `{IDE}` can be `VisualStudio`, `{Version}` can be the Visual Studio version such as `14.0`, and `{SKU}` is either `Community`, `Pro`, or `Enterprise`. These variants allow you to create configurations that are specific to different versions and editions of Visual Studio if needs be. - - NuGet 4.0+: located under `%ProgramFiles(x86)%\NuGet\Config` rather than `%ProgramData%`. + - NuGet 4.0+: located under `%ProgramFiles(x86)%\NuGet\Config` rather than `%ProgramData%`. To migrate configuration files from `%ProgramData%`, simply copy them to the location under `%ProgramFiles(x86)%`. - The "default" file: - NuGet 2.7 to NuGet 3.5: located at `%PROGRAMDATA%\NuGet\NuGetDefaults.Config`, which is described later under [NuGet defaults file](#nuget-defaults-file) as a way to specifically enable and disable package sources. No other settings are supported in this file. - NuGet 4.0+: located under `%ProgramFiles(x86)%\NuGet\Config` rather than `%ProgramData%`. diff --git a/docs/Consume-Packages/Dependency-Resolution.md b/docs/Consume-Packages/Dependency-Resolution.md index 0c99a554a..c58d63374 100644 --- a/docs/Consume-Packages/Dependency-Resolution.md +++ b/docs/Consume-Packages/Dependency-Resolution.md @@ -45,7 +45,7 @@ In this topic: ## Dependency resolution with PackageReference and project.json -When installing packages into projects using the PackageReference or `project.json` formats, NuGet adds references to a flat package graph in the appropriate file and resolves conflicts ahead of time. This process is referred to as *transitive restore*. Reinstalling or restoring packages is then a process of downloading the packages listed in the graph, resulting in faster and more predictable builds. You can also take advantage of wildcard (floating) versions, such as *2.8.\**, avoiding expensive and error prone calls to `nuget update` on the client machines and build servers. +When installing packages into projects using the PackageReference or `project.json` formats, NuGet adds references to a flat package graph in the appropriate file and resolves conflicts ahead of time. This process is referred to as *transitive restore*. Reinstalling or restoring packages is then a process of downloading the packages listed in the graph, resulting in faster and more predictable builds. You can also take advantage of wildcard (floating) versions, such as *2.8.**, avoiding expensive and error prone calls to `nuget update` on the client machines and build servers. When the NuGet restore process runs prior to a build, it resolves dependencies first in memory, then writes the resulting graph to a file called `project.assets.json` in the `obj` folder of a project using PackageReference, or in a file named `project.lock.json` alongside `project.json`. MSBuild then reads this file and translates it into a set of folders where potential references can be found, and then adds them to the project tree in memory. @@ -61,7 +61,7 @@ Transitive restore applies four main rules to resolve dependencies: lowest appli The lowest applicable version rule restores the lowest possible version of a package as defined by its dependencies. It also applies to dependencies on the application or the class library unless declared as [floating](#floating-versions). -In the following figure, for example, *1.0-beta* is considered lower than *1.0* so NuGet chooses the 1.0 version: +In the following figure, for example, *1.0-beta* is considered lower than *1.0* so NuGet chooses the *1.0* version: ![Choosing the lowest applicable version](media/projectJson-dependency-1.png) @@ -77,7 +77,7 @@ When an application specifies an exact version number, such as *1.2*, that is no #### Floating (wildcard) versions -A floating or wildcard dependency version is specified with the * wildcard, as with *6.0.\**. This version specification says "use the latest 6.0.x version"; *4.\** means "use the latest 4.x version." Using a wildcard allows a dependency package to continue evolving without requiring a change to the consuming application (or package). +A floating or wildcard dependency version is specified with the \* wildcard, as with *6.0.**. This version specification says "use the latest 6.0.x version"; *4.** means "use the latest 4.x version." Using a wildcard allows a dependency package to continue evolving without requiring a change to the consuming application (or package). When using a wildcard, NuGet resolves the highest version of a package that matches the version pattern, for example *6.0.** gets the highest version of a package that starts with *6.0*: diff --git a/docs/Consume-Packages/Finding-and-Choosing-Packages.md b/docs/Consume-Packages/Finding-and-Choosing-Packages.md index 9c3e4ed07..251ac7ff4 100644 --- a/docs/Consume-Packages/Finding-and-Choosing-Packages.md +++ b/docs/Consume-Packages/Finding-and-Choosing-Packages.md @@ -5,7 +5,7 @@ title: Finding and choosing NuGet Packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/20/2017 +ms.date: 8/25/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -44,7 +44,7 @@ When you visit nuget.org or open the Package Manager UI in Visual Studio, you'll ![Default view of nuget.org/packages showing the most popular packages](media/Finding-01-Popularity.png) -For specific needs, searching by tags (within Visual Studio's Package Manager or on a portal like nuget.org) is the most common means of discovering a suitable package. For example, searching on "json" will list all NuGet packages that are tagged with that keyword and thus have some relationship to the JSON data format. +For specific needs, searching by tags (within Visual Studio's Package Manager or on a portal like nuget.org) is the most common means of discovering a suitable package. For example, searching on "json" lists all NuGet packages that are tagged with that keyword and thus have some relationship to the JSON data format. ![Search results for 'json' on nuget.org](media/Finding-02-SearchResults.png) @@ -54,14 +54,12 @@ At this time, search results are sorted only by relevance, so you generally want ### Does the package support my project's target framework? -NuGet will install a package into a project only if that package's supported frameworks include the project's target framework. (See [Supporting multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) for how this is done when creating a package.) If the package is not compatible, NuGet will issue an error. +NuGet installs a package into a project only if that package's supported frameworks include the project's target framework. (See [Supporting multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) for how this is done when creating a package.) If the package is not compatible, NuGet issues an error. -Some packages list their supported frameworks directly in the nuget.org gallery, but because such data is not required, many packages do not include that list. Therefore the primary way to check whether a target framework is supported is to attempt to install the package into a project. Using `Install-Package` in the NuGet Package Manager Console is the best method for this, as it will show you the most information if the package is incompatible, including its list of supported frameworks. +Some packages list their supported frameworks directly in the nuget.org gallery, but because such data is not required, many packages do not include that list. Therefore the primary way to check whether a target framework is supported is to attempt to install the package into a project. Using `Install-Package` in the NuGet Package Manager Console is the best method for this, as it shows you the most information if the package is incompatible, including its list of supported frameworks. At present there is no means to search nuget.org for packages that support a specific target framework, but the feature is under consideration; see [NuGet Issue 2936](https://github.com/NuGet/NuGetGallery/issues/2936). - - ## Pre-release packages By default, NuGet does not include pre-release versions when working with packages, but you can change this behavior as follows: @@ -70,13 +68,15 @@ By default, NuGet does not include pre-release versions when working with packag ![The Include prerelease checkbox in Visual Studio](media/Prerelease_02-CheckPrerelease.png) - Setting or clearing this box will refresh the Package Manager UI and the list of available versions you can install. + Setting or clearing this box refreshes the Package Manager UI and the list of available versions you can install. - **Package Manager Console**: Use the `-IncludePrerelease` switch with the `Find-Package`, `Get-Package`, `Install-Package`, `Sync-Package`, and `Update-Package` commands. Refer to the [PowerShell Reference](../tools/powershell-reference.md). - **NuGet CLI**: Use the `-prerelease` switch with the `install`, `update`, `delete`, and `mirror` commands. Refer to the [NuGet CLI reference](../tools/nuget-exe-cli-reference.md) + + ### Native C++ packages NuGet 2.5+ supports native C++ packages can that can be used in C++ projects in Visual Studio. This enables the **Manage NuGet Packages** context-menu command for projects, introduces a `native` target framework, and provides MSBuild integration. @@ -92,44 +92,44 @@ The best way to evaluate the usefulness of a package is, of course, to download At the same time, using a NuGet package means taking a dependency on it, so you'll want to make sure it's robust and reliable. Because installing and directly testing a package is very time-consuming, you can also learn a lot about a package's quality by using the information on a package's listing page: -- *Downloads statistics*: a the package page you'll see total downloads, downloads of the most recent version, and average downloads per day. Larger numbers obviously indicates that many other developers have taken a dependency on the package, which means that it has proven itself. +- *Downloads statistics*: a the package page you'll see total downloads, downloads of the most recent version, and average downloads per day. Larger numbers indicate that many other developers have taken a dependency on the package, which means that it has proven itself. ![Download statistics on a package's listing page](media/Finding-03-Downloads.png) -- *Version history*: on the package page, look at the date of the most recent update, and scroll down to see the version history. A well-maintained package will have recent updates, and will have a rich version history. Neglected packages will have few updates and often haven't been updated in some time. +- *Version history*: on the package page, look at the date of the most recent update, and scroll down to see the version history. A well-maintained package has recent updates and a rich version history. Neglected packages have few updates and often haven't been updated in some time. ![Version history on a package's listing page](media/Finding-04-VersionHistory.png) -- *Recent installs*: on the package page, click **Package Statistics** on the left side. This will show you the package installs for the last six weeks. A package with more current use is obviously a better choice than one without. -- *Restore vs. new install*: on the same package statistics page, clear the **Version** checkbox and check **Operation** to see a chart of package restores vs. new installs (below). +- *Recent installs*: on the package page, select **Package Statistics** on the left side. This shows you the package installs for the last six weeks. A package that other developers are actively using is typically a better choice than one that's not. +- *Restore vs. new install*: on the same package statistics page, clear the **Version** checkbox and select **Operation** to see a chart of package restores vs. new installs (below). ![Chart of operations for a NuGet package on nuget.org package statistics](media/Finding-05-OperationChart.png) - *Dependency installs*: the same **Operation** chart above has an "Install-Dependency" bar that indicates how many other NuGet packages have taken a dependency on this one. This is an even stronger indication that other developers find the package reliable. -- *Support*: on the package page, click **Project Site** if available to see what support options are available. A project with a dedicated site is generally better supported. -- *Developer history*: on the package page, click the listed **Owners** to see what other packages they've published. Those with multiple packages are more likely to continue supporting their work in the future. -- *Open source contributions*: many packages are maintained in an open-source repository, making it possible for developers depending on it to directly contribute bug fixes and feature improvements. The contribution history of any given package is also a good indicator of how many developers are actively involved. -- *Interview the owners*: all this is not to say that new developers are not equally committed to producing great packages for you to use, and it's certainly good to give them a chance to bring something new to the NuGet ecosystem. With this in mind, you can always talk directly to the package developers through the **Contact Owners** option on the listing page. Chances are, they'll be happy to work directly with you to serve your needs! +- *Support*: on the package page, select **Project Site** (if available) to see what support options are available. A project with a dedicated site is generally better supported. +- *Developer history*: on the package page, select the listed **Owners** to see what other packages they've published. Those with multiple packages are more likely to continue supporting their work in the future. +- *Open source contributions*: many packages are maintained in open-source repositories, making it possible for developers depending on them to directly contribute bug fixes and feature improvements. The contribution history of any given package is also a good indicator of how many developers are actively involved. +- *Interview the owners*: new developers can certainly be equally committed to producing great packages for you to use, and it's good to give them a chance to bring something new to the NuGet ecosystem. With this in mind, reach out directly to the package developers through the **Contact Owners** option on the listing page. Chances are, they'll be happy to work with you to serve your needs! > [!Note] -> Always be mindful of a package's license terms, which you can see by clicking **License** on a package's listing page on nuget.org. +> Always be mindful of a package's license terms, which you can see by selecting **License** on a package's listing page on nuget.org. > [!Note] -> Every package that is uploaded to nuget.org is scanned for viruses. All packages listed on nuget.org are also scanned periodically. +> Every package that's uploaded to nuget.org is scanned for viruses, and nuget.org periodically re-scans all packages. ## Search Syntax NuGet package search works the same on nuget.org, from the NuGet CLI, and within the NuGet Package Manager extension in Visual Studio. In general, search is applied to keywords as well as package descriptions. -- **Keywords**: Search will look for relevant packages that contain with all of the provided keywords. Example: +- **Keywords**: Search looks for relevant packages that contain all the provided keywords. Example: modern UI javascript -- **Phrases**: Entering terms within quotation marks will look for exact matches to those terms (case-insensitive). Example: +- **Phrases**: Entering terms within quotation marks looks for exact case-insensitive matches to those terms. Example: "modern UI" package -- **Filtering**: You can apply a search term to a specific property by using the syntax `:` where (case-insensitive) can be `id`, `packageid`, `version`, `title`, `tags`, `author`, `description`, `summary`, and `owner`. Terms can be contained in quotes if needed, and you can search for multiple properties at the same time. Also, searches on the `id` property are substring matches, whereas `packageid` uses an exact match. Examples: +- **Filtering**: You can apply a search term to a specific property by using the syntax `:` where `` (case-insensitive) can be `id`, `packageid`, `version`, `title`, `tags`, `author`, `description`, `summary`, and `owner`. Terms can be contained in quotes if needed, and you can search for multiple properties at the same time. Also, searches on the `id` property are substring matches, whereas `packageid` uses an exact match. Examples: id:NuGet.Core //Match any part of the id property Id:"Nuget.Core" diff --git a/docs/Hosting-Packages/Local-Feeds.md b/docs/Hosting-Packages/Local-Feeds.md index 307392d71..d8c7d2b0f 100644 --- a/docs/Hosting-Packages/Local-Feeds.md +++ b/docs/Hosting-Packages/Local-Feeds.md @@ -5,7 +5,7 @@ title: Setting up Local NuGet Feeds | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 8/25/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -29,13 +29,13 @@ ms.reviewer: --- # Local feeds -Local NuGet package feeds are simply folders on your local network in which you place packages (or even just a folder on your own machine). Local feeds can be either a simple folder of packages, or a hierarchical folder structure that include version numbers. With NuGet 3.3 and above, using the hierarchical structure gives much better performance. +Local NuGet package feeds are simply folders on your local network (or even just your own computer) in which you place packages. Local feeds can be a simple folder of packages, or a hierarchical folder structure that include version numbers. With NuGet 3.3 and above, using the hierarchical structure gives much better performance. -In these cases, you enable the source by simply adding the pathname, such as `\\myserver\packages` through the [Package Manager UI](../tools/package-manager-ui.md#package-sources) or the command line using [`nuget sources`](../tools/nuget-exe-cli-reference.md#sources). +In all cases, enable the source by adding its pathname, such as `\\myserver\packages`, using the [Package Manager UI](../tools/package-manager-ui.md#package-sources) or the [`nuget sources`](../tools/nuget-exe-cli-reference.md#sources) command. ## Initializing and maintaining hierarchical folders -With NuGet 3.3 and above, you'll realize much better performance by structuring the feed using a hierarchical versioned folder tree: +With NuGet 3.3+, you realize much better performance by structuring the feed using a hierarchical versioned folder tree: \\myserver\packages └─ @@ -43,7 +43,7 @@ With NuGet 3.3 and above, you'll realize much better performance by structuring ├─..nupkg └─ -NuGet will create this structure automatically when you use the [`nuget add`](../tools/nuget-exe-cli-reference.md#add) command to copy packages to the feed: +NuGet creates this structure automatically when you use the [`nuget add`](../tools/nuget-exe-cli-reference.md#add) command to copy packages to the feed: ``` nuget add new_package.1.0.0.nupkg -source \\myserver\packages @@ -55,4 +55,4 @@ You can also use the [`nuget init`](../tools/nuget-exe-cli-reference.md#init) co nuget init c:\packages \\myserver\packages ``` -Again, this will create a folder for each package identifier, each of which will contain a version number folder, within which will be the appropriate package. +Again, this creates a folder for each package identifier, each of which contains a version number folder, within which is the appropriate package. diff --git a/docs/Hosting-Packages/NuGet-Server.md b/docs/Hosting-Packages/NuGet-Server.md index c8943bff6..2dcb08072 100644 --- a/docs/Hosting-Packages/NuGet-Server.md +++ b/docs/Hosting-Packages/NuGet-Server.md @@ -5,7 +5,7 @@ title: NuGet.Server to Host NuGet Feeds | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 3/8/2017 +ms.date: 8/25/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -30,9 +30,7 @@ ms.reviewer: # NuGet.Server -NuGet.Server is a package provided by the .NET Foundation that creates an ASP.NET application that can host a package feed on any server that runs IIS. Simply said, NuGet.Server basically makes a folder on the server available through HTTP(S) (specifically OData). As such it's best for simple scenarios and is easy to set up. - -The process is as follows: +NuGet.Server is a package provided by the .NET Foundation that creates an ASP.NET application that can host a package feed on any server that runs IIS. Simply said, NuGet.Server makes a folder on the server available through HTTP(S) (specifically OData). It's easy to set up and is best for simple scenarios. 1. Create an empty ASP.NET Web application in Visual Studio and add the NuGet.Server package to it. 1. Configure the `Packages` folder in the application and add packages. @@ -46,7 +44,7 @@ The following sections walk through this process in detail, using C#. ![Setting .NET Framework target to 4.6](media/Hosting_01-NuGet.Server-Set4.6.png) -1. Give the application a suitable name (*other* than NuGet.Server), click OK, and in the next dialog select the **ASP.NET 4.6 - Empty** template and click OK. +1. Give the application a suitable name *other* than NuGet.Server, select OK, and in the next dialog select the **Empty** template and select OK. 1. Right-click the project, select **Manage NuGet Packages**, and in the Package Manager UI search and install the latest version of the NuGet.Server package if you're targeting .NET Framework 4.6. (You can also install it from the Package Manager Console with `Install-Package NuGet.Server`.) @@ -67,9 +65,9 @@ The following sections walk through this process in detail, using C#. 1. Click on **here** in the area outlined above to see the OData feed of packages. -1. By running the application the first time, the `Packages` folder gets restructured to contain a folder for each package. This matches the [local storage layout](http://blog.nuget.org/20151118/nuget-3.3.html#folder-based-repository-commands) introduced with NuGet 3.3 to improve performance. When adding more packages, continue to follow this structure. +1. The first time you run the application, NuGet.Server restructures the `Packages` folder to contain a folder for each package. This matches the [local storage layout](http://blog.nuget.org/20151118/nuget-3.3.html#folder-based-repository-commands) introduced with NuGet 3.3 to improve performance. When adding more packages, continue to follow this structure. -1. Once you've tested your local deployment, you can deploy the application to any other internal or external site as needed. +1. Once you've tested your local deployment, deploy the application to any other internal or external site as needed. 1. Once deployed to `http://`, the URL that you use for the package source will be `http:///nuget`. @@ -92,7 +90,7 @@ When `packagesPath` is omitted or left blank, the packages folder is the default Once a NuGet.Server site is running, you can add or delete packages using nuget.exe provided that you set an API key value in `web.config`. -After installing the NuGet.Server package, `web.config` will contain an empty `appSetting/apiKey` value: +After installing the NuGet.Server package, `web.config` contains an empty `appSetting/apiKey` value: ```xml diff --git a/docs/Hosting-Packages/Overview.md b/docs/Hosting-Packages/Overview.md index 6cd48bb70..30f89a36c 100644 --- a/docs/Hosting-Packages/Overview.md +++ b/docs/Hosting-Packages/Overview.md @@ -5,7 +5,7 @@ title: Overview of Hosting Your Own NuGet Feeds | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 6/13/2017 +ms.date: 8/25/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -30,13 +30,13 @@ ms.reviewer: --- # Hosting your own NuGet feeds -Instead of making packages publicly available, you might want to release packages for only a limited audience, such as your organization or workgroup. In addition, some companies may want to restrict which third-party libraries their developers may use, and thus direct those developers to draw from a limited package source rather than nuget.org. +Instead of making packages publicly available, you might want to release packages to only a limited audience, such as your organization or workgroup. In addition, some companies may want to restrict which third-party libraries their developers may use, and thus direct those developers to draw from a limited package source rather than nuget.org. -For all such purposes, NuGet supports setting up a private package source in the following ways: +For all such purposes, NuGet supports setting up private package sources in the following ways: - Local feed: Packages are simply placed on a suitable network file share, ideally using `nuget init` and `nuget add` to create a hierarchical folder structure (NuGet 3.3+). For details, see [Local Feeds](../hosting-packages/local-feeds.md). -- NuGet.Server: Packages are made available through a local server through HTTP. For details, see [NuGet.Server](../hosting-packages/NuGet-Server.md). -- NuGet Gallery: Packages are hosted on an Internet server using the [NuGet Gallery Project](https://github.com/NuGet/NuGetGallery#build-and-run-the-gallery-in-arbitrary-number-easy-steps) on GitHub. NuGet Gallery provides user management and additional features such as an extensive web UI that allows searching and exploring packages from within the browser, similar to nuget.org. +- NuGet.Server: Packages are made available through a local HTTP server. For details, see [NuGet.Server](../hosting-packages/NuGet-Server.md). +- NuGet Gallery: Packages are hosted on an Internet server using the [NuGet Gallery Project](https://github.com/NuGet/NuGetGallery#build-and-run-the-gallery-in-arbitrary-number-easy-steps) (github.com). NuGet Gallery provides user management and features such as an extensive web UI that allows searching and exploring packages from within the browser, similar to nuget.org. There are also several other NuGet hosting products that support remote private feeds, including the following: @@ -48,4 +48,4 @@ There are also several other NuGet hosting products that support remote private - [Artifactory](https://www.jfrog.com/artifactory/) from JFrog. - [Nexus](http://www.sonatype.org/nexus/) from Sonatype. -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](../tools/package-manager-ui.md#package-sources), or from the command line using [`nuget sources`](../tools/nuget-exe-cli-reference.md#sources). The path to a source can be anything from a local folder to a network name to an Internet URL. +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](../tools/package-manager-ui.md#package-sources), or from the command line using [`nuget sources`](../tools/nuget-exe-cli-reference.md#sources). The path to a source can be a local folder pathname, a network name, or a URL. diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index b6f525776..dd87d784e 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -5,7 +5,7 @@ title: NuGet Frequently-Asked Questions | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 8/25/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -48,7 +48,7 @@ All the information around both UI and command-line tools is available in the [I The command-line tool, `nuget.exe`, builds and runs under Mono 3.2+ and can create packages in Mono. -Although `nuget.exe` work fully on Windows, there are known issues on Linux and OS X. Refer [Mono issues](https://github.com/NuGet/Home/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+mono) on GitHub. +Although `nuget.exe` works fully on Windows, there are known issues on Linux and OS X. Refer to [Mono issues](https://github.com/NuGet/Home/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+mono) on GitHub. A [graphical client](https://github.com/mrward/monodevelop-nuget-addin) is available as an add-in for MonoDevelop. @@ -68,25 +68,25 @@ The most recent version of NuGet supports C#, Visual Basic, F#, WiX, and C++. **What project templates are supported by NuGet?** -NuGet has full support for a variety of project templates like Windows, Web, Cloud, SharePoint, Wix and so on. +NuGet has full support for a variety of project templates like Windows, Web, Cloud, SharePoint, Wix, and so on. **How do I update packages that are part of Visual Studio templates?** -Go to the **Updates** tab in the Package Manager UI and select **Update All**, or use the `Update-Package` command from Package Manager Console. +Go to the **Updates** tab in the Package Manager UI and select **Update All**, or use the [`Update-Package` command](../Tools/ps-ref-update-package.md) from the Package Manager Console. -To update the template itself, you'll need to manually update the template repository. See [Xavier Decoster's blog](http://www.xavierdecoster.com/update-project-template-to-latest-nuget-packages) on this subject. Note that this is done at your own risk, because manual updates might corrupt the template if the latest version of all dependencies are not compatible with each other. +To update the template itself, you need to manually update the template repository. See [Xavier Decoster's blog](http://www.xavierdecoster.com/update-project-template-to-latest-nuget-packages) on this subject. Note that this is done at your own risk, because manual updates might corrupt the template if the latest version of all dependencies are not compatible with each other. **Can I use NuGet outside of Visual Studio?** -Yes, NuGet works directly from the command line. See the [Install guide](../guides/install-nuget.md). +Yes, NuGet works directly from the command line. See the [Install guide](../guides/install-nuget.md) and the [CLI reference](../tools/nuget-exe-CLI-Reference.md). ## NuGet command line -**How do I get the latest version of NuGet commandline?** +**How do I get the latest version of NuGet command line tool?** See the [Install guide](../guides/install-nuget.md). -**Is it possible to extend the NuGet commandline?** +**Is it possible to extend the NuGet command line tool?** Yes, it's possible to add custom commands to `nuget.exe`, as described in [Rob Reynold's post](http://geekswithblogs.net/robz/archive/2011/07/15/extend-nuget-command-line.aspx). @@ -128,9 +128,9 @@ See [Bulk publishing NuGet packages](http://jeffhandley.com/archive/2012/12/13/B **What is the difference between a project-level package and a solution-level package?** -A solution-level package (NuGet 3.x and later) is installed only once in a solution and is then available for all projects in the solution. A project-level package is installed in each project that uses it. Typically, a solution-level package installs new commands that can be called from within the Package Manager Console. +A solution-level package (NuGet 3.x and later) is installed only once in a solution and is then available for all projects in the solution. A project-level package is installed in each project that uses it. A solution-level package might also install new commands that can be called from within the Package Manager Console. -**Is it possible to install NuGet package without Internet connectivity?** +**Is it possible to install NuGet packages without Internet connectivity?** Yes, see Scott Hanselman's Blog post [How to access NuGet when nuget.org is down (or you're on a plane)](http://www.hanselman.com/blog/HowToAccessNuGetWhenNuGetorgIsDownOrYoureOnAPlane.aspx) (hanselman.com). @@ -152,11 +152,13 @@ You need to select the **All** source when installing a local package into the p **I have multiple projects in the same folder, how can I use separate packages.config or project.json files for each project?** -In most projects where separate projects live in separate folders, this is not a problem as NuGet will identify the `packages.config` and `project.json` files in each project. With NuGet 3.3+ and multiple projects in the same folder, you can insert the name of the project into the `packages.config` or `project.json` filenames as below and NuGet will use that file: +In most projects where separate projects live in separate folders, this is not a problem as NuGet identifies the `packages.config` and `project.json` files in each project. With NuGet 3.3+ and multiple projects in the same folder, you can insert the name of the project into the `packages.config` or `project.json` filenames as below and NuGet uses that file: `packages.config`: use the pattern `packages.{project-name}.config` `project.json`: use the pattern `{project-name}.project.json` +This is not an issue when using PackageReference, as each project file contains its own list of dependencies. + **I don't see nuget.org in my list of repositories, how do I get it back?** - Add `https://api.nuget.org/v3/index.json` to your list of sources, or @@ -166,7 +168,7 @@ In most projects where separate projects live in separate folders, this is not a **Is it possible to reserve names for packages that will be published in future?** -No. If you feel that an existing package has taken the name which suits your package better, try contacting the owner of the package (click on the owner name on the package page on nuget.org). If you don't get a response within a reasonable time, [contact support](https://www.nuget.org/policies/Contact) and we'll look into it. +No. If you feel that an existing package has taken the name which suits your package better, try contacting the owner of the package (select on the owner name on the package page on nuget.org). If you don't get a response within a reasonable time, [contact support](https://www.nuget.org/policies/Contact) and we'll look into it. **How do I claim ownership for packages ?** @@ -178,7 +180,7 @@ We encourage the NuGet community to work together to resolve any disputes that m **Is it recommended to upload my test packages to nuget.org?** -For test purposes, you can use [staging.nuget.org](http://staging.nuget.org), or alternative public NuGet servers like [myget.org](https://myget.org) or [Visual Studio Team Services](https://blogs.msdn.microsoft.com/visualstudioalm/2015/08/27/announcing-package-management-support-for-vsotfs/). +For test purposes, you can use [staging.nuget.org](http://staging.nuget.org), or alternative public NuGet servers like [myget.org](https://myget.org) or [Visual Studio Team Services](https://blogs.msdn.microsoft.com/visualstudioalm/2015/08/27/announcing-package-management-support-for-vsotfs/). Note that packages uploaded to staging.nuget.org may not be preserved. See [Goodbye preview](http://blog.nuget.org/20130419/goodbye-preview.html). @@ -186,23 +188,23 @@ Note that packages uploaded to staging.nuget.org may not be preserved. See [Good nuget.org allows packages up to 250MB, but we recommend keeping packages under 1MB if possible and using dependencies to link packages together. As a rule of thumb, packages contain only one assembly to avoid collisions. -NuGet's uses HTTP to download packages, so larger packages have a higher likelihood of failed installs than smaller ones. +NuGet uses HTTP to download packages, so larger packages have a higher likelihood of failed installs than smaller ones. It is possible to share dependencies between multiple packages, making the total download size for consumers of your NuGet packages smaller. -Dependencies are mostly static and never change. When fixing a bug in code, the dependencies may not have to be updated. If you bundle dependencies, you end up reshipping larger packages every time. By splitting NuGet packages into related dependencies, upgrades are much more fine-grained for consumers of your package. +Dependencies are mostly static and never change. When fixing a bug in code, the dependencies may not need to be updated. If you bundle dependencies, you end up reshipping larger packages every time. By splitting NuGet packages into related dependencies, upgrades are much more fine-grained for consumers of your package. **Can I edit package information after it's been uploaded?** -Yes, in fact, you first get an opportunity to edit package metadata during the upload process. When you upload a package, the NuGet gallery will perform some static analysis and indicate if there are issues. If the package is accepted, you'll then see a page that allows you to edit any of the metadata before the package is added to the gallery. +Yes, in fact, you first get an opportunity to edit package metadata during the upload process. When you upload a package, the NuGet gallery performs some static analysis and indicates issues. If the package is accepted, you see a page that allows you to edit any of the metadata before the package is added to the gallery. -For a package already in the gallery, sign into nuget.org, click on your username, then on **Manage my packages**, then on the package you want to manage. From that page, select **Edit Package** on the left-hand side and make the desired changes to the metadata. +For a package already in the gallery, sign into nuget.org, select on your username, select **Manage my packages**, then select the package you want to manage. From that page, select **Edit Package** on the left-hand side and make the desired changes to the metadata. Note that dependencies listed for your package are generated automatically from the package itself and cannot be edited. In addition, uploading packages to [staging.nuget.org](http://staging.nuget.org) is a great way to check your package and test the editing process without making a package available in the public gallery. -**Why can't I download/upload packages to nuget.org?** +**Why can't I download packages from or upload packages to nuget.org?** First make sure you're using the latest versions of NuGet. If that continues to fail, [contact support](https://www.nuget.org/policies/Contact) and provide additional connection troubleshooting information including: @@ -214,8 +216,8 @@ First make sure you're using the latest versions of NuGet. If that continues to - Your operating system version - Machine configuration (CPU, Network, hard drive) - Whether is your machine behind a proxy or firewall -- The versions of .NET that are installed on the machine. -- Versions of cross-platform tools such as .NET CLI, or DNU that you're using. +- The versions of .NET that are installed on the machine +- Versions of cross-platform tools such as .NET CLI, or DNU that you're using *To capture MTR:* diff --git a/docs/Quickstart/Use-a-Package.md b/docs/Quickstart/Use-a-Package.md index b427826ff..464399da8 100644 --- a/docs/Quickstart/Use-a-Package.md +++ b/docs/Quickstart/Use-a-Package.md @@ -5,7 +5,7 @@ title: Introductory Guide to Using NuGet Packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 8/25/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -31,22 +31,21 @@ ms.reviewer: # Use a package -This tutorial walks you through installing and using the popular [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) package in a Universal Windows Platform (UWP) project: +This tutorial walks you through installing and using the popular [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) package in a Universal Windows Platform (UWP) project. You use a similar same workflow for virtually every NuGet package you use in a project. - [Install pre-requisites](#install-pre-requisites) - [Create a UWP project](#create-a-uwp-project) - [Add the Newtonsoft.Json NuGet package](#add-the-newtonsoftjson-nuget-package) - [Use the Newtonsoft.Json API in the app](#use-the-newtonsoftjson-api-in-the-app) -You use a similar same workflow for virtually every NuGet package you use in a project. - -> **Start with nuget.org**: Installing packages from nuget.org is a common workflow that .NET developers use to find components they can reuse in their own applications. You can always search nuget.org directly or find and install packages within Visual Studio as we do here. +> [!Tip] +> **Start with nuget.org**: Installing packages from nuget.org is a common workflow that .NET developers use to find components they can reuse in their own applications. You can always search nuget.org directly or find and install packages within Visual Studio as shown in this topic. ## Install pre-requisites -This tutorial requires Visual Studio 2015 Update 3 with Tools for Universal Windows Apps. +This tutorial requires Visual Studio 2015 Update 3 with Tools for Universal Windows Apps, or Visual Studio 2017 with the Universal Windows Platform development workload. If you already have Visual Studio installed, you can run the installer again to add the UWP tools. -You can install the Community edition for free from [visualstudio.com](https://www.visualstudio.com/) or use the Professional or Enterprise editions. The UWP tools option can be selected through the Custom install option during setup, checking the box under **Windows and Web Development > Universal Windows App Development Tools**. If you already have Visual Studio installed, you can run the installer again and click **Modify** to add the UWP tools. +You can install the Community edition for free from [visualstudio.com](https://www.visualstudio.com/) or use the Professional or Enterprise editions. ## Create a UWP project @@ -85,7 +84,7 @@ With the Newtonsoft.Json package in the project, you can call its `JsonConvert.S ``` -1. Expand MainPage.xaml, open MainPage.xaml.cs, and insert the following code inside the `MainPage` class, after the constructor: +1. Expand the MainPage.xaml node in Solution Explorer, open MainPage.xaml.cs, and insert the following code inside the `MainPage` class, after the constructor: ```cs public class Account @@ -113,7 +112,7 @@ With the Newtonsoft.Json package in the project, you can call its `JsonConvert.S ![Lightbulb with show potential fixes command](media/QS_Use-04-ShowPotentialFixes.png) -1. Click on **Show potential fixes** and select the first suggested fix, `using Newtonsoft.Json;`. This adds the necessary line to the top of the file. +1. Click on **Show potential fixes** (or the Lightbulb) and select the first suggested fix, `using Newtonsoft.Json;`. This adds the necessary line to the top of the file. ![Lightbulb giving option to add a using statement](media/QS_Use-05-AddUsing.png) @@ -125,8 +124,6 @@ With the Newtonsoft.Json package in the project, you can call its `JsonConvert.S ![Output of the app after clicking the button](media/QS_Use-07-AppEnd.png) - - ## Related topics - [Overview and workflow of package consumption](../consume-packages/overview-and-workflow.md) diff --git a/docs/Quickstart/media/QS_Use-03-NewtonsoftJson.png b/docs/Quickstart/media/QS_Use-03-NewtonsoftJson.png index bb1bac590ee386cb00a482750b32154827300298..30928e2b7b66e9a0c9370bd06b10c28ab1eb6f7a 100644 GIT binary patch literal 29581 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 z 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 node, which then contains the section elements described in this topic. Each section then contains zero or more `` elements with `key` and `value` attributes. See the [examples config file](#example-config-file) at the end of this topic. +`NuGet.Config` is an XML file containing a top-level `` node, which then contains the section elements described in this topic. Each section then contains zero or more `` elements with `key` and `value` attributes. See the [examples config file](#example-config-file) at the end of this topic. Setting names are case-insensitive. -Note that with NuGet 3.4+ you can use environment variables in `NuGet.Config` values to apply machine-specific settings at run time. For example, if the `HOME` environment variable is set to `c:\users\username`, then the value of `%HOME%\NuGetRepository` in the configuration file will resolve to `c:\users\username\NuGetRepository`. If an environment variable is not found, NuGet will leave the value unmodified. +With NuGet 3.4+ you can use environment variables in `NuGet.Config` values to apply machine-specific settings at run time. For example, if the `HOME` environment variable is set to `c:\users\username`, then the value of `%HOME%\NuGetRepository` in the configuration file resolves to `c:\users\username\NuGetRepository`. If an environment variable is not found, NuGet uses the literal value from the configuration file. -Also note that with Visual Studio 2017+ and NuGet 4.0+, the machine-wide `NuGet.Config` is now located at `%ProgramFiles(x86)%\NuGet\Config\` to improve security in multi-user scenarios. You will need to manually migrate existing config files from `%ProgramData%` to `%ProgramFiles(x86)%`. Going forward,NuGet 4.0+ will also treat this as the new location for the machine-wide configuration. `NuGet.Config` in `%ProgramData%\NuGet\Config\` will no longer be implicitly referenced or considered for hierarchical merging of `Nuget.Config`. +> [!Note] +> With Visual Studio 2017+ and NuGet 4.0+, the machine-wide `NuGet.Config` is located at `%ProgramFiles(x86)%\NuGet\Config\` to improve security in multi-user scenarios. You need to manually migrate existing config files from `%ProgramData%` to `%ProgramFiles(x86)%`. NuGet 4.0+ also treats this as the location for the machine-wide configuration. Also, `NuGet.Config` in `%ProgramData%\NuGet\Config\` is not implicitly referenced or considered for hierarchical merging of `Nuget.Config`. In this topic: @@ -61,11 +62,11 @@ In this topic: Contains miscellaneous configuration settings, which can be set using the [`nuget config` command](../tools/nuget-exe-cli-reference.md#config). -Note: `dependencyVersion` and `repositoryPath` apply only to projects using `packages.config`. `globalPackagesFolder` applies only to projects using `project.json` and projects using the new Visual Studio 2017 project format. +Note: `dependencyVersion` and `repositoryPath` apply only to projects using `packages.config`. `globalPackagesFolder` applies only to projects using `project.json` and PackageReference formats. | Key | Value | | --- | --- | -| dependencyVersion (package.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`. | +| 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 (projects not using `packages.config`) | The location of the default global packages folder. The default is `%userprofile%\.nuget\packages`. A relative path can be used in project-specific `Nuget.Config` files. | | 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. | @@ -175,7 +176,7 @@ Stores usernames and passwords for sources, typically specified with the `-usern **Example:** -In the config file, the `` element will contain child nodes for each applicable source name (spaces in the name are replaced with `_x0020+`). That is, for sources named "Contoso" and "Test Source", the config file will contain the following when using encrypted passwords: +In the config file, the `` element contains child nodes for each applicable source name (spaces in the name are replaced with `_x0020+`). That is, for sources named "Contoso" and "Test Source", the config file contains the following when using encrypted passwords: ```xml From 0528a643a96a2730d9a849fc3b7fdea423e170b2 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 28 Aug 2017 17:13:46 +0200 Subject: [PATCH 0147/2943] Update Creating-a-Package.md (#437) fixed list of required properties --- docs/Create-Packages/Creating-a-Package.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 0a6ba480a..ac62a26b6 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -74,7 +74,8 @@ The manifest contains both required and optional properties as described below. Required properties: - The package identifier, which must be unique across the gallery that hosts the package. -- A specific version number in the form *Major.Minor.Patch.Build[-Suffix]* where *-Suffix* identifies [pre-release versions](Prerelease-Packages.md)- - The package title as it should appears on the host (like nuget.org) +- A specific version number in the form *Major.Minor.Patch.Build[-Suffix]* where *-Suffix* identifies [pre-release versions](Prerelease-Packages.md) +- The package title as it should appears on the host (like nuget.org) - Author and owner information. - A long description of the package. From 371375db740080aaf9c7acfe319b0c98571299e1 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 28 Aug 2017 13:38:43 -0700 Subject: [PATCH 0148/2943] Fix escaped * --- docs/Consume-Packages/Dependency-Resolution.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Dependency-Resolution.md b/docs/Consume-Packages/Dependency-Resolution.md index c58d63374..344db0b00 100644 --- a/docs/Consume-Packages/Dependency-Resolution.md +++ b/docs/Consume-Packages/Dependency-Resolution.md @@ -77,7 +77,7 @@ When an application specifies an exact version number, such as *1.2*, that is no #### Floating (wildcard) versions -A floating or wildcard dependency version is specified with the \* wildcard, as with *6.0.**. This version specification says "use the latest 6.0.x version"; *4.** means "use the latest 4.x version." Using a wildcard allows a dependency package to continue evolving without requiring a change to the consuming application (or package). +A floating or wildcard dependency version is specified with the \* wildcard, as with *6.0.\**. This version specification says "use the latest 6.0.x version"; *4.** means "use the latest 4.x version." Using a wildcard allows a dependency package to continue evolving without requiring a change to the consuming application (or package). When using a wildcard, NuGet resolves the highest version of a package that matches the version pattern, for example *6.0.** gets the highest version of a package that starts with *6.0*: From 3df569652fe17434c837872f9debb31da6cda66f Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 28 Aug 2017 13:46:45 -0700 Subject: [PATCH 0149/2943] Try again --- docs/Consume-Packages/Dependency-Resolution.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Dependency-Resolution.md b/docs/Consume-Packages/Dependency-Resolution.md index 344db0b00..a0de1de62 100644 --- a/docs/Consume-Packages/Dependency-Resolution.md +++ b/docs/Consume-Packages/Dependency-Resolution.md @@ -77,7 +77,7 @@ When an application specifies an exact version number, such as *1.2*, that is no #### Floating (wildcard) versions -A floating or wildcard dependency version is specified with the \* wildcard, as with *6.0.\**. This version specification says "use the latest 6.0.x version"; *4.** means "use the latest 4.x version." Using a wildcard allows a dependency package to continue evolving without requiring a change to the consuming application (or package). +A floating or wildcard dependency version is specified with the * wildcard, as with *6.0.**. This version specification says "use the latest 6.0.x version"; *4.** means "use the latest 4.x version." Using a wildcard allows a dependency package to continue evolving without requiring a change to the consuming application (or package). When using a wildcard, NuGet resolves the highest version of a package that matches the version pattern, for example *6.0.** gets the highest version of a package that starts with *6.0*: From 45e64d8f745123a4e45d3b0d2207653d354bf620 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 28 Aug 2017 13:56:40 -0700 Subject: [PATCH 0150/2943] Remove problematic italics on version numbers The live site just isn't happy with * in version numbers when the version is italicized. --- docs/Consume-Packages/Dependency-Resolution.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/Consume-Packages/Dependency-Resolution.md b/docs/Consume-Packages/Dependency-Resolution.md index a0de1de62..eb136c26d 100644 --- a/docs/Consume-Packages/Dependency-Resolution.md +++ b/docs/Consume-Packages/Dependency-Resolution.md @@ -45,7 +45,7 @@ In this topic: ## Dependency resolution with PackageReference and project.json -When installing packages into projects using the PackageReference or `project.json` formats, NuGet adds references to a flat package graph in the appropriate file and resolves conflicts ahead of time. This process is referred to as *transitive restore*. Reinstalling or restoring packages is then a process of downloading the packages listed in the graph, resulting in faster and more predictable builds. You can also take advantage of wildcard (floating) versions, such as *2.8.**, avoiding expensive and error prone calls to `nuget update` on the client machines and build servers. +When installing packages into projects using the PackageReference or `project.json` formats, NuGet adds references to a flat package graph in the appropriate file and resolves conflicts ahead of time. This process is referred to as *transitive restore*. Reinstalling or restoring packages is then a process of downloading the packages listed in the graph, resulting in faster and more predictable builds. You can also take advantage of wildcard (floating) versions, such as 2.8.\*, avoiding expensive and error prone calls to `nuget update` on the client machines and build servers. When the NuGet restore process runs prior to a build, it resolves dependencies first in memory, then writes the resulting graph to a file called `project.assets.json` in the `obj` folder of a project using PackageReference, or in a file named `project.lock.json` alongside `project.json`. MSBuild then reads this file and translates it into a set of folders where potential references can be found, and then adds them to the project tree in memory. @@ -61,15 +61,15 @@ Transitive restore applies four main rules to resolve dependencies: lowest appli The lowest applicable version rule restores the lowest possible version of a package as defined by its dependencies. It also applies to dependencies on the application or the class library unless declared as [floating](#floating-versions). -In the following figure, for example, *1.0-beta* is considered lower than *1.0* so NuGet chooses the *1.0* version: +In the following figure, for example, 1.0-beta is considered lower than 1.0 so NuGet chooses the 1.0 version: ![Choosing the lowest applicable version](media/projectJson-dependency-1.png) -In the next figure, version *2.1* is not available on the feed but because the version constraint is *>= 2.1* NuGet picks the next lowest version it can find, in this case *2.2*: +In the next figure, version 2.1 is not available on the feed but because the version constraint is >= 2.1 NuGet picks the next lowest version it can find, in this case 2.2: ![Choosing the next lowest version available on the feed](media/projectJson-dependency-2.png) -When an application specifies an exact version number, such as *1.2*, that is not available on the feed, NuGet fails with an error when attempting to install or restore the package: +When an application specifies an exact version number, such as 1.2, that is not available on the feed, NuGet fails with an error when attempting to install or restore the package: ![NuGet generates an error when an exact package version is not available](media/projectJson-dependency-3.png) @@ -77,9 +77,9 @@ When an application specifies an exact version number, such as *1.2*, that is no #### Floating (wildcard) versions -A floating or wildcard dependency version is specified with the * wildcard, as with *6.0.**. This version specification says "use the latest 6.0.x version"; *4.** means "use the latest 4.x version." Using a wildcard allows a dependency package to continue evolving without requiring a change to the consuming application (or package). +A floating or wildcard dependency version is specified with the \* wildcard, as with 6.0.\*. This version specification says "use the latest 6.0.x version"; 4.\* means "use the latest 4.x version." Using a wildcard allows a dependency package to continue evolving without requiring a change to the consuming application (or package). -When using a wildcard, NuGet resolves the highest version of a package that matches the version pattern, for example *6.0.** gets the highest version of a package that starts with *6.0*: +When using a wildcard, NuGet resolves the highest version of a package that matches the version pattern, for example 6.0.\* gets the highest version of a package that starts with 6.0: ![Choosing version 6.0.1 when a floating version 6.0.* is requested](media/projectJson-dependency-4.png) @@ -93,7 +93,7 @@ When using a wildcard, NuGet resolves the highest version of a package that matc When the package graph for an application contains different versions of the same package, NuGet chooses the package that's closest to the application in the graph and ignores all others. This behavior allows an application to override any particular package version in the dependency graph. -In the example below, the application depends directly on Package B with a version constraint of *>=2.0*. The application also depends on Package A which in turn also depends on Package B, but with a *>=1.0* constraint. Because the dependency on Package B *2.0* is nearer to the application in the graph, that version is used: +In the example below, the application depends directly on Package B with a version constraint of >=2.0. The application also depends on Package A which in turn also depends on Package B, but with a >=1.0 constraint. Because the dependency on Package B 2.0 is nearer to the application in the graph, that version is used: ![Application using the Nearest Wins rule](media/projectJson-dependency-5.png) @@ -108,11 +108,11 @@ This rule also results in greater efficiency with a large dependency graph (such #### Cousin dependencies -When different package versions are referred to at the same distance in the graph from the application, NuGet uses the lowest version that satisfies all version requirements (as with the [lowest applicable version](#lowest-applicable-version) and [floating versions](#floating-versions) rules). In the image below, for example, version *2.0* of Package B satisfies the other *>=1.0* constraint, and is thus used: +When different package versions are referred to at the same distance in the graph from the application, NuGet uses the lowest version that satisfies all version requirements (as with the [lowest applicable version](#lowest-applicable-version) and [floating versions](#floating-versions) rules). In the image below, for example, version 2.0 of Package B satisfies the other >=1.0 constraint, and is thus used: ![Resolving cousin dependencies using the lower version that satisfies all constraints](media/projectJson-dependency-7.png) -In some cases, it is not possible to meet all version requirements. As shown below, if Package A requires exactly Package B *1.0* and Package C requires Package B *>=2.0*, then NuGet cannot resolve the dependencies and gives an error. +In some cases, it is not possible to meet all version requirements. As shown below, if Package A requires exactly Package B 1.0 and Package C requires Package B >=2.0, then NuGet cannot resolve the dependencies and gives an error. ![Unresolvable dependencies due to an exact version requirement](media/projectJson-dependency-8.png) From 321d9ac3025bfadce519b3fa4a4e739a07e87206 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 28 Aug 2017 14:11:31 -0700 Subject: [PATCH 0151/2943] Add error message --- docs/Tools/Package-Manager-Console.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index 5a4ca3ca9..f3f338777 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -45,6 +45,10 @@ In this topic: - [Extending the Package Manager Console](#extending-the-package-manager-console) - [Setting up a NuGet PowerShell profile](#setting-up-a-nuget-powershell-profile) +> [!Tip] +> Many console operations depend on having a solution opened in Visual Studio with a known path name. If you have an unsaved solution, or no solution, you can see the error, "Solution is not opened or not saved. Please ensure you have an open and saved solution." This indicates that the console cannot determine the solution folder. Saving an unsaved solution, or creating and saving a solution if you don't have one open, should correct the error. + + ## Availability of the console In Visual Studio 2017, NuGet and the NuGet Package Manager are automatically installed when you select any .NET-related workloads; you can also install it individually by checking the **Individual components > Code tools > NuGet package manager** option in the Visual Studio 2017 installer. From 459efb45fd74d0a45879020a74550e2d4e45b03d Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 28 Aug 2017 14:32:15 -0700 Subject: [PATCH 0152/2943] Adding tip --- docs/Tools/Package-Manager-UI.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index 114d50fd5..08fcafa1b 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -119,6 +119,9 @@ To manage package sources: 6. To remove a package source, select it and then select the **X** button. 7. Use the up and down arrow buttons to change the priority order of the package sources. Visual Studio searches these sources in the priority order when restoring packages for a project. For more information, see [Package restore](../Consume-Packages/Package-Restore.md). +> [!Tip] +> If a package source reappears after deleting it, it may be listed in a computer-wide or global NuGet.Config files. See [Configuring NuGet behavior](../Consume-Packages/Configuring-NuGet-Behavior.md) for the location of these files, then edit those files manually to remove the source. Sources can also be managed through the [`nuget sources` command](../tools/nuget-exe-CLI-reference.md). + ## Package manager Options control In the Package Manager UI there is a small, expandable **Options** control (shown here both collapsed and expanded): From e0b24ba9b09897524f4ed018cdebc1d1f270c903 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 30 Aug 2017 10:48:01 -0700 Subject: [PATCH 0153/2943] Adding alt tags to hub page images --- docs/index.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/index.md b/docs/index.md index f313e4be3..7d88676eb 100644 --- a/docs/index.md +++ b/docs/index.md @@ -44,11 +44,11 @@ ms.reviewer:
            - + What is NuGet? Learn how NuGet allows .NET developers to create, share, and consume libraries and packages.
            -

            What is NuGet

            +

            What is NuGet?

            Learn how NuGet allows .NET developers to create, share, and consume libraries and packages.

            @@ -63,7 +63,7 @@ ms.reviewer:
            - + Quickstarts: Experience NuGet with focused walkthroughs
            @@ -82,7 +82,7 @@ ms.reviewer:
            - + Guides: learn more about NuGet's tools and capabilities
            @@ -101,7 +101,7 @@ ms.reviewer:
            - + Create Packages: Everything you need to know about creating NuGet packages, from overall workflow to versioning, pre-release, and other specialized packages.
            @@ -120,7 +120,7 @@ ms.reviewer:
            - + Consume Packages: Everything you need to know about using NuGet packages, from finding and choosing good packages to restoration updates, and caching.
            @@ -139,7 +139,7 @@ ms.reviewer:
            - + Host Packages: Learn how to host packages on your own servers or galleries to make them available to only a limited audience.
            @@ -168,7 +168,7 @@ ms.reviewer:
            - + Tools: The complete guides to the nuget.exe command-line tool, and the Package Manager UI and Package Manager Console in Visual Studio.
            @@ -187,12 +187,12 @@ ms.reviewer:
            - + Reference: Details about artifacts and formats NuGet cares about, supported frameworks, and errors and warnings.

            Reference

            -

            Details about artifacts and formats NuGet cares about, supported frameworks, and errors and warnings.

            +

            Details about artifacts and formats NuGet cares uses, supported frameworks, and errors and warnings.

            @@ -206,7 +206,7 @@ ms.reviewer:
            - + API: Details about the NuGet API and authenticating with package sources.
            @@ -225,7 +225,7 @@ ms.reviewer:
            - + Visual Studio Extensibility: Details about the API to the NuGet Package Manager UI and Console in Visual Studio, project system support, and integrating into Visual Studio templates.
            @@ -244,7 +244,7 @@ ms.reviewer:
            - + Policies: Frequently-asked questions along with information about NuGet as an open-source project, deleting packages, and resolving disputes.
            From d45f8ac60f62f11f54c21751889ab07801cfd160 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 30 Aug 2017 16:04:30 -0700 Subject: [PATCH 0154/2943] Adding include/exclude for dependencies --- .../Consume-Packages/Dependency-Resolution.md | 6 +++ docs/Create-Packages/Creating-a-Package.md | 5 +-- docs/Schema/nuspec.md | 25 ++++++++++- docs/Schema/project-json.md | 42 +++++++++++++++++++ 4 files changed, 73 insertions(+), 5 deletions(-) diff --git a/docs/Consume-Packages/Dependency-Resolution.md b/docs/Consume-Packages/Dependency-Resolution.md index eb136c26d..dad3ddb3a 100644 --- a/docs/Consume-Packages/Dependency-Resolution.md +++ b/docs/Consume-Packages/Dependency-Resolution.md @@ -129,6 +129,12 @@ By default, NuGet 2.7 and earlier resolves the highest *patch* version (using th The `packages.config` process for resolving dependencies gets complicated for larger dependency graphs. Each new package installation requires a traversal of the whole graph and raises the chance for version conflicts. When a conflict occurs, installation is stopped, leaving the project in an indeterminate state, especially with potential modifications to the project file itself. This is not an issue when using other package reference formats. +## Managing dependency assets + +When using the `project.json` or PackageReference formats, you can control which assets from dependencies flow into the top-level project. For details, see [project.json](../Schema/project-json.md) and [Package references in project files](Package-References-in-Project-Files.md#controlling-dependency-assets). + +When the top-level project is itself a package, you also have control over this flow by using the `include` and `exclude` attributes with dependencies listed in the `.nuspec` file. See [.nuspec Reference - Dependencies](../Schema/nuspec.md#dependencies). + ## Excluding references There are scenarios in which assemblies with the same name might be referenced more than once in a project, producing design-time and build-time errors. Consider a project that contains a custom version of `C.dll`, and references Package C that also contains `C.dll`. At the same time, the project also depends on Package B which also depends on Package C and `C.dll`. As a result, NuGet can't determine which `C.dll` to use, but you can't just remove the project's dependency on Package C because Package B also depends on it. diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 8c4690b18..0dc8894f4 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -5,7 +5,7 @@ title: How to create a NuGet package | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/24/2017 +ms.date: 8/29/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -144,7 +144,7 @@ The following is a typical (but fictitious) `.nuspec` file, with comments descri ``` -For details on declaring dependencies and specifying version numbers, see [Package versioning](../reference/package-versioning.md). +For details on declaring dependencies and specifying version numbers, see [Package versioning](../reference/package-versioning.md). It is also possible to surface assets from dependencies directly in the package by using the `include` and `exclude` attributes on the `dependency` element. See [.nuspec Reference - Dependencies](../Schema/nuspec.md#dependencies). Because the manifest is included in the package created from it, you can find any number of additional examples by examining existing packages. A good source is the global package cache on your machine, the location of which is returned by the following command: @@ -387,7 +387,6 @@ When NuGet 2.x installs a package with `\build` files, it adds an MSBuild `` with your specific filename: diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index 77345bdba..b7314deca 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -5,7 +5,7 @@ title: .nuspec File Reference for NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/25/2017 +ms.date: 8/29/2017 ms.topic: reference ms.prod: nuget #ms.service: @@ -176,6 +176,18 @@ The `` element within `` contains any number of ` ``` -When creating a `.nuspec` from a project using `nuget spec`, dependencies that exist in that project are automatically included in the resulting `.nuspec` file. +The following lines indicate dependencies on the same packages, but specify to include the `contentFiles` and `build` folders of `PackageA` and everything but the `native` and `compile` folders of `PackageB`" + +```xml + + + + +``` + +Note: When creating a `.nuspec` from a project using `nuget spec`, dependencies that exist in that project are automatically included in the resulting `.nuspec` file. ### Dependency groups diff --git a/docs/Schema/project-json.md b/docs/Schema/project-json.md index bf4aa0f87..846276190 100644 --- a/docs/Schema/project-json.md +++ b/docs/Schema/project-json.md @@ -80,6 +80,48 @@ When restoring packages, the version constraint of `"5.0.0"` implies `>= 5.0.0`. See [Dependency resolution](../consume-packages/dependency-resolution.md) for more details on resolution rules. +### Managing dependency assets + +Which assets from dependencies flow into the top-level project is controlled by specifying a comma-delimited set of tags in the `include` and `exclude` properties of the dependency reference. The tags are listed the table below: + +| Include/Exclude tag | Affected folders of the target | +| --- | --- | +| contentFiles | Content | +| runtime | Runtime, Resources, and FrameworkAssemblies | +| compile | lib | +| build | build (MSBuild props and targets) | +| native | native | +| none | No folders | +| all | All folders | + +Tags specified with `exclude` take precedence over those specified with `include`. For example, `include="runtime, compile" exclude="compile"` is the same as `include="runtime"`. + +For example, to include the `build` and `native` folders of a dependency, use the following: + +```json +{ + "dependencies": { + "packageA": { + "version": "1.0.0", + "include": "build, native" + } + } +} +``` + +To exclude the `content` and `build` folders of a dependency, use the following: + +```json +{ + "dependencies": { + "packageA": { + "version": "1.0.0", + "exclude": "contentFiles, build" + } + } +} +``` + ## Frameworks Lists the frameworks that the project runs on, such as `net45`, `netcoreapp`, `netstandard`. From b79035275ef935892a286d71a07147685620d07a Mon Sep 17 00:00:00 2001 From: Arin Date: Thu, 31 Aug 2017 16:04:36 -0400 Subject: [PATCH 0155/2943] Minor grammatical fix --- docs/Reference/Package-Versioning.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Reference/Package-Versioning.md b/docs/Reference/Package-Versioning.md index 5d3f70c5c..bb4f9785c 100644 --- a/docs/Reference/Package-Versioning.md +++ b/docs/Reference/Package-Versioning.md @@ -94,7 +94,7 @@ When resolving package references and multiple package versions differ only by s With NuGet 4.3.0+ and Visual Studio 2017 version 15.3+, NuGet supports [Semantic Versioning 2.0.0](http://semver.org/spec/v2.0.0.html). -Certain semantics of SemVer v2.0.0 that are not supported in older clients. NuGet considers a package version to be SemVer v2.0.0 specific if either of the following statements is true: +Certain semantics of SemVer v2.0.0 are not supported in older clients. NuGet considers a package version to be SemVer v2.0.0 specific if either of the following statements is true: - The pre-release label is dot-separated, for example, *1.0.0-alpha.1* - The version has build-metadata, for example, *1.0.0+githash* From e7c005e802a599fb72565776add763f0cdb7b4eb Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 7 Sep 2017 11:29:50 -0700 Subject: [PATCH 0156/2943] Small corrections --- docs/Create-Packages/Creating-a-Package.md | 4 ++-- docs/Tools/nuget-exe-CLI-Reference.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 8c4690b18..cc38a8106 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -219,7 +219,7 @@ Note that there are several additional packaging options available when working *NuGet 2.x only. This capability is not present in NuGet 3.0+.* -NuGet 2.x supported the notion of a solution-level package that installs tools or additional commands for the Package Manager Console, but does not add references, content, or build customizations to any projects in the solution. Such packages contain no files in its direct `lib`, `content`, or `build` folders, and none of its dependencies have files in their respective `lib`, `content`, or `build` folders. +NuGet 2.x supported the notion of a solution-level package that installs tools or additional commands for the Package Manager Console (the contents of the `tools` folder), but does not add references, content, or build customizations to any projects in the solution. Such packages contain no files in its direct `lib`, `content`, or `build` folders, and none of its dependencies have files in their respective `lib`, `content`, or `build` folders. NuGet tracks installed solution-level packages in a `packages.config` file in the `.nuget` folder, rather than the project's `packages.config` file. @@ -248,7 +248,7 @@ The folder conventions are as follows: | runtimes | Architecture-specific assembly (`.dll`), symbol (`.pdb`), and native resource (`.pri`) files | Assemblies are added as references; other files are copied into project folders. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md). | | content | Arbitrary files | Contents are copied to the project root | | build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (NuGet 2.x) or `project.lock.json` (NuGet 3.x+). | -| tools | Powershell scripts and programs accessible from the Package Manager Console | Contents are copied to the project folder, and the `tools` folder is added to the PATH environment variable.| +| tools | Powershell scripts and programs accessible from the Package Manager Console | Contents are copied to the project folder, and the `tools` folder is added to the PATH environment variable. | Think of the **content** folder as the root of the target application. To have the package add an image in the application's */images* folder, place it in the package's *content/images* folder. diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 081f1fe5d..996cd95e6 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -343,7 +343,7 @@ where the optional search terms will filter the displayed list. Search terms are ``` nuget list -nuget list -Verbose -AllVersions +nuget list -Verbosity detailed -AllVersions ``` ## locals From 55c4a03b9cf0bae628605c120fcfce817b283ef8 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 11 Sep 2017 09:16:39 -0700 Subject: [PATCH 0157/2943] Word change --- docs/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/index.md b/docs/index.md index 7d88676eb..ba426549d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -192,7 +192,7 @@ ms.reviewer:

            Reference

            -

            Details about artifacts and formats NuGet cares uses, supported frameworks, and errors and warnings.

            +

            Details about artifacts and formats NuGet uses, supported frameworks, and errors and warnings.

            @@ -261,4 +261,4 @@ ms.reviewer:
        -
        \ No newline at end of file +
        From bb02403674fb36da3e4389996925e01f9479e806 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 12 Sep 2017 15:38:05 -0700 Subject: [PATCH 0158/2943] Update graph and symbolsource URL --- docs/Create-Packages/Symbol-Packages.md | 4 ++-- docs/media/dependency-graph.png | Bin 16970 -> 16961 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index 4552ca0af..d02b07d70 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -32,7 +32,7 @@ ms.reviewer: In addition to building packages for nuget.org or other sources, NuGet also supports creating associated symbol packages and publishing them to the [SymbolSource repository](http://www.symbolsource.org/Public). -Package consumers can then add https://nuget.smbsrc.net/ to their symbol sources in Visual Studio. This allows consumers to step into your package code in the Visual Studio debugger. +Package consumers can then add `http://srv.symbolsource.org/pdb/Public` to their symbol sources in Visual Studio (see [Using SymbolSource](https://www.symbolsource.org/Public/Wiki/Using). This allows consumers to step into your package code in the Visual Studio debugger. ## Creating a symbol package @@ -134,4 +134,4 @@ nuget push MyPackage.symbols.nupkg -source https://nuget.smbsrc.net/ nuget push MyPackage.nupkg ``` -In this case, NuGet will publish `MyPackage.symbols.nupkg`, if present, to symbolsource.org (https://nuget.smbsrc.net/), after it publishes the primary package to nuget.org. +In this case, NuGet will publish `MyPackage.symbols.nupkg`, if present, to https://nuget.smbsrc.net/ (the push URL for symbolsource.org), after it publishes the primary package to nuget.org. diff --git a/docs/media/dependency-graph.png b/docs/media/dependency-graph.png index 143ecee8dec81b5ef0ef14fb89480f0b10f8041c..dd64a1194807b674fd0d74a78c58b7c3e674d352 100644 GIT binary patch delta 14845 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 delta 14586 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 From 9187e924731519a2fa873b93f48cdf7326067fab Mon Sep 17 00:00:00 2001 From: Alfred Myers Date: Tue, 12 Sep 2017 19:44:19 -0300 Subject: [PATCH 0159/2943] fixed minor typo --- docs/Consume-Packages/Reinstalling-and-Updating-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index 9591a9588..55f3c170c 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -30,7 +30,7 @@ ms.reviewer: # How to reinstall and update packages -There are a number of situations, described below under [When to Reinstall a Package](#when-to-reinstall-a-package), where references to a package might get broken within a Visual Studio project. In these cases, uninstalling and then reinstalling the same version of the package will restore those reference to working order. +There are a number of situations, described below under [When to Reinstall a Package](#when-to-reinstall-a-package), where references to a package might get broken within a Visual Studio project. In these cases, uninstalling and then reinstalling the same version of the package will restore those references to working order. Being mindful of the [Considerations](#considerations) described later, you can easily reinstall any package using the [Update-Package command](../Tools/ps-ref-update-package.md) in the Visual Studio Package Manager Console (**Tools** > **NuGet Package Manager** > **Package Manager Console**): From f62974c2e355b4f075532178d5e74c943d241d62 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 12 Sep 2017 16:02:17 -0700 Subject: [PATCH 0160/2943] Revise symbolsource links --- docs/Create-Packages/Symbol-Packages.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index d02b07d70..10c57f2ac 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -5,7 +5,7 @@ title: How to create NuGet symbol packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 9/12/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -32,7 +32,7 @@ ms.reviewer: In addition to building packages for nuget.org or other sources, NuGet also supports creating associated symbol packages and publishing them to the [SymbolSource repository](http://www.symbolsource.org/Public). -Package consumers can then add `http://srv.symbolsource.org/pdb/Public` to their symbol sources in Visual Studio (see [Using SymbolSource](https://www.symbolsource.org/Public/Wiki/Using). This allows consumers to step into your package code in the Visual Studio debugger. +Package consumers can then add `http://srv.symbolsource.org/pdb/Public` to their symbol sources in Visual Studio, which allows stepping into package code in the Visual Studio debugger. See [Specify symbol (.pdb) and source files in the Visual Studio debugger](https://docs.microsoft.com/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger). ## Creating a symbol package @@ -135,3 +135,7 @@ nuget push MyPackage.nupkg ``` In this case, NuGet will publish `MyPackage.symbols.nupkg`, if present, to https://nuget.smbsrc.net/ (the push URL for symbolsource.org), after it publishes the primary package to nuget.org. + +## See Also + +- Using SymbolSource (symbolsource.org) From ca73fecec5c4ba72ce4d0fead2f40262544fe784 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 12 Sep 2017 16:08:44 -0700 Subject: [PATCH 0161/2943] Edits --- docs/Create-Packages/Symbol-Packages.md | 26 ++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index 10c57f2ac..2ba23de6f 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -32,7 +32,7 @@ ms.reviewer: In addition to building packages for nuget.org or other sources, NuGet also supports creating associated symbol packages and publishing them to the [SymbolSource repository](http://www.symbolsource.org/Public). -Package consumers can then add `http://srv.symbolsource.org/pdb/Public` to their symbol sources in Visual Studio, which allows stepping into package code in the Visual Studio debugger. See [Specify symbol (.pdb) and source files in the Visual Studio debugger](https://docs.microsoft.com/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger). +Package consumers can then add `http://srv.symbolsource.org/pdb/Public` to their symbol sources in Visual Studio, which allows stepping into package code in the Visual Studio debugger. See [Specify symbol (.pdb) and source files in the Visual Studio debugger](https://docs.microsoft.com/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger) for details on that process. ## Creating a symbol package @@ -112,27 +112,27 @@ A symbol package can be built by conventions, from a folder structure as describ 1. For convenience, first save your API key with NuGet (see [publish a package](../create-packages/publish-a-package.md), which will apply to both nuget.org and symbolsource.org, because symbolsource.org will check with nuget.org to verify that you are the package owner. -``` -nuget SetApiKey Your-API-Key -``` + ``` + nuget SetApiKey Your-API-Key + ``` 1. After publishing your primary package to nuget.org, push the symbol package as follows, which will automatically use symbolsource.org as the target because of the `.symbols` in the filename: -``` -nuget push MyPackage.symbols.nupkg -``` + ``` + nuget push MyPackage.symbols.nupkg + ``` 1. To publish to a different symbol repository, or to push a symbol package that doesn't follow the naming convention, use the `-Source` option: -``` -nuget push MyPackage.symbols.nupkg -source https://nuget.smbsrc.net/ -``` + ``` + nuget push MyPackage.symbols.nupkg -source https://nuget.smbsrc.net/ + ``` 1. You can also push both primary and symbol packages to both repositories at the same time using the following: -``` -nuget push MyPackage.nupkg -``` + ``` + nuget push MyPackage.nupkg + ``` In this case, NuGet will publish `MyPackage.symbols.nupkg`, if present, to https://nuget.smbsrc.net/ (the push URL for symbolsource.org), after it publishes the primary package to nuget.org. From ac0040ae122153f868a5cd611148e47e6fdb5550 Mon Sep 17 00:00:00 2001 From: Alfred Myers Date: Tue, 12 Sep 2017 20:48:53 -0300 Subject: [PATCH 0162/2943] fixed minor typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bde732511..b4eecd722 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ NuGet follows the [.NET Foundation Contributors Code of Conduct](https://github. ## Respository structure - All markdown files are in the docs folder and various subfolders. -- The docs/index.md file defines the landing (hub) page are it appears on docs.microsoft.com/nuget. +- The docs/index.md file defines the landing (hub) page as it appears on docs.microsoft.com/nuget. - The docs/TOC.md file defines the left-hand navigation panel that appears when you navigate to any page other than the hub page. - Images are contained within media folders within each subfolder. From dccce090a216d2dc5bf7bd2d61b3bd340891cb09 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 12 Sep 2017 18:19:50 -0700 Subject: [PATCH 0163/2943] Update Symbol-Packages.md --- docs/Create-Packages/Symbol-Packages.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index 2ba23de6f..799e38186 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -30,7 +30,7 @@ ms.reviewer: # Creating symbol packages -In addition to building packages for nuget.org or other sources, NuGet also supports creating associated symbol packages and publishing them to the [SymbolSource repository](http://www.symbolsource.org/Public). +In addition to building packages for nuget.org or other sources, NuGet also supports creating associated symbol packages and publishing them to the a symbol repository such as [SymbolSource](http://www.symbolsource.org/Public). Package consumers can then add `http://srv.symbolsource.org/pdb/Public` to their symbol sources in Visual Studio, which allows stepping into package code in the Visual Studio debugger. See [Specify symbol (.pdb) and source files in the Visual Studio debugger](https://docs.microsoft.com/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger) for details on that process. @@ -135,7 +135,3 @@ A symbol package can be built by conventions, from a folder structure as describ ``` In this case, NuGet will publish `MyPackage.symbols.nupkg`, if present, to https://nuget.smbsrc.net/ (the push URL for symbolsource.org), after it publishes the primary package to nuget.org. - -## See Also - -- Using SymbolSource (symbolsource.org) From 66a998e6c4ca1e79c2e376c176c7ccca8b25ae3d Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 12 Sep 2017 18:25:16 -0700 Subject: [PATCH 0164/2943] Update Symbol-Packages.md --- docs/Create-Packages/Symbol-Packages.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index 799e38186..4c41b48aa 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -30,10 +30,11 @@ ms.reviewer: # Creating symbol packages -In addition to building packages for nuget.org or other sources, NuGet also supports creating associated symbol packages and publishing them to the a symbol repository such as [SymbolSource](http://www.symbolsource.org/Public). +In addition to building packages for nuget.org or other sources, NuGet also supports creating associated symbol packages and publishing them to the [SymbolSource repository](http://www.symbolsource.org/Public). Package consumers can then add `http://srv.symbolsource.org/pdb/Public` to their symbol sources in Visual Studio, which allows stepping into package code in the Visual Studio debugger. See [Specify symbol (.pdb) and source files in the Visual Studio debugger](https://docs.microsoft.com/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger) for details on that process. + ## Creating a symbol package To create a symbol package, follow these conventions: From a967bf283abb7e963be26ea5c5372cedac80f353 Mon Sep 17 00:00:00 2001 From: Tom Kuijsten Date: Wed, 13 Sep 2017 15:17:12 +0200 Subject: [PATCH 0165/2943] Update Creating-a-Package.md The version didn't comply to your [own rules](https://docs.microsoft.com/en-us/nuget/reference/package-versioning) --- docs/Create-Packages/Creating-a-Package.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index e363a6027..88f1a9850 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -74,7 +74,7 @@ The manifest contains both required and optional properties as described below. Required properties: - The package identifier, which must be unique across the gallery that hosts the package. -- A specific version number in the form *Major.Minor.Patch.Build[-Suffix]* where *-Suffix* identifies [pre-release versions](Prerelease-Packages.md) +- A specific version number in the form *Major.Minor.Patch[-Suffix]* where *-Suffix* identifies [pre-release versions](Prerelease-Packages.md) - The package title as it should appears on the host (like nuget.org) - Author and owner information. - A long description of the package. @@ -99,7 +99,7 @@ The following is a typical (but fictitious) `.nuspec` file, with comments descri Contoso.Utility.UsefulStuff - 1.8.3.331 + 1.8.3-ci-331 Dejana Tesic, Rajeev Dey From 8b454708fbd15c33f3ee6c34dc137517b15d7fd1 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 13 Sep 2017 07:37:33 -0700 Subject: [PATCH 0166/2943] Adding See ALso link --- docs/Create-Packages/Symbol-Packages.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index 4c41b48aa..958c9364f 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -136,3 +136,7 @@ A symbol package can be built by conventions, from a folder structure as describ ``` In this case, NuGet will publish `MyPackage.symbols.nupkg`, if present, to https://nuget.smbsrc.net/ (the push URL for symbolsource.org), after it publishes the primary package to nuget.org. + +## See Also + + - Using SymbolSource (symbolsource.org) \ No newline at end of file From 541a2335c6b7c70054f310070da6d7490894345e Mon Sep 17 00:00:00 2001 From: Alfred Myers Date: Thu, 14 Sep 2017 15:24:04 -0300 Subject: [PATCH 0167/2943] fixed typos --- docs/What-is-NuGet.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index d397673ae..5b05c4ae1 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -79,7 +79,7 @@ Instead, NuGet simply maintains a reference list of the packages upon which a pr ![A NuGet reference list is created on package installation and can be used to restore packages elsewhere](media/nuget-restore.png) -With only the reference list, NuGet can then reinstall—that is, restore—all of those packages from public and/or private hosts at any later time. (For this reason, nuget.org does not allow permanent deletion of published packages, although they can be hidden; see [Deleting packages](Policies/deleting-packages.md).) When committing a project to source control, or sharing it is some other way, you need only include the reference list and need not include any package binaries (see [Packages and source control](Consume-Packages/Packages-and-Source-Control.md). +With only the reference list, NuGet can then reinstall—that is, restore—all of those packages from public and/or private hosts at any later time. (For this reason, nuget.org does not allow permanent deletion of published packages, although they can be hidden; see [Deleting packages](Policies/deleting-packages.md).) When committing a project to source control, or sharing it in some other way, you need only include the reference list and need not include any package binaries (see [Packages and source control](Consume-Packages/Packages-and-Source-Control.md). The computer that receives a project, such as a build server obtaining a copy of the project as part of an automated deployment system, simply asks NuGet to restore dependencies whenever they're needed. Build systems like Visual Studio Team Services provide "NuGet restore" steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository) then open the project in Visual Studio and run a build, Visual Studio automatically restores the necessary NuGet packages. Developers can also tell NuGet to restore packages at any time using the the `nuget restore` CLI command or the `Install-Package` cmdlet in the Package Manager Console. @@ -93,7 +93,7 @@ How this exactly happens has evolved over the different versions of NuGet, resul Which package management format is employed in any given project depends on the project type, and the available version of NuGet and Visual Studio. To check what format is being used, simply look for `packages.config` or `project.json` in the project root after installing your first package. If you don't see either file, look in the project file directly for a <PackageReference>element. -In Visual Studio 2017, for example, most project types use `packages.config` except for UWP C# and .NET Core projects in Visual Studio 2017 use PackageReference. +In Visual Studio 2017, for example, most project types use `packages.config` except for UWP C# and .NET Core projects which use PackageReference. ## What else does NuGet do? @@ -115,4 +115,4 @@ Finally, we very much welcome comments and contributions to this documentation&m We also welcome contributions to NuGet itself through its [various GitHub repositories](https://github.com/NuGet/Home); NuGet issues can be found on [https://github.com/NuGet/home/issues](https://github.com/NuGet/home/issues). -Enjoy your NuGet experience! \ No newline at end of file +Enjoy your NuGet experience! From 77263125da00effe8b20d6a38431fa3a403d0836 Mon Sep 17 00:00:00 2001 From: Alfred Myers Date: Sun, 17 Sep 2017 08:32:11 -0300 Subject: [PATCH 0168/2943] Minor fix --- docs/Quickstart/Use-a-Package.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Quickstart/Use-a-Package.md b/docs/Quickstart/Use-a-Package.md index 13065bd19..c31261819 100644 --- a/docs/Quickstart/Use-a-Package.md +++ b/docs/Quickstart/Use-a-Package.md @@ -31,7 +31,7 @@ ms.reviewer: # Use a package -This tutorial walks you through installing and using the popular [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) package in a Universal Windows Platform (UWP) project. You use a similar same workflow for virtually every NuGet package you use in a project. +This tutorial walks you through installing and using the popular [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) package in a Universal Windows Platform (UWP) project. You use a similar workflow for virtually every NuGet package you use in a project. - [Install pre-requisites](#install-pre-requisites) - [Create a UWP project](#create-a-uwp-project) @@ -128,4 +128,4 @@ With the Newtonsoft.Json package in the project, you can call its `JsonConvert.S - [Overview and workflow of package consumption](../consume-packages/overview-and-workflow.md) - [Finding and choosing packages](../consume-packages/finding-and-choosing-packages.md) -- [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md) \ No newline at end of file +- [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md) From f90b673ba961625db01d83af51aef713101492d4 Mon Sep 17 00:00:00 2001 From: Alfred Myers Date: Sun, 17 Sep 2017 17:15:08 -0300 Subject: [PATCH 0169/2943] Updated text to conform to Nuget.org's new layout --- docs/Consume-Packages/Finding-and-Choosing-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Finding-and-Choosing-Packages.md b/docs/Consume-Packages/Finding-and-Choosing-Packages.md index 251ac7ff4..9878f5698 100644 --- a/docs/Consume-Packages/Finding-and-Choosing-Packages.md +++ b/docs/Consume-Packages/Finding-and-Choosing-Packages.md @@ -100,7 +100,7 @@ At the same time, using a NuGet package means taking a dependency on it, so you' ![Version history on a package's listing page](media/Finding-04-VersionHistory.png) -- *Recent installs*: on the package page, select **Package Statistics** on the left side. This shows you the package installs for the last six weeks. A package that other developers are actively using is typically a better choice than one that's not. +- *Recent installs*: on the package page, select **View full stats** on the right side. This shows you the package installs over the last six weeks. A package that other developers are actively using is typically a better choice than one that's not. - *Restore vs. new install*: on the same package statistics page, clear the **Version** checkbox and select **Operation** to see a chart of package restores vs. new installs (below). ![Chart of operations for a NuGet package on nuget.org package statistics](media/Finding-05-OperationChart.png) From 052bd537e7873cf9c860decaeb519a6c5c014f15 Mon Sep 17 00:00:00 2001 From: Alfred Myers Date: Sun, 17 Sep 2017 17:31:26 -0300 Subject: [PATCH 0170/2943] Fixes #469 Fixes #469 --- docs/Consume-Packages/Finding-and-Choosing-Packages.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/Consume-Packages/Finding-and-Choosing-Packages.md b/docs/Consume-Packages/Finding-and-Choosing-Packages.md index 251ac7ff4..ccdf60fa1 100644 --- a/docs/Consume-Packages/Finding-and-Choosing-Packages.md +++ b/docs/Consume-Packages/Finding-and-Choosing-Packages.md @@ -101,11 +101,7 @@ At the same time, using a NuGet package means taking a dependency on it, so you' ![Version history on a package's listing page](media/Finding-04-VersionHistory.png) - *Recent installs*: on the package page, select **Package Statistics** on the left side. This shows you the package installs for the last six weeks. A package that other developers are actively using is typically a better choice than one that's not. -- *Restore vs. new install*: on the same package statistics page, clear the **Version** checkbox and select **Operation** to see a chart of package restores vs. new installs (below). - ![Chart of operations for a NuGet package on nuget.org package statistics](media/Finding-05-OperationChart.png) - -- *Dependency installs*: the same **Operation** chart above has an "Install-Dependency" bar that indicates how many other NuGet packages have taken a dependency on this one. This is an even stronger indication that other developers find the package reliable. - *Support*: on the package page, select **Project Site** (if available) to see what support options are available. A project with a dedicated site is generally better supported. - *Developer history*: on the package page, select the listed **Owners** to see what other packages they've published. Those with multiple packages are more likely to continue supporting their work in the future. - *Open source contributions*: many packages are maintained in open-source repositories, making it possible for developers depending on them to directly contribute bug fixes and feature improvements. The contribution history of any given package is also a good indicator of how many developers are actively involved. From 6032b9c1caebbb63ac63796180171b43feca09be Mon Sep 17 00:00:00 2001 From: Alfred Myers Date: Sun, 17 Sep 2017 19:44:55 -0300 Subject: [PATCH 0171/2943] Fixed minor typos --- docs/Consume-Packages/Reinstalling-and-Updating-Packages.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index 55f3c170c..8d405a1c1 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -46,7 +46,7 @@ The same command without `-reinstall` updates a package to a newer version, if a Update-Package ``` -By default, `Update-Package` affects all packages in a solution. To limit the action to a specific project, use the `-Project` switch, using the name of the project as it appears in Solution Explorer: +By default, `Update-Package` affects all packages in a solution. To limit the action to a specific project, use the `-ProjectName` switch, using the name of the project as it appears in Solution Explorer: ```ps # Reinstall the package in just MyProject @@ -89,7 +89,7 @@ The following may be affected when reinstalling a package: - If reinstalling packages after retargeting your application results in build or runtime errors, you may need to revert your target framework or search for alternative packages that properly support your new target framework. 1. **requireReinstallation attribute added in packages.config after project retargeting or upgrade** - - If NuGet detects that packages were affected by retargeting or upgrading a project, it add a `requireReinstallation="true"` attribute in `packages.config` to all affected package references. Because of this, each subsequent build in Visual Studio raises build warnings for those packages so you can remember to reinstall them. + - If NuGet detects that packages were affected by retargeting or upgrading a project, it will add a `requireReinstallation="true"` attribute in `packages.config` to all affected package references. Because of this, each subsequent build in Visual Studio raises build warnings for those packages so you can remember to reinstall them. 1. **Reinstalling packages with dependencies** - `Update-Package –reinstall` reinstalls the same version of the original package, but installs the latest version of dependencies unless specific version constraints are provided. This allows you to update only the dependencies as required to fix an issue. However, if this rolls a dependency back to an earlier version, you can use `Update-Package ` to reinstall that one dependency without affecting the dependent package. From fcc0bc840604b73707427dc16d3fd8ca3ce1548e Mon Sep 17 00:00:00 2001 From: Alfred Myers Date: Sun, 17 Sep 2017 19:58:39 -0300 Subject: [PATCH 0172/2943] Removed back ticks around .gitignore inside hyperlink --- docs/Consume-Packages/Packages-and-Source-Control.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Packages-and-Source-Control.md b/docs/Consume-Packages/Packages-and-Source-Control.md index cf039e137..8c294af5d 100644 --- a/docs/Consume-Packages/Packages-and-Source-Control.md +++ b/docs/Consume-Packages/Packages-and-Source-Control.md @@ -43,7 +43,7 @@ Although package restore is the default behavior with NuGet, some manual work is ## Omitting packages with Git -Use the [.gitignore file](https://git-scm.com/docs/gitignore) to have Git ignore the contents of the `packages` folder. For reference, see the [sample `.gitignore` for Visual Studio projects](https://github.com/github/gitignore/blob/master/VisualStudio.gitignore). +Use the [.gitignore file](https://git-scm.com/docs/gitignore) to have Git ignore the contents of the `packages` folder. For reference, see the [sample .gitignore for Visual Studio projects](https://github.com/github/gitignore/blob/master/VisualStudio.gitignore). The important parts of the `.gitignore` file are: From dcf99a0b44243d1ef62561e60da11cef4809ee58 Mon Sep 17 00:00:00 2001 From: Alfred Myers Date: Mon, 18 Sep 2017 07:10:17 -0300 Subject: [PATCH 0173/2943] Fixed minor typo --- docs/Consume-Packages/Package-Restore.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/Consume-Packages/Package-Restore.md index 1c64f6353..aa80220be 100644 --- a/docs/Consume-Packages/Package-Restore.md +++ b/docs/Consume-Packages/Package-Restore.md @@ -199,7 +199,7 @@ If you're using NuGet 2.7 or later and have a solution that is still configured To correct these errors, do one of the following: 1. [Migrate the project to automatic restore](#migrating-to-automatic-restore). -1. Update `nuget.exe` in the `.nuget` folder** as follows +1. Update `nuget.exe` in the `.nuget` folder as follows ``` cd .nuget From be2eef8cff261d701c6d4bd707a170722d950124 Mon Sep 17 00:00:00 2001 From: eriawan Date: Mon, 18 Sep 2017 17:12:36 +0700 Subject: [PATCH 0174/2943] correct guide to create .NET Standard package with VS 2017 --- docs/Guides/Create-NET-Standard-Packages-VS2017.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/Guides/Create-NET-Standard-Packages-VS2017.md b/docs/Guides/Create-NET-Standard-Packages-VS2017.md index 4876e890f..f64727794 100644 --- a/docs/Guides/Create-NET-Standard-Packages-VS2017.md +++ b/docs/Guides/Create-NET-Standard-Packages-VS2017.md @@ -30,11 +30,11 @@ ms.reviewer: # Create .NET standard packages with Visual Studio 2017 -*Applies to NuGet 4.x+ and MSBuild 15.1+ as provided with Visual Studio 2017. See [Create .NET Standard Packages with Visual Studio 2015](../guides/create-net-standard-packages-vs2015.md) for working with NuGet 3.x+* +*Applies to NuGet 4.x+ and MSBuild 15.3+ as provided with Visual Studio 2017 Update 3. See [Create .NET Standard Packages with Visual Studio 2015](../guides/create-net-standard-packages-vs2015.md) for working with NuGet 3.x+* The [.NET Standard Library](https://docs.microsoft.com/dotnet/articles/standard/library) is a formal specification of .NET APIs intended to be available on all .NET runtimes, thus establishing greater uniformity in the .NET ecosystem. The .NET Standard Library defines a uniform set of BCL (Base Class Library) APIs for all .NET platforms to implement, independent of workload. It enables developers to produce PCLs that are usable across all .NET runtimes, and reduces if not eliminates platform-specific conditional compilation directives in shared code. -This guide will walk you through creating a nuget package targeting .NET Standard Library 1.4 with Visual Studio 2017 and NuGet 4.0. +This guide will walk you through creating a nuget package targeting .NET Standard Library 1.4 with Visual Studio 2017 Update 3 and NuGet 4.0. 1. [Pre-requisites](#pre-requisites) 1. [Create the class library project](#create-the-netstandard-class-library-project) @@ -44,7 +44,7 @@ This guide will walk you through creating a nuget package targeting .NET Standar ## Pre-requisites -This walkthrough requires Visual Studio 2017 with the **.NET Core cross-platform development** workload. You can install the Community edition for free from [visualstudio.com](https://www.visualstudio.com/), or use the Professional and Enterprise editions. +This walkthrough requires Visual Studio 2017 Update 3 with the **.NET Core cross-platform development** workload. You can install the Community edition for free from [visualstudio.com](https://www.visualstudio.com/), or use the Professional and Enterprise editions. The require workload appears as follows in the Visual Studio installer: @@ -101,7 +101,7 @@ With NuGet 4.0 and .NET Core projects, package metadata is contained directly in ## Package the component -NuGet 4.0 supports a pack target using MSBuild version 15.1+ when the project contains the necessary package metadata, as was added in the previous section. To invoke MSBuild in this way, simply specify the pack target on the command line in the same folder as the `.csproj` file: +NuGet 4.0 supports a pack target using MSBuild version 15.1+ (including MSBuild 15.3 as part of Visual Studio 2017 Update 3) when the project contains the necessary package metadata, as was added in the previous section. To invoke MSBuild in this way, simply specify the pack target on the command line in the same folder as the `.csproj` file: msbuild /t:pack /p:Configuration=Release From ea5b4c544f2297366001e91bd4b69b1c03898b24 Mon Sep 17 00:00:00 2001 From: eriawan Date: Mon, 18 Sep 2017 17:15:21 +0700 Subject: [PATCH 0175/2943] Correct title casing for .NET Standard instead of .NET standard --- docs/Guides/Create-NET-Standard-Packages-VS2015.md | 2 +- docs/Guides/Create-NET-Standard-Packages-VS2017.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Guides/Create-NET-Standard-Packages-VS2015.md b/docs/Guides/Create-NET-Standard-Packages-VS2015.md index c9f9a8f88..4ddf9b4d5 100644 --- a/docs/Guides/Create-NET-Standard-Packages-VS2015.md +++ b/docs/Guides/Create-NET-Standard-Packages-VS2015.md @@ -28,7 +28,7 @@ ms.reviewer: --- -# Create .NET standard packages with Visual Studio 2015 +# Create .NET Standard packages with Visual Studio 2015 *Applies to NuGet 3.x. See [Create .NET Standard Packages with Visual Studio 2017](../guides/create-net-standard-packages-vs2017.md) for working with NuGet 4.x+.* diff --git a/docs/Guides/Create-NET-Standard-Packages-VS2017.md b/docs/Guides/Create-NET-Standard-Packages-VS2017.md index f64727794..33066b99f 100644 --- a/docs/Guides/Create-NET-Standard-Packages-VS2017.md +++ b/docs/Guides/Create-NET-Standard-Packages-VS2017.md @@ -28,7 +28,7 @@ ms.reviewer: --- -# Create .NET standard packages with Visual Studio 2017 +# Create .NET Standard packages with Visual Studio 2017 *Applies to NuGet 4.x+ and MSBuild 15.3+ as provided with Visual Studio 2017 Update 3. See [Create .NET Standard Packages with Visual Studio 2015](../guides/create-net-standard-packages-vs2015.md) for working with NuGet 3.x+* From 8e30eca08a18ded7b2c98a94b577c17dea4a5d62 Mon Sep 17 00:00:00 2001 From: Alfred Myers Date: Mon, 18 Sep 2017 19:08:19 -0300 Subject: [PATCH 0176/2943] minor fixes --- docs/Consume-Packages/Configuring-NuGet-Behavior.md | 2 +- docs/Consume-Packages/Dependency-Resolution.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index 1eb989af8..f0c6bcb8d 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -30,7 +30,7 @@ ms.reviewer: # Configuring NuGet behavior -NuGet's `NuGet.Config` files (in XML) store configuration settings and allow for changing default configuration values. NuGet uses several global configuration files and any number of configuration files within and near to a project to determine its exact behavior. In addition, in NuGet 2.7 and later you can use the `NuGetDefaults.Config` file to also specifically control package sources. +NuGet's `NuGet.Config` files store configuration settings in XML and allow for changing default configuration values. NuGet uses several global configuration files and any number of configuration files within and near to a project to determine its exact behavior. In addition, in NuGet 2.7 and later you can use the `NuGetDefaults.Config` file to also specifically control package sources. In this topic: diff --git a/docs/Consume-Packages/Dependency-Resolution.md b/docs/Consume-Packages/Dependency-Resolution.md index eb136c26d..d673fb813 100644 --- a/docs/Consume-Packages/Dependency-Resolution.md +++ b/docs/Consume-Packages/Dependency-Resolution.md @@ -49,7 +49,7 @@ When installing packages into projects using the PackageReference or `project.js When the NuGet restore process runs prior to a build, it resolves dependencies first in memory, then writes the resulting graph to a file called `project.assets.json` in the `obj` folder of a project using PackageReference, or in a file named `project.lock.json` alongside `project.json`. MSBuild then reads this file and translates it into a set of folders where potential references can be found, and then adds them to the project tree in memory. -The lock file is temporary should not be added to source control. It's listed by default in both `.gitignore` and `.tfignore`. See [Packages and source control](Packages-and-Source-Control.md). +The lock file is temporary and should not be added to source control. It's listed by default in both `.gitignore` and `.tfignore`. See [Packages and source control](Packages-and-Source-Control.md). ### Dependency resolution rules From 752e16052276bc2c884a8d01ab42f8faff51db1e Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 19 Sep 2017 15:27:18 -0700 Subject: [PATCH 0177/2943] Fix bug in callout --- docs/Tools/PowerShell-Reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/PowerShell-Reference.md b/docs/Tools/PowerShell-Reference.md index 829268f81..dba35353d 100644 --- a/docs/Tools/PowerShell-Reference.md +++ b/docs/Tools/PowerShell-Reference.md @@ -35,7 +35,7 @@ The Package Manager Console provides a PowerShell interface within Visual Studio > [!Tip] > All PowerShell commands relate only to package consumption. No PowerShell commands relate to creating and publishing packages except to the extent that a package can also be a consumer of other packages. -> ![Important] +> [!Important] > The commands listed here are specific to the Package Manager Console in Visual Studio, and differ from the [Package Management module commands](https://msdn.microsoft.com/powershell/reference/6/packagemanagement/packagemanagement) that are available in a general PowerShell environment. Specifically, each environment has commands that are not available in the other, and commands with the same name may also differ in their specific arguments. When using the Package Management Console in Visual Studio, the commands and arguments documented in this present topic apply. | Command | Description | NuGet Version | From 3679ad78981d8770fd7a0578258c6ae84af06d63 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Tue, 19 Sep 2017 16:42:13 -0700 Subject: [PATCH 0178/2943] Update Symbol-Packages.md Adding recommendation to use nuget v 4.1.0 --- docs/Create-Packages/Symbol-Packages.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index 958c9364f..a8a43f627 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -111,6 +111,9 @@ A symbol package can be built by conventions, from a folder structure as describ ## Publishing a symbol package +>[!Note] +> We recommend using NuGe.exe v4.1.0 and above to push your packages. + 1. For convenience, first save your API key with NuGet (see [publish a package](../create-packages/publish-a-package.md), which will apply to both nuget.org and symbolsource.org, because symbolsource.org will check with nuget.org to verify that you are the package owner. ``` @@ -139,4 +142,4 @@ In this case, NuGet will publish `MyPackage.symbols.nupkg`, if present, to https ## See Also - - Using SymbolSource (symbolsource.org) \ No newline at end of file + - Using SymbolSource (symbolsource.org) From c30488da291384a2f38a0b85e40115dba7d2dfb3 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Tue, 19 Sep 2017 16:44:14 -0700 Subject: [PATCH 0179/2943] Update Symbol-Packages.md --- docs/Create-Packages/Symbol-Packages.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index a8a43f627..e1fa48640 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -111,8 +111,8 @@ A symbol package can be built by conventions, from a folder structure as describ ## Publishing a symbol package ->[!Note] -> We recommend using NuGe.exe v4.1.0 and above to push your packages. +> [!Note] +> We recommend using NuGet.exe v4.1.0 and above to push packages. 1. For convenience, first save your API key with NuGet (see [publish a package](../create-packages/publish-a-package.md), which will apply to both nuget.org and symbolsource.org, because symbolsource.org will check with nuget.org to verify that you are the package owner. From 6d29d405e270c406f9f2a56704e0ef61e0b0de7a Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Tue, 19 Sep 2017 16:46:36 -0700 Subject: [PATCH 0180/2943] Update Publish-a-package.md (#477) * Update Publish-a-package.md Adding the recommended client. * Update Publish-a-package.md * Update Publish-a-package.md * Update Publish-a-package.md --- docs/Create-Packages/Publish-a-package.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index 67eff2be7..4b5f30442 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -49,6 +49,9 @@ Next, you can either upload the package through the nuget.org web portal, or pus ![Upload a package with the NuGet Package Manager](media/publish_UploadYourPackage.PNG) - Command line: +> [!Note] +> We recommend using NuGet.exe v4.1.0 or above to push packages. + 1. Click on your user name to navigate to your account settings. 2. Under **API Key**, click **copy to clipboard** to retrieve the access key you'll need in the CLI: From 2aa55ba48947a72d294c05d06d8eb1a6f2118483 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 19 Sep 2017 16:47:15 -0700 Subject: [PATCH 0181/2943] Update Symbol-Packages.md --- docs/Create-Packages/Symbol-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index e1fa48640..a78705c74 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -112,7 +112,7 @@ A symbol package can be built by conventions, from a folder structure as describ ## Publishing a symbol package > [!Note] -> We recommend using NuGet.exe v4.1.0 and above to push packages. +> We recommend using NuGet.exe v4.1.0 or above to push packages. 1. For convenience, first save your API key with NuGet (see [publish a package](../create-packages/publish-a-package.md), which will apply to both nuget.org and symbolsource.org, because symbolsource.org will check with nuget.org to verify that you are the package owner. From ec84e4a35dcf85aad18f857c64a9de9bdeeeb179 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 19 Sep 2017 16:48:54 -0700 Subject: [PATCH 0182/2943] Update nuget-exe-CLI-Reference.md --- docs/Tools/nuget-exe-CLI-Reference.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 996cd95e6..935943640 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -503,6 +503,9 @@ nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5 ## push +> [!Note] +> We recommend using NuGet.exe v4.1.0 or above to push packages. + Pushes a package to a package source and publishes it. NuGet's default configuration is obtained by loading `%AppData%\NuGet\NuGet.Config`, then loading any `Nuget.Config` or `.nuget\Nuget.Config` files starting from root of drive and ending in current directory (see [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md)) From cff2247e93d2e6c0e20e131e756a8e5ffd5f1f7d Mon Sep 17 00:00:00 2001 From: Daniel Jacobson Date: Wed, 20 Sep 2017 14:20:40 -0700 Subject: [PATCH 0183/2943] Update NuGet-FAQ.md Changing to account for package ID prefix reservation. Will point to new docs when the feature is advertised publicly soon --- docs/Policies/NuGet-FAQ.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index dd87d784e..0ce4a0d33 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -168,7 +168,7 @@ This is not an issue when using PackageReference, as each project file contains **Is it possible to reserve names for packages that will be published in future?** -No. If you feel that an existing package has taken the name which suits your package better, try contacting the owner of the package (select on the owner name on the package page on nuget.org). If you don't get a response within a reasonable time, [contact support](https://www.nuget.org/policies/Contact) and we'll look into it. +Yes. You can reserve IDs for packages on [nuget.org](https://www.nuget.org/) by requesting a package ID prefix for your account. In order to request a package ID prefix, send mail to account@nuget.org with the package owner display name, and the requested package ID prefix. **How do I claim ownership for packages ?** From e652a19523a95dc46d7ea34d55327e0fac28e716 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 25 Sep 2017 11:36:45 -0700 Subject: [PATCH 0184/2943] Changing "will add" to "adds" Our voicing in the docs generally avoids the use of "will" in favor of present tense. --- docs/Consume-Packages/Reinstalling-and-Updating-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index 8d405a1c1..661e943f4 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -89,7 +89,7 @@ The following may be affected when reinstalling a package: - If reinstalling packages after retargeting your application results in build or runtime errors, you may need to revert your target framework or search for alternative packages that properly support your new target framework. 1. **requireReinstallation attribute added in packages.config after project retargeting or upgrade** - - If NuGet detects that packages were affected by retargeting or upgrading a project, it will add a `requireReinstallation="true"` attribute in `packages.config` to all affected package references. Because of this, each subsequent build in Visual Studio raises build warnings for those packages so you can remember to reinstall them. + - If NuGet detects that packages were affected by retargeting or upgrading a project, it adds a `requireReinstallation="true"` attribute in `packages.config` to all affected package references. Because of this, each subsequent build in Visual Studio raises build warnings for those packages so you can remember to reinstall them. 1. **Reinstalling packages with dependencies** - `Update-Package –reinstall` reinstalls the same version of the original package, but installs the latest version of dependencies unless specific version constraints are provided. This allows you to update only the dependencies as required to fix an issue. However, if this rolls a dependency back to an earlier version, you can use `Update-Package ` to reinstall that one dependency without affecting the dependent package. From bbfe3bf29e2f6295529929e9383aa14a107e933c Mon Sep 17 00:00:00 2001 From: "Ashish Jain (NUGET)" Date: Mon, 25 Sep 2017 22:03:21 -0700 Subject: [PATCH 0185/2943] Fixed docs for PackageReference --- docs/Create-Packages/Creating-a-Package.md | 20 ++++++------- .../Supporting-Multiple-Target-Frameworks.md | 30 +++++-------------- 2 files changed, 17 insertions(+), 33 deletions(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 3d1bbf1c1..83de8d068 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -226,7 +226,7 @@ NuGet tracks installed solution-level packages in a `packages.config` file in th ### From a convention-based working directory -Technically speaking, a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension and whose contents match certain conventions. The package's assembly DLLs, for instance, are always placed in a `lib` folder. +Technically speaking, a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension and whose contents match certain conventions. The package's assembly DLLs, for instance, are always placed in a `lib\{tfm}` folder. The practical upshot of this is that you can simply create a folder structure that follows the expected conventions and contains all the files you want to include in the package *excluding any folders that begin with `.`*. You then generate a manifest directly from that folder tree. When you create the package using that manifest, NuGet automatically adds all the files in the folder structure. @@ -236,22 +236,20 @@ When using a convention-based working directory, on the other hand, NuGet assume Such a folder structure also allows you to easily include files that might not be part of a project at all, including: -- Content and source code that should be injected into the target project. -- PowerShell scripts (packages used in NuGet 2.x can include installation scripts as well, which is not supported in NuGet 3.x and later). -- Transformations to existing configuration and source code files in a project. +- Content and source code that should be available for reference across projects through global packages folder. +- PowerShell scripts only initialization script init.ps1 (packages used with NuGet packages.config format can include installation scripts as well, which is not supported in NuGet project.json and packageReference formats). +- Transformations to source code files in a project via .pp files. The folder conventions are as follows: | Folder | Description | Action upon package install | | --- | --- | --- | | (root) | Location for readme.txt | Visual Studio displays a readme.txt file in the package root when the package is installed. | -| lib | Assembly (`.dll`), documentation (`.xml`), and symbol (`.pdb`) files | Assemblies are added as references; `.xml` and `.pdb` copied into project folders. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md) for creating framework target-specific sub-folders. | -| runtimes | Architecture-specific assembly (`.dll`), symbol (`.pdb`), and native resource (`.pri`) files | Assemblies are added as references; other files are copied into project folders. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md). | -| content | Arbitrary files | Contents are copied to the project root | -| build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (NuGet 2.x) or `project.lock.json` (NuGet 3.x+). | -| tools | Powershell scripts and programs accessible from the Package Manager Console | Contents are copied to the project folder, and the `tools` folder is added to the PATH environment variable. | - -Think of the **content** folder as the root of the target application. To have the package add an image in the application's */images* folder, place it in the package's *content/images* folder. +| lib | Assembly (`.dll`), documentation (`.xml`), and symbol (`.pdb`) files | Assemblies are added as references; `.xml` and `.pdb` are extracted in packages folder. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md) for creating framework target-specific sub-folders. | +| runtimes | Architecture-specific assembly (`.dll`), symbol (`.pdb`), and native resource (`.pri`) files | Assemblies are added as references; other files are extracted in packages folder. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md). | +| contentFiles | Arbitrary files | Contents are extracted in packages folder and linked to target project based on buildAction. See [Including content files] (../schema/nuspec.md#including-content-files) | +| build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (packages.config) or `project.lock.json` (project.json) or (.csproj.nuget.g.targets/ .csproj.nuget.g.props). | +| tools | Powershell scripts and programs accessible from the Package Manager Console | Contents are extracted into the packages folder, and the `tools` folder is added to the PATH environment variable. | Next, from the root folder of this layout, run the following command to create the `.nuspec` file: diff --git a/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md b/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md index c878b0b0e..367cfd79f 100644 --- a/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md +++ b/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md @@ -46,20 +46,17 @@ In this topic: ## Framework version folder structure -When building a package that contains only one version of a library, you place its files in the `lib` folder of your project. - -When specifically targeting multiple frameworks, you instead make subfolders under `lib` using different case-sensitive framework names with the following convention: +When building a package that contains only one version of a library or target multiple frameworks, you always make subfolders under `lib` using different case-sensitive framework names with the following convention: lib\{framework name}[{version}] For a complete list of supported names, see the [Target Frameworks reference](../schema/target-frameworks.md#supported-frameworks). -If you also have a version of the library that is not specific to a framework, place it in the root `lib` folder. +You should never have a version of the library that is not specific to a framework, and placed directly in the root `lib` folder (was only supported with NuGet packages.config). Because then it will make it compatible with any target framework and allows it to be installed everywhere but might fail at runtime. -For example, the following folder structure supports five versions of an assembly, four that are framework-specific and one that is not: +For example, the following folder structure supports four versions of an assembly that are framework-specific: \lib - MyAssembly.dll \net46 \MyAssembly.dll \net461 @@ -73,7 +70,7 @@ To easily include all these files when building the package, use a recursive `** ```xml - + ``` @@ -99,12 +96,11 @@ See [Create UWP Packages](../Guides/Create-UWP-Packages.md) for an example of re When NuGet installs a package that has multiple assembly versions, it tries to match the framework name of the assembly with the target framework of the project. -If a match is not found, NuGet copies the assembly for the highest version that is less than or equal to the project's target framework, using an assembly in the root `lib` folder, if present, as the fallback. +If a match is not found, NuGet copies the assembly for the highest version that is less than or equal to the project's target framework, if available. If not compatible assembly found, then NuGet returns appropriate error message. For example, consider the following folder structure in a package: \lib - \MyAssembly.dll \net45 \MyAssembly.dll \net461 @@ -115,7 +111,7 @@ When installing this package in a project that targets .NET Framework 4.6, NuGet If the project targets .NET Framework 4.6.1, on the other hand, NuGet installs the assembly in the `net461` folder. -If the project targets .NET framework 4.0 and earlier, NuGet installs the assembly in the root `lib` folder. +If the project targets .NET framework 4.0 and earlier, NuGet throws appropriate error message for not finding the compatible assembly. ## Grouping assemblies by framework version @@ -132,16 +128,6 @@ When the package is installed in a project that targets .NET Framework 4.5, `MyA If you want `MyAssembly.Core.dll` to be installed for .NET Framework 4.5, place a copy in the `net45` folder. -The rule about copying assemblies from only one folder also applies to the root `lib` folder. Suppose a package has the following folder structure: - - \lib - \MyAssembly.dll (v1.0) - \MyAssembly.Core.dll (v1.0) - \Net45 - \MyAssembly.dll (v2.0) - -In projects that target .NET Framework 4.0 and earlier, NuGet copies both `MyAssembly.dll` (v1.0) and `MyAssembly.Core.dll` (v1.0) because their location in the package does not restrict them to a specific target. In projects that target .NET Framework 4.5, however, only `MyAssembly.dll` (v2.0) from the `net45` folder is copied. Again, to include `MyAssembly.Core.dll` for .NET Framework 4.5, place a copy of it in the `net45` folder. - ## Grouping assemblies by framework profile NuGet also supports targeting a specific framework profile by appending a dash and the profile name to the end of the folder. @@ -166,9 +152,9 @@ When packaging libraries targeting the Portable Class Library it can be tricky t ## Content files and PowerShell scripts > [!Warning] -> Mutable content file support and script execution is available in NuGet 2.x, but deprecated in NuGet 3.x and later. +> Mutable content file support and script execution is available in NuGet packages.config world, but deprecated in NuGet project.json and packagesReference world. So these should not be used for any new packages. -With NuGet 2.x, content files and PowerShell scripts can be grouped by target framework using the same folder convention inside the `content` and `tools` folders. For example: +With NuGet packages.config, content files and PowerShell scripts can be grouped by target framework using the same folder convention inside the `content` and `tools` folders. For example: \content \net46 From 55035e20c8c5d27b300c52b88dfe7271aa0d78d7 Mon Sep 17 00:00:00 2001 From: Ashish Jain Date: Mon, 25 Sep 2017 22:14:23 -0700 Subject: [PATCH 0186/2943] Update Creating-a-Package.md --- docs/Create-Packages/Creating-a-Package.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 83de8d068..04854450e 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -247,8 +247,8 @@ The folder conventions are as follows: | (root) | Location for readme.txt | Visual Studio displays a readme.txt file in the package root when the package is installed. | | lib | Assembly (`.dll`), documentation (`.xml`), and symbol (`.pdb`) files | Assemblies are added as references; `.xml` and `.pdb` are extracted in packages folder. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md) for creating framework target-specific sub-folders. | | runtimes | Architecture-specific assembly (`.dll`), symbol (`.pdb`), and native resource (`.pri`) files | Assemblies are added as references; other files are extracted in packages folder. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md). | -| contentFiles | Arbitrary files | Contents are extracted in packages folder and linked to target project based on buildAction. See [Including content files] (../schema/nuspec.md#including-content-files) | -| build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (packages.config) or `project.lock.json` (project.json) or (.csproj.nuget.g.targets/ .csproj.nuget.g.props). | +| contentFiles | Arbitrary files | Contents are extracted in packages folder and linked to target project based on buildAction. See [Including content files](../schema/nuspec.md#including-content-files). | +| build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (packages.config) or `project.lock.json` (project.json) or (`.csproj.nuget.g.targets`/ `.csproj.nuget.g.props`). | | tools | Powershell scripts and programs accessible from the Package Manager Console | Contents are extracted into the packages folder, and the `tools` folder is added to the PATH environment variable. | Next, from the root folder of this layout, run the following command to create the `.nuspec` file: From 42bfea39da932b4762c26e66b590f0e0b165a0ab Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Tue, 26 Sep 2017 10:08:53 -0700 Subject: [PATCH 0187/2943] Update Errors-and-Warnings.md --- docs/Reference/Errors-and-Warnings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index 1acf2ae0b..2ddcb8e3f 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -164,7 +164,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | --- | --- | | **Issue** | A dependency package doesn't contain any assets compatible with the project. | | **Common causes** | The package doesn't support the project's target framework. | -| **Example message** | *Package System.ComponentModel.EventBasedAsync 4.0.11 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package System.ComponentModel.EventBasedAsync 4.0.11 supports:
        - monoandroid10 (MonoAndroid,Version=v1.0)
        - monotouch10 (MonoTouch,Version=v1.0)
        - net45 (.NETFramework,Version=v4.5)
        - netcore50 (.NETCore,Version=v5.0)
        - netstandard1.0 (.NETStandard,Version=v1.0)
        - netstandard1.3 (.NETStandard,Version=v1.3)
        - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
        - win8 (Windows,Version=v8.0)
        - wp8 (WindowsPhone,Version=v8.0)
        - wpa81 (WindowsPhoneApp,Version=v8.1)
        - xamarinios10 (Xamarin.iOS,Version=v1.0)
        - xamarinmac20 (Xamarin.Mac,Version=v2.0)
        - xamarintvos10 (Xamarin.TVOS,Version=v1.0)
        - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0)*| +| **Example message** | *Package System.ComponentModel.EventBasedAsync 4.0.11 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package System.ComponentModel.EventBasedAsync 4.0.11 supports:
        - monoandroid10 (MonoAndroid,Version=v1.0)
        - monotouch10 (MonoTouch,Version=v1.0)
        - net45 (.NETFramework,Version=v4.5)
        - netcore50 (.NETCore,Version=v5.0)
        - netstandard1.0 (.NETStandard,Version=v1.0)
        - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
        - win8 (Windows,Version=v8.0)
        - wp8 (WindowsPhone,Version=v8.0)
        - wpa81 (WindowsPhoneApp,Version=v8.1)
        - xamarinios10 (Xamarin.iOS,Version=v1.0)
        - xamarinmac20 (Xamarin.Mac,Version=v2.0)
        - xamarintvos10 (Xamarin.TVOS,Version=v1.0)
        - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0)*| ### NU1203 From f51a94e7dfe29e84051b66649a2824cdb8edde97 Mon Sep 17 00:00:00 2001 From: Ashish Jain Date: Tue, 26 Sep 2017 17:59:06 -0700 Subject: [PATCH 0188/2943] Update Creating-a-Package.md Addressed PR comments --- docs/Create-Packages/Creating-a-Package.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 04854450e..1f6de3652 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -226,7 +226,7 @@ NuGet tracks installed solution-level packages in a `packages.config` file in th ### From a convention-based working directory -Technically speaking, a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension and whose contents match certain conventions. The package's assembly DLLs, for instance, are always placed in a `lib\{tfm}` folder. +Technically speaking, a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension and whose contents match certain conventions. The package's assembly DLLs, for instance, are always placed in a `lib\{tfm}\` folder. The practical upshot of this is that you can simply create a folder structure that follows the expected conventions and contains all the files you want to include in the package *excluding any folders that begin with `.`*. You then generate a manifest directly from that folder tree. When you create the package using that manifest, NuGet automatically adds all the files in the folder structure. @@ -236,8 +236,8 @@ When using a convention-based working directory, on the other hand, NuGet assume Such a folder structure also allows you to easily include files that might not be part of a project at all, including: -- Content and source code that should be available for reference across projects through global packages folder. -- PowerShell scripts only initialization script init.ps1 (packages used with NuGet packages.config format can include installation scripts as well, which is not supported in NuGet project.json and packageReference formats). +- Content and source code that should be referenced from the global packages folder. +- PowerShell scripts only initialization script init.ps1 (packages used with NuGet packages.config format can include installation scripts as well, which is not supported in NuGet project.json and PackageReference formats). - Transformations to source code files in a project via .pp files. The folder conventions are as follows: @@ -245,10 +245,11 @@ The folder conventions are as follows: | Folder | Description | Action upon package install | | --- | --- | --- | | (root) | Location for readme.txt | Visual Studio displays a readme.txt file in the package root when the package is installed. | -| lib | Assembly (`.dll`), documentation (`.xml`), and symbol (`.pdb`) files | Assemblies are added as references; `.xml` and `.pdb` are extracted in packages folder. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md) for creating framework target-specific sub-folders. | +| lib | Assembly (`.dll`), documentation (`.xml`), and symbol (`.pdb`) files | Assemblies are added as references; additional files in this folder are extracted to disk in global packages folder. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md) for creating framework target-specific sub-folders. | | runtimes | Architecture-specific assembly (`.dll`), symbol (`.pdb`), and native resource (`.pri`) files | Assemblies are added as references; other files are extracted in packages folder. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md). | | contentFiles | Arbitrary files | Contents are extracted in packages folder and linked to target project based on buildAction. See [Including content files](../schema/nuspec.md#including-content-files). | -| build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (packages.config) or `project.lock.json` (project.json) or (`.csproj.nuget.g.targets`/ `.csproj.nuget.g.props`). | +| build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (packages.config) or `project.lock.json` (project.json) or `.csproj.nuget.g.targets`/ `.csproj.nuget.g.props` (for PackageReference and referenced for specific TFM). | +| buildMultiTargeting | MSBuild `.targets` and `.props` files | Only applicable for PackageReference, this is a build folder that does not use a TFM, it is referenced in the outer build only for multi-framework projects. | | tools | Powershell scripts and programs accessible from the Package Manager Console | Contents are extracted into the packages folder, and the `tools` folder is added to the PATH environment variable. | Next, from the root folder of this layout, run the following command to create the `.nuspec` file: From 970189a94c1840bc7974df2db27dd51d1663ce89 Mon Sep 17 00:00:00 2001 From: Ashish Jain Date: Tue, 26 Sep 2017 18:05:46 -0700 Subject: [PATCH 0189/2943] Update Supporting-Multiple-Target-Frameworks.md Addressed PR comments --- docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md b/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md index 367cfd79f..d393cd70d 100644 --- a/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md +++ b/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md @@ -52,7 +52,7 @@ When building a package that contains only one version of a library or target mu For a complete list of supported names, see the [Target Frameworks reference](../schema/target-frameworks.md#supported-frameworks). -You should never have a version of the library that is not specific to a framework, and placed directly in the root `lib` folder (was only supported with NuGet packages.config). Because then it will make it compatible with any target framework and allows it to be installed everywhere but might fail at runtime. +You should never have a version of the library that is not specific to a framework, and placed directly in the root `lib` folder (was only supported with NuGet packages.config). Because then it will make it compatible with any target framework and allows it to be installed everywhere but might fail at runtime. So adding assemblies in root (`lib\abc.dll`) or subfolders (`lib\abc\abc.dll`) has been deprecated and ignored in PackagesReference. For example, the following folder structure supports four versions of an assembly that are framework-specific: @@ -111,7 +111,7 @@ When installing this package in a project that targets .NET Framework 4.6, NuGet If the project targets .NET Framework 4.6.1, on the other hand, NuGet installs the assembly in the `net461` folder. -If the project targets .NET framework 4.0 and earlier, NuGet throws appropriate error message for not finding the compatible assembly. +If the project targets .NET framework 4.0 and earlier, NuGet throws an appropriate error message for not finding the compatible assembly. ## Grouping assemblies by framework version From f03bcaa68d4a3c7b8d9bd2b39e7caf40a8a629a3 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 27 Sep 2017 10:26:16 -0700 Subject: [PATCH 0190/2943] Edits for voicing and consistency --- docs/Create-Packages/Creating-a-Package.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 1f6de3652..fb1423896 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -5,7 +5,7 @@ title: How to create a NuGet package | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/24/2017 +ms.date: 9/27/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -226,7 +226,7 @@ NuGet tracks installed solution-level packages in a `packages.config` file in th ### From a convention-based working directory -Technically speaking, a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension and whose contents match certain conventions. The package's assembly DLLs, for instance, are always placed in a `lib\{tfm}\` folder. +Technically speaking, a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension and whose contents match certain conventions. The package's assembly DLLs, for instance, are always placed in a `lib\{tfm}\` folder, where {tfm} is the [target framework moniker](../schema/target-frameworks.md) for which specific DLLs are built. The practical upshot of this is that you can simply create a folder structure that follows the expected conventions and contains all the files you want to include in the package *excluding any folders that begin with `.`*. You then generate a manifest directly from that folder tree. When you create the package using that manifest, NuGet automatically adds all the files in the folder structure. @@ -237,20 +237,20 @@ When using a convention-based working directory, on the other hand, NuGet assume Such a folder structure also allows you to easily include files that might not be part of a project at all, including: - Content and source code that should be referenced from the global packages folder. -- PowerShell scripts only initialization script init.ps1 (packages used with NuGet packages.config format can include installation scripts as well, which is not supported in NuGet project.json and PackageReference formats). -- Transformations to source code files in a project via .pp files. +- PowerShell initialization script `init.ps1` (packages used with the `packages.config` format can include installation scripts as well, which is not supported with `project.json` and PackageReference formats). +- Transformations to source code files in a project using `.pp` files. The folder conventions are as follows: | Folder | Description | Action upon package install | | --- | --- | --- | | (root) | Location for readme.txt | Visual Studio displays a readme.txt file in the package root when the package is installed. | -| lib | Assembly (`.dll`), documentation (`.xml`), and symbol (`.pdb`) files | Assemblies are added as references; additional files in this folder are extracted to disk in global packages folder. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md) for creating framework target-specific sub-folders. | -| runtimes | Architecture-specific assembly (`.dll`), symbol (`.pdb`), and native resource (`.pri`) files | Assemblies are added as references; other files are extracted in packages folder. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md). | -| contentFiles | Arbitrary files | Contents are extracted in packages folder and linked to target project based on buildAction. See [Including content files](../schema/nuspec.md#including-content-files). | -| build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (packages.config) or `project.lock.json` (project.json) or `.csproj.nuget.g.targets`/ `.csproj.nuget.g.props` (for PackageReference and referenced for specific TFM). | -| buildMultiTargeting | MSBuild `.targets` and `.props` files | Only applicable for PackageReference, this is a build folder that does not use a TFM, it is referenced in the outer build only for multi-framework projects. | -| tools | Powershell scripts and programs accessible from the Package Manager Console | Contents are extracted into the packages folder, and the `tools` folder is added to the PATH environment variable. | +| lib | Assembly (`.dll`), documentation (`.xml`), and symbol (`.pdb`) files | Assemblies are added as references; additional files in this folder are extracted to disk in the global packages folder. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md) for creating framework target-specific sub-folders. | +| runtimes | Architecture-specific assembly (`.dll`), symbol (`.pdb`), and native resource (`.pri`) files | Assemblies are added as references; other files are extracted in the `packages` folder. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md). | +| contentFiles | Arbitrary files | Contents are extracted in the `packages` folder and linked to target project based on buildAction. See [Including content files](../schema/nuspec.md#including-content-files). | +| build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (when using `packages.config`), `project.lock.json` (when using `project.json`), or `.csproj.nuget.g.targets`/ `.csproj.nuget.g.props` (when using PackageReference and referenced for specific TFM). | +| buildMultiTargeting | MSBuild `.targets` and `.props` files | Only applicable for PackageReference; this is a build folder that does not use a TFM, it is referenced in the outer build only for multi-framework projects. | +| tools | Powershell scripts and programs accessible from the Package Manager Console | Contents are extracted into the `packages` folder, and the `tools` folder is added to the PATH environment variable. | Next, from the root folder of this layout, run the following command to create the `.nuspec` file: From 7a2dac135502c4490f020246aa9a3956a2951e6c Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 27 Sep 2017 10:30:18 -0700 Subject: [PATCH 0191/2943] Small edits --- .../Supporting-Multiple-Target-Frameworks.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md b/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md index d393cd70d..c483af43d 100644 --- a/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md +++ b/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md @@ -5,7 +5,7 @@ title: Multi-targeting for NuGet Packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 8/25/2017 +ms.date: 9/27/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -52,7 +52,7 @@ When building a package that contains only one version of a library or target mu For a complete list of supported names, see the [Target Frameworks reference](../schema/target-frameworks.md#supported-frameworks). -You should never have a version of the library that is not specific to a framework, and placed directly in the root `lib` folder (was only supported with NuGet packages.config). Because then it will make it compatible with any target framework and allows it to be installed everywhere but might fail at runtime. So adding assemblies in root (`lib\abc.dll`) or subfolders (`lib\abc\abc.dll`) has been deprecated and ignored in PackagesReference. +You should never have a version of the library that is not specific to a framework and placed directly in the root `lib` folder. (This capability was supported only with `packages.config`). Doing so would make the compatible with any target framework and allow it to be installed anywhere, likely resulting in unexpected runtime errors. Adding assemblies in the root folder (such as `lib\abc.dll`) or subfolders (such as `lib\abc\abc.dll`) has been deprecated and is ignored when using the PackagesReference format. For example, the following folder structure supports four versions of an assembly that are framework-specific: @@ -96,7 +96,7 @@ See [Create UWP Packages](../Guides/Create-UWP-Packages.md) for an example of re When NuGet installs a package that has multiple assembly versions, it tries to match the framework name of the assembly with the target framework of the project. -If a match is not found, NuGet copies the assembly for the highest version that is less than or equal to the project's target framework, if available. If not compatible assembly found, then NuGet returns appropriate error message. +If a match is not found, NuGet copies the assembly for the highest version that is less than or equal to the project's target framework, if available. If no compatible assembly is found, NuGet returns an appropriate error message. For example, consider the following folder structure in a package: From aca79a1dba7eccde57c77f107288c3834cd809dc Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 27 Sep 2017 10:32:39 -0700 Subject: [PATCH 0192/2943] Couple more edits --- docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md b/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md index c483af43d..d13725a27 100644 --- a/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md +++ b/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md @@ -152,9 +152,9 @@ When packaging libraries targeting the Portable Class Library it can be tricky t ## Content files and PowerShell scripts > [!Warning] -> Mutable content file support and script execution is available in NuGet packages.config world, but deprecated in NuGet project.json and packagesReference world. So these should not be used for any new packages. +> Mutable content files and script execution are available with the `packages.config` format only; they are deprecated when using `project.json` and PackagesReference formats and should should not be used for any new packages. -With NuGet packages.config, content files and PowerShell scripts can be grouped by target framework using the same folder convention inside the `content` and `tools` folders. For example: +With `packages.config`, content files and PowerShell scripts can be grouped by target framework using the same folder convention inside the `content` and `tools` folders. For example: \content \net46 From 102fb5946f5f100948f9def010add14fadeacf76 Mon Sep 17 00:00:00 2001 From: Ashish Jain Date: Wed, 27 Sep 2017 12:39:05 -0700 Subject: [PATCH 0193/2943] Update Creating-a-Package.md --- docs/Create-Packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index fb1423896..30f61f251 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -249,7 +249,7 @@ The folder conventions are as follows: | runtimes | Architecture-specific assembly (`.dll`), symbol (`.pdb`), and native resource (`.pri`) files | Assemblies are added as references; other files are extracted in the `packages` folder. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md). | | contentFiles | Arbitrary files | Contents are extracted in the `packages` folder and linked to target project based on buildAction. See [Including content files](../schema/nuspec.md#including-content-files). | | build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (when using `packages.config`), `project.lock.json` (when using `project.json`), or `.csproj.nuget.g.targets`/ `.csproj.nuget.g.props` (when using PackageReference and referenced for specific TFM). | -| buildMultiTargeting | MSBuild `.targets` and `.props` files | Only applicable for PackageReference; this is a build folder that does not use a TFM, it is referenced in the outer build only for multi-framework projects. | +| buildMultiTargeting | MSBuild `.targets` and `.props` files | Only applicable for PackageReference; this is a build folder that does not use a TFM, it is referenced in the outer build only for multi-framework projects. (Not commonly used, use build unless you know that you need this folder) | | tools | Powershell scripts and programs accessible from the Package Manager Console | Contents are extracted into the `packages` folder, and the `tools` folder is added to the PATH environment variable. | Next, from the root folder of this layout, run the following command to create the `.nuspec` file: From 6bc990810ef02eb14fcf4673f80e084c8394be10 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 27 Sep 2017 13:23:26 -0700 Subject: [PATCH 0194/2943] Tweaks --- docs/Create-Packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 30f61f251..4962c3fbf 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -249,7 +249,7 @@ The folder conventions are as follows: | runtimes | Architecture-specific assembly (`.dll`), symbol (`.pdb`), and native resource (`.pri`) files | Assemblies are added as references; other files are extracted in the `packages` folder. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md). | | contentFiles | Arbitrary files | Contents are extracted in the `packages` folder and linked to target project based on buildAction. See [Including content files](../schema/nuspec.md#including-content-files). | | build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (when using `packages.config`), `project.lock.json` (when using `project.json`), or `.csproj.nuget.g.targets`/ `.csproj.nuget.g.props` (when using PackageReference and referenced for specific TFM). | -| buildMultiTargeting | MSBuild `.targets` and `.props` files | Only applicable for PackageReference; this is a build folder that does not use a TFM, it is referenced in the outer build only for multi-framework projects. (Not commonly used, use build unless you know that you need this folder) | +| buildMultiTargeting | MSBuild `.targets` and `.props` files | Only applicable for PackageReference; this is a build folder that does not use a TFM, it is referenced in the outer build only for multi-framework projects. (Not commonly used; use `build` unless you know that you need this folder.) | | tools | Powershell scripts and programs accessible from the Package Manager Console | Contents are extracted into the `packages` folder, and the `tools` folder is added to the PATH environment variable. | Next, from the root folder of this layout, run the following command to create the `.nuspec` file: From 55ea5820f6c4a1294522d38502d49d5f4f27c1f5 Mon Sep 17 00:00:00 2001 From: Heath Stewart Date: Thu, 28 Sep 2017 14:49:49 -0700 Subject: [PATCH 0195/2943] Fix spelling errors Supercede -> supersede. The former is not a word. --- docs/Schema/project-json.md | 2 +- docs/What-is-NuGet.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Schema/project-json.md b/docs/Schema/project-json.md index bf4aa0f87..781dec6cf 100644 --- a/docs/Schema/project-json.md +++ b/docs/Schema/project-json.md @@ -32,7 +32,7 @@ ms.reviewer: *NuGet 3.x+* -The `project.json` file maintains a list of packages used in a project, known as a package reference format. It supercedes `packages.config` but is in turn superceded by [PackageReference](../Consume-Packages/Package-References-in-Project-Files.md) with NuGet 4.0+. +The `project.json` file maintains a list of packages used in a project, known as a package reference format. It supersedes `packages.config` but is in turn superseded by [PackageReference](../Consume-Packages/Package-References-in-Project-Files.md) with NuGet 4.0+. The [`project.lock.json`](#projectlockjson) file (described below) is also used in projects employing `project.json`. diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index d397673ae..ad237a71e 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -88,7 +88,7 @@ Clearly, then, NuGet's primarily role where developers are concerned is maintain How this exactly happens has evolved over the different versions of NuGet, resulting in several *package management formats*, as they're called: - [`packages.config`](Schema/packages-config.md): *(NuGet 1.0+)* An XML file that maintains a flat list of all dependencies in the project, including the dependencies of other installed packages. -- [`project.json`](Schema/project-json.md): *(NuGet 3.0+)* A JSON file that maintains a list of the project's dependencies with an overall package graph in an associated file, `project.lock.json`. This structure provides improved performance over `packages.config` as described on [Dependency Resolution](Consume-Packages/Dependency-Resolution.md), including transitive restore, but has itself been generally superceded by PackageReference below. +- [`project.json`](Schema/project-json.md): *(NuGet 3.0+)* A JSON file that maintains a list of the project's dependencies with an overall package graph in an associated file, `project.lock.json`. This structure provides improved performance over `packages.config` as described on [Dependency Resolution](Consume-Packages/Dependency-Resolution.md), including transitive restore, but has itself been generally superseded by PackageReference below. - [Package references in project files](Consume-Packages/Package-References-in-Project-Files.md) (also known as "PackageReference") | *(NuGet 4.0+)* Maintains a list of a project's top-level dependencies directly within the project file, so no separate file is needed. An associated file, `project.assets.json`, is dynamically generated like `project.lock.json` to manage the overall dependency graph. Which package management format is employed in any given project depends on the project type, and the available version of NuGet and Visual Studio. To check what format is being used, simply look for `packages.config` or `project.json` in the project root after installing your first package. If you don't see either file, look in the project file directly for a <PackageReference>element. From efd73e006414743806bade8eec1eb963e114435d Mon Sep 17 00:00:00 2001 From: Morten Nielsen Date: Fri, 29 Sep 2017 23:50:03 -0700 Subject: [PATCH 0196/2943] Avoid defining `` in .targets Defining `` breaks the new .csproj format, because this example would override whatever package ID you define yourself in your project that might be referencing this package. https://twitter.com/dotMorten/status/913855944890531840 --- docs/Guides/Create-UWP-Controls.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/Guides/Create-UWP-Controls.md b/docs/Guides/Create-UWP-Controls.md index c61161bf3..b4f311523 100644 --- a/docs/Guides/Create-UWP-Controls.md +++ b/docs/Guides/Create-UWP-Controls.md @@ -134,9 +134,8 @@ Here is an example of what the targets file should look like: 10.0.14393 $(TargetPlatformMinVersion) - ManagedPackage - + ``` From 4c7d484c680bd50c2f147c456533e85da158b8c3 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 2 Oct 2017 16:03:42 -0700 Subject: [PATCH 0197/2943] Tactical CSAT fixes --- docs/Consume-Packages/Package-Restore.md | 20 +-- .../Reinstalling-and-Updating-Packages.md | 77 ++++++----- docs/Create-Packages/Creating-a-Package.md | 123 +++++++++--------- docs/Guides/Install-NuGet.md | 38 +++--- docs/Quickstart/Use-a-Package.md | 27 ++-- docs/Tools/Package-Manager-Console.md | 118 +++++++++-------- docs/Tools/Package-Manager-UI.md | 4 +- docs/Tools/PowerShell-Reference.md | 20 ++- docs/Tools/nuget-exe-CLI-Reference.md | 31 ++--- docs/Tools/ps-ref-find-package.md | 13 +- docs/Tools/ps-ref-get-package.md | 3 + docs/includes/install-cli.md | 3 + 12 files changed, 247 insertions(+), 230 deletions(-) create mode 100644 docs/includes/install-cli.md diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/Consume-Packages/Package-Restore.md index 1c64f6353..2632e851f 100644 --- a/docs/Consume-Packages/Package-Restore.md +++ b/docs/Consume-Packages/Package-Restore.md @@ -5,10 +5,9 @@ title: NuGet Package Restore | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/17/2017 +ms.date: 10/2/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: a7bf21da-86ae-4c2d-8750-04ff53f41967 @@ -16,15 +15,9 @@ ms.assetid: a7bf21da-86ae-4c2d-8750-04ff53f41967 description: A description of how NuGet restores packages upon which a project depends, including how to disable restore and constrain versions. keywords: NuGet package restore, NuGet package installation, installing package, restoring packages, dependency versions, disabling automatic restore, constraining package versions -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann - unnir -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- @@ -34,6 +27,7 @@ To promote a cleaner development environment and to reduce repository size, NuGe In this topic: +- [Quick guide to package restore](#quick-guide-to-package-restore) - [Package restore overview](#package-restore-overview) - [Enabling and disabling package restore](#enabling-and-disabling-package-restore) - [Constraining package versions with restore](#constraining-package-versions-with-restore) @@ -49,6 +43,16 @@ For additional details on package restore on build servers, see [Package restore > [!Note] > Projects configured for package restore also work with xbuild on Mono. +# Quick guide to package restore + +Use any of these methods to quickly restore packages: + +- **Package Manager console**: Run the `Update-Package -reinstall -ProjectName ` command where \ is the name of the affected project as it appears in Solution Explorer. Use `Update-Package -reinstall` by itself to restore all packages in the solution. See [Update-Package](../tools/ps-ref-update-package.md) +- **Package Manager UI**: right-click the solution in Solution Explorer and select **Restore NuGet Packages**. +- **Command line**: use `nuget restore`. + +The next section describes additional methods and considerations. + ## Package restore overview First, package references are maintained in one of the following package management formats, depending on project type and NuGet version. (Note that NuGet 4 and MSBuild 15.1 are installed with Visual Studio 2017.) diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index 9591a9588..46f06b714 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -16,23 +16,58 @@ ms.assetid: 2785879b-97f0-4a85-b3cc-bf4eaa5c39bf description: Details on when it's necessary to reinstall and update packages, as with broken package references in Visual Studio. keywords: NuGet package installation, NuGet package reinstallation, NuGet package restore, updating package, restoring packages, fixing broken references -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann - unnir -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- # How to reinstall and update packages -There are a number of situations, described below under [When to Reinstall a Package](#when-to-reinstall-a-package), where references to a package might get broken within a Visual Studio project. In these cases, uninstalling and then reinstalling the same version of the package will restore those reference to working order. +There are a number of situations, described below under [When to Reinstall a Package](#when-to-reinstall-a-package), where references to a package might get broken within a Visual Studio project. In these cases, uninstalling and then reinstalling the same version of the package will restore those reference to working order. Updating a package simply means installing an updated version, which often restores a package to working order. -Being mindful of the [Considerations](#considerations) described later, you can easily reinstall any package using the [Update-Package command](../Tools/ps-ref-update-package.md) in the Visual Studio Package Manager Console (**Tools** > **NuGet Package Manager** > **Package Manager Console**): +Updating and reinstalling packages is accomplished as follows: + +| Method | Update | Reinstall | +| --- | --- | --- | +| Package Manager console (described in [Using Update-Package](#using-update-package)) | `Update-Package` command | `Update-Package -reinstall` command | +| Package Manager UI | On the **Updates** tab, select one or more packages and select **Update** | One the **Installed** tab, select a package, record its name, then select **Uninstall**. Switch to the **Browse** tab, search for the package name, select it, then select **Install**). | +| nuget.exe CLI | `nuget update` command | Delete the package folder, then run `nuget install`. | + +In this topic: +- [When to Reinstall a Package](#when-to-reinstall-a-package) +- [Constraining upgrade versions](#constraining-upgrade-versions) + +## When to Reinstall a Package + +1. **Broken references after package restore**: If you've opened a project and restored NuGet packages, but still see broken references, try reinstalling each of those packages. +1. **Project is broken due to deleted files**: NuGet does not prevent you from removing items added from packages, so it's easy to inadvertently modify contents installed from a package and break your project. To restore the project, reinstall the affected packages. +1. **Package update broke the project**: If an update to a package breaks a project, the failure is generally caused by a dependency package which may have also been. To restore the state of the dependency, reinstall that specific package. +1. **Project retargeting or upgrade**: This can be useful when a project has been retargeted or upgraded and if the package requires reinstallation due to the change in target framework. NuGet 2.7 and later shows a build error in such cases immediately after project retargeting, and subsequent build warnings let you know that the package may need to be reinstalled. For project upgrade, NuGet shows an error in the Project Upgrade Log. +1. **Reinstalling a package during its development**: Package authors often need to reinstall the same version of package they're developing to test the behavior. The `Install-Package` command does not provide an option to force a reinstall, so use `Update-Package -reinstall` instead. + +## Constraining upgrade versions + +By default, reinstalling or updating a package *always* installs the latest version available from the package source. + +In projects using the `packages.config` reference format, however, you can specifically constrain the version range. For example, if you know that your application works only with version 1.x of a package but not 2.0 and above, perhaps due to a major change in the package API, then you'd want to constrain upgrades to 1.x versions. This prevents accidental updates that would break the application. + +To set a constraint, open `packages.config` in a text editor, locate the dependency in question, and add the `allowedVersions` attribute with a version range. For example, to constrain updates to version 1.x, set `allowedVersions` to `[1,2)`: + +```xml + + + + + + +``` + +In all cases, use the notation described in [Package versioning](../reference/package-versioning.md#version-ranges-and-wildcards). + +## Using Update-Package + +Being mindful of the [Considerations](#considerations) described below, you can easily reinstall any package using the [Update-Package command](../Tools/ps-ref-update-package.md) in the Visual Studio Package Manager Console (**Tools** > **NuGet Package Manager** > **Package Manager Console**): ```ps Update-Package -Id –reinstall @@ -69,14 +104,6 @@ Updating packages in a project or solution using `project.json` or [package refe For full details on the command, see the [Update-Package](../Tools/ps-ref-update-package.md) reference. -## When to Reinstall a Package - -1. **Broken references after package restore**: If you've opened a project and restored NuGet packages, but still see broken references, try reinstalling each of those packages. -1. **Project is broken due to deleted files**: NuGet does not prevent you from removing items added from packages, so it's easy to inadvertently modify contents installed from a package and break your project. To restore the project, reinstall the affected packages. -1. **Package update broke the project**: If an update to a package breaks a project, the failure is generally caused by a dependency package which may have also been. To restore the state of the dependency, reinstall that specific package. -1. **Project retargeting or upgrade**: This can be useful when a project has been retargeted or upgraded and if the package requires reinstallation due to the change in target framework. NuGet 2.7 and later shows a build error in such cases immediately after project retargeting, and subsequent build warnings let you know that the package may need to be reinstalled. For project upgrade, NuGet shows an error in the Project Upgrade Log. -1. **Reinstalling a package during its development**: Package authors often need to reinstall the same version of package they're developing to test the behavior. The `Install-Package` command does not provide an option to force a reinstall, so use `Update-Package -reinstall` instead. - ### Considerations The following may be affected when reinstalling a package: @@ -98,21 +125,3 @@ The following may be affected when reinstalling a package: 1. **Reinstalling packages when dependent versions are involved** - As explained above, reinstalling a package does not change versions of any other installed packages that depend on it. It's possible, then, that reinstalling a dependency could break the dependent package. -## Constraining upgrade versions - -By default, reinstalling or updating a package *always* installs the latest version available from the package source. - -In projects using `packages.config`, however, you can specifically constrain the version range. For example, if you know that your application works only with version 1.x of a package but not 2.0 and above, perhaps due to a major change in the package API, then you'd want to constrain upgrades to 1.x versions. This prevents accidental updates that would break the application. - -To set a constraint, open `packages.config` in a text editor, locate the dependency in question, and add the `allowedVersions` attribute with a version range. For example, to constrain updates to version 1.x, set `allowedVersions` to `[1,2)`: - -```xml - - - - - - -``` - -In all cases, use the notation described in [Package versioning](../reference/package-versioning.md#version-ranges-and-wildcards). diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index cc38a8106..3b7b33090 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -5,7 +5,7 @@ title: How to create a NuGet package | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/24/2017 +ms.date: 10/2/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -16,38 +16,33 @@ ms.assetid: 456797cb-e3e4-4b88-9b01-8b5153cee802 description: A detailed guide to the process of designing and creating a NuGet package, including key decision points like files and versioning. keywords: NuGet package creation, creating a package, nuspec manifest, NuGet package conventions, NuGet package version -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann - unnir -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- # Creating NuGet packages -No matter what your package does or what code it contains, NuGet is how you package that functionality into a component that can be shared with and used by any number of other developers. +No matter what your package does or what code it contains, you use `nuget.exe` to package that functionality into a component that can be shared with and used by any number of other developers. To install `nuget.exe`, see [Install NuGet CLI](../guides/Install-NuGet.md#nuget-cli). Note that Visual Studio does not automatically include `nuget.exe`. -The packaging process begins with the compiled code (assemblies), symbols, and/or other files that you want to deliver as a package (see [Overview and workflow](Overview-and-Workflow.md). That is, creating a package is an independent process from compiling or otherwise generating the files that go into the package. That said, the packaging process can use information in a project file, helping you keep compiled assemblies and packages containing those assemblies in sync. +Technically speaking, a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension and whose contents match certain conventions. This topic describes the detailed process of creating a package that meets those conventions. For a focused walkthrough, refer to [Create and Publish a Package Quickstart](../quickstart/create-and-publish-a-package.md). -This topic describes the detailed process of creating a package and serves as a reference for different aspects of that process. For a focused walkthrough, refer to [Create and Publish a Package Quickstart](../quickstart/create-and-publish-a-package.md). +Packaging begins with the compiled code (assemblies), symbols, and/or other files that you want to deliver as a package (see [Overview and workflow](Overview-and-Workflow.md). This process is independent from compiling or otherwise generating the files that go into the package, although you can use draw from information in a project file to keep the compiled assemblines and packages in sync. In this topic: - [Deciding which assemblies to package](#deciding-which-assemblies-to-package) - [The role and structure of the `.nuspec` file](#the-role-and-structure-of-the-nuspec-file) - [Creating the `.nuspec` file](#creating-the-nuspec-file) from: + - [A convention-based working directory](#from-a-convention-based-working-directory) - [An assembly DLL](#from-an-assembly-dll) - [A Visual Studio project](#from-a-visual-studio-project) - - [A convention-based working directory](#from-a-convention-based-working-directory) + - [New file with default values](#new-file-with-default-values) - [Choosing a unique package identifier and setting the version number](#choosing-a-unique-package-identifier-and-setting-the-version-number) - [Setting a package type](#setting-a-package-type) (NuGet 3.5 and later) - [Adding a readme and other files](#adding-a-readme-and-other-files) - [Including MSBuild props and targets in a package](#including-msbuild-props-and-targets-in-a-package) -- [Creating the package](#creating-the-package) +- [Running nuget pack to generate the .nupkg file](#running-nuget-pack-to-generate-the-nupkg-file) After these core steps, you can incorporate a variety of other features as described elsewhere in this documentation. See [Next steps](#next-steps) below. @@ -58,19 +53,21 @@ After these core steps, you can incorporate a variety of other features as descr Most general-purpose packages contain one or more assemblies that other developers can use in their own projects. -In general, it's best to have one assembly per NuGet package, provided that each assembly is independently useful. For example, if you have a `Utilities.dll` that depends on `Parser.dll`, and `Parser.dll` is useful on its own, then create one package for each. Doing so allows developers to use `Parser.dll` independently of `Utilities.dll`. +- In general, it's best to have one assembly per NuGet package, provided that each assembly is independently useful. For example, if you have a `Utilities.dll` that depends on `Parser.dll`, and `Parser.dll` is useful on its own, then create one package for each. Doing so allows developers to use `Parser.dll` independently of `Utilities.dll`. -However, if your library is composed of multiple assemblies that aren't independently useful, then it's fine to combine them into one package. Using the previous example, if `Parser.dll` contains code that's used only by `Utilities.dll`, then it's fine to keep `Parser.dll` in the same package. - -Similarly, if `Utilities.dll` depends on `Utilities.resources.dll`, where again the latter is not useful on its own, then put both in the same package. +- If your library is composed of multiple assemblies that aren't independently useful, then it's fine to combine them into one package. Using the previous example, if `Parser.dll` contains code that's used only by `Utilities.dll`, then it's fine to keep `Parser.dll` in the same package. + - Similarly, if `Utilities.dll` depends on `Utilities.resources.dll`, where again the latter is not useful on its own, then put both in the same package. Resources are, in fact, a special case. When a package is installed into a project, NuGet automatically adds assembly references to the package's DLLs, *excluding* those that are named `.resources.dll` because they are assumed to be localized satellite assemblies (see [Creating localized packages](creating-localized-packages.md)). For this reason, avoid using `.resources.dll` for files that otherwise contain essential package code. ## The role and structure of the .nuspec file -Once you know what files you want to package, the next step is creating a `.nuspec` package manifest. The manifest is an XML file that describes the package's contents and is itself included in the package. The manifest both drives the creation of the package and instructs NuGet on how to install the package into a project. The manifest, for example, identifies other package dependencies such that NuGet can also install those dependencies when the main package is installed. +Once you know what files you want to package, the next step is creating a package manifest in a `.nuspec` XML file. -The manifest contains both required and optional properties as described below. For exact details, including other properties not mentioned here, see the [.nuspec reference](../schema/nuspec.md). +The manifest: +1. Describes the package's contents and is itself included in the package. +2. Drives both the creation of the package and instructs NuGet on how to install the package into a project. For example, the manifest identifies other package dependencies such that NuGet can also install those dependencies when the main package is installed. +3. Contains both required and optional properties as described below. For exact details, including other properties not mentioned here, see the [.nuspec reference](../schema/nuspec.md). Required properties: - The package identifier, which must be unique across the gallery that hosts the package. @@ -159,38 +156,59 @@ Go into any *package\version* folder, copy the `.nupkg` file to a `.zip` file, t ## Creating the .nuspec file -Creating a complete manifest typically begins with a basic `.nuspec` file, which you then edit by hand into its final form so that it describes the exact content you want in the final package. +Creating a complete manifest typically begins with a basic `.nuspec` file generated through one of the following methods: -The best way to create an initial `.nuspec` file is by using the [nuget spec](../Tools/nuget-exe-CLI-Reference.md#spec) command to create a template manifest. This ensures that you start with the proper file structure. You can also start with a manifest from another package and modify it to suit your needs. +- [A convention-based working directory](#from-a-convention-based-working-directory) +- [An assembly DLL](#from-an-assembly-dll) +- [A Visual Studio project](#from-a-visual-studio-project) +- [New file with default values](#new-file-with-default-values) -With `nuget spec`, you can create a new file with default values, or you can create a file using information in an existing assembly DLL, a project file, or a convention-based working directory as explained in the following sections. +You then edit the file by hand so that it describes the exact content you want in the final package. > [!Important] > Generated `.nuspec` files contain placeholders that must be modified before creating the package with the `nuget pack` command. That command fails if the `.nuspec` contains any placeholders. -### New file with default values +### From a convention-based working directory -The following command creates a default manifest with placeholders: +Because a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension, its often easiest to create the folder structure you want on the file system, then create the `.nuspec` file directly from that structure. The `nuget pack` command then automatically adds all files in that folder structure (excluding any folders that begin with `.`, allowing you keep private files in the same structure). -``` -nuget spec [] -``` +The advantage to this approach is that you don't need to specify in the manifest which files you want to include in the package (as explained later in this topic). You can simply have your build process produce the exact folder structure that goes into the package, and you can easily include other files that might not be part of a project otherwise: + +- Content and source code that should be injected into the target project. +- PowerShell scripts (packages used in NuGet 2.x can include installation scripts as well, which is not supported in NuGet 3.x and later). +- Transformations to existing configuration and source code files in a project. + +The folder conventions are as follows: -If you omit ``, the resulting file is `Package.nuspec`. If you provide a name such as `Contoso.Utility.UsefulStuff`, the file is `Contoso.Utility.UsefulStuff.nuspec`. +| Folder | Description | Action upon package install | +| --- | --- | --- | +| (root) | Location for readme.txt | Visual Studio displays a readme.txt file in the package root when the package is installed. | +| lib/{tfm} | Assembly (`.dll`), documentation (`.xml`), and symbol (`.pdb`) files for the given Target Framework Moniker (TFM) | Assemblies are added as references; `.xml` and `.pdb` copied into project folders. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md) for creating framework target-specific sub-folders. | +| runtimes | Architecture-specific assembly (`.dll`), symbol (`.pdb`), and native resource (`.pri`) files | Assemblies are added as references; other files are copied into project folders. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md). | +| content | Arbitrary files | Contents are copied to the project root. Think of the **content** folder as the root of the target application that ultimately consumes the package. To have the package add an image in the application's */images* folder, place it in the package's *content/images* folder. | +| build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (NuGet 2.x) or `project.lock.json` (NuGet 3.x+). | +| tools | Powershell scripts and programs accessible from the Package Manager Console | Contents are copied to the project folder, and the `tools` folder is added to the PATH environment variable. | + +Because your folder structure can contain any number of assemblies for any number of target frameworks, this method is necessary when creating packages that support multiple frameworks + +In any case, once you have the desired folder structure in place, run the following command in that foler to create the `.nuspec` file: + +``` +nuget spec +``` -The resulting `.nuspec` contains placeholders for values like the `projectUrl`. Be sure to edit the file before using it to creating the package. +Again, the generated `.nuspec` contains no explicit references to files in the folder structure. NuGet automatically includes all files when the package is created. You still need to edit placeholder values in other parts of the manifest, however. -You can also use `nuget spec` with an existing assembly, a Visual Studio project, or a convention-based working directory as described in the following sections. Note that in all cases, the resulting `.nuspec` file contains placeholders that you'll need to edit before creating the package itself. ### From an assembly DLL -If you have an assembly DLL, generate a `.nuspec` file from the metadata in the assembly using the following command: +In the simple case of creating a package from an assembly, you can generate a `.nuspec` file from the metadata in the assembly using the following command: ``` nuget spec .dll ``` -Using this form of the command replaces a few placeholders in the manifest with specific values from the assembly. For example, the `` property is set to the assembly name, and `` is set to the assembly version. Other properties in the manifest, however, don't have matching values in the assembly and thus still contain placeholders. +Using this form replaces a few placeholders in the manifest with specific values from the assembly. For example, the `` property is set to the assembly name, and `` is set to the assembly version. Other properties in the manifest, however, don't have matching values in the assembly and thus still contain placeholders. ### From a Visual Studio project @@ -215,50 +233,28 @@ Tokens relieve you from needing to update crucial values like the version number Note that there are several additional packaging options available when working from a Visual Studio project, as described in the [Creating the package](#creating-the-package) section later on. + #### Solution-level packages -*NuGet 2.x only. This capability is not present in NuGet 3.0+.* +*NuGet 2.x only. Not available in NuGet 3.0+.* NuGet 2.x supported the notion of a solution-level package that installs tools or additional commands for the Package Manager Console (the contents of the `tools` folder), but does not add references, content, or build customizations to any projects in the solution. Such packages contain no files in its direct `lib`, `content`, or `build` folders, and none of its dependencies have files in their respective `lib`, `content`, or `build` folders. NuGet tracks installed solution-level packages in a `packages.config` file in the `.nuget` folder, rather than the project's `packages.config` file. -### From a convention-based working directory - -Technically speaking, a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension and whose contents match certain conventions. The package's assembly DLLs, for instance, are always placed in a `lib` folder. - -The practical upshot of this is that you can simply create a folder structure that follows the expected conventions and contains all the files you want to include in the package *excluding any folders that begin with `.`*. You then generate a manifest directly from that folder tree. When you create the package using that manifest, NuGet automatically adds all the files in the folder structure. - -An advantage to this approach is that you don't need to edit the manifest to specifically identify which files you want to include in the package (as explained later in this topic). That is, when creating a manifest and package from the contents of a project tree, NuGet includes only the files that you specify in the manifest. Otherwise you'd risk including temporary build files, project files, `.gitignore` files, and so forth. - -When using a convention-based working directory, on the other hand, NuGet assumes that everything in the folder structure is exactly what you want in the final package (again excluding folders starting with `.`). You don't need to specifically reference any files in the manifest. - -Such a folder structure also allows you to easily include files that might not be part of a project at all, including: -- Content and source code that should be injected into the target project. -- PowerShell scripts (packages used in NuGet 2.x can include installation scripts as well, which is not supported in NuGet 3.x and later). -- Transformations to existing configuration and source code files in a project. +### New file with default values -The folder conventions are as follows: +The following command creates a default manifest with placeholders, which ensures you start with the proper file structure: -| Folder | Description | Action upon package install | -| --- | --- | --- | -| (root) | Location for readme.txt | Visual Studio displays a readme.txt file in the package root when the package is installed. | -| lib | Assembly (`.dll`), documentation (`.xml`), and symbol (`.pdb`) files | Assemblies are added as references; `.xml` and `.pdb` copied into project folders. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md) for creating framework target-specific sub-folders. | -| runtimes | Architecture-specific assembly (`.dll`), symbol (`.pdb`), and native resource (`.pri`) files | Assemblies are added as references; other files are copied into project folders. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md). | -| content | Arbitrary files | Contents are copied to the project root | -| build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (NuGet 2.x) or `project.lock.json` (NuGet 3.x+). | -| tools | Powershell scripts and programs accessible from the Package Manager Console | Contents are copied to the project folder, and the `tools` folder is added to the PATH environment variable. | - -Think of the **content** folder as the root of the target application. To have the package add an image in the application's */images* folder, place it in the package's *content/images* folder. +``` +nuget spec [] +``` -Next, from the root folder of this layout, run the following command to create the `.nuspec` file: +If you omit \, the resulting file is `Package.nuspec`. If you provide a name such as `Contoso.Utility.UsefulStuff`, the file is `Contoso.Utility.UsefulStuff.nuspec`. -``` -nuget spec -``` +The resulting `.nuspec` contains placeholders for values like the `projectUrl`. Be sure to edit the file before using it to create the final `.nupkg` file. -In this case, the `.nuspec` contains no explicit references to files in the folder structure. Again, NuGet automatically includes all files when the package is created. ## Choosing a unique package identifier and setting the version number @@ -387,8 +383,9 @@ When NuGet 2.x installs a package with `\build` files, it adds an MSBuild ` -## Creating the package +## Running nuget pack to generate the .nupkg file When using an assembly or the convention-based working directory, create a package by running `nuget pack` with your `.nuspec` file, replacing `` with your specific filename: diff --git a/docs/Guides/Install-NuGet.md b/docs/Guides/Install-NuGet.md index 2dc37eeec..4e87c0978 100644 --- a/docs/Guides/Install-NuGet.md +++ b/docs/Guides/Install-NuGet.md @@ -1,34 +1,28 @@ --- # required metadata -title: Installing NuGet | Microsoft Docs +title: Installing NuGet client tools | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/17/2017 +ms.date: 10/2/2017 ms.topic: get-started-article ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 683b8b34-a6f4-4d56-b9cd-2483bfbad1ad # optional metadata - -description: Guidance on installing the NuGet command-line interface (CLI) and the NuGet Package Manager for Visual Studio. -keywords: nuget.exe CLI, NuGet package manager, NuGet package manager console, NuGet for Visual Studio, NuGet beta channel -#ROBOTS: -#audience: -#ms.devlang: +description: Guidance on installing the NuGet client tools: the command-line interface (CLI) and the NuGet Package Manager for Visual Studio. +keywords: nuget.exe CLI, nuget client tools, NuGet package manager, NuGet package manager console, NuGet for Visual Studio, NuGet beta channel ms.reviewer: - karann - unnir -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- -# Installing NuGet +# Installing NuGet Tools + +**Looking to install a package? See [Quickstart - Use a package](../Quickstart/Use-a-Package.md).** There are two primary tools available to help you build, publish and consume NuGet packages: @@ -53,7 +47,7 @@ The following capabilities are supported only in the NuGet CLI: - Publish packages - Manage Nuget.Config - Manage the NuGet cache -- Replication a package +- Replicating a package > [!Note] > Another good tool is the [NuGet Package Explorer](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer), an open-source, stand-alone tool to visually explore, create, and edit NuGet packages. It's very helpful, for example, to make experimental changes to a package structure without having to rebuild the package each time. @@ -66,20 +60,22 @@ The NuGet command-line interface provides access to all NuGet capabilities, and ### Windows -On Windows, install the NuGet CLI using any of the following methods: +**Direct download:** -1. **nuget.org**: Various versions of `nuget.exe` are available on [nuget.org/downloads](https://nuget.org/downloads). Each download link points directly to an `.exe` file, so be sure to right-click and save the file to your computer rather than running it from the browser. If desired, add the save location to your PATH environment variable so you can use NuGet from anywhere. +[!INCLUDE[install-cli](../includes/install-cli.md)] > [!Note] > With NuGet 1.4+, you can use `nuget update -self` to update your existing nuget.exe to the latest version. - -1. **Chocolatey**: Install the [NuGet.CommandLine](http://chocolatey.org/packages/NuGet.CommandLine) Chocolatey package using the [Chocolatey](http://chocolatey.org) client. + +**Other methods:** + +- **Chocolatey**: Install the [NuGet.CommandLine](http://chocolatey.org/packages/NuGet.CommandLine) Chocolatey package using the [Chocolatey](http://chocolatey.org) client. ``` choco install nuget.commandline ``` -1. **Visual Studio**: Install the [NuGet.CommandLine](http://www.nuget.org/packages/NuGet.CommandLine/) package from the Package Manager Console in Visual Studio. +- **Visual Studio**: Install the [NuGet.CommandLine](http://www.nuget.org/packages/NuGet.CommandLine/) package from the Package Manager Console in Visual Studio. > [!Note] > **For NuGet 2.x users**: Because of breaking changes introduced in NuGet 3.2, [https://nuget.org/nuget.exe](https://nuget.org/nuget.exe) points to the latest stable NuGet 2.x release to prevent continuous integration systems from potentially breaking. @@ -90,9 +86,9 @@ On Windows, install the NuGet CLI using any of the following methods: On Mac OSX and Linux, there are two ways to run the NuGet CLI: -1. Install the [.NET Core SDK](https://www.microsoft.com/net/download/core), which includes the core NuGet capabilities. Downloads are also listed on [github.com/dotnet/cli](https://github.com/dotnet/cli). If you need fuller capabilities, then use the second option below to use `nuget.exe` with Mono. +- Install the [.NET Core SDK](https://www.microsoft.com/net/download/core), which includes the core NuGet capabilities. Downloads are also listed on [github.com/dotnet/cli](https://github.com/dotnet/cli). If you need fuller capabilities, then use the second option below to use `nuget.exe` with Mono. -1. Install [Mono](http://www.mono-project.com/docs/getting-started/install/) and then use the `nuget.exe` command-line executable for Windows (version 3.2 and later) from [nuget.org/downloads](https://nuget.org/downloads). Running NuGet on Mono is subject to the following limitations: +- Install [Mono](http://www.mono-project.com/docs/getting-started/install/) and then use the `nuget.exe` command-line executable for Windows (version 3.2 and later) from [nuget.org/downloads](https://nuget.org/downloads). Running NuGet on Mono is subject to the following limitations: - Commands tested to work: - config diff --git a/docs/Quickstart/Use-a-Package.md b/docs/Quickstart/Use-a-Package.md index 13065bd19..61b52fb6d 100644 --- a/docs/Quickstart/Use-a-Package.md +++ b/docs/Quickstart/Use-a-Package.md @@ -5,33 +5,36 @@ title: Introductory Guide to Using NuGet Packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 8/25/2017 +ms.date: 10/2/2017 ms.topic: get-started-article ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: f31f8259-20a8-4617-880e-5819299372d2 # optional metadata description: A walkthrough tutorial on the process of installing and using a NuGet package in a project. -keywords: NuGet package consumption, installing NuGet packages, NuGet package references, using NuGet packages -#ROBOTS: -#audience: -#ms.devlang: +keywords: install NuGet, NuGet package consumption, installing NuGet packages, NuGet package references, using NuGet packages ms.reviewer: - karann - unnir -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- -# Use a package +# Install and use a package -This tutorial walks you through installing and using the popular [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) package in a Universal Windows Platform (UWP) project. You use a similar same workflow for virtually every NuGet package you use in a project. +Installing a package happens in three ways: + +| Method | Description | Reference | +| --- | --- | --- | +| nuget.exe CLI: `nuget install ` | Downloads the package identified by \ and expands its contents into a folder in the current directory. No changes are made to any project files. Dependencies are also downloaded and expanded. | [CLI reference](../tools/nuget-exe-CLI-Reference.md) | +| Package Manager Console (Visual Studio): `Install-Package ` | Downloads and installs the package into the current project, then update the project file to list the package as a dependency. | [Package Manager Console Guide](../tools/Package-Manager-Console.md) | +| Package Manager UI (Visual Studio) | Provides a UI through which you can browse, select, and install packages into a project. Updates the project file to list the package as a dependency. | [Package Manager UI Reference](../tools/Package-Manager-UI.md) | + +Once installed, refer to the package in code with `using ` where \ is specific to the package you're using. Once the reference is made, you can call the package through its API. + +The remainder of this topic walks through the process of using the Package Manager UI to install the popular [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) package in a Universal Windows Platform (UWP) project. It then shows an example of using the package. You use a similar same workflow for virtually every NuGet package you use in a project. - [Install pre-requisites](#install-pre-requisites) - [Create a UWP project](#create-a-uwp-project) @@ -67,8 +70,6 @@ In Visual Studio, choose **File > New > Project**, expand **Visual C# > Windows 1. Right-click the solution in Solution Explorer and click **Build Solution**. This restores any NuGet packages listed under **References**. For more details, see [Package Restore](../consume-packages/package-restore.md). - - ## Use the Newtonsoft.Json API in the app With the Newtonsoft.Json package in the project, you can call its `JsonConvert.SerializeObject` method to convert an object to a human-readable string. diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index f3f338777..0c5e8ea43 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -5,10 +5,9 @@ title: NuGet Package Manager Console Guide | Microsoft Docs author: kraigb hms.author: kraigb manager: ghogen -ms.date: 7/17/2017 +ms.date: 10/2/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 2b92b119-6861-406c-82af-9d739af230e4 @@ -16,145 +15,152 @@ ms.assetid: 2b92b119-6861-406c-82af-9d739af230e4 description: Instructions for using the NuGet Package Manager Console in Visual Studio for working with packages. keywords: NuGet package manager console, NuGet powershell, managing NuGet packages -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann - unnir -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- # Package Manager Console -The NuGet Package Manager Console, which is build into Visual Studio version 2012 and later, lets you use [NuGet PowerShell commands](../tools/powershell-reference.md) to find, install, uninstall, and update NuGet packages. Using the console is necessary in cases where the Package Manager UI does not provide a way to perform an operation. +The NuGet Package Manager Console is built into Visual Studio on Windows version 2012 and later (see [Availability](#availability-of-the-console)). The console lets you use [NuGet PowerShell commands](../tools/powershell-reference.md) to find, install, uninstall, and update NuGet packages. Using the console is necessary in cases where the Package Manager UI does not provide a way to perform an operation. -All operations that are available in the console can also be done with the [NuGet CLI](../tools/nuget-exe-cli-reference.md). However, console commands operate within the context of Visual Studio and often accomplish more than their equivalent CLI commands. For example, installing a package through the console adds a reference to the project whereas the CLI command does not. For this reason, developers working in Visual Studio typically prefer using the console to the CLI. +All operations that are available in the console can also be done with the [NuGet CLI](../tools/nuget-exe-cli-reference.md). However, console commands operate within the context of Visual Studio and a saved project/solution and often accomplish more than their equivalent CLI commands. For example, installing a package through the console adds a reference to the project whereas the CLI command does not. For this reason, developers working in Visual Studio typically prefer using the console to the CLI. In this topic: -- [Availability of the console](#availability-of-the-console) - [Opening the console](#opening-the-console) - [Finding a package](#finding-a-package) +- [Updating a package](#updating-a-package) - [Installing a package](#installing-a-package) - [Uninstalling a package](#uninstalling-a-package) -- [Updating a package](#updating-a-package) +- [Availability of the console](#availability-of-the-console) - [Extending the Package Manager Console](#extending-the-package-manager-console) - [Setting up a NuGet PowerShell profile](#setting-up-a-nuget-powershell-profile) > [!Tip] > Many console operations depend on having a solution opened in Visual Studio with a known path name. If you have an unsaved solution, or no solution, you can see the error, "Solution is not opened or not saved. Please ensure you have an open and saved solution." This indicates that the console cannot determine the solution folder. Saving an unsaved solution, or creating and saving a solution if you don't have one open, should correct the error. - -## Availability of the console - -In Visual Studio 2017, NuGet and the NuGet Package Manager are automatically installed when you select any .NET-related workloads; you can also install it individually by checking the **Individual components > Code tools > NuGet package manager** option in the Visual Studio 2017 installer. - -Also, if you're missing the NuGet Package Manager in Visual Studio 2015 and earlier, check **Tools > Extensions and Updates...** and search for the NuGet Package Manager extension. If you're unable to use the extensions installer in Visual Studio, you can download the extension directly from [https://dist.nuget.org/index.html](https://dist.nuget.org/index.html). - -The Package Manager Console it is not presently available with Visual Studio for Mac. The equivalent commands, however, are available through the [NuGet CLI](nuget-exe-CLI-reference.md). Visual Studio for Mac does have a UI managing NuGet packages. See [Including a NuGet package in your project](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough). - ## Opening the console and console controls -Open the console in Visual Studio using the **Tools > NuGet Package Manager > Package Manager Console** command. The console is a Visual Studio window that can be arranged and positioned however you like (see [Customize window layouts in Visual Studio](https://docs.microsoft.com/visualstudio/ide/customizing-window-layouts-in-visual-studio)). +1. Open the console in Visual Studio using the **Tools > NuGet Package Manager > Package Manager Console** command. The console is a Visual Studio window that can be arranged and positioned however you like (see [Customize window layouts in Visual Studio](https://docs.microsoft.com/visualstudio/ide/customizing-window-layouts-in-visual-studio)). -By default, console commands operate against a specific package source and project as set in the control at the top of the window: +2. By default, console commands operate against a specific package source and project as set in the control at the top of the window: -![Package Manager Console controls for package source and project](media/PackageManagerConsoleControls1.png) + ![Package Manager Console controls for package source and project](media/PackageManagerConsoleControls1.png) -Selecting a different package source and/or project changes those defaults for subsequent commands. To overrride these settings without changing the defaults, most commands support `-Source` and `-ProjectName` options. +3. Selecting a different package source and/or project changes those defaults for subsequent commands. To overrride these settings without changing the defaults, most commands support `-Source` and `-ProjectName` options. -To manage package sources, select the gear icon. This is a shortcut to the **Tools > Options > NuGet Package Manager > Package Sources** dialog box as described on the [Package Manager UI](Package-Manager-UI.md#package-sources) page. Also, the control to the right of the project selector clears the console's contents: +4. To manage package sources, select the gear icon. This is a shortcut to the **Tools > Options > NuGet Package Manager > Package Sources** dialog box as described on the [Package Manager UI](Package-Manager-UI.md#package-sources) page. Also, the control to the right of the project selector clears the console's contents: -![Package Manager Console settings and clear controls](media/PackageManagerConsoleControls2.png) + ![Package Manager Console settings and clear controls](media/PackageManagerConsoleControls2.png) -Finally, the rightmost button interrupts a long-running command. For example, running `Get-Package -ListAvailable -PageSize 500` lists the top 500 packages on the default source (such as nuget.org), which could take several minutes to run. +5. The rightmost button interrupts a long-running command. For example, running `Get-Package -ListAvailable -PageSize 500` lists the top 500 packages on the default source (such as nuget.org), which could take several minutes to run. -![Package Manager Console stop control](media/PackageManagerConsoleControls3.png) + ![Package Manager Console stop control](media/PackageManagerConsoleControls3.png) -## Finding a package +## Updating a package -To see the packages available from the selected source, use the [`Get-Package -ListAvailable`](../tools/ps-ref-get-package.md) command. For nuget.org, the list contains thousands of packages, so it's helpful to use the `-Filter` switch along with `-PageSize` to limit the results. In NuGet 3+, you can instead use the [`Find-Package`](../tools/ps-ref-find-package.md) command that is better suited to this operation. +```ps +# Checks if there are newer versions available for any installed packages +Get-Package -updates -Examples: +# Updates a specific package using its identifier, in this case jQuery +# Update-Package jQuery -```ps -# Show specific packages (all versions of NuGet) -Get-Package -ListAvailable -Filter elmah -Get-Package -ListAvailable -Filter Logging +# Update all packages in the project named MyProject (as it appears in Solution Explorer) +Update-Package -ProjectName MyProject -# List all versions of packages matching the filter "jquery" -Get-Package -ListAvailable -Filter jquery -AllVersions +# Update all packages in the solution +Update-Package +``` -# List the top 100 packages -Get-Package -ListAvailable -PageSize 100 +See [Get-Package](../tools/ps-ref-get-package.md) and [Update-Package](../tools/ps-ref-update-package.md) +## Finding a package -# Find-Package in NuGet 3+ is more efficient than Get-Package +```ps +# Find packages containing keywords Find-Package elmah -Find-Package Logging +Find-Package logging + +# List packages whose ID begins with Elmah +Find-Package Elmah -StartWith -# List packages with the keyword EntityFramework and version 6.1.1 -Find-Package EntityFramework -version 6.1.1 +# By default, Get-Package returns a list of 20 packages; use -First to show more +Find-Package logging -First 100 # List all versions of the package with the ID of "jquery" Find-Package jquery -AllVersions -ExactMatch ``` -## Installing a package +See [Find-Package](../tools/ps-ref-find-package.md). + +> [!Note] +> `Find-Package` is not available in Visual Studio 2013 and earlier; use [Get-Package](../tools/ps-ref-get-package.md) instead. + -Once you know the identifier of the package you want to install, use the [`Install-Package`](../tools/ps-ref-install-package.md) command. This command adds the package to the default project as specified in the console's project selector. To install the package into a different project, use the `-ProjectName` switch: +## Installing a package ```ps -# Add the Elmah package to the default project +# Add the Elmah package to the default project as specified in the console's project selector Install-Package Elmah # Add the Elmah package to a project named UtilitiesLib that is not the default Install-Package Elmah -ProjectName UtilitiesLib ``` +See [Install-Package](../tools/ps-ref-install-package.md). + Installing a package performs the following actions: - Displays applicable license terms in the console window with implied agreement. If you do not agree to the terms, you should uninstall the package immediately. - Adds a reference to the project in whatever reference format is in use. References subsequently appear in Solution Explorer and the applicable reference format file. Note, however, that with PackageReference, you need to save the project to see the changes in the project file directly. - Caches the package in the project depending on the reference format in use: + - PackageReference: package is cached within or `project.assets.json` - `packages.config`: creates a `packages` folder and copies package files into a subfolder within it. - `project.json`: package is cached within `project.lock.json` - - PackageReference: package is cached within or `project.assets.json` - Updates `app.config` and/or `web.config` if the package uses [source and config file transformations](../create-packages/source-and-config-file-transformations.md). - Installs any dependencies if not already present in the project. This might update package versions in the process, as described in [Dependency Resolution](../consume-packages/dependency-resolution.md). - Displays the package's readme file, if available, in a Visual Studio window. > [!Tip] -> One of the primary advantages of installing packages with the `Install-Package` command in the console is that adds a reference to the project just as of you used the Package Manager UI. In contrast, the `nuget install` CLI command only downloads the package and does not automatically add a reference. +> One of the primary advantages of installing packages with the `Install-Package` command in the console is that adds a reference to the project just as if you used the Package Manager UI. In contrast, the `nuget install` CLI command only downloads the package and does not automatically add a reference. ## Uninstalling a package -If you do not already know the name of the package you want to remove, use the [`Get-Package`](../tools/ps-ref-get-package.md) command with no arguments to see all of the packages currently installed in the default project. +```ps +# Uninstalls the Elmah package from the default project +Uninstall-Package Elmah -To uninstall a package, use [`Uninstall-Package`](../tools/ps-ref-uninstall-package.md) with the package ID, such as `Uninstall-Package jQuery`. +# Uninstalls the Elmah package and all its unused dependencies +Uninstall-Package Elmah -RemoveDependencies + +# Uninstalls the Elmah package even if another package depends on it +Uninstall-Package Elmah -Force +``` + +See [Uninstall-Package](../tools/ps-ref-uninstall-package.md). Use [Get-Package](../tools/ps-ref-get-package.md) to see all packages currently installed in the default project if you need to find an identifier. Uninstalling a package performs the following actions: - Removes references to the package from the project (and whatever reference format is in use). References no longer appear in Solution Explorer. (You might need to rebuild the project to see it removed from the **Bin** folder.) -- Removes the package from the project cache (`packages` folder, `project.lock.json`, or `project.assets.json`) +- Removes the package from the project cache (`project.assets.json`, the `packages` folder, or `project.lock.json`) - Reverses any changes made to `app.config` or `web.config` when the package was installed. - Removes previously-installed dependencies if no remaining packages use those dependencies. > [!Tip] > Like `Install-Package`, the `Uninstall-Package` command has the benefit of managing references in the project, unlike the `nuget uninstall` CLI command. -## Updating a package +## Availability of the console -The [`Get-Package -updates`](../tools/ps-ref-get-package.md) command checks if there are newer versions available for any installed packages. +In Visual Studio 2017, NuGet and the NuGet Package Manager are automatically installed when you select any .NET-related workloads; you can also install it individually by checking the **Individual components > Code tools > NuGet package manager** option in the Visual Studio 2017 installer. + +Also, if you're missing the NuGet Package Manager in Visual Studio 2015 and earlier, check **Tools > Extensions and Updates...** and search for the NuGet Package Manager extension. If you're unable to use the extensions installer in Visual Studio, you can download the extension directly from [https://dist.nuget.org/index.html](https://dist.nuget.org/index.html). -To update a package, use [`Update-Package`](../tools/ps-ref-update-package.md) with the package ID, such as `Update-Package jQuery`. +The Package Manager Console it is not presently available with Visual Studio for Mac. The equivalent commands, however, are available through the [NuGet CLI](nuget-exe-CLI-reference.md). Visual Studio for Mac does have a UI managing NuGet packages. See [Including a NuGet package in your project](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough). -To update all packages in the project, use `Update-Package -ProjectName `; to update all packages in the solution, use `Update-Package` with no arguments. ## Extending the Package Manager Console diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index 08fcafa1b..39a286624 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -18,8 +18,8 @@ f1_keywords: # optional metadata -description: Instructions for using the NuGet Package Manager UI in Visual Studio for working with packages. -keywords: NuGet package manager UI, NuGet in Visual Studio, managing NuGet packages, NuGet user interface +description: Instructions for using the NuGet Package Manager UI in Visual Studio for working with NuGet packages. +keywords: NuGet UI, NuGet package manager UI, NuGet in Visual Studio, managing NuGet packages, NuGet user interface, package manager in Visual Studio #ROBOTS: #audience: #ms.devlang: diff --git a/docs/Tools/PowerShell-Reference.md b/docs/Tools/PowerShell-Reference.md index dba35353d..982fed13b 100644 --- a/docs/Tools/PowerShell-Reference.md +++ b/docs/Tools/PowerShell-Reference.md @@ -5,10 +5,9 @@ title: NuGet PowerShell Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/25/2017 +ms.date: 10/2/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: cd08b869-44c6-480e-90f7-494a6d08e6d0 @@ -16,15 +15,9 @@ ms.assetid: cd08b869-44c6-480e-90f7-494a6d08e6d0 description: The complete reference to PowerShell commands available in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann - unnir -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- @@ -40,16 +33,19 @@ The Package Manager Console provides a PowerShell interface within Visual Studio | Command | Description | NuGet Version | | --- | --- | --- | -| [Add-BindingRedirect](ps-ref-add-bindingredirect.md) | Examines all assemblies within the output path for a project and adds binding redirects to the `app.config` or `web.config` where necessary. | All | +| **Common Commands** | +| [Install-Package](ps-ref-install-package.md) | Installs a package and its dependencies into the project. | All | +| [Update-Package](ps-ref-update-package.md) | Updates a package and its dependencies, or all packages in a project. | All | | [Find-Package](ps-ref-find-package.md) | Searches a package source using a package ID or keywords. | 3.0+ | | [Get-Package](ps-ref-get-package.md) | Retrieves the list of packages installed in the local repository, or lists packages available from a package source. | All | +| | | +| **Secondary Commands** | +| [Add-BindingRedirect](ps-ref-add-bindingredirect.md) | Examines all assemblies within the output path for a project and adds binding redirects to the `app.config` or `web.config` where necessary. | All | | [Get-Project](ps-ref-get-project.md) | Displays information about the default or specified project. | 3.0+ | -| [Install-Package](ps-ref-install-package.md) | Installs a package and its dependencies into the project. | All | | [Open-PackagePage](ps-ref-open-packagepage.md) | Launches the default browser with the project, license, or report abuse URL for the specified package. | Deprecated in 3.0+ | | [Register-TabExpansion](ps-ref-register-tabexpansion.md) | Registers a tab expansion for the parameters of a command, allowing you to create customized expansions for commonly-used parameter values. | All | | [Sync-Package](ps-ref-sync-package.md) | Get the version of installed package from specified project and syncs the version to the rest of projects in the solution. | 3.0+ | | [Uninstall-Package](ps-ref-uninstall-package.md) | Removes a package from a project, optionally removing its dependencies. | All | -| [Update-Package](ps-ref-update-package.md) | Updates a package and its dependencies, or all packages in a project. | All | For complete, detailed help on any of these commands within the console, just run the following with the command name in question: @@ -57,7 +53,7 @@ For complete, detailed help on any of these commands within the console, just ru Get-Help -full ``` -Note that all Package Manager Console commands support the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): +All Package Manager Console commands support the following [common PowerShell parameters](http://go.microsoft.com/fwlink/?LinkID=113216): - Debug - ErrorAction diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 996cd95e6..45e90caba 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -5,10 +5,9 @@ title: NuGet Command-Line Interface (CLI) Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/17/2017 +ms.date: 10/2/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: d777c424-0cf3-4bc0-8abd-7ca16c22192b @@ -16,30 +15,25 @@ ms.assetid: d777c424-0cf3-4bc0-8abd-7ca16c22192b description: The complete command-line reference for nuget.exe and information on the use of environment variables. keywords: nuget.exe reference, nuget.exe command-line interface, nuget.exe CLI, NuGet command. -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann - unnir -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- # NuGet CLI reference -The NuGet Command Line Interface (CLI) provides the full extent of NuGet functionality to install, create, publish, and manage packages. Refer to the [Install Guide](../guides/install-nuget.md) for installation instructions, which amounts to downloading the `nuget.exe` directly to a folder of your choice. On Windows, you typically add that folder to your PATH environment variable so you can use it from anywhere. +The NuGet Command Line Interface (CLI), `nuget.exe`, provides the full extent of NuGet functionality to install, create, publish, and manage packages without making any changes to project files. -Available commands are listed below, and each indicate whether they're applicable to package creation, package consumption, and/or publishing a package to a host. Also see the section on [Environment variables](#environment-variables) for how `nuget.exe` uses such variables. +To install `nuget.exe`: -> [!Note] -> Command option names are case-insensitive. Options that are deprecated are not included in this reference, such as `NoPrompt` (replaced by `NonInteractive`) and `Verbose` (replaced by `Verbosity`). +[!INCLUDE[install-cli](../includes/install-cli.md)] > [!Important] > On Mac OSX and Linux, some NuGet capabilities are available through the [dotnet CLI](dotnet-Commands.md) and through the [NuGet CLI running on Mono](../guides/install-nuget.md#mac-osx-and-linux). +Available commands and applicability to package creation, package consumption, and/or publishing a package to a host: + | Command | Applicable Roles | NuGet Version | Description | | --- | --- | --- | --- | | [add](#add) | Publishing | 3.3+ | Adds a package to a non-HTTP package source using hierarchical layout. For HTTP sources, use *push*. | @@ -47,19 +41,21 @@ Available commands are listed below, and each indicate whether they're applicabl | [delete](#delete) | Publishing | All | Removes or unlists a package from a package source. | | [help or ?](#help) | All | All | Displays help information or help for a command. | | [init](#init) | Creation | 3.3+ | Adds packages from a folder to a package source using hierarchical layout. | -| [install](#install) | Consumption | All | Installs a package into the current project but does not modify the project or `packages.config`. | +| [install](#install) | Consumption | All | Installs a package into the current project but does not modify projects or reference files. | | [list](#list) | Consumption, perhaps Publishing | All | Displays packages from a given source. | | [locals](#locals) | Consumption | 3.3+ | Clears or lists packages in various caches or the global packages folder, or identifies those folders. | | [mirror](#mirror) | Publishing | Deprecated in 3.2+ | Mirrors a package and its dependencies from a source to a target repository. | | [pack](#pack) | Creation | 2.7+ | Creates a NuGet package from a `.nuspec` or project file. On Mac OSX with Mono, creating a package from a project file is not supported. | | [push](#push) | Publishing | All | Publishes a package to a package source. | -| [restore](#restore) | Consumption | 2.7+ | Restores all packages referenced by `packages.config`, `project.json`, or project files (using package references). Note: restoring packages from package references in a project file is not supported with the CLI on Mono. | +| [restore](#restore) | Consumption | 2.7+ | Restores all packages referenced by the package reference format in use. Note: restoring packages using the PackageReference format is not supported with the CLI on Mono. | | [setapikey](#setapikey) | Consumption, Publishing | All | Saves an API key for a given package source when that package source requires a key for access. | | [sources](#sources) | Consumption, Publishing | All | Manages package sources in configuration files. | | [spec](#spec) | Creation | All | Generates a `.nuspec` file, using tokens if generating the file from a Visual Studio project. | | [update](#update) | Consumption | All | Updates a project's packages to the latest available versions. Note: this command is not supported with the CLI running on Mono. | -For convenience, the following table lists the NuGet commands that are applicable to each specific roles. Developers concerned only with consuming packages, for example, need only understand that subset of NuGet commands. +Different commands make use of various [Environment variables](#environment-variables). + +NuGet CLI commands by applicable roles: | Role | Commands | | --- | --- | @@ -67,6 +63,11 @@ For convenience, the following table lists the NuGet commands that are applicabl | Creation | `config`, `help`, `init`, `pack`, `spec` | | Publishing | `add`, `config`, `delete`, `help`, `list`, `push`, `setapikey`, `sources` | +Developers concerned only with consuming packages, for example, need only understand that subset of NuGet commands. + +> [!Note] +> Command option names are case-insensitive. Options that are deprecated are not included in this reference, such as `NoPrompt` (replaced by `NonInteractive`) and `Verbose` (replaced by `Verbosity`). + ## add diff --git a/docs/Tools/ps-ref-find-package.md b/docs/Tools/ps-ref-find-package.md index 85d437581..18ed13019 100644 --- a/docs/Tools/ps-ref-find-package.md +++ b/docs/Tools/ps-ref-find-package.md @@ -63,15 +63,16 @@ None of these parameters accept pipeline input or wildcard characters. ## Examples ```ps -# List available packages with the keyword Elmah -Find-Package Elmah +# Find packages containing keywords +Find-Package elmah +Find-Package logging # List packages whose ID begins with Elmah Find-Package Elmah -StartWith -# List all versions of the jquery package -Find-Package jquery -AllVersions -ExactMatch +# By default, Get-Package returns a list of 20 packages; use -First to show more +Find-Package logging -First 100 -# List packages with the keyword EntityFramework and version 6.1.1 -Find-Package EntityFramework -version 6.1.1 +# List all versions of the package with the ID of "jquery" +Find-Package jquery -AllVersions -ExactMatch ``` diff --git a/docs/Tools/ps-ref-get-package.md b/docs/Tools/ps-ref-get-package.md index 28eec0c97..9a4107840 100644 --- a/docs/Tools/ps-ref-get-package.md +++ b/docs/Tools/ps-ref-get-package.md @@ -81,6 +81,9 @@ Get-Package -ListAvailable -PageSize 30 # Lists packages with the Ninject keyword in the current source, up to 50 Get-Package -ListAvailable -Filter Ninject +# List all versions of packages matching the filter "jquery" +Get-Package -ListAvailable -Filter jquery -AllVersions + # Lists packages installed in the solution that have available updates Get-Package -Updates diff --git a/docs/includes/install-cli.md b/docs/includes/install-cli.md new file mode 100644 index 000000000..5c18a7d35 --- /dev/null +++ b/docs/includes/install-cli.md @@ -0,0 +1,3 @@ +1. Visit [nuget.org/downloads](https://nuget.org/downloads) and select the version of NuGet you want. +1. Each download is the `nuget.exe` file directly. Instruct your browser to save the file to a folder of your choice. The file is *not* an installer; running it from the browser won't show anything. +1. Add the folder where you placed `nuget.exe` to your PATH environment variable to use the CLI tool from anywhere. \ No newline at end of file From bb3daf837cf7884fef3c02d0812e727b57a400ae Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 2 Oct 2017 16:16:53 -0700 Subject: [PATCH 0198/2943] Updating metadata --- docs/Guides/Create-NET-Standard-Packages-VS2015.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Guides/Create-NET-Standard-Packages-VS2015.md b/docs/Guides/Create-NET-Standard-Packages-VS2015.md index 4ddf9b4d5..f8ae4108e 100644 --- a/docs/Guides/Create-NET-Standard-Packages-VS2015.md +++ b/docs/Guides/Create-NET-Standard-Packages-VS2015.md @@ -14,8 +14,8 @@ ms.assetid: 29b3bceb-0f35-4cdd-bbc3-a04eb823164c # optional metadata -description: An end-to-end walkthrough of creating .NET standard NuGet packages using NuGet 3.x and Visual Studio 2015. -keywords: create a package, .NET Standard packages, .NET standard mapping table +description: An end-to-end walkthrough of creating .NET Standard NuGet packages using NuGet 3.x and Visual Studio 2015. +keywords: create a package, .NET Standard packages, .NET Standard mapping table #ROBOTS: #audience: #ms.devlang: @@ -339,4 +339,4 @@ To do this, create your `readme.txt` file, place it in the project root folder, - [Include MSBuild props and targets in a package](../create-packages/creating-a-package.md#including-msbuild-props-and-targets-in-a-package) - [Creating Localized Packages](../create-packages/creating-localized-packages.md) - [.NET Standard Library documentation](https://docs.microsoft.com/dotnet/articles/standard/library) -- [Porting to .NET Core from .NET Framework](https://docs.microsoft.com/dotnet/articles/core/porting/index) \ No newline at end of file +- [Porting to .NET Core from .NET Framework](https://docs.microsoft.com/dotnet/articles/core/porting/index) From 1ed61ba7214b8ba59344205109b1d23f6a27b41e Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 2 Oct 2017 16:23:14 -0700 Subject: [PATCH 0199/2943] Edits for .NET Standard 2.0 default in VS 2017.3 --- docs/Guides/Create-NET-Standard-Packages-VS2017.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/Guides/Create-NET-Standard-Packages-VS2017.md b/docs/Guides/Create-NET-Standard-Packages-VS2017.md index 33066b99f..09d927960 100644 --- a/docs/Guides/Create-NET-Standard-Packages-VS2017.md +++ b/docs/Guides/Create-NET-Standard-Packages-VS2017.md @@ -1,7 +1,7 @@ --- # required metadata -title: Create .NET Standard NuGet Packages with Visual Studio 2017 | Microsoft Docs +title: Create .NET Standard 2.0 NuGet Packages with Visual Studio 2017 | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen @@ -14,7 +14,7 @@ ms.assetid: 2c1de334-fdc9-4e1e-8ef6-a90b3e77ff0f # optional metadata -description: An end-to-end walkthrough of creating .NET standard NuGet packages using NuGet 4.x and Visual Studio 2017. +description: An end-to-end walkthrough of creating .NET Standard 2.0 NuGet packages using NuGet 4.x and Visual Studio 2017. keywords: create a package, .NET Standard packages, .NET Core #ROBOTS: #audience: @@ -28,13 +28,13 @@ ms.reviewer: --- -# Create .NET Standard packages with Visual Studio 2017 +# Create .NET Standard 2.0 packages with Visual Studio 2017 -*Applies to NuGet 4.x+ and MSBuild 15.3+ as provided with Visual Studio 2017 Update 3. See [Create .NET Standard Packages with Visual Studio 2015](../guides/create-net-standard-packages-vs2015.md) for working with NuGet 3.x+* +*Applies to NuGet 4.x+ and MSBuild 15.3+ as provided with Visual Studio 2017 Update 3. For earlier versions of Visual Studio 2017, these instructions apply to .NET Standard 1.4 to 1.6 by changing the \ property. Also see [Create .NET Standard Packages with Visual Studio 2015](../guides/create-net-standard-packages-vs2015.md) for working with NuGet 3.x+.* The [.NET Standard Library](https://docs.microsoft.com/dotnet/articles/standard/library) is a formal specification of .NET APIs intended to be available on all .NET runtimes, thus establishing greater uniformity in the .NET ecosystem. The .NET Standard Library defines a uniform set of BCL (Base Class Library) APIs for all .NET platforms to implement, independent of workload. It enables developers to produce PCLs that are usable across all .NET runtimes, and reduces if not eliminates platform-specific conditional compilation directives in shared code. -This guide will walk you through creating a nuget package targeting .NET Standard Library 1.4 with Visual Studio 2017 Update 3 and NuGet 4.0. +This guide will walk you through creating a nuget package targeting .NET Standard Library 2.0 with Visual Studio 2017 Update 3 and NuGet 4.0. 1. [Pre-requisites](#pre-requisites) 1. [Create the class library project](#create-the-netstandard-class-library-project) @@ -74,7 +74,7 @@ The require workload appears as follows in the Visual Studio installer: } ``` -1. Build the project (with the Release configuration) and check that DLL and XML files are produced within the `bin\Release\netstandard1.4` folder. +1. Build the project (with the Release configuration) and check that DLL and XML files are produced within the `bin\Release\netstandard2.0` folder. ## Edit metadata in the .csproj file @@ -84,7 +84,7 @@ With NuGet 4.0 and .NET Core projects, package metadata is contained directly in ```xml - netstandard1.4 + netstandard2.0 AppLogger.YOUR_NAME 1.0.0 YOUR_NAME From 1e965be189e895f2e2f879c2da7f7df7bd9a667c Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 2 Oct 2017 16:35:52 -0700 Subject: [PATCH 0200/2943] Adjustments after staging review --- docs/Consume-Packages/Package-Restore.md | 2 +- docs/Guides/Install-NuGet.md | 12 +++++++----- docs/Quickstart/Use-a-Package.md | 1 - docs/Tools/Package-Manager-Console.md | 5 +---- docs/Tools/PowerShell-Reference.md | 8 ++++---- 5 files changed, 13 insertions(+), 15 deletions(-) diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/Consume-Packages/Package-Restore.md index 2632e851f..79fdd453b 100644 --- a/docs/Consume-Packages/Package-Restore.md +++ b/docs/Consume-Packages/Package-Restore.md @@ -43,7 +43,7 @@ For additional details on package restore on build servers, see [Package restore > [!Note] > Projects configured for package restore also work with xbuild on Mono. -# Quick guide to package restore +## Quick guide to package restore Use any of these methods to quickly restore packages: diff --git a/docs/Guides/Install-NuGet.md b/docs/Guides/Install-NuGet.md index 4e87c0978..1e7bce692 100644 --- a/docs/Guides/Install-NuGet.md +++ b/docs/Guides/Install-NuGet.md @@ -11,7 +11,8 @@ ms.prod: nuget ms.technology: null ms.assetid: 683b8b34-a6f4-4d56-b9cd-2483bfbad1ad -# optional metadata +# optional metadata + description: Guidance on installing the NuGet client tools: the command-line interface (CLI) and the NuGet Package Manager for Visual Studio. keywords: nuget.exe CLI, nuget client tools, NuGet package manager, NuGet package manager console, NuGet for Visual Studio, NuGet beta channel ms.reviewer: @@ -20,9 +21,10 @@ ms.reviewer: --- -# Installing NuGet Tools +# Installing NuGet client tools -**Looking to install a package? See [Quickstart - Use a package](../Quickstart/Use-a-Package.md).** +> [!Tip] +> **Looking to install a package? See [Quickstart - Use a package](../Quickstart/Use-a-Package.md).** There are two primary tools available to help you build, publish and consume NuGet packages: @@ -64,8 +66,8 @@ The NuGet command-line interface provides access to all NuGet capabilities, and [!INCLUDE[install-cli](../includes/install-cli.md)] - > [!Note] - > With NuGet 1.4+, you can use `nuget update -self` to update your existing nuget.exe to the latest version. +> [!Note] +> With NuGet 1.4+, you can use `nuget update -self` to update your existing nuget.exe to the latest version. **Other methods:** diff --git a/docs/Quickstart/Use-a-Package.md b/docs/Quickstart/Use-a-Package.md index 61b52fb6d..c6ca3fd7d 100644 --- a/docs/Quickstart/Use-a-Package.md +++ b/docs/Quickstart/Use-a-Package.md @@ -21,7 +21,6 @@ ms.reviewer: --- - # Install and use a package Installing a package happens in three ways: diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index 0c5e8ea43..033553d11 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -95,10 +95,7 @@ Find-Package logging -First 100 Find-Package jquery -AllVersions -ExactMatch ``` -See [Find-Package](../tools/ps-ref-find-package.md). - -> [!Note] -> `Find-Package` is not available in Visual Studio 2013 and earlier; use [Get-Package](../tools/ps-ref-get-package.md) instead. +See [Find-Package](../tools/ps-ref-find-package.md). In Visual Studio 2013 and earlier, use [Get-Package](../tools/ps-ref-get-package.md) instead. ## Installing a package diff --git a/docs/Tools/PowerShell-Reference.md b/docs/Tools/PowerShell-Reference.md index 982fed13b..023c09db5 100644 --- a/docs/Tools/PowerShell-Reference.md +++ b/docs/Tools/PowerShell-Reference.md @@ -31,15 +31,15 @@ The Package Manager Console provides a PowerShell interface within Visual Studio > [!Important] > The commands listed here are specific to the Package Manager Console in Visual Studio, and differ from the [Package Management module commands](https://msdn.microsoft.com/powershell/reference/6/packagemanagement/packagemanagement) that are available in a general PowerShell environment. Specifically, each environment has commands that are not available in the other, and commands with the same name may also differ in their specific arguments. When using the Package Management Console in Visual Studio, the commands and arguments documented in this present topic apply. -| Command | Description | NuGet Version | +| Common Commands | Description | NuGet Version | | --- | --- | --- | -| **Common Commands** | | [Install-Package](ps-ref-install-package.md) | Installs a package and its dependencies into the project. | All | | [Update-Package](ps-ref-update-package.md) | Updates a package and its dependencies, or all packages in a project. | All | | [Find-Package](ps-ref-find-package.md) | Searches a package source using a package ID or keywords. | 3.0+ | | [Get-Package](ps-ref-get-package.md) | Retrieves the list of packages installed in the local repository, or lists packages available from a package source. | All | -| | | -| **Secondary Commands** | + +| Secondary Commands | Description | NuGet Version | +| --- | --- | --- | | [Add-BindingRedirect](ps-ref-add-bindingredirect.md) | Examines all assemblies within the output path for a project and adds binding redirects to the `app.config` or `web.config` where necessary. | All | | [Get-Project](ps-ref-get-project.md) | Displays information about the default or specified project. | 3.0+ | | [Open-PackagePage](ps-ref-open-packagepage.md) | Launches the default browser with the project, license, or report abuse URL for the specified package. | Deprecated in 3.0+ | From 9888d91a0d6304fae3830ca1631a90be603aacd2 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 3 Oct 2017 09:07:37 -0700 Subject: [PATCH 0201/2943] Correcting metadata --- docs/Guides/Install-NuGet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Guides/Install-NuGet.md b/docs/Guides/Install-NuGet.md index 1e7bce692..ad1bcb398 100644 --- a/docs/Guides/Install-NuGet.md +++ b/docs/Guides/Install-NuGet.md @@ -13,7 +13,7 @@ ms.assetid: 683b8b34-a6f4-4d56-b9cd-2483bfbad1ad # optional metadata -description: Guidance on installing the NuGet client tools: the command-line interface (CLI) and the NuGet Package Manager for Visual Studio. +description: Guidance on installing the NuGet client tools, the command-line interface (CLI), and the NuGet Package Manager for Visual Studio. keywords: nuget.exe CLI, nuget client tools, NuGet package manager, NuGet package manager console, NuGet for Visual Studio, NuGet beta channel ms.reviewer: - karann From 015fc78a33753f02f52c3b84d6d84dc9e3f4b16d Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Tue, 3 Oct 2017 11:07:18 -0700 Subject: [PATCH 0202/2943] Documenting NuGet.org Protocols @kraigb, can you review for the text correctness and grammar? Also I am not sure how to include this in TOC. Can that change be attached to this PR? Please review but do NOT merge. @anangaur will merge it. --- docs/API/NuGet-Protocols.md | 96 +++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 docs/API/NuGet-Protocols.md diff --git a/docs/API/NuGet-Protocols.md b/docs/API/NuGet-Protocols.md new file mode 100644 index 000000000..4c3e8cf23 --- /dev/null +++ b/docs/API/NuGet-Protocols.md @@ -0,0 +1,96 @@ +--- +# required metadata  + +title: NuGet Protocols | Microsoft Docs +author: anangaur +ms.author: anangaur +manager: unnir +ms.date: 10/3/2017 +ms.topic: article +ms.prod: nuget +#ms.service: +ms.technology: null + +ms.assetid: 91c3d1f7-d8fb-4967-9d0f-99a0248d89a5 + +# optional metadata + +description: This documents the evolving NuGet.org protocols to interact with NuGet.org by the NuGet clients. +#ROBOTS: +#audience: +#ms.devlang: +ms.reviewer: +- kraigb +- karann +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: +--- + +In order to interact with NuGet.org, clients need to follow certain protocols. Since these protocols keep evolving, it is required for the clients to identify the protocol version they use when they call NuGet.org APIs. This allows NuGet.org to introduce changes in a non-breaking way for the old clients. + +This document lists out various protocols as and when they come to existence. + +## NuGet protocol version 4.1.0 + +### Protocol summary +This protocol speicifes usage of temporary verify-scope keys to interact with services other than NuGet.org, to validate a package against a NuGet.org account. + +This ensures that the user created API keys are used only used with NuGet.org and other verification/validation from a third-party service is handled through a one-time use verify-scope keys. These verify-scope keys can be used to validate that the package belongs to a particular user (account) on NuGet.org. + +### Client requirement + +If a client interacts with other services and needs to validate whether a package belongs to a particular user (account), it should use this protocol and use the verify scope keys and not the API keys from NuGet.org. + +Clients are required to pass the following header when they make API calls to **push** packages to NuGet.org: + +``` +X-NuGet-Protocol-Version: 4.1.0 +``` + +### Protocol usage details + +#### API to request a verify scope key +This API is used to get a verify-scope key for a NuGet.org author to validate a package owned by him/her. + +``` +POST api/v2/package/create-verification-key/{id}/{version} +``` +Request parameters + +| Name | In | Type | Notes| +|:------------- |:-------------|:----|:-----| +| id | URL | string | Required. This is the package id for which verify scope key is requested for| +| version | URL | string | Optional. Package version| +| X-NuGet-ApiKey | Header | string | Required. Eg. X-NuGet-ApiKey={USER_API_KEY} | + +Response +``` +Response: +{ + "Key": "{Verify scope key from NuGet.org}", + "Expires": "{Date}" +} + +``` + +#### API to verify the verify scope key + +This API is used to validate a verify-scope key for package owned by the NuGet.org author + +``` +GET api/v2/package/verifykey/{id}/{version} +``` + +Request parameters + +| Name | In | Type | Notes| +|:------------- |:-------------|:----|:-----| +| id | URL | string | Required: This is the package id for which verify scope key is requested for| +| version | URL | string | Optional: Package version| +| X-NuGet-ApiKey | Header | string | Required. Eg. X-NuGet-ApiKey={VERIFY_SCOPE_KEY} | + +!Note +> This verify scope API key expires in a day's time or on first use, whichever occurs first. + + From 83d5ed05e0e3b576d8c403d15f726b6f633c0c5d Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 3 Oct 2017 13:26:13 -0700 Subject: [PATCH 0203/2943] Edits and adding to TOC --- docs/API/NuGet-Protocols.md | 57 ++++++++++++++++--------------------- docs/TOC.md | 1 + 2 files changed, 26 insertions(+), 32 deletions(-) diff --git a/docs/API/NuGet-Protocols.md b/docs/API/NuGet-Protocols.md index 4c3e8cf23..dfda6bfa1 100644 --- a/docs/API/NuGet-Protocols.md +++ b/docs/API/NuGet-Protocols.md @@ -8,41 +8,34 @@ manager: unnir ms.date: 10/3/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null - -ms.assetid: 91c3d1f7-d8fb-4967-9d0f-99a0248d89a5 +ms.assetid: ba1d9742-9f1c-42ff-8c30-8e953e23c501 # optional metadata -description: This documents the evolving NuGet.org protocols to interact with NuGet.org by the NuGet clients. -#ROBOTS: -#audience: -#ms.devlang: +description: The evolving nuget.org protocols to interact with nuget.org by NuGet clients. ms.reviewer: - kraigb - karann -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: + --- +# NuGet Protocols -In order to interact with NuGet.org, clients need to follow certain protocols. Since these protocols keep evolving, it is required for the clients to identify the protocol version they use when they call NuGet.org APIs. This allows NuGet.org to introduce changes in a non-breaking way for the old clients. +In order to interact with nuget.org, clients must follow certain protocols. Because these protocols keep evolving, clients must identify the protocol version they use when calling nuget.org APIs. This allows nuget.org to introduce changes in a non-breaking way for the old clients. -This document lists out various protocols as and when they come to existence. +This topic lists various protocols as and when they come to existence. ## NuGet protocol version 4.1.0 -### Protocol summary -This protocol speicifes usage of temporary verify-scope keys to interact with services other than NuGet.org, to validate a package against a NuGet.org account. +This protocol speicifes usage of temporary verify-scope keys to interact with services other than nuget.org, to validate a package against a nuget.org account. -This ensures that the user created API keys are used only used with NuGet.org and other verification/validation from a third-party service is handled through a one-time use verify-scope keys. These verify-scope keys can be used to validate that the package belongs to a particular user (account) on NuGet.org. +Validation ensures that the user-created API keys are used only with nuget.org, and that other verification or validation from a third-party service is handled through a one-time use verify-scope keys. These verify-scope keys can be used to validate that the package belongs to a particular user (account) on nuget.org. ### Client requirement -If a client interacts with other services and needs to validate whether a package belongs to a particular user (account), it should use this protocol and use the verify scope keys and not the API keys from NuGet.org. +If a client interacts with other services and needs to validate whether a package belongs to a particular user (account), it should use this protocol and use the verify scope keys and not the API keys from nuget.org. -Clients are required to pass the following header when they make API calls to **push** packages to NuGet.org: +Clients are required to pass the following header when they make API calls to **push** packages to nuget.org: ``` X-NuGet-Protocol-Version: 4.1.0 @@ -51,24 +44,26 @@ X-NuGet-Protocol-Version: 4.1.0 ### Protocol usage details #### API to request a verify scope key -This API is used to get a verify-scope key for a NuGet.org author to validate a package owned by him/her. +This API is used to get a verify-scope key for a nuget.org author to validate a package owned by him/her. ``` POST api/v2/package/create-verification-key/{id}/{version} ``` -Request parameters + +Request parameters: | Name | In | Type | Notes| |:------------- |:-------------|:----|:-----| -| id | URL | string | Required. This is the package id for which verify scope key is requested for| -| version | URL | string | Optional. Package version| -| X-NuGet-ApiKey | Header | string | Required. Eg. X-NuGet-ApiKey={USER_API_KEY} | +| id | URL | string | Required: the package identidier for which theverify scope key is requested. | +| version | URL | string | Optional: package version| +| X-NuGet-ApiKey | Header | string | Required: for example, `X-NuGet-ApiKey={USER_API_KEY}` | + +Response: -Response ``` Response: { - "Key": "{Verify scope key from NuGet.org}", + "Key": "{Verify scope key from nuget.org}", "Expires": "{Date}" } @@ -76,21 +71,19 @@ Response: #### API to verify the verify scope key -This API is used to validate a verify-scope key for package owned by the NuGet.org author +This API is used to validate a verify-scope key for package owned by the nuget.org author ``` GET api/v2/package/verifykey/{id}/{version} ``` -Request parameters +Request parameters: | Name | In | Type | Notes| |:------------- |:-------------|:----|:-----| -| id | URL | string | Required: This is the package id for which verify scope key is requested for| -| version | URL | string | Optional: Package version| -| X-NuGet-ApiKey | Header | string | Required. Eg. X-NuGet-ApiKey={VERIFY_SCOPE_KEY} | +| id | URL | string | Required: the package identifier for which the verify scope key is requested. | +| version | URL | string | Optional: package version | +| X-NuGet-ApiKey | Header | string | Required: for example, `X-NuGet-ApiKey={VERIFY_SCOPE_KEY}` | -!Note +> [!Note] > This verify scope API key expires in a day's time or on first use, whichever occurs first. - - diff --git a/docs/TOC.md b/docs/TOC.md index 135a4e51b..e6be01380 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -64,6 +64,7 @@ ## [NuGet API V3](API/NuGet-API-V3.md) ## [NuGet Credential Providers for Visual Studio](API/Nuget-Credential-Providers-for-Visual-Studio.md) ## [nuget.exe Credential Providers](API/nuget-exe-Credential-Providers.md) +## [NuGet Protocols](API/nuget-protocols.md) # Visual Studio Extensibility ## [NuGet API in Visual Studio](Visual-Studio-Extensibility/NuGet-API-in-Visual-Studio.md) ## [Project System Support](Visual-Studio-Extensibility/Project-System-Support.md) From de7b318cc8184445fdbb1081f3d208d095311d8e Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 3 Oct 2017 14:17:24 -0700 Subject: [PATCH 0204/2943] Update create quickstart --- .../Create-and-Publish-a-Package.md | 82 +++++++----------- docs/Quickstart/media/QS_Create-02-APIKey.png | Bin 3036 -> 14177 bytes .../media/QS_Create-03-NotIndexed.png | Bin 21322 -> 4159 bytes 3 files changed, 33 insertions(+), 49 deletions(-) diff --git a/docs/Quickstart/Create-and-Publish-a-Package.md b/docs/Quickstart/Create-and-Publish-a-Package.md index 52bfada50..8a4f1e1c9 100644 --- a/docs/Quickstart/Create-and-Publish-a-Package.md +++ b/docs/Quickstart/Create-and-Publish-a-Package.md @@ -5,10 +5,9 @@ title: Introductory Guide to Creating and Publishing a NuGet Package | Microsoft author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 10/3/2017 ms.topic: get-started-article ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 91781ed6-da5c-49f0-b973-16dd8ad84229 @@ -16,15 +15,9 @@ ms.assetid: 91781ed6-da5c-49f0-b973-16dd8ad84229 description: A walkthrough tutorial on creating and publishing a NuGet package using both the nuget.exe command-line interface and Visual Studio. keywords: NuGet package creation, NuGet package publishing, NuGet tutorial -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann - unnir -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- @@ -32,43 +25,34 @@ ms.reviewer: It's a simple process to create a NuGet package from a .NET Class Library and publish it to nuget.org. The following steps walk you through the process using the NuGet command-line interface (CLI) and Visual Studio: -- [Install pre-requisites](#install-pre-requisites) -- [Create a class library project](#create-a-class-library-project) +- [Pre-requisites](#install-pre-requisites) - [Create the .nuspec package manifest file](#create-the-nuspec-package-manifest-file) -- [Create the package](#create-the-package) +- [Run the pack command](#run-the-pack-command) - [Publish the package](#publish-the-package) -## Install pre-requisites +## Pre-requisites -1. Visual Studio 2015. Install the Community edition for free from [visualstudio.com](https://www.visualstudio.com/); you can use the Professional and Enterprise editions as well. -1. NuGet CLI. Download the latest version of nuget.exe from [nuget.org/downloads](https://nuget.org/downloads), saving it to a location of your choice. Then add that location to your PATH environment variable if it isn't already. +1. Install any edition of Visual Studio 2017 from [visualstudio.com](https://www.visualstudio.com/). +1. Install the NuGet CLI tool, `nuget.exe`, by downloading the latest version of `nuget.exe` from [nuget.org/downloads](https://nuget.org/downloads), and saving the `.exe` to a location in your PATH. Note that the download *is* the tool itself, not an installer. +1. Create a suitable .NET Class Library project for the code you want to package. If you don't already have a project, you can create a simple one as follows: + 1. In Visual Studio, choose **File > New > Project**, expand the **Visual C# > Windows** node, select the "Class Library" template, name the project AppLogger, and click **OK**. + 1. Right-click on the resulting project file and select **Build** to make sure the project was created properly. The DLL is found within the Debug folder (or Release if you build that configuration instead). -> [!Note] -> `nuget.exe` is the CLI tool itself, not an installer, so be sure to save the downloaded file from your browser instead of running it. - - -## Create a class library project - -In Visual Studio, choose **File > New > Project**, expand the **Visual C# > Windows** node, select the "Class Library" template, name the project AppLogger, and click OK. - -![Create new class library project](media/QS_Create-01-NewProject.png) - -Right-click on the resulting project file and select **Build** to make sure the project was created properly. - -Within a real NuGet package, of course, you'll implement many useful features upon which others can build applications. For this walkthrough, however, you won't write any additional code because a class library from the template is sufficient to create a package. + Within a real NuGet package, of course, you'll implement many useful features upon which others can build applications. For this walkthrough, however, you won't write any additional code because a class library from the template is sufficient to create a package. ## Create the .nuspec package manifest file -Every NuGet package needs a manifest–a `.nuspec` file–to describe its contents and its dependencies. The NuGet CLI creates this file for you, which you then customize. +Every NuGet package needs a manifest—a `.nuspec` file—to describe its contents and its dependencies. The `nuget spec` command creates this file for you, which you then customize. In this example you create the `.nuspec` from a project file; you can also create the manifest through other means as described on [Create a Package](../create-packages/creating-a-package.md). + +1. Open a command prompt and navigate to the folder containing your project file (`.csproj`). -1. Open a command prompt and navigate to the folder containing the AppLogger project file (`.csproj`). -1. Run the NuGet CLI `spec` command to generate `AppLogg.nuspec`: +1. Run the NuGet CLI `spec` command to generate the manifest, which is named after your project, such as `AppLogger.nuspec`: ``` nuget spec ``` -1. Open the file in your favorite text editor. It will look something like the code below, where tokens in the form *$``$* will be replaced during the packaging process with values from the project's Properties/AssemblyInfo.cs file. For more details on tokens, see [Creating a .nuspec file](../create-packages/creating-a-package.md#creating-the-nuspec-file). +1. Open the file in a text editor. The manifest looks something like the code below, where tokens in the form *$``$* are be replaced during the packaging process with values from the project's Properties/AssemblyInfo.cs file. For more details on tokens, see [Creating a .nuspec file](../create-packages/creating-a-package.md#creating-the-nuspec-file). ```xml @@ -91,7 +75,7 @@ Every NuGet package needs a manifest–a `.nuspec` file–to describe its conten ``` -1. Select a package ID that is unique across nuget.org. We recommend using the naming conventions described in [Creating a package](../create-packages/creating-a-package.md#choosing-a-unique-package-identifier-and-setting-the-version-number). Be sure to update the author and description tags or you will get an error in the next step. Here's an updated `.nuspec` file as an example: +1. Select a package ID that is unique across nuget.org. We recommend using the naming conventions described in [Creating a package](../create-packages/creating-a-package.md#choosing-a-unique-package-identifier-and-setting-the-version-number). Be sure to update the author and description tags or you get an error in the next step. Here's an updated `.nuspec` file as an example: ```xml @@ -114,44 +98,44 @@ Every NuGet package needs a manifest–a `.nuspec` file–to describe its conten > [!Note] > For packages built for public consumption, pay special attention to the `` element, as these tags help others find your package and understand what it does. -## Create the package +## Run the pack command -Creating a NuGet package from a project is simple: just run the `pack` command: +To build a NuGet package (a `.nupkg` file) from a project, run the `pack` command: ``` nuget pack AppLogger.csproj ``` -This creates a NuGet package file like `AppLogger.1.0.0.0.nupkg` using the package name and version number from the `.nuspec` file. - -Note that you'll get warnings if you haven't updated various fields in the `.nuspec` file from their default values. - +This command creates `AppLogger.1.0.0.0.nupkg` using the package name and version number from the `.nuspec` file. The command issues warnings if you haven't updated various fields in the `.nuspec` file from their default values. ## Publish the package -You're now ready to publish the package to nuget.org using the NuGet CLI. (Alternately, you can use the [nuget.org publishing workflow](../create-packages/publish-a-package.md#publish-to-nugetorg). +Once you have a `.nupkg` file, you publish it to nuget.org using the `push` command. (Alternately, you can use the [nuget.org publishing workflow](../create-packages/publish-a-package.md#publish-to-nugetorg). > [!Warning] > The packages you publish to nuget.org are publicly visible to other developers. To host packages privately, see [Hosting packages](../hosting-packages/overview.md). -1. Create a free account on [nuget.org](https://www.nuget.org/users/account/LogOn?returnUrl=%2F), or log in if you already have one. When creating a new account, you'll receive a confirmation email . You must confirm the account before you can upload a package. -1. Once logged in, click your user name (on the upper right) to navigate to your account settings. -1. Under **API Key**, click **copy to clipboard** to retrieve the access key you'll need in the CLI: +1. Create a free account on [nuget.org](https://www.nuget.org/users/account/LogOn?returnUrl=%2F), or log in if you already have one. Creating a new account sends a confirmation email. You must confirm the account before you can upload a package. - ![Copying the API key to the clipboard](media/QS_Create-02-APIKey.png) +1. Once logged in, select your user name (on the upper right), then select **API Keys**. -> [!Warning] -> Always keep your API key a secret! If your key is accidentally revealed, you can always regenerate it at any time. You can also remove the API key if you no longer want to push packages via the CLI. +1. Select **Create**, provide a name for your key, select **Select Scopes > Push**Under **API Key**, enter * for **Glob pattern**, then select **Create**. + +1. Once the key is created, select **Copy** to retrieve the access key you'll need in the CLI: + + ![Copying the API key to the clipboard](media/QS_Create-02-APIKey.png) + > [!Warning] + > Save your key in a secure location and keep is a secret. If your key is accidentally revealed, you can always regenerate it at any time. You can also remove the API key if you no longer want to push packages via the CLI. -1. At a command prompt, run the following command, replacing the key with the value copied in step 3: +1. At a command prompt, run the following command, specifying your package name and replacing the key with the value copied in step 4: ``` nuget push AppLogger.1.0.0.0.nupkg 47be3377-c434-4c29-8576-af7f6993a54b -Source https://www.nuget.org/api/v2/package ``` -1. You should then see something like the following: +1. nuget.exe displays the results of the publishing process: ``` Pushing AppLogger.1.0.0.0.nupkg to 'https://www.nuget.org/api/v2/package'... @@ -160,14 +144,14 @@ You're now ready to publish the package to nuget.org using the NuGet CLI. (Alter Your package was pushed. ``` -1. In your account on nuget.org, click **Manage my packages** to see the one that you just published; you'll also receive a confirmation email. Note that it might take a while for your package to be indexed and appear in search results where others can find it. During that time your package page will show the message below: +1. From your profile on nuget.org, Select **Manage Packages** to see the one you just published. You also receive a confirmation email. Note that it might take a while for your package to be indexed and appear in search results where others can find it. During that time your package page shows the message below: ![This package has not been indexed yet. It will appear in search results and will be available for install/restore after indexing is complete.](media/QS_Create-03-NotIndexed.png) > [!Note] > **Virus scanning**: All packages uploaded to nuget.org are scanned for viruses and rejected if any viruses are found. All packages listed on nuget.org are also scanned periodically. -And that's it! You've just created and published your first NuGet package to [nuget.org](https://www.nuget.org/), that other developers can use in their own projects. +And that's it! You've just published your first NuGet package to [nuget.org](https://www.nuget.org/), that other developers can use in their own projects. ## Related topics diff --git a/docs/Quickstart/media/QS_Create-02-APIKey.png b/docs/Quickstart/media/QS_Create-02-APIKey.png index d9dd46836a15ffb2e99aa8b69f5ed1cd35cf2cb6..5e98fc670170aee7bd7757f6c28f153974ea7cea 100644 GIT binary patch literal 14177 zcmch;RahKN)c6U(Jqa$s-DhyOKya7AWq<^C_Yfe!Ai)X2gS)%C6Wrb1U3T*3`!4>w zH@i3c%+ozpJzd>(PSvUNJ5@EI%8H*bP>E1sU|=w0q(7>{z`PNMrn8aXK+pT)JKE4M z_|IYrVlXfjQD{%b2+%x=y|lIy3=C%H-vbtxUe+Iakun zYHQ|9&dJKo3gF?eO$WokaIeUG6jOIMI8I$GGn;nVxyQbPe%uf6A2UfW#}l#=C}~th z##MhxJG-DF#ZM@HO(p;F9Z6j(O#OX-VXY|wVZ1!{lq(M`ewnzq>=~zDsWPIf=C$VoU;bCZs`MA>XGwL?K7$MBA|Cq z`vlWn#yZzD*Qx2|Tz~77SnY?65up_q*ptKC*-7X|p1C`!0t`wx5$fnOHp5)K2@-e2cA++E*qX-0aE||qKY&yjy*F_tH zML57E#SN@Et{iK^7v_Bs;)VB=XhaQxIa+a%aUcuqU^PriMhaz?`Fc2ItKM1xF5#lb ztB=SzB1e@icVzJN8*nWP{qDm(3(*zkxICLXb*poRzBVUdPx>c*){)W2zE34NKC0^;?sB(>jx&CuG?6 zYS6`4tX+Fh5WrbD(^Fq<-Gr)57-lX?g>jZE?V)-gxzVc=Wr&k`{nKejYE$TrSJ>QR z_Eo9MKbZ7n+H<)3%s}`D{*+0rjx(9g{UZ6v?Uwj;zWq{q$ zRAT3EogRxj%2FuzKyx`72Cv=H>aA}0&$Xf+VRP&s2y{7M$_O`nKHaTR3olu_XP43b z)>6t#&|USKb?+F&8kpB|!*R`wljV z8%*-6mj!i2+g)RSS+GQLkgt)hZ|&!69C+w1p0Xp|AoB!OR{h>%_&X?%n-9%0dikT# zKFQO^aRNzvVB3dSYVG!bL6CRCcZH44WqArpN%D!M#@G7Z8O@*V z3VQ`<=9&()zd4#IF@C5zIv0B*EUdYSOSROFw}nPxs!4NX_?+TSeD+#sl8rte@(g&} zx2045G3S^QjZ1IaI{p} zGQ4!Vd`B8LiHYb6P!ZZ(a=fNXEl%jt;RMOqns5YT|TribHBJ7GQhr>Hq9l^jKk3@mTv)`puM* zPS0-S2+Vn7pY1a?laNf3BSYXD3f*BA(6EMZel>*V;fYR-e4@xV5s()uEj8Qm#jeZ% z`wGy?RQkikRLCW=F6*==*8eCYT5;(6z)j>|=y8kz-Up$~P2}bbU-CrUzsQK+CSCUZXhvF;d-igYsJ({C+ zf`QcYa~N)0ZxTPKAmgY1H#$ZvfYz=9htUT(13L-#?_nvdMhl7>tG^682RZ;fY;Tc* zH^Q=vVGHze@Dc3Z^oGR>K*%cwY;cI%;f9!0H+4D>#I7-t50h3SWn!4u{7s7sM{Vks zgYhe8PY{`pd9o|E`Q1)_&Eg&K2rK^LUDx12cdWGQNfL_ZvKsx^s9tJ`w0eO(r7I3j zV~jx@FGKF&w5H}{b~hZ>s?Ilwjk7?tRV)_gt_9|3jK43kn8m$F=uo4zXP0jzh>`0= z4UBV1$)%V`%@T}DC7;+iq_$npQo35JwpE%o&n3;;$mc6KR(DX;3y9j3Xhs-A>eIDr zxt~d~0}{9*yQ=7se~)F?RNx~N&D{S$1_Rk(tXofENJdGv=@*uPnkW}9GGSMEt!>ZD zgS7Qo%Tq@wld#Uxl$%g>RlWcqM^P?iiam#!w&p>zC5OkXI?ECvSI4Yadwd}@-VKKv z)J@AUslG%C(&pBQ&za89E7iA)NyoPzmF3i#aN(-@Q9<93@te5X8b+gteBEMjvlKCa zbQ3T4L3}yzN}EGoE@?@{^S*3B<&Om4E>d$$x|BdjSN7(v$YU~QP+-WS2|=(VaSe*4 zJxVrOJ-j3cd?xr^8^tP|5zLSGKUOQ&PvELf%WY-T!>ZqC+QK+4ZpSo*LFnpb-~yiO z1DMg_aUC7kC9@|NH)fmi(sI%;4rwTAd?ieZOwse8Gp5p@PkvX%>YQqtA$e_q%Ptp~ z{)4Bz4dw}pW@r(yPI_3+NCF_C!fAJOgzGrsA~Wd%00dm-wVd-{fLq0T4=}g6s--#kHQ)wy zhMU#gxe;w`=HAkZf4I3DqI+XYFU#f$>1x2YEIBdlCh<;Mv#*56WT;%{?-`n#cL_ zE?2nKDr-|A2e80wZhWI!b2cJg#D$imQ@m$!KK;bW^_7i(Elv=@^+fVcz@ho85jzg= zS05C)`67k{+#Y=QKRH8M6jNjvfWm8xuO@{o$tc=hm3I~YiDR^C#w<*HRoF8%g4gbg zCgCBGVSCMe@k!`N4RF#^jjP5lg(rFOap&U#rwu_aM}~9n?eg!ih!zx{A3xiJ`V@-T zT^~3^iN7U?emKSV^5kZ@S1-)bQ!qee3rK&t%DW5wx>YRKG}xptEV~etppu*W{gE~{ zjgfzcY1t*`gKBkp!gVbDm6YGCFox<>k#yp{W$DjYRjP(PB%f?A-%_~I%TEj!qB!nT zMAvJ|Z@Hy%RJLsVv#jYSxS2+kjm1g;@#&A_x(lq9oFZ3 z2QIah>F=QEvQ`_4YNeP2zPRFGSH%T>nRa@CD_zXl<03&)6NTz35W_5f*o}4-hVgn# zo%5`BP|BGE5(!W#2)F3cK0V~jv#3J4JJ8s{qM9m;0FEt;$o59dZlNZ6P$7H|R|@BR ztE#7#;xSr$rw$xLjW*{-SR}x>7olYn_n`4Y{1k6V<=xOFjEklVFje}kC{&X5D-Or} zRpQ4qT!2`v3k!#RZWrN}Ntcwl_*Sj|>Hd&0p=zi~!yn8~`WUqnkqtQWQy1KlMHiI! z0QYr-C-;glZMh~hGztdr28*n@>Wswt`5s*$YEbzt%w)fRZt0h#+09%PPKdQ$ z`(CMF=}Kev8`9~(xCA_eRQC^724_V3+Ct2Xt$bAU3lyB!(L}D!H~xyz@cEPNE$k}vUx>A4itauwRbY5d@Z@;4a_8^Io7E3e15odzKciEABe5i+ZOFIl zj+aM?NB)wyHZUKn)dK{U$5|83Bf=AnPGrOYHS)WrdIJctvLf4K7#Hdjk>8kiYW(nh z&K9EpYubqi2PH*YoTqulyXy~l((99Zf9s+1Ul4=ZlfGoJekomMK)1YQaKVt6@<6~K z0gYyylN;#d=S|XB2vTQ>IgzHJgfO>XdZAi%c;PUe1E zE7>ktB3=@D$fKC$GbU#?7jFfKTr z?;U4RE3JfsQ!n35^BQ#-<}oGee_!TYyk)Q&)ewE|hH@ujynrw+k1!cxEY?+cF^8=j zKEa6xAYae6RcVx-?_|&`H9m2Om<`8ayaNb-1p>(N-c6QR_Po_r^K)-6(B57d?^!hQ3WVW!HqYsr7z1g?KAS?yLrd@~XjQB$Wy_4W%k$@?2*D9Z zdRE_)Bz#%4f6Fa}-}B%;X9GT>S6q(uQiInMGt_!xOj&NUdb5JpO{rEp^ShOnxi6Z= zj2@Usr5BbzgSRU*KQiFaBk_ENtou!{hb9dX@Y7R4DJbhBZ4Ugsljtw!PeY@yG+Gj7 ziR_E+LRvUQT9v9fGQ8g=fC!SdNnsZIU|cG}va$CxrW(C>Bbe6uxP^trtVT}X*gcQ* z+C?YXV*%YmrjU<>#NzQ;!3|G1#EC`j^3&|2dtf5-5C+0mk+%R_45}DT&)?D;l_4br z>GYJ5T6YRPh7UZrf2$vLlnps93f6COJ%&!_)OGOO*@-@`p6#{Tm)S8U91}QkI2C=? zz~*3r8EU{-9hXM^J^-4F$c)M{QyP?wldtWsiUW|wlztrm1qlSJZoZNFLXVpbav+mx zX`~(rgQ&}=0Mr1bO9>~s$YU)U-SA9>F*5yny?aHb#fSr()nM%?}8t`MGamEWj(cIeFdYL=K*Fm1YcQ>rmRC35)7M?{&0rj9x zFf1~DY(DPdJB_TV%$D*jrL4MNIW4fXfN@7>yQx$TOvoWmm|PYgpAyFPE;}rKNw=+_ z--(=pgQkdI%5F9uP-V<6$2+8nj_w8~3GVF7z=(&4=!b#8G1(HR)DqQ&X(6|yWJItw zVY2%CW$!9tN*308t4vzsj_cd-zeHiz;6C=SJ=LWjmWkv+iDuy_9CBP2413gm()xIU zhR?cYdUC3M4EvfAc3oles`rk6C;eV}Fgk~2@?gnG?VGA7Mv*#$ME2CUs)5&1FnR$x zBMpc4#d08SJ}-Z>dI{?LCPr{8E}TN|%RuV^tfqBO`NvhUIn82P!^aUoYJHqcf4*rP z;A1Girm6LvvIDg_Ge3IJ3N|^b;NWMlNi{`yQl+#PY8)jhjssJR$`^k19OO?73md%6 z(|WBC1htsKb1UrcZk`F2pV;($E>MX%2Nt>C`f_zX;ZP!#sW_0K3<00lHy$o(}@JG#g~HykS=rO5SBme)b-dV>*-OAS35{_qc2mKWeYqCP_(#`ghvVH^%O_p5D6`gP&$iz1W+f3wx*BdCKlje7g z;#l7>*=*&9*J7)fuu^KezD@J{;mx4;P^E?|liUrFm14<`9+12H4D9{<&5Vxb2lA(H z@1hB$;XMm~tFUuY^LM|HC@N13iqT7V^3NOF8xxg57Dij7xa)bj+sd+tkPS1+bvsTF zo;PY&VelkmLD=lFNyps>*gY2=1h24;|JaMx%z9lIz09@>R<716xz#i zXNHRoJX`7)M$2aXJt{16Kb%yuf6z^c-qh23hBMR<&=;j0hR)uH_WD`wdrV8~FHG4i zQ_qh#A02mEJE9y(#|^Rzv^%!YrHiW%3-bqa&_GC#HLTI->Y{HlUDYURFFC;~wMSSB zST8Dgq1y8af0SY$Dk-vcoG(<2%>qX`-m)SFobf0Zrn%>3F#hW8t6}hXduXKJ1gCc2 zaf|J1lHVV$$~Z)fSLD__8ZVbcvup`MUZgEXP09#9cc2u(Ez+%s`u;C`;{evq>>9g2 zr{utTIp5ZfiHKYV8j6>0Tz1J21_m$t?nqAQxnB#FEx?m;giK**=b0|WXgAhc>pK_Z zJv~Ov48H1OUiyA4*@pdfJi?5Ypf`X%Apc?Y4lVJG((IB2rzDj+*DTk8`W?K&)r6Tk zY!Pbi$0Jm8Ijt9$>&hpqe9Ew7KAGLM@@RpP-HAsO(E{p;UJr}#zCB43Mksvc|^8hGh{gwBwbVju|m42c((>EREs_`7yRfZQFAMdth&AouP86VDyjerz; z^_}D>$Qe@C@U+$7@6O8l&JdNB%@(h60JlAgo?EB!qdBQQP5IzLL%SRO_n&Q_0nXP$ zH*&Dxy$l0dqd4~07$2Ws{Q~x%`~Iz&WCLqUgJG!^s*nczm(#C;JT-iPG{pULqFpDx z8yMG%=mG*7{ZI2*41_t5hQ&Ja^B+3vjF-;@I!yCkN*SK6nHllVAM*X|@aI(ubY+@y zPHHLqhhb5Pqch_BtZ5Y|7-Fl>%upv;lPdznqX7A|{dWoFHm_^@vzKM9LCTeE{)K3{ zrn4MwO1{bRUHFZe8jpW6l!6T2GQXdIQGP`rpn&Up6xDS%2#1|&vLSR4E#t*ZDCHsa zkG$l%w6U(i5a99-FxF-klh4fSqkY9sRJPLO&@y}#zX{JN=`;x4$ujt*T+zl)yD+s zYbz|b;?83vSH>!bg0g9R*BIXFVLUdITeovmZTrZ;eC*hQSeia^By!4XEa&juxF8H9 zh9=%f;3Rm!cFEeTr}i5j7nXj z{fLX5gqUoTC9XQEt;-{_SW~e48L9W^GG|@jCY2RFx`v-Cz5&l`F+Jr)Z`d!F3Sfpy z71(jXO))y_6QiPSW-9~CRaq&oDRJ0e1&6tg)c!~R;gFJR4^TV+v?81}IG4jCLO?QG zTILDBf;be{8usUIe_Hd93WrJ=R|(Ex3QSn?A#bB`B1J1OD^qr^8N zhZU^oNts`G@yNpCKaJ)LtqXBam5&KO{#(E;$0y{_*2yw9YBD|Ipnf+*lb{`E8fTZ} zmjq!3z$&T7W~hXuD6S{8R~csH{)z5lVdB{2xK)GdS7rEUlH(wmNvGXXpN*jx8@p zc2$wu_15&vbEiSob8f#EGfbD`LD&CM|^v4AdM*hIJ)aSj;` z)sVc{sJVYf$Tq`-psk=k5q-2JT0%_nS^N_P{5S$OhgQ`~7YEFriC($#AnsDbRP=36LY0ga+QxU-0;_|hLUZC#q}}vh$FoNHJoOvF}^H# z!CLRCel+O)L2lJ7#j)D{Bhm-XUi%Wu`=)Qnr`Ybr@aDFyuXkBYctmTN?@2qp zu72q}75Zl~yjei=HnL!rpNVixKmTqONQua%2h*zGL{m+%?=a|1U@cKmSQcR)Z zL7OLZEA>#G&98t%JXfn$ul!r;7xbP!GQXvw8RKH({BMwHA`UqkIp_l+*)(8$1D~=3 zwdb96P_L*)rEZ%i3Zg*@wA7O6k$$f&bm3n>YHAg-k^+HMtGqkDmm!2xuAC}2)iUtC zHxrSI+2XBqBh(#9Ged8_DLP5V_!SFaFPD!2Fo0zooB6_k+(toA^_KpIp3cqLfUdW1 zSoP}HW_X5c4%1hjyNO-hHDZ|m?tqBoftncgJSB9D+j5Tu)(Yc~tq}5g{W*-Kl7X&s zlh~>D-k^3{(;I1(>CK-{ZuLh46R7)A;woI`J#OigL_Bw1Ci6}=Nv@=irA_a;R= z+;$%>qn6z+US7`&Q;xCOQePK*k6v#q=BPS|fWcOex4UE>YX)ug&5gIhXZ`nWecLYK z&q0q*V0T=1H=pAtIfDgD%+C1D_oZ<1j11tza;NQNCqLJVD?^`4uSA2o;o8fS!^GCx zkv4vx_e-~Pm$PQv;`p4EyG_pNwh?g6o0z|XfUeK?bfkhl7gIh_PsbupcO!Mj;s$o52F(ZCuzhPVI-}mD%~ZTyHFI_9zkx z9FTltN@kgXMg$C6>HJO?t(S>bX~e$VwNCd>K6GP(HROM2kOohHH@&e~&WWz?^;eP7 ze%+-;txqpMPX8a}DaJ$|==?59cExjv2MIDpvd6qAfIeWLMGycK_e1y6Pmv>xYW`l5 z!zp&0ft5{DsYSfEtM&JEXaS~4ol2ht-zfNnxZ-v=pF80?S^p1C)4<#)R-3~C+h!TH zfzQp;Y@6fz$zM-{vtuH}D~ZkL-G*roy;z?tXZa)x7kQIy$+3NPyuR#xojoIDA^43Y zT~vm#Jk0IFlvP3Ie@EgJj^c!_NvLZLB4gzCN@Ra9LNUf^Ixvozv&!{6!b+|vUzY&y zD(BZ}EpE+Ki+2r^b7051bmH1Hah=fU#Rqt_`R|X;^w8Rbv%0U2V!fT=Elfvy?JigQ z4Pn`wK3#G<1t+$UzkT{6&Eu|=L#bsGVfCj^coe={ z>C>L>GvZNd-ssZx8HYiB_u3E5-k(k52zlAB*FTe@a)$JjTXL`zQt2>BbRO=dmis2_ zRd{R(GM6Q7Fi+K+aF}Lvauyc#ib`Dwa&&EohtXCh1bAIy%YNCeN&G6oLk#`^M7IIj zV9P5Ni`$#K)bD&B-PYg3{**riX_;=oG<%jqA}+2%pM(Ub zQkq#4B7bT6Vxk8}%k(?}|8N*edhY3hKk;QGTbF9CqYwjKwruWmutpc_p0Hi_1HUGd z^R!W}S8*;+6Dv4O-xS@c+xXmfJF4ya7ryZ8Q-j^}xzDP_s_+K_;^&Qq(T&9=++-*B zJ#f{j@#);S)aJai(V~v2Q!QI0ow19dNZn6O5%7BW_;=xb0-l3WRO6+cV3nV}shZfw zd{Re?xoFtLRg>kJJRh#PI+2T5I5)QReqVoJV}OKDmfCm@me%6#2wXCAMkI=AdJ68|O(A>LQ9S8X_VzDW~+Bn@nGyIf&O)xD~d=W-JZ6|Rp>m6IUb^-gR1C~O&0l>_GOD-X^ImICoj&F02B)~z+R22ey;ulZ{B{q+7_fWS$c8{S1+Bj_q!3Ta8Q z+_R#kC5^Jp-*m2@n<^hA@GzQt+CNSWnw4zY44z6 z6IN^f3qx~iVJDYB1*7ZBUnwYc+@0ckJd_qcc69`Acl;-X=@o7i%FI(3(mC3ae!~x! z{O>jrP5WL&pL@-x%eyK8`KjDMcDmeek{n4KhJb_jr?lE?y_()V;9!qcB&*!@Z&)Li zdz-(;x(IbWd|764$F_Z>Q)@Q-|45gZloxA~aN@`+ao62+z(1d5C(E@ZGw{>enCB5M z&N}{@BPc0hClFR2RubHlt1xo1A|t5V_#$&;DE~Q^pi7bcn-8&7>t&d+?xd`e#7Mb= zKRE+S4rIAy1LJ*s=^-4!mF6fm z>x&4_sFn`q`)a+$kqhBg#pZv)avb3_y|kMgu13w#Hv3c>gSy|fU!-`uHvaITzpW~m z(!?Vy1~#&bI8>WhXw-|_Xn)7zC&|&3J{3&`zX4rfPntJnaS(r9cRt$;d*m9-cQWTK z8f-G06ou@S}H)wBgGt_C@T zt=~3n9D6huIk^iYV#{m6e-J`?fk$e5pr|CSRdOR8ew+H`I+e^x%7`7rG~z%!?Y@($ z%)Lj@Dv1_a4JH{vUF^gRsdw3N6}au2O>L*U(5orbX4ZUE2pobUWL$(^+dtUsWAaI{ zH69~!n;##`1RZaw%EpgVq#I+Y`3O{d@iyMWG|EE`vKhc;En-!)g_wx9x9z(MFh}o7#l4kPa#WF;oN;4SYd`TkTf4Z7#DARjV446ZNShfuhMgL<@gG!|ZIr40HY+S|s^uiv?{XHZ5QTmdXO{wa#+e8m?P zNZq)-D_!vr%>-&0M*=7ZWDQEvaq81X1(}dKdRvn+w13;-Wm0JQ^LU+$ErD4m>mW_Q zSL~1!Tndz7oe71zezO1w~@n5NgNCsPq9Xk+gWp0ivN5<%a16r)tk2brWMsoq~&7f#-#z> zXbeYZcJzfK^RMb;sG!MMC`QXv#>7=*EBx)K1G1{Uk=#&v|F6sZ4H9aTpuJfp#x(rz z)~o*`OMEf^c=JpVNN z`Z#Z8_^=_$Si5;QfnVWXzc%{!caq-_zVz1n-X_1ZCR&uaFrTL@HxZvrE<1rvqaPqf zJZq*9H2dyF=(}y-sP-bOz6!M6>c$1UUXclVyu{4f;)1yGu<+NU8MR}md9WD3-U(kG z%WqHa$J!cR0%mO~K!SSZLfXRm@-bVq6lO?YF&7 zvw7Wvj8^abtqfS9_DxI|m`=ja(*${bU{j>p^n(i0;>~=wS3tLpqj%{@Va7bqOZc=k z-Y{=A?AzzD(R2+Ba`-k%A6u`FH0(qM+duFk%r@)QuS2S!p@!Xx+d-+oso;HlnTUr+ zpA}YWkZ+6gi7`se1ueNXiKUMe0HZ9`)e9$dh{TBq&Kd9M?XJ+Cso+etg&Lza*c z$F@>oua}O=JjK+;qSy*Q?}I;Oe%n*~NMm+AIYK7IZfff#A2ECcm12mYR^I>#C{d|Y z7)ttfxHS-aD|j_^xKO*KjJeU8e>FpDK{;hrK3?{}aY}j%f5T1Dn6T$-!6cTUJdJMD za$p%#vp`B>wR;LpUvgXp0GupZ(`s{NeY#Hd^Dzz$8=1!xB904m3yeo98#N%g zLbW*-_Y~C8^^3^+Tp3UjHUFszD4v8hwGul78qVyW%XghXf)ERtRIKUW(ohZrK!b5Q z!XkNY39TRP@-M%H5qWNjI zVE|bnMQrbLC&-dJ6)CkSHC5-KmX+F;*LVg4z=vJZXMy{fHZ7I{-dK-Q%d2wuy7l%_JtNzIc-Fs{d1|;Y@Xta0zWSiUE-BeKQt; z+wHiG@V_P_1Lh|79u);d_~a>bSROGciyL1brX8vDu6P^_r@F07zohl>6Cw7dz1xYd zQ0fUtuxh`8X{sQPwY@>RO@*tnij<;+&$?^`&%GbK{Ijo%DB;`_pWwBwY|1>7c?-eH zG!u4C`PV^5hCrq}G@@1ew5=qF%Lk_s1tl$-yc#U?%|3w0PL#1S@A+_{!MRrEZE{2-_1jn+-@c>_WfqB)rnZz3y%4=e-;izutFKjfoS&-Q)$dU0i>9J((!7Gt`>Ct}|@8 zaznbx3rN&&IyNbQEI-bfu|eve=2{r=1~BZahUWhIMCse~mkk9rrOqRcv5vvH7hRld!b+=kSF)eoM`}x9OgKtS(eGV(ofP@lDp<><1P<`TMAIK9~la| zo_M~oSAXuDwoFu2DvVsu-K<|xAHZ{fRxM=pp4j}U%y)h$WV9G^5BErOy0eb?>#LQ4 zA|{H#u#_;bT#V29e@?f-^;pjEYkXQJ!*ZBcAJyS=Wt z`8hqql`ZJ3y&(w@upcafvOy#l16cOC?Nvbf`Si8!wQ^cExTgz2_Tuz)6cD`yHJ&yx09sFIb+kVevw9 z7ToyhyP%IPFovRv`d^fRzS>tY*UsB|^*o2oHIqxh&mw*VfXfZEOi6l|AU_XZ!q=$Jxh@Im&>TAU$O8WMMk7!<#M2Zhl7!k MRQy;fZuIs40>hf5TL1t6 literal 3036 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 literal 21322 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

        30hVfF%AUBQJi8=63bGs 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 From 3ee904b109faf0f6ceb8a5fb0acd370e310ea45a Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 3 Oct 2017 14:37:32 -0700 Subject: [PATCH 0205/2943] Making separate package restore quickstart for fwlink --- docs/Consume-Packages/Package-Restore.md | 11 ++----- .../Create-and-Publish-a-Package.md | 2 ++ docs/Quickstart/Restore.md | 32 +++++++++++++++++++ docs/TOC.md | 3 +- docs/includes/package-restore.md | 5 +++ 5 files changed, 43 insertions(+), 10 deletions(-) create mode 100644 docs/Quickstart/Restore.md create mode 100644 docs/includes/package-restore.md diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/Consume-Packages/Package-Restore.md index 79fdd453b..b291bcc92 100644 --- a/docs/Consume-Packages/Package-Restore.md +++ b/docs/Consume-Packages/Package-Restore.md @@ -26,7 +26,6 @@ ms.reviewer: To promote a cleaner development environment and to reduce repository size, NuGet **Package Restore** installs all referenced packages before a project is built. This widely-used feature ensures that all dependencies are available in a project without requiring those packages to be stored in source control (see [Packages and Source Control](../consume-packages/packages-and-source-control.md) on how to configure your repository to exclude package binaries). In this topic: - - [Quick guide to package restore](#quick-guide-to-package-restore) - [Package restore overview](#package-restore-overview) - [Enabling and disabling package restore](#enabling-and-disabling-package-restore) @@ -43,15 +42,9 @@ For additional details on package restore on build servers, see [Package restore > [!Note] > Projects configured for package restore also work with xbuild on Mono. -## Quick guide to package restore - -Use any of these methods to quickly restore packages: - -- **Package Manager console**: Run the `Update-Package -reinstall -ProjectName ` command where \ is the name of the affected project as it appears in Solution Explorer. Use `Update-Package -reinstall` by itself to restore all packages in the solution. See [Update-Package](../tools/ps-ref-update-package.md) -- **Package Manager UI**: right-click the solution in Solution Explorer and select **Restore NuGet Packages**. -- **Command line**: use `nuget restore`. +# Quick guide to package restore -The next section describes additional methods and considerations. +[!INCLUDE[package-restore](../includes/package-restore.md)] ## Package restore overview diff --git a/docs/Quickstart/Create-and-Publish-a-Package.md b/docs/Quickstart/Create-and-Publish-a-Package.md index 8a4f1e1c9..e77654339 100644 --- a/docs/Quickstart/Create-and-Publish-a-Package.md +++ b/docs/Quickstart/Create-and-Publish-a-Package.md @@ -33,7 +33,9 @@ It's a simple process to create a NuGet package from a .NET Class Library and pu ## Pre-requisites 1. Install any edition of Visual Studio 2017 from [visualstudio.com](https://www.visualstudio.com/). + 1. Install the NuGet CLI tool, `nuget.exe`, by downloading the latest version of `nuget.exe` from [nuget.org/downloads](https://nuget.org/downloads), and saving the `.exe` to a location in your PATH. Note that the download *is* the tool itself, not an installer. + 1. Create a suitable .NET Class Library project for the code you want to package. If you don't already have a project, you can create a simple one as follows: 1. In Visual Studio, choose **File > New > Project**, expand the **Visual C# > Windows** node, select the "Class Library" template, name the project AppLogger, and click **OK**. 1. Right-click on the resulting project file and select **Build** to make sure the project was created properly. The DLL is found within the Debug folder (or Release if you build that configuration instead). diff --git a/docs/Quickstart/Restore.md b/docs/Quickstart/Restore.md new file mode 100644 index 000000000..ac9c6a9d2 --- /dev/null +++ b/docs/Quickstart/Restore.md @@ -0,0 +1,32 @@ +--- +# required metadata + +title: NuGet Quick Guide ro Package Restore | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 10/3/2017 +ms.topic: article +ms.prod: nuget +ms.technology: null +ms.assetid: b70326a0-5bfc-4b7c-881d-7a7d5ebeeed5 + +# optional metadata + +description: A brief description of how to restore NuGet packages in a project. +keywords: NuGet package restore, restoring packages +ms.reviewer: +- karann +- unnir + +--- + +# Quick guide to package restore + +You may encounter situations where you need to restore the NuGet packages referenced by a project. For example, a project in Visual Studio may show the error: "This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. The missing file is {name}." + +Use any of the following methods to quickly restore packages: + +[!INCLUDE[package-restore](../includes/package-restore.md)] + +For additional details, see [Package restore](../Consume-Packages/Package-Restore.md). \ No newline at end of file diff --git a/docs/TOC.md b/docs/TOC.md index 135a4e51b..8c58c5161 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -2,8 +2,9 @@ # Quickstart ## [Create and Publish a Package](Quickstart/Create-and-Publish-a-Package.md) ## [Use a Package](Quickstart/Use-a-Package.md) +## [Restore Packages](Quickstart/Restore.md) # Guides -## [Install NuGet](Guides/Install-NuGet.md) +## [Install NuGet client tools](Guides/Install-NuGet.md) ## [Create UWP Packages](Guides/Create-UWP-Packages.md) ## [Creating UWP Controls as NuGet Packages](Guides/Create-UWP-Controls.md) ## [Create Cross-Platform Packages](Guides/Create-Cross-Platform-Packages.md) diff --git a/docs/includes/package-restore.md b/docs/includes/package-restore.md new file mode 100644 index 000000000..9738f3245 --- /dev/null +++ b/docs/includes/package-restore.md @@ -0,0 +1,5 @@ +- **Package Manager console**: Run the `Update-Package -reinstall -ProjectName ` command where \ is the name of the affected project as it appears in Solution Explorer. Use `Update-Package -reinstall` by itself to restore all packages in the solution. See [Update-Package](../tools/ps-ref-update-package.md). You can also reinstall a single package, if desired. + +- **Package Manager UI**: right-click the solution in Solution Explorer and select **Restore NuGet Packages**. If one or more individual packages are still not installed properly (meaning that Solution Explorer shows an error icon), then use the Package Manager UI to uninstall the affected packages and reinstall them. See [Reinstalling and updating packages](../Consume-Packages/Reinstalling-and-Updating-Packages.md) + +- **Command line**: use the [nuget restore](../tools/nuget-exe-CLI-Reference.md#restore) command. Simply running `nuget restore` in the project folder will attempt to restore the project's dependencies. \ No newline at end of file From 40360168aa96d5dfd1dd1a8b6df3922f9ac09256 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 3 Oct 2017 14:43:38 -0700 Subject: [PATCH 0206/2943] Small clarification --- docs/Consume-Packages/Reinstalling-and-Updating-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index 46f06b714..c8096438d 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -32,7 +32,7 @@ Updating and reinstalling packages is accomplished as follows: | --- | --- | --- | | Package Manager console (described in [Using Update-Package](#using-update-package)) | `Update-Package` command | `Update-Package -reinstall` command | | Package Manager UI | On the **Updates** tab, select one or more packages and select **Update** | One the **Installed** tab, select a package, record its name, then select **Uninstall**. Switch to the **Browse** tab, search for the package name, select it, then select **Install**). | -| nuget.exe CLI | `nuget update` command | Delete the package folder, then run `nuget install`. | +| nuget.exe CLI | `nuget update` command | For all packages, delete the package folder, then run `nuget install`. For a single package, delete the package folder and use `nuget install ` to reinstall the same one. | In this topic: - [When to Reinstall a Package](#when-to-reinstall-a-package) From 025b8953ee86a34624aa25c4a13179605bbfdd6b Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 3 Oct 2017 14:46:46 -0700 Subject: [PATCH 0207/2943] Format error message as code --- docs/Quickstart/Restore.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/Quickstart/Restore.md b/docs/Quickstart/Restore.md index ac9c6a9d2..7558bcab0 100644 --- a/docs/Quickstart/Restore.md +++ b/docs/Quickstart/Restore.md @@ -23,7 +23,11 @@ ms.reviewer: # Quick guide to package restore -You may encounter situations where you need to restore the NuGet packages referenced by a project. For example, a project in Visual Studio may show the error: "This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. The missing file is {name}." +You may encounter situations where you need to restore the NuGet packages referenced by a project. For example, a project in Visual Studio may show the following error: + + ``` + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. The missing file is {name}. + ``` Use any of the following methods to quickly restore packages: From bba00d5bea6def1f69bbd0d37871a18e7c887104 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 3 Oct 2017 14:47:14 -0700 Subject: [PATCH 0208/2943] Fix heading --- docs/Consume-Packages/Package-Restore.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/Consume-Packages/Package-Restore.md index b291bcc92..4cbc2444d 100644 --- a/docs/Consume-Packages/Package-Restore.md +++ b/docs/Consume-Packages/Package-Restore.md @@ -42,7 +42,7 @@ For additional details on package restore on build servers, see [Package restore > [!Note] > Projects configured for package restore also work with xbuild on Mono. -# Quick guide to package restore +## Quick guide to package restore [!INCLUDE[package-restore](../includes/package-restore.md)] From 80f54c7e2950fbe6a2cc805ca4388058e193a2f1 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 3 Oct 2017 14:50:05 -0700 Subject: [PATCH 0209/2943] Using beta suffix --- docs/Create-Packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 88f1a9850..e9a1ea8fb 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -99,7 +99,7 @@ The following is a typical (but fictitious) `.nuspec` file, with comments descri Contoso.Utility.UsefulStuff - 1.8.3-ci-331 + 1.8.3-beta Dejana Tesic, Rajeev Dey From adadc57469b022c5ce59c87ee83a272036c7b314 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 3 Oct 2017 14:51:13 -0700 Subject: [PATCH 0210/2943] Matching a public PR --- docs/Create-Packages/Creating-a-Package.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 3b7b33090..55573b298 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -71,7 +71,7 @@ The manifest: Required properties: - The package identifier, which must be unique across the gallery that hosts the package. -- A specific version number in the form *Major.Minor.Patch.Build[-Suffix]* where *-Suffix* identifies [pre-release versions](Prerelease-Packages.md)- - The package title as it should appears on the host (like nuget.org) +- A specific version number in the form *Major.Minor.Patch[-Suffix]* where *-Suffix* identifies [pre-release versions](Prerelease-Packages.md)- - The package title as it should appears on the host (like nuget.org) - Author and owner information. - A long description of the package. @@ -95,7 +95,7 @@ The following is a typical (but fictitious) `.nuspec` file, with comments descri Contoso.Utility.UsefulStuff - 1.8.3.331 + 1.8.3-beta Dejana Tesic, Rajeev Dey From 1f13747e7963fbbfe1ddfda38c66255e553395b8 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 3 Oct 2017 14:59:02 -0700 Subject: [PATCH 0211/2943] Fix error as code --- docs/Quickstart/Restore.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/Quickstart/Restore.md b/docs/Quickstart/Restore.md index 7558bcab0..74792392d 100644 --- a/docs/Quickstart/Restore.md +++ b/docs/Quickstart/Restore.md @@ -25,9 +25,10 @@ ms.reviewer: You may encounter situations where you need to restore the NuGet packages referenced by a project. For example, a project in Visual Studio may show the following error: - ``` - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. The missing file is {name}. - ``` +``` +This project references NuGet package(s) that are missing on this computer. +Use NuGet Package Restore to download them. The missing file is {name}. +``` Use any of the following methods to quickly restore packages: From 01df3768565f5ad95ae6fb48b17d9cdbd51a6ffe Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 3 Oct 2017 15:55:31 -0700 Subject: [PATCH 0212/2943] Change to rebuild --- docs/Consume-Packages/Package-Restore.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/Consume-Packages/Package-Restore.md index 4cbc2444d..86697b937 100644 --- a/docs/Consume-Packages/Package-Restore.md +++ b/docs/Consume-Packages/Package-Restore.md @@ -5,7 +5,7 @@ title: NuGet Package Restore | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/2/2017 +ms.date: 10/3/2017 ms.topic: article ms.prod: nuget ms.technology: null From b66f129b4cef86192690fc0265811d7609380085 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 3 Oct 2017 15:58:29 -0700 Subject: [PATCH 0213/2943] Fixing link --- docs/Create-Packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 55573b298..aa0088e70 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -231,7 +231,7 @@ This token is replaced with the `AssemblyName` value from the project file at pa Tokens relieve you from needing to update crucial values like the version number in the `.nuspec` as you update the project. (You can always replace the tokens with literal values, if desired). -Note that there are several additional packaging options available when working from a Visual Studio project, as described in the [Creating the package](#creating-the-package) section later on. +Note that there are several additional packaging options available when working from a Visual Studio project, as described in [Running nuget pack to generate the .nupkg file](#running-nuget-pack-to-generate-the-nupkg-file) later on. #### Solution-level packages From d850c27fb412d42df6f52ec214122250dc34fb47 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 4 Oct 2017 09:31:08 -0700 Subject: [PATCH 0214/2943] Update Use pakcage quickstart to include WPF --- docs/Quickstart/Use-a-Package.md | 37 ++++++++++-------- .../media/QS_Use-03b-SelectFormat.png | Bin 0 -> 7121 bytes docs/includes/package-restore.md | 6 +-- 3 files changed, 24 insertions(+), 19 deletions(-) create mode 100644 docs/Quickstart/media/QS_Use-03b-SelectFormat.png diff --git a/docs/Quickstart/Use-a-Package.md b/docs/Quickstart/Use-a-Package.md index c6ca3fd7d..70d6433c9 100644 --- a/docs/Quickstart/Use-a-Package.md +++ b/docs/Quickstart/Use-a-Package.md @@ -5,7 +5,7 @@ title: Introductory Guide to Using NuGet Packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/2/2017 +ms.date: 10/4/2017 ms.topic: get-started-article ms.prod: nuget ms.technology: null @@ -36,7 +36,7 @@ Once installed, refer to the package in code with `using ` where \ New > Project**, expand **Visual C# > Windows > Universal**, select the **Blank App (Universal Windows)**, and click OK. Accept the default values for Target Version and Minimum Version when prompted. +To install a NuGet package, you need some kind of .NET-based project in Visual Studio. For this walkthrough, you can use use a simple Windows Presentation Foundation (WPF) or Universal Windows (UWP) app: -![Creating a new UWP project](media/QS_Use-01-NewProject.png) +- For WPF (Windows 7+), choose **File > New > Project**, expand **Visual C#**, select **Windows Classic Desktop > WPF App (.NET Framework)**, and select **OK**. +- For UWP (Windows 10), use the **Windows Universal > Blank App (Universal Windows)** instead. Accept the default values for Target Version and Minimum Version when prompted. ## Add the Newtonsoft.Json NuGet package -1. In Solution Explorer, right click on **References** and choose **Manage NuGet Packages**. +1. In Solution Explorer, right-click **References** and choose **Manage NuGet Packages**. ![Manage NuGet Packages command for project References](media/QS_Use-02-ManageNuGetPackages.png) -1. Choose "nuget.org" as the **Package source**, click the **Browse** tab, search for **Newtonsoft.Json**, select that package in the list, and click **Install**: +1. Choose "nuget.org" as the **Package source**, select the **Browse** tab, search for **Newtonsoft.Json**, select that package in the list, and select **Install**: ![Locating Newtonsoft.Json package](media/QS_Use-03-NewtonsoftJson.png) -1. If prompted to review changes, click OK. +1. If prompted to select a package management format, choose between PackageReference (recommended) and `packages.config`: -1. Right-click the solution in Solution Explorer and click **Build Solution**. This restores any NuGet packages listed under **References**. For more details, see [Package Restore](../consume-packages/package-restore.md). + ![Selecting a package reference format](media/QS_Use-03b-SelectFormat.png) + +1. If prompted to review changes, select **OK**. + +1. Right-click the solution in Solution Explorer and select **Build Solution**. This restores any NuGet packages listed under **References**. For more details, see [Package Restore](../consume-packages/package-restore.md). ## Use the Newtonsoft.Json API in the app With the Newtonsoft.Json package in the project, you can call its `JsonConvert.SerializeObject` method to convert an object to a human-readable string. -1. Open MainPage.xaml and replace the existing `Grid` element with the following: +1. Open `MainWindwos.xaml` (WPF) or `MainPage.xaml` (UWP) and replace the existing `Grid` element with the following: ```xaml @@ -84,7 +89,7 @@ With the Newtonsoft.Json package in the project, you can call its `JsonConvert.S ``` -1. Expand the MainPage.xaml node in Solution Explorer, open MainPage.xaml.cs, and insert the following code inside the `MainPage` class, after the constructor: +1. Expand the `MainWindow.xaml` (WPF) or `MainPage.xaml` (UWP) node in Solution Explorer, open the `.cs` file, and insert the following code inside the `MainWindow` or `MainPage` class, after the constructor: ```cs public class Account @@ -107,7 +112,7 @@ With the Newtonsoft.Json package in the project, you can call its `JsonConvert.S } ``` -1. Even though you added the Newtonsoft.Json package to the project, you'll still see a red squiggle under `JsonConvert` because you need a `using` statement. Hover over the underlined `JsonConvert` and you'll see the Lightbulb and the option to **Show potential fixes**: +1. Even though you added the Newtonsoft.Json package to the project, red squiggles appears under `JsonConvert` because you need a `using` statement. Hover over the underlined `JsonConvert` and you'll see the Lightbulb and the option to **Show potential fixes**: ![Lightbulb with show potential fixes command](media/QS_Use-04-ShowPotentialFixes.png) @@ -116,13 +121,13 @@ With the Newtonsoft.Json package in the project, you can call its `JsonConvert.S ![Lightbulb giving option to add a using statement](media/QS_Use-05-AddUsing.png) -1. Build and run the app by pressing F5 or selecting **Debug > Start Debugging**: +1. Build and run the app by pressing F5 or selecting **Debug > Start Debugging** (UWP shown here; WPF is similar): - ![Initial output of the app](media/QS_Use-06-AppStart.png) + ![Initial output of the UWP app](media/QS_Use-06-AppStart.png) -1. Click on the button to see the contents of the TextBlock replaced with some JSON text: +1. Select on the button to see the contents of the TextBlock replaced with some JSON text: - ![Output of the app after clicking the button](media/QS_Use-07-AppEnd.png) + ![Output of the UWP app after selecting the button](media/QS_Use-07-AppEnd.png) ## Related topics diff --git a/docs/Quickstart/media/QS_Use-03b-SelectFormat.png b/docs/Quickstart/media/QS_Use-03b-SelectFormat.png new file mode 100644 index 0000000000000000000000000000000000000000..6fcd5b34a8a5d05a82138dfa3994be4cf4f03225 GIT binary patch literal 7121 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 literal 0 HcmV?d00001 diff --git a/docs/includes/package-restore.md b/docs/includes/package-restore.md index 9738f3245..51ba459c5 100644 --- a/docs/includes/package-restore.md +++ b/docs/includes/package-restore.md @@ -1,5 +1,5 @@ -- **Package Manager console**: Run the `Update-Package -reinstall -ProjectName ` command where \ is the name of the affected project as it appears in Solution Explorer. Use `Update-Package -reinstall` by itself to restore all packages in the solution. See [Update-Package](../tools/ps-ref-update-package.md). You can also reinstall a single package, if desired. +- **Package Manager console** (Visual Studio, **Tools > NuGet Package Manager > Package Manager Console**): Run the `Update-Package -reinstall -ProjectName ` command where \ is the name of the affected project as it appears in Solution Explorer. Use `Update-Package -reinstall` by itself to restore all packages in the solution. See [Update-Package](../tools/ps-ref-update-package.md). You can also reinstall a single package, if desired. -- **Package Manager UI**: right-click the solution in Solution Explorer and select **Restore NuGet Packages**. If one or more individual packages are still not installed properly (meaning that Solution Explorer shows an error icon), then use the Package Manager UI to uninstall the affected packages and reinstall them. See [Reinstalling and updating packages](../Consume-Packages/Reinstalling-and-Updating-Packages.md) +- **Package Manager UI** (Visual Studio): right-click the solution in Solution Explorer and select **Restore NuGet Packages**. If one or more individual packages are still not installed properly (meaning that Solution Explorer shows an error icon), then use the Package Manager UI to uninstall the affected packages and reinstall them. See [Reinstalling and updating packages](../Consume-Packages/Reinstalling-and-Updating-Packages.md) -- **Command line**: use the [nuget restore](../tools/nuget-exe-CLI-Reference.md#restore) command. Simply running `nuget restore` in the project folder will attempt to restore the project's dependencies. \ No newline at end of file +- **Command line**: use the [nuget restore](../tools/nuget-exe-CLI-Reference.md#restore) command. Simply running `nuget restore` in the project folder attempts to restore the project's dependencies. \ No newline at end of file From b1bdc19ecb117ff1f208c8159fdca8b288d0b88c Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Wed, 4 Oct 2017 10:57:42 -0700 Subject: [PATCH 0215/2943] Update NuGet-Protocols.md --- docs/API/NuGet-Protocols.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/API/NuGet-Protocols.md b/docs/API/NuGet-Protocols.md index dfda6bfa1..4da44dbd0 100644 --- a/docs/API/NuGet-Protocols.md +++ b/docs/API/NuGet-Protocols.md @@ -21,13 +21,13 @@ ms.reviewer: --- # NuGet Protocols -In order to interact with nuget.org, clients must follow certain protocols. Because these protocols keep evolving, clients must identify the protocol version they use when calling nuget.org APIs. This allows nuget.org to introduce changes in a non-breaking way for the old clients. +To interact with nuget.org, clients need to follow certain protocols. Because these protocols keep evolving, clients must identify the protocol version they use when calling nuget.org APIs. This allows nuget.org to introduce changes in a non-breaking way for the old clients. This topic lists various protocols as and when they come to existence. ## NuGet protocol version 4.1.0 -This protocol speicifes usage of temporary verify-scope keys to interact with services other than nuget.org, to validate a package against a nuget.org account. +This protocol speicifes usage of verify-scope keys to interact with services other than nuget.org, to validate a package against a nuget.org account. Validation ensures that the user-created API keys are used only with nuget.org, and that other verification or validation from a third-party service is handled through a one-time use verify-scope keys. These verify-scope keys can be used to validate that the package belongs to a particular user (account) on nuget.org. From 96227dbcb8fd15e70dd18a7c5dc6aa6167cedebb Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Wed, 4 Oct 2017 14:46:58 -0700 Subject: [PATCH 0216/2943] Update Publish-a-package.md --- docs/Create-Packages/Publish-a-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index 4b5f30442..fe5080b02 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -50,7 +50,7 @@ Next, you can either upload the package through the nuget.org web portal, or pus - Command line: > [!Note] -> We recommend using NuGet.exe v4.1.0 or above to push packages. +> To push packages, you would need to use the [latest NuGet.exe clients](https://www.nuget.org/downloads) (v4.3.0 or above) 1. Click on your user name to navigate to your account settings. 2. Under **API Key**, click **copy to clipboard** to retrieve the access key you'll need in the CLI: From 3f461d52780d31e7e01aadc5c4fcc70eb40147a1 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Wed, 4 Oct 2017 14:48:54 -0700 Subject: [PATCH 0217/2943] Update Symbol-Packages.md --- docs/Create-Packages/Symbol-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index a78705c74..7c602373c 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -112,7 +112,7 @@ A symbol package can be built by conventions, from a folder structure as describ ## Publishing a symbol package > [!Note] -> We recommend using NuGet.exe v4.1.0 or above to push packages. +> To push packages, you would need to use the [latest NuGet.exe clients](https://www.nuget.org/downloads) (v4.3.0 or above) 1. For convenience, first save your API key with NuGet (see [publish a package](../create-packages/publish-a-package.md), which will apply to both nuget.org and symbolsource.org, because symbolsource.org will check with nuget.org to verify that you are the package owner. From 2cb1d9af590b37ff87ea84a0c4e0fae969f1b955 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Wed, 4 Oct 2017 14:50:53 -0700 Subject: [PATCH 0218/2943] Update nuget-exe-CLI-Reference.md --- docs/Tools/nuget-exe-CLI-Reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 64847a1ef..b4ee72c52 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -505,7 +505,7 @@ nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5 ## push > [!Note] -> We recommend using NuGet.exe v4.1.0 or above to push packages. +> To push packages, you would need to use the [latest NuGet.exe clients](https://www.nuget.org/downloads) (v4.3.0 or above) Pushes a package to a package source and publishes it. From 623dfa16fc66caf66b683a0c804a1e6e6d61078d Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Wed, 4 Oct 2017 15:14:28 -0700 Subject: [PATCH 0219/2943] Update nuget-exe-CLI-Reference.md --- docs/Tools/nuget-exe-CLI-Reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index b4ee72c52..965ae6c60 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -46,7 +46,7 @@ Available commands and applicability to package creation, package consumption, a | [locals](#locals) | Consumption | 3.3+ | Clears or lists packages in various caches or the global packages folder, or identifies those folders. | | [mirror](#mirror) | Publishing | Deprecated in 3.2+ | Mirrors a package and its dependencies from a source to a target repository. | | [pack](#pack) | Creation | 2.7+ | Creates a NuGet package from a `.nuspec` or project file. On Mac OSX with Mono, creating a package from a project file is not supported. | -| [push](#push) | Publishing | All | Publishes a package to a package source. | +| [push](#push) | Publishing | 4.1+ | Publishes a package to a package source. | | [restore](#restore) | Consumption | 2.7+ | Restores all packages referenced by the package reference format in use. Note: restoring packages using the PackageReference format is not supported with the CLI on Mono. | | [setapikey](#setapikey) | Consumption, Publishing | All | Saves an API key for a given package source when that package source requires a key for access. | | [sources](#sources) | Consumption, Publishing | All | Manages package sources in configuration files. | From da065ce93181659132972a7a94fe1775535ee652 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 5 Oct 2017 11:28:11 -0700 Subject: [PATCH 0220/2943] Addressing a few comments --- docs/Guides/Install-NuGet.md | 6 ++++-- docs/Tools/ps-ref-open-packagepage.md | 4 ++-- docs/Tools/ps-ref-update-package.md | 14 +++++++++++++- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/docs/Guides/Install-NuGet.md b/docs/Guides/Install-NuGet.md index ad1bcb398..6a0734c11 100644 --- a/docs/Guides/Install-NuGet.md +++ b/docs/Guides/Install-NuGet.md @@ -122,6 +122,8 @@ On Mac OSX and Linux, there are two ways to run the NuGet CLI: The NuGet Package Manager is included in every edition of Visual Studio on Windows, 2012 and later. It includes the Package Manager UI ([reference](../tools/package-manager-ui.md)), and the Package Manager Console through which you can access tools that come with certain packages ([reference](../tools/package-manager-console.md)). +The Visual Studio 2017 installer includes the NuGet Package Manager with any workload that employs .NET. To install separately, or to verify that the Package Manager is installed, run the Visual Studio 2017 installer and check the option under **Individual Components > Code tools > NuGet package manager**. + > [!Note] > The console requires [PowerShell 2.0](http://support.microsoft.com/kb/968929), which will already be installed on Windows 7 or higher and Windows Server 2008 R2 or higher. > @@ -132,7 +134,7 @@ The NuGet Package Manager is included in every edition of Visual Studio on Windo *These steps are not necessary for Visual Studio 2012 and later, which already include the Package Manager.* -1. In Visual Studio, click **Tools > Extension and Updates**. +1. In Visual Studio 2010 and earlier, click **Tools > Extension and Updates**. 1. Navigate to **Online**, then search for "NuGet Package Manager for Visual Studio" and click **Download**. 1. In the Installer dialog box, click **Install**. 1. When installation is complete, restart Visual Studio. @@ -144,7 +146,7 @@ The NuGet Package Manager is included in every edition of Visual Studio on Windo For Visual Studio 2015 Update 2 and later, the Package Manager is automatically updated to the latest stable release. -For earlier versions of Visual Studio, select the **Tools > Extensions and Updates** command and click on the **Updates** tab to see if a new version of the Package Manager is available. +For Visual Studio 2015 Update 1 and earlier, select the **Tools > Extensions and Updates** command and click on the **Updates** tab to see if a new version of the Package Manager is available. ### NuGet previews diff --git a/docs/Tools/ps-ref-open-packagepage.md b/docs/Tools/ps-ref-open-packagepage.md index 824d7ca5a..0d2299ce3 100644 --- a/docs/Tools/ps-ref-open-packagepage.md +++ b/docs/Tools/ps-ref-open-packagepage.md @@ -50,7 +50,7 @@ Open-PackagePage [-Id] [-Version] [-Source] [-License] [-ReportAbuse] | Source | The package source, defaulting to the selected source in the source drop-down. | | License | Opens the browser to the package's License URL. If neither -License nor -ReportAbuse is specified, the browser opens the package's Project URL. | | ReportAbuse | Opens the browser to the package's Report Abuse URL. If neither -License nor -ReportAbuse is specified, the browser opens the package's Project URL. | -| PassThru | Displays the URL but does not open it in the browser. | +| PassThru | Displays the URL; use with -WhatIf to suppress opening the browser. | None of these parameters accept pipeline input or wildcard characters. @@ -71,6 +71,6 @@ Open-PackagePage Ninject -License Open-PackagePage Ninject -ReportAbuse # Assigns the license URL to the variable, $url, without launching the browser -$url = Open-PackagePage Ninject -License -PassThru +$url = Open-PackagePage Ninject -License -PassThru -WhatIf ``` \ No newline at end of file diff --git a/docs/Tools/ps-ref-update-package.md b/docs/Tools/ps-ref-update-package.md index a99540e8d..09ee6c65f 100644 --- a/docs/Tools/ps-ref-update-package.md +++ b/docs/Tools/ps-ref-update-package.md @@ -91,5 +91,17 @@ Update-Package -Id Elmah -Version 1.1.0 # For example, if Elmah version 1.0.0 of a package is installed, and versions 1.0.1, 1.0.2, # and 1.1 are available in the feed, the -Safe parameter updates the package to 1.0.2 instead # of 1.1 as it would otherwise. -Update-Package Elmah -Project MvcApplication1 -Safe +Update-Package Elmah -ProjectName MvcApplication1 -Safe + +# Reinstall the same version of the original package, but with the latest version of dependencies +# (subject to version constraints). If this command rolls a dependency back to an earlier version, +# use Update-Package to reinstall that one dependency without affecting the +# dependent package. +Update-Package ELmah –reinstall + +# Reinstall the Elmah package in just MyProject +Update-Package Elmah -ProjectName MyProject -reinstall + +# Reinstall the same version of the original package without touching dependencies. +Update-Package ELmah –reinstall -ignoreDependencies ``` \ No newline at end of file From 32920c7306c1ea5fcd88f433cc1b0e905fdf72e4 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 5 Oct 2017 12:01:21 -0700 Subject: [PATCH 0221/2943] Tweaks --- docs/Create-Packages/Publish-a-package.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index fe5080b02..ecf518320 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -49,8 +49,8 @@ Next, you can either upload the package through the nuget.org web portal, or pus ![Upload a package with the NuGet Package Manager](media/publish_UploadYourPackage.PNG) - Command line: -> [!Note] -> To push packages, you would need to use the [latest NuGet.exe clients](https://www.nuget.org/downloads) (v4.3.0 or above) +> [!Important] +> To push packages, you would need to use the [nuget.exe client 4.3.0 or above](https://www.nuget.org/downloads). 1. Click on your user name to navigate to your account settings. 2. Under **API Key**, click **copy to clipboard** to retrieve the access key you'll need in the CLI: From e8b499e9bb64d30706a94fed8377b6a1e57f209b Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 5 Oct 2017 12:02:11 -0700 Subject: [PATCH 0222/2943] Tweaks --- docs/Create-Packages/Symbol-Packages.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index 7c602373c..8e7c54b89 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -111,8 +111,8 @@ A symbol package can be built by conventions, from a folder structure as describ ## Publishing a symbol package -> [!Note] -> To push packages, you would need to use the [latest NuGet.exe clients](https://www.nuget.org/downloads) (v4.3.0 or above) +> [!Important] +> To push packages, you would need to use the [nuget.exe clients 4.3.0 or above](https://www.nuget.org/downloads). 1. For convenience, first save your API key with NuGet (see [publish a package](../create-packages/publish-a-package.md), which will apply to both nuget.org and symbolsource.org, because symbolsource.org will check with nuget.org to verify that you are the package owner. From 3f9795041f76679e95bc2d964e573d5152038173 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 5 Oct 2017 12:03:37 -0700 Subject: [PATCH 0223/2943] Tweaks --- docs/Tools/nuget-exe-CLI-Reference.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 965ae6c60..b30bc5b38 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -504,8 +504,8 @@ nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5 ## push -> [!Note] -> To push packages, you would need to use the [latest NuGet.exe clients](https://www.nuget.org/downloads) (v4.3.0 or above) +> [!Important] +> To push packages, you must use [nuget.exe 4.3.0 or above](https://www.nuget.org/downloads). Pushes a package to a package source and publishes it. From 945d06beebc52ccddba1558a70ebffc5b8f39709 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 5 Oct 2017 12:04:13 -0700 Subject: [PATCH 0224/2943] Matching other topics --- docs/Create-Packages/Symbol-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index 8e7c54b89..7750f8757 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -112,7 +112,7 @@ A symbol package can be built by conventions, from a folder structure as describ ## Publishing a symbol package > [!Important] -> To push packages, you would need to use the [nuget.exe clients 4.3.0 or above](https://www.nuget.org/downloads). +> To push packages, you must use [nuget.exe 4.3.0 or above](https://www.nuget.org/downloads). 1. For convenience, first save your API key with NuGet (see [publish a package](../create-packages/publish-a-package.md), which will apply to both nuget.org and symbolsource.org, because symbolsource.org will check with nuget.org to verify that you are the package owner. From 28a5bae89e74beb6cf693c9ddb818e852ff63abc Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 5 Oct 2017 12:04:59 -0700 Subject: [PATCH 0225/2943] Matching other topics --- docs/Create-Packages/Publish-a-package.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index ecf518320..7f4d255b5 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -5,7 +5,7 @@ title: How to Publish a NuGet Package | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/17/2017 +ms.date: 10/5/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -49,8 +49,8 @@ Next, you can either upload the package through the nuget.org web portal, or pus ![Upload a package with the NuGet Package Manager](media/publish_UploadYourPackage.PNG) - Command line: -> [!Important] -> To push packages, you would need to use the [nuget.exe client 4.3.0 or above](https://www.nuget.org/downloads). + > [!Important] + > To push packages, you must use [nuget.exe 4.3.0 or above](https://www.nuget.org/downloads). 1. Click on your user name to navigate to your account settings. 2. Under **API Key**, click **copy to clipboard** to retrieve the access key you'll need in the CLI: From 24d7e462bc1b1bdb7bf4ed1bab9662191bdbf33e Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 5 Oct 2017 12:07:31 -0700 Subject: [PATCH 0226/2943] Clarifying push version --- docs/Tools/nuget-exe-CLI-Reference.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index b30bc5b38..b482051e4 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -46,7 +46,7 @@ Available commands and applicability to package creation, package consumption, a | [locals](#locals) | Consumption | 3.3+ | Clears or lists packages in various caches or the global packages folder, or identifies those folders. | | [mirror](#mirror) | Publishing | Deprecated in 3.2+ | Mirrors a package and its dependencies from a source to a target repository. | | [pack](#pack) | Creation | 2.7+ | Creates a NuGet package from a `.nuspec` or project file. On Mac OSX with Mono, creating a package from a project file is not supported. | -| [push](#push) | Publishing | 4.1+ | Publishes a package to a package source. | +| [push](#push) | Publishing | 4.3+ | Publishes a package to a package source. The push command is available in all versions of nuget.exe, but 4.3+ is required to push to nuget.org. | | [restore](#restore) | Consumption | 2.7+ | Restores all packages referenced by the package reference format in use. Note: restoring packages using the PackageReference format is not supported with the CLI on Mono. | | [setapikey](#setapikey) | Consumption, Publishing | All | Saves an API key for a given package source when that package source requires a key for access. | | [sources](#sources) | Consumption, Publishing | All | Manages package sources in configuration files. | @@ -505,7 +505,7 @@ nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5 ## push > [!Important] -> To push packages, you must use [nuget.exe 4.3.0 or above](https://www.nuget.org/downloads). +> To push packages to nuget.org, you must use [nuget.exe 4.3.0 or above](https://www.nuget.org/downloads). Pushes a package to a package source and publishes it. From 841ff22202dfe56ac15a0a23296584e872a865d5 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 5 Oct 2017 12:08:09 -0700 Subject: [PATCH 0227/2943] Clarifying push to nuget.org --- docs/Create-Packages/Symbol-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index 7750f8757..a5ffceb89 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -112,7 +112,7 @@ A symbol package can be built by conventions, from a folder structure as describ ## Publishing a symbol package > [!Important] -> To push packages, you must use [nuget.exe 4.3.0 or above](https://www.nuget.org/downloads). +> To push packages to nuget.org, you must use [nuget.exe 4.3.0 or above](https://www.nuget.org/downloads). 1. For convenience, first save your API key with NuGet (see [publish a package](../create-packages/publish-a-package.md), which will apply to both nuget.org and symbolsource.org, because symbolsource.org will check with nuget.org to verify that you are the package owner. From 8350c959c14d2178fb361257f1945b4c3dd8f8af Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 5 Oct 2017 12:08:35 -0700 Subject: [PATCH 0228/2943] Clarify for nuget.org --- docs/Create-Packages/Publish-a-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index 7f4d255b5..a71297eee 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -50,7 +50,7 @@ Next, you can either upload the package through the nuget.org web portal, or pus - Command line: > [!Important] - > To push packages, you must use [nuget.exe 4.3.0 or above](https://www.nuget.org/downloads). + > To push packages to nuget.org, you must use [nuget.exe 4.3.0 or above](https://www.nuget.org/downloads). 1. Click on your user name to navigate to your account settings. 2. Under **API Key**, click **copy to clipboard** to retrieve the access key you'll need in the CLI: From 1bf15972e84016c09b945b072657073aab8aead7 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 6 Oct 2017 15:37:29 -0700 Subject: [PATCH 0229/2943] Update Publish-a-package.md --- docs/Create-Packages/Publish-a-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index a71297eee..8272464e9 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -50,7 +50,7 @@ Next, you can either upload the package through the nuget.org web portal, or pus - Command line: > [!Important] - > To push packages to nuget.org, you must use [nuget.exe 4.3.0 or above](https://www.nuget.org/downloads). + > To push packages, you need to use the latest NuGet clients (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the latest [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). 1. Click on your user name to navigate to your account settings. 2. Under **API Key**, click **copy to clipboard** to retrieve the access key you'll need in the CLI: From 82980c1e29feec05d94606f45945b6ef64e517a0 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 6 Oct 2017 15:38:22 -0700 Subject: [PATCH 0230/2943] Update Symbol-Packages.md --- docs/Create-Packages/Symbol-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index a5ffceb89..abf60192b 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -112,7 +112,7 @@ A symbol package can be built by conventions, from a folder structure as describ ## Publishing a symbol package > [!Important] -> To push packages to nuget.org, you must use [nuget.exe 4.3.0 or above](https://www.nuget.org/downloads). +> To push packages, you need to use the latest NuGet clients (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the latest [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). 1. For convenience, first save your API key with NuGet (see [publish a package](../create-packages/publish-a-package.md), which will apply to both nuget.org and symbolsource.org, because symbolsource.org will check with nuget.org to verify that you are the package owner. From b96535e6035fa2de2a4c97615ce7399fa053f4a6 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 6 Oct 2017 15:39:00 -0700 Subject: [PATCH 0231/2943] Update nuget-exe-CLI-Reference.md --- docs/Tools/nuget-exe-CLI-Reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index b482051e4..55fe33d6d 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -505,7 +505,7 @@ nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5 ## push > [!Important] -> To push packages to nuget.org, you must use [nuget.exe 4.3.0 or above](https://www.nuget.org/downloads). +> To push packages, you need to use the latest NuGet clients (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the latest [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). Pushes a package to a package source and publishes it. From aabc50e144f870138cfb8e451c6b3531e3c09df2 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 6 Oct 2017 15:42:17 -0700 Subject: [PATCH 0232/2943] Update Publish-a-package.md --- docs/Create-Packages/Publish-a-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index 8272464e9..feefa3a55 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -50,7 +50,7 @@ Next, you can either upload the package through the nuget.org web portal, or pus - Command line: > [!Important] - > To push packages, you need to use the latest NuGet clients (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the latest [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). + > To push packages to NuGet.org, you need to use the latest NuGet clients (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the latest [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). 1. Click on your user name to navigate to your account settings. 2. Under **API Key**, click **copy to clipboard** to retrieve the access key you'll need in the CLI: From 14f79dcd3b05d2bb33f28739e3a782f80d96e1df Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 6 Oct 2017 15:42:53 -0700 Subject: [PATCH 0233/2943] Update Symbol-Packages.md --- docs/Create-Packages/Symbol-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index abf60192b..e692c0c6d 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -112,7 +112,7 @@ A symbol package can be built by conventions, from a folder structure as describ ## Publishing a symbol package > [!Important] -> To push packages, you need to use the latest NuGet clients (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the latest [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). +> To push packages to NuGet.org, you need to use the latest NuGet clients (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the latest [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). 1. For convenience, first save your API key with NuGet (see [publish a package](../create-packages/publish-a-package.md), which will apply to both nuget.org and symbolsource.org, because symbolsource.org will check with nuget.org to verify that you are the package owner. From fc4fc2fd78b588d8268290a470e6bcb2d93ee98c Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 6 Oct 2017 15:43:34 -0700 Subject: [PATCH 0234/2943] Update nuget-exe-CLI-Reference.md --- docs/Tools/nuget-exe-CLI-Reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 55fe33d6d..6e2463c6a 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -505,7 +505,7 @@ nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5 ## push > [!Important] -> To push packages, you need to use the latest NuGet clients (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the latest [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). +> To push packages to NuGet.org, you need to use the latest NuGet clients (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). Pushes a package to a package source and publishes it. From 471fbd0145049fac38f9a3937af74293d46cde28 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 6 Oct 2017 15:43:54 -0700 Subject: [PATCH 0235/2943] Update Symbol-Packages.md --- docs/Create-Packages/Symbol-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index e692c0c6d..86861aad6 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -112,7 +112,7 @@ A symbol package can be built by conventions, from a folder structure as describ ## Publishing a symbol package > [!Important] -> To push packages to NuGet.org, you need to use the latest NuGet clients (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the latest [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). +> To push packages to NuGet.org, you need to use the latest NuGet clients (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). 1. For convenience, first save your API key with NuGet (see [publish a package](../create-packages/publish-a-package.md), which will apply to both nuget.org and symbolsource.org, because symbolsource.org will check with nuget.org to verify that you are the package owner. From 8c01825ad3de19baf46e66db01cd628b90850f75 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 6 Oct 2017 15:44:25 -0700 Subject: [PATCH 0236/2943] Update Publish-a-package.md --- docs/Create-Packages/Publish-a-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index feefa3a55..7f3c50b2d 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -50,7 +50,7 @@ Next, you can either upload the package through the nuget.org web portal, or pus - Command line: > [!Important] - > To push packages to NuGet.org, you need to use the latest NuGet clients (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the latest [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). + > To push packages to NuGet.org, you need to use the latest NuGet clients (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). 1. Click on your user name to navigate to your account settings. 2. Under **API Key**, click **copy to clipboard** to retrieve the access key you'll need in the CLI: From d69941a55f5dd0f9efb0539e4e5389061804d564 Mon Sep 17 00:00:00 2001 From: John Van Tuyl Date: Mon, 9 Oct 2017 11:01:49 -0700 Subject: [PATCH 0237/2943] Fixed up a couple small typos --- docs/Consume-Packages/Reinstalling-and-Updating-Packages.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index 639bd2454..536df2a4e 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -24,14 +24,14 @@ ms.reviewer: # How to reinstall and update packages -There are a number of situations, described below under [When to Reinstall a Package](#when-to-reinstall-a-package), where references to a package might get broken within a Visual Studio project. In these cases, uninstalling and then reinstalling the same version of the package will restore those reference to working order. Updating a package simply means installing an updated version, which often restores a package to working order. +There are a number of situations, described below under [When to Reinstall a Package](#when-to-reinstall-a-package), where references to a package might get broken within a Visual Studio project. In these cases, uninstalling and then reinstalling the same version of the package will restore those references to working order. Updating a package simply means installing an updated version, which often restores a package to working order. Updating and reinstalling packages is accomplished as follows: | Method | Update | Reinstall | | --- | --- | --- | | Package Manager console (described in [Using Update-Package](#using-update-package)) | `Update-Package` command | `Update-Package -reinstall` command | -| Package Manager UI | On the **Updates** tab, select one or more packages and select **Update** | One the **Installed** tab, select a package, record its name, then select **Uninstall**. Switch to the **Browse** tab, search for the package name, select it, then select **Install**). | +| Package Manager UI | On the **Updates** tab, select one or more packages and select **Update** | On the **Installed** tab, select a package, record its name, then select **Uninstall**. Switch to the **Browse** tab, search for the package name, select it, then select **Install**). | | nuget.exe CLI | `nuget update` command | For all packages, delete the package folder, then run `nuget install`. For a single package, delete the package folder and use `nuget install ` to reinstall the same one. | In this topic: From 5735fd237902ca63a5ef47edda0c5c177f3d91a0 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 9 Oct 2017 16:41:39 -0700 Subject: [PATCH 0238/2943] Update NuGet-4.3-RTM.md --- docs/Release-Notes/NuGet-4.3-RTM.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/docs/Release-Notes/NuGet-4.3-RTM.md b/docs/Release-Notes/NuGet-4.3-RTM.md index 6ad6e5511..ef3c5af10 100644 --- a/docs/Release-Notes/NuGet-4.3-RTM.md +++ b/docs/Release-Notes/NuGet-4.3-RTM.md @@ -47,6 +47,30 @@ The following restore command-line techniques treat disabled packages sources as 1. Delete your disabled source and continue to use msbuild or dotnet.exe. 1. For your solution, you could use "Clear" in NuGet.config and then define the sources necessary for that solution. +### While using Package Manager Console, 'Enter' key may not work + +#### Issue: +Occasionally, the enter key does not work in the Package Manager Console. If you see this, please check out the progress on the fix, and provide any additional helpful information about your repro steps. [NuGet#4204](https://github.com/NuGet/Home/issues/4204) [NuGet#4570](https://github.com/NuGet/Home/issues/4570) + +#### Workaround: +Restart Visual Studio and open the PMC before opening the solution. Alternatively, try deleting the `project.lock.json` and restoring again. + +### You will be unable to view, add, or update DotNetCLITools, using Nuget Package Manager + +#### Issue: +NuGet Package Manager does not display and does not allow add/update of DotNetCLITools. [NuGet#4256](https://github.com/NuGet/Home/issues/4256) + +#### Workaround: +DotNetCLIToolReferences must be manually edited in your project file. + +### Retargeting target framework version may lead to incomplete Intellisense + +#### Issue: +Retargeting target framework version may lead to incomplete Intellisense, in Visual Studio. This happens when you are using PackageReferences as the package manager format. [NuGet#4216](https://github.com/NuGet/Home/issues/4216) + +#### Workaround: +Do a manual restore. + ## Issues fixed in NuGet 4.3 RTM timeframe From 5d7ce73e58fca7a65ee22bb6e71c47cee487f059 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 9 Oct 2017 21:37:34 -0700 Subject: [PATCH 0239/2943] Create NuGet-4.4-RTM.md (#500) * Create NuGet-4.4-RTM.md * Update NuGet-4.4-RTM.md * Update NuGet-4.4-RTM.md * Update NuGet-4.4-RTM.md --- docs/Release-Notes/NuGet-4.4-RTM.md | 199 ++++++++++++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 docs/Release-Notes/NuGet-4.4-RTM.md diff --git a/docs/Release-Notes/NuGet-4.4-RTM.md b/docs/Release-Notes/NuGet-4.4-RTM.md new file mode 100644 index 000000000..3abd1fe52 --- /dev/null +++ b/docs/Release-Notes/NuGet-4.4-RTM.md @@ -0,0 +1,199 @@ +--- +# required metadata + +title: NuGet 4.4 RTM Release Notes | Microsoft Docs +author: karann +ms.author: karann +manager: unnir +ms.date: 08/14/2017 +ms.topic: article +ms.prod: nuget +#ms.service: +ms.technology: null +ms.assetid: 5ffca6f6-a126-4407-b22f-1323e7dc44a3 + +# optional metadata + +description: Release notes for NuGet 4.3 RTM including known issues, bug fixes, added features, and DCRs. +keywords: NuGet 4.3 RTM release notes, bug fixes, known issues, added features, DCRs +#ROBOTS: +#audience: +#ms.devlang: +ms.reviewer: +- karann +- unnir +- anangaur +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: + +--- + +# 4.4 RTM Release Notes + +[Visual Studio 2017 15.4 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.4 RTM. + +## Known issues + +### Issues with .NET Standard 2.0 with .NET Framework & NuGet +.NET Standard & our tooling was desgined such that projects targeting .NET Framework 4.6.1 can consume NuGet packages & projects targeting .NET Standard 2.0 or earlier. Unfortunately, there are a few issues around that scenario. [This document](https://github.com/dotnet/standard/issues/481) summarizes the issues, the plan for addressing them, and workarounds you can deploy with today's state of the tooling. + +### While using Package Manager Console, 'Enter' key may not work + +#### Issue: +Occasionally, the enter key does not work in the Package Manager Console. If you see this, please check out the progress on the fix, and provide any additional helpful information about your repro steps. [NuGet#4204](https://github.com/NuGet/Home/issues/4204) [NuGet#4570](https://github.com/NuGet/Home/issues/4570) + +#### Workaround: +Restart Visual Studio and open the PMC before opening the solution. Alternatively, try deleting the `project.lock.json` and restoring again. + +### You will be unable to view, add, or update DotNetCLITools, using Nuget Package Manager + +#### Issue: +NuGet Package Manager does not display and does not allow add/update of DotNetCLITools. [NuGet#4256](https://github.com/NuGet/Home/issues/4256) + +#### Workaround: +DotNetCLIToolReferences must be manually edited in your project file. + +### Retargeting target framework version may lead to incomplete Intellisense + +#### Issue: +Retargeting target framework version may lead to incomplete Intellisense, in Visual Studio. This happens when you are using PackageReferences as the package manager format. [NuGet#4216](https://github.com/NuGet/Home/issues/4216) + +#### Workaround: +Do a manual restore. + + +### A package in a .NET Core project that contains an assembly with an invalid signature, can trigger an infinite restore loop + +#### Issue: +Occasionally, when you use a package that contains an assembly with an invalid signature or when the package version is set with 'DateTime' ticker, it causes the package auto-restore to run in an infinite loop (dotnet/project-system#1457). + +#### Workaround: +There is no workaround at this time. + + +## Issues fixed in NuGet 4.4 RTM timeframe + +[NuGet 4.3 RTM Release Notes](../release-notes/nuget-4.3-RTM.md) - Lists all the issues fixed for NuGet 4.3 RTM + +**Feature:** + +* Support for Lightweight Solution Load in PMC and NuGet PM UI scenarios - [#5180](https://github.com/NuGet/Home/issues/5180) + +* The msbuild pack target should have a public hook for running user targets before itself - [#5143](https://github.com/NuGet/Home/issues/5143) + +* Feature: Add dependencyVersion switch to nuget install - [#1806](https://github.com/NuGet/Home/issues/1806) + +* uap10.0.TODO.0 should map to .NET Standard 2.0 for NuGet - [#5684](https://github.com/NuGet/Home/issues/5684) + +* Support Visual Studio Build Tools SKU with msbuild /t:restore - [#5562](https://github.com/NuGet/Home/issues/5562) + +* During restore, generate an error if .NET 4.6.1 support for .NET Standard 2.0 is required but not installed - [#5325](https://github.com/NuGet/Home/issues/5325) + +* Package ID prefix reservation client UI - [#5572](https://github.com/NuGet/Home/issues/5572) + +* deliver localized nuget components to support dotnet.exe localization - [#4336](https://github.com/NuGet/Home/issues/4336) + +**Bug:** + +* Different project path casings can cause restore to lose PackageReferences - [#5855](https://github.com/NuGet/Home/issues/5855) + +* Move error codes with warning numbers to error range - [#5824](https://github.com/NuGet/Home/issues/5824) + +* Misleading error when .NET Standard version is not known to be compatible with target framework - [#5818](https://github.com/NuGet/Home/issues/5818) + +* Test files with confusing licenses - [#5776](https://github.com/NuGet/Home/issues/5776) + +* Missing license headers in EndToEnd test templates - [#5774](https://github.com/NuGet/Home/issues/5774) + +* packages.config restore shows errors as NU1000 - [#5743](https://github.com/NuGet/Home/issues/5743) + +* nuget.exe install should have DisableParallelProcessing on mono - [#5741](https://github.com/NuGet/Home/issues/5741) + +* nuget.exe install incorrectly disables caching - [#5737](https://github.com/NuGet/Home/issues/5737) + +* VS Running the restore command for packages.config when Restore is disabled displays incorrect message - [#5718](https://github.com/NuGet/Home/issues/5718) + +* VS; Running the restore command when Restore is disabled displays a confusing message - [#5659](https://github.com/NuGet/Home/issues/5659) + +* GetRestoreDotnetCliToolsTask fails when missing version metadata - [#5716](https://github.com/NuGet/Home/issues/5716) + +* dotnet add package can clear empty lines from a csproj - [#5697](https://github.com/NuGet/Home/issues/5697) + +* Source names of credential settings in NuGet.Config are case sensitive - [#5695](https://github.com/NuGet/Home/issues/5695) + +* Enabling GeneratePackageOnBuild deleted my entire history of packages - [#5676](https://github.com/NuGet/Home/issues/5676) + +* Restore will not restore mono.cecil or semver packages, but all other packages get restored. - [#5649](https://github.com/NuGet/Home/issues/5649) + +* Errors and Warnings - bad error when a source in unavailable. - [#5644](https://github.com/NuGet/Home/issues/5644) + +* [DesignConsistency] NuGet Installation status text doesn’t look correct on dark theme currently. - [#5642](https://github.com/NuGet/Home/issues/5642) + +* Update packages at solution updates/installs for all the projects - [#5508](https://github.com/NuGet/Home/issues/5508) + +* dotnet pack behaves differently depending on TargetFramework vs TargetFrameworks - [#5281](https://github.com/NuGet/Home/issues/5281) + +* Included DLLs inside Tools folder throw warnings - [#5020](https://github.com/NuGet/Home/issues/5020) + +* NuGet.ContentModel consumes too much memory for string operations - [#4714](https://github.com/NuGet/Home/issues/4714) + +* RuntimeEnvironmentHelper.IsLinux returns true for OSX - [#4648](https://github.com/NuGet/Home/issues/4648) + +* 'dotnet pack' puts nuspec under obj instead of obj\Debug - [#4644](https://github.com/NuGet/Home/issues/4644) + +* Nuget extremely slow package upgrade - [#4534](https://github.com/NuGet/Home/issues/4534) + +* CPS out of sync with Restore with larger solutions that haven't turned on LSL (lightweight solution restore) - [#4307](https://github.com/NuGet/Home/issues/4307) + +* SemVer 2.0 - nuget pack with provided version ignores metadata (3.5.0-rtm-1938) - [#3643](https://github.com/NuGet/Home/issues/3643) + +* Nuget.exe (3.+) install package with Version number and ExcludeVersion flag doesn't update package to newer version - [#2405](https://github.com/NuGet/Home/issues/2405) + +* Project.json restore should warn when top level packages violate constraints - [#2358](https://github.com/NuGet/Home/issues/2358) + +* -ConfigFile is not setting custom config on install command - [#1646](https://github.com/NuGet/Home/issues/1646) + +* nuget.exe install does not honor '-DisableParallelProcessing' switch - [#1556](https://github.com/NuGet/Home/issues/1556) + +* Disabled sources still used by DotNet.exe or msbuild.exe - [#5704](https://github.com/NuGet/Home/issues/5704) + +* Fix hangs in LSL scenario - [#5685](https://github.com/NuGet/Home/issues/5685) + +**DCR:** + +* nuget.exe install TargetFramework support - [#5736](https://github.com/NuGet/Home/issues/5736) + +* Add different msbuild task UserAgent strings (netcore vs desktop msbuild) - [#5709](https://github.com/NuGet/Home/issues/5709) + +* PackagePathResolver.GetPackageDirectoryName should be virtual - [#5700](https://github.com/NuGet/Home/issues/5700) + +* [DesignConsistency] Confusing message when adding a NuGet package - [#5641](https://github.com/NuGet/Home/issues/5641) + +* [Warnings and errors] NoWarn does not flow transitively through P2P references - [#5501](https://github.com/NuGet/Home/issues/5501) + +* Lightweight Solution Load: Common Core for PM UI, PMC, and IVs* - [#5057](https://github.com/NuGet/Home/issues/5057) + +* Lightweight Solution Load: Support - PMC - [#5053](https://github.com/NuGet/Home/issues/5053) + +* Add support for pre restore MSBuild target that Visual Studio triggers - [#4781](https://github.com/NuGet/Home/issues/4781) + +* Add a public target to NuGet.targets that can be referenced using BeforeTargets - [#4634](https://github.com/NuGet/Home/issues/4634) + +* Pack target can't create contentFiles with build actions correctly - [#4166](https://github.com/NuGet/Home/issues/4166) + +* RestoreOperationLogger.Do blocks thread pool threads - [#5663](https://github.com/NuGet/Home/issues/5663) + +**Docs:** + +* Docs for Install command DependencyVersion and Framework flags - [#5858](https://github.com/NuGet/Home/issues/5858) + +* Update to docs on NuGet warnings and errors - [#5857](https://github.com/NuGet/Home/issues/5857) + +## Link to GitHub issues fixed in 4.4 RTM + +[Issues List 1](https://github.com/NuGet/Home/issues?q=is:issue+is:closed+milestone:"4.4") + +[Issues List 2](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.4+-+7%2F31+through+8%2F18%22) + +[Issues List 3](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.4+-+7%2F10+through+7%2F28%22) From deb8bbd5aafeebfc918f7e0534b59881c1b63015 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 9 Oct 2017 21:40:19 -0700 Subject: [PATCH 0240/2943] Update Index.md --- docs/Release-Notes/Index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/Release-Notes/Index.md b/docs/Release-Notes/Index.md index db30ac819..df0e66666 100644 --- a/docs/Release-Notes/Index.md +++ b/docs/Release-Notes/Index.md @@ -32,6 +32,8 @@ ms.reviewer: [Known Issues](../release-notes/known-issues.md) +[NuGet 4.4 RTM](../release-notes/nuget-4.4-rtm.md) + [NuGet 4.3 RTM](../release-notes/nuget-4.3-rtm.md) [NuGet 4.0 RTM](../release-notes/nuget-4.0-rtm.md) From 7bd817a4f01f9fe2b0e3ca1a170ddcb5947cba89 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 9 Oct 2017 21:42:46 -0700 Subject: [PATCH 0241/2943] Update TOC.md --- docs/TOC.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/TOC.md b/docs/TOC.md index 75f4646cd..ebc5b1999 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -79,6 +79,7 @@ # [GitHub Repositories](https://github.com/NuGet) # Release Notes ## [Known Issues](Release-Notes/Known-Issues.md) +## [NuGet 4.4 RTM](Release-Notes/NuGet-4.4-RTM.md) ## [NuGet 4.3 RTM](Release-Notes/NuGet-4.3-RTM.md) ## [NuGet 4.0 RTM](Release-Notes/NuGet-4.0-RTM.md) ## [NuGet 4.0 RC](Release-Notes/NuGet-4.0-RC.md) From b707d254c80ebb2f1489343a1e9b28bcfaa547a0 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 9 Oct 2017 21:45:17 -0700 Subject: [PATCH 0242/2943] Update NuGet-4.4-RTM.md --- docs/Release-Notes/NuGet-4.4-RTM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Release-Notes/NuGet-4.4-RTM.md b/docs/Release-Notes/NuGet-4.4-RTM.md index 3abd1fe52..d38ac3cb4 100644 --- a/docs/Release-Notes/NuGet-4.4-RTM.md +++ b/docs/Release-Notes/NuGet-4.4-RTM.md @@ -36,7 +36,7 @@ ms.reviewer: ## Known issues ### Issues with .NET Standard 2.0 with .NET Framework & NuGet -.NET Standard & our tooling was desgined such that projects targeting .NET Framework 4.6.1 can consume NuGet packages & projects targeting .NET Standard 2.0 or earlier. Unfortunately, there are a few issues around that scenario. [This document](https://github.com/dotnet/standard/issues/481) summarizes the issues, the plan for addressing them, and workarounds you can deploy with today's state of the tooling. +.NET Standard & its tooling was desgined such that projects targeting .NET Framework 4.6.1 can consume NuGet packages & projects targeting .NET Standard 2.0 or earlier. [This document](https://github.com/dotnet/standard/issues/481) summarizes the issues around that scenario, the plan for addressing them, and workarounds you can deploy with today's state of the tooling. ### While using Package Manager Console, 'Enter' key may not work From ae5648c5d8ad06ee3ed2f90299e8bc83ec80cfa1 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 9 Oct 2017 21:51:20 -0700 Subject: [PATCH 0243/2943] Update NuGet-4.4-RTM.md --- docs/Release-Notes/NuGet-4.4-RTM.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Release-Notes/NuGet-4.4-RTM.md b/docs/Release-Notes/NuGet-4.4-RTM.md index d38ac3cb4..9f1bd76f8 100644 --- a/docs/Release-Notes/NuGet-4.4-RTM.md +++ b/docs/Release-Notes/NuGet-4.4-RTM.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 4.4 RTM Release Notes | Microsoft Docs -author: karann -ms.author: karann +author: karann-msft +ms.author: karann-msft manager: unnir ms.date: 08/14/2017 ms.topic: article From 41e38250b5655ddfb3faaccc5efe141ee0c17381 Mon Sep 17 00:00:00 2001 From: Daniel Jacobson Date: Tue, 10 Oct 2017 12:57:55 -0700 Subject: [PATCH 0244/2943] Adding ID Prefix Reservation docs (#501) * Create ID-Prefix-Reservation.md * initial commit * consistent formatting * moving images * Update ID-Prefix-Reservation.md * Update ID-Prefix-Reservation.md * Update ID-Prefix-Reservation.md * Update ID-Prefix-Reservation.md * Update ID-Prefix-Reservation.md --- docs/Reference/ID-Prefix-Reservation.md | 112 ++++++++++++++++++ .../media/nuget-gallery-reserved-prefix.png | Bin 0 -> 37998 bytes .../media/visual-studio-reserved-prefix.png | Bin 0 -> 12353 bytes 3 files changed, 112 insertions(+) create mode 100644 docs/Reference/ID-Prefix-Reservation.md create mode 100644 docs/Reference/media/nuget-gallery-reserved-prefix.png create mode 100644 docs/Reference/media/visual-studio-reserved-prefix.png diff --git a/docs/Reference/ID-Prefix-Reservation.md b/docs/Reference/ID-Prefix-Reservation.md new file mode 100644 index 000000000..d2af711f8 --- /dev/null +++ b/docs/Reference/ID-Prefix-Reservation.md @@ -0,0 +1,112 @@ +--- +# required metadata + +title: ID Prefix Reservation Reference | Microsoft Docs +author: diverdan92 +ms.author: diverdan92 +manager: unniravindranathan +ms.date: 10/9/2017 +ms.topic: reference +ms.prod: nuget +#ms.service: +ms.technology: null +#ms.assetid: + +# optional metadata + +description: Package ID Prefix Reservation feature description and author guide. +keywords: NuGet package ID, prefix, reservation +#ROBOTS: +#audience: +#ms.devlang: +ms.reviewer: +- ananguar +- karann-msft +- unniravindranathan +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: + +--- + +# Package ID prefix reservation +[NuGet.org](https://www.nuget.org/) and Visual Studio 2017 version 15.4 or later show a visual indicator for packages that are submitted by owners with a reserved package ID prefix, as long as the package matches the reserved ID prefix naming pattern. The below reference explains what the ID prefix reservation entails, and how an owner can apply for an ID prefix. + +## What is package ID prefix reservation? +Package owners are able to reserve and protect their identity by reserving ID prefixes. Package consumers are provided with additional information when consuming packages that the package they are consuming are not deceptive in their identifying properties. Read on to see how ID prefix reservation works in details. + +## ID prefix reservation details +When a package ID prefix is reserved, several things happen on the [NuGet.org](https://www.nuget.org/) gallery, as well as in Visual Studio. In addition, there are advanced scenarios that are supported by ID prefix reservations, such as setting a prefix as 'public', delegating prefix subsets to multiple owners. + +The below section describes the feature in detail, as well as the more advanced functionality. + +### ID prefix reservation on NuGet.org +When a prefix is reserved on [NuGet.org](https://www.nuget.org/), the following will happen: +1. A prefix reservation is associated with an owner or set of owners on [NuGet.org](https://www.nuget.org/). +2. Whenever a package is submitted to [NuGet.org](https://www.nuget.org/) with an ID that matches the reserved ID prefix, the package is rejected unless it originates from the owner(s) that reserved the ID prefix. +3. Any package that matches the reserved ID prefix and originates from the owner(s) that reserved the ID prefix will have a visual indicator in Visual Studio 2017 version 15.4 or later, and on [NuGet.org](https://www.nuget.org/) indicating that the package is under a reserved ID prefix. This is true for both new package submissions as well as existing packages under the owner(s). **Note:** The indicator in Visual Studio will only appear if a single feed is selected as the package source. +4. All previously existing packages that match the reserved ID prefix, but are *not* owned by the owner of the reserved prefix will remain unchanged (they will not be unlisted, but they will also not have the visual indicator). In addition, owners of these packages will still be able to submit new versions to the package. + +These changes are based on the following conditions and impose several additional restrictions: +* Only one owner of a package needs to have the reserved prefix for the visual indicator to appear (for packages with multiple-owners). +* If there is more than one owner of a package where one or more owners has the reserved prefix and one or more owners does not have the reserved prefix, then only the owner(s) with the reserved prefix can remove other owner(s) with a reserved prefix. The owners who do not have the prefix reserved cannot remove owners with the prefix reserved. They can still remove other owners that also do not have the prefix reserved. + * Once a package has the visual indicator, it should *always* have the visual indicator (guaranteeing that at least one owner with the reserved prefix will always remain an owner) + +### Advanced prefix reservation scenarios +There are several more advanced prefix reservation scenarios described below, including subprefix delegation, and marking prefixes as public. Below are the more advanced prefix reservations that can be made. + +* During prefix reservation, the owner can request delegation of prefix subsets (or the prefix) to other owners. For example, if '[Microsoft](https://www.nuget.org/profiles/microsoft)' owns 'Microsoft.\*', but '[aspnet](https://www.nuget.org/profiles/aspnet)' wants to reserve 'Microsoft.AspNet.\*', '[Microsoft](https://www.nuget.org/profiles/microsoft)' can choose to delegate 'Microsoft.AspNet.\*' to the [aspnet](https://www.nuget.org/profiles/aspnet) account. +* During prefix reservation, the owner can choose to make a prefix public. This will still give them the visual indicator showing that the package originates from a reserved prefix, but it will **not** block future package submissions on the prefix for any owner. This is useful for open source projects with many contributors - the top or core contributors can have the prefix reserved, but it can still be open to all contributors. + +### Prefix resveration visual indicator +When a package comes from a reserved prefix, you will see the below visual indicators on the [NuGet.org](https://www.nuget.org/) gallery and in Visual Studio 2017 version 15.4 or later: + +**NuGet.org Gallery** +![NuGet.org Gallery](media/nuget-gallery-reserved-prefix.png) + +**Visual Studio** +![Visual Studio](media/visual-studio-reserved-prefix.png) + +## ID prefix reservation application process +To apply for a prefix reservation, follow the below steps. +1. Review the acceptance [criteria for prefix ID reservation](#id-prefix-reservation-criteria). +2. Determine the namespaces you want to reserve, in addition to any [advanced prefix reservation scenarios](#advanced-prefix-reservation-scenarios) you may require. +3. Send a mail to [account@nuget.org](mailto:account@nuget.org) with the owner display name on [NuGet.org](https://www.nuget.org/), as well as any reserved prefixes you are requesting. If you are delegating prefix subsets to multiple owners, make sure you mention all owner display names and prefix subsets. + +After the application is submitted, you will be notified of acceptance or rejection (with the criteria that caused rejection). We may need to ask additional identifying questions to confirm owner identity. + +### ID prefix reservation criteria +When reviewing any application for ID prefix reservation, the [NuGet.org](https://www.nuget.org/) team will evalaute the application against the below criteria. Not all criteria needs to be met for a prefix to be reserved, but the application may be denied if there is not substantial evidence of the criteria being met (with an explanation given): +1. Does the package ID prefix properly and clearly identify the package owner? +2. Are a significant number of the packages that have already been submitted by the owner under the package ID prefix? +3. Is the package ID prefix something common that should not belong to any individual owner or organization? +4. Would *not* reserving the package ID prefix cause ambiguity and confusion for the community? +5. Are the identifying properties of the packages that match the package ID prefix clear and consistent (especially the package author)? + +## 3rd party feed provider scenarios +If a 3rd party feed provider is interested in implementing their own service to provide prefix reservations, you can do so by modifying the search service in the NuGet v3 feed providers. The addition in the feed search service is to add the *verified* property, with examples for the v3 feeds below. The NuGet client will not support the added property in the v2 feed. + +### v3 search service example +```json +"data": +[ + { + "@id": "https://api.nuget.org/v3/registration2/mysql.data.entity/index.json", + "@type": "Package", + "registration": "https://api.nuget.org/v3/registration2/mysql.data.entity/index.json", + "id": "MySql.Data.Entity", + "version": "6.9.9", + "description": "Entity Framework 6.0 supported", + "summary": "", + "title": "MySql.Data.Entity", + "iconUrl": "http://www.mysql.com/common/logos/logo-mysql-170x115.png", + "licenseUrl": "http://www.gnu.org/licenses/old-licenses/gpl-2.0.html", + "projectUrl": "http://dev.mysql.com/downloads/", + "tags": [], + "authors": [], + "totalDownloads": 434685, + "verified": true, + "versions": [] + }, +] +``` diff --git a/docs/Reference/media/nuget-gallery-reserved-prefix.png b/docs/Reference/media/nuget-gallery-reserved-prefix.png new file mode 100644 index 0000000000000000000000000000000000000000..6493f8b2a981d018cf1413129f367b2614787f56 GIT binary patch literal 37998 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 L_CU2chGhK>>lt#G literal 0 HcmV?d00001 diff --git a/docs/Reference/media/visual-studio-reserved-prefix.png b/docs/Reference/media/visual-studio-reserved-prefix.png new file mode 100644 index 0000000000000000000000000000000000000000..c86247282c8c0bd3e347256169c78893ae35fd52 GIT binary patch literal 12353 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 literal 0 HcmV?d00001 From 32578921fd97b98dff0c739c38b861c389a1fc8b Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 10 Oct 2017 13:25:41 -0700 Subject: [PATCH 0245/2943] Create ID-Prefix-Reservation.md --- docs/Reference/ID-Prefix-Reservation.md | 112 ++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 docs/Reference/ID-Prefix-Reservation.md diff --git a/docs/Reference/ID-Prefix-Reservation.md b/docs/Reference/ID-Prefix-Reservation.md new file mode 100644 index 000000000..d2af711f8 --- /dev/null +++ b/docs/Reference/ID-Prefix-Reservation.md @@ -0,0 +1,112 @@ +--- +# required metadata + +title: ID Prefix Reservation Reference | Microsoft Docs +author: diverdan92 +ms.author: diverdan92 +manager: unniravindranathan +ms.date: 10/9/2017 +ms.topic: reference +ms.prod: nuget +#ms.service: +ms.technology: null +#ms.assetid: + +# optional metadata + +description: Package ID Prefix Reservation feature description and author guide. +keywords: NuGet package ID, prefix, reservation +#ROBOTS: +#audience: +#ms.devlang: +ms.reviewer: +- ananguar +- karann-msft +- unniravindranathan +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: + +--- + +# Package ID prefix reservation +[NuGet.org](https://www.nuget.org/) and Visual Studio 2017 version 15.4 or later show a visual indicator for packages that are submitted by owners with a reserved package ID prefix, as long as the package matches the reserved ID prefix naming pattern. The below reference explains what the ID prefix reservation entails, and how an owner can apply for an ID prefix. + +## What is package ID prefix reservation? +Package owners are able to reserve and protect their identity by reserving ID prefixes. Package consumers are provided with additional information when consuming packages that the package they are consuming are not deceptive in their identifying properties. Read on to see how ID prefix reservation works in details. + +## ID prefix reservation details +When a package ID prefix is reserved, several things happen on the [NuGet.org](https://www.nuget.org/) gallery, as well as in Visual Studio. In addition, there are advanced scenarios that are supported by ID prefix reservations, such as setting a prefix as 'public', delegating prefix subsets to multiple owners. + +The below section describes the feature in detail, as well as the more advanced functionality. + +### ID prefix reservation on NuGet.org +When a prefix is reserved on [NuGet.org](https://www.nuget.org/), the following will happen: +1. A prefix reservation is associated with an owner or set of owners on [NuGet.org](https://www.nuget.org/). +2. Whenever a package is submitted to [NuGet.org](https://www.nuget.org/) with an ID that matches the reserved ID prefix, the package is rejected unless it originates from the owner(s) that reserved the ID prefix. +3. Any package that matches the reserved ID prefix and originates from the owner(s) that reserved the ID prefix will have a visual indicator in Visual Studio 2017 version 15.4 or later, and on [NuGet.org](https://www.nuget.org/) indicating that the package is under a reserved ID prefix. This is true for both new package submissions as well as existing packages under the owner(s). **Note:** The indicator in Visual Studio will only appear if a single feed is selected as the package source. +4. All previously existing packages that match the reserved ID prefix, but are *not* owned by the owner of the reserved prefix will remain unchanged (they will not be unlisted, but they will also not have the visual indicator). In addition, owners of these packages will still be able to submit new versions to the package. + +These changes are based on the following conditions and impose several additional restrictions: +* Only one owner of a package needs to have the reserved prefix for the visual indicator to appear (for packages with multiple-owners). +* If there is more than one owner of a package where one or more owners has the reserved prefix and one or more owners does not have the reserved prefix, then only the owner(s) with the reserved prefix can remove other owner(s) with a reserved prefix. The owners who do not have the prefix reserved cannot remove owners with the prefix reserved. They can still remove other owners that also do not have the prefix reserved. + * Once a package has the visual indicator, it should *always* have the visual indicator (guaranteeing that at least one owner with the reserved prefix will always remain an owner) + +### Advanced prefix reservation scenarios +There are several more advanced prefix reservation scenarios described below, including subprefix delegation, and marking prefixes as public. Below are the more advanced prefix reservations that can be made. + +* During prefix reservation, the owner can request delegation of prefix subsets (or the prefix) to other owners. For example, if '[Microsoft](https://www.nuget.org/profiles/microsoft)' owns 'Microsoft.\*', but '[aspnet](https://www.nuget.org/profiles/aspnet)' wants to reserve 'Microsoft.AspNet.\*', '[Microsoft](https://www.nuget.org/profiles/microsoft)' can choose to delegate 'Microsoft.AspNet.\*' to the [aspnet](https://www.nuget.org/profiles/aspnet) account. +* During prefix reservation, the owner can choose to make a prefix public. This will still give them the visual indicator showing that the package originates from a reserved prefix, but it will **not** block future package submissions on the prefix for any owner. This is useful for open source projects with many contributors - the top or core contributors can have the prefix reserved, but it can still be open to all contributors. + +### Prefix resveration visual indicator +When a package comes from a reserved prefix, you will see the below visual indicators on the [NuGet.org](https://www.nuget.org/) gallery and in Visual Studio 2017 version 15.4 or later: + +**NuGet.org Gallery** +![NuGet.org Gallery](media/nuget-gallery-reserved-prefix.png) + +**Visual Studio** +![Visual Studio](media/visual-studio-reserved-prefix.png) + +## ID prefix reservation application process +To apply for a prefix reservation, follow the below steps. +1. Review the acceptance [criteria for prefix ID reservation](#id-prefix-reservation-criteria). +2. Determine the namespaces you want to reserve, in addition to any [advanced prefix reservation scenarios](#advanced-prefix-reservation-scenarios) you may require. +3. Send a mail to [account@nuget.org](mailto:account@nuget.org) with the owner display name on [NuGet.org](https://www.nuget.org/), as well as any reserved prefixes you are requesting. If you are delegating prefix subsets to multiple owners, make sure you mention all owner display names and prefix subsets. + +After the application is submitted, you will be notified of acceptance or rejection (with the criteria that caused rejection). We may need to ask additional identifying questions to confirm owner identity. + +### ID prefix reservation criteria +When reviewing any application for ID prefix reservation, the [NuGet.org](https://www.nuget.org/) team will evalaute the application against the below criteria. Not all criteria needs to be met for a prefix to be reserved, but the application may be denied if there is not substantial evidence of the criteria being met (with an explanation given): +1. Does the package ID prefix properly and clearly identify the package owner? +2. Are a significant number of the packages that have already been submitted by the owner under the package ID prefix? +3. Is the package ID prefix something common that should not belong to any individual owner or organization? +4. Would *not* reserving the package ID prefix cause ambiguity and confusion for the community? +5. Are the identifying properties of the packages that match the package ID prefix clear and consistent (especially the package author)? + +## 3rd party feed provider scenarios +If a 3rd party feed provider is interested in implementing their own service to provide prefix reservations, you can do so by modifying the search service in the NuGet v3 feed providers. The addition in the feed search service is to add the *verified* property, with examples for the v3 feeds below. The NuGet client will not support the added property in the v2 feed. + +### v3 search service example +```json +"data": +[ + { + "@id": "https://api.nuget.org/v3/registration2/mysql.data.entity/index.json", + "@type": "Package", + "registration": "https://api.nuget.org/v3/registration2/mysql.data.entity/index.json", + "id": "MySql.Data.Entity", + "version": "6.9.9", + "description": "Entity Framework 6.0 supported", + "summary": "", + "title": "MySql.Data.Entity", + "iconUrl": "http://www.mysql.com/common/logos/logo-mysql-170x115.png", + "licenseUrl": "http://www.gnu.org/licenses/old-licenses/gpl-2.0.html", + "projectUrl": "http://dev.mysql.com/downloads/", + "tags": [], + "authors": [], + "totalDownloads": 434685, + "verified": true, + "versions": [] + }, +] +``` From 30c0b86d506fd855b2de6ed5331dc9d65198ad01 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 10 Oct 2017 13:28:22 -0700 Subject: [PATCH 0246/2943] Create readme.md --- docs/Reference/media/readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/Reference/media/readme.md diff --git a/docs/Reference/media/readme.md b/docs/Reference/media/readme.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/docs/Reference/media/readme.md @@ -0,0 +1 @@ + From 570680c5dde421dbdcd2112d9e474b7d66b473d4 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 10 Oct 2017 13:28:44 -0700 Subject: [PATCH 0247/2943] Add files via upload --- .../media/nuget-gallery-reserved-prefix.png | Bin 0 -> 37998 bytes .../media/visual-studio-reserved-prefix.png | Bin 0 -> 12353 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/Reference/media/nuget-gallery-reserved-prefix.png create mode 100644 docs/Reference/media/visual-studio-reserved-prefix.png diff --git a/docs/Reference/media/nuget-gallery-reserved-prefix.png b/docs/Reference/media/nuget-gallery-reserved-prefix.png new file mode 100644 index 0000000000000000000000000000000000000000..6493f8b2a981d018cf1413129f367b2614787f56 GIT binary patch literal 37998 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 L_CU2chGhK>>lt#G literal 0 HcmV?d00001 diff --git a/docs/Reference/media/visual-studio-reserved-prefix.png b/docs/Reference/media/visual-studio-reserved-prefix.png new file mode 100644 index 0000000000000000000000000000000000000000..c86247282c8c0bd3e347256169c78893ae35fd52 GIT binary patch literal 12353 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 literal 0 HcmV?d00001 From c1bed64bdc36f9bf2340772705b7a478d978fe54 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 10 Oct 2017 13:29:11 -0700 Subject: [PATCH 0248/2943] Delete readme.md --- docs/Reference/media/readme.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 docs/Reference/media/readme.md diff --git a/docs/Reference/media/readme.md b/docs/Reference/media/readme.md deleted file mode 100644 index 8b1378917..000000000 --- a/docs/Reference/media/readme.md +++ /dev/null @@ -1 +0,0 @@ - From b4ac80d033834527958d37f67f730a7cb3cb4914 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 10 Oct 2017 13:32:01 -0700 Subject: [PATCH 0249/2943] Update TOC.md --- docs/TOC.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/TOC.md b/docs/TOC.md index ebc5b1999..3cba3adcd 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -61,6 +61,7 @@ ## [Target Frameworks](Schema/Target-Frameworks.md) ## [Analyzers Conventions](Schema/Analyzers-Conventions.md) ## [Errors and warnings](Reference/Errors-and-Warnings.md) +## [ID Prefix Reservation](Reference/ID-Prefix-Reservation.md) # API ## [NuGet API V3](API/NuGet-API-V3.md) ## [NuGet Credential Providers for Visual Studio](API/Nuget-Credential-Providers-for-Visual-Studio.md) From 78979f1f61b459e760d5178bc0a3360e1ef92391 Mon Sep 17 00:00:00 2001 From: Daniel Marbach Date: Tue, 10 Oct 2017 23:50:30 +0200 Subject: [PATCH 0250/2943] Fix spelling in reservation --- docs/Reference/ID-Prefix-Reservation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Reference/ID-Prefix-Reservation.md b/docs/Reference/ID-Prefix-Reservation.md index d2af711f8..73f406802 100644 --- a/docs/Reference/ID-Prefix-Reservation.md +++ b/docs/Reference/ID-Prefix-Reservation.md @@ -58,7 +58,7 @@ There are several more advanced prefix reservation scenarios described below, in * During prefix reservation, the owner can request delegation of prefix subsets (or the prefix) to other owners. For example, if '[Microsoft](https://www.nuget.org/profiles/microsoft)' owns 'Microsoft.\*', but '[aspnet](https://www.nuget.org/profiles/aspnet)' wants to reserve 'Microsoft.AspNet.\*', '[Microsoft](https://www.nuget.org/profiles/microsoft)' can choose to delegate 'Microsoft.AspNet.\*' to the [aspnet](https://www.nuget.org/profiles/aspnet) account. * During prefix reservation, the owner can choose to make a prefix public. This will still give them the visual indicator showing that the package originates from a reserved prefix, but it will **not** block future package submissions on the prefix for any owner. This is useful for open source projects with many contributors - the top or core contributors can have the prefix reserved, but it can still be open to all contributors. -### Prefix resveration visual indicator +### Prefix reservation visual indicator When a package comes from a reserved prefix, you will see the below visual indicators on the [NuGet.org](https://www.nuget.org/) gallery and in Visual Studio 2017 version 15.4 or later: **NuGet.org Gallery** From e94976a55c57a5f5209a830cad4c349ace16a78f Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Wed, 11 Oct 2017 10:49:06 -0700 Subject: [PATCH 0251/2943] Update nuget-exe-CLI-Reference.md --- docs/Tools/nuget-exe-CLI-Reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 6e2463c6a..8b77327aa 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -505,7 +505,7 @@ nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5 ## push > [!Important] -> To push packages to NuGet.org, you need to use the latest NuGet clients (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). +> To push packages to NuGet.org, you must use the latest NuGet client (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). Pushes a package to a package source and publishes it. From a7a4231cc498469a4b654ca0c187947b233189c6 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Wed, 11 Oct 2017 10:50:04 -0700 Subject: [PATCH 0252/2943] Update Publish-a-package.md --- docs/Create-Packages/Publish-a-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index 7f3c50b2d..008ffdab7 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -50,7 +50,7 @@ Next, you can either upload the package through the nuget.org web portal, or pus - Command line: > [!Important] - > To push packages to NuGet.org, you need to use the latest NuGet clients (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). + > To push packages to NuGet.org, you must use the latest NuGet client (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols) 1. Click on your user name to navigate to your account settings. 2. Under **API Key**, click **copy to clipboard** to retrieve the access key you'll need in the CLI: From 65af27622fc439976c3fba53aefa6648f48c1a40 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Wed, 11 Oct 2017 10:50:44 -0700 Subject: [PATCH 0253/2943] Update Symbol-Packages.md --- docs/Create-Packages/Symbol-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index 86861aad6..922e01672 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -112,7 +112,7 @@ A symbol package can be built by conventions, from a folder structure as describ ## Publishing a symbol package > [!Important] -> To push packages to NuGet.org, you need to use the latest NuGet clients (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). +> To push packages to NuGet.org, you must use the latest NuGet client (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols) 1. For convenience, first save your API key with NuGet (see [publish a package](../create-packages/publish-a-package.md), which will apply to both nuget.org and symbolsource.org, because symbolsource.org will check with nuget.org to verify that you are the package owner. From a2ac409c2ea21fb0fce3110c6ac93614772d9783 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Wed, 11 Oct 2017 10:51:21 -0700 Subject: [PATCH 0254/2943] Update nuget-exe-CLI-Reference.md --- docs/Tools/nuget-exe-CLI-Reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 8b77327aa..6f5d97c97 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -505,7 +505,7 @@ nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5 ## push > [!Important] -> To push packages to NuGet.org, you must use the latest NuGet client (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). +> To push packages to NuGet.org, you must use the latest NuGet client (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols) Pushes a package to a package source and publishes it. From def618c065d3be07b63ab2d18270e550a6727941 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 11 Oct 2017 11:23:08 -0700 Subject: [PATCH 0255/2943] Small edits --- docs/Create-Packages/Publish-a-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index 008ffdab7..05e812654 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -50,7 +50,7 @@ Next, you can either upload the package through the nuget.org web portal, or pus - Command line: > [!Important] - > To push packages to NuGet.org, you must use the latest NuGet client (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols) + > To push packages to nuget.org, you must use [nuget.exe v4.1.0 or above](https://www.nuget.org/downloads), which implements the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). 1. Click on your user name to navigate to your account settings. 2. Under **API Key**, click **copy to clipboard** to retrieve the access key you'll need in the CLI: From 7080dc9a543dc81a6e5a92c0cf23cc8018c22062 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 11 Oct 2017 11:23:51 -0700 Subject: [PATCH 0256/2943] Small edits --- docs/Create-Packages/Symbol-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index 922e01672..b0c833b87 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -112,7 +112,7 @@ A symbol package can be built by conventions, from a folder structure as describ ## Publishing a symbol package > [!Important] -> To push packages to NuGet.org, you must use the latest NuGet client (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols) +> To push packages to nuget.org you must use [nuget.exe v4.1.0 or above](https://www.nuget.org/downloads), which implements the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). 1. For convenience, first save your API key with NuGet (see [publish a package](../create-packages/publish-a-package.md), which will apply to both nuget.org and symbolsource.org, because symbolsource.org will check with nuget.org to verify that you are the package owner. From e36811c6e38376055d5260f676a2dd9ec9db3988 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 11 Oct 2017 11:24:14 -0700 Subject: [PATCH 0257/2943] Small edit --- docs/Create-Packages/Publish-a-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index 05e812654..16d944ca4 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -50,7 +50,7 @@ Next, you can either upload the package through the nuget.org web portal, or pus - Command line: > [!Important] - > To push packages to nuget.org, you must use [nuget.exe v4.1.0 or above](https://www.nuget.org/downloads), which implements the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). + > To push packages to nuget.org you must use [nuget.exe v4.1.0 or above](https://www.nuget.org/downloads), which implements the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). 1. Click on your user name to navigate to your account settings. 2. Under **API Key**, click **copy to clipboard** to retrieve the access key you'll need in the CLI: From 4a31aafc10a61210b170d7b18645846e1667e067 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 11 Oct 2017 11:24:51 -0700 Subject: [PATCH 0258/2943] Small edits --- docs/Tools/nuget-exe-CLI-Reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 6f5d97c97..78ec74d6e 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -505,7 +505,7 @@ nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5 ## push > [!Important] -> To push packages to NuGet.org, you must use the latest NuGet client (Eg. [NuGet.exe v4.1.0 or above](https://www.nuget.org/downloads)) that implement the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols) +> To push packages to nuget.org you must use [nuget.exe v4.1.0 or above](https://www.nuget.org/downloads), which implements the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). Pushes a package to a package source and publishes it. From 3d3edb0b37b2ded59efb22fb5221149ab70e5fb0 Mon Sep 17 00:00:00 2001 From: Unni Ravindranathan Date: Thu, 12 Oct 2017 10:08:19 -0700 Subject: [PATCH 0259/2943] Fixed typo (#505) --- docs/API/NuGet-Protocols.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/API/NuGet-Protocols.md b/docs/API/NuGet-Protocols.md index 4da44dbd0..055f0adb7 100644 --- a/docs/API/NuGet-Protocols.md +++ b/docs/API/NuGet-Protocols.md @@ -27,7 +27,7 @@ This topic lists various protocols as and when they come to existence. ## NuGet protocol version 4.1.0 -This protocol speicifes usage of verify-scope keys to interact with services other than nuget.org, to validate a package against a nuget.org account. +This protocol specifies usage of verify-scope keys to interact with services other than nuget.org, to validate a package against a nuget.org account. Validation ensures that the user-created API keys are used only with nuget.org, and that other verification or validation from a third-party service is handled through a one-time use verify-scope keys. These verify-scope keys can be used to validate that the package belongs to a particular user (account) on nuget.org. From f59adaf8cdfdac423118b1ffcd964a6ab018e873 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Thu, 12 Oct 2017 10:51:19 -0700 Subject: [PATCH 0260/2943] Update creating a package docs to cover interop case --- docs/Create-Packages/Creating-a-Package.md | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 5acc4eb5e..06c2c696c 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -42,6 +42,7 @@ In this topic: - [Setting a package type](#setting-a-package-type) (NuGet 3.5 and later) - [Adding a readme and other files](#adding-a-readme-and-other-files) - [Including MSBuild props and targets in a package](#including-msbuild-props-and-targets-in-a-package) +- [Authoring COM Interop packages compatible with Package Reference](#authoring-com-interop-packages-compatible-with-package-reference) - [Running nuget pack to generate the .nupkg file](#running-nuget-pack-to-generate-the-nupkg-file) After these core steps, you can incorporate a variety of other features as described elsewhere in this documentation. See [Next steps](#next-steps) below. @@ -60,6 +61,8 @@ Most general-purpose packages contain one or more assemblies that other develope Resources are, in fact, a special case. When a package is installed into a project, NuGet automatically adds assembly references to the package's DLLs, *excluding* those that are named `.resources.dll` because they are assumed to be localized satellite assemblies (see [Creating localized packages](creating-localized-packages.md)). For this reason, avoid using `.resources.dll` for files that otherwise contain essential package code. +If your library contains COM interop assemblies, you need to add special authoring to make them compatible with package reference (see [Authoring COM Interop packages compatible with Package Reference](#authoring-com-interop-packages-compatible-with-package-reference) ) + ## The role and structure of the .nuspec file Once you know what files you want to package, the next step is creating a package manifest in a `.nuspec` XML file. @@ -385,6 +388,28 @@ With NuGet 3.x, targets are not added to the project but are instead made availa +## Authoring COM Interop packages compatible with Package Reference + +In the packages.config world, when adding references to the assemblies from the packages NuGet and Visual Studio would test which assemblies are interop and set the EmbedInteropTypes to true. + +In the Package Reference case, the EmbedInteropTypes metadata is always false for all assemblies. We require package authors to explicitly add this metadata by including a [targets file](#including-msbuild-props-and-targets-in-a-package). + It's very important that you make this target name as unique as possible to avoid clashes. Ideally you would include both you package name and the assembly being embedded in the name. +See sample project https://github.com/NuGet/Samples/tree/master/NuGet.Samples.Interop. + +```xml + + + + <_InteropAssemblyFileName>NuGet.Samples.Interop + + + + true + + + +``` + ## Running nuget pack to generate the .nupkg file When using an assembly or the convention-based working directory, create a package by running `nuget pack` with your `.nuspec` file, replacing `` with your specific filename: From e45fed807d1dd9228f1bdb8d368ae6e2c9b2a83c Mon Sep 17 00:00:00 2001 From: Daniel Jacobson Date: Thu, 12 Oct 2017 12:59:43 -0700 Subject: [PATCH 0261/2943] Update NuGet-FAQ.md (#504) * Update NuGet-FAQ.md Updating FAQ for ID prefix reservation * Update NuGet-FAQ.md --- docs/Policies/NuGet-FAQ.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index dd87d784e..bcd8d76e0 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -168,7 +168,9 @@ This is not an issue when using PackageReference, as each project file contains **Is it possible to reserve names for packages that will be published in future?** -No. If you feel that an existing package has taken the name which suits your package better, try contacting the owner of the package (select on the owner name on the package page on nuget.org). If you don't get a response within a reasonable time, [contact support](https://www.nuget.org/policies/Contact) and we'll look into it. +You can reserve package ID prefixes for an owner or set of owners on NuGet.org. This will restrict package uploads matching the ID prefix pattern to only be accepted by the owner(s) with the reserved ID. For more information, read the [documentation](https://docs.microsoft.com/nuget/reference/id-prefix-reservation). + +If you feel that a previously submitted package has taken the name which suits your package better, try contacting the owner of the package (select Contact owners on the package page on nuget.org). If you don't get a response within a reasonable time, [contact support](https://www.nuget.org/policies/Contact) and we'll look into it. **How do I claim ownership for packages ?** From 899a97bcda553d4020a32d8d85e4c2121e5debf6 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Thu, 12 Oct 2017 14:42:21 -0700 Subject: [PATCH 0262/2943] Update Creating-a-Package.md --- docs/Create-Packages/Creating-a-Package.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 06c2c696c..bf975f22d 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -61,7 +61,7 @@ Most general-purpose packages contain one or more assemblies that other develope Resources are, in fact, a special case. When a package is installed into a project, NuGet automatically adds assembly references to the package's DLLs, *excluding* those that are named `.resources.dll` because they are assumed to be localized satellite assemblies (see [Creating localized packages](creating-localized-packages.md)). For this reason, avoid using `.resources.dll` for files that otherwise contain essential package code. -If your library contains COM interop assemblies, you need to add special authoring to make them compatible with package reference (see [Authoring COM Interop packages compatible with Package Reference](#authoring-com-interop-packages-compatible-with-package-reference) ) +If your library contains COM interop assemblies, you need to follow additional authoring guidelines to make them compatible with package reference (see [Authoring COM Interop packages compatible with Package Reference](#authoring-com-interop-packages-compatible-with-package-reference) ) ## The role and structure of the .nuspec file @@ -393,8 +393,8 @@ With NuGet 3.x, targets are not added to the project but are instead made availa In the packages.config world, when adding references to the assemblies from the packages NuGet and Visual Studio would test which assemblies are interop and set the EmbedInteropTypes to true. In the Package Reference case, the EmbedInteropTypes metadata is always false for all assemblies. We require package authors to explicitly add this metadata by including a [targets file](#including-msbuild-props-and-targets-in-a-package). - It's very important that you make this target name as unique as possible to avoid clashes. Ideally you would include both you package name and the assembly being embedded in the name. -See sample project https://github.com/NuGet/Samples/tree/master/NuGet.Samples.Interop. + It's very important that you make this target name as unique as possible to avoid clashes. Ideally you would include both your package name and the assembly being embedded in the target name. +See sample project [here](https://github.com/NuGet/Samples/tree/master/NuGet.Samples.Interop). ```xml From 1853a32994fd72ddf065db4ed50c199461a9cd46 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Thu, 12 Oct 2017 15:26:57 -0700 Subject: [PATCH 0263/2943] Update Creating-a-Package.md --- docs/Create-Packages/Creating-a-Package.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index bf975f22d..a24c7fabe 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -42,7 +42,7 @@ In this topic: - [Setting a package type](#setting-a-package-type) (NuGet 3.5 and later) - [Adding a readme and other files](#adding-a-readme-and-other-files) - [Including MSBuild props and targets in a package](#including-msbuild-props-and-targets-in-a-package) -- [Authoring COM Interop packages compatible with Package Reference](#authoring-com-interop-packages-compatible-with-package-reference) +- [compackages with interop assemblies](#authoring-packages-with-interop-assemblies) - [Running nuget pack to generate the .nupkg file](#running-nuget-pack-to-generate-the-nupkg-file) After these core steps, you can incorporate a variety of other features as described elsewhere in this documentation. See [Next steps](#next-steps) below. @@ -61,7 +61,8 @@ Most general-purpose packages contain one or more assemblies that other develope Resources are, in fact, a special case. When a package is installed into a project, NuGet automatically adds assembly references to the package's DLLs, *excluding* those that are named `.resources.dll` because they are assumed to be localized satellite assemblies (see [Creating localized packages](creating-localized-packages.md)). For this reason, avoid using `.resources.dll` for files that otherwise contain essential package code. -If your library contains COM interop assemblies, you need to follow additional authoring guidelines to make them compatible with package reference (see [Authoring COM Interop packages compatible with Package Reference](#authoring-com-interop-packages-compatible-with-package-reference) ) +If your library contains COM interop assemblies, you need to follow additional authoring guidelines. (see - [Authoring packages with interop assemblies](#authoring-packages-with-interop-assemblies) + ) ## The role and structure of the .nuspec file @@ -388,7 +389,7 @@ With NuGet 3.x, targets are not added to the project but are instead made availa -## Authoring COM Interop packages compatible with Package Reference +# Authoring packages with interop assemblies In the packages.config world, when adding references to the assemblies from the packages NuGet and Visual Studio would test which assemblies are interop and set the EmbedInteropTypes to true. @@ -400,7 +401,7 @@ See sample project [here](https://github.com/NuGet/Samples/tree/master/NuGet.Sam - <_InteropAssemblyFileName>NuGet.Samples.Interop + <_InteropAssemblyFileName>{InteropAssemblyName} From 0d17741840d5766a29971addacb80333843f0b95 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 16 Oct 2017 10:53:28 -0700 Subject: [PATCH 0264/2943] Editing the draft; fixing the anchor Build warning was because the should be . This was my mistake from earlier. --- docs/Create-Packages/Creating-a-Package.md | 39 ++++++++++------------ 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index a24c7fabe..f7e1a8335 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -42,7 +42,7 @@ In this topic: - [Setting a package type](#setting-a-package-type) (NuGet 3.5 and later) - [Adding a readme and other files](#adding-a-readme-and-other-files) - [Including MSBuild props and targets in a package](#including-msbuild-props-and-targets-in-a-package) -- [compackages with interop assemblies](#authoring-packages-with-interop-assemblies) +- [Authoring packages with interop assemblies](#authoring-packages-with-interop-assemblies) - [Running nuget pack to generate the .nupkg file](#running-nuget-pack-to-generate-the-nupkg-file) After these core steps, you can incorporate a variety of other features as described elsewhere in this documentation. See [Next steps](#next-steps) below. @@ -387,30 +387,27 @@ When NuGet 2.x installs a package with `\build` files, it adds an MSBuild ` - # Authoring packages with interop assemblies -In the packages.config world, when adding references to the assemblies from the packages NuGet and Visual Studio would test which assemblies are interop and set the EmbedInteropTypes to true. - -In the Package Reference case, the EmbedInteropTypes metadata is always false for all assemblies. We require package authors to explicitly add this metadata by including a [targets file](#including-msbuild-props-and-targets-in-a-package). - It's very important that you make this target name as unique as possible to avoid clashes. Ideally you would include both your package name and the assembly being embedded in the target name. -See sample project [here](https://github.com/NuGet/Samples/tree/master/NuGet.Samples.Interop). - -```xml - - - - <_InteropAssemblyFileName>{InteropAssemblyName} - - - - true - - - +When using the `packages.config` reference format, adding references to the assemblies from the packages causes NuGet and Visual Studio to test which assemblies are interop and set the `EmbedInteropTypes` to true. + +When using the PackageReference format, the `EmbedInteropTypes` metadata is always false for all assemblies. Package authors must explicitly add this metadata by including a [targets file](#including-msbuild-props-and-targets-in-a-package). The target name should be unique to avoid conflicts; ideally, use a combination of your package name and the assembly being embedded. For an example, see [NuGet.Samples.Interop](https://github.com/NuGet/Samples/tree/master/NuGet.Samples.Interop). + +```xml + + + <_InteropAssemblyFileName>{InteropAssemblyName} + + + + true + + + ``` + + ## Running nuget pack to generate the .nupkg file When using an assembly or the convention-based working directory, create a package by running `nuget pack` with your `.nuspec` file, replacing `` with your specific filename: From 986c10668719ade8f37a8284688b8ca8f9f9db7e Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Mon, 16 Oct 2017 10:55:42 -0700 Subject: [PATCH 0265/2943] Update Creating-a-Package.md Adding a note based on our last discussion --- docs/Create-Packages/Creating-a-Package.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index f7e1a8335..a8d7b7e48 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -406,6 +406,15 @@ When using the PackageReference format, the `EmbedInteropTypes` metadata is alwa ``` +**Note** +By default the build assets will not flow transitively. +The default value for private assets is: +``` +contentfiles;analyzers;build +``` +[More info](https://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files#controlling-dependency-assets) +Packages authored this way, will work differently when they are a pulled as a transitive dependency from a project to project reference. + ## Running nuget pack to generate the .nupkg file From 4078b3e3fa8060f014582810d76b543cf995a5a9 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 16 Oct 2017 10:59:26 -0700 Subject: [PATCH 0266/2943] Cleaning up links and adding a little better background --- docs/Create-Packages/Creating-a-Package.md | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index a8d7b7e48..48bf95878 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -42,7 +42,7 @@ In this topic: - [Setting a package type](#setting-a-package-type) (NuGet 3.5 and later) - [Adding a readme and other files](#adding-a-readme-and-other-files) - [Including MSBuild props and targets in a package](#including-msbuild-props-and-targets-in-a-package) -- [Authoring packages with interop assemblies](#authoring-packages-with-interop-assemblies) +- [Authoring packages that contain COM interop assemblies](#authoring-packages-with-interop-assemblies) - [Running nuget pack to generate the .nupkg file](#running-nuget-pack-to-generate-the-nupkg-file) After these core steps, you can incorporate a variety of other features as described elsewhere in this documentation. See [Next steps](#next-steps) below. @@ -61,8 +61,7 @@ Most general-purpose packages contain one or more assemblies that other develope Resources are, in fact, a special case. When a package is installed into a project, NuGet automatically adds assembly references to the package's DLLs, *excluding* those that are named `.resources.dll` because they are assumed to be localized satellite assemblies (see [Creating localized packages](creating-localized-packages.md)). For this reason, avoid using `.resources.dll` for files that otherwise contain essential package code. -If your library contains COM interop assemblies, you need to follow additional authoring guidelines. (see - [Authoring packages with interop assemblies](#authoring-packages-with-interop-assemblies) - ) +If your library contains COM interop assemblies, follow additional the guidelines in [Authoring packages with COM interop assemblies](#authoring-packages-with-interop-assemblies). ## The role and structure of the .nuspec file @@ -389,9 +388,9 @@ With NuGet 3.x, targets are not added to the project but are instead made availa # Authoring packages with interop assemblies -When using the `packages.config` reference format, adding references to the assemblies from the packages causes NuGet and Visual Studio to test which assemblies are interop and set the `EmbedInteropTypes` to true. +Packages that contain COM interop assemblies need to include an appropriate targets file so that the correct `EmbedInteropTypes` metadata is added to projects using the PackageReference format. -When using the PackageReference format, the `EmbedInteropTypes` metadata is always false for all assemblies. Package authors must explicitly add this metadata by including a [targets file](#including-msbuild-props-and-targets-in-a-package). The target name should be unique to avoid conflicts; ideally, use a combination of your package name and the assembly being embedded. For an example, see [NuGet.Samples.Interop](https://github.com/NuGet/Samples/tree/master/NuGet.Samples.Interop). +By default, the `EmbedInteropTypes` metadata is always false for all assemblies when PackageReference is used. Package authors must explicitly add this metadata by including a [targets file](#including-msbuild-props-and-targets-in-a-package). The target name should be unique to avoid conflicts; ideally, use a combination of your package name and the assembly being embedded. For an example, see [NuGet.Samples.Interop](https://github.com/NuGet/Samples/tree/master/NuGet.Samples.Interop). ```xml @@ -406,14 +405,8 @@ When using the PackageReference format, the `EmbedInteropTypes` metadata is alwa ``` -**Note** -By default the build assets will not flow transitively. -The default value for private assets is: -``` -contentfiles;analyzers;build -``` -[More info](https://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files#controlling-dependency-assets) -Packages authored this way, will work differently when they are a pulled as a transitive dependency from a project to project reference. +Note that when using the `packages.config` reference format, adding references to the assemblies from the packages causes NuGet and Visual Studio to check for COM interop assemblies and set the `EmbedInteropTypes` to true. In this case the targets file is not used. + From 0a07f0630b803bf889970d3281425a7c6e356817 Mon Sep 17 00:00:00 2001 From: ranran84 Date: Tue, 17 Oct 2017 10:46:19 +0300 Subject: [PATCH 0267/2943] Update Creating-a-Package.md Added ')' --- docs/Create-Packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 5acc4eb5e..1b9689c07 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -27,7 +27,7 @@ No matter what your package does or what code it contains, you use `nuget.exe` t Technically speaking, a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension and whose contents match certain conventions. This topic describes the detailed process of creating a package that meets those conventions. For a focused walkthrough, refer to [Create and Publish a Package Quickstart](../quickstart/create-and-publish-a-package.md). -Packaging begins with the compiled code (assemblies), symbols, and/or other files that you want to deliver as a package (see [Overview and workflow](Overview-and-Workflow.md). This process is independent from compiling or otherwise generating the files that go into the package, although you can use draw from information in a project file to keep the compiled assemblines and packages in sync. +Packaging begins with the compiled code (assemblies), symbols, and/or other files that you want to deliver as a package (see [Overview and workflow](Overview-and-Workflow.md)). This process is independent from compiling or otherwise generating the files that go into the package, although you can use draw from information in a project file to keep the compiled assemblines and packages in sync. In this topic: From a7af57dedf87e930c0338663840282d6347943a5 Mon Sep 17 00:00:00 2001 From: Amin Mesbah Date: Tue, 17 Oct 2017 15:31:34 -0700 Subject: [PATCH 0268/2943] Specify `nuget restore -Source` args must be urls I spent a good deal of time being confused about this [1]. This should be updated once #5849 [2] is closed. [1] https://github.com/NuGet/Home/issues/6024 [2] https://github.com/NuGet/Home/issues/5849 --- docs/Tools/nuget-exe-CLI-Reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 6e2463c6a..9c56fd533 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -598,7 +598,7 @@ where `` specifies the location of a solution, a `packages.config` | Recursive | *(4.0+)* Restores all references projects for UWP and .NET Core projects. Does not apply to projects using `packages.config`. | | RequireConsent | Verifies that restoring packages is enabled before downloading and installing the packages. For details, see [Package Restore](../consume-packages/package-restore.md). | | SolutionDirectory | Specifies the solution folder. Not valid when restoring packages for a solution. | -| Source | Specifies list of package sources to use for the restore. | +| Source | Specifies list of package sources (as URLS) to use for the restore. | | Verbosity |>Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | ### Remarks From e9d614547789532ba6a983bc5698cae68235e112 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 17 Oct 2017 16:43:10 -0700 Subject: [PATCH 0269/2943] Changes from verbatims --- .../Packages-and-Source-Control.md | 6 ++--- docs/Schema/Target-Frameworks.md | 2 +- docs/Schema/nuget-config-file.md | 2 +- docs/Tools/Package-Manager-UI.md | 3 ++- docs/Tools/nuget-exe-CLI-Reference.md | 24 ++++++++++--------- docs/Tools/ps-ref-add-bindingredirect.md | 6 +++-- 6 files changed, 24 insertions(+), 19 deletions(-) diff --git a/docs/Consume-Packages/Packages-and-Source-Control.md b/docs/Consume-Packages/Packages-and-Source-Control.md index cf039e137..55092b37f 100644 --- a/docs/Consume-Packages/Packages-and-Source-Control.md +++ b/docs/Consume-Packages/Packages-and-Source-Control.md @@ -36,14 +36,14 @@ The reasons for relying on package restore include the following: 1. Distributed version control systems, such as Git, include full copies of every version of every file within the repository. Binary files that are frequently updated lead to significant bloat and lengthens the time it takes to clone the repository. 1. When packages are included in the repository, developers are liable to add references directly to package contents on disk rather than referencing packages through NuGet, which can lead to hard-coded path names in the project. -1. It becomes harder to "clean" your solution of any unused package folders, as you need to ensure you don't delete any package folders still in use. +1. It becomes harder to clean your solution of any unused package folders, as you need to ensure you don't delete any package folders still in use. 1. By omitting packages, you maintain clean boundaries of ownership between your code and the packages from others that you depend upon. Many NuGet packages are maintained in their own source control repositories already. Although package restore is the default behavior with NuGet, some manual work is necessary to omit packages—namely, the `packages` folder in your project—from source control, as described in the following sections. ## Omitting packages with Git -Use the [.gitignore file](https://git-scm.com/docs/gitignore) to have Git ignore the contents of the `packages` folder. For reference, see the [sample `.gitignore` for Visual Studio projects](https://github.com/github/gitignore/blob/master/VisualStudio.gitignore). +Use the [.gitignore file](https://git-scm.com/docs/gitignore) to avoid including the `packages` folder in source control. For reference, see the [sample `.gitignore` for Visual Studio projects](https://github.com/github/gitignore/blob/master/VisualStudio.gitignore). The important parts of the `.gitignore` file are: @@ -61,7 +61,7 @@ The important parts of the `.gitignore` file are: #!**/packages/repositories.config # Ignore other intermediate files that NuGet might create. project.lock.json is used in conjunction -# with project.json; project.assets.json is used in conjunction with package references in project files. +# with project.json; project.assets.json is used in conjunction with the PackageReference format. project.lock.json project.assets.json *.nuget.props diff --git a/docs/Schema/Target-Frameworks.md b/docs/Schema/Target-Frameworks.md index 54301e4c2..4dc479a63 100644 --- a/docs/Schema/Target-Frameworks.md +++ b/docs/Schema/Target-Frameworks.md @@ -137,7 +137,7 @@ The [.NET Platform Standard](https://github.com/dotnet/corefx/blob/master/Docume The [NuGet Get Nearest Framework Tool](https://aka.ms/s2m3th) simulates what NuGet uses to select one framework from many available framework assets in a package based on the project's framework. -The `dotnet` series of monikers should be used in NuGet 3.3 an earlier; the `netstandard` moniker syntax should be used in v3.4 and later. +The `dotnet` series of monikers should be used in NuGet 3.3 and earlier; the `netstandard` moniker syntax should be used in v3.4 and later. ## Portable Class Libraries diff --git a/docs/Schema/nuget-config-file.md b/docs/Schema/nuget-config-file.md index c37458c41..194694d1d 100644 --- a/docs/Schema/nuget-config-file.md +++ b/docs/Schema/nuget-config-file.md @@ -201,7 +201,7 @@ When using unencrypted passwords: - + ``` diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index 39a286624..e3856aa9c 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -41,6 +41,7 @@ In this topic: - [Finding and installing a package](#finding-and-installing-a-package) - [Uninstalling a package](#uninstalling-a-package) - [Updating a package](#updating-a-package) + - ["Implicitly referenced by an SDK" or "AutoReferenced" message](#implicit_reference) message. - [Managing packages for the solution](#managing-packages-for-the-solution) (working with multiple projects at the same time). - [Package sources](#package-sources) - [Package manager Options control](#package-manager-options-control) @@ -81,7 +82,7 @@ In this topic: ![Updating a package](media/UpdatePackages.png) -4. For some packages, the **Update** button is disabled and the package a message appears saying that it's "Implicitly referenced by an SDK". (In some versions of Visual Studio the text may read only "AutoReferenced".) These conditions indicate that the package, such as Microsoft.NETCore.App, is part of a larger framework or SDK and should not be updated independently. (Such packages, of which Microsoft.NETStandard.Library is another example, are marked internally with `True`.) To update the package, you must update the SDK to which it belongs. +4. For some packages, the **Update** button is disabled and the package a message appears saying that it's "Implicitly referenced by an SDK". (In some versions of Visual Studio the text may read only "AutoReferenced".) These conditions indicate that the package, such as Microsoft.NETCore.App, is part of a larger framework or SDK and should not be updated independently. (Such packages, of which Microsoft.NETStandard.Library is another example, are marked internally with `True`.) To update the package, you must update the SDK to which it belongs. ![Example package marked as Implicitly references or AutoReferenced](media/PackageManagerUIAutoReferenced.png) diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 45e90caba..7aff94585 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -5,7 +5,7 @@ title: NuGet Command-Line Interface (CLI) Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/2/2017 +ms.date: 10/17/2017 ms.topic: reference ms.prod: nuget ms.technology: null @@ -25,13 +25,14 @@ ms.reviewer: The NuGet Command Line Interface (CLI), `nuget.exe`, provides the full extent of NuGet functionality to install, create, publish, and manage packages without making any changes to project files. +All `nuget.exe` are available on Windows; most commands work with [nuget.exe running on Mono](../guides/install-nuget.md#mac-osx-and-linux) except where indicated for `pack`, `restore`, and `update`. Some NuGet capabilities are also available on Mac and Linux through the [dotnet CLI](dotnet-Commands.md). + To install `nuget.exe`: +1. On Mac and Linux, install [Mono 4.4.2 or later](http://www.mono-project.com/docs/getting-started/install/). + [!INCLUDE[install-cli](../includes/install-cli.md)] -> [!Important] -> On Mac OSX and Linux, some NuGet capabilities are available through the [dotnet CLI](dotnet-Commands.md) and through the [NuGet CLI running on Mono](../guides/install-nuget.md#mac-osx-and-linux). - Available commands and applicability to package creation, package consumption, and/or publishing a package to a host: | Command | Applicable Roles | NuGet Version | Description | @@ -45,13 +46,13 @@ Available commands and applicability to package creation, package consumption, a | [list](#list) | Consumption, perhaps Publishing | All | Displays packages from a given source. | | [locals](#locals) | Consumption | 3.3+ | Clears or lists packages in various caches or the global packages folder, or identifies those folders. | | [mirror](#mirror) | Publishing | Deprecated in 3.2+ | Mirrors a package and its dependencies from a source to a target repository. | -| [pack](#pack) | Creation | 2.7+ | Creates a NuGet package from a `.nuspec` or project file. On Mac OSX with Mono, creating a package from a project file is not supported. | +| [pack](#pack) | Creation | 2.7+ | Creates a NuGet package from a `.nuspec` or project file. When running on Mono, creating a package from a project file is not supported. | | [push](#push) | Publishing | All | Publishes a package to a package source. | -| [restore](#restore) | Consumption | 2.7+ | Restores all packages referenced by the package reference format in use. Note: restoring packages using the PackageReference format is not supported with the CLI on Mono. | +| [restore](#restore) | Consumption | 2.7+ | Restores all packages referenced by the package reference format in use. When running on Mono, restoring packages using the PackageReference format is not supported. | | [setapikey](#setapikey) | Consumption, Publishing | All | Saves an API key for a given package source when that package source requires a key for access. | | [sources](#sources) | Consumption, Publishing | All | Manages package sources in configuration files. | | [spec](#spec) | Creation | All | Generates a `.nuspec` file, using tokens if generating the file from a Visual Studio project. | -| [update](#update) | Consumption | All | Updates a project's packages to the latest available versions. Note: this command is not supported with the CLI running on Mono. | +| [update](#update) | Consumption | All | Updates a project's packages to the latest available versions. Not supported when running on Mono. | Different commands make use of various [Environment variables](#environment-variables). @@ -314,7 +315,7 @@ nuget install packages.config nuget install ninject -OutputDirectory c:\proj ``` -## list +## list Displays a list of packages from a given source. If no sources are specified, all sources defined in the global configuration file, `%AppData%\NuGet\NuGet.Config`, are used. If `NuGet.Config` specifies no sources, then `list` uses the default feed (nuget.org). @@ -424,13 +425,14 @@ nuget mirror Microsoft.AspNet.Mvc https://MyRepo/nuget https://MyRepo/api/v2/pac nuget mirror Microsoft.Net.Http https://MyRepo/nuget https://MyRepo/api/v2/package -prerelease ``` -## pack +## pack *Version 2.7+* Creates a NuGet package based on the specified `.nuspec` or project file. -On Mac OS X and Linux, you need to have Mono 4.4.2 or later installed. Under Mono, creating a package from a project file is not supported. You also need to adjust non-local paths in the `.nuspec` file to Unix-style paths, as nuget.exe doesn't convert Windows pathnames itself. +> [!Important] +> Under Mono, creating a package from a project file is not supported. You also need to adjust non-local paths in the `.nuspec` file to Unix-style paths, as nuget.exe doesn't convert Windows pathnames itself. ### Usage @@ -502,7 +504,7 @@ nuget pack foo.nuspec -Version 2.1.0 nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5 ``` -## push +## push Pushes a package to a package source and publishes it. diff --git a/docs/Tools/ps-ref-add-bindingredirect.md b/docs/Tools/ps-ref-add-bindingredirect.md index 2114c2bdc..7a1f3c69b 100644 --- a/docs/Tools/ps-ref-add-bindingredirect.md +++ b/docs/Tools/ps-ref-add-bindingredirect.md @@ -5,7 +5,7 @@ title: NuGet Add-BindingRedirect PowerShell Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 6/1/2017 +ms.date: 10/17/2017 ms.topic: reference ms.prod: nuget #ms.service: @@ -30,7 +30,9 @@ ms.reviewer: # Add-BindingRedirect -Examines all assemblies within the output path for a project and adds binding redirects to the application (or web) configuration file where necessary. For additional details on what this means, see [Redirecting Assembly Versions](https://msdn.microsoft.com/library/7wd6ex19.aspx) on MSDN. +Examines all assemblies within the output path for a project and adds binding redirects to the application or web configuration file where necessary. + +For details on binding redirects and why they are used, see [Redirecting Assembly Versions](https://docs.microsoft.com/dotnet/framework/configure-apps/redirect-assembly-versions) in the .NET documentation. > [!Note] > NuGet 1.2+ automatically runs this command when installing a package. From 6abaee3d9158c8593e639df581f16a842b010f29 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 17 Oct 2017 17:12:03 -0700 Subject: [PATCH 0270/2943] Fixing anchor; touch file to rebuild --- docs/Create-Packages/Creating-a-Package.md | 2 +- docs/Create-Packages/Dependency-Versions.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 5acc4eb5e..8f41da4dc 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -383,7 +383,7 @@ When NuGet 2.x installs a package with `\build` files, it adds an MSBuild ` + ## Running nuget pack to generate the .nupkg file diff --git a/docs/Create-Packages/Dependency-Versions.md b/docs/Create-Packages/Dependency-Versions.md index 8817ed7c9..349ab65f5 100644 --- a/docs/Create-Packages/Dependency-Versions.md +++ b/docs/Create-Packages/Dependency-Versions.md @@ -1,3 +1,3 @@ --- -redirect_url: /nuget/reference/package-versioning +redirect_url: /nuget/reference/package-versioning --- \ No newline at end of file From 4d2cf95c6f9aa0ed8256d54579e3dde5d1707733 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 17 Oct 2017 17:21:06 -0700 Subject: [PATCH 0271/2943] Try different redirect --- docs/Create-Packages/Dependency-Versions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Dependency-Versions.md b/docs/Create-Packages/Dependency-Versions.md index 349ab65f5..81eb1c48e 100644 --- a/docs/Create-Packages/Dependency-Versions.md +++ b/docs/Create-Packages/Dependency-Versions.md @@ -1,3 +1,3 @@ --- -redirect_url: /nuget/reference/package-versioning +redirect_url: ../reference/package-versioning --- \ No newline at end of file From 4f14610c2cda07b11fa28edc6e0d266d8aeb020b Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 17 Oct 2017 17:28:19 -0700 Subject: [PATCH 0272/2943] Try again --- docs/Create-Packages/Dependency-Versions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Dependency-Versions.md b/docs/Create-Packages/Dependency-Versions.md index 81eb1c48e..3d8ca31d3 100644 --- a/docs/Create-Packages/Dependency-Versions.md +++ b/docs/Create-Packages/Dependency-Versions.md @@ -1,3 +1,3 @@ --- -redirect_url: ../reference/package-versioning +redirect_url: http://docs.microsoft.com/nuget/reference/package-versioning --- \ No newline at end of file From 7b3e2b501f21cb856e3684f9a144187c5e4c61ab Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 17 Oct 2017 18:46:27 -0700 Subject: [PATCH 0273/2943] Removing file to try to build --- docs/Create-Packages/Dependency-Versions.md | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 docs/Create-Packages/Dependency-Versions.md diff --git a/docs/Create-Packages/Dependency-Versions.md b/docs/Create-Packages/Dependency-Versions.md deleted file mode 100644 index 3d8ca31d3..000000000 --- a/docs/Create-Packages/Dependency-Versions.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -redirect_url: http://docs.microsoft.com/nuget/reference/package-versioning ---- \ No newline at end of file From c31966f1e97ff05b2a3522834e6e1b75bc77b698 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 17 Oct 2017 19:33:18 -0700 Subject: [PATCH 0274/2943] Add redirect file back --- docs/Create-Packages/Dependency-Versions.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 docs/Create-Packages/Dependency-Versions.md diff --git a/docs/Create-Packages/Dependency-Versions.md b/docs/Create-Packages/Dependency-Versions.md new file mode 100644 index 000000000..8817ed7c9 --- /dev/null +++ b/docs/Create-Packages/Dependency-Versions.md @@ -0,0 +1,3 @@ +--- +redirect_url: /nuget/reference/package-versioning +--- \ No newline at end of file From 5a224ffcb37710a41c71e8703daa2f9cc400b1c2 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 17 Oct 2017 19:37:10 -0700 Subject: [PATCH 0275/2943] Tweaks --- docs/Tools/Package-Manager-UI.md | 3 +-- docs/Tools/nuget-exe-CLI-Reference.md | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index e3856aa9c..487e8f79b 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -40,8 +40,7 @@ In this topic: - [Finding and installing a package](#finding-and-installing-a-package) - [Uninstalling a package](#uninstalling-a-package) -- [Updating a package](#updating-a-package) - - ["Implicitly referenced by an SDK" or "AutoReferenced" message](#implicit_reference) message. +- [Updating a package](#updating-a-package) (includes the ["Implicitly referenced by an SDK" or "AutoReferenced" message](#implicit_reference)) - [Managing packages for the solution](#managing-packages-for-the-solution) (working with multiple projects at the same time). - [Package sources](#package-sources) - [Package manager Options control](#package-manager-options-control) diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 7aff94585..51df40735 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -29,8 +29,7 @@ All `nuget.exe` are available on Windows; most commands work with [nuget.exe run To install `nuget.exe`: -1. On Mac and Linux, install [Mono 4.4.2 or later](http://www.mono-project.com/docs/getting-started/install/). - +1. On Mac and Linux, install [Mono 4.4.2 or later](http://www.mono-project.com/docs/getting-started/install/). [!INCLUDE[install-cli](../includes/install-cli.md)] Available commands and applicability to package creation, package consumption, and/or publishing a package to a host: From 9ad69fe089ecd39981fb101493e82bc359083e70 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 17 Oct 2017 19:40:39 -0700 Subject: [PATCH 0276/2943] Commenting out redirect for the time being --- docs/Create-Packages/Dependency-Versions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Dependency-Versions.md b/docs/Create-Packages/Dependency-Versions.md index 8817ed7c9..08c795cec 100644 --- a/docs/Create-Packages/Dependency-Versions.md +++ b/docs/Create-Packages/Dependency-Versions.md @@ -1,3 +1,3 @@ --- -redirect_url: /nuget/reference/package-versioning +#redirect_url: /nuget/reference/package-versioning --- \ No newline at end of file From df6539f206c51b77b0bb16656f1c1dfde1b3a35d Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 17 Oct 2017 19:54:40 -0700 Subject: [PATCH 0277/2943] Moving Mono step into include --- docs/Tools/nuget-exe-CLI-Reference.md | 1 - docs/includes/install-cli.md | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 51df40735..610ff2be4 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -29,7 +29,6 @@ All `nuget.exe` are available on Windows; most commands work with [nuget.exe run To install `nuget.exe`: -1. On Mac and Linux, install [Mono 4.4.2 or later](http://www.mono-project.com/docs/getting-started/install/). [!INCLUDE[install-cli](../includes/install-cli.md)] Available commands and applicability to package creation, package consumption, and/or publishing a package to a host: diff --git a/docs/includes/install-cli.md b/docs/includes/install-cli.md index 5c18a7d35..fc5faf3b8 100644 --- a/docs/includes/install-cli.md +++ b/docs/includes/install-cli.md @@ -1,3 +1,3 @@ -1. Visit [nuget.org/downloads](https://nuget.org/downloads) and select the version of NuGet you want. +1. On Mac and Linux, install [Mono 4.4.2 or later](http://www.mono-project.com/docs/getting-started/install/). 1. Visit [nuget.org/downloads](https://nuget.org/downloads) and select the version of NuGet you want. 1. Each download is the `nuget.exe` file directly. Instruct your browser to save the file to a folder of your choice. The file is *not* an installer; running it from the browser won't show anything. 1. Add the folder where you placed `nuget.exe` to your PATH environment variable to use the CLI tool from anywhere. \ No newline at end of file From ddb031566714386f97f92e61eb1ded3dc33355ae Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 17 Oct 2017 19:58:42 -0700 Subject: [PATCH 0278/2943] Fix numbering --- docs/includes/install-cli.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/includes/install-cli.md b/docs/includes/install-cli.md index fc5faf3b8..101181dc2 100644 --- a/docs/includes/install-cli.md +++ b/docs/includes/install-cli.md @@ -1,3 +1,4 @@ -1. On Mac and Linux, install [Mono 4.4.2 or later](http://www.mono-project.com/docs/getting-started/install/). 1. Visit [nuget.org/downloads](https://nuget.org/downloads) and select the version of NuGet you want. -1. Each download is the `nuget.exe` file directly. Instruct your browser to save the file to a folder of your choice. The file is *not* an installer; running it from the browser won't show anything. -1. Add the folder where you placed `nuget.exe` to your PATH environment variable to use the CLI tool from anywhere. \ No newline at end of file +1. On Mac and Linux, install [Mono 4.4.2 or later](http://www.mono-project.com/docs/getting-started/install/). +2. Visit [nuget.org/downloads](https://nuget.org/downloads) and select the version of NuGet you want. +3. Each download is the `nuget.exe` file directly. Instruct your browser to save the file to a folder of your choice. The file is *not* an installer; running it from the browser won't show anything. +4. Add the folder where you placed `nuget.exe` to your PATH environment variable to use the CLI tool from anywhere. \ No newline at end of file From 8f97c59c2c0175347d764a7173f6891c2e9ed467 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 18 Oct 2017 09:19:16 -0700 Subject: [PATCH 0279/2943] Trying build again --- docs/Create-Packages/Dependency-Versions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Dependency-Versions.md b/docs/Create-Packages/Dependency-Versions.md index 08c795cec..8817ed7c9 100644 --- a/docs/Create-Packages/Dependency-Versions.md +++ b/docs/Create-Packages/Dependency-Versions.md @@ -1,3 +1,3 @@ --- -#redirect_url: /nuget/reference/package-versioning +redirect_url: /nuget/reference/package-versioning --- \ No newline at end of file From 3fe2406a6489d9f7c830ecf32b895d764f65bda6 Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov Date: Thu, 19 Oct 2017 14:20:17 +0200 Subject: [PATCH 0280/2943] Add mention of TeamCity NuGet feed --- docs/Hosting-Packages/Overview.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Hosting-Packages/Overview.md b/docs/Hosting-Packages/Overview.md index 39187ec87..a622e0620 100644 --- a/docs/Hosting-Packages/Overview.md +++ b/docs/Hosting-Packages/Overview.md @@ -47,5 +47,6 @@ There are also several other NuGet hosting products that support remote private - [NuGet Server (Open Source)](http://nuget-server.net), an open-source implementation similar to Inedo's NuGet Server - [Artifactory](https://www.jfrog.com/artifactory/) from JFrog. - [Nexus](http://www.sonatype.org/nexus/) from Sonatype. +- [TeamCity](https://www.jetbrains.com/teamcity/) from JetBrains. 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](../tools/package-manager-ui.md#package-sources), or from the command line using [`nuget sources`](../tools/nuget-exe-cli-reference.md#sources). The path to a source can be a local folder pathname, a network name, or a URL. From 74b9fd5d99550e858a70960868d9246f0015c23b Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Thu, 19 Oct 2017 15:36:55 -0700 Subject: [PATCH 0281/2943] Update Creating-a-Package.md Add explanation above transitive dependencies not flowing --- docs/Create-Packages/Creating-a-Package.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index a617655bd..3672f840e 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -405,7 +405,11 @@ By default, the `EmbedInteropTypes` metadata is always false for all assemblies ``` -Note that when using the `packages.config` reference format, adding references to the assemblies from the packages causes NuGet and Visual Studio to check for COM interop assemblies and set the `EmbedInteropTypes` to true. In this case the targets file is not used. +Note that when using the `packages.config` reference format, adding references to the assemblies from the packages causes NuGet and Visual Studio to check for COM interop assemblies and set the `EmbedInteropTypes` to true in the project file. In this case the targets are overriden. + +Additionally, by default the [build assets do not flow transitively](https://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files#controlling-dependency-assets). +Packages authored this way, will work differently when they are a 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. From 075715442a2418e36d0ee92b8a5ea10df799d916 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 20 Oct 2017 09:40:12 -0700 Subject: [PATCH 0282/2943] Editing --- docs/Create-Packages/Creating-a-Package.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 3672f840e..ebfe4aa7b 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -5,7 +5,7 @@ title: How to create a NuGet package | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/2/2017 +ms.date: 10/20/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -61,7 +61,7 @@ Most general-purpose packages contain one or more assemblies that other develope Resources are, in fact, a special case. When a package is installed into a project, NuGet automatically adds assembly references to the package's DLLs, *excluding* those that are named `.resources.dll` because they are assumed to be localized satellite assemblies (see [Creating localized packages](creating-localized-packages.md)). For this reason, avoid using `.resources.dll` for files that otherwise contain essential package code. -If your library contains COM interop assemblies, follow additional the guidelines in [Authoring packages with COM interop assemblies](#authoring-packages-with-interop-assemblies). +If your library contains COM interop assemblies, follow additional the guidelines in [Authoring packages with COM interop assemblies](#authoring-packages-with-com-interop-assemblies). ## The role and structure of the .nuspec file @@ -388,9 +388,7 @@ With NuGet 3.x, targets are not added to the project but are instead made availa # Authoring packages with COM interop assemblies -Packages that contain COM interop assemblies need to include an appropriate targets file so that the correct `EmbedInteropTypes` metadata is added to projects using the PackageReference format. - -By default, the `EmbedInteropTypes` metadata is always false for all assemblies when PackageReference is used. Package authors must explicitly add this metadata by including a [targets file](#including-msbuild-props-and-targets-in-a-package). The target name should be unique to avoid conflicts; ideally, use a combination of your package name and the assembly being embedded. For an example, see [NuGet.Samples.Interop](https://github.com/NuGet/Samples/tree/master/NuGet.Samples.Interop). +Packages that contain COM interop assemblies must include an appropriate [targets file](#including-msbuild-props-and-targets-in-a-package) so that the correct `EmbedInteropTypes` metadata is added to projects using the PackageReference format. By default, the `EmbedInteropTypes` metadata is always false for all assemblies when PackageReference is used, so the targets file adds this metadata explicitly. To avoid conflicts, the target name should be unique; ideally, use a combination of your package name and the assembly being embedded, replacing the `{InteropAssemblyName}` in the example below with that value. (Also see [NuGet.Samples.Interop](https://github.com/NuGet/Samples/tree/master/NuGet.Samples.Interop) for an example.) ```xml @@ -407,9 +405,7 @@ By default, the `EmbedInteropTypes` metadata is always false for all assemblies Note that when using the `packages.config` reference format, adding references to the assemblies from the packages causes NuGet and Visual Studio to check for COM interop assemblies and set the `EmbedInteropTypes` to true in the project file. In this case the targets are overriden. -Additionally, by default the [build assets do not flow transitively](https://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files#controlling-dependency-assets). -Packages authored this way, will work differently when they are a 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. +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 a 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. From 4db2c844a4b17fd6f15d4c515dd95e4d55cbb9ee Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Fri, 20 Oct 2017 15:30:43 -0700 Subject: [PATCH 0283/2943] Update Creating-a-Package.md --- docs/Create-Packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index ebfe4aa7b..6472797f0 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -405,7 +405,7 @@ Packages that contain COM interop assemblies must include an appropriate [target Note that when using the `packages.config` reference format, adding references to the assemblies from the packages causes NuGet and Visual Studio to check for COM interop assemblies and set the `EmbedInteropTypes` to true in the project file. In this case the targets are overriden. -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 a 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. +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. From 2eda3c48658214d6a2eacbdaa938e0374d9ebfa9 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 20 Oct 2017 15:37:17 -0700 Subject: [PATCH 0284/2943] Update Publish-a-package.md --- docs/Create-Packages/Publish-a-package.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index 16d944ca4..e71964d68 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -44,11 +44,11 @@ For nuget.org, you must first [register for a free account](https://www.nuget.or Next, you can either upload the package through the nuget.org web portal, or push to nuget.org from the command line: -- Web portal: use the Upload Package tab on nuget.org: +### Web portal: use the Upload Package tab on nuget.org: ![Upload a package with the NuGet Package Manager](media/publish_UploadYourPackage.PNG) -- Command line: +### Command line: > [!Important] > To push packages to nuget.org you must use [nuget.exe v4.1.0 or above](https://www.nuget.org/downloads), which implements the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). @@ -77,6 +77,9 @@ Next, you can either upload the package through the nuget.org web portal, or pus ![Message indicating a package is not yet indexed](media/publish_NotYetIndexed.png) +### Visual Studio Team Services (CI/CD) + +If you push packages to NuGet.org using Visual Studio Team Services as part of your Continuos Integration/Deployment process, please make sure to use the NuGet version 4.1 or above in the NuGet tasks. You can learn more in the following blog post: [Using the latest NuGet in your build](https://blogs.msdn.microsoft.com/devops/2017/09/29/using-the-latest-nuget-in-your-build/) ## Managing package owners on nuget.org From 9260fdd4eab5dd653755960df91882782a1fb24a Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 20 Oct 2017 15:45:44 -0700 Subject: [PATCH 0285/2943] Edits --- docs/Create-Packages/Publish-a-package.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index e71964d68..25fdcb0b1 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -42,7 +42,7 @@ For nuget.org, you must first [register for a free account](https://www.nuget.or ![NuGet registration and sign in location](media/publish_NuGetSignIn.png) -Next, you can either upload the package through the nuget.org web portal, or push to nuget.org from the command line: +Next, you can either upload the package through the nuget.org web portal, push to nuget.org from the command line, or publish as part of a CI/CD process through Visual Studio Team Services, as described in the following sections. ### Web portal: use the Upload Package tab on nuget.org: @@ -79,7 +79,7 @@ Next, you can either upload the package through the nuget.org web portal, or pus ### Visual Studio Team Services (CI/CD) -If you push packages to NuGet.org using Visual Studio Team Services as part of your Continuos Integration/Deployment process, please make sure to use the NuGet version 4.1 or above in the NuGet tasks. You can learn more in the following blog post: [Using the latest NuGet in your build](https://blogs.msdn.microsoft.com/devops/2017/09/29/using-the-latest-nuget-in-your-build/) +If you push packages to nuget.org using Visual Studio Team Services as part of your Continuous Integration/Deployment process, you must use nuget.exe 4.1 or above in the NuGet tasks. Details can be found on [Using the latest NuGet in your build](https://blogs.msdn.microsoft.com/devops/2017/09/29/using-the-latest-nuget-in-your-build/) (Microsoft DevOps blog). ## Managing package owners on nuget.org From 861988729668d0d01d5df407c389fa8e9d20f60c Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 23 Oct 2017 11:25:16 -0700 Subject: [PATCH 0286/2943] Correct typo in metadata --- docs/Quickstart/Restore.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Quickstart/Restore.md b/docs/Quickstart/Restore.md index 74792392d..142568960 100644 --- a/docs/Quickstart/Restore.md +++ b/docs/Quickstart/Restore.md @@ -1,7 +1,7 @@ --- # required metadata -title: NuGet Quick Guide ro Package Restore | Microsoft Docs +title: NuGet Quick Guide to Package Restore | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen From cf94bfbd10806c93c5aee414e222008c96f4dd4e Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 23 Oct 2017 19:57:09 -0700 Subject: [PATCH 0287/2943] Add files via upload --- .../media/QS_Restore-01-ToolsOptions.png | Bin 0 -> 47874 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/Quickstart/media/QS_Restore-01-ToolsOptions.png diff --git a/docs/Quickstart/media/QS_Restore-01-ToolsOptions.png b/docs/Quickstart/media/QS_Restore-01-ToolsOptions.png new file mode 100644 index 0000000000000000000000000000000000000000..46af0887270818a71c49d48ab20f3e9440fe3079 GIT binary patch literal 47874 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 R7r6pOUPeW_T+%e?e*yfe@YMhS literal 0 HcmV?d00001 From 09da0f1bb881e40f3cb27ba5c01bddd5e1e3dfdc Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 23 Oct 2017 20:06:06 -0700 Subject: [PATCH 0288/2943] Update Restore.md --- docs/Quickstart/Restore.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/docs/Quickstart/Restore.md b/docs/Quickstart/Restore.md index 74792392d..b26f59a32 100644 --- a/docs/Quickstart/Restore.md +++ b/docs/Quickstart/Restore.md @@ -23,15 +23,22 @@ ms.reviewer: # Quick guide to package restore -You may encounter situations where you need to restore the NuGet packages referenced by a project. For example, a project in Visual Studio may show the following error: +When you build a project in Visual Studio, it also runs NuGet restore as part of the project build. This is the deafult behavior. If you disable Package Restore from Tools/Options, you may encounter situations where the build fails because the project might be referencing packages that may be missing on your machine. + +For example, a project in Visual Studio may show the following error: ``` This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. The missing file is {name}. ``` -Use any of the following methods to quickly restore packages: +``` +One or more NuGet packages need to be restored but couldn't be because consent has not been granted. To give consent, open the Visual Studio Options dialog, click on the NuGet Package Manager node and check 'Allow NuGet to download missing packages during build.' You can also give consent by setting the environment variable 'EnableNuGetPackageRestore' to 'true'. +Missing packages: {name} +``` + +The solution is to enable NuGet package restore in Tools/Options. Ensure, both the boxes under `Package Restore` are checked i.e. `Allow NuGet to download missing packages`, and allow NuGet to `Automatically check for missing packages during build in Visual Studio`. -[!INCLUDE[package-restore](../includes/package-restore.md)] +![enable NuGet package restore in Tool/Options](media/QS_Restore-01-ToolsOptions.png) -For additional details, see [Package restore](../Consume-Packages/Package-Restore.md). \ No newline at end of file +For additional details, see [Package restore](../Consume-Packages/Package-Restore.md). From fc38d3bdfcd3ffd3dace0a4b8b565297b9384698 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 23 Oct 2017 20:43:55 -0700 Subject: [PATCH 0289/2943] Update Restore.md --- docs/Quickstart/Restore.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Quickstart/Restore.md b/docs/Quickstart/Restore.md index b26f59a32..9e821f3e3 100644 --- a/docs/Quickstart/Restore.md +++ b/docs/Quickstart/Restore.md @@ -41,4 +41,4 @@ The solution is to enable NuGet package restore in Tools/Options. Ensure, both t ![enable NuGet package restore in Tool/Options](media/QS_Restore-01-ToolsOptions.png) -For additional details, see [Package restore](../Consume-Packages/Package-Restore.md). +For additional details, see [Package restore](../Consume-Packages/Package-Restore#enabling-and-disabling-package-restore). From 46ae9fa5fdf82c7efeb7c2b14677a34102d800fa Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 23 Oct 2017 20:47:47 -0700 Subject: [PATCH 0290/2943] Update Restore.md --- docs/Quickstart/Restore.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Quickstart/Restore.md b/docs/Quickstart/Restore.md index 9e821f3e3..0f8e3fe75 100644 --- a/docs/Quickstart/Restore.md +++ b/docs/Quickstart/Restore.md @@ -39,6 +39,6 @@ Missing packages: {name} The solution is to enable NuGet package restore in Tools/Options. Ensure, both the boxes under `Package Restore` are checked i.e. `Allow NuGet to download missing packages`, and allow NuGet to `Automatically check for missing packages during build in Visual Studio`. -![enable NuGet package restore in Tool/Options](media/QS_Restore-01-ToolsOptions.png) +![enable NuGet package restore in Tool/Options](../Consume-Packages/media/restore-01-autorestoreoptions.png) For additional details, see [Package restore](../Consume-Packages/Package-Restore#enabling-and-disabling-package-restore). From 40271658fb8b7d58ca77063748453ce6e01cb8ad Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 23 Oct 2017 21:02:47 -0700 Subject: [PATCH 0291/2943] Update Package-Manager-Console.md --- docs/Tools/Package-Manager-Console.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index 033553d11..411bfac3d 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -16,8 +16,8 @@ ms.assetid: 2b92b119-6861-406c-82af-9d739af230e4 description: Instructions for using the NuGet Package Manager Console in Visual Studio for working with packages. keywords: NuGet package manager console, NuGet powershell, managing NuGet packages ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan --- From bec726c9868468139c9382eee00d27124c4f8541 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 23 Oct 2017 21:27:31 -0700 Subject: [PATCH 0292/2943] Update Package-Manager-Console.md --- docs/Tools/Package-Manager-Console.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index 033553d11..ac6d3778a 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -23,7 +23,28 @@ ms.reviewer: # Package Manager Console -The NuGet Package Manager Console is built into Visual Studio on Windows version 2012 and later (see [Availability](#availability-of-the-console)). The console lets you use [NuGet PowerShell commands](../tools/powershell-reference.md) to find, install, uninstall, and update NuGet packages. Using the console is necessary in cases where the Package Manager UI does not provide a way to perform an operation. +The NuGet Package Manager Console is built into Visual Studio on Windows version 2012 and later. + +## Installing a NuGet package in 3 easy steps + +1. Open the project in Visual Studio, open the console using the **Tools > NuGet Package Manager > Package Manager Console** command. For a solution with more than one project, select the desired project from the `Default project` drop down. + +2. Find the package you want to install. If you already know this, skip to step 3. + +```ps +# Find packages containing the keyword "elmah" +Find-Package elmah +``` + +3. Run the install command +```ps +# Add the Elmah package to the default project as specified in the console's project selector +Install-Package Elmah +``` + +That's it! + +The console lets you use [NuGet PowerShell commands](../tools/powershell-reference.md) to find, install, uninstall, and update NuGet packages. Using the console is necessary in cases where the Package Manager UI does not provide a way to perform an operation. All operations that are available in the console can also be done with the [NuGet CLI](../tools/nuget-exe-cli-reference.md). However, console commands operate within the context of Visual Studio and a saved project/solution and often accomplish more than their equivalent CLI commands. For example, installing a package through the console adds a reference to the project whereas the CLI command does not. For this reason, developers working in Visual Studio typically prefer using the console to the CLI. From 57f6ff13aeae42debcf1d878146c58f534f1bdf6 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 23 Oct 2017 21:42:26 -0700 Subject: [PATCH 0293/2943] Update Package-Manager-Console.md --- docs/Tools/Package-Manager-Console.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index ac6d3778a..e52a12507 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -27,7 +27,7 @@ The NuGet Package Manager Console is built into Visual Studio on Windows version ## Installing a NuGet package in 3 easy steps -1. Open the project in Visual Studio, open the console using the **Tools > NuGet Package Manager > Package Manager Console** command. For a solution with more than one project, select the desired project from the `Default project` drop down. +1. Open the project/solution in Visual Studio, and open the console using the **Tools > NuGet Package Manager > Package Manager Console** command. 2. Find the package you want to install. If you already know this, skip to step 3. @@ -38,8 +38,8 @@ Find-Package elmah 3. Run the install command ```ps -# Add the Elmah package to the default project as specified in the console's project selector -Install-Package Elmah +# Install the Elmah package to the project named MyProject. +Install-Package Elmah -ProjectName MyProject ``` That's it! From dc9c79411d9b33cb7b30908fb2b2d7ea4f7491b4 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 23 Oct 2017 21:44:57 -0700 Subject: [PATCH 0294/2943] Update Package-Manager-Console.md --- docs/Tools/Package-Manager-Console.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index e52a12507..28009522f 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -88,7 +88,7 @@ In this topic: Get-Package -updates # Updates a specific package using its identifier, in this case jQuery -# Update-Package jQuery +Update-Package jQuery # Update all packages in the project named MyProject (as it appears in Solution Explorer) Update-Package -ProjectName MyProject From b263c7746b5e2bb2dec6d8f7f8e70e8c6f046b35 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 24 Oct 2017 00:42:24 -0700 Subject: [PATCH 0295/2943] Update Package-Manager-Console.md --- docs/Tools/Package-Manager-Console.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index 28009522f..38ecbc6c3 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -135,10 +135,9 @@ Installing a package performs the following actions: - Displays applicable license terms in the console window with implied agreement. If you do not agree to the terms, you should uninstall the package immediately. - Adds a reference to the project in whatever reference format is in use. References subsequently appear in Solution Explorer and the applicable reference format file. Note, however, that with PackageReference, you need to save the project to see the changes in the project file directly. -- Caches the package in the project depending on the reference format in use: - - PackageReference: package is cached within or `project.assets.json` - - `packages.config`: creates a `packages` folder and copies package files into a subfolder within it. - - `project.json`: package is cached within `project.lock.json` +- Caches the package and updates the restore graph: + - PackageReference: package is cached at `%USERPROFILE%\.nuget\packages` and the restore graph i.e. `project.assets.json` is updated. + - `packages.config`: creates a `packages` folder at the solution root and copies the package files into a subfolder within it. The restore graph i.e. `package.config` is updated. - Updates `app.config` and/or `web.config` if the package uses [source and config file transformations](../create-packages/source-and-config-file-transformations.md). - Installs any dependencies if not already present in the project. This might update package versions in the process, as described in [Dependency Resolution](../consume-packages/dependency-resolution.md). - Displays the package's readme file, if available, in a Visual Studio window. From d4e901d9f2129b5b8717b24a0864a5cef9a8d66d Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 24 Oct 2017 00:57:55 -0700 Subject: [PATCH 0296/2943] Update Package-Manager-Console.md --- docs/Tools/Package-Manager-Console.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index 38ecbc6c3..5d8f8efb3 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -135,9 +135,9 @@ Installing a package performs the following actions: - Displays applicable license terms in the console window with implied agreement. If you do not agree to the terms, you should uninstall the package immediately. - Adds a reference to the project in whatever reference format is in use. References subsequently appear in Solution Explorer and the applicable reference format file. Note, however, that with PackageReference, you need to save the project to see the changes in the project file directly. -- Caches the package and updates the restore graph: - - PackageReference: package is cached at `%USERPROFILE%\.nuget\packages` and the restore graph i.e. `project.assets.json` is updated. - - `packages.config`: creates a `packages` folder at the solution root and copies the package files into a subfolder within it. The restore graph i.e. `package.config` is updated. +- Caches the package: + - PackageReference: package is cached at `%USERPROFILE%\.nuget\packages` and the lock file i.e. `project.assets.json` is updated. + - `packages.config`: creates a `packages` folder at the solution root and copies the package files into a subfolder within it. The `package.config` file is updated. - Updates `app.config` and/or `web.config` if the package uses [source and config file transformations](../create-packages/source-and-config-file-transformations.md). - Installs any dependencies if not already present in the project. This might update package versions in the process, as described in [Dependency Resolution](../consume-packages/dependency-resolution.md). - Displays the package's readme file, if available, in a Visual Studio window. @@ -163,7 +163,6 @@ See [Uninstall-Package](../tools/ps-ref-uninstall-package.md). Use [Get-Package] Uninstalling a package performs the following actions: - Removes references to the package from the project (and whatever reference format is in use). References no longer appear in Solution Explorer. (You might need to rebuild the project to see it removed from the **Bin** folder.) -- Removes the package from the project cache (`project.assets.json`, the `packages` folder, or `project.lock.json`) - Reverses any changes made to `app.config` or `web.config` when the package was installed. - Removes previously-installed dependencies if no remaining packages use those dependencies. From f673921d12b81e24512b9920ab4a97b73a3d2e2f Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 24 Oct 2017 00:59:45 -0700 Subject: [PATCH 0297/2943] Update Package-Manager-Console.md --- docs/Tools/Package-Manager-Console.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index 5d8f8efb3..3f772f7e5 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -175,7 +175,7 @@ In Visual Studio 2017, NuGet and the NuGet Package Manager are automatically ins Also, if you're missing the NuGet Package Manager in Visual Studio 2015 and earlier, check **Tools > Extensions and Updates...** and search for the NuGet Package Manager extension. If you're unable to use the extensions installer in Visual Studio, you can download the extension directly from [https://dist.nuget.org/index.html](https://dist.nuget.org/index.html). -The Package Manager Console it is not presently available with Visual Studio for Mac. The equivalent commands, however, are available through the [NuGet CLI](nuget-exe-CLI-reference.md). Visual Studio for Mac does have a UI managing NuGet packages. See [Including a NuGet package in your project](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough). +The Package Manager Console is not presently available with Visual Studio for Mac. The equivalent commands, however, are available through the [NuGet CLI](nuget-exe-CLI-reference.md). Visual Studio for Mac does have a UI for managing NuGet packages. See [Including a NuGet package in your project](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough). ## Extending the Package Manager Console From ea02961b8df0fae830ed1f54fe8ac5edc825032e Mon Sep 17 00:00:00 2001 From: Chris McKee Date: Tue, 24 Oct 2017 09:57:57 +0100 Subject: [PATCH 0298/2943] Correct Typo --- docs/Release-Notes/NuGet-4.4-RTM.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/Release-Notes/NuGet-4.4-RTM.md b/docs/Release-Notes/NuGet-4.4-RTM.md index 9f1bd76f8..0e4aefac1 100644 --- a/docs/Release-Notes/NuGet-4.4-RTM.md +++ b/docs/Release-Notes/NuGet-4.4-RTM.md @@ -36,7 +36,7 @@ ms.reviewer: ## Known issues ### Issues with .NET Standard 2.0 with .NET Framework & NuGet -.NET Standard & its tooling was desgined such that projects targeting .NET Framework 4.6.1 can consume NuGet packages & projects targeting .NET Standard 2.0 or earlier. [This document](https://github.com/dotnet/standard/issues/481) summarizes the issues around that scenario, the plan for addressing them, and workarounds you can deploy with today's state of the tooling. +.NET Standard & its tooling was designed such that projects targeting .NET Framework 4.6.1 can consume NuGet packages & projects targeting .NET Standard 2.0 or earlier. [This document](https://github.com/dotnet/standard/issues/481) summarizes the issues around that scenario, the plan for addressing them, and workarounds you can deploy with today's state of the tooling. ### While using Package Manager Console, 'Enter' key may not work @@ -150,7 +150,7 @@ There is no workaround at this time. * Nuget.exe (3.+) install package with Version number and ExcludeVersion flag doesn't update package to newer version - [#2405](https://github.com/NuGet/Home/issues/2405) -* Project.json restore should warn when top level packages violate constraints - [#2358](https://github.com/NuGet/Home/issues/2358) +* Project.json restore should warn when top-level packages violate constraints - [#2358](https://github.com/NuGet/Home/issues/2358) * -ConfigFile is not setting custom config on install command - [#1646](https://github.com/NuGet/Home/issues/1646) @@ -176,7 +176,7 @@ There is no workaround at this time. * Lightweight Solution Load: Support - PMC - [#5053](https://github.com/NuGet/Home/issues/5053) -* Add support for pre restore MSBuild target that Visual Studio triggers - [#4781](https://github.com/NuGet/Home/issues/4781) +* Add support for pre-restore MSBuild target that Visual Studio triggers - [#4781](https://github.com/NuGet/Home/issues/4781) * Add a public target to NuGet.targets that can be referenced using BeforeTargets - [#4634](https://github.com/NuGet/Home/issues/4634) @@ -194,6 +194,6 @@ There is no workaround at this time. [Issues List 1](https://github.com/NuGet/Home/issues?q=is:issue+is:closed+milestone:"4.4") -[Issues List 2](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.4+-+7%2F31+through+8%2F18%22) +[Issues List 2](https://github.com/NuGet/Home/issues?q=is:issue+is:closed+milestone:%224.4+-+7%2F31+through+8%2F18%22) -[Issues List 3](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.4+-+7%2F10+through+7%2F28%22) +[Issues List 3](https://github.com/NuGet/Home/issues?q=is:issue+is:closed+milestone:%224.4+-+7%2F10+through+7%2F28%22) From 8ab5459ae7f342b553fe78602ed894895872c16e Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 24 Oct 2017 09:18:26 -0700 Subject: [PATCH 0299/2943] Fixing indentations --- docs/Create-Packages/Publish-a-package.md | 36 +++++++++++------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index 25fdcb0b1..2914743b3 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -46,36 +46,36 @@ Next, you can either upload the package through the nuget.org web portal, push t ### Web portal: use the Upload Package tab on nuget.org: - ![Upload a package with the NuGet Package Manager](media/publish_UploadYourPackage.PNG) +![Upload a package with the NuGet Package Manager](media/publish_UploadYourPackage.PNG) ### Command line: - > [!Important] - > To push packages to nuget.org you must use [nuget.exe v4.1.0 or above](https://www.nuget.org/downloads), which implements the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). +> [!Important] +> To push packages to nuget.org you must use [nuget.exe v4.1.0 or above](https://www.nuget.org/downloads), which implements the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). - 1. Click on your user name to navigate to your account settings. - 2. Under **API Key**, click **copy to clipboard** to retrieve the access key you'll need in the CLI: +1. Click on your user name to navigate to your account settings. +2. Under **API Key**, click **copy to clipboard** to retrieve the access key you'll need in the CLI: - ![Copying an API Key from account settings](media/publish_APIKey.png) + ![Copying an API Key from account settings](media/publish_APIKey.png) - 3. At a command prompt, run the following command: +3. At a command prompt, run the following command: - ``` - nuget setApiKey Your-API-Key - ``` + ``` + nuget setApiKey Your-API-Key + ``` - This stores your API key on the machine so that you need not do this step again on the same machine. + This stores your API key on the machine so that you need not do this step again on the same machine. - 4. Push your package to NuGet Gallery using the command: +4. Push your package to NuGet Gallery using the command: - ``` - nuget push YourPackage.nupkg -Source https://www.nuget.org/api/v2/package - ``` + ``` + nuget push YourPackage.nupkg -Source https://www.nuget.org/api/v2/package + ``` - 5. Before being made public, all packages uploaded to nuget.org are scanned for viruses and rejected if any viruses are found. All packages listed on nuget.org are also scanned periodically. +5. Before being made public, all packages uploaded to nuget.org are scanned for viruses and rejected if any viruses are found. All packages listed on nuget.org are also scanned periodically. - 6. In your account on nuget.org, click **Manage my packages** to see the one that you just published; you'll also receive a confirmation email. Note that it might take a while for your package to be indexed and appear in search results where others can find it, during which time you'll see the following message on your package page: +6. In your account on nuget.org, click **Manage my packages** to see the one that you just published; you'll also receive a confirmation email. Note that it might take a while for your package to be indexed and appear in search results where others can find it, during which time you'll see the following message on your package page: - ![Message indicating a package is not yet indexed](media/publish_NotYetIndexed.png) + ![Message indicating a package is not yet indexed](media/publish_NotYetIndexed.png) ### Visual Studio Team Services (CI/CD) From 28083c9513557a389b408be87abb2a8a774b5f55 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 24 Oct 2017 09:21:09 -0700 Subject: [PATCH 0300/2943] Edit direct email address for anti-spam --- docs/Policies/NuGet-FAQ.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index 0ce4a0d33..693aadd8c 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -168,7 +168,7 @@ This is not an issue when using PackageReference, as each project file contains **Is it possible to reserve names for packages that will be published in future?** -Yes. You can reserve IDs for packages on [nuget.org](https://www.nuget.org/) by requesting a package ID prefix for your account. In order to request a package ID prefix, send mail to account@nuget.org with the package owner display name, and the requested package ID prefix. +Yes. You can reserve IDs for packages on [nuget.org](https://www.nuget.org/) by requesting a package ID prefix for your account. In order to request a package ID prefix, send mail to account (at) nuget.org with the package owner display name, and the requested package ID prefix. **How do I claim ownership for packages ?** From 7d3efcbb836490daf42f5d959683b00680c12703 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 24 Oct 2017 09:35:45 -0700 Subject: [PATCH 0301/2943] Edits --- docs/Quickstart/Restore.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/Quickstart/Restore.md b/docs/Quickstart/Restore.md index 0f8e3fe75..a96e73025 100644 --- a/docs/Quickstart/Restore.md +++ b/docs/Quickstart/Restore.md @@ -5,7 +5,7 @@ title: NuGet Quick Guide ro Package Restore | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/3/2017 +ms.date: 10/24/2017 ms.topic: article ms.prod: nuget ms.technology: null @@ -23,9 +23,7 @@ ms.reviewer: # Quick guide to package restore -When you build a project in Visual Studio, it also runs NuGet restore as part of the project build. This is the deafult behavior. If you disable Package Restore from Tools/Options, you may encounter situations where the build fails because the project might be referencing packages that may be missing on your machine. - -For example, a project in Visual Studio may show the following error: +By default, building a project in Visual Studio automatically restores NuGet packages referenced in the project. However, builds will fail with if package restore is disabled in the **Tools > Options > NuGet Package Manager > Package Restore** settings and the necessary packages are not available on your computer. In these cases you may see the following errors: ``` This project references NuGet package(s) that are missing on this computer. @@ -33,11 +31,14 @@ Use NuGet Package Restore to download them. The missing file is {name}. ``` ``` -One or more NuGet packages need to be restored but couldn't be because consent has not been granted. To give consent, open the Visual Studio Options dialog, click on the NuGet Package Manager node and check 'Allow NuGet to download missing packages during build.' You can also give consent by setting the environment variable 'EnableNuGetPackageRestore' to 'true'. -Missing packages: {name} +One or more NuGet packages need to be restored but couldn't be because consent has +not been granted. To give consent, open the Visual Studio Options dialog, click on +the NuGet Package Manager node and check 'Allow NuGet to download missing packages +during build.' You can also give consent by setting the environment variable +'EnableNuGetPackageRestore' to 'true'. Missing packages: {name} ``` -The solution is to enable NuGet package restore in Tools/Options. Ensure, both the boxes under `Package Restore` are checked i.e. `Allow NuGet to download missing packages`, and allow NuGet to `Automatically check for missing packages during build in Visual Studio`. +The enable package restore, open **Tools > Options > NuGet Package Manager** and select the options for **Allow NuGet to download missing packages** and **Automatically check for missing packages during build in Visual Studio**: ![enable NuGet package restore in Tool/Options](../Consume-Packages/media/restore-01-autorestoreoptions.png) From 177e47f84835e95fbaf5a5525d5e58adccca01eb Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 24 Oct 2017 09:41:39 -0700 Subject: [PATCH 0302/2943] Edits Moved the Console description back up (it's needed in the opening paragraph), removed the H2 to keep the focus on the steps, and put note about the CLI in a callout. Also moved install/uninstall up earlier. --- docs/Tools/Package-Manager-Console.md | 95 +++++++++++++-------------- 1 file changed, 46 insertions(+), 49 deletions(-) diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index 3f772f7e5..819225a1a 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -5,7 +5,7 @@ title: NuGet Package Manager Console Guide | Microsoft Docs author: kraigb hms.author: kraigb manager: ghogen -ms.date: 10/2/2017 +ms.date: 10/24/2017 ms.topic: article ms.prod: nuget ms.technology: null @@ -23,9 +23,9 @@ ms.reviewer: # Package Manager Console -The NuGet Package Manager Console is built into Visual Studio on Windows version 2012 and later. +The NuGet Package Manager Console is built into Visual Studio on Windows version 2012 and later. The console lets you use [NuGet PowerShell commands](../tools/powershell-reference.md) to find, install, uninstall, and update NuGet packages. Using the console is necessary in cases where the Package Manager UI does not provide a way to perform an operation. -## Installing a NuGet package in 3 easy steps +For example, finding and installing a package is done with three easy steps: 1. Open the project/solution in Visual Studio, and open the console using the **Tools > NuGet Package Manager > Package Manager Console** command. @@ -42,23 +42,20 @@ Find-Package elmah Install-Package Elmah -ProjectName MyProject ``` -That's it! - -The console lets you use [NuGet PowerShell commands](../tools/powershell-reference.md) to find, install, uninstall, and update NuGet packages. Using the console is necessary in cases where the Package Manager UI does not provide a way to perform an operation. - -All operations that are available in the console can also be done with the [NuGet CLI](../tools/nuget-exe-cli-reference.md). However, console commands operate within the context of Visual Studio and a saved project/solution and often accomplish more than their equivalent CLI commands. For example, installing a package through the console adds a reference to the project whereas the CLI command does not. For this reason, developers working in Visual Studio typically prefer using the console to the CLI. - In this topic: - [Opening the console](#opening-the-console) -- [Finding a package](#finding-a-package) -- [Updating a package](#updating-a-package) - [Installing a package](#installing-a-package) - [Uninstalling a package](#uninstalling-a-package) +- [Finding a package](#finding-a-package) +- [Updating a package](#updating-a-package) - [Availability of the console](#availability-of-the-console) - [Extending the Package Manager Console](#extending-the-package-manager-console) - [Setting up a NuGet PowerShell profile](#setting-up-a-nuget-powershell-profile) +> [!Important] +> All operations that are available in the console can also be done with the [NuGet CLI](../tools/nuget-exe-cli-reference.md). However, console commands operate within the context of Visual Studio and a saved project/solution and often accomplish more than their equivalent CLI commands. For example, installing a package through the console adds a reference to the project whereas the CLI command does not. For this reason, developers working in Visual Studio typically prefer using the console to the CLI. + > [!Tip] > Many console operations depend on having a solution opened in Visual Studio with a known path name. If you have an unsaved solution, or no solution, you can see the error, "Solution is not opened or not saved. Please ensure you have an open and saved solution." This indicates that the console cannot determine the solution folder. Saving an unsaved solution, or creating and saving a solution if you don't have one open, should correct the error. @@ -81,44 +78,6 @@ In this topic: ![Package Manager Console stop control](media/PackageManagerConsoleControls3.png) -## Updating a package - -```ps -# Checks if there are newer versions available for any installed packages -Get-Package -updates - -# Updates a specific package using its identifier, in this case jQuery -Update-Package jQuery - -# Update all packages in the project named MyProject (as it appears in Solution Explorer) -Update-Package -ProjectName MyProject - -# Update all packages in the solution -Update-Package -``` - -See [Get-Package](../tools/ps-ref-get-package.md) and [Update-Package](../tools/ps-ref-update-package.md) - -## Finding a package - -```ps -# Find packages containing keywords -Find-Package elmah -Find-Package logging - -# List packages whose ID begins with Elmah -Find-Package Elmah -StartWith - -# By default, Get-Package returns a list of 20 packages; use -First to show more -Find-Package logging -First 100 - -# List all versions of the package with the ID of "jquery" -Find-Package jquery -AllVersions -ExactMatch -``` - -See [Find-Package](../tools/ps-ref-find-package.md). In Visual Studio 2013 and earlier, use [Get-Package](../tools/ps-ref-get-package.md) instead. - - ## Installing a package ```ps @@ -169,6 +128,44 @@ Uninstalling a package performs the following actions: > [!Tip] > Like `Install-Package`, the `Uninstall-Package` command has the benefit of managing references in the project, unlike the `nuget uninstall` CLI command. +## Updating a package + +```ps +# Checks if there are newer versions available for any installed packages +Get-Package -updates + +# Updates a specific package using its identifier, in this case jQuery +Update-Package jQuery + +# Update all packages in the project named MyProject (as it appears in Solution Explorer) +Update-Package -ProjectName MyProject + +# Update all packages in the solution +Update-Package +``` + +See [Get-Package](../tools/ps-ref-get-package.md) and [Update-Package](../tools/ps-ref-update-package.md) + +## Finding a package + +```ps +# Find packages containing keywords +Find-Package elmah +Find-Package logging + +# List packages whose ID begins with Elmah +Find-Package Elmah -StartWith + +# By default, Get-Package returns a list of 20 packages; use -First to show more +Find-Package logging -First 100 + +# List all versions of the package with the ID of "jquery" +Find-Package jquery -AllVersions -ExactMatch +``` + +See [Find-Package](../tools/ps-ref-find-package.md). In Visual Studio 2013 and earlier, use [Get-Package](../tools/ps-ref-get-package.md) instead. + + ## Availability of the console In Visual Studio 2017, NuGet and the NuGet Package Manager are automatically installed when you select any .NET-related workloads; you can also install it individually by checking the **Individual components > Code tools > NuGet package manager** option in the Visual Studio 2017 installer. From e7715a99f8a162ae44b2e17c5051ce4d2dcca44b Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 24 Oct 2017 09:44:03 -0700 Subject: [PATCH 0303/2943] Fix warning --- docs/Quickstart/Restore.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Quickstart/Restore.md b/docs/Quickstart/Restore.md index a96e73025..7d2f249c6 100644 --- a/docs/Quickstart/Restore.md +++ b/docs/Quickstart/Restore.md @@ -42,4 +42,4 @@ The enable package restore, open **Tools > Options > NuGet Package Manager** and ![enable NuGet package restore in Tool/Options](../Consume-Packages/media/restore-01-autorestoreoptions.png) -For additional details, see [Package restore](../Consume-Packages/Package-Restore#enabling-and-disabling-package-restore). +For additional details, see [Package restore](../Consume-Packages/Package-Restore.md#enabling-and-disabling-package-restore). From fbf84ff7c6460289e765ac9f29b659d4707e4f72 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 24 Oct 2017 09:45:06 -0700 Subject: [PATCH 0304/2943] Correcting indentation --- docs/Tools/Package-Manager-Console.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index 819225a1a..c008251b1 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -31,16 +31,17 @@ For example, finding and installing a package is done with three easy steps: 2. Find the package you want to install. If you already know this, skip to step 3. -```ps -# Find packages containing the keyword "elmah" -Find-Package elmah -``` + ```ps + # Find packages containing the keyword "elmah" + Find-Package elmah + ``` 3. Run the install command -```ps -# Install the Elmah package to the project named MyProject. -Install-Package Elmah -ProjectName MyProject -``` + + ```ps + # Install the Elmah package to the project named MyProject. + Install-Package Elmah -ProjectName MyProject + ``` In this topic: From 63d5ffe92d4f89d209e815dd938e5bfaffbe3268 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 24 Oct 2017 09:59:00 -0700 Subject: [PATCH 0305/2943] Updating github IDs for Karan and Unni --- docs/API/NuGet-API-V3.md | 4 ++-- .../NuGet-Credential-Providers-for-Visual-Studio.md | 4 ++-- docs/API/NuGet-Protocols.md | 4 ++-- docs/API/nuget-exe-Credential-Providers.md | 4 ++-- docs/Consume-Packages/Configuring-NuGet-Behavior.md | 4 ++-- docs/Consume-Packages/Dependency-Resolution.md | 4 ++-- .../Finding-and-Choosing-Packages.md | 4 ++-- docs/Consume-Packages/Managing-the-NuGet-Cache.md | 4 ++-- docs/Consume-Packages/Overview-and-Workflow.md | 4 ++-- .../Package-References-in-Project-Files.md | 4 ++-- docs/Consume-Packages/Package-Restore.md | 12 ++++++++---- docs/Consume-Packages/Packages-and-Source-Control.md | 4 ++-- .../Reinstalling-and-Updating-Packages.md | 4 ++-- docs/Consume-Packages/Team-Foundation-Build.md | 4 ++-- docs/Create-Packages/Creating-Localized-Packages.md | 4 ++-- docs/Create-Packages/Creating-a-Package.md | 4 ++-- docs/Create-Packages/Native-Packages.md | 4 ++-- docs/Create-Packages/Overview-and-Workflow.md | 4 ++-- docs/Create-Packages/Prerelease-Packages.md | 4 ++-- docs/Create-Packages/Publish-a-package.md | 4 ++-- .../Source-and-Config-File-Transformations.md | 4 ++-- .../Supporting-Multiple-Target-Frameworks.md | 4 ++-- docs/Create-Packages/Symbol-Packages.md | 4 ++-- docs/Create-Packages/project-json-Impact.md | 4 ++-- docs/Create-Packages/project-json-and-UWP.md | 4 ++-- docs/Guides/Create-Cross-Platform-Packages.md | 4 ++-- docs/Guides/Create-NET-Standard-Packages-VS2015.md | 4 ++-- docs/Guides/Create-NET-Standard-Packages-VS2017.md | 4 ++-- docs/Guides/Create-UWP-Controls.md | 4 ++-- docs/Guides/Create-UWP-Packages.md | 4 ++-- docs/Guides/Install-NuGet.md | 4 ++-- docs/Hosting-Packages/Local-Feeds.md | 4 ++-- docs/Hosting-Packages/NuGet-Server.md | 4 ++-- docs/Hosting-Packages/Overview.md | 4 ++-- docs/Policies/Deleting-Packages.md | 4 ++-- docs/Policies/Dispute-Resolution.md | 4 ++-- docs/Policies/Ecosystem.md | 4 ++-- docs/Policies/Governance.md | 4 ++-- docs/Policies/NuGet-FAQ.md | 4 ++-- docs/Quickstart/Create-and-Publish-a-Package.md | 4 ++-- docs/Quickstart/Restore.md | 4 ++-- docs/Quickstart/Use-a-Package.md | 4 ++-- docs/Reference/Errors-and-Warnings.md | 4 ++-- docs/Reference/ID-Prefix-Reservation.md | 6 +++--- docs/Reference/Package-Versioning.md | 4 ++-- docs/Release-Notes/Index.md | 4 ++-- docs/Release-Notes/Known-Issues.md | 8 ++++---- docs/Release-Notes/NuGet-1.1.md | 8 ++++---- docs/Release-Notes/NuGet-1.2.md | 8 ++++---- docs/Release-Notes/NuGet-1.3.md | 8 ++++---- docs/Release-Notes/NuGet-1.4.md | 8 ++++---- docs/Release-Notes/NuGet-1.5.md | 8 ++++---- docs/Release-Notes/NuGet-1.6.md | 8 ++++---- docs/Release-Notes/NuGet-1.7.md | 8 ++++---- docs/Release-Notes/NuGet-1.8.md | 8 ++++---- docs/Release-Notes/NuGet-2.0.md | 8 ++++---- docs/Release-Notes/NuGet-2.1.md | 8 ++++---- docs/Release-Notes/NuGet-2.12-RC.md | 8 ++++---- docs/Release-Notes/NuGet-2.12.md | 8 ++++---- docs/Release-Notes/NuGet-2.2.1.md | 8 ++++---- docs/Release-Notes/NuGet-2.2.md | 8 ++++---- docs/Release-Notes/NuGet-2.5.md | 8 ++++---- docs/Release-Notes/NuGet-2.6.1-for-WebMatrix.md | 8 ++++---- docs/Release-Notes/NuGet-2.6.md | 8 ++++---- docs/Release-Notes/NuGet-2.7.1.md | 8 ++++---- docs/Release-Notes/NuGet-2.7.2.md | 8 ++++---- docs/Release-Notes/NuGet-2.7.md | 8 ++++---- docs/Release-Notes/NuGet-2.8.1.md | 8 ++++---- docs/Release-Notes/NuGet-2.8.2.md | 8 ++++---- docs/Release-Notes/NuGet-2.8.3.md | 8 ++++---- docs/Release-Notes/NuGet-2.8.5.md | 8 ++++---- docs/Release-Notes/NuGet-2.8.6.md | 8 ++++---- docs/Release-Notes/NuGet-2.8.7.md | 8 ++++---- docs/Release-Notes/NuGet-2.8.md | 8 ++++---- docs/Release-Notes/NuGet-2.9-RC.md | 8 ++++---- docs/Release-Notes/NuGet-3.0-Beta.md | 8 ++++---- docs/Release-Notes/NuGet-3.0-Preview.md | 8 ++++---- docs/Release-Notes/NuGet-3.0-RC.md | 8 ++++---- docs/Release-Notes/NuGet-3.0-RC2.md | 8 ++++---- docs/Release-Notes/NuGet-3.0.0.md | 8 ++++---- docs/Release-Notes/NuGet-3.1.1.md | 8 ++++---- docs/Release-Notes/NuGet-3.1.md | 8 ++++---- docs/Release-Notes/NuGet-3.2-RC.md | 8 ++++---- docs/Release-Notes/NuGet-3.2.1.md | 8 ++++---- docs/Release-Notes/NuGet-3.2.md | 8 ++++---- docs/Release-Notes/NuGet-3.3.md | 8 ++++---- docs/Release-Notes/NuGet-3.4-RC.md | 8 ++++---- docs/Release-Notes/NuGet-3.4.1.md | 8 ++++---- docs/Release-Notes/NuGet-3.4.2.md | 8 ++++---- docs/Release-Notes/NuGet-3.4.3.md | 8 ++++---- docs/Release-Notes/NuGet-3.4.4.md | 8 ++++---- docs/Release-Notes/NuGet-3.4.md | 8 ++++---- docs/Release-Notes/NuGet-3.5-Beta.md | 8 ++++---- docs/Release-Notes/NuGet-3.5-Beta2.md | 8 ++++---- docs/Release-Notes/NuGet-3.5-RC.md | 8 ++++---- docs/Release-Notes/NuGet-3.5-RTM.md | 8 ++++---- docs/Release-Notes/NuGet-4.0-RC.md | 4 ++-- docs/Release-Notes/NuGet-4.0-RTM.md | 6 +++--- docs/Release-Notes/NuGet-4.3-RTM.md | 10 +++++----- docs/Release-Notes/NuGet-4.4-RTM.md | 10 +++++----- docs/Schema/Analyzers-Conventions.md | 4 ++-- docs/Schema/Target-Frameworks.md | 4 ++-- docs/Schema/msbuild-targets.md | 2 +- docs/Schema/nuget-config-file.md | 4 ++-- docs/Schema/nuspec.md | 4 ++-- docs/Schema/packages-config.md | 4 ++-- docs/Schema/project-json.md | 4 ++-- docs/Tools/Package-Manager-Console.md | 4 ++-- docs/Tools/Package-Manager-UI.md | 4 ++-- docs/Tools/PowerShell-Reference.md | 4 ++-- docs/Tools/dotnet-Commands.md | 4 ++-- docs/Tools/nuget-exe-CLI-Reference.md | 4 ++-- docs/Tools/ps-ref-add-bindingredirect.md | 4 ++-- docs/Tools/ps-ref-find-package.md | 4 ++-- docs/Tools/ps-ref-get-package.md | 4 ++-- docs/Tools/ps-ref-get-project.md | 4 ++-- docs/Tools/ps-ref-install-package.md | 4 ++-- docs/Tools/ps-ref-open-packagepage.md | 4 ++-- docs/Tools/ps-ref-register-tabexpansion.md | 4 ++-- docs/Tools/ps-ref-sync-package.md | 4 ++-- docs/Tools/ps-ref-uninstall-package.md | 4 ++-- docs/Tools/ps-ref-update-package.md | 4 ++-- .../NuGet-API-in-Visual-Studio.md | 4 ++-- .../Project-System-Support.md | 4 ++-- .../Visual-Studio-Templates.md | 4 ++-- docs/What-is-NuGet.md | 4 ++-- docs/index.md | 2 +- 127 files changed, 366 insertions(+), 362 deletions(-) diff --git a/docs/API/NuGet-API-V3.md b/docs/API/NuGet-API-V3.md index ccb98efe1..36f31aa22 100644 --- a/docs/API/NuGet-API-V3.md +++ b/docs/API/NuGet-API-V3.md @@ -21,8 +21,8 @@ keywords: NuGet API, NuGetGallery API, NuGet v3 libraries #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/API/NuGet-Credential-Providers-for-Visual-Studio.md b/docs/API/NuGet-Credential-Providers-for-Visual-Studio.md index 382c80d10..ed3976bb8 100644 --- a/docs/API/NuGet-Credential-Providers-for-Visual-Studio.md +++ b/docs/API/NuGet-Credential-Providers-for-Visual-Studio.md @@ -20,8 +20,8 @@ keywords: NuGet credential providers, authenticate with feed, authenticate with #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/API/NuGet-Protocols.md b/docs/API/NuGet-Protocols.md index 055f0adb7..76bae7510 100644 --- a/docs/API/NuGet-Protocols.md +++ b/docs/API/NuGet-Protocols.md @@ -4,7 +4,7 @@ title: NuGet Protocols | Microsoft Docs author: anangaur ms.author: anangaur -manager: unnir +manager: unniravindranathan ms.date: 10/3/2017 ms.topic: article ms.prod: nuget @@ -16,7 +16,7 @@ ms.assetid: ba1d9742-9f1c-42ff-8c30-8e953e23c501 description: The evolving nuget.org protocols to interact with nuget.org by NuGet clients. ms.reviewer: - kraigb -- karann +- karann-msft --- # NuGet Protocols diff --git a/docs/API/nuget-exe-Credential-Providers.md b/docs/API/nuget-exe-Credential-Providers.md index 7482d559c..166834dad 100644 --- a/docs/API/nuget-exe-Credential-Providers.md +++ b/docs/API/nuget-exe-Credential-Providers.md @@ -20,8 +20,8 @@ keywords: nuget.exe credential providers, credential provider API, authenticate #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index f0c6bcb8d..38286e29c 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -20,8 +20,8 @@ keywords: NuGet config files, NuGet configuration, NuGet behavior settings, NuGe #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Consume-Packages/Dependency-Resolution.md b/docs/Consume-Packages/Dependency-Resolution.md index d673fb813..fd4e36228 100644 --- a/docs/Consume-Packages/Dependency-Resolution.md +++ b/docs/Consume-Packages/Dependency-Resolution.md @@ -20,8 +20,8 @@ keywords: NuGet package dependencies, NuGet versioning, dependency versions, ver #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Consume-Packages/Finding-and-Choosing-Packages.md b/docs/Consume-Packages/Finding-and-Choosing-Packages.md index b963e20ef..d77032628 100644 --- a/docs/Consume-Packages/Finding-and-Choosing-Packages.md +++ b/docs/Consume-Packages/Finding-and-Choosing-Packages.md @@ -20,8 +20,8 @@ keywords: NuGet package consumption, NuGet package discovery, best NuGet package #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Consume-Packages/Managing-the-NuGet-Cache.md b/docs/Consume-Packages/Managing-the-NuGet-Cache.md index 6e2ae243e..b1d0aaebc 100644 --- a/docs/Consume-Packages/Managing-the-NuGet-Cache.md +++ b/docs/Consume-Packages/Managing-the-NuGet-Cache.md @@ -20,8 +20,8 @@ keywords: NuGet package cache, package caching, NuGet caches, managing caches, l #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Consume-Packages/Overview-and-Workflow.md b/docs/Consume-Packages/Overview-and-Workflow.md index 722fae77f..dab0ce484 100644 --- a/docs/Consume-Packages/Overview-and-Workflow.md +++ b/docs/Consume-Packages/Overview-and-Workflow.md @@ -20,8 +20,8 @@ keywords: NuGet package consumption, NuGet consumption overview, NuGet consumpti #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Consume-Packages/Package-References-in-Project-Files.md b/docs/Consume-Packages/Package-References-in-Project-Files.md index c5f03bd27..b630fca22 100644 --- a/docs/Consume-Packages/Package-References-in-Project-Files.md +++ b/docs/Consume-Packages/Package-References-in-Project-Files.md @@ -20,8 +20,8 @@ keywords: NuGet package dependencies, package references, project files, Package #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/Consume-Packages/Package-Restore.md index 5929b0a55..2bd177d99 100644 --- a/docs/Consume-Packages/Package-Restore.md +++ b/docs/Consume-Packages/Package-Restore.md @@ -5,7 +5,7 @@ title: NuGet Package Restore | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/3/2017 +ms.date: 10/24/2017 ms.topic: article ms.prod: nuget ms.technology: null @@ -16,8 +16,8 @@ ms.assetid: a7bf21da-86ae-4c2d-8750-04ff53f41967 description: A description of how NuGet restores packages upon which a project depends, including how to disable restore and constrain versions. keywords: NuGet package restore, NuGet package installation, installing package, restoring packages, dependency versions, disabling automatic restore, constraining package versions ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan --- @@ -46,6 +46,10 @@ For additional details on package restore on build servers, see [Package restore [!INCLUDE[package-restore](../includes/package-restore.md)] +> [!Note] +> 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," turn on automatic restore by following the instructions under [Enabling and disabling package restore](#enabling-and-disabling-package-restore). + ## Package restore overview First, package references are maintained in one of the following package management formats, depending on project type and NuGet version. (Note that NuGet 4 and MSBuild 15.1 are installed with Visual Studio 2017.) @@ -82,7 +86,7 @@ See [Automatic restore in Visual Studio](#automatic-restore-in-visual-studio) be Automatic restore and command-line restore is enabled by default with NuGet 2.7+. MSBuild-integrated restore and command-line restore is **not** enabled by default for NuGet 2.6 and earlier and must be enabled manually. -Package restore is primarily enabled through **Tools > Options > [NuGet] Package Manager > General** in Visual Studio: +Package restore is primarily enabled through **Tools > Options > NuGet Package Manager** in Visual Studio: ![Controlling package restore behaviors through NuGet Package Manager options](media/Restore-01-AutoRestoreOptions.png) diff --git a/docs/Consume-Packages/Packages-and-Source-Control.md b/docs/Consume-Packages/Packages-and-Source-Control.md index 55092b37f..fa725ae09 100644 --- a/docs/Consume-Packages/Packages-and-Source-Control.md +++ b/docs/Consume-Packages/Packages-and-Source-Control.md @@ -20,8 +20,8 @@ keywords: NuGet source control, NuGet version control, NuGet and git, NuGet and #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index 536df2a4e..56abac99a 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -17,8 +17,8 @@ ms.assetid: 2785879b-97f0-4a85-b3cc-bf4eaa5c39bf description: Details on when it's necessary to reinstall and update packages, as with broken package references in Visual Studio. keywords: NuGet package installation, NuGet package reinstallation, NuGet package restore, updating package, restoring packages, fixing broken references ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan --- diff --git a/docs/Consume-Packages/Team-Foundation-Build.md b/docs/Consume-Packages/Team-Foundation-Build.md index 599b652e9..b8bdbd87a 100644 --- a/docs/Consume-Packages/Team-Foundation-Build.md +++ b/docs/Consume-Packages/Team-Foundation-Build.md @@ -20,8 +20,8 @@ keywords: NuGet package restore, NuGet and TFS, NuGet and VSTS, NuGet build syst #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Create-Packages/Creating-Localized-Packages.md b/docs/Create-Packages/Creating-Localized-Packages.md index 3fa13e220..90af5c1fa 100644 --- a/docs/Create-Packages/Creating-Localized-Packages.md +++ b/docs/Create-Packages/Creating-Localized-Packages.md @@ -20,8 +20,8 @@ keywords: NuGet package localization, NuGet satellite assemblies, creating local #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index fb55ff066..b5edcf918 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -17,8 +17,8 @@ ms.assetid: 456797cb-e3e4-4b88-9b01-8b5153cee802 description: A detailed guide to the process of designing and creating a NuGet package, including key decision points like files and versioning. keywords: NuGet package creation, creating a package, nuspec manifest, NuGet package conventions, NuGet package version ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan --- # Creating NuGet packages diff --git a/docs/Create-Packages/Native-Packages.md b/docs/Create-Packages/Native-Packages.md index d1f2894e3..eb7d224e2 100644 --- a/docs/Create-Packages/Native-Packages.md +++ b/docs/Create-Packages/Native-Packages.md @@ -20,8 +20,8 @@ keywords: NuGet native packages, NuGet C++ packages, native code packages, targe #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Create-Packages/Overview-and-Workflow.md b/docs/Create-Packages/Overview-and-Workflow.md index d3e00c7fb..65ae0d3ec 100644 --- a/docs/Create-Packages/Overview-and-Workflow.md +++ b/docs/Create-Packages/Overview-and-Workflow.md @@ -20,8 +20,8 @@ keywords: NuGet package creation, NuGet creation overview, NuGet creation workfl #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Create-Packages/Prerelease-Packages.md b/docs/Create-Packages/Prerelease-Packages.md index dfb92170c..89044f221 100644 --- a/docs/Create-Packages/Prerelease-Packages.md +++ b/docs/Create-Packages/Prerelease-Packages.md @@ -20,8 +20,8 @@ keywords: versioning, NuGet package versioning, NuGet prerelease versions, NuGet #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index 16d944ca4..9693842cf 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -20,8 +20,8 @@ keywords: NuGet package publishing, publish NuGet package, NuGet package ownersh #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Create-Packages/Source-and-Config-File-Transformations.md b/docs/Create-Packages/Source-and-Config-File-Transformations.md index 5c5827f21..3b3b8eca0 100644 --- a/docs/Create-Packages/Source-and-Config-File-Transformations.md +++ b/docs/Create-Packages/Source-and-Config-File-Transformations.md @@ -20,8 +20,8 @@ keywords: NuGet package installation, NuGet package transformations, modifying c #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan - anangaur #ms.suite: #ms.tgt_pltfrm: diff --git a/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md b/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md index d13725a27..720c04949 100644 --- a/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md +++ b/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md @@ -20,8 +20,8 @@ keywords: NuGet package targeting, .NET Framework versions, NuGet and .NET, targ #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index b0c833b87..324364608 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -20,8 +20,8 @@ keywords: NuGet symbol packages, NuGet package debugging, supporting NuGet debug #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Create-Packages/project-json-Impact.md b/docs/Create-Packages/project-json-Impact.md index 5ce626b3f..96f7f0af3 100644 --- a/docs/Create-Packages/project-json-Impact.md +++ b/docs/Create-Packages/project-json-Impact.md @@ -20,8 +20,8 @@ keywords: NuGet and project.json, project.json impact, package authoring conside #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Create-Packages/project-json-and-UWP.md b/docs/Create-Packages/project-json-and-UWP.md index 27749ef7d..1b6b557c2 100644 --- a/docs/Create-Packages/project-json-and-UWP.md +++ b/docs/Create-Packages/project-json-and-UWP.md @@ -20,8 +20,8 @@ keywords: NuGet dependencies, NuGet and UWP, UWP and project.json, NuGet project #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Guides/Create-Cross-Platform-Packages.md b/docs/Guides/Create-Cross-Platform-Packages.md index 1846773a4..6c6d111e0 100644 --- a/docs/Guides/Create-Cross-Platform-Packages.md +++ b/docs/Guides/Create-Cross-Platform-Packages.md @@ -20,8 +20,8 @@ keywords: create a package, packages for Xamarin, cross-platform packages #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Guides/Create-NET-Standard-Packages-VS2015.md b/docs/Guides/Create-NET-Standard-Packages-VS2015.md index f8ae4108e..c5527ceda 100644 --- a/docs/Guides/Create-NET-Standard-Packages-VS2015.md +++ b/docs/Guides/Create-NET-Standard-Packages-VS2015.md @@ -20,8 +20,8 @@ keywords: create a package, .NET Standard packages, .NET Standard mapping table #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Guides/Create-NET-Standard-Packages-VS2017.md b/docs/Guides/Create-NET-Standard-Packages-VS2017.md index 09d927960..9f9e7cbe3 100644 --- a/docs/Guides/Create-NET-Standard-Packages-VS2017.md +++ b/docs/Guides/Create-NET-Standard-Packages-VS2017.md @@ -20,8 +20,8 @@ keywords: create a package, .NET Standard packages, .NET Core #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Guides/Create-UWP-Controls.md b/docs/Guides/Create-UWP-Controls.md index b4f311523..352dc152e 100644 --- a/docs/Guides/Create-UWP-Controls.md +++ b/docs/Guides/Create-UWP-Controls.md @@ -20,8 +20,8 @@ keywords: NuGet UWP controls, Visual Studio XAML designer, Blend designer, custo #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Guides/Create-UWP-Packages.md b/docs/Guides/Create-UWP-Packages.md index 4cbaa17f5..3a28eff50 100644 --- a/docs/Guides/Create-UWP-Packages.md +++ b/docs/Guides/Create-UWP-Packages.md @@ -20,8 +20,8 @@ keywords: create a package, packages for UWP, Windows Runtime Components #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Guides/Install-NuGet.md b/docs/Guides/Install-NuGet.md index 6a0734c11..22ca03e3e 100644 --- a/docs/Guides/Install-NuGet.md +++ b/docs/Guides/Install-NuGet.md @@ -16,8 +16,8 @@ ms.assetid: 683b8b34-a6f4-4d56-b9cd-2483bfbad1ad description: Guidance on installing the NuGet client tools, the command-line interface (CLI), and the NuGet Package Manager for Visual Studio. keywords: nuget.exe CLI, nuget client tools, NuGet package manager, NuGet package manager console, NuGet for Visual Studio, NuGet beta channel ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan --- diff --git a/docs/Hosting-Packages/Local-Feeds.md b/docs/Hosting-Packages/Local-Feeds.md index d8c7d2b0f..87244c134 100644 --- a/docs/Hosting-Packages/Local-Feeds.md +++ b/docs/Hosting-Packages/Local-Feeds.md @@ -20,8 +20,8 @@ keywords: NuGet feed, NuGet gallery, local package feed #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Hosting-Packages/NuGet-Server.md b/docs/Hosting-Packages/NuGet-Server.md index 2dcb08072..41d7e469e 100644 --- a/docs/Hosting-Packages/NuGet-Server.md +++ b/docs/Hosting-Packages/NuGet-Server.md @@ -20,8 +20,8 @@ keywords: NuGet feed, NuGet gallery, remote package feed, NuGet.Server #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Hosting-Packages/Overview.md b/docs/Hosting-Packages/Overview.md index a622e0620..b1ce1008e 100644 --- a/docs/Hosting-Packages/Overview.md +++ b/docs/Hosting-Packages/Overview.md @@ -20,8 +20,8 @@ keywords: NuGet feed, NuGet gallery, custom package feed, NuGet.Server #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan - anangaur #ms.suite: #ms.tgt_pltfrm: diff --git a/docs/Policies/Deleting-Packages.md b/docs/Policies/Deleting-Packages.md index b91f03d5e..1c78c1e92 100644 --- a/docs/Policies/Deleting-Packages.md +++ b/docs/Policies/Deleting-Packages.md @@ -20,8 +20,8 @@ keywords: NuGet package deletion, NuGet package unlisting, prohibited uses of pa #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Policies/Dispute-Resolution.md b/docs/Policies/Dispute-Resolution.md index a9ed91191..d90f86adf 100644 --- a/docs/Policies/Dispute-Resolution.md +++ b/docs/Policies/Dispute-Resolution.md @@ -20,8 +20,8 @@ keywords: NuGet package disputes, NuGet dispute resolution, dispute resolution p #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Policies/Ecosystem.md b/docs/Policies/Ecosystem.md index 9309af609..69e7f6594 100644 --- a/docs/Policies/Ecosystem.md +++ b/docs/Policies/Ecosystem.md @@ -20,8 +20,8 @@ keywords: NuGet ecosystem, non-Microsoft NuGet projects, NuGet open source, NuGe #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Policies/Governance.md b/docs/Policies/Governance.md index cc77b302c..a051658f2 100644 --- a/docs/Policies/Governance.md +++ b/docs/Policies/Governance.md @@ -20,8 +20,8 @@ keywords: NuGet governance, NuGet benevolent dictator, committer responsibilitie #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index bcd8d76e0..7da1ce7b7 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -20,8 +20,8 @@ keywords: NuGet Q&A, questions and answers, common problems, NuGet versions, pac #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Quickstart/Create-and-Publish-a-Package.md b/docs/Quickstart/Create-and-Publish-a-Package.md index e77654339..b0e1df9a1 100644 --- a/docs/Quickstart/Create-and-Publish-a-Package.md +++ b/docs/Quickstart/Create-and-Publish-a-Package.md @@ -16,8 +16,8 @@ ms.assetid: 91781ed6-da5c-49f0-b973-16dd8ad84229 description: A walkthrough tutorial on creating and publishing a NuGet package using both the nuget.exe command-line interface and Visual Studio. keywords: NuGet package creation, NuGet package publishing, NuGet tutorial ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan --- diff --git a/docs/Quickstart/Restore.md b/docs/Quickstart/Restore.md index 142568960..ccc5a1f26 100644 --- a/docs/Quickstart/Restore.md +++ b/docs/Quickstart/Restore.md @@ -16,8 +16,8 @@ ms.assetid: b70326a0-5bfc-4b7c-881d-7a7d5ebeeed5 description: A brief description of how to restore NuGet packages in a project. keywords: NuGet package restore, restoring packages ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan --- diff --git a/docs/Quickstart/Use-a-Package.md b/docs/Quickstart/Use-a-Package.md index 52b4fb2b7..3e52fba35 100644 --- a/docs/Quickstart/Use-a-Package.md +++ b/docs/Quickstart/Use-a-Package.md @@ -16,8 +16,8 @@ ms.assetid: f31f8259-20a8-4617-880e-5819299372d2 description: A walkthrough tutorial on the process of installing and using a NuGet package in a project. keywords: install NuGet, NuGet package consumption, installing NuGet packages, NuGet package references, using NuGet packages ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan --- diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index 446161b42..9909de414 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -21,8 +21,8 @@ keywords: NuGet errors, NuGet warnings, diagnostics #ms.devlang: ms.reviewer: - anangaur -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Reference/ID-Prefix-Reservation.md b/docs/Reference/ID-Prefix-Reservation.md index 73f406802..141df3230 100644 --- a/docs/Reference/ID-Prefix-Reservation.md +++ b/docs/Reference/ID-Prefix-Reservation.md @@ -4,7 +4,7 @@ title: ID Prefix Reservation Reference | Microsoft Docs author: diverdan92 ms.author: diverdan92 -manager: unniravindranathan +manager: unniravindranathanavindranathan ms.date: 10/9/2017 ms.topic: reference ms.prod: nuget @@ -21,8 +21,8 @@ keywords: NuGet package ID, prefix, reservation #ms.devlang: ms.reviewer: - ananguar -- karann-msft -- unniravindranathan +- karann-msft-msft +- unniravindranathanavindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Reference/Package-Versioning.md b/docs/Reference/Package-Versioning.md index bb4f9785c..fa40f7d83 100644 --- a/docs/Reference/Package-Versioning.md +++ b/docs/Reference/Package-Versioning.md @@ -21,8 +21,8 @@ keywords: versioning, NuGet package dependencies, NuGet dependency versions, NuG #ms.devlang: ms.reviewer: - anandr -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/Index.md b/docs/Release-Notes/Index.md index df0e66666..36b59d60f 100644 --- a/docs/Release-Notes/Index.md +++ b/docs/Release-Notes/Index.md @@ -20,8 +20,8 @@ keywords: NuGet release notes, NuGet known issues #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/Known-Issues.md b/docs/Release-Notes/Known-Issues.md index bf753d2d6..b613a5e91 100644 --- a/docs/Release-Notes/Known-Issues.md +++ b/docs/Release-Notes/Known-Issues.md @@ -2,8 +2,8 @@ # required metadata title: NuGet Known Issues | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet known issues, NuGet problems #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-1.1.md b/docs/Release-Notes/NuGet-1.1.md index 5e1c615db..3f1211872 100644 --- a/docs/Release-Notes/NuGet-1.1.md +++ b/docs/Release-Notes/NuGet-1.1.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 1.0 and 1.1 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 1.1 release notes, bug fixes, known issues, added features, DCRs #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-1.2.md b/docs/Release-Notes/NuGet-1.2.md index 4f80bf067..dd541929f 100644 --- a/docs/Release-Notes/NuGet-1.2.md +++ b/docs/Release-Notes/NuGet-1.2.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 1.2 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 1.2 release notes, bug fixes, known issues, added features, DCRs #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-1.3.md b/docs/Release-Notes/NuGet-1.3.md index 2df880fd4..085c5e2e2 100644 --- a/docs/Release-Notes/NuGet-1.3.md +++ b/docs/Release-Notes/NuGet-1.3.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 1.3 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 1.3 release notes, bug fixes, known issues, added features, DCRs #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-1.4.md b/docs/Release-Notes/NuGet-1.4.md index f941da2fe..7d3e9acc4 100644 --- a/docs/Release-Notes/NuGet-1.4.md +++ b/docs/Release-Notes/NuGet-1.4.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 1.4 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 1.4 release notes, bug fixes, known issues, added features, DCRs #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-1.5.md b/docs/Release-Notes/NuGet-1.5.md index 432308248..f5d48d33d 100644 --- a/docs/Release-Notes/NuGet-1.5.md +++ b/docs/Release-Notes/NuGet-1.5.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 1.5 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 1.5 release notes, bug fixes, known issues, added features, DCRs #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-1.6.md b/docs/Release-Notes/NuGet-1.6.md index 843a355d5..827ab331f 100644 --- a/docs/Release-Notes/NuGet-1.6.md +++ b/docs/Release-Notes/NuGet-1.6.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 1.6 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 1.6 release notes, bug fixes, known issues, added features, DCRs #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-1.7.md b/docs/Release-Notes/NuGet-1.7.md index 7152bc3f9..61f7d0ee7 100644 --- a/docs/Release-Notes/NuGet-1.7.md +++ b/docs/Release-Notes/NuGet-1.7.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 1.7 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 1.7 release notes, bug fixes, known issues, added features, DCRs #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-1.8.md b/docs/Release-Notes/NuGet-1.8.md index f957e1802..bf381bd1c 100644 --- a/docs/Release-Notes/NuGet-1.8.md +++ b/docs/Release-Notes/NuGet-1.8.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 1.8 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 1.8 release notes, bug fixes, known issues, added features, DCRs #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-2.0.md b/docs/Release-Notes/NuGet-2.0.md index 404ab8626..4edc55957 100644 --- a/docs/Release-Notes/NuGet-2.0.md +++ b/docs/Release-Notes/NuGet-2.0.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 2.0 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 2.0 release notes, bug fixes, known issues, added features, DCRs #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-2.1.md b/docs/Release-Notes/NuGet-2.1.md index 02986b77a..9b2756fce 100644 --- a/docs/Release-Notes/NuGet-2.1.md +++ b/docs/Release-Notes/NuGet-2.1.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 2.1 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 2.1 release notes, bug fixes, known issues, added features, DCRs #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-2.12-RC.md b/docs/Release-Notes/NuGet-2.12-RC.md index a112ee542..d9d4a5698 100644 --- a/docs/Release-Notes/NuGet-2.12-RC.md +++ b/docs/Release-Notes/NuGet-2.12-RC.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 2.12-RC Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 2.12 RC release notes, bug fixes, known issues, added features, #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-2.12.md b/docs/Release-Notes/NuGet-2.12.md index 10494bf88..c2bdb206c 100644 --- a/docs/Release-Notes/NuGet-2.12.md +++ b/docs/Release-Notes/NuGet-2.12.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 2.12 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 2.12 release notes, bug fixes, known issues, added features, DCR #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-2.2.1.md b/docs/Release-Notes/NuGet-2.2.1.md index 33ae1e009..73cf8f827 100644 --- a/docs/Release-Notes/NuGet-2.2.1.md +++ b/docs/Release-Notes/NuGet-2.2.1.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 2.2.1 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 2.2.1 release notes, bug fixes, known issues, added features, DC #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-2.2.md b/docs/Release-Notes/NuGet-2.2.md index 40578ea21..234ef9366 100644 --- a/docs/Release-Notes/NuGet-2.2.md +++ b/docs/Release-Notes/NuGet-2.2.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 2.2 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 2.2 release notes, bug fixes, known issues, added features, DCRs #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-2.5.md b/docs/Release-Notes/NuGet-2.5.md index c5fdfdbea..27e6306ab 100644 --- a/docs/Release-Notes/NuGet-2.5.md +++ b/docs/Release-Notes/NuGet-2.5.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 2.5 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 2.5 release notes, bug fixes, known issues, added features, DCRs #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: 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 fac6f66ca..b2a01b892 100644 --- a/docs/Release-Notes/NuGet-2.6.1-for-WebMatrix.md +++ b/docs/Release-Notes/NuGet-2.6.1-for-WebMatrix.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 2.6.1 for WebMatrix Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 2.6.1 for WebMatrix release notes, bug fixes, known issues, adde #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-2.6.md b/docs/Release-Notes/NuGet-2.6.md index 737470c7e..f5087a858 100644 --- a/docs/Release-Notes/NuGet-2.6.md +++ b/docs/Release-Notes/NuGet-2.6.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 2.6 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 2.6 release notes, bug fixes, known issues, added features, DCRs #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-2.7.1.md b/docs/Release-Notes/NuGet-2.7.1.md index 3b4cf5d82..45f2a0cf8 100644 --- a/docs/Release-Notes/NuGet-2.7.1.md +++ b/docs/Release-Notes/NuGet-2.7.1.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 2.7.1 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 2.7.1 release notes, bug fixes, known issues, added features, DC #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-2.7.2.md b/docs/Release-Notes/NuGet-2.7.2.md index e796dd5e6..15eaed985 100644 --- a/docs/Release-Notes/NuGet-2.7.2.md +++ b/docs/Release-Notes/NuGet-2.7.2.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 2.7.2 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 2.7.2 release notes, bug fixes, known issues, added features, DC #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-2.7.md b/docs/Release-Notes/NuGet-2.7.md index cc5c1a683..3051e153f 100644 --- a/docs/Release-Notes/NuGet-2.7.md +++ b/docs/Release-Notes/NuGet-2.7.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 2.7 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 2.7 release notes, bug fixes, known issues, added features, DCRs #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-2.8.1.md b/docs/Release-Notes/NuGet-2.8.1.md index 2ab3f1e41..06c9491d8 100644 --- a/docs/Release-Notes/NuGet-2.8.1.md +++ b/docs/Release-Notes/NuGet-2.8.1.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 2.8.1 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 2.8.1 release notes, bug fixes, known issues, added features, DC #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-2.8.2.md b/docs/Release-Notes/NuGet-2.8.2.md index cafd946ca..60973a347 100644 --- a/docs/Release-Notes/NuGet-2.8.2.md +++ b/docs/Release-Notes/NuGet-2.8.2.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 2.8.2 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 2.8.2 release notes, bug fixes, known issues, added features, DC #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-2.8.3.md b/docs/Release-Notes/NuGet-2.8.3.md index dfc553b74..1384b33c8 100644 --- a/docs/Release-Notes/NuGet-2.8.3.md +++ b/docs/Release-Notes/NuGet-2.8.3.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 2.8.3 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 2.8.3 release notes, bug fixes, known issues, added features, DC #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-2.8.5.md b/docs/Release-Notes/NuGet-2.8.5.md index 3d4f7151c..ce984da89 100644 --- a/docs/Release-Notes/NuGet-2.8.5.md +++ b/docs/Release-Notes/NuGet-2.8.5.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 2.8.5 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 2.8.5 release notes, bug fixes, known issues, added features, DC #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-2.8.6.md b/docs/Release-Notes/NuGet-2.8.6.md index 872331115..6501e6533 100644 --- a/docs/Release-Notes/NuGet-2.8.6.md +++ b/docs/Release-Notes/NuGet-2.8.6.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 2.8.6 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 2.8.6 release notes, bug fixes, known issues, added features, DC #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-2.8.7.md b/docs/Release-Notes/NuGet-2.8.7.md index 52fdc6754..6807aa3db 100644 --- a/docs/Release-Notes/NuGet-2.8.7.md +++ b/docs/Release-Notes/NuGet-2.8.7.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 2.8.7 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 2.8.7 release notes, bug fixes, known issues, added features, DC #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-2.8.md b/docs/Release-Notes/NuGet-2.8.md index 3c5ca96af..06a23fe00 100644 --- a/docs/Release-Notes/NuGet-2.8.md +++ b/docs/Release-Notes/NuGet-2.8.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 2.8 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 2.8 release notes, bug fixes, known issues, added features, DCRs #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-2.9-RC.md b/docs/Release-Notes/NuGet-2.9-RC.md index 7b8ab61ef..ffdc8e5d1 100644 --- a/docs/Release-Notes/NuGet-2.9-RC.md +++ b/docs/Release-Notes/NuGet-2.9-RC.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 2.9-RC Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 2.9 RC release notes, bug fixes, known issues, added features, D #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.0-Beta.md b/docs/Release-Notes/NuGet-3.0-Beta.md index bececbf2c..b1f8020e7 100644 --- a/docs/Release-Notes/NuGet-3.0-Beta.md +++ b/docs/Release-Notes/NuGet-3.0-Beta.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 3.0 Beta Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.0 Beta release notes, bug fixes, known issues, added features, #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.0-Preview.md b/docs/Release-Notes/NuGet-3.0-Preview.md index 1d1836b10..38441e0d6 100644 --- a/docs/Release-Notes/NuGet-3.0-Preview.md +++ b/docs/Release-Notes/NuGet-3.0-Preview.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 3.0 Preview Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.0 Preview release notes, bug fixes, known issues, added featur #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.0-RC.md b/docs/Release-Notes/NuGet-3.0-RC.md index 091456a5e..240e4b2d2 100644 --- a/docs/Release-Notes/NuGet-3.0-RC.md +++ b/docs/Release-Notes/NuGet-3.0-RC.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 3.0 RC Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.0 RC release notes, bug fixes, known issues, added features, D #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.0-RC2.md b/docs/Release-Notes/NuGet-3.0-RC2.md index 0b26c6e04..b9a5bb666 100644 --- a/docs/Release-Notes/NuGet-3.0-RC2.md +++ b/docs/Release-Notes/NuGet-3.0-RC2.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 3.0 RC2 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.0 RC2 release notes, bug fixes, known issues, added features, #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.0.0.md b/docs/Release-Notes/NuGet-3.0.0.md index f1ce5116d..4c4ab3134 100644 --- a/docs/Release-Notes/NuGet-3.0.0.md +++ b/docs/Release-Notes/NuGet-3.0.0.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 3.0 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.0.0 release notes, bug fixes, known issues, added features, DC #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.1.1.md b/docs/Release-Notes/NuGet-3.1.1.md index b775d131e..f4dae1ac1 100644 --- a/docs/Release-Notes/NuGet-3.1.1.md +++ b/docs/Release-Notes/NuGet-3.1.1.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 3.1.1 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.1.1 release notes, bug fixes, known issues, added features, DC #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.1.md b/docs/Release-Notes/NuGet-3.1.md index 470f3de71..190482482 100644 --- a/docs/Release-Notes/NuGet-3.1.md +++ b/docs/Release-Notes/NuGet-3.1.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 3.1 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.1 release notes, bug fixes, known issues, added features, DCRs #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.2-RC.md b/docs/Release-Notes/NuGet-3.2-RC.md index a23b98c05..be40f6dc7 100644 --- a/docs/Release-Notes/NuGet-3.2-RC.md +++ b/docs/Release-Notes/NuGet-3.2-RC.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 3.2 RC Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.2 RC release notes, bug fixes, known issues, added features, D #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.2.1.md b/docs/Release-Notes/NuGet-3.2.1.md index 12c753ae1..9880f970c 100644 --- a/docs/Release-Notes/NuGet-3.2.1.md +++ b/docs/Release-Notes/NuGet-3.2.1.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 3.2.1 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.2.1 release notes, bug fixes, known issues, added features, DC #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.2.md b/docs/Release-Notes/NuGet-3.2.md index 24797868b..af205f2be 100644 --- a/docs/Release-Notes/NuGet-3.2.md +++ b/docs/Release-Notes/NuGet-3.2.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 3.2 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.2 release notes, bug fixes, known issues, added features, DCRs #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.3.md b/docs/Release-Notes/NuGet-3.3.md index 9bc70e1a8..25408f97a 100644 --- a/docs/Release-Notes/NuGet-3.3.md +++ b/docs/Release-Notes/NuGet-3.3.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 3.3 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.3 release notes, bug fixes, known issues, added features, DCRs #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.4-RC.md b/docs/Release-Notes/NuGet-3.4-RC.md index 7ec4b6dbf..a3641aef2 100644 --- a/docs/Release-Notes/NuGet-3.4-RC.md +++ b/docs/Release-Notes/NuGet-3.4-RC.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 3.4-RC Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.4 RC release notes, bug fixes, known issues, added features, D #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.4.1.md b/docs/Release-Notes/NuGet-3.4.1.md index f408c3673..79eb47957 100644 --- a/docs/Release-Notes/NuGet-3.4.1.md +++ b/docs/Release-Notes/NuGet-3.4.1.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 3.4.1 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.4.1 release notes, bug fixes, known issues, added features, DC #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.4.2.md b/docs/Release-Notes/NuGet-3.4.2.md index e8955c53c..15c5551e0 100644 --- a/docs/Release-Notes/NuGet-3.4.2.md +++ b/docs/Release-Notes/NuGet-3.4.2.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 3.4.2 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.4.2 release notes, bug fixes, known issues, added features, DC #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.4.3.md b/docs/Release-Notes/NuGet-3.4.3.md index 123ce0ca3..b5f2de9f4 100644 --- a/docs/Release-Notes/NuGet-3.4.3.md +++ b/docs/Release-Notes/NuGet-3.4.3.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 3.4.3 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.4.3 release notes, bug fixes, known issues, added features, DC #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.4.4.md b/docs/Release-Notes/NuGet-3.4.4.md index f362660c1..647754064 100644 --- a/docs/Release-Notes/NuGet-3.4.4.md +++ b/docs/Release-Notes/NuGet-3.4.4.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 3.4.4 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.4.4 release notes, bug fixes, known issues, added features, DC #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.4.md b/docs/Release-Notes/NuGet-3.4.md index a7ff2c545..89f1040b8 100644 --- a/docs/Release-Notes/NuGet-3.4.md +++ b/docs/Release-Notes/NuGet-3.4.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 3.4 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.4 release notes, bug fixes, known issues, added features, DCRs #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.5-Beta.md b/docs/Release-Notes/NuGet-3.5-Beta.md index a325128f9..c0aea7047 100644 --- a/docs/Release-Notes/NuGet-3.5-Beta.md +++ b/docs/Release-Notes/NuGet-3.5-Beta.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 3.5 Beta Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.5 Beta release notes, bug fixes, known issues, added features, #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.5-Beta2.md b/docs/Release-Notes/NuGet-3.5-Beta2.md index bf2354016..e864d26d6 100644 --- a/docs/Release-Notes/NuGet-3.5-Beta2.md +++ b/docs/Release-Notes/NuGet-3.5-Beta2.md @@ -2,8 +2,8 @@ # required metadata title: 3.5 Beta2 Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.5 Beta 2 release notes, bug fixes, known issues, added feature #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.5-RC.md b/docs/Release-Notes/NuGet-3.5-RC.md index 9ee9ac081..9aa72bb71 100644 --- a/docs/Release-Notes/NuGet-3.5-RC.md +++ b/docs/Release-Notes/NuGet-3.5-RC.md @@ -2,8 +2,8 @@ # required metadata title: 3.5 RC Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.5 RC release notes, bug fixes, known issues, added features, D #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-3.5-RTM.md b/docs/Release-Notes/NuGet-3.5-RTM.md index 856da84b7..b7311f260 100644 --- a/docs/Release-Notes/NuGet-3.5-RTM.md +++ b/docs/Release-Notes/NuGet-3.5-RTM.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 3.5 Beta Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 ms.topic: article @@ -20,8 +20,8 @@ keywords: NuGet 3.5 release notes, bug fixes, known issues, added features, DCRs #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-4.0-RC.md b/docs/Release-Notes/NuGet-4.0-RC.md index a66d2f408..2506f16f8 100644 --- a/docs/Release-Notes/NuGet-4.0-RC.md +++ b/docs/Release-Notes/NuGet-4.0-RC.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 4.0 RC Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann +author: karann-msft-msft +ms.author: karann-msft manager: ghogen ms.date: 11/17/2016 ms.topic: article diff --git a/docs/Release-Notes/NuGet-4.0-RTM.md b/docs/Release-Notes/NuGet-4.0-RTM.md index 9999f0f10..58a3ab01f 100644 --- a/docs/Release-Notes/NuGet-4.0-RTM.md +++ b/docs/Release-Notes/NuGet-4.0-RTM.md @@ -4,7 +4,7 @@ title: NuGet 4.0 RC Release Notes | Microsoft Docs author: anangaur ms.author: anangaur -manager: unnir +manager: unniravindranathan ms.date: 03/03/2017 ms.topic: article ms.prod: nuget @@ -20,8 +20,8 @@ keywords: NuGet 4.0 RTM release notes, bug fixes, known issues, added features, #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Release-Notes/NuGet-4.3-RTM.md b/docs/Release-Notes/NuGet-4.3-RTM.md index ef3c5af10..ff96899fa 100644 --- a/docs/Release-Notes/NuGet-4.3-RTM.md +++ b/docs/Release-Notes/NuGet-4.3-RTM.md @@ -2,9 +2,9 @@ # required metadata title: NuGet 4.3 RTM Release Notes | Microsoft Docs -author: karann -ms.author: karann -manager: unnir +author: karann-msft +ms.author: karann-msft +manager: unniravindranathan ms.date: 08/14/2017 ms.topic: article ms.prod: nuget @@ -20,8 +20,8 @@ keywords: NuGet 4.3 RTM release notes, bug fixes, known issues, added features, #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan - anangaur #ms.suite: #ms.tgt_pltfrm: diff --git a/docs/Release-Notes/NuGet-4.4-RTM.md b/docs/Release-Notes/NuGet-4.4-RTM.md index 9f1bd76f8..a04dabac6 100644 --- a/docs/Release-Notes/NuGet-4.4-RTM.md +++ b/docs/Release-Notes/NuGet-4.4-RTM.md @@ -2,9 +2,9 @@ # required metadata title: NuGet 4.4 RTM Release Notes | Microsoft Docs -author: karann-msft -ms.author: karann-msft -manager: unnir +author: karann-msft-msft +ms.author: karann-msft-msft +manager: unniravindranathan ms.date: 08/14/2017 ms.topic: article ms.prod: nuget @@ -20,8 +20,8 @@ keywords: NuGet 4.3 RTM release notes, bug fixes, known issues, added features, #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan - anangaur #ms.suite: #ms.tgt_pltfrm: diff --git a/docs/Schema/Analyzers-Conventions.md b/docs/Schema/Analyzers-Conventions.md index f675a1f1a..9dc7d4a65 100644 --- a/docs/Schema/Analyzers-Conventions.md +++ b/docs/Schema/Analyzers-Conventions.md @@ -20,8 +20,8 @@ keywords: NuGet analyzer conventions, .NET analyzers, NuGet and .NET Compiler Pl #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Schema/Target-Frameworks.md b/docs/Schema/Target-Frameworks.md index 4dc479a63..4fecd29f7 100644 --- a/docs/Schema/Target-Frameworks.md +++ b/docs/Schema/Target-Frameworks.md @@ -21,8 +21,8 @@ keywords: NuGet package targeting, .NET framework targets, .NET framework versio #ms.devlang: ms.reviewer: - anangaur -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Schema/msbuild-targets.md b/docs/Schema/msbuild-targets.md index b7964acc6..7149c4068 100644 --- a/docs/Schema/msbuild-targets.md +++ b/docs/Schema/msbuild-targets.md @@ -20,7 +20,7 @@ keywords: NuGet and MSBuild, NuGet pack target, NuGet restore target #audience: #ms.devlang: ms.reviewer: -- karann +- karann-msft #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Schema/nuget-config-file.md b/docs/Schema/nuget-config-file.md index 194694d1d..82426a004 100644 --- a/docs/Schema/nuget-config-file.md +++ b/docs/Schema/nuget-config-file.md @@ -20,8 +20,8 @@ keywords: NuGet.Config file, NuGet configuration reference, NuGet configuration #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index 77345bdba..ff7d037d9 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -21,8 +21,8 @@ keywords: nuspec reference, NuGet package metadata, NuGet package manifest, nusp #ms.devlang: ms.reviewer: - anangaur -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Schema/packages-config.md b/docs/Schema/packages-config.md index 1e752aca5..0ab6f92f4 100644 --- a/docs/Schema/packages-config.md +++ b/docs/Schema/packages-config.md @@ -20,8 +20,8 @@ keywords: NuGet packages.config file, NuGet package references, NuGet dependenci #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Schema/project-json.md b/docs/Schema/project-json.md index 781dec6cf..a3998579a 100644 --- a/docs/Schema/project-json.md +++ b/docs/Schema/project-json.md @@ -20,8 +20,8 @@ keywords: NuGet project.json, NuGet package references, NuGet dependencies, proj #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index 033553d11..411bfac3d 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -16,8 +16,8 @@ ms.assetid: 2b92b119-6861-406c-82af-9d739af230e4 description: Instructions for using the NuGet Package Manager Console in Visual Studio for working with packages. keywords: NuGet package manager console, NuGet powershell, managing NuGet packages ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan --- diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index 487e8f79b..8a0b335f0 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -24,8 +24,8 @@ keywords: NuGet UI, NuGet package manager UI, NuGet in Visual Studio, managing N #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Tools/PowerShell-Reference.md b/docs/Tools/PowerShell-Reference.md index 023c09db5..df30898dd 100644 --- a/docs/Tools/PowerShell-Reference.md +++ b/docs/Tools/PowerShell-Reference.md @@ -16,8 +16,8 @@ ms.assetid: cd08b869-44c6-480e-90f7-494a6d08e6d0 description: The complete reference to PowerShell commands available in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan --- diff --git a/docs/Tools/dotnet-Commands.md b/docs/Tools/dotnet-Commands.md index 38cac15e6..8e5a32d96 100644 --- a/docs/Tools/dotnet-Commands.md +++ b/docs/Tools/dotnet-Commands.md @@ -20,8 +20,8 @@ keywords: dotnet NuGet commands, dotnet pack, dotnet restore, dotnet nuget local #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index d4d3c0816..1479a727b 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -16,8 +16,8 @@ ms.assetid: d777c424-0cf3-4bc0-8abd-7ca16c22192b description: The complete command-line reference for nuget.exe and information on the use of environment variables. keywords: nuget.exe reference, nuget.exe command-line interface, nuget.exe CLI, NuGet command. ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan --- diff --git a/docs/Tools/ps-ref-add-bindingredirect.md b/docs/Tools/ps-ref-add-bindingredirect.md index 7a1f3c69b..996c16b69 100644 --- a/docs/Tools/ps-ref-add-bindingredirect.md +++ b/docs/Tools/ps-ref-add-bindingredirect.md @@ -20,8 +20,8 @@ keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powers #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Tools/ps-ref-find-package.md b/docs/Tools/ps-ref-find-package.md index 18ed13019..9c60212b7 100644 --- a/docs/Tools/ps-ref-find-package.md +++ b/docs/Tools/ps-ref-find-package.md @@ -20,8 +20,8 @@ keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powers #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Tools/ps-ref-get-package.md b/docs/Tools/ps-ref-get-package.md index 9a4107840..92f0b9ac4 100644 --- a/docs/Tools/ps-ref-get-package.md +++ b/docs/Tools/ps-ref-get-package.md @@ -20,8 +20,8 @@ keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powers #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Tools/ps-ref-get-project.md b/docs/Tools/ps-ref-get-project.md index bfcff1ff5..5adb27e59 100644 --- a/docs/Tools/ps-ref-get-project.md +++ b/docs/Tools/ps-ref-get-project.md @@ -20,8 +20,8 @@ keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powers #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Tools/ps-ref-install-package.md b/docs/Tools/ps-ref-install-package.md index 28a4480e5..bd4db340c 100644 --- a/docs/Tools/ps-ref-install-package.md +++ b/docs/Tools/ps-ref-install-package.md @@ -20,8 +20,8 @@ keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powers #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Tools/ps-ref-open-packagepage.md b/docs/Tools/ps-ref-open-packagepage.md index 0d2299ce3..3c73fdc2c 100644 --- a/docs/Tools/ps-ref-open-packagepage.md +++ b/docs/Tools/ps-ref-open-packagepage.md @@ -20,8 +20,8 @@ keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powers #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Tools/ps-ref-register-tabexpansion.md b/docs/Tools/ps-ref-register-tabexpansion.md index b2316e73c..fe665044c 100644 --- a/docs/Tools/ps-ref-register-tabexpansion.md +++ b/docs/Tools/ps-ref-register-tabexpansion.md @@ -20,8 +20,8 @@ keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powers #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Tools/ps-ref-sync-package.md b/docs/Tools/ps-ref-sync-package.md index fb9f38e20..08609f00c 100644 --- a/docs/Tools/ps-ref-sync-package.md +++ b/docs/Tools/ps-ref-sync-package.md @@ -20,8 +20,8 @@ keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powers #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Tools/ps-ref-uninstall-package.md b/docs/Tools/ps-ref-uninstall-package.md index 6c24d0f45..8c6257697 100644 --- a/docs/Tools/ps-ref-uninstall-package.md +++ b/docs/Tools/ps-ref-uninstall-package.md @@ -20,8 +20,8 @@ keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powers #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Tools/ps-ref-update-package.md b/docs/Tools/ps-ref-update-package.md index 09ee6c65f..0a9e033f1 100644 --- a/docs/Tools/ps-ref-update-package.md +++ b/docs/Tools/ps-ref-update-package.md @@ -20,8 +20,8 @@ keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powers #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: 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 5970c5b68..d1b530536 100644 --- a/docs/Visual-Studio-Extensibility/NuGet-API-in-Visual-Studio.md +++ b/docs/Visual-Studio-Extensibility/NuGet-API-in-Visual-Studio.md @@ -20,8 +20,8 @@ keywords: NuGet API, NuGet in Visual Studio, NuGet programming interfaces #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Visual-Studio-Extensibility/Project-System-Support.md b/docs/Visual-Studio-Extensibility/Project-System-Support.md index 4c5b1c28d..6e29122d4 100644 --- a/docs/Visual-Studio-Extensibility/Project-System-Support.md +++ b/docs/Visual-Studio-Extensibility/Project-System-Support.md @@ -20,8 +20,8 @@ keywords: NuGet in Visual Studio, custom project types, Visual Studio projects #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/Visual-Studio-Extensibility/Visual-Studio-Templates.md b/docs/Visual-Studio-Extensibility/Visual-Studio-Templates.md index 98bdbb24a..459bb8b73 100644 --- a/docs/Visual-Studio-Extensibility/Visual-Studio-Templates.md +++ b/docs/Visual-Studio-Extensibility/Visual-Studio-Templates.md @@ -20,8 +20,8 @@ keywords: NuGet in Visual Studio, Visual Studio project templates, Visual Studio #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index ffee3bf8e..983eb347e 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -20,8 +20,8 @@ keywords: NuGet package manager, consumption, package creation, package hosting #audience: #ms.devlang: ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan #ms.suite: #ms.tgt_pltfrm: #ms.custom: diff --git a/docs/index.md b/docs/index.md index ba426549d..b87d5775a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -24,7 +24,7 @@ ms.technology: null #ms.suite: ms.assetid: 49f63ee9-86a9-41de-baba-e3d66f3d5966 ms.reviewer: -- karann +- karann-msft ---

        From 4c66fbc00f6ef6932c05d15141d4bc4ed5fa217c Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 24 Oct 2017 10:10:15 -0700 Subject: [PATCH 0306/2943] Correcting ID --- docs/Reference/ID-Prefix-Reservation.md | 2 +- docs/Release-Notes/Known-Issues.md | 2 +- docs/Release-Notes/NuGet-1.1.md | 2 +- docs/Release-Notes/NuGet-1.2.md | 2 +- docs/Release-Notes/NuGet-1.3.md | 2 +- docs/Release-Notes/NuGet-1.4.md | 2 +- docs/Release-Notes/NuGet-1.5.md | 2 +- docs/Release-Notes/NuGet-1.6.md | 2 +- docs/Release-Notes/NuGet-1.7.md | 2 +- docs/Release-Notes/NuGet-1.8.md | 2 +- docs/Release-Notes/NuGet-2.0.md | 2 +- docs/Release-Notes/NuGet-2.1.md | 2 +- docs/Release-Notes/NuGet-2.12-RC.md | 2 +- docs/Release-Notes/NuGet-2.12.md | 2 +- docs/Release-Notes/NuGet-2.2.1.md | 2 +- docs/Release-Notes/NuGet-2.2.md | 2 +- docs/Release-Notes/NuGet-2.5.md | 2 +- docs/Release-Notes/NuGet-2.6.1-for-WebMatrix.md | 2 +- docs/Release-Notes/NuGet-2.6.md | 2 +- docs/Release-Notes/NuGet-2.7.1.md | 2 +- docs/Release-Notes/NuGet-2.7.2.md | 2 +- docs/Release-Notes/NuGet-2.7.md | 2 +- docs/Release-Notes/NuGet-2.8.1.md | 2 +- docs/Release-Notes/NuGet-2.8.2.md | 2 +- docs/Release-Notes/NuGet-2.8.3.md | 2 +- docs/Release-Notes/NuGet-2.8.5.md | 2 +- docs/Release-Notes/NuGet-2.8.6.md | 2 +- docs/Release-Notes/NuGet-2.8.7.md | 2 +- docs/Release-Notes/NuGet-2.8.md | 2 +- docs/Release-Notes/NuGet-2.9-RC.md | 2 +- docs/Release-Notes/NuGet-3.0-Beta.md | 2 +- docs/Release-Notes/NuGet-3.0-Preview.md | 2 +- docs/Release-Notes/NuGet-3.0-RC.md | 2 +- docs/Release-Notes/NuGet-3.0-RC2.md | 2 +- docs/Release-Notes/NuGet-3.0.0.md | 2 +- docs/Release-Notes/NuGet-3.1.1.md | 2 +- docs/Release-Notes/NuGet-3.1.md | 2 +- docs/Release-Notes/NuGet-3.2-RC.md | 2 +- docs/Release-Notes/NuGet-3.2.1.md | 2 +- docs/Release-Notes/NuGet-3.2.md | 2 +- docs/Release-Notes/NuGet-3.3.md | 2 +- docs/Release-Notes/NuGet-3.4-RC.md | 2 +- docs/Release-Notes/NuGet-3.4.1.md | 2 +- docs/Release-Notes/NuGet-3.4.2.md | 2 +- docs/Release-Notes/NuGet-3.4.3.md | 2 +- docs/Release-Notes/NuGet-3.4.4.md | 2 +- docs/Release-Notes/NuGet-3.4.md | 2 +- docs/Release-Notes/NuGet-3.5-Beta.md | 2 +- docs/Release-Notes/NuGet-3.5-Beta2.md | 2 +- docs/Release-Notes/NuGet-3.5-RC.md | 2 +- docs/Release-Notes/NuGet-3.5-RTM.md | 2 +- docs/Release-Notes/NuGet-4.0-RC.md | 2 +- docs/Release-Notes/NuGet-4.4-RTM.md | 4 ++-- 53 files changed, 54 insertions(+), 54 deletions(-) diff --git a/docs/Reference/ID-Prefix-Reservation.md b/docs/Reference/ID-Prefix-Reservation.md index 141df3230..178ac2c9f 100644 --- a/docs/Reference/ID-Prefix-Reservation.md +++ b/docs/Reference/ID-Prefix-Reservation.md @@ -21,7 +21,7 @@ keywords: NuGet package ID, prefix, reservation #ms.devlang: ms.reviewer: - ananguar -- karann-msft-msft +- karann-msft - unniravindranathanavindranathan #ms.suite: #ms.tgt_pltfrm: diff --git a/docs/Release-Notes/Known-Issues.md b/docs/Release-Notes/Known-Issues.md index b613a5e91..3cf26bb91 100644 --- a/docs/Release-Notes/Known-Issues.md +++ b/docs/Release-Notes/Known-Issues.md @@ -2,7 +2,7 @@ # required metadata title: NuGet Known Issues | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-1.1.md b/docs/Release-Notes/NuGet-1.1.md index 3f1211872..b0941ea00 100644 --- a/docs/Release-Notes/NuGet-1.1.md +++ b/docs/Release-Notes/NuGet-1.1.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 1.0 and 1.1 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-1.2.md b/docs/Release-Notes/NuGet-1.2.md index dd541929f..b22641925 100644 --- a/docs/Release-Notes/NuGet-1.2.md +++ b/docs/Release-Notes/NuGet-1.2.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 1.2 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-1.3.md b/docs/Release-Notes/NuGet-1.3.md index 085c5e2e2..eb730f4ad 100644 --- a/docs/Release-Notes/NuGet-1.3.md +++ b/docs/Release-Notes/NuGet-1.3.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 1.3 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-1.4.md b/docs/Release-Notes/NuGet-1.4.md index 7d3e9acc4..ce1f4ff10 100644 --- a/docs/Release-Notes/NuGet-1.4.md +++ b/docs/Release-Notes/NuGet-1.4.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 1.4 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-1.5.md b/docs/Release-Notes/NuGet-1.5.md index f5d48d33d..c0a55aac7 100644 --- a/docs/Release-Notes/NuGet-1.5.md +++ b/docs/Release-Notes/NuGet-1.5.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 1.5 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-1.6.md b/docs/Release-Notes/NuGet-1.6.md index 827ab331f..3cc57ba2b 100644 --- a/docs/Release-Notes/NuGet-1.6.md +++ b/docs/Release-Notes/NuGet-1.6.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 1.6 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-1.7.md b/docs/Release-Notes/NuGet-1.7.md index 61f7d0ee7..d1da00441 100644 --- a/docs/Release-Notes/NuGet-1.7.md +++ b/docs/Release-Notes/NuGet-1.7.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 1.7 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-1.8.md b/docs/Release-Notes/NuGet-1.8.md index bf381bd1c..ae19e0730 100644 --- a/docs/Release-Notes/NuGet-1.8.md +++ b/docs/Release-Notes/NuGet-1.8.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 1.8 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-2.0.md b/docs/Release-Notes/NuGet-2.0.md index 4edc55957..f9ad8ce2a 100644 --- a/docs/Release-Notes/NuGet-2.0.md +++ b/docs/Release-Notes/NuGet-2.0.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 2.0 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-2.1.md b/docs/Release-Notes/NuGet-2.1.md index 9b2756fce..d1bfcd980 100644 --- a/docs/Release-Notes/NuGet-2.1.md +++ b/docs/Release-Notes/NuGet-2.1.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 2.1 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-2.12-RC.md b/docs/Release-Notes/NuGet-2.12-RC.md index d9d4a5698..6b81c5ec4 100644 --- a/docs/Release-Notes/NuGet-2.12-RC.md +++ b/docs/Release-Notes/NuGet-2.12-RC.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 2.12-RC Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-2.12.md b/docs/Release-Notes/NuGet-2.12.md index c2bdb206c..283ba8860 100644 --- a/docs/Release-Notes/NuGet-2.12.md +++ b/docs/Release-Notes/NuGet-2.12.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 2.12 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-2.2.1.md b/docs/Release-Notes/NuGet-2.2.1.md index 73cf8f827..dc719652a 100644 --- a/docs/Release-Notes/NuGet-2.2.1.md +++ b/docs/Release-Notes/NuGet-2.2.1.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 2.2.1 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-2.2.md b/docs/Release-Notes/NuGet-2.2.md index 234ef9366..3af84a278 100644 --- a/docs/Release-Notes/NuGet-2.2.md +++ b/docs/Release-Notes/NuGet-2.2.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 2.2 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-2.5.md b/docs/Release-Notes/NuGet-2.5.md index 27e6306ab..ddb613318 100644 --- a/docs/Release-Notes/NuGet-2.5.md +++ b/docs/Release-Notes/NuGet-2.5.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 2.5 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 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 b2a01b892..a184c7e37 100644 --- a/docs/Release-Notes/NuGet-2.6.1-for-WebMatrix.md +++ b/docs/Release-Notes/NuGet-2.6.1-for-WebMatrix.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 2.6.1 for WebMatrix Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-2.6.md b/docs/Release-Notes/NuGet-2.6.md index f5087a858..21eb4af57 100644 --- a/docs/Release-Notes/NuGet-2.6.md +++ b/docs/Release-Notes/NuGet-2.6.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 2.6 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-2.7.1.md b/docs/Release-Notes/NuGet-2.7.1.md index 45f2a0cf8..4fff6e1b7 100644 --- a/docs/Release-Notes/NuGet-2.7.1.md +++ b/docs/Release-Notes/NuGet-2.7.1.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 2.7.1 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-2.7.2.md b/docs/Release-Notes/NuGet-2.7.2.md index 15eaed985..14f8c03de 100644 --- a/docs/Release-Notes/NuGet-2.7.2.md +++ b/docs/Release-Notes/NuGet-2.7.2.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 2.7.2 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-2.7.md b/docs/Release-Notes/NuGet-2.7.md index 3051e153f..e1301e720 100644 --- a/docs/Release-Notes/NuGet-2.7.md +++ b/docs/Release-Notes/NuGet-2.7.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 2.7 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-2.8.1.md b/docs/Release-Notes/NuGet-2.8.1.md index 06c9491d8..d8441102c 100644 --- a/docs/Release-Notes/NuGet-2.8.1.md +++ b/docs/Release-Notes/NuGet-2.8.1.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 2.8.1 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-2.8.2.md b/docs/Release-Notes/NuGet-2.8.2.md index 60973a347..2ee0b0cbc 100644 --- a/docs/Release-Notes/NuGet-2.8.2.md +++ b/docs/Release-Notes/NuGet-2.8.2.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 2.8.2 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-2.8.3.md b/docs/Release-Notes/NuGet-2.8.3.md index 1384b33c8..81ec97df2 100644 --- a/docs/Release-Notes/NuGet-2.8.3.md +++ b/docs/Release-Notes/NuGet-2.8.3.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 2.8.3 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-2.8.5.md b/docs/Release-Notes/NuGet-2.8.5.md index ce984da89..7bcecde98 100644 --- a/docs/Release-Notes/NuGet-2.8.5.md +++ b/docs/Release-Notes/NuGet-2.8.5.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 2.8.5 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-2.8.6.md b/docs/Release-Notes/NuGet-2.8.6.md index 6501e6533..adcbc759d 100644 --- a/docs/Release-Notes/NuGet-2.8.6.md +++ b/docs/Release-Notes/NuGet-2.8.6.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 2.8.6 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-2.8.7.md b/docs/Release-Notes/NuGet-2.8.7.md index 6807aa3db..04b15225f 100644 --- a/docs/Release-Notes/NuGet-2.8.7.md +++ b/docs/Release-Notes/NuGet-2.8.7.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 2.8.7 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-2.8.md b/docs/Release-Notes/NuGet-2.8.md index 06a23fe00..1fc874aeb 100644 --- a/docs/Release-Notes/NuGet-2.8.md +++ b/docs/Release-Notes/NuGet-2.8.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 2.8 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-2.9-RC.md b/docs/Release-Notes/NuGet-2.9-RC.md index ffdc8e5d1..cec0114c3 100644 --- a/docs/Release-Notes/NuGet-2.9-RC.md +++ b/docs/Release-Notes/NuGet-2.9-RC.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 2.9-RC Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.0-Beta.md b/docs/Release-Notes/NuGet-3.0-Beta.md index b1f8020e7..37cdc1407 100644 --- a/docs/Release-Notes/NuGet-3.0-Beta.md +++ b/docs/Release-Notes/NuGet-3.0-Beta.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 3.0 Beta Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.0-Preview.md b/docs/Release-Notes/NuGet-3.0-Preview.md index 38441e0d6..f4ec31a39 100644 --- a/docs/Release-Notes/NuGet-3.0-Preview.md +++ b/docs/Release-Notes/NuGet-3.0-Preview.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 3.0 Preview Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.0-RC.md b/docs/Release-Notes/NuGet-3.0-RC.md index 240e4b2d2..f57d912ee 100644 --- a/docs/Release-Notes/NuGet-3.0-RC.md +++ b/docs/Release-Notes/NuGet-3.0-RC.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 3.0 RC Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.0-RC2.md b/docs/Release-Notes/NuGet-3.0-RC2.md index b9a5bb666..fe8461dab 100644 --- a/docs/Release-Notes/NuGet-3.0-RC2.md +++ b/docs/Release-Notes/NuGet-3.0-RC2.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 3.0 RC2 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.0.0.md b/docs/Release-Notes/NuGet-3.0.0.md index 4c4ab3134..ea0f32c5b 100644 --- a/docs/Release-Notes/NuGet-3.0.0.md +++ b/docs/Release-Notes/NuGet-3.0.0.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 3.0 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.1.1.md b/docs/Release-Notes/NuGet-3.1.1.md index f4dae1ac1..39b0d9879 100644 --- a/docs/Release-Notes/NuGet-3.1.1.md +++ b/docs/Release-Notes/NuGet-3.1.1.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 3.1.1 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.1.md b/docs/Release-Notes/NuGet-3.1.md index 190482482..17e878eb2 100644 --- a/docs/Release-Notes/NuGet-3.1.md +++ b/docs/Release-Notes/NuGet-3.1.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 3.1 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.2-RC.md b/docs/Release-Notes/NuGet-3.2-RC.md index be40f6dc7..db9e6d012 100644 --- a/docs/Release-Notes/NuGet-3.2-RC.md +++ b/docs/Release-Notes/NuGet-3.2-RC.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 3.2 RC Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.2.1.md b/docs/Release-Notes/NuGet-3.2.1.md index 9880f970c..9baa58a49 100644 --- a/docs/Release-Notes/NuGet-3.2.1.md +++ b/docs/Release-Notes/NuGet-3.2.1.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 3.2.1 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.2.md b/docs/Release-Notes/NuGet-3.2.md index af205f2be..6bf32056d 100644 --- a/docs/Release-Notes/NuGet-3.2.md +++ b/docs/Release-Notes/NuGet-3.2.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 3.2 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.3.md b/docs/Release-Notes/NuGet-3.3.md index 25408f97a..901a8cda1 100644 --- a/docs/Release-Notes/NuGet-3.3.md +++ b/docs/Release-Notes/NuGet-3.3.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 3.3 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.4-RC.md b/docs/Release-Notes/NuGet-3.4-RC.md index a3641aef2..de85223aa 100644 --- a/docs/Release-Notes/NuGet-3.4-RC.md +++ b/docs/Release-Notes/NuGet-3.4-RC.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 3.4-RC Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.4.1.md b/docs/Release-Notes/NuGet-3.4.1.md index 79eb47957..dba7e0978 100644 --- a/docs/Release-Notes/NuGet-3.4.1.md +++ b/docs/Release-Notes/NuGet-3.4.1.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 3.4.1 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.4.2.md b/docs/Release-Notes/NuGet-3.4.2.md index 15c5551e0..9ed03cfcd 100644 --- a/docs/Release-Notes/NuGet-3.4.2.md +++ b/docs/Release-Notes/NuGet-3.4.2.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 3.4.2 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.4.3.md b/docs/Release-Notes/NuGet-3.4.3.md index b5f2de9f4..93fbf10bb 100644 --- a/docs/Release-Notes/NuGet-3.4.3.md +++ b/docs/Release-Notes/NuGet-3.4.3.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 3.4.3 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.4.4.md b/docs/Release-Notes/NuGet-3.4.4.md index 647754064..b22570cf4 100644 --- a/docs/Release-Notes/NuGet-3.4.4.md +++ b/docs/Release-Notes/NuGet-3.4.4.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 3.4.4 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.4.md b/docs/Release-Notes/NuGet-3.4.md index 89f1040b8..d309e0cd2 100644 --- a/docs/Release-Notes/NuGet-3.4.md +++ b/docs/Release-Notes/NuGet-3.4.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 3.4 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.5-Beta.md b/docs/Release-Notes/NuGet-3.5-Beta.md index c0aea7047..5b97767c9 100644 --- a/docs/Release-Notes/NuGet-3.5-Beta.md +++ b/docs/Release-Notes/NuGet-3.5-Beta.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 3.5 Beta Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.5-Beta2.md b/docs/Release-Notes/NuGet-3.5-Beta2.md index e864d26d6..317f8ee40 100644 --- a/docs/Release-Notes/NuGet-3.5-Beta2.md +++ b/docs/Release-Notes/NuGet-3.5-Beta2.md @@ -2,7 +2,7 @@ # required metadata title: 3.5 Beta2 Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.5-RC.md b/docs/Release-Notes/NuGet-3.5-RC.md index 9aa72bb71..3bb2724e2 100644 --- a/docs/Release-Notes/NuGet-3.5-RC.md +++ b/docs/Release-Notes/NuGet-3.5-RC.md @@ -2,7 +2,7 @@ # required metadata title: 3.5 RC Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-3.5-RTM.md b/docs/Release-Notes/NuGet-3.5-RTM.md index b7311f260..a0a245165 100644 --- a/docs/Release-Notes/NuGet-3.5-RTM.md +++ b/docs/Release-Notes/NuGet-3.5-RTM.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 3.5 Beta Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/11/2016 diff --git a/docs/Release-Notes/NuGet-4.0-RC.md b/docs/Release-Notes/NuGet-4.0-RC.md index 2506f16f8..f308f2bc2 100644 --- a/docs/Release-Notes/NuGet-4.0-RC.md +++ b/docs/Release-Notes/NuGet-4.0-RC.md @@ -2,7 +2,7 @@ # required metadata title: NuGet 4.0 RC Release Notes | Microsoft Docs -author: karann-msft-msft +author: karann-msft ms.author: karann-msft manager: ghogen ms.date: 11/17/2016 diff --git a/docs/Release-Notes/NuGet-4.4-RTM.md b/docs/Release-Notes/NuGet-4.4-RTM.md index a04dabac6..d7b9f595f 100644 --- a/docs/Release-Notes/NuGet-4.4-RTM.md +++ b/docs/Release-Notes/NuGet-4.4-RTM.md @@ -2,8 +2,8 @@ # required metadata title: NuGet 4.4 RTM Release Notes | Microsoft Docs -author: karann-msft-msft -ms.author: karann-msft-msft +author: karann-msft +ms.author: karann-msft manager: unniravindranathan ms.date: 08/14/2017 ms.topic: article From 8c1f3618fcfeb5d120aa3276e28b85841dd51169 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 24 Oct 2017 11:00:19 -0700 Subject: [PATCH 0307/2943] Update Restore.md --- docs/Quickstart/Restore.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Quickstart/Restore.md b/docs/Quickstart/Restore.md index 7d2f249c6..2995d0180 100644 --- a/docs/Quickstart/Restore.md +++ b/docs/Quickstart/Restore.md @@ -38,7 +38,7 @@ during build.' You can also give consent by setting the environment variable 'EnableNuGetPackageRestore' to 'true'. Missing packages: {name} ``` -The enable package restore, open **Tools > Options > NuGet Package Manager** and select the options for **Allow NuGet to download missing packages** and **Automatically check for missing packages during build in Visual Studio**: +To enable package restore, open **Tools > Options > NuGet Package Manager** and select the options for **Allow NuGet to download missing packages** and **Automatically check for missing packages during build in Visual Studio**: ![enable NuGet package restore in Tool/Options](../Consume-Packages/media/restore-01-autorestoreoptions.png) From 9a2385c907129d15b9390f13cb5bf7941d1abd09 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 24 Oct 2017 11:03:29 -0700 Subject: [PATCH 0308/2943] Refactoring CLI reference into individual topics (Issue 389) --- .../Configuring-NuGet-Behavior.md | 2 +- .../Managing-the-NuGet-Cache.md | 2 +- .../Consume-Packages/Overview-and-Workflow.md | 2 +- docs/Consume-Packages/Package-Restore.md | 4 +- docs/Create-Packages/Creating-a-Package.md | 2 +- docs/Create-Packages/Publish-a-package.md | 2 +- docs/Create-Packages/Symbol-Packages.md | 2 +- docs/Hosting-Packages/Local-Feeds.md | 6 +- docs/Hosting-Packages/Overview.md | 2 +- docs/Policies/Ecosystem.md | 1 - docs/Release-Notes/Known-Issues.md | 2 +- docs/Release-Notes/NuGet-2.7.md | 2 +- docs/Release-Notes/NuGet-3.3.md | 2 +- docs/Schema/msbuild-targets.md | 2 +- docs/Schema/nuget-config-file.md | 6 +- docs/Schema/nuspec.md | 2 +- docs/TOC.md | 16 + docs/Tools/cli-ref-add.md | 69 ++ docs/Tools/cli-ref-config.md | 65 ++ docs/Tools/cli-ref-delete.md | 59 ++ docs/Tools/cli-ref-environment-variables.md | 45 + docs/Tools/cli-ref-help.md | 65 ++ docs/Tools/cli-ref-init.md | 59 ++ docs/Tools/cli-ref-install.md | 83 ++ docs/Tools/cli-ref-list.md | 60 ++ docs/Tools/cli-ref-locals.md | 59 ++ docs/Tools/cli-ref-mirror.md | 69 ++ docs/Tools/cli-ref-pack.md | 104 +++ docs/Tools/cli-ref-push.md | 81 ++ docs/Tools/cli-ref-restore.md | 114 +++ docs/Tools/cli-ref-setapikey.md | 57 ++ docs/Tools/cli-ref-sources.md | 67 ++ docs/Tools/cli-ref-spec.md | 60 ++ docs/Tools/cli-ref-update.md | 78 ++ docs/Tools/nuget-exe-CLI-Reference.md | 799 +----------------- docs/_breadcrumb/toc.yml | 4 +- docs/includes/package-restore.md | 2 +- 37 files changed, 1254 insertions(+), 802 deletions(-) create mode 100644 docs/Tools/cli-ref-add.md create mode 100644 docs/Tools/cli-ref-config.md create mode 100644 docs/Tools/cli-ref-delete.md create mode 100644 docs/Tools/cli-ref-environment-variables.md create mode 100644 docs/Tools/cli-ref-help.md create mode 100644 docs/Tools/cli-ref-init.md create mode 100644 docs/Tools/cli-ref-install.md create mode 100644 docs/Tools/cli-ref-list.md create mode 100644 docs/Tools/cli-ref-locals.md create mode 100644 docs/Tools/cli-ref-mirror.md create mode 100644 docs/Tools/cli-ref-pack.md create mode 100644 docs/Tools/cli-ref-push.md create mode 100644 docs/Tools/cli-ref-restore.md create mode 100644 docs/Tools/cli-ref-setapikey.md create mode 100644 docs/Tools/cli-ref-sources.md create mode 100644 docs/Tools/cli-ref-spec.md create mode 100644 docs/Tools/cli-ref-update.md diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index 38286e29c..faa8e8e3e 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -60,7 +60,7 @@ The behavior of every NuGet command, whether issued from the command line, the P A configuration file is a simple XML text file containing settings as described in the [NuGet Configuration Settings](../Schema/nuget-config-file.md) topic. -The preferred method for changing the configuration is using the NuGet [config command](../tools/nuget-exe-cli-reference.md#config) to set a key and value. +The preferred method for changing the configuration is using the NuGet [config command](../tools/cli-ref-config.md) to set a key and value. > [!Note] > Keys are always case sensitive. diff --git a/docs/Consume-Packages/Managing-the-NuGet-Cache.md b/docs/Consume-Packages/Managing-the-NuGet-Cache.md index b1d0aaebc..2b5437b07 100644 --- a/docs/Consume-Packages/Managing-the-NuGet-Cache.md +++ b/docs/Consume-Packages/Managing-the-NuGet-Cache.md @@ -32,7 +32,7 @@ ms.reviewer: NuGet manages several local caches to avoid downloading packages that are already on the computer, and to provide offline support. NuGet 2.8+ automatically falls back to the cache when installing or reinstalling packages without a network connection. -Cache locations are available using the [locals command](../tools/nuget-exe-cli-reference.md#locals): +Cache locations are available using the [locals command](../tools/cli-ref-locals.md): ``` nuget locals all -list diff --git a/docs/Consume-Packages/Overview-and-Workflow.md b/docs/Consume-Packages/Overview-and-Workflow.md index dab0ce484..e0026dbc4 100644 --- a/docs/Consume-Packages/Overview-and-Workflow.md +++ b/docs/Consume-Packages/Overview-and-Workflow.md @@ -34,7 +34,7 @@ Between nuget.org and private package galleries that your organization might est ![Flow of going to a package source, finding a package, installing it in a project, then adding a using statement and calls to the package API](media/Overview-01-GeneralFlow.png) -\* _Except with `nuget install` from the command-line, in which case it's necessary to edit the configuration files by hand. See the [install command reference](../tools/nuget-exe-cli-reference.md#install)._ +\* _Except with `nuget install` from the command-line, in which case it's necessary to edit the configuration files by hand. See the [install command reference](../tools/cli-ref-install.md)._ NuGet remembers the identity and version number of each installed package, recording it in either `packages.config`, the project file, or a `project.json` file in your project root, depending on project type and your version of NuGet. With NuGet 4.0+, [storing dependencies in the project file](../consume-packages/package-references-in-project-files.md) is the default (except for UWP projects targeting Windows 10 RS1). In any case, you can look in the appropriate file at any time to see the full list of dependencies for your project. diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/Consume-Packages/Package-Restore.md index 2bd177d99..d22666316 100644 --- a/docs/Consume-Packages/Package-Restore.md +++ b/docs/Consume-Packages/Package-Restore.md @@ -152,9 +152,9 @@ In all cases, use the notation described in [Package versioning](../reference/pa ## Command-line restore -For NuGet 2.6 and earlier, you use the [Install](../tools/nuget-exe-cli-reference.md#install) command and point to the `packages.config` file that lists all the dependencies. +For NuGet 2.6 and earlier, you use the [Install](../tools/cli-ref-install.md) command and point to the `packages.config` file that lists all the dependencies. -For NuGet 2.7 and above, use the [Restore](../tools/nuget-exe-cli-reference.md#restore) command to restore all packages in a solution (whether it uses `packages.config`, `project.json`, or package references in project files). For a given project folder such as `c:\proj\app`, the common variations below each restore the packages: +For NuGet 2.7 and above, use the [Restore](../tools/cli-ref-restore.md) command to restore all packages in a solution (whether it uses `packages.config`, `project.json`, or package references in project files). For a given project folder such as `c:\proj\app`, the common variations below each restore the packages: ``` c:\proj\app\> nuget restore diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index b5edcf918..b3a56c7d6 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -415,7 +415,7 @@ Once `nuget pack` succeeds, you have a `.nupkg` file that you can publish to a s ### Additional options -You can use various command-line switches with `nuget pack` to exclude files, override the version number in the manifest, and change the output folder, among other features. For a complete list, refer to the [pack command reference](../tools/nuget-exe-cli-reference.md#pack). +You can use various command-line switches with `nuget pack` to exclude files, override the version number in the manifest, and change the output folder, among other features. For a complete list, refer to the [pack command reference](../tools/cli-ref-pack.md). The following options are a few that are common with Visual Studio projects: diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index 9693842cf..4ce63d6c8 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -50,7 +50,7 @@ Next, you can either upload the package through the nuget.org web portal, or pus - Command line: > [!Important] - > To push packages to nuget.org you must use [nuget.exe v4.1.0 or above](https://www.nuget.org/downloads), which implements the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). + > To push packages to nuget.org you must use [nuget.exe v4.1.0 or above](https://www.nuget.org/downloads), which implements the required [NuGet protocols](../api/nuget-protocols.md). 1. Click on your user name to navigate to your account settings. 2. Under **API Key**, click **copy to clipboard** to retrieve the access key you'll need in the CLI: diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index 324364608..a467e4e9c 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -112,7 +112,7 @@ A symbol package can be built by conventions, from a folder structure as describ ## Publishing a symbol package > [!Important] -> To push packages to nuget.org you must use [nuget.exe v4.1.0 or above](https://www.nuget.org/downloads), which implements the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). +> To push packages to nuget.org you must use [nuget.exe v4.1.0 or above](https://www.nuget.org/downloads), which implements the required [NuGet protocols](../api/nuget-protocols.md). 1. For convenience, first save your API key with NuGet (see [publish a package](../create-packages/publish-a-package.md), which will apply to both nuget.org and symbolsource.org, because symbolsource.org will check with nuget.org to verify that you are the package owner. diff --git a/docs/Hosting-Packages/Local-Feeds.md b/docs/Hosting-Packages/Local-Feeds.md index 87244c134..1622dbd5f 100644 --- a/docs/Hosting-Packages/Local-Feeds.md +++ b/docs/Hosting-Packages/Local-Feeds.md @@ -31,7 +31,7 @@ ms.reviewer: Local NuGet package feeds are simply folders on your local network (or even just your own computer) in which you place packages. Local feeds can be a simple folder of packages, or a hierarchical folder structure that include version numbers. With NuGet 3.3 and above, using the hierarchical structure gives much better performance. -In all cases, enable the source by adding its pathname, such as `\\myserver\packages`, using the [Package Manager UI](../tools/package-manager-ui.md#package-sources) or the [`nuget sources`](../tools/nuget-exe-cli-reference.md#sources) command. +In all cases, enable the source by adding its pathname, such as `\\myserver\packages`, using the [Package Manager UI](../tools/package-manager-ui.md#package-sources) or the [`nuget sources`](../tools/cli-ref-sources.md) command. ## Initializing and maintaining hierarchical folders @@ -43,13 +43,13 @@ With NuGet 3.3+, you realize much better performance by structuring the feed usi ├─..nupkg └─ -NuGet creates this structure automatically when you use the [`nuget add`](../tools/nuget-exe-cli-reference.md#add) command to copy packages to the feed: +NuGet creates this structure automatically when you use the [`nuget add`](../tools/cli-ref-add.md) command to copy packages to the feed: ``` nuget add new_package.1.0.0.nupkg -source \\myserver\packages ``` -You can also use the [`nuget init`](../tools/nuget-exe-cli-reference.md#init) command to copy multiple packages from a single folder to the feed. For example, the following command copies all packages from `c:\packages` to a hierarchical tree on `\\myserver\packages`: +You can also use the [`nuget init`](../tools/cli-ref-init.md) command to copy multiple packages from a single folder to the feed. For example, the following command copies all packages from `c:\packages` to a hierarchical tree on `\\myserver\packages`: ``` nuget init c:\packages \\myserver\packages diff --git a/docs/Hosting-Packages/Overview.md b/docs/Hosting-Packages/Overview.md index b1ce1008e..5f9087406 100644 --- a/docs/Hosting-Packages/Overview.md +++ b/docs/Hosting-Packages/Overview.md @@ -49,4 +49,4 @@ There are also several other NuGet hosting products that support remote private - [Nexus](http://www.sonatype.org/nexus/) from Sonatype. - [TeamCity](https://www.jetbrains.com/teamcity/) from JetBrains. -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](../tools/package-manager-ui.md#package-sources), or from the command line using [`nuget sources`](../tools/nuget-exe-cli-reference.md#sources). The path to a source can be a local folder pathname, a network name, or a URL. +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](../tools/package-manager-ui.md#package-sources), or from the command line using [`nuget sources`](../tools/cli-ref-sources.md). The path to a source can be a local folder pathname, a network name, or a URL. diff --git a/docs/Policies/Ecosystem.md b/docs/Policies/Ecosystem.md index 69e7f6594..8007c3240 100644 --- a/docs/Policies/Ecosystem.md +++ b/docs/Policies/Ecosystem.md @@ -88,7 +88,6 @@ Using a new tool or technology usually comes with a learning curve. Luckily for That said, authoring packages–and especially good packages–along with embracing NuGet in automated build and deployment processes, requires spending a little more time with the following resources: -- [Official NuGet Documentation site](http://docs.microsoft.com/nuget) - [NuGet Blog](http://blog.nuget.org/) - [NuGet team on Twitter, @nuget](http://twitter.com/nuget) - Books: diff --git a/docs/Release-Notes/Known-Issues.md b/docs/Release-Notes/Known-Issues.md index 3cf26bb91..75740199c 100644 --- a/docs/Release-Notes/Known-Issues.md +++ b/docs/Release-Notes/Known-Issues.md @@ -47,7 +47,7 @@ $Feed = "Your url" **Workaround:** -Store passwords in clear text using the [-StorePasswordInClearText](../tools/nuget-exe-cli-reference.md#sources) option. +Store passwords in clear text using the [-StorePasswordInClearText](../tools/cli-ref-sources.md) option. ## Error installing packages with NuGet 3.4, 3.4.1 diff --git a/docs/Release-Notes/NuGet-2.7.md b/docs/Release-Notes/NuGet-2.7.md index e1301e720..ea3a1dbc2 100644 --- a/docs/Release-Notes/NuGet-2.7.md +++ b/docs/Release-Notes/NuGet-2.7.md @@ -115,7 +115,7 @@ This new Restore command allows you to easily restore all packages for a solutio 1. nuget.exe restore . 1. nuget.exe restore -The Restore command will open the solution file and find all projects within the solution. From there, it will find the `packages.config` files for each of the projects and restore all of the packages found. It also restores solution-level packages found in the `.nuget\packages.config` file. More information about the new Restore command can be found in the [Command-Line Reference](../tools/nuget-exe-cli-reference.md#restore). +The Restore command will open the solution file and find all projects within the solution. From there, it will find the `packages.config` files for each of the projects and restore all of the packages found. It also restores solution-level packages found in the `.nuget\packages.config` file. More information about the new Restore command can be found in the [Command-Line Reference](../tools/cli-ref-restore.md). #### The New Package Restore Workflow diff --git a/docs/Release-Notes/NuGet-3.3.md b/docs/Release-Notes/NuGet-3.3.md index 901a8cda1..cbed7e809 100644 --- a/docs/Release-Notes/NuGet-3.3.md +++ b/docs/Release-Notes/NuGet-3.3.md @@ -61,7 +61,7 @@ Content is now supported in `project.json` managed projects through the new `con ## NuGet Locals Cache Management -The NuGet command-line has been updated to include information about how to manage the local caches on a workstation. More information about the locals command is available in the [NuGet command-line reference](../tools/nuget-exe-cli-reference.md#locals). +The NuGet command-line has been updated to include information about how to manage the local caches on a workstation. More information about the locals command is available in the [NuGet command-line reference](../tools/cli-ref-locals.md). ## Fixed Issues diff --git a/docs/Schema/msbuild-targets.md b/docs/Schema/msbuild-targets.md index 7149c4068..53da70e62 100644 --- a/docs/Schema/msbuild-targets.md +++ b/docs/Schema/msbuild-targets.md @@ -33,7 +33,7 @@ ms.reviewer: NuGet 4.0+ can work directly with the information in a `.csproj` file without requiring a separate `.nuspec` or `project.json` file. All the metadata that was previously stored in those configuration files can be instead stored in the `.csproj` file directly, as described here. -With MSBuild 15.1+, NuGet is also a first-class MSBuild citizen with the `pack` and `restore` targets as described below. These targets allow you to work with NuGet as you would with any other MSBuild task or target. (For NuGet 3.x and earlier, you use the [pack](../tools/nuget-exe-cli-reference.md#pack) and [restore](../tools/nuget-exe-cli-reference.md#pack) commands through the NuGet CLI instead.) +With MSBuild 15.1+, NuGet is also a first-class MSBuild citizen with the `pack` and `restore` targets as described below. These targets allow you to work with NuGet as you would with any other MSBuild task or target. (For NuGet 3.x and earlier, you use the [pack](../tools/cli-ref-pack.md) and [restore](../tools/cli-ref-pack.md) commands through the NuGet CLI instead.) In this topic: diff --git a/docs/Schema/nuget-config-file.md b/docs/Schema/nuget-config-file.md index 82426a004..5be2c57a9 100644 --- a/docs/Schema/nuget-config-file.md +++ b/docs/Schema/nuget-config-file.md @@ -60,7 +60,7 @@ In this topic: ## config section -Contains miscellaneous configuration settings, which can be set using the [`nuget config` command](../tools/nuget-exe-cli-reference.md#config). +Contains miscellaneous configuration settings, which can be set using the [`nuget config` command](../tools/cli-ref-config.md). Note: `dependencyVersion` and `repositoryPath` apply only to projects using `packages.config`. `globalPackagesFolder` applies only to projects using `project.json` and PackageReference formats. @@ -143,7 +143,7 @@ Controls whether the `packages` folder of a solution is included in source contr The `packageSources`, `packageSourceCredentials`, `apikeys`, `activePackageSource`, and `disabledPackageSources` all work together to configure how NuGet works with package repositories during install, restore, and update operations. -The [`nuget sources` command](../tools/nuget-exe-cli-reference.md#sources) is generally used to manage these settings, except for `apikeys` which is managed using the [`nuget setapikey` command](../tools/nuget-exe-cli-reference.md#setapikey). +The [`nuget sources` command](../tools/cli-ref-sources.md) is generally used to manage these settings, except for `apikeys` which is managed using the [`nuget setapikey` command](../tools/cli-ref-setapikey.md). ### packageSources @@ -208,7 +208,7 @@ When using unencrypted passwords: ### apikeys -Stores keys for sources that use API key authentication, as set with the [`nuget setapikey` command](../tools/nuget-exe-cli-reference.md#setapikey). +Stores keys for sources that use API key authentication, as set with the [`nuget setapikey` command](../tools/cli-ref-setapikey.md). | Key | Value | | --- | --- | diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index ff7d037d9..650f75c43 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -122,7 +122,7 @@ The `` node may contain a `` or `` node as sibling ## Replacement tokens -When creating a package, the [`nuget pack` command](../tools/nuget-exe-cli-reference.md#pack) replaces $-delimited tokens in the `.nuspec` file's `` node with values that come from either a project file or the `pack` command's `-properties` switch. +When creating a package, the [`nuget pack` command](../tools/cli-ref-pack.md) replaces $-delimited tokens in the `.nuspec` file's `` node with values that come from either a project file or the `pack` command's `-properties` switch. On the command line, you specify token values with `nuget pack -properties =;=`. For example, you can use a token such as `$owners$` and `$desc$` in the `.nuspec` and provide the values at packing time as follows: diff --git a/docs/TOC.md b/docs/TOC.md index 3cba3adcd..067f12303 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -38,6 +38,22 @@ ## [NuGet.Server](Hosting-Packages/NuGet-Server.md) # Tools ## [nuget.exe CLI Reference](tools/nuget-exe-CLI-Reference.md) +### [add command ](Tools/cli-ref-add.md) +### [config command ](Tools/cli-ref-config.md) +### [delete command ](Tools/cli-ref-delete.md) +### [help or ? command ](Tools/cli-ref-help.md) +### [init command ](Tools/cli-ref-init.md) +### [install command ](Tools/cli-ref-install.md) +### [list command ](Tools/cli-ref-list.md) +### [locals command ](Tools/cli-ref-locals.md) +### [mirror command ](Tools/cli-ref-mirror.md) +### [pack command ](Tools/cli-ref-pack.md) +### [push command ](Tools/cli-ref-push.md) +### [restore command ](Tools/cli-ref-restore.md) +### [setapikey command ](Tools/cli-ref-setapikey.md) +### [sources command ](Tools/cli-ref-sources.md) +### [spec command ](Tools/cli-ref-spec.md) +### [update command ](Tools/cli-ref-update.md) ## [Package Manager UI](Tools/Package-Manager-UI.md) ## [Package Manager Console](Tools/Package-Manager-Console.md) ## [PowerShell Reference](Tools/PowerShell-Reference.md) diff --git a/docs/Tools/cli-ref-add.md b/docs/Tools/cli-ref-add.md new file mode 100644 index 000000000..84e686887 --- /dev/null +++ b/docs/Tools/cli-ref-add.md @@ -0,0 +1,69 @@ +--- +# required metadata + +title: NuGet CLI add command | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 10/24/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: 4f68a016-ad4e-41fc-b869-88910fc5121e + +# optional metadata + +description: Reference for the nuget.exe add command +keywords: nuget add reference, add package command +ms.reviewer: +- karann-msft +- unniravindranathan + +--- + +# add command (NuGet CLI) + +**Applicable roles**: Package publishing +**Supported versions**: 3.3+ + +Adds a specified package to a non-HTTP package source (a folder or UNC path) in a hierarchical layout, wherein folders are created for the package ID and version number. For example: + + \\myserver\packages + └─ + └─ + ├─..nupkg + ├─..nupkg.sha512 + └─.nuspec + +When restoring or updating against the package source, hierarchical layout provides significantly better performance. + +To expand all the files in the package to the destination package source, use the `-Expand` switch. This typically results in additional subfolders appearing in the destination, such as `tools` and `lib`. + +## Usage + +``` +nuget add -Source [options] +``` + +where `` is the pathname to the package to add, and `` specifies the folder-based package source to which the package will be added. HTTP sources are not supported. + +## Options + +| Option | Description | +| --- | --- | +| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used.| +| Expand | Adds all the files in the package to the package source. | +| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| Help | Displays help information for the command. | +| NonInteractive | Suppresses prompts for user input or confirmations. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | + +Also see [Environment variables](cli-ref-environment-variables.md) + +## Examples + +``` +nuget add foo.nupkg -Source c:\bar\ + +nuget add foo.nupkg -Source \\bar\packages\ +``` diff --git a/docs/Tools/cli-ref-config.md b/docs/Tools/cli-ref-config.md new file mode 100644 index 000000000..8e3d243c4 --- /dev/null +++ b/docs/Tools/cli-ref-config.md @@ -0,0 +1,65 @@ +--- +# required metadata + +title: NuGet CLI config command | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 10/24/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: a50295ff-8be9-47d9-a260-822e899334cb + +# optional metadata + +description: Reference for the nuget.exe config command +keywords: nuget config reference, config command +ms.reviewer: +- karann-msft +- unniravindranathan + +--- + +# config command (NuGet CLI) + +**Applicable roles**: All +**Supported versions**: All + +Gets or sets NuGet configuration values. For additional usage, see [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md). For details on allowable key names, refer to the [NuGet config file reference](../Schema/nuget-config-file.md). + +## Usage + +``` +nuget config -Set =[] [= ...] [options] +nuget config -AsPath [options] +``` + +where `` and `` specify a key-value pair to be set in the configuration. You can specify as many pairs as desired. To remove a value, specify the name and the `=` sign but no value. + +In NuGet 3.4+, `` can use [environment variables](cli-ref-environment-variables.md). + +## Options + +| Option | Description | +| --- | --- | +| AsPath | Returns the config value as a path, ignored when `-Set` is used. | +| ConfigFile | *(2.5+)* The NuGet configuration file to modify. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| Help | Displays help information for the command. | +| NonInteractive | Suppresses prompts for user input or confirmations. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | + +Also see [Environment variables](cli-ref-environment-variables.md) + +### Examples + +``` +nuget config -Set repositoryPath=c:\packages -configfile c:\my.config + +nuget config -Set repositoryPath= + +nuget config -Set repositoryPath=%PACKAGE_REPO% -configfile %ProgramData%\NuGet\NuGetDefaults.Config + +nuget config -Set HTTP_PROXY=http://127.0.0.1 -set HTTP_PROXY.USER=domain\user +``` diff --git a/docs/Tools/cli-ref-delete.md b/docs/Tools/cli-ref-delete.md new file mode 100644 index 000000000..054475c23 --- /dev/null +++ b/docs/Tools/cli-ref-delete.md @@ -0,0 +1,59 @@ +--- +# required metadata + +title: NuGet CLI delete command | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 10/24/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: c213a07a-711d-47e0-9ee6-1d582e6cdb69 + +# optional metadata + +description: Reference for the nuget.exe delete command +keywords: nuget delete reference, delete package command +ms.reviewer: +- karann-msft +- unniravindranathan + +--- + +# delete command (NuGet CLI) + +**Applicable roles**: Package publishing +**Supported versions**: All + +Deletes or unlists a package from a package source. For nuget.org, the delete command [unlists the package](../policies/Deleting-Packages.md). + +## Usage + +``` +nuget delete [options] +``` + +where `` and `` identify the exact package to delete or unlist. The exact behavior depends on the source. For local folders, for instance, the package is deleted; for nuget.org the package is unlisted. + +## Options + +| Option | Description | +| --- | --- | +| ApiKey | The API key for the target repository. If not present, the one specified in *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| Help | Displays help information for the command. | +| NonInteractive | Suppresses prompts for user input or confirmations. | +| Source | Specifies the server URL. Supported URLs for nuget.org include `https://www.nuget.org`, `https://www.nuget.org/api/v3`, `https://www.nuget.org/api/v2/package`. For private feeds, substitute the host name, for example, *%hostname%/api/v3*. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | + +Also see [Environment variables](cli-ref-environment-variables.md) + +## Examples + +``` +nuget delete MyPackage 1.0 + +nuget delete MyPackage 1.0 -Source http://package.contoso.com/source -apikey A1B2C3 +``` diff --git a/docs/Tools/cli-ref-environment-variables.md b/docs/Tools/cli-ref-environment-variables.md new file mode 100644 index 000000000..702d5e2b5 --- /dev/null +++ b/docs/Tools/cli-ref-environment-variables.md @@ -0,0 +1,45 @@ +--- +# required metadata + +title: NuGet CLI environment variables | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 10/24/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: 1f5c31ca-fa0a-4798-a906-110f2c73d00b + +# optional metadata + +description: Reference for the nuget.exe environment variables +keywords: nuget environment variables +ms.reviewer: +- karann-msft +- unniravindranathan + +--- + +# NuGet CLI environment variables + +The behavior of the nuget.exe CLI can be configured through a number of environment variables, which affect nuget.exe on computer-wide, user, or process levels. + +In general, options specified directly on the command line or in NuGet configuration files have precedence, but there are a few exceptions such as *FORCE_NUGET_EXE_INTERACTIVE*. If you find that nuget.exe behaves differently between different computers, an environment variable could be the cause. For example, Azure Web Apps Kudu (used during deployment) has *NUGET_XMLDOC_MODE* set to *skip* to speed up package restore performance and save disk space. + +| Variable | Description | Remarks | +| --- | --- | --- | +| http_proxy | Http proxy used for NuGet HTTP operations. | This would be specified as `http://:@proxy.com`. | +| no_proxy | Configures domains to bypass from using proxy. | Specified as domains separated by comma (,). | +| EnableNuGetPackageRestore | Flag for if NuGet should implicitly grant consent if that's required by package on restore. | Specified flag is specified | as *true* or *1*, any other value treated as flag not set. | +| NUGET_EXE_NO_PROMPT | Prevents the exe for prompting for credentials.| Any value except null or empty string will be treated as this flag set/true. | +FORCE_NUGET_EXE_INTERACTIVE | Global environment variable to force interactive mode. | Any value except null or empty string will be treated as this flag set/true. | +| NUGET_PACKAGES | Path to where packages are stored / cached. | Specified as absolute path. | +| NUGET_FALLBACK_PACKAGES | Global fallback packages folders. | Absolute folder paths separated by semicolon (;). | +| NUGET_HTTP_CACHE_PATH | HTTP cache folder. | Specified as absolute path. | +| NUGET_PERSIST_DG | Flag indicating if dg files (data collected from MSBuild) should be persisted. | Specified as *true* or *false* (default), if NUGET_PERSIST_DG_PATH not set will be stored to temporary directory (NuGetScratch folder in current environment temp directory). | +| NUGET_PERSIST_DG_PATH | Path to persist dg files. | Specified as absolute path, this option is only used when *NUGET_PERSIST_DG* is set to true. | +| NUGET_RESTORE_MSBUILD_ARGS | Sets additional MSBuild arguments. | +| NUGET_RESTORE_MSBUILD_| Verbosity |Sets the MSBuild log verbosity. | Default is *quiet* ("/v:q"). Possible values *q[uiet]*, *m[inimal]*, *n[ormal]*, *d[etailed]*, and *diag[nostic]*. | +| NUGET_SHOW_STACK | Determines whether the full exception (including stack trace) should be displayed to the user. | Specified as *true* or *false* (default). | +| 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). | diff --git a/docs/Tools/cli-ref-help.md b/docs/Tools/cli-ref-help.md new file mode 100644 index 000000000..b6c1da8c2 --- /dev/null +++ b/docs/Tools/cli-ref-help.md @@ -0,0 +1,65 @@ +--- +# required metadata + +title: NuGet CLI help command | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 10/24/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: 780d7f52-d6c6-45cd-8a62-218ff8c0b270 + +# optional metadata + +description: Reference for the nuget.exe help command +keywords: nuget help reference, help command +ms.reviewer: +- karann-msft +- unniravindranathan + +--- + +# help or ? command (NuGet CLI) + +**Applicable roles**: All +**Supported versions**: All + +Displays general help information and help information about specific commands. + +## Usage + +``` +nuget help [command] [options] +nuget ? [command] [options] +``` + +where [command] identifies a specific command for which to display help. + +> [!Warning] +> With some commands, be mindful to specify *help* first, as with *nuget help install*, because there is a package named "help" on nuget.org. If you give the command *nuget install help*, you'll not get help on the install command but will instead install the package named help. + +## Options + +| Option | Description | +| --- | --- | +| All | Print detailed help for all available commands; ignored if a specific command is given. | +| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| Help | Displays help information for the help command itself. | +| Markdown | Print detailed help in markdown format when used with `-All`. Ignored otherwise. | +| NonInteractive | Suppresses prompts for user input or confirmations. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | + +Also see [Environment variables](cli-ref-environment-variables.md) + +## Examples + +``` +nuget help +nuget help push +nuget ? +nuget push -? +nuget help -All -Markdown +``` diff --git a/docs/Tools/cli-ref-init.md b/docs/Tools/cli-ref-init.md new file mode 100644 index 000000000..d79924d95 --- /dev/null +++ b/docs/Tools/cli-ref-init.md @@ -0,0 +1,59 @@ +--- +# required metadata + +title: NuGet CLI init command | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 10/24/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: d413e4f3-1b41-4a92-8df8-87d21b542bd3 + +# optional metadata + +description: Reference for the nuget.exe init command +keywords: nuget init reference, init command +ms.reviewer: +- karann-msft +- unniravindranathan + +--- + +# init command (NuGet CLI) + +**Applicable roles**: Package creation +**Supported versions**: 3.3+ + +Copies all the packages from a flat folder to a destination folder using a hierarchical layout as described for the [add command](#add) above. That is, using `init` is equivalent to using the `add` command on each package in the folder. + +As with `add`, the destination must be either a local folder or a UNC path; HTTP package repositories such as nuget.org or private servers are not supported. + +## Usage + +``` +nuget init [options] +``` + +where `` is the folder containing packages and `` is the local folder or UNC pathname to which the packages will be copied. + +## Options + +| Option | Description | +| --- | --- | +| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| Expand | Adds all files in each package that's added to the package source; same as `-Expand` with the `add` command. | +| Help | Displays help information for the command. | +| NonInteractive | Suppresses prompts for user input or confirmations. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | + +Also see [Environment variables](cli-ref-environment-variables.md) + +## Examples + +``` +nuget init c:\foo c:\bar +nuget init \\foo\packages \\bar\packages -Expand +``` diff --git a/docs/Tools/cli-ref-install.md b/docs/Tools/cli-ref-install.md new file mode 100644 index 000000000..1aa70bc38 --- /dev/null +++ b/docs/Tools/cli-ref-install.md @@ -0,0 +1,83 @@ +--- +# required metadata + +title: NuGet CLI install command | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 10/24/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: 59ac622f-837c-4545-bc93-a56330e02d71 + +# optional metadata + +description: Reference for the nuget.exe install command +keywords: nuget install reference, install package command +ms.reviewer: +- karann-msft +- unniravindranathan + +--- + +# install command (NuGet CLI) + +**Applicable roles**: Package consumption +**Supported versions**: All + +Downloads and installs a package into a project using the specified package sources. + +> [!Tip] +> The nuget.exe CLI downloads packages within the context of a project. To download a package directly outside the context of a project, visit the package's page on [nuget.org](https://www.nuget.org) and select the **Download** link. + +If no sources are specified, those listed in the global configuration file, `%APPDATA%\NuGet\NuGet.Config`, will be used. See [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md) for additional details. + +If no specific packages are specified, `install` installs all packages listed in the project's `packages.config` file, making it similar to [`restore`](#restore). In this case, `install` does not work with projects that use `project.json`. + +The `install` command does not modify a project file or `packages.config`; in this way it's similar to `restore` in that it only adds packages to disk but does not change a project's dependencies. + +To add a dependency, either add a project through the Package Manager UI or Console in Visual Studio, or modify `packages.config` and then run either `install` or `restore`. For projects using `project.json`, you can modify that file and then run `restore`. + +## Usage + +``` +nuget install [options] +``` + +where `` names the package to install (using the latest version), or `` identifies the `packages.config` file that lists the packages to install. You can indicate a specific version with the `-Version` option. + + +## Options + +| Option | Description | +| --- | --- | +| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| DisableParallelProcessing | Disables installing multiple packages in parallel. | +| ExcludeVersion | Installs the package to a folder named with only the package name and not the version number. | +| FallbackSource | *(3.2+)* A list of package sources to use as fallbacks in case the package isn't found in the primary or default source. | +| FileConflictAction | *(2.5+)* Specifies the action to take when asked to overwrite or ignore existing files referenced by the project. Values are *overwrite, ignore, none*. | +| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| Help | Displays help information for the command. | +| NoCache | Prevents NuGet from using packages from local machine caches. | +| NonInteractive | Suppresses prompts for user input or confirmations. | +| OutputDirectory | Specifies the folder in which packages are installed. If no folder is specified, the current folder is used. | +| PackageSaveMode | Specifies the types of files to save after package installation: one of `nuspec`, `nupkg`, or `nuspec;nupkg`. | +| PreRelease | Allows prerelease packages to be installed. This flag is not required when restoring packages with `packages.config`. | +| RequireConsent | Verifies that restoring packages is enabled before downloading and installing the packages. For details, see [Package Restore](../consume-packages/package-restore.md). | +| SolutionDirectory | Specifies root folder of the solution for which to restore packages. | +| Source | Specifies a list of package sources to use. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | +| Version | Specifies the version of the package to install. | + +Also see [Environment variables](cli-ref-environment-variables.md) + +## Examples + +``` +nuget install elmah + +nuget install packages.config + +nuget install ninject -OutputDirectory c:\proj +``` diff --git a/docs/Tools/cli-ref-list.md b/docs/Tools/cli-ref-list.md new file mode 100644 index 000000000..ac4b51b0d --- /dev/null +++ b/docs/Tools/cli-ref-list.md @@ -0,0 +1,60 @@ +--- +# required metadata + +title: NuGet CLI list command | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 10/24/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: 728c8452-0457-4bb8-bfdc-de77fe1570bd + +# optional metadata + +description: Reference for the nuget.exe list command +keywords: nuget list reference, list packages command +ms.reviewer: +- karann-msft +- unniravindranathan + +--- + +# list command (NuGet CLI) + +**Applicable roles**: Package consumption, publishing +**Supported versions**: All + +Displays a list of packages from a given source. If no sources are specified, all sources defined in the global configuration file, `%AppData%\NuGet\NuGet.Config`, are used. If `NuGet.Config` specifies no sources, then `list` uses the default feed (nuget.org). + +## Usage + +``` +nuget list [search terms] [options] +``` + +where the optional search terms will filter the displayed list. Search terms are applied to the names of packages, tags, and package descriptions. + +## Options +| Option | Description | +| --- | --- | +| AllVersions | List all versions of a package. By default, only the latest package version is displayed. | +| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| Help | Displays help information for the command. | +| IncludeDelisted | *(3.2+)* Display unlisted packages. | +| NonInteractive | Suppresses prompts for user input or confirmations. | +| PreRelease | Includes prerelease packages in the list. | +| Source | Specifies a list of packages sources to search. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | + +Also see [Environment variables](cli-ref-environment-variables.md) + +## Examples + +``` +nuget list + +nuget list -Verbosity detailed -AllVersions +``` diff --git a/docs/Tools/cli-ref-locals.md b/docs/Tools/cli-ref-locals.md new file mode 100644 index 000000000..7dc32293a --- /dev/null +++ b/docs/Tools/cli-ref-locals.md @@ -0,0 +1,59 @@ +--- +# required metadata + +title: NuGet CLI locals command | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 10/24/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: 7f672c7c-74c9-4296-bc27-4d47882b541c + +# optional metadata + +description: Reference for the nuget.exe locals command +keywords: nuget locals reference, locals command +ms.reviewer: +- karann-msft +- unniravindranathan + +--- + +## locals command (NuGet CLI) + +**Applicable roles**: Package consumption +**Supported versions**: 3.3+ + +Clears or lists local NuGet resources such as the http-request cache, packages cache, and the machine-wide global packages folder. The `locals` command can also be used to display a list of those locations. For more information, see [Managing the NuGet Cache](../consume-packages/managing-the-nuget-cache.md). + +## Usage + +``` +nuget locals [options] +``` + +where `` is one of `all`, `http-cache`, `packages-cache`, `global-packages`, and `temp` *(3.4+)*. + + +## Options + +| Option | Description | +| --- | --- | +| Clear | Clears the specified cache. | +| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| Help | Displays help information for the command. | +| List | Lists the location of the specified cache, or the locations of all caches when used with *all*. | +| NonInteractive | Suppresses prompts for user input or confirmations. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | + +Also see [Environment variables](cli-ref-environment-variables.md) + +## Examples + +``` +nuget locals all -list +nuget locals http-cache -clear +``` diff --git a/docs/Tools/cli-ref-mirror.md b/docs/Tools/cli-ref-mirror.md new file mode 100644 index 000000000..1a9ef8358 --- /dev/null +++ b/docs/Tools/cli-ref-mirror.md @@ -0,0 +1,69 @@ +--- +# required metadata + +title: NuGet CLI mirror command | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 10/24/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: 190d7010-172e-44b8-8a32-94a2a63be4f3 + +# optional metadata + +description: Reference for the nuget.exe mirror command +keywords: nuget mirror reference, mirror command +ms.reviewer: +- karann-msft +- unniravindranathan + +--- + +# mirror command (NuGet CLI) + +**Applicable roles**: Package publishing +**Supported versions**: Deprecated in 3.2+ + +Mirrors a package and its dependencies from the specified source repositories to the target repository. + +> [!NOTE] +> To enable this command for NuGet versions before 3.2, go to [https://nuget.codeplex.com/releases](https://nuget.codeplex.com/releases), select the newest stable release, download `NuGet.ServerExtensions.dll` and `Nuget-Signed.exe` to your local disk and rename `Nuget-Signed.exe` to `nuget.exe`. + +## Usage + +``` +nuget mirror [options] +``` + +where `` is the package to mirror, or `` identifies the `packages.config` file that lists the packages to mirror. + +The `` specifies the source repository, and `` specifies the target repository. + +If your target repository is on `https://machine/repo` that's running [NuGet.Server](../hosting-packages/NuGet-Server.md), the list and push urls will be `https://machine/repo/nuget` and `https://machine/repo/api/v2/package`, respectively. + +## Options + +| Option | Description | +| --- | --- | +| ApiKey | The API key for the target repository. If not present, the one specified in *%AppData%\NuGet\NuGet.Config* is used. | +| Help | Displays help information for the command. | +| NoCache | Prevents NuGet from using packages from local machine caches. | +| Noop | Logs what would be done but does not perform the actions; assumes success for push operations. | +| PreRelease | Includes prerelease packages in the mirroring operation. | +| Source | A list of package sources to mirror. If no sources are specified, the ones defined in *%AppData%\NuGet\NuGet.Config* are used, defaulting to nuget.org if none are specified. | +| Timeout | Specifies the timeout, in seconds, for pushing to a server. The default is 300 seconds (5 minutes). | +| Version | The version of the package to install. If not specified, the latest version is mirrored. | + +Also see [Environment variables](cli-ref-environment-variables.md) + +## Examples + +``` +nuget mirror packages.config https://MyRepo/nuget https://MyRepo/api/v2/package -source https://nuget.org/api/v2 -apikey myApiKey -nocache + +nuget mirror Microsoft.AspNet.Mvc https://MyRepo/nuget https://MyRepo/api/v2/package -version 4.0.20505.0 + +nuget mirror Microsoft.Net.Http https://MyRepo/nuget https://MyRepo/api/v2/package -prerelease +``` diff --git a/docs/Tools/cli-ref-pack.md b/docs/Tools/cli-ref-pack.md new file mode 100644 index 000000000..2db69b6ec --- /dev/null +++ b/docs/Tools/cli-ref-pack.md @@ -0,0 +1,104 @@ +--- +# required metadata + +title: NuGet CLI pack command | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 10/24/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: 55e9e4d2-8039-4e9b-bdd9-c8b3eb0e894b + +# optional metadata + +description: Reference for the nuget.exe pack command +keywords: nuget pack reference, pack command +ms.reviewer: +- karann-msft +- unniravindranathan + +--- + +# pack command (NuGet CLI) + +**Applicable roles**: Package creation +**Supported versions**: 2.7+ + +Creates a NuGet package based on the specified `.nuspec` or project file. + +> [!Important] +> Under Mono, creating a package from a project file is not supported. You also need to adjust non-local paths in the `.nuspec` file to Unix-style paths, as nuget.exe doesn't convert Windows pathnames itself. + +## Usage + +``` +nuget pack [options] +``` + +where `` and `` specify the `.nuspec` or project file, respectively. + +## Options + +| Option | Description | +| --- | --- | +| BasePath | Sets the base path of the files defined in the `.nuspec` file. | +| Build | Specifies that the project should be built before building the package. | +| Exclude | Specifies one or more wildcard patterns to exclude when creating a package. | +| ExcludeEmptyDirectories | Prevents inclusion of empty directories when building the package. | +| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| Help | Displays help information for the command. | +| IncludeReferencedProjects | Indicates that the built package should include referenced projects either as dependencies or as part of the package. If a referenced project has a corresponding `.nuspec` file that has the same name as the project, then that referenced project is added as a dependency. Otherwise, the referenced project is added as part of the package. | +| MinClientVersion | Set the *minClientVersion* attribute for the created package. This value will override the value of the existing *minClientVersion* attribute (if any) in the `.nuspec` file. | +| MSBuildPath | *(4.0+)* Specifies the path of MSBuild to use with the command, taking precedence over `-MSBuildVersion`. | +| MSBuildVersion | *(3.2+)* Specifies the version of MSBuild to be used with this command. Supported values are 4, 12, 14, 15. By default the MSBuild in your path is picked, otherwise it defaults to the highest installed version of MSBuild. | +| NoDefaultExcludes | Prevents default exclusion of NuGet package files and files and folders starting with a dot, such as `.svn` and `.gitignore`. | +| NoPackageAnalysis | Specifies that pack should not run package analysis after building the package. | +| OutputDirectory | Specifies the folder in which the created package is stored. If no folder is specified, the current folder is used. | +| Properties | Specifies a list of token=value pairs, separated by semicolons, where each occurrence of `$token$` in the `.nuspec` file will be replaced with the given value. Values can be strings in quotation marks. | +| Suffix | *(3.4.4+)* Appends a suffix to the internally generated version number, typically used for appending build or other pre-release identifiers. For example, using `-suffix nightly` will create a package with a version number like `1.2.3-nightly`. Suffixes must start with a letter to avoid warnings, errors, and potential incompatibilities with different versions of NuGet and the NuGet Package Manager. | +| Symbols | Specifies that the package contains sources and symbols. When used with a `.nuspec` file, this creates a regular NuGet package file and the corresponding symbols package. | +| Tool | Specifies that the output files of the project should be placed in the `tool` folder. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | +| Version | Overrides the version number from the `.nuspec` file. | + +Also see [Environment variables](cli-ref-environment-variables.md) + +## Excluding development dependencies + +Some NuGet packages are useful as development dependencies, which help you author your own library, but aren't necessarily needed as actual package dependencies. + +The `pack` command will ignore `package` entries in `packages.config` that have the `developmentDependency` attribute set to `true`. These entries will not be include as a dependencies in the created package. + +For example, consider the following `packages.config` file in the source project: + +```xml + + + + + + +``` + +For this project, the package created by `nuget pack` will have a dependency on `jQuery` and `microsoft-web-helpers` but not `netfx-Guard`. + +## Examples + +``` +nuget pack + +nuget pack foo.nuspec + +nuget pack foo.csproj + +nuget pack foo.csproj -Build -Symbols -Properties owners=janedoe,xiaop;version="1.0.5" + +# create a package from project foo.csproj, using MSBuild version 12 to build the project +nuget pack foo.csproj -Build -Symbols -Properties owners=janedoe,xiaop;version="1.0.5" -MSBuildVersion 12 + +nuget pack foo.nuspec -Version 2.1.0 + +nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5 +``` diff --git a/docs/Tools/cli-ref-push.md b/docs/Tools/cli-ref-push.md new file mode 100644 index 000000000..f0fac972e --- /dev/null +++ b/docs/Tools/cli-ref-push.md @@ -0,0 +1,81 @@ +--- +# required metadata + +title: NuGet CLI push command | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 10/24/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: a9709eee-add2-47fb-98e6-eec0697087f6 + +# optional metadata + +description: Reference for the nuget.exe push command +keywords: nuget push reference, push command +ms.reviewer: +- karann-msft +- unniravindranathan + +--- + +# push command (NuGet CLI) + +**Applicable roles**: Package publishing +**Supported versions**: All; publishing to nuget.org requires 4.1.0+ + +> [!Important] +> To push packages to nuget.org you must use nuget.exe v4.1.0+, which implements the required [NuGet protocols](../api/nuget-protocols.md). + +Pushes a package to a package source and publishes it. + +NuGet's default configuration is obtained by loading `%AppData%\NuGet\NuGet.Config`, then loading any `Nuget.Config` or `.nuget\Nuget.Config` files starting from root of drive and ending in current directory (see [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md)) + +## Usage + +``` +nuget push [options] +``` + +where `` identifies the package to push to the server. + +## Options + +| Option | Description | +| --- | --- | +| ApiKey | The API key for the target repository. If not present, the one specified in *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| DisableBuffering | Disables buffering when pushing to an HTTP(s) server to decrease memory usages. Caution: when this option is used, integrated Windows authentication might not work. | +| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| Help | Displays help information for the command. | +| NonInteractive | Suppresses prompts for user input or confirmations. | +| NoSymbols | *(3.5+)* If a symbols package exists, it will not be pushed to a symbol server. | +| Source | Specifies the server URL. With NuGet 2.5+, NuGet will identify a UNC or local folder source and simply copy the file there instead of pushing it using HTTP. Also, starting with NuGet 3.4.2, this is a mandatory parameter unless the `NuGet.Config` file specifies a *DefaultPushSource* value. | +| SymbolSource | *(3.5+)* Specifies the symbol server URL; nuget.smbsrc.net is used when pushing to nuget.org | +| SymbolApiKey | *(3.5+)* Specifies the API key for the URL specified in `-SymbolSource`. | +| Timeout | Specifies the timeout, in seconds, for pushing to a server. The default is 300 seconds (5 minutes). | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | + +Also see [Environment variables](cli-ref-environment-variables.md) + +## Examples + +``` +nuget push foo.nupkg + +nuget push foo.symbols.nupkg + +nuget push foo.nupkg -Timeout 360 + +nuget push *.nupkg + +nuget.exe push -source \\mycompany\repo\ mypackage.1.0.0.nupkg + +nuget push foo.nupkg 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -Source https://www.nuget.org/api/v2/package + +nuget push foo.nupkg 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a + +nuget push foo.nupkg 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -s https://customsource/ +``` diff --git a/docs/Tools/cli-ref-restore.md b/docs/Tools/cli-ref-restore.md new file mode 100644 index 000000000..deb0e9679 --- /dev/null +++ b/docs/Tools/cli-ref-restore.md @@ -0,0 +1,114 @@ +--- +# required metadata + +title: NuGet CLI restore command | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 10/24/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: 6ee41020-e548-4e61-b8cd-c82b77ac6af7 + +# optional metadata + +description: Reference for the nuget.exe restore command +keywords: nuget restore reference, restore packages command +ms.reviewer: +- karann-msft +- unniravindranathan + +--- + +# restore command (NuGet CLI) + +**Applicable roles**: Package consumption +**Supported versions**: 2.7+ + +NuGet 2.7+: Downloads and installs any packages missing from the `packages` folder. + +NuGet 3.3+ with projects using `project.json`: Generates a `project.lock.json` file and a `.nuget.props` file, if needed. (Both files can be omitted from source control.) + +NuGet 4.0+ with project in which package references are included in the project file directly: Generates a `.nuget.props` file, if needed, in the `obj` folder. (The file can be omitted from source control.) + +On Mac OSX and Linux with the CLI on Mono, restoring packages is not supported with the PackageReference format. + +## Usage + +``` +nuget restore [options] +``` + +where `` specifies the location of a solution, a `packages.config` file, or a `project.json` file. See [Remarks](#remarks) below for behavioral details. + +## Options + +| Option | Description | +| --- | --- | +| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| DirectDownload | *(4.0+)* Downloads packages directly without populating caches with any binaries or metadata. | +| DisableParallelProcessing | Disables restoring multiple packages in parallel. | +| FallbackSource | *(3.2+)* A list of package sources to use as fallbacks in case the package isn't found in the primary or default source. | +| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| Help | Displays help information for the command. | +| MSBuildPath | *(4.0+)* Specifies the path of MSBuild to use with the command, taking precedence over `-MSBuildVersion`. | +| MSBuildVersion | *(3.2+)* Specifies the version of MSBuild to be used with this command. Supported values are 4, 12, 14, 15. By default the MSBuild in your path is picked, otherwise it defaults to the highest installed version of MSBuild. | +| NoCache | Prevents NuGet from using packages from local machine caches. | +| NonInteractive | Suppresses prompts for user input or confirmations. | +| OutputDirectory | Specifies the folder in which packages are installed. If no folder is specified, the current folder is used. | +| PackageSaveMode | Specifies the types of files to save after package installation: one of `nuspec`, `nupkg`, or `nuspec;nupkg`. | +| PackagesDirectory | Same as `OutputDirectory`. | +| Project2ProjectTimeOut | Timeout in seconds for resolving project-to-project references. | +| Recursive | *(4.0+)* Restores all references projects for UWP and .NET Core projects. Does not apply to projects using `packages.config`. | +| RequireConsent | Verifies that restoring packages is enabled before downloading and installing the packages. For details, see [Package Restore](../consume-packages/package-restore.md). | +| SolutionDirectory | Specifies the solution folder. Not valid when restoring packages for a solution. | +| Source | Specifies list of package sources (as URLS) to use for the restore. | +| Verbosity |>Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | + +Also see [Environment variables](cli-ref-environment-variables.md) + +## Remarks + +The restore command performs the following steps: + +1. Determine the operation mode of the restore command. + projectPath file type | Behavior + | --- | --- | + Solution (folder) | NuGet looks for a `.sln` file and uses that if found; otherwise gives an error. `(SolutionDir)\.nuget` is used as the starting folder. + `.sln` file | Restore packages identified by the solution; gives an error if `-SolutionDirectory` is used. `$(SolutionDir)\.nuget` is used as the starting folder. + `packages.config`, `project.json`, or project file | Restore packages listed in the file, resolving and installing dependencies. + Other file type | File is assumed to be a `.sln` file as above; if it's not a solution, NuGet gives an error. + (projectPath not specified) | - NuGet looks for solution files in the current folder. If a single file is found, that one is used to restore packages; if multiple solutions are found, NuGet gives an error. + |- If there are no solution files, NuGet looks for a `packages.config` or `project.json` and uses that to restore packages. + |- If no solution file, `packages.config`, or `project.json` is found, NuGet gives an error. + +1. Determine the packages folder using the following priority order (NuGet gives an error if none of these folders are found): + + - The `%userprofile%\.nuget\packages` value in `project.json`. + - The folder specified with `-PackagesDirectory`. + - The `repositoryPath` vale in `Nuget.Config` + - The folder specified with `-SolutionDirectory` + - `$(SolutionDir)\packages` + +1. When restoring packages for a solution, NuGet does the following: + - Loads the solution file. + - Restores solution level packages listed in `$(SolutionDir)\.nuget\packages.config` into the `packages` folder. + - Restore packages listed in `$(ProjectDir)\packages.config` into the `packages` folder. For each package specified, restore the package in parallel unless `-DisableParallelProcessing` is specified. + +## Examples + +``` +# Restore packages for a solution file +nuget restore a.sln + +# Restore packages for a solution file, using MSBuild version 14.0 to load the solution and its project(s) +nuget restore a.sln -MSBuildVersion 14 + +# Restore packages for a project's packages.config file, with the packages folder at the parent +nuget restore proj1\packages.config -PackagesDirectory ..\packages + +# Restore packages for the solution in the current folder, specifying package sources +nuget restore -source "https://www.nuget.org/api/v2;https://www.myget.org/F/nuget" +``` +\ \ No newline at end of file diff --git a/docs/Tools/cli-ref-setapikey.md b/docs/Tools/cli-ref-setapikey.md new file mode 100644 index 000000000..e725d0870 --- /dev/null +++ b/docs/Tools/cli-ref-setapikey.md @@ -0,0 +1,57 @@ +--- +# required metadata + +title: NuGet CLI setapikey command | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 10/24/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: a64c0462-973d-4100-ba3f-8902a2b127f7 + +# optional metadata + +description: Reference for the nuget.exe setapikey command +keywords: nuget setapikey reference, setapikey command +ms.reviewer: +- karann-msft +- unniravindranathan + +--- + +## setapikey command (NuGet CLI) + +**Applicable roles**: Package consumption, publishing +**Supported versions**: All + +Saves an API key for a given server URL into `NuGet.Config` so that it doesn't need to be entered for subsequent commands. + +## Usage + +``` +nuget setapikey -Source [options] +``` + +where `` identifies the server and `` is the key or password to save. If `` is omitted, nuget.org is assumed. + +## Options + +| Option | Description | +| --- | --- | +| ConfigFile | *(2.5+)* The NuGet configuration file to modify. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| Help | Displays help information for the command. | +| NonInteractive | Suppresses prompts for user input or confirmations. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | + +Also see [Environment variables](cli-ref-environment-variables.md) + +## Examples + +``` +nuget setapikey 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a + +nuget setapikey 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -source https://example.com/nugetfeed +``` diff --git a/docs/Tools/cli-ref-sources.md b/docs/Tools/cli-ref-sources.md new file mode 100644 index 000000000..ab32b9946 --- /dev/null +++ b/docs/Tools/cli-ref-sources.md @@ -0,0 +1,67 @@ +--- +# required metadata + +title: NuGet CLI sources command | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 10/24/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: 997ce736-91ba-4cd2-88c9-b4b168e3130a + +# optional metadata + +description: Reference for the nuget.exe sources command +keywords: nuget sources reference, sources command +ms.reviewer: +- karann-msft +- unniravindranathan + +--- + +# sources command (NuGet CLI) + +**Applicable roles**: Package consumption, publishing +**Supported versions**: All + +Manages the list of sources located in `%AppData%\NuGet\NuGet.Config` or the specified configuration file. + +## Usage + +``` +nuget sources -Name -Source +``` + +where `` is one of *List, Add, Remove, Enable, Disable,* or *Update*, `` is the name of the source, and `` is the source's URL. + + +## Options + +| Option | Description | +| --- | --- | +| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| Format | Applies to the `list` action and can be `Detailed` (the default) or `Short`. | +| Help | Displays help information for the command. | +| NonInteractive | Suppresses prompts for user input or confirmations. | +| Password | Specifies the password for authenticating with the source. | +| StorePasswordInClearText | Indicates to store the password in unencrypted text instead of the default behavior of storing an encrypted form. | +| UserName | Specifies the user name for authenticating with the source. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | + +> [!Note] +> Make sure to add the sources' password under the same user context as the nuget.exe is later used to access the package source. The password will be stored encrypted in the config file and can only be decrypted in the same user context as it was encrypted. So for example when you use a build server to restore NuGet packages the password must be encrypted with the same Windows user under which the build server task will run. + +Also see [Environment variables](cli-ref-environment-variables.md) + +## Examples + +``` +nuget sources Add -Name "MyServer" -Source \\myserver\packages + +nuget sources Disable -Name "MyServer" + +nuget source Enable -Source "nuget.org" +``` diff --git a/docs/Tools/cli-ref-spec.md b/docs/Tools/cli-ref-spec.md new file mode 100644 index 000000000..ffd28c126 --- /dev/null +++ b/docs/Tools/cli-ref-spec.md @@ -0,0 +1,60 @@ +--- +# required metadata + +title: NuGet CLI spec command | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 10/24/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: 85611449-87e6-489b-8c6c-fe1d7be76c13 + +# optional metadata + +description: Reference for the nuget.exe spec command +keywords: nuget spec reference, spec command +ms.reviewer: +- karann-msft +- unniravindranathan + +--- + +# spec command (NuGet CLI) + +**Applicable roles**: Package creation +**Supported versions**: All + +Generates a `.nuspec` file for a new package. If run in the same folder as a project file (`.csproj`, `.vbproj`, `.fsproj`), `spec` creates a tokenized `.nuspec` file. For additional information, see [Creating a Package](../create-packages/creating-a-package.md). + +## Usage + +``` +nuget spec [] [options] +``` + +where `` is an optional package identifier to save in the `.nuspec` file. + +## Options + +| Option | Description | +| --- | --- | +| AssemblyPath | Specifies the path to the assembly to use for metadata. | +| Force | Overwrites any existing `.nuspec` file. | +| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| Help | Displays help information for the command. | +| NonInteractive | Suppresses prompts for user input or confirmations. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | + +Also see [Environment variables](cli-ref-environment-variables.md) + +## Examples + +``` +nuget spec + +nuget spec MyPackage + +nuget spec -a MyAssembly.dll +``` diff --git a/docs/Tools/cli-ref-update.md b/docs/Tools/cli-ref-update.md new file mode 100644 index 000000000..746e1ef72 --- /dev/null +++ b/docs/Tools/cli-ref-update.md @@ -0,0 +1,78 @@ +--- +# required metadata + +title: NuGet CLI update command | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 10/24/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: 61fde945-6983-46a5-8636-da0fada4e641 + +# optional metadata + +description: Reference for the nuget.exe update command +keywords: nuget update reference, update package command +ms.reviewer: +- karann-msft +- unniravindranathan + +--- + +# update command (NuGet CLI) + +**Applicable roles**: Package consumption +**Supported versions**: All + +Updates all packages in a project the latest available versions. It is recommended to run ['restore'](#restore) before running the `update`. + +Note: `update` does not work with the CLI running under Mono (Mac OSX or Linux). The command also does not work with projects using `project.json`. + +The `update` command also updates assembly references in the project file, provided those references already exist. If an updated package has an added assembly, a new reference is *not* added. New package dependencies also don't have their assembly references added. To include these operations as part of an update, update the package in Visual Studio using the Package Manager UI or the Package Manager Console. + +This command can also be used to update nuget.exe itself using the *-self* flag. + +## Usage + +``` +nuget update [options] +``` + +where `` identifies either a `packages.config` or solution file that lists the project's dependencies. + +## Options + +| Option | Description | +| --- | --- | +| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| FileConflictAction | *(2.5+)* Specifies the action to take when asked to overwrite or ignore existing files referenced by the project. Values are *overwrite, ignore, none*. | +| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| Help | Displays help information for the command. | +| Id | Specifies a list of package IDs to update. | +| MSBuildPath | *(4.0+)* Specifies the path of MSBuild to use with the command, taking precedence over `-MSBuildVersion`. | +| MSBuildVersion | *(3.2+)* Specifies the version of MSBuild to be used with this command. Supported values are 4, 12, 14, 15. By default the MSBuild in your path is picked, otherwise it defaults to the highest installed version of MSBuild. | +| NonInteractive | Suppresses prompts for user input or confirmations. | +| PreRelease | Allows updating to prerelease versions. This flag is not required when updating prerelease packages that are already installed. | +| RepositoryPath | Specifies the local folder where packages are installed. | +| Safe | Specifies that only updates with the highest version available within the same major and minor version as the installed package will be installed. | +| Self | *(1.4+)* Updates nuget.exe to the latest version; all other arguments are ignored. | +| Source | Specifies a list of package sources to use for the updates. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | +| Version | When used with one package ID, specifies the version of the package to update. | + +Also see [Environment variables](cli-ref-environment-variables.md) + +## Examples + +``` +nuget update + +# update packages installed in solution.sln, using MSBuild version 14.0 to load the solution and its project(s). +nuget update solution.sln -MSBuildVersion 14 + +nuget update -safe + +nuget update -self +``` diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 1479a727b..2733a890f 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -5,7 +5,7 @@ title: NuGet Command-Line Interface (CLI) Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/17/2017 +ms.date: 10/24/2017 ms.topic: reference ms.prod: nuget ms.technology: null @@ -13,8 +13,8 @@ ms.assetid: d777c424-0cf3-4bc0-8abd-7ca16c22192b # optional metadata -description: The complete command-line reference for nuget.exe and information on the use of environment variables. -keywords: nuget.exe reference, nuget.exe command-line interface, nuget.exe CLI, NuGet command. +description: Command-line reference index for the nuget.exe CLI +keywords: nuget.exe reference index, nuget.exe command-line interface, nuget.exe CLI, nuget command ms.reviewer: - karann-msft - unniravindranathan @@ -35,24 +35,24 @@ Available commands and applicability to package creation, package consumption, a | Command | Applicable Roles | NuGet Version | Description | | --- | --- | --- | --- | -| [add](#add) | Publishing | 3.3+ | Adds a package to a non-HTTP package source using hierarchical layout. For HTTP sources, use *push*. | -| [config](#config) | All | All | Gets or sets NuGet configuration values. | -| [delete](#delete) | Publishing | All | Removes or unlists a package from a package source. | -| [help or ?](#help) | All | All | Displays help information or help for a command. | -| [init](#init) | Creation | 3.3+ | Adds packages from a folder to a package source using hierarchical layout. | -| [install](#install) | Consumption | All | Installs a package into the current project but does not modify projects or reference files. | -| [list](#list) | Consumption, perhaps Publishing | All | Displays packages from a given source. | -| [locals](#locals) | Consumption | 3.3+ | Clears or lists packages in various caches or the global packages folder, or identifies those folders. | -| [mirror](#mirror) | Publishing | Deprecated in 3.2+ | Mirrors a package and its dependencies from a source to a target repository. | -| [pack](#pack) | Creation | 2.7+ | Creates a NuGet package from a `.nuspec` or project file. When running on Mono, creating a package from a project file is not supported. | -| [push](#push) | Publishing | All | Publishes a package to a package source. | -| [restore](#restore) | Consumption | 2.7+ | Restores all packages referenced by the package reference format in use. When running on Mono, restoring packages using the PackageReference format is not supported. | -| [setapikey](#setapikey) | Consumption, Publishing | All | Saves an API key for a given package source when that package source requires a key for access. | -| [sources](#sources) | Consumption, Publishing | All | Manages package sources in configuration files. | -| [spec](#spec) | Creation | All | Generates a `.nuspec` file, using tokens if generating the file from a Visual Studio project. | -| [update](#update) | Consumption | All | Updates a project's packages to the latest available versions. Not supported when running on Mono. | - -Different commands make use of various [Environment variables](#environment-variables). +| [add](#cli-ref-add.md) | Publishing | 3.3+ | Adds a package to a non-HTTP package source using hierarchical layout. For HTTP sources, use *push*. | +| [config](#cli-ref-config.md) | All | All | Gets or sets NuGet configuration values. | +| [delete](#cli-ref-delete.md) | Publishing | All | Removes or unlists a package from a package source. | +| [help or ?](#cli-ref-help.md) | All | All | Displays help information or help for a command. | +| [init](#cli-ref-init.md) | Creation | 3.3+ | Adds packages from a folder to a package source using hierarchical layout. | +| [install](#cli-ref-install.md) | Consumption | All | Installs a package into the current project but does not modify projects or reference files. | +| [list](#cli-ref-list.md) | Consumption, perhaps Publishing | All | Displays packages from a given source. | +| [locals](#cli-ref-locals.md) | Consumption | 3.3+ | Clears or lists packages in various caches or the global packages folder, or identifies those folders. | +| [mirror](#cli-ref-mirror.md) | Publishing | Deprecated in 3.2+ | Mirrors a package and its dependencies from a source to a target repository. | +| [pack](#cli-ref-pack.md) | Creation | 2.7+ | Creates a NuGet package from a `.nuspec` or project file. When running on Mono, creating a package from a project file is not supported. | +| [push](#cli-ref-push.md) | Publishing | All | Publishes a package to a package source. | +| [restore](#cli-ref-restore.md) | Consumption | 2.7+ | Restores all packages referenced by the package reference format in use. When running on Mono, restoring packages using the PackageReference format is not supported. | +| [setapikey](#cli-ref-setapikey.md) | Consumption, Publishing | All | Saves an API key for a given package source when that package source requires a key for access. | +| [sources](#cli-ref-sources.md) | Consumption, Publishing | All | Manages package sources in configuration files. | +| [spec](#cli-ref-spec.md) | Creation | All | Generates a `.nuspec` file, using tokens if generating the file from a Visual Studio project. | +| [update](#cli-ref-update.md) | Consumption | All | Updates a project's packages to the latest available versions. Not supported when running on Mono. | + +Different commands make use of various [Environment variables](cli-ref-environment-variables.md). NuGet CLI commands by applicable roles: @@ -66,760 +66,3 @@ Developers concerned only with consuming packages, for example, need only unders > [!Note] > Command option names are case-insensitive. Options that are deprecated are not included in this reference, such as `NoPrompt` (replaced by `NonInteractive`) and `Verbose` (replaced by `Verbosity`). - - -## add - -*Version 3.3+* - -Adds a specified package to a non-HTTP package source (a folder or UNC path) in a hierarchical layout, wherein folders are created for the package ID and version number. For example: - - \\myserver\packages - └─ - └─ - ├─..nupkg - ├─..nupkg.sha512 - └─.nuspec - -When restoring or updating against the package source, hierarchical layout provides significantly better performance. - -To expand all the files in the package to the destination package source, use the `-Expand` switch. This typically results in additional subfolders appearing in the destination, such as `tools` and `lib`. - -### Usage - -``` -nuget add -Source [options] -``` - -where `` is the pathname to the package to add, and `` specifies the folder-based package source to which the package will be added. HTTP sources are not supported. - -### Options - -| Option | Description | -| --- | --- | -| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used.| -| Expand | Adds all the files in the package to the package source. | -| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | -| Help | Displays help information for the command. | -| NonInteractive | Suppresses prompts for user input or confirmations. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | - -### Examples - -``` -nuget add foo.nupkg -Source c:\bar\ - -nuget add foo.nupkg -Source \\bar\packages\ -``` - -## config - -Gets or sets NuGet configuration values. For additional usage, see [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md). For details on allowable key names, refer to the [NuGet config file reference](../Schema/nuget-config-file.md). - -### Usage - -``` -nuget config -Set =[] [= ...] [options] -nuget config -AsPath [options] -``` - -where `` and `` specify a key-value pair to be set in the configuration. You can specify as many pairs as desired. To remove a value, specify the name and the `=` sign but no value. - -In NuGet 3.4+, `` can use environment variables. - - -### Options - -| Option | Description | -| --- | --- | -| AsPath | Returns the config value as a path, ignored when `-Set` is used. | -| ConfigFile | *(2.5+)* The NuGet configuration file to modify. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | -| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | -| Help | Displays help information for the command. | -| NonInteractive | Suppresses prompts for user input or confirmations. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | - - -### Examples - -``` -nuget config -Set repositoryPath=c:\packages -configfile c:\my.config - -nuget config -Set repositoryPath= - -nuget config -Set repositoryPath=%PACKAGE_REPO% -configfile %ProgramData%\NuGet\NuGetDefaults.Config - -nuget config -Set HTTP_PROXY=http://127.0.0.1 -set HTTP_PROXY.USER=domain\user -``` - -## delete - -Deletes or unlists a package from a package source. For nuget.org, the action is to [unlist the package](../policies/Deleting-Packages.md). - -### Usage - -``` -nuget delete [options] -``` - -where `` and `` identify the exact package to delete or unlist. The exact behavior depends on the source. For local folders, for instance, the package is deleted; for nuget.org the package is unlisted. - -### Options - -| Option | Description | -| --- | --- | -| ApiKey | The API key for the target repository. If not present, the one specified in *%AppData%\NuGet\NuGet.Config* is used. | -| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | -| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | -| Help | Displays help information for the command. | -| NonInteractive | Suppresses prompts for user input or confirmations. | -| Source | Specifies the server URL. Supported URLs for nuget.org include `https://www.nuget.org`, `https://www.nuget.org/api/v3`, `https://www.nuget.org/api/v2/package`. For private feeds, substitute the host name, for example, *%hostname%/api/v3*. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | - -### Examples - -``` -nuget delete MyPackage 1.0 - -nuget delete MyPackage 1.0 -Source http://package.contoso.com/source -apikey A1B2C3 -``` - -## help - -Displays general help information and help information about specific commands. - -### Usage - -``` -nuget help [command] [options] -nuget ? [command] [options] -``` - -where [command] identifies a specific command for which to display help. - -> [!Warning] -> With some commands, be mindful to specify *help* first, as with *nuget help install*, because there is a package named "help" on nuget.org. If you give the command *nuget install help*, you'll not get help on the install command but will instead install the package named help. - -### Options - -| Option | Description | -| --- | --- | -| All | Print detailed help for all available commands; ignored if a specific command is given. | -| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | -| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | -| Help | Displays help information for the help command itself. | -| Markdown | Print detailed help in markdown format when used with `-All`. Ignored otherwise. | -| NonInteractive | Suppresses prompts for user input or confirmations. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | - -### Examples - -``` -nuget help -nuget help push -nuget ? -nuget push -? -nuget help -All -Markdown -``` - -## init - -*Version 3.3+* - -Copies all the packages from a flat folder to a destination folder using a hierarchical layout as described for the [add command](#add) above. That is, using `init` is equivalent to using the `add` command on each package in the folder. - -As with `add`, the destination must be either a local folder or a UNC path; HTTP package repositories such as nuget.org or private servers are not supported. - - -### Usage - -``` -nuget init [options] -``` - -where `` is the folder containing packages and `` is the local folder or UNC pathname to which the packages will be copied. - -### Options - -| Option | Description | -| --- | --- | -| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | -| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | -| Expand | Adds all files in each package that's added to the package source; same as `-Expand` with the `add` command. | -| Help | Displays help information for the command. | -| NonInteractive | Suppresses prompts for user input or confirmations. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | - -### Examples - -``` -nuget init c:\foo c:\bar -nuget init \\foo\packages \\bar\packages -Expand -``` - -## install - -Downloads and installs a package into a project using the specified package sources. - -> [!Tip] -> The nuget.exe CLI downloads packages within the context of a project. To download a package directly outside the context of a project, visit the package's page on [nuget.org](https://www.nuget.org) and select the **Download** link. - -If no sources are specified, those listed in the global configuration file, `%APPDATA%\NuGet\NuGet.Config`, will be used. See [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md) for additional details. - -If no specific packages are specified, `install` installs all packages listed in the project's `packages.config` file, making it similar to [`restore`](#restore). In this case, `install` does not work with projects that use `project.json`. - -The `install` command does not modify a project file or `packages.config`; in this way it's similar to `restore` in that it only adds packages to disk but does not change a project's dependencies. - -To add a dependency, either add a project through the Package Manager UI or Console in Visual Studio, or modify `packages.config` and then run either `install` or `restore`. For projects using `project.json`, you can modify that file and then run `restore`. - -### Usage - -``` -nuget install [options] -``` - -where `` names the package to install (using the latest version), or `` identifies the `packages.config` file that lists the packages to install. You can indicate a specific version with the `-Version` option. - - -### Options - -| Option | Description | -| --- | --- | -| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | -| DisableParallelProcessing | Disables installing multiple packages in parallel. | -| ExcludeVersion | Installs the package to a folder named with only the package name and not the version number. | -| FallbackSource | *(3.2+)* A list of package sources to use as fallbacks in case the package isn't found in the primary or default source. | -| FileConflictAction | *(2.5+)* Specifies the action to take when asked to overwrite or ignore existing files referenced by the project. Values are *overwrite, ignore, none*. | -| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | -| Help | Displays help information for the command. | -| NoCache | Prevents NuGet from using packages from local machine caches. | -| NonInteractive | Suppresses prompts for user input or confirmations. | -| OutputDirectory | Specifies the folder in which packages are installed. If no folder is specified, the current folder is used. | -| PackageSaveMode | Specifies the types of files to save after package installation: one of `nuspec`, `nupkg`, or `nuspec;nupkg`. | -| PreRelease | Allows prerelease packages to be installed. This flag is not required when restoring packages with `packages.config`. | -| RequireConsent | Verifies that restoring packages is enabled before downloading and installing the packages. For details, see [Package Restore](../consume-packages/package-restore.md). | -| SolutionDirectory | Specifies root folder of the solution for which to restore packages. | -| Source | Specifies a list of package sources to use. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | -| Version | Specifies the version of the package to install. | - -### Examples - -``` -nuget install elmah - -nuget install packages.config - -nuget install ninject -OutputDirectory c:\proj -``` - -## list - -Displays a list of packages from a given source. If no sources are specified, all sources defined in the global configuration file, `%AppData%\NuGet\NuGet.Config`, are used. If `NuGet.Config` specifies no sources, then `list` uses the default feed (nuget.org). - -### Usage - -``` -nuget list [search terms] [options] -``` - -where the optional search terms will filter the displayed list. Search terms are applied to the names of packages, tags, and package descriptions. - -### Options -| Option | Description | -| --- | --- | -| AllVersions | List all versions of a package. By default, only the latest package version is displayed. | -| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | -| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | -| Help | Displays help information for the command. | -| IncludeDelisted | *(3.2+)* Display unlisted packages. | -| NonInteractive | Suppresses prompts for user input or confirmations. | -| PreRelease | Includes prerelease packages in the list. | -| Source | Specifies a list of packages sources to search. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | - -### Examples - -``` -nuget list - -nuget list -Verbosity detailed -AllVersions -``` - -## locals -*Version 3.3+* - -Clears or lists local NuGet resources such as the http-request cache, packages cache, and the machine-wide global packages folder. The `locals` command can also be used to display a list of those locations. For more information, see [Managing the NuGet Cache](../consume-packages/managing-the-nuget-cache.md). - -### Usage - -``` -nuget locals [options] -``` - -where `` is one of `all`, `http-cache`, `packages-cache`, `global-packages`, and `temp` *(3.4+)*. - - -### Options - -| Option | Description | -| --- | --- | -| Clear | Clears the specified cache. | -| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | -| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | -| Help | Displays help information for the command. | -| List | Lists the location of the specified cache, or the locations of all caches when used with *all*. | -| NonInteractive | Suppresses prompts for user input or confirmations. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | - -### Examples - -``` -nuget locals all -list -nuget locals http-cache -clear -``` - -## mirror - -*Deprecated in 3.2+* - -Mirrors a package and its dependencies from the specified source repositories to the target repository. - -> [!NOTE] -> To enable this command for NuGet versions before 3.2, go to [https://nuget.codeplex.com/releases](https://nuget.codeplex.com/releases), select the newest stable release, download `NuGet.ServerExtensions.dll` and `Nuget-Signed.exe` to your local disk and rename `Nuget-Signed.exe` to `nuget.exe`. - -### Usage - -``` -nuget mirror [options] -``` - -where `` is the package to mirror, or `` identifies the `packages.config` file that lists the packages to mirror. - -The `` specifies the source repository, and `` specifies the target repository. - -If your target repository is on `https://machine/repo` that's running [NuGet.Server](../hosting-packages/NuGet-Server.md), the list and push urls will be `https://machine/repo/nuget` and `https://machine/repo/api/v2/package`, respectively. - -### Options - -| Option | Description | -| --- | --- | -| ApiKey | The API key for the target repository. If not present, the one specified in *%AppData%\NuGet\NuGet.Config* is used. | -| Help | Displays help information for the command. | -| NoCache | Prevents NuGet from using packages from local machine caches. | -| Noop | Logs what would be done but does not perform the actions; assumes success for push operations. | -| PreRelease | Includes prerelease packages in the mirroring operation. | -| Source | A list of package sources to mirror. If no sources are specified, the ones defined in *%AppData%\NuGet\NuGet.Config* are used, defaulting to nuget.org if none are specified. | -| Timeout | Specifies the timeout, in seconds, for pushing to a server. The default is 300 seconds (5 minutes). | -| Version | The version of the package to install. If not specified, the latest version is mirrored. | - -### Examples - -``` -nuget mirror packages.config https://MyRepo/nuget https://MyRepo/api/v2/package -source https://nuget.org/api/v2 -apikey myApiKey -nocache - -nuget mirror Microsoft.AspNet.Mvc https://MyRepo/nuget https://MyRepo/api/v2/package -version 4.0.20505.0 - -nuget mirror Microsoft.Net.Http https://MyRepo/nuget https://MyRepo/api/v2/package -prerelease -``` - -## pack - -*Version 2.7+* - -Creates a NuGet package based on the specified `.nuspec` or project file. - -> [!Important] -> Under Mono, creating a package from a project file is not supported. You also need to adjust non-local paths in the `.nuspec` file to Unix-style paths, as nuget.exe doesn't convert Windows pathnames itself. - -### Usage - -``` -nuget pack [options] -``` - -where `` and `` specify the `.nuspec` or project file, respectively. - -### Options - -| Option | Description | -| --- | --- | -| BasePath | Sets the base path of the files defined in the `.nuspec` file. | -| Build | Specifies that the project should be built before building the package. | -| Exclude | Specifies one or more wildcard patterns to exclude when creating a package. | -| ExcludeEmptyDirectories | Prevents inclusion of empty directories when building the package. | -| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | -| Help | Displays help information for the command. | -| IncludeReferencedProjects | Indicates that the built package should include referenced projects either as dependencies or as part of the package. If a referenced project has a corresponding `.nuspec` file that has the same name as the project, then that referenced project is added as a dependency. Otherwise, the referenced project is added as part of the package. | -| MinClientVersion | Set the *minClientVersion* attribute for the created package. This value will override the value of the existing *minClientVersion* attribute (if any) in the `.nuspec` file. | -| MSBuildPath | *(4.0+)* Specifies the path of MSBuild to use with the command, taking precedence over `-MSBuildVersion`. | -| MSBuildVersion | *(3.2+)* Specifies the version of MSBuild to be used with this command. Supported values are 4, 12, 14, 15. By default the MSBuild in your path is picked, otherwise it defaults to the highest installed version of MSBuild. | -| NoDefaultExcludes | Prevents default exclusion of NuGet package files and files and folders starting with a dot, such as `.svn` and `.gitignore`. | -| NoPackageAnalysis | Specifies that pack should not run package analysis after building the package. | -| OutputDirectory | Specifies the folder in which the created package is stored. If no folder is specified, the current folder is used. | -| Properties | Specifies a list of token=value pairs, separated by semicolons, where each occurrence of `$token$` in the `.nuspec` file will be replaced with the given value. Values can be strings in quotation marks. | -| Suffix | *(3.4.4+)* Appends a suffix to the internally generated version number, typically used for appending build or other pre-release identifiers. For example, using `-suffix nightly` will create a package with a version number like `1.2.3-nightly`. Suffixes must start with a letter to avoid warnings, errors, and potential incompatibilities with different versions of NuGet and the NuGet Package Manager. | -| Symbols | Specifies that the package contains sources and symbols. When used with a `.nuspec` file, this creates a regular NuGet package file and the corresponding symbols package. | -| Tool | Specifies that the output files of the project should be placed in the `tool` folder. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | -| Version | Overrides the version number from the `.nuspec` file. | - -### Excluding development dependencies - -Some NuGet packages are useful as development dependencies, which help you author your own library, but aren't necessarily needed as actual package dependencies. - -The `pack` command will ignore `package` entries in `packages.config` that have the `developmentDependency` attribute set to `true`. These entries will not be include as a dependencies in the created package. - -For example, consider the following `packages.config` file in the source project: - -```xml - - - - - - -``` - -For this project, the package created by `nuget pack` will have a dependency on `jQuery` and `microsoft-web-helpers` but not `netfx-Guard`. - -### Examples - -``` -nuget pack - -nuget pack foo.nuspec - -nuget pack foo.csproj - -nuget pack foo.csproj -Build -Symbols -Properties owners=janedoe,xiaop;version="1.0.5" - -# create a package from project foo.csproj, using MSBuild version 12 to build the project -nuget pack foo.csproj -Build -Symbols -Properties owners=janedoe,xiaop;version="1.0.5" -MSBuildVersion 12 - -nuget pack foo.nuspec -Version 2.1.0 - -nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5 -``` - -## push - -> [!Important] -> To push packages to nuget.org you must use [nuget.exe v4.1.0 or above](https://www.nuget.org/downloads), which implements the required [NuGet protocols](https://docs.microsoft.com/en-us/nuget/api/nuget-protocols). - -Pushes a package to a package source and publishes it. - -NuGet's default configuration is obtained by loading `%AppData%\NuGet\NuGet.Config`, then loading any `Nuget.Config` or `.nuget\Nuget.Config` files starting from root of drive and ending in current directory (see [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md)) - -### Usage - -``` -nuget push [options] -``` - -where `` identifies the package to push to the server. - -### Options - -| Option | Description | -| --- | --- | -| ApiKey | The API key for the target repository. If not present, the one specified in *%AppData%\NuGet\NuGet.Config* is used. | -| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | -| DisableBuffering | Disables buffering when pushing to an HTTP(s) server to decrease memory usages. Caution: when this option is used, integrated Windows authentication might not work. | -| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | -| Help | Displays help information for the command. | -| NonInteractive | Suppresses prompts for user input or confirmations. | -| NoSymbols | *(3.5+)* If a symbols package exists, it will not be pushed to a symbol server. | -| Source | Specifies the server URL. With NuGet 2.5+, NuGet will identify a UNC or local folder source and simply copy the file there instead of pushing it using HTTP. Also, starting with NuGet 3.4.2, this is a mandatory parameter unless the `NuGet.Config` file specifies a *DefaultPushSource* value. | -| SymbolSource | *(3.5+)* Specifies the symbol server URL; nuget.smbsrc.net is used when pushing to nuget.org | -| SymbolApiKey | *(3.5+)* Specifies the API key for the URL specified in `-SymbolSource`. | -| Timeout | Specifies the timeout, in seconds, for pushing to a server. The default is 300 seconds (5 minutes). | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | - -### Examples - -``` -nuget push foo.nupkg - -nuget push foo.symbols.nupkg - -nuget push foo.nupkg -Timeout 360 - -nuget push *.nupkg - -nuget.exe push -source \\mycompany\repo\ mypackage.1.0.0.nupkg - -nuget push foo.nupkg 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -Source https://www.nuget.org/api/v2/package - -nuget push foo.nupkg 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a - -nuget push foo.nupkg 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -s https://customsource/ -``` - - -## restore - -*Version 2.7+* - -NuGet 2.7+: Downloads and installs any packages missing from the `packages` folder. - -NuGet 3.3+ with projects using `project.json`: Generates a `project.lock.json` file and a `.nuget.props` file, if needed. (Both files can be omitted from source control.) - -NuGet 4.0+ with project in which package references are included in the project file directly: Generates a `.nuget.props` file, if needed, in the `obj` folder. (The file can be omitted from source control.) - -On Mac OSX and Linux with the CLI on Mono, restoring packages from package references in a project file is not supported. - -### Usage - -``` -nuget restore [options] -``` - -where `` specifies the location of a solution, a `packages.config` file, or a `project.json` file. See [Remarks](#remarks) below for behavioral details. - -### Options - -| Option | Description | -| --- | --- | -| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | -| DirectDownload | *(4.0+)* Downloads packages directly without populating caches with any binaries or metadata. | -| DisableParallelProcessing | Disables restoring multiple packages in parallel. | -| FallbackSource | *(3.2+)* A list of package sources to use as fallbacks in case the package isn't found in the primary or default source. | -| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | -| Help | Displays help information for the command. | -| MSBuildPath | *(4.0+)* Specifies the path of MSBuild to use with the command, taking precedence over `-MSBuildVersion`. | -| MSBuildVersion | *(3.2+)* Specifies the version of MSBuild to be used with this command. Supported values are 4, 12, 14, 15. By default the MSBuild in your path is picked, otherwise it defaults to the highest installed version of MSBuild. | -| NoCache | Prevents NuGet from using packages from local machine caches. | -| NonInteractive | Suppresses prompts for user input or confirmations. | -| OutputDirectory | Specifies the folder in which packages are installed. If no folder is specified, the current folder is used. | -| PackageSaveMode | Specifies the types of files to save after package installation: one of `nuspec`, `nupkg`, or `nuspec;nupkg`. | -| PackagesDirectory | Same as `OutputDirectory`. | -| Project2ProjectTimeOut | Timeout in seconds for resolving project-to-project references. | -| Recursive | *(4.0+)* Restores all references projects for UWP and .NET Core projects. Does not apply to projects using `packages.config`. | -| RequireConsent | Verifies that restoring packages is enabled before downloading and installing the packages. For details, see [Package Restore](../consume-packages/package-restore.md). | -| SolutionDirectory | Specifies the solution folder. Not valid when restoring packages for a solution. | -| Source | Specifies list of package sources (as URLS) to use for the restore. | -| Verbosity |>Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | - -### Remarks - -The restore command is executed in the following steps: - -1. Determine the operation mode of the restore command. - projectPath file type | Behavior - | --- | --- | - Solution (folder) | NuGet looks for a `.sln` file and uses that if found; otherwise gives an error. `(SolutionDir)\.nuget` is used as the starting folder. - `.sln` file | Restore packages identified by the solution; gives an error if `-SolutionDirectory` is used. `$(SolutionDir)\.nuget` is used as the starting folder. - `packages.config`, `project.json`, or project file | Restore packages listed in the file, resolving and installing dependencies. - Other file type | File is assumed to be a `.sln` file as above; if it's not a solution, NuGet gives an error. - (projectPath not specified) | - NuGet looks for solution files in the current folder. If a single file is found, that one is used to restore packages; if multiple solutions are found, NuGet gives an error. - |- If there are no solution files, NuGet looks for a `packages.config` or `project.json` and uses that to restore packages. - |- If no solution file, `packages.config`, or `project.json` is found, NuGet gives an error. - -1. Determine the packages folder using the following priority order (NuGet gives an error if none of these folders are found): - - - The `%userprofile%\.nuget\packages` value in `project.json`. - - The folder specified with `-PackagesDirectory`. - - The `repositoryPath` vale in `Nuget.Config` - - The folder specified with `-SolutionDirectory` - - `$(SolutionDir)\packages` - - -1. When restoring packages for a solution, NuGet does the following: - - Loads the solution file. - - Restores solution level packages listed in `$(SolutionDir)\.nuget\packages.config` into the `packages` folder. - - Restore packages listed in `$(ProjectDir)\packages.config` into the `packages` folder. For each package specified, restore the package in parallel unless `-DisableParallelProcessing` is specified. - -### Examples - -``` -# Restore packages for a solution file -nuget restore a.sln - -# Restore packages for a solution file, using MSBuild version 14.0 to load the solution and its project(s) -nuget restore a.sln -MSBuildVersion 14 - -# Restore packages for a project's packages.config file, with the packages folder at the parent -nuget restore proj1\packages.config -PackagesDirectory ..\packages - -# Restore packages for the solution in the current folder, specifying package sources -nuget restore -source "https://www.nuget.org/api/v2;https://www.myget.org/F/nuget" -``` - -## setapikey - -Saves an API key for a given server URL into `NuGet.Config` so that it doesn't need to be entered for subsequent commands. - -### Usage - -``` -nuget setapikey -Source [options] -``` - -where `` identifies the server and `` is the key or password to save. If `` is omitted, nuget.org is assumed. - -### Options - -| Option | Description | -| --- | --- | -| ConfigFile | *(2.5+)* The NuGet configuration file to modify. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | -| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | -| Help | Displays help information for the command. | -| NonInteractive | Suppresses prompts for user input or confirmations. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | - -### Examples - -``` -nuget setapikey 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a - -nuget setapikey 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -source https://example.com/nugetfeed -``` - -## sources - -Manages the list of sources located in `%AppData%\NuGet\NuGet.Config` or the specified configuration file. - -### Usage - -``` -nuget sources -Name -Source -``` - -where `` is one of *List, Add, Remove, Enable, Disable,* or *Update*, `` is the name of the source, and `` is the source's URL. - - -### Options - -| Option | Description | -| --- | --- | -| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | -| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | -| Format | Applies to the `list` action and can be `Detailed` (the default) or `Short`. | -| Help | Displays help information for the command. | -| NonInteractive | Suppresses prompts for user input or confirmations. | -| Password | Specifies the password for authenticating with the source. | -| StorePasswordInClearText | Indicates to store the password in unencrypted text instead of the default behavior of storing an encrypted form. | -| UserName | Specifies the user name for authenticating with the source. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | - -> [!Note] -> Make sure to add the sources' password under the same user context as the nuget.exe is later used to access the package source. The password will be stored encrypted in the config file and can only be decrypted in the same user context as it was encrypted. So for example when you use a build server to restore NuGet packages the password must be encrypted with the same Windows user under which the build server task will run. - - -### Examples - -``` -nuget sources Add -Name "MyServer" -Source \\myserver\packages - -nuget sources Disable -Name "MyServer" - -nuget source Enable -Source "nuget.org" -``` - -## spec - -Generates a `.nuspec` file for a new package. If run in the same folder as a project file (`.csproj`, `.vbproj`, `.fsproj`), `spec` creates a tokenized `.nuspec` file. For additional information, see [Creating a Package](../create-packages/creating-a-package.md). - -### Usage - -``` -nuget spec [] [options] -``` - -where `` is an optional package identifier to save in the `.nuspec` file. - -### Options - -| Option | Description | -| --- | --- | -| AssemblyPath | Specifies the path to the assembly to use for metadata. | -| Force | Overwrites any existing `.nuspec` file. | -| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | -| Help | Displays help information for the command. | -| NonInteractive | Suppresses prompts for user input or confirmations. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | - -### Examples - -``` -nuget spec - -nuget spec MyPackage - -nuget spec -a MyAssembly.dll -``` - -## update - -Updates all packages in a project the latest available versions. It is recommended to run ['restore'](#restore) before running the `update`. - -Note: `update` does not work with the CLI running under Mono (Mac OSX or Linux). The command also does not work with projects using `project.json`. - -The `update` command also updates assembly references in the project file, provided those references already exist. If an updated package has an added assembly, a new reference is *not* added. New package dependencies also don't have their assembly references added. To include these operations as part of an update, update the package in Visual Studio using the Package Manager UI or the Package Manager Console. - -This command can also be used to update nuget.exe itself using the *-self* flag. - -### Usage - -``` -nuget update [options] -``` - -where `` identifies either a `packages.config` or solution file that lists the project's dependencies. - -### Options - -| Option | Description | -| --- | --- | -| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | -| FileConflictAction | *(2.5+)* Specifies the action to take when asked to overwrite or ignore existing files referenced by the project. Values are *overwrite, ignore, none*. | -| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | -| Help | Displays help information for the command. | -| Id | Specifies a list of package IDs to update. | -| MSBuildPath | *(4.0+)* Specifies the path of MSBuild to use with the command, taking precedence over `-MSBuildVersion`. | -| MSBuildVersion | *(3.2+)* Specifies the version of MSBuild to be used with this command. Supported values are 4, 12, 14, 15. By default the MSBuild in your path is picked, otherwise it defaults to the highest installed version of MSBuild. | -| NonInteractive | Suppresses prompts for user input or confirmations. | -| PreRelease | Allows updating to prerelease versions. This flag is not required when updating prerelease packages that are already installed. | -| RepositoryPath | Specifies the local folder where packages are installed. | -| Safe | Specifies that only updates with the highest version available within the same major and minor version as the installed package will be installed. | -| Self | *(1.4+)* Updates nuget.exe to the latest version; all other arguments are ignored. | -| Source | Specifies a list of package sources to use for the updates. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | -| Version | When used with one package ID, specifies the version of the package to update. | - -### Examples - -``` -nuget update - -# update packages installed in solution.sln, using MSBuild version 14.0 to load the solution and its project(s). -nuget update solution.sln -MSBuildVersion 14 - -nuget update -safe - -nuget update -self -``` - -## Environment variables - -The behavior of nuget.exe can be configured through a number of environment variables, which affect nuget.exe on machine, user, or process levels. - -In general, options specified directly on the command line or in the NuGet configuration files have precedence, but there are a few exceptions such as *FORCE_NUGET_EXE_INTERACTIVE*. If you find that nuget.exe behaves differently between machines, an environment variable could be the cause. For example, Azure Web Apps Kudu (used during deployment) has *NUGET_XMLDOC_MODE* set to *skip* to speed up package restore performance and save disk space. - -|Variable|Description|Remarks| -| --- | --- | --- | -| http_proxy | Http proxy used for NuGet HTTP operations. | This would be specified as `http://:@proxy.com`. | -| no_proxy | Configures domains to bypass from using proxy. | Specified as domains separated by comma (,). | -| EnableNuGetPackageRestore | Flag for if NuGet should implicitly grant consent if that's required by package on restore. | Specified flag is specified | as *true* or *1*, any other value treated as flag not set. | -| NUGET_EXE_NO_PROMPT | Prevents the exe for prompting for credentials.| Any value except null or empty string will be treated as this flag set/true. | -FORCE_NUGET_EXE_INTERACTIVE | Global environment variable to force interactive mode. | Any value except null or empty string will be treated as this flag set/true. | -| NUGET_PACKAGES | Path to where packages are stored / cached. | Specified as absolute path. | -| NUGET_FALLBACK_PACKAGES | Global fallback packages folders. | Absolute folder paths separated by semicolon (;). | -| NUGET_HTTP_CACHE_PATH | HTTP cache folder. | Specified as absolute path. | -| NUGET_PERSIST_DG | Flag indicating if dg files (data collected from MSBuild) should be persisted. | Specified as *true* or *false* (default), if NUGET_PERSIST_DG_PATH not set will be stored to temporary directory (NuGetScratch folder in current environment temp directory). | -| NUGET_PERSIST_DG_PATH | Path to persist dg files. | Specified as absolute path, this option is only used when *NUGET_PERSIST_DG* is set to true. | -| NUGET_RESTORE_MSBUILD_ARGS | Sets additional MSBuild arguments. | -| NUGET_RESTORE_MSBUILD_| Verbosity |Sets the MSBuild log verbosity. | Default is *quiet* ("/v:q"). Possible values *q[uiet]*, *m[inimal]*, *n[ormal]*, *d[etailed]*, and *diag[nostic]*. | -| NUGET_SHOW_STACK | Determines whether the full exception (including stack trace) should be displayed to the user. | Specified as *true* or *false* (default). | -| 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). | diff --git a/docs/_breadcrumb/toc.yml b/docs/_breadcrumb/toc.yml index bea162b2c..5e45b16ed 100644 --- a/docs/_breadcrumb/toc.yml +++ b/docs/_breadcrumb/toc.yml @@ -24,8 +24,8 @@ - name: Tools tocHref: /nuget/tools/ topicHref: /nuget/tools/nuget-exe-cli-reference - - name: Schema - tocHref: /nuget/schema/ + - name: Reference + tocHref: /nuget/reference/ topicHref: /nuget/schema/nuspec - name: API tocHref: /nuget/api/ diff --git a/docs/includes/package-restore.md b/docs/includes/package-restore.md index 51ba459c5..ba4917ba7 100644 --- a/docs/includes/package-restore.md +++ b/docs/includes/package-restore.md @@ -2,4 +2,4 @@ - **Package Manager UI** (Visual Studio): right-click the solution in Solution Explorer and select **Restore NuGet Packages**. If one or more individual packages are still not installed properly (meaning that Solution Explorer shows an error icon), then use the Package Manager UI to uninstall the affected packages and reinstall them. See [Reinstalling and updating packages](../Consume-Packages/Reinstalling-and-Updating-Packages.md) -- **Command line**: use the [nuget restore](../tools/nuget-exe-CLI-Reference.md#restore) command. Simply running `nuget restore` in the project folder attempts to restore the project's dependencies. \ No newline at end of file +- **Command line**: use the [nuget restore](../tools/cli-ref-restore.md) command. Simply running `nuget restore` in the project folder attempts to restore the project's dependencies. \ No newline at end of file From 227ae1a8d1450a560ad9146d24200dfb7cefe85e Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 24 Oct 2017 11:07:40 -0700 Subject: [PATCH 0309/2943] Editing TOC --- docs/TOC.md | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index 067f12303..0d4164bfe 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -38,22 +38,23 @@ ## [NuGet.Server](Hosting-Packages/NuGet-Server.md) # Tools ## [nuget.exe CLI Reference](tools/nuget-exe-CLI-Reference.md) -### [add command ](Tools/cli-ref-add.md) -### [config command ](Tools/cli-ref-config.md) -### [delete command ](Tools/cli-ref-delete.md) -### [help or ? command ](Tools/cli-ref-help.md) -### [init command ](Tools/cli-ref-init.md) -### [install command ](Tools/cli-ref-install.md) -### [list command ](Tools/cli-ref-list.md) -### [locals command ](Tools/cli-ref-locals.md) -### [mirror command ](Tools/cli-ref-mirror.md) -### [pack command ](Tools/cli-ref-pack.md) -### [push command ](Tools/cli-ref-push.md) -### [restore command ](Tools/cli-ref-restore.md) -### [setapikey command ](Tools/cli-ref-setapikey.md) -### [sources command ](Tools/cli-ref-sources.md) -### [spec command ](Tools/cli-ref-spec.md) -### [update command ](Tools/cli-ref-update.md) +### [add](Tools/cli-ref-add.md) +### [config](Tools/cli-ref-config.md) +### [delete](Tools/cli-ref-delete.md) +### [help or ?](Tools/cli-ref-help.md) +### [init](Tools/cli-ref-init.md) +### [install](Tools/cli-ref-install.md) +### [list](Tools/cli-ref-list.md) +### [locals](Tools/cli-ref-locals.md) +### [mirror](Tools/cli-ref-mirror.md) +### [pack](Tools/cli-ref-pack.md) +### [push](Tools/cli-ref-push.md) +### [restore](Tools/cli-ref-restore.md) +### [setapikey](Tools/cli-ref-setapikey.md) +### [sources](Tools/cli-ref-sources.md) +### [spec](Tools/cli-ref-spec.md) +### [update](Tools/cli-ref-update.md) +### [Environment Variables](Tools/cli-ref-environment-variables.md) ## [Package Manager UI](Tools/Package-Manager-UI.md) ## [Package Manager Console](Tools/Package-Manager-Console.md) ## [PowerShell Reference](Tools/PowerShell-Reference.md) From f0108dbae1bd6188f82c1b94d99366b6aab8671d Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 24 Oct 2017 11:21:35 -0700 Subject: [PATCH 0310/2943] Role/Version table at top --- docs/Tools/cli-ref-add.md | 5 +++-- docs/Tools/cli-ref-config.md | 5 +++-- docs/Tools/cli-ref-delete.md | 5 +++-- docs/Tools/cli-ref-help.md | 5 +++-- docs/Tools/cli-ref-init.md | 5 +++-- docs/Tools/cli-ref-install.md | 5 +++-- docs/Tools/cli-ref-list.md | 5 +++-- docs/Tools/cli-ref-locals.md | 5 +++-- docs/Tools/cli-ref-mirror.md | 5 +++-- docs/Tools/cli-ref-pack.md | 5 +++-- docs/Tools/cli-ref-push.md | 5 +++-- docs/Tools/cli-ref-restore.md | 5 +++-- docs/Tools/cli-ref-setapikey.md | 5 +++-- docs/Tools/cli-ref-sources.md | 5 +++-- docs/Tools/cli-ref-spec.md | 5 +++-- docs/Tools/cli-ref-update.md | 5 +++-- 16 files changed, 48 insertions(+), 32 deletions(-) diff --git a/docs/Tools/cli-ref-add.md b/docs/Tools/cli-ref-add.md index 84e686887..e84d28e61 100644 --- a/docs/Tools/cli-ref-add.md +++ b/docs/Tools/cli-ref-add.md @@ -23,8 +23,9 @@ ms.reviewer: # add command (NuGet CLI) -**Applicable roles**: Package publishing -**Supported versions**: 3.3+ +| Applicable roles | Supported Versions | +| --- | --- | +| Package publishing | 3.3+ | Adds a specified package to a non-HTTP package source (a folder or UNC path) in a hierarchical layout, wherein folders are created for the package ID and version number. For example: diff --git a/docs/Tools/cli-ref-config.md b/docs/Tools/cli-ref-config.md index 8e3d243c4..64fe02933 100644 --- a/docs/Tools/cli-ref-config.md +++ b/docs/Tools/cli-ref-config.md @@ -23,8 +23,9 @@ ms.reviewer: # config command (NuGet CLI) -**Applicable roles**: All -**Supported versions**: All +| Applicable roles | Supported Versions | +| --- | --- | +| All | All | Gets or sets NuGet configuration values. For additional usage, see [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md). For details on allowable key names, refer to the [NuGet config file reference](../Schema/nuget-config-file.md). diff --git a/docs/Tools/cli-ref-delete.md b/docs/Tools/cli-ref-delete.md index 054475c23..45e5a6b82 100644 --- a/docs/Tools/cli-ref-delete.md +++ b/docs/Tools/cli-ref-delete.md @@ -23,8 +23,9 @@ ms.reviewer: # delete command (NuGet CLI) -**Applicable roles**: Package publishing -**Supported versions**: All +| Applicable roles | Supported Versions | +| --- | --- | +| Package publishing | All | Deletes or unlists a package from a package source. For nuget.org, the delete command [unlists the package](../policies/Deleting-Packages.md). diff --git a/docs/Tools/cli-ref-help.md b/docs/Tools/cli-ref-help.md index b6c1da8c2..3582ed783 100644 --- a/docs/Tools/cli-ref-help.md +++ b/docs/Tools/cli-ref-help.md @@ -23,8 +23,9 @@ ms.reviewer: # help or ? command (NuGet CLI) -**Applicable roles**: All -**Supported versions**: All +| Applicable roles | Supported Versions | +| --- | --- | +| All | All | Displays general help information and help information about specific commands. diff --git a/docs/Tools/cli-ref-init.md b/docs/Tools/cli-ref-init.md index d79924d95..1460e0959 100644 --- a/docs/Tools/cli-ref-init.md +++ b/docs/Tools/cli-ref-init.md @@ -23,8 +23,9 @@ ms.reviewer: # init command (NuGet CLI) -**Applicable roles**: Package creation -**Supported versions**: 3.3+ +| Applicable roles | Supported Versions | +| --- | --- | +| Package creation | 3.3+ | Copies all the packages from a flat folder to a destination folder using a hierarchical layout as described for the [add command](#add) above. That is, using `init` is equivalent to using the `add` command on each package in the folder. diff --git a/docs/Tools/cli-ref-install.md b/docs/Tools/cli-ref-install.md index 1aa70bc38..47e094602 100644 --- a/docs/Tools/cli-ref-install.md +++ b/docs/Tools/cli-ref-install.md @@ -23,8 +23,9 @@ ms.reviewer: # install command (NuGet CLI) -**Applicable roles**: Package consumption -**Supported versions**: All +| Applicable roles | Supported Versions | +| --- | --- | +| Package consumption | All | Downloads and installs a package into a project using the specified package sources. diff --git a/docs/Tools/cli-ref-list.md b/docs/Tools/cli-ref-list.md index ac4b51b0d..241e434c1 100644 --- a/docs/Tools/cli-ref-list.md +++ b/docs/Tools/cli-ref-list.md @@ -23,8 +23,9 @@ ms.reviewer: # list command (NuGet CLI) -**Applicable roles**: Package consumption, publishing -**Supported versions**: All +| Applicable roles | Supported Versions | +| --- | --- | +| Package consumption, publishing | All | Displays a list of packages from a given source. If no sources are specified, all sources defined in the global configuration file, `%AppData%\NuGet\NuGet.Config`, are used. If `NuGet.Config` specifies no sources, then `list` uses the default feed (nuget.org). diff --git a/docs/Tools/cli-ref-locals.md b/docs/Tools/cli-ref-locals.md index 7dc32293a..666ed38df 100644 --- a/docs/Tools/cli-ref-locals.md +++ b/docs/Tools/cli-ref-locals.md @@ -23,8 +23,9 @@ ms.reviewer: ## locals command (NuGet CLI) -**Applicable roles**: Package consumption -**Supported versions**: 3.3+ +| Applicable roles | Supported Versions | +| --- | --- | +| Package consumption | 3.3+ | Clears or lists local NuGet resources such as the http-request cache, packages cache, and the machine-wide global packages folder. The `locals` command can also be used to display a list of those locations. For more information, see [Managing the NuGet Cache](../consume-packages/managing-the-nuget-cache.md). diff --git a/docs/Tools/cli-ref-mirror.md b/docs/Tools/cli-ref-mirror.md index 1a9ef8358..2208b2b72 100644 --- a/docs/Tools/cli-ref-mirror.md +++ b/docs/Tools/cli-ref-mirror.md @@ -23,8 +23,9 @@ ms.reviewer: # mirror command (NuGet CLI) -**Applicable roles**: Package publishing -**Supported versions**: Deprecated in 3.2+ +| Applicable roles | Supported Versions | +| --- | --- | +| Package publishing | Deprecated in 3.2+ | Mirrors a package and its dependencies from the specified source repositories to the target repository. diff --git a/docs/Tools/cli-ref-pack.md b/docs/Tools/cli-ref-pack.md index 2db69b6ec..7dee5fc59 100644 --- a/docs/Tools/cli-ref-pack.md +++ b/docs/Tools/cli-ref-pack.md @@ -23,8 +23,9 @@ ms.reviewer: # pack command (NuGet CLI) -**Applicable roles**: Package creation -**Supported versions**: 2.7+ +| Applicable roles | Supported Versions | +| --- | --- | +| Package creation | 2.7+ | Creates a NuGet package based on the specified `.nuspec` or project file. diff --git a/docs/Tools/cli-ref-push.md b/docs/Tools/cli-ref-push.md index f0fac972e..d114d900f 100644 --- a/docs/Tools/cli-ref-push.md +++ b/docs/Tools/cli-ref-push.md @@ -23,8 +23,9 @@ ms.reviewer: # push command (NuGet CLI) -**Applicable roles**: Package publishing -**Supported versions**: All; publishing to nuget.org requires 4.1.0+ +| Applicable roles | Supported Versions | +| --- | --- | +| Package publishing | All' 4.1.0+ required for nuget.org | > [!Important] > To push packages to nuget.org you must use nuget.exe v4.1.0+, which implements the required [NuGet protocols](../api/nuget-protocols.md). diff --git a/docs/Tools/cli-ref-restore.md b/docs/Tools/cli-ref-restore.md index deb0e9679..4573af5d8 100644 --- a/docs/Tools/cli-ref-restore.md +++ b/docs/Tools/cli-ref-restore.md @@ -23,8 +23,9 @@ ms.reviewer: # restore command (NuGet CLI) -**Applicable roles**: Package consumption -**Supported versions**: 2.7+ +| Applicable roles | Supported Versions | +| --- | --- | +| Package consumption | 2.7+ | NuGet 2.7+: Downloads and installs any packages missing from the `packages` folder. diff --git a/docs/Tools/cli-ref-setapikey.md b/docs/Tools/cli-ref-setapikey.md index e725d0870..139904f87 100644 --- a/docs/Tools/cli-ref-setapikey.md +++ b/docs/Tools/cli-ref-setapikey.md @@ -23,8 +23,9 @@ ms.reviewer: ## setapikey command (NuGet CLI) -**Applicable roles**: Package consumption, publishing -**Supported versions**: All +| Applicable roles | Supported Versions | +| --- | --- | +| Package consumption, publishing | All | Saves an API key for a given server URL into `NuGet.Config` so that it doesn't need to be entered for subsequent commands. diff --git a/docs/Tools/cli-ref-sources.md b/docs/Tools/cli-ref-sources.md index ab32b9946..b4fa283d1 100644 --- a/docs/Tools/cli-ref-sources.md +++ b/docs/Tools/cli-ref-sources.md @@ -23,8 +23,9 @@ ms.reviewer: # sources command (NuGet CLI) -**Applicable roles**: Package consumption, publishing -**Supported versions**: All +| Applicable roles | Supported Versions | +| --- | --- | +| Package consumption, publishing | All | Manages the list of sources located in `%AppData%\NuGet\NuGet.Config` or the specified configuration file. diff --git a/docs/Tools/cli-ref-spec.md b/docs/Tools/cli-ref-spec.md index ffd28c126..ebaeb552a 100644 --- a/docs/Tools/cli-ref-spec.md +++ b/docs/Tools/cli-ref-spec.md @@ -23,8 +23,9 @@ ms.reviewer: # spec command (NuGet CLI) -**Applicable roles**: Package creation -**Supported versions**: All +| Applicable roles | Supported Versions | +| --- | --- | +| Package creation | All | Generates a `.nuspec` file for a new package. If run in the same folder as a project file (`.csproj`, `.vbproj`, `.fsproj`), `spec` creates a tokenized `.nuspec` file. For additional information, see [Creating a Package](../create-packages/creating-a-package.md). diff --git a/docs/Tools/cli-ref-update.md b/docs/Tools/cli-ref-update.md index 746e1ef72..4801b8bd1 100644 --- a/docs/Tools/cli-ref-update.md +++ b/docs/Tools/cli-ref-update.md @@ -23,8 +23,9 @@ ms.reviewer: # update command (NuGet CLI) -**Applicable roles**: Package consumption -**Supported versions**: All +| Applicable roles | Supported Versions | +| --- | --- | +| Package consumption | All | Updates all packages in a project the latest available versions. It is recommended to run ['restore'](#restore) before running the `update`. From 43ee9ce4359cab50499b3ded2355c1e176329424 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 24 Oct 2017 11:28:32 -0700 Subject: [PATCH 0311/2943] Change role/version header --- docs/Tools/cli-ref-add.md | 4 +--- docs/Tools/cli-ref-config.md | 4 +--- docs/Tools/cli-ref-delete.md | 4 +--- docs/Tools/cli-ref-help.md | 4 +--- docs/Tools/cli-ref-init.md | 4 +--- docs/Tools/cli-ref-install.md | 4 +--- docs/Tools/cli-ref-list.md | 4 +--- docs/Tools/cli-ref-locals.md | 4 +--- docs/Tools/cli-ref-mirror.md | 4 +--- docs/Tools/cli-ref-pack.md | 4 +--- docs/Tools/cli-ref-push.md | 4 +--- docs/Tools/cli-ref-restore.md | 4 +--- docs/Tools/cli-ref-setapikey.md | 4 +--- docs/Tools/cli-ref-sources.md | 4 +--- docs/Tools/cli-ref-spec.md | 4 +--- docs/Tools/cli-ref-update.md | 4 +--- 16 files changed, 16 insertions(+), 48 deletions(-) diff --git a/docs/Tools/cli-ref-add.md b/docs/Tools/cli-ref-add.md index e84d28e61..d6547d002 100644 --- a/docs/Tools/cli-ref-add.md +++ b/docs/Tools/cli-ref-add.md @@ -23,9 +23,7 @@ ms.reviewer: # add command (NuGet CLI) -| Applicable roles | Supported Versions | -| --- | --- | -| Package publishing | 3.3+ | +*Applicable roles: package publishing • Supported versions: 3.3+* Adds a specified package to a non-HTTP package source (a folder or UNC path) in a hierarchical layout, wherein folders are created for the package ID and version number. For example: diff --git a/docs/Tools/cli-ref-config.md b/docs/Tools/cli-ref-config.md index 64fe02933..f9fb5f859 100644 --- a/docs/Tools/cli-ref-config.md +++ b/docs/Tools/cli-ref-config.md @@ -23,9 +23,7 @@ ms.reviewer: # config command (NuGet CLI) -| Applicable roles | Supported Versions | -| --- | --- | -| All | All | +*Applicable roles: all • Supported versions: all* Gets or sets NuGet configuration values. For additional usage, see [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md). For details on allowable key names, refer to the [NuGet config file reference](../Schema/nuget-config-file.md). diff --git a/docs/Tools/cli-ref-delete.md b/docs/Tools/cli-ref-delete.md index 45e5a6b82..0c616aad5 100644 --- a/docs/Tools/cli-ref-delete.md +++ b/docs/Tools/cli-ref-delete.md @@ -23,9 +23,7 @@ ms.reviewer: # delete command (NuGet CLI) -| Applicable roles | Supported Versions | -| --- | --- | -| Package publishing | All | +*Applicable roles: package publishing • Supported versions: all* Deletes or unlists a package from a package source. For nuget.org, the delete command [unlists the package](../policies/Deleting-Packages.md). diff --git a/docs/Tools/cli-ref-help.md b/docs/Tools/cli-ref-help.md index 3582ed783..8ed4b1a0f 100644 --- a/docs/Tools/cli-ref-help.md +++ b/docs/Tools/cli-ref-help.md @@ -23,9 +23,7 @@ ms.reviewer: # help or ? command (NuGet CLI) -| Applicable roles | Supported Versions | -| --- | --- | -| All | All | +*Applicable roles: all • Supported versions: all* Displays general help information and help information about specific commands. diff --git a/docs/Tools/cli-ref-init.md b/docs/Tools/cli-ref-init.md index 1460e0959..546a3103c 100644 --- a/docs/Tools/cli-ref-init.md +++ b/docs/Tools/cli-ref-init.md @@ -23,9 +23,7 @@ ms.reviewer: # init command (NuGet CLI) -| Applicable roles | Supported Versions | -| --- | --- | -| Package creation | 3.3+ | +*Applicable roles: package creation • Supported versions: 3.3+* Copies all the packages from a flat folder to a destination folder using a hierarchical layout as described for the [add command](#add) above. That is, using `init` is equivalent to using the `add` command on each package in the folder. diff --git a/docs/Tools/cli-ref-install.md b/docs/Tools/cli-ref-install.md index 47e094602..31f2d32c0 100644 --- a/docs/Tools/cli-ref-install.md +++ b/docs/Tools/cli-ref-install.md @@ -23,9 +23,7 @@ ms.reviewer: # install command (NuGet CLI) -| Applicable roles | Supported Versions | -| --- | --- | -| Package consumption | All | +*Applicable roles: package consumption • Supported versions: all* Downloads and installs a package into a project using the specified package sources. diff --git a/docs/Tools/cli-ref-list.md b/docs/Tools/cli-ref-list.md index 241e434c1..995fac363 100644 --- a/docs/Tools/cli-ref-list.md +++ b/docs/Tools/cli-ref-list.md @@ -23,9 +23,7 @@ ms.reviewer: # list command (NuGet CLI) -| Applicable roles | Supported Versions | -| --- | --- | -| Package consumption, publishing | All | +*Applicable roles: package consumption, publishing • Supported versions: all* Displays a list of packages from a given source. If no sources are specified, all sources defined in the global configuration file, `%AppData%\NuGet\NuGet.Config`, are used. If `NuGet.Config` specifies no sources, then `list` uses the default feed (nuget.org). diff --git a/docs/Tools/cli-ref-locals.md b/docs/Tools/cli-ref-locals.md index 666ed38df..7e6612e99 100644 --- a/docs/Tools/cli-ref-locals.md +++ b/docs/Tools/cli-ref-locals.md @@ -23,9 +23,7 @@ ms.reviewer: ## locals command (NuGet CLI) -| Applicable roles | Supported Versions | -| --- | --- | -| Package consumption | 3.3+ | +*Applicable roles: package consumption • Supported versions: 3.3+* Clears or lists local NuGet resources such as the http-request cache, packages cache, and the machine-wide global packages folder. The `locals` command can also be used to display a list of those locations. For more information, see [Managing the NuGet Cache](../consume-packages/managing-the-nuget-cache.md). diff --git a/docs/Tools/cli-ref-mirror.md b/docs/Tools/cli-ref-mirror.md index 2208b2b72..270421037 100644 --- a/docs/Tools/cli-ref-mirror.md +++ b/docs/Tools/cli-ref-mirror.md @@ -23,9 +23,7 @@ ms.reviewer: # mirror command (NuGet CLI) -| Applicable roles | Supported Versions | -| --- | --- | -| Package publishing | Deprecated in 3.2+ | +*Applicable roles: package publishing • Supported versions: deprecated in 3.2+* Mirrors a package and its dependencies from the specified source repositories to the target repository. diff --git a/docs/Tools/cli-ref-pack.md b/docs/Tools/cli-ref-pack.md index 7dee5fc59..cf475884f 100644 --- a/docs/Tools/cli-ref-pack.md +++ b/docs/Tools/cli-ref-pack.md @@ -23,9 +23,7 @@ ms.reviewer: # pack command (NuGet CLI) -| Applicable roles | Supported Versions | -| --- | --- | -| Package creation | 2.7+ | +*Applicable roles: package creation • Supported versions: 2.7+* Creates a NuGet package based on the specified `.nuspec` or project file. diff --git a/docs/Tools/cli-ref-push.md b/docs/Tools/cli-ref-push.md index d114d900f..bc389915f 100644 --- a/docs/Tools/cli-ref-push.md +++ b/docs/Tools/cli-ref-push.md @@ -23,9 +23,7 @@ ms.reviewer: # push command (NuGet CLI) -| Applicable roles | Supported Versions | -| --- | --- | -| Package publishing | All' 4.1.0+ required for nuget.org | +*Applicable roles: package publishing • Supported versions: all; 4.1.0+ required for nuget.org* > [!Important] > To push packages to nuget.org you must use nuget.exe v4.1.0+, which implements the required [NuGet protocols](../api/nuget-protocols.md). diff --git a/docs/Tools/cli-ref-restore.md b/docs/Tools/cli-ref-restore.md index 4573af5d8..546daa2d4 100644 --- a/docs/Tools/cli-ref-restore.md +++ b/docs/Tools/cli-ref-restore.md @@ -23,9 +23,7 @@ ms.reviewer: # restore command (NuGet CLI) -| Applicable roles | Supported Versions | -| --- | --- | -| Package consumption | 2.7+ | +*Applicable roles: package consumption • Supported versions: 2.7+* NuGet 2.7+: Downloads and installs any packages missing from the `packages` folder. diff --git a/docs/Tools/cli-ref-setapikey.md b/docs/Tools/cli-ref-setapikey.md index 139904f87..a034378d0 100644 --- a/docs/Tools/cli-ref-setapikey.md +++ b/docs/Tools/cli-ref-setapikey.md @@ -23,9 +23,7 @@ ms.reviewer: ## setapikey command (NuGet CLI) -| Applicable roles | Supported Versions | -| --- | --- | -| Package consumption, publishing | All | +*Applicable roles: package consumption, publishing • Supported versions: all* Saves an API key for a given server URL into `NuGet.Config` so that it doesn't need to be entered for subsequent commands. diff --git a/docs/Tools/cli-ref-sources.md b/docs/Tools/cli-ref-sources.md index b4fa283d1..5676f4246 100644 --- a/docs/Tools/cli-ref-sources.md +++ b/docs/Tools/cli-ref-sources.md @@ -23,9 +23,7 @@ ms.reviewer: # sources command (NuGet CLI) -| Applicable roles | Supported Versions | -| --- | --- | -| Package consumption, publishing | All | +*Applicable roles: package consumption, publishing • Supported versions: all* Manages the list of sources located in `%AppData%\NuGet\NuGet.Config` or the specified configuration file. diff --git a/docs/Tools/cli-ref-spec.md b/docs/Tools/cli-ref-spec.md index ebaeb552a..b7e4182df 100644 --- a/docs/Tools/cli-ref-spec.md +++ b/docs/Tools/cli-ref-spec.md @@ -23,9 +23,7 @@ ms.reviewer: # spec command (NuGet CLI) -| Applicable roles | Supported Versions | -| --- | --- | -| Package creation | All | +*Applicable roles: package creation • Supported versions: all* Generates a `.nuspec` file for a new package. If run in the same folder as a project file (`.csproj`, `.vbproj`, `.fsproj`), `spec` creates a tokenized `.nuspec` file. For additional information, see [Creating a Package](../create-packages/creating-a-package.md). diff --git a/docs/Tools/cli-ref-update.md b/docs/Tools/cli-ref-update.md index 4801b8bd1..f32c72e4e 100644 --- a/docs/Tools/cli-ref-update.md +++ b/docs/Tools/cli-ref-update.md @@ -23,9 +23,7 @@ ms.reviewer: # update command (NuGet CLI) -| Applicable roles | Supported Versions | -| --- | --- | -| Package consumption | All | +*Applicable roles: package consumption • Supported versions: all* Updates all packages in a project the latest available versions. It is recommended to run ['restore'](#restore) before running the `update`. From 30e9fe243804930c61aa651b68bd652f926a09c4 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 24 Oct 2017 11:31:22 -0700 Subject: [PATCH 0312/2943] Test one more format --- docs/Tools/cli-ref-add.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/cli-ref-add.md b/docs/Tools/cli-ref-add.md index d6547d002..a34a8453d 100644 --- a/docs/Tools/cli-ref-add.md +++ b/docs/Tools/cli-ref-add.md @@ -23,7 +23,7 @@ ms.reviewer: # add command (NuGet CLI) -*Applicable roles: package publishing • Supported versions: 3.3+* +*Applies to*: package publishing • *Supported versions*: 3.3+ Adds a specified package to a non-HTTP package source (a folder or UNC path) in a hierarchical layout, wherein folders are created for the package ID and version number. For example: From 89150c66dd189e30c8b5792df05ecbf82a488476 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 24 Oct 2017 11:53:52 -0700 Subject: [PATCH 0313/2943] Small edits --- docs/Tools/cli-ref-help.md | 2 +- docs/Tools/cli-ref-pack.md | 2 +- docs/Tools/dotnet-Commands.md | 10 +++++----- docs/Tools/nuget-exe-CLI-Reference.md | 16 ++++++++++++---- 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/docs/Tools/cli-ref-help.md b/docs/Tools/cli-ref-help.md index 8ed4b1a0f..06fd8e569 100644 --- a/docs/Tools/cli-ref-help.md +++ b/docs/Tools/cli-ref-help.md @@ -37,7 +37,7 @@ nuget ? [command] [options] where [command] identifies a specific command for which to display help. > [!Warning] -> With some commands, be mindful to specify *help* first, as with *nuget help install*, because there is a package named "help" on nuget.org. If you give the command *nuget install help*, you'll not get help on the install command but will instead install the package named help. +> With some commands, be mindful to specify *help* first, as with `nuget help install`, because there is a package named "help" on nuget.org. If you give the command `nuget install help`, you'll not get help on the install command but will instead install the package named help. ## Options diff --git a/docs/Tools/cli-ref-pack.md b/docs/Tools/cli-ref-pack.md index cf475884f..19d650e31 100644 --- a/docs/Tools/cli-ref-pack.md +++ b/docs/Tools/cli-ref-pack.md @@ -28,7 +28,7 @@ ms.reviewer: Creates a NuGet package based on the specified `.nuspec` or project file. > [!Important] -> Under Mono, creating a package from a project file is not supported. You also need to adjust non-local paths in the `.nuspec` file to Unix-style paths, as nuget.exe doesn't convert Windows pathnames itself. +> Under Mono, creating a package from a project file is not supported. You also need to adjust non-local paths in the `.nuspec` file to Unix-style paths, as nuget.exe doesn't convert Windows pathnames itself. ## Usage diff --git a/docs/Tools/dotnet-Commands.md b/docs/Tools/dotnet-Commands.md index 8e5a32d96..6984b7560 100644 --- a/docs/Tools/dotnet-Commands.md +++ b/docs/Tools/dotnet-Commands.md @@ -31,8 +31,8 @@ ms.reviewer: The DotNet command-line interface, which runs on Windows, Mac OS X, and Linux, provides a number of essential nuget.exe commands as listed below. Where dotnet provides the desired commands, it is not necessary to download nuget.exe. -- [**dotnet pack**](https://docs.microsoft.com/dotnet/articles/core/preview3/tools/dotnet-pack): Packs the code into a NuGet package. As of NuGet 4.0, this runs the same code as `nuget pack`. -- [**dotnet restore**](https://docs.microsoft.com/dotnet/articles/core/preview3/tools/dotnet-restore): Restores the dependencies and tools of a project. As of NuGet 4.0, this runs the same code as `nuget restore`. -- [**dotnet nuget locals**](https://docs.microsoft.com/dotnet/articles/core/preview3/tools/dotnet-nuget-locals): Clears or lists local NuGet resources such as http the -request cache, temporary cache, or machine-wide global packages folder. -- [**dotnet nuget push**](https://docs.microsoft.com/dotnet/articles/core/preview3/tools/dotnet-nuget-push): Pushes a package to a server and publishes it, applicable to nuget.org, Visual Studio Team Services, or any third-party NuGet servers. -- [**dotnet nuget delete**](https://docs.microsoft.com/dotnet/articles/core/preview3/tools/dotnet-nuget-delete): Deletes or unlists a package from a server, applicable to nuget.org, Visual Studio Team Services, or any third-party NuGet servers. +- [**dotnet pack**](https://docs.microsoft.com/dotnet/core/tools/dotnet-pack?tabs=netcore2x): Packs the code into a NuGet package. As of NuGet 4.0, this runs the same code as `nuget pack`. +- [**dotnet restore**](https://docs.microsoft.com/dotnet/core/tools/dotnet-restore?tabs=netcore2x): Restores the dependencies and tools of a project. As of NuGet 4.0, this runs the same code as `nuget restore`. +- [**dotnet nuget locals**](https://docs.microsoft.com/dotnet/core/tools/dotnet-nuget-locals): Clears or lists local NuGet resources such as http the -request cache, temporary cache, or machine-wide global packages folder. +- [**dotnet nuget push**](https://docs.microsoft.com/dotnet/core/tools/dotnet-nuget-push): Pushes a package to a server and publishes it, applicable to nuget.org, Visual Studio Team Services, or any third-party NuGet servers. +- [**dotnet nuget delete**](https://docs.microsoft.com/dotnet/core/tools/dotnet-nuget-delete): Deletes or unlists a package from a server, applicable to nuget.org, Visual Studio Team Services, or any third-party NuGet servers. diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 2733a890f..045f73aad 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -23,15 +23,23 @@ ms.reviewer: # NuGet CLI reference -The NuGet Command Line Interface (CLI), `nuget.exe`, provides the full extent of NuGet functionality to install, create, publish, and manage packages without making any changes to project files. +The NuGet Command Line Interface (CLI), `nuget.exe`, provides the full extent of NuGet functionality to install, create, publish, and manage packages without making any changes to project files. -All `nuget.exe` are available on Windows; most commands work with [nuget.exe running on Mono](../guides/install-nuget.md#mac-osx-and-linux) except where indicated for `pack`, `restore`, and `update`. Some NuGet capabilities are also available on Mac and Linux through the [dotnet CLI](dotnet-Commands.md). +To use any command, open a command window or bash shell, then run `nuget` followed by the command and appropriate options, such as `nuget install elmah` (to install the elmah package). -To install `nuget.exe`: +## Installing nuget.exe [!INCLUDE[install-cli](../includes/install-cli.md)] -Available commands and applicability to package creation, package consumption, and/or publishing a package to a host: +## Availability + +- All commands are available on Windows. +- All commands work with [nuget.exe running on Mono](../guides/install-nuget.md#mac-osx-and-linux) except where indicated for `pack`, `restore`, and `update`. +- The `pack`, `restore`, `delete`, `locals`, and `push` commands are also available on Mac and Linux through the [dotnet CLI](dotnet-Commands.md). + +## Commands and applicability + +Available commands and applicability to package creation, package consumption, and/or publishing a package to a host: | Command | Applicable Roles | NuGet Version | Description | | --- | --- | --- | --- | From 983fab6be831029dd076df0aea24fcbe7bd1347e Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 24 Oct 2017 11:57:31 -0700 Subject: [PATCH 0314/2943] Finalizing format --- docs/Tools/cli-ref-add.md | 2 +- docs/Tools/cli-ref-config.md | 2 +- docs/Tools/cli-ref-delete.md | 2 +- docs/Tools/cli-ref-help.md | 2 +- docs/Tools/cli-ref-init.md | 2 +- docs/Tools/cli-ref-install.md | 2 +- docs/Tools/cli-ref-list.md | 2 +- docs/Tools/cli-ref-locals.md | 2 +- docs/Tools/cli-ref-mirror.md | 2 +- docs/Tools/cli-ref-pack.md | 2 +- docs/Tools/cli-ref-push.md | 2 +- docs/Tools/cli-ref-restore.md | 2 +- docs/Tools/cli-ref-setapikey.md | 2 +- docs/Tools/cli-ref-sources.md | 2 +- docs/Tools/cli-ref-spec.md | 2 +- docs/Tools/cli-ref-update.md | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/Tools/cli-ref-add.md b/docs/Tools/cli-ref-add.md index a34a8453d..bf6a2884e 100644 --- a/docs/Tools/cli-ref-add.md +++ b/docs/Tools/cli-ref-add.md @@ -23,7 +23,7 @@ ms.reviewer: # add command (NuGet CLI) -*Applies to*: package publishing • *Supported versions*: 3.3+ +**Applies to**: package publishing • **Supported versions**: 3.3+ Adds a specified package to a non-HTTP package source (a folder or UNC path) in a hierarchical layout, wherein folders are created for the package ID and version number. For example: diff --git a/docs/Tools/cli-ref-config.md b/docs/Tools/cli-ref-config.md index f9fb5f859..82d1d088b 100644 --- a/docs/Tools/cli-ref-config.md +++ b/docs/Tools/cli-ref-config.md @@ -23,7 +23,7 @@ ms.reviewer: # config command (NuGet CLI) -*Applicable roles: all • Supported versions: all* +**Applies to:** all • **Supported versions**: all Gets or sets NuGet configuration values. For additional usage, see [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md). For details on allowable key names, refer to the [NuGet config file reference](../Schema/nuget-config-file.md). diff --git a/docs/Tools/cli-ref-delete.md b/docs/Tools/cli-ref-delete.md index 0c616aad5..5d3868e8a 100644 --- a/docs/Tools/cli-ref-delete.md +++ b/docs/Tools/cli-ref-delete.md @@ -23,7 +23,7 @@ ms.reviewer: # delete command (NuGet CLI) -*Applicable roles: package publishing • Supported versions: all* +**Applies to:** package publishing • **Supported versions:** all Deletes or unlists a package from a package source. For nuget.org, the delete command [unlists the package](../policies/Deleting-Packages.md). diff --git a/docs/Tools/cli-ref-help.md b/docs/Tools/cli-ref-help.md index 06fd8e569..215b5ff47 100644 --- a/docs/Tools/cli-ref-help.md +++ b/docs/Tools/cli-ref-help.md @@ -23,7 +23,7 @@ ms.reviewer: # help or ? command (NuGet CLI) -*Applicable roles: all • Supported versions: all* +**Applies to:** all • **Supported versions**: all Displays general help information and help information about specific commands. diff --git a/docs/Tools/cli-ref-init.md b/docs/Tools/cli-ref-init.md index 546a3103c..96fd62e6c 100644 --- a/docs/Tools/cli-ref-init.md +++ b/docs/Tools/cli-ref-init.md @@ -23,7 +23,7 @@ ms.reviewer: # init command (NuGet CLI) -*Applicable roles: package creation • Supported versions: 3.3+* +**Applies to:** package creation • **Supported versions:** 3.3+ Copies all the packages from a flat folder to a destination folder using a hierarchical layout as described for the [add command](#add) above. That is, using `init` is equivalent to using the `add` command on each package in the folder. diff --git a/docs/Tools/cli-ref-install.md b/docs/Tools/cli-ref-install.md index 31f2d32c0..d4c2ad5c9 100644 --- a/docs/Tools/cli-ref-install.md +++ b/docs/Tools/cli-ref-install.md @@ -23,7 +23,7 @@ ms.reviewer: # install command (NuGet CLI) -*Applicable roles: package consumption • Supported versions: all* +**Applies to:** package consumption • **Supported versions:** all Downloads and installs a package into a project using the specified package sources. diff --git a/docs/Tools/cli-ref-list.md b/docs/Tools/cli-ref-list.md index 995fac363..7ee159038 100644 --- a/docs/Tools/cli-ref-list.md +++ b/docs/Tools/cli-ref-list.md @@ -23,7 +23,7 @@ ms.reviewer: # list command (NuGet CLI) -*Applicable roles: package consumption, publishing • Supported versions: all* +**Applies to:** package consumption, publishing • **Supported versions:** all Displays a list of packages from a given source. If no sources are specified, all sources defined in the global configuration file, `%AppData%\NuGet\NuGet.Config`, are used. If `NuGet.Config` specifies no sources, then `list` uses the default feed (nuget.org). diff --git a/docs/Tools/cli-ref-locals.md b/docs/Tools/cli-ref-locals.md index 7e6612e99..1e964f175 100644 --- a/docs/Tools/cli-ref-locals.md +++ b/docs/Tools/cli-ref-locals.md @@ -23,7 +23,7 @@ ms.reviewer: ## locals command (NuGet CLI) -*Applicable roles: package consumption • Supported versions: 3.3+* +**Applies to:** package consumption • **Supported versions:** 3.3+ Clears or lists local NuGet resources such as the http-request cache, packages cache, and the machine-wide global packages folder. The `locals` command can also be used to display a list of those locations. For more information, see [Managing the NuGet Cache](../consume-packages/managing-the-nuget-cache.md). diff --git a/docs/Tools/cli-ref-mirror.md b/docs/Tools/cli-ref-mirror.md index 270421037..23118b7c7 100644 --- a/docs/Tools/cli-ref-mirror.md +++ b/docs/Tools/cli-ref-mirror.md @@ -23,7 +23,7 @@ ms.reviewer: # mirror command (NuGet CLI) -*Applicable roles: package publishing • Supported versions: deprecated in 3.2+* +**Applies to:** package publishing • **Supported versions:** deprecated in 3.2+ Mirrors a package and its dependencies from the specified source repositories to the target repository. diff --git a/docs/Tools/cli-ref-pack.md b/docs/Tools/cli-ref-pack.md index 19d650e31..1189da037 100644 --- a/docs/Tools/cli-ref-pack.md +++ b/docs/Tools/cli-ref-pack.md @@ -23,7 +23,7 @@ ms.reviewer: # pack command (NuGet CLI) -*Applicable roles: package creation • Supported versions: 2.7+* +**Applies to:** package creation • **Supported versions:** 2.7+ Creates a NuGet package based on the specified `.nuspec` or project file. diff --git a/docs/Tools/cli-ref-push.md b/docs/Tools/cli-ref-push.md index bc389915f..7f50cdcb4 100644 --- a/docs/Tools/cli-ref-push.md +++ b/docs/Tools/cli-ref-push.md @@ -23,7 +23,7 @@ ms.reviewer: # push command (NuGet CLI) -*Applicable roles: package publishing • Supported versions: all; 4.1.0+ required for nuget.org* +**Applies to:** package publishing • **Supported versions:** all; 4.1.0+ required for nuget.org > [!Important] > To push packages to nuget.org you must use nuget.exe v4.1.0+, which implements the required [NuGet protocols](../api/nuget-protocols.md). diff --git a/docs/Tools/cli-ref-restore.md b/docs/Tools/cli-ref-restore.md index 546daa2d4..aa832fcc2 100644 --- a/docs/Tools/cli-ref-restore.md +++ b/docs/Tools/cli-ref-restore.md @@ -23,7 +23,7 @@ ms.reviewer: # restore command (NuGet CLI) -*Applicable roles: package consumption • Supported versions: 2.7+* +**Applies to:** package consumption • **Supported versions:** 2.7+ NuGet 2.7+: Downloads and installs any packages missing from the `packages` folder. diff --git a/docs/Tools/cli-ref-setapikey.md b/docs/Tools/cli-ref-setapikey.md index a034378d0..c26060a4f 100644 --- a/docs/Tools/cli-ref-setapikey.md +++ b/docs/Tools/cli-ref-setapikey.md @@ -23,7 +23,7 @@ ms.reviewer: ## setapikey command (NuGet CLI) -*Applicable roles: package consumption, publishing • Supported versions: all* +**Applies to:** package consumption, publishing • **Supported versions:** all Saves an API key for a given server URL into `NuGet.Config` so that it doesn't need to be entered for subsequent commands. diff --git a/docs/Tools/cli-ref-sources.md b/docs/Tools/cli-ref-sources.md index 5676f4246..b2e0bd2cd 100644 --- a/docs/Tools/cli-ref-sources.md +++ b/docs/Tools/cli-ref-sources.md @@ -23,7 +23,7 @@ ms.reviewer: # sources command (NuGet CLI) -*Applicable roles: package consumption, publishing • Supported versions: all* +**Applies to:** package consumption, publishing • **Supported versions:** all Manages the list of sources located in `%AppData%\NuGet\NuGet.Config` or the specified configuration file. diff --git a/docs/Tools/cli-ref-spec.md b/docs/Tools/cli-ref-spec.md index b7e4182df..02bfd408b 100644 --- a/docs/Tools/cli-ref-spec.md +++ b/docs/Tools/cli-ref-spec.md @@ -23,7 +23,7 @@ ms.reviewer: # spec command (NuGet CLI) -*Applicable roles: package creation • Supported versions: all* +**Applies to:** package creation • **Supported versions:** all Generates a `.nuspec` file for a new package. If run in the same folder as a project file (`.csproj`, `.vbproj`, `.fsproj`), `spec` creates a tokenized `.nuspec` file. For additional information, see [Creating a Package](../create-packages/creating-a-package.md). diff --git a/docs/Tools/cli-ref-update.md b/docs/Tools/cli-ref-update.md index f32c72e4e..89ca1c876 100644 --- a/docs/Tools/cli-ref-update.md +++ b/docs/Tools/cli-ref-update.md @@ -23,7 +23,7 @@ ms.reviewer: # update command (NuGet CLI) -*Applicable roles: package consumption • Supported versions: all* +**Applies to:** package consumption • **Supported versions:** all Updates all packages in a project the latest available versions. It is recommended to run ['restore'](#restore) before running the `update`. From 1fb6f0bfbbeea2a7743ab968319221dd861fc57f Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 24 Oct 2017 12:16:04 -0700 Subject: [PATCH 0315/2943] Update Restore.md --- docs/Quickstart/Restore.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/Quickstart/Restore.md b/docs/Quickstart/Restore.md index 2995d0180..22c7b1e09 100644 --- a/docs/Quickstart/Restore.md +++ b/docs/Quickstart/Restore.md @@ -1,7 +1,7 @@ --- # required metadata -title: NuGet Quick Guide ro Package Restore | Microsoft Docs +title: Troubleshooting NuGet Package Restore | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen @@ -13,24 +13,26 @@ ms.assetid: b70326a0-5bfc-4b7c-881d-7a7d5ebeeed5 # optional metadata -description: A brief description of how to restore NuGet packages in a project. -keywords: NuGet package restore, restoring packages +description: A description of commong nuget restore errors and how to troubleshoot them. +keywords: NuGet package restore, restoring packages, troubleshooting, troubleshoot ms.reviewer: - karann - unnir --- -# Quick guide to package restore +# Troubleshooting package restore errors + +This page focuses on common package restore errors and steps to resolve them. For how-to restore packages, see [Package restore](../Consume-Packages/Package-Restore.md#enabling-and-disabling-package-restore). By default, building a project in Visual Studio automatically restores NuGet packages referenced in the project. However, builds will fail with if package restore is disabled in the **Tools > Options > NuGet Package Manager > Package Restore** settings and the necessary packages are not available on your computer. In these cases you may see the following errors: -``` +```ps This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. The missing file is {name}. ``` -``` +```ps One or more NuGet packages need to be restored but couldn't be because consent has not been granted. To give consent, open the Visual Studio Options dialog, click on the NuGet Package Manager node and check 'Allow NuGet to download missing packages @@ -42,4 +44,4 @@ To enable package restore, open **Tools > Options > NuGet Package Manager** and ![enable NuGet package restore in Tool/Options](../Consume-Packages/media/restore-01-autorestoreoptions.png) -For additional details, see [Package restore](../Consume-Packages/Package-Restore.md#enabling-and-disabling-package-restore). + From d033182d284a51202fd12c9a3bc36c2c0139e15c Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 24 Oct 2017 12:27:31 -0700 Subject: [PATCH 0316/2943] Update and rename Restore.md to Troubleshooting-Restore.md --- docs/Quickstart/{Restore.md => Troubleshooting-Restore.md} | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) rename docs/Quickstart/{Restore.md => Troubleshooting-Restore.md} (88%) diff --git a/docs/Quickstart/Restore.md b/docs/Quickstart/Troubleshooting-Restore.md similarity index 88% rename from docs/Quickstart/Restore.md rename to docs/Quickstart/Troubleshooting-Restore.md index 22c7b1e09..2bc5bbcb8 100644 --- a/docs/Quickstart/Restore.md +++ b/docs/Quickstart/Troubleshooting-Restore.md @@ -23,16 +23,17 @@ ms.reviewer: # Troubleshooting package restore errors -This page focuses on common package restore errors and steps to resolve them. For how-to restore packages, see [Package restore](../Consume-Packages/Package-Restore.md#enabling-and-disabling-package-restore). +> [!Note] +> This page focuses on common package restore errors and steps to resolve them. For how-to restore packages, see [Package restore](../Consume-Packages/Package-Restore.md#enabling-and-disabling-package-restore). By default, building a project in Visual Studio automatically restores NuGet packages referenced in the project. However, builds will fail with if package restore is disabled in the **Tools > Options > NuGet Package Manager > Package Restore** settings and the necessary packages are not available on your computer. In these cases you may see the following errors: -```ps +```bash This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. The missing file is {name}. ``` -```ps +```bash One or more NuGet packages need to be restored but couldn't be because consent has not been granted. To give consent, open the Visual Studio Options dialog, click on the NuGet Package Manager node and check 'Allow NuGet to download missing packages From e08c73d35feb93933b31c222a7e20ddc3aca8ac0 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 24 Oct 2017 12:57:38 -0700 Subject: [PATCH 0317/2943] Create Package-restore-troubleshooting.md --- .../Package-restore-troubleshooting.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 docs/Consume-Packages/Package-restore-troubleshooting.md diff --git a/docs/Consume-Packages/Package-restore-troubleshooting.md b/docs/Consume-Packages/Package-restore-troubleshooting.md new file mode 100644 index 000000000..c0ccf28c9 --- /dev/null +++ b/docs/Consume-Packages/Package-restore-troubleshooting.md @@ -0,0 +1,47 @@ +--- +# required metadata + +title: Troubleshooting NuGet Package Restore | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 10/24/2017 +ms.topic: article +ms.prod: nuget +ms.technology: null +ms.assetid: b70326a0-5bfc-4b7c-881d-7a7d5ebeeed5 + +# optional metadata + +description: A description of commong nuget restore errors and how to troubleshoot them. +keywords: NuGet package restore, restoring packages, troubleshooting, troubleshoot +ms.reviewer: +- karann +- unnir + +--- + +# Troubleshooting package restore errors + +> [!Note] +> This page focuses on common package restore errors and steps to resolve them. For how-to restore packages, see [Package restore](../Consume-Packages/Package-Restore.md#enabling-and-disabling-package-restore). + +By default, building a project in Visual Studio automatically restores NuGet packages referenced in the project. However, builds will fail with if package restore is disabled in the **Tools > Options > NuGet Package Manager > Package Restore** settings and the necessary packages are not available on your computer. In these cases you may see the following errors: + +```bash +This project references NuGet package(s) that are missing on this computer. +Use NuGet Package Restore to download them. The missing file is {name}. +``` + +```bash +One or more NuGet packages need to be restored but couldn't be because consent has +not been granted. To give consent, open the Visual Studio Options dialog, click on +the NuGet Package Manager node and check 'Allow NuGet to download missing packages +during build.' You can also give consent by setting the environment variable +'EnableNuGetPackageRestore' to 'true'. Missing packages: {name} +``` + +To enable package restore, open **Tools > Options > NuGet Package Manager** and select the options for **Allow NuGet to download missing packages** and **Automatically check for missing packages during build in Visual Studio**: + +![enable NuGet package restore in Tool/Options](../Consume-Packages/media/restore-01-autorestoreoptions.png) + From 35f0f0179667f2845bcc0ab16a536bc63829259e Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 24 Oct 2017 12:59:54 -0700 Subject: [PATCH 0318/2943] Update TOC.md --- docs/TOC.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/TOC.md b/docs/TOC.md index 3cba3adcd..16ac30a5a 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -28,6 +28,7 @@ ## [Reinstalling and Updating Packages](Consume-Packages/Reinstalling-and-Updating-Packages.md) ## [Packages and Source Control](Consume-Packages/Packages-and-Source-Control.md) ## [Package Restore](Consume-Packages/Package-Restore.md) +### [Troubleshooting](Consume-Packages/Package-restore-troubleshooting.md) ## [Managing the NuGet Cache](Consume-Packages/Managing-the-NuGet-Cache.md) ## [Configuring NuGet Behavior](Consume-Packages/Configuring-NuGet-Behavior.md) ## [Dependency Resolution](Consume-Packages/Dependency-Resolution.md) From bbd43e5a9a564f995fb855910dc2582896402944 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 24 Oct 2017 13:25:13 -0700 Subject: [PATCH 0319/2943] Update and rename Troubleshooting-Restore.md to restore.md --- docs/Quickstart/Troubleshooting-Restore.md | 48 ---------------------- docs/Quickstart/restore.md | 3 ++ 2 files changed, 3 insertions(+), 48 deletions(-) delete mode 100644 docs/Quickstart/Troubleshooting-Restore.md create mode 100644 docs/Quickstart/restore.md diff --git a/docs/Quickstart/Troubleshooting-Restore.md b/docs/Quickstart/Troubleshooting-Restore.md deleted file mode 100644 index 2bc5bbcb8..000000000 --- a/docs/Quickstart/Troubleshooting-Restore.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -# required metadata - -title: Troubleshooting NuGet Package Restore | Microsoft Docs -author: kraigb -ms.author: kraigb -manager: ghogen -ms.date: 10/24/2017 -ms.topic: article -ms.prod: nuget -ms.technology: null -ms.assetid: b70326a0-5bfc-4b7c-881d-7a7d5ebeeed5 - -# optional metadata - -description: A description of commong nuget restore errors and how to troubleshoot them. -keywords: NuGet package restore, restoring packages, troubleshooting, troubleshoot -ms.reviewer: -- karann -- unnir - ---- - -# Troubleshooting package restore errors - -> [!Note] -> This page focuses on common package restore errors and steps to resolve them. For how-to restore packages, see [Package restore](../Consume-Packages/Package-Restore.md#enabling-and-disabling-package-restore). - -By default, building a project in Visual Studio automatically restores NuGet packages referenced in the project. However, builds will fail with if package restore is disabled in the **Tools > Options > NuGet Package Manager > Package Restore** settings and the necessary packages are not available on your computer. In these cases you may see the following errors: - -```bash -This project references NuGet package(s) that are missing on this computer. -Use NuGet Package Restore to download them. The missing file is {name}. -``` - -```bash -One or more NuGet packages need to be restored but couldn't be because consent has -not been granted. To give consent, open the Visual Studio Options dialog, click on -the NuGet Package Manager node and check 'Allow NuGet to download missing packages -during build.' You can also give consent by setting the environment variable -'EnableNuGetPackageRestore' to 'true'. Missing packages: {name} -``` - -To enable package restore, open **Tools > Options > NuGet Package Manager** and select the options for **Allow NuGet to download missing packages** and **Automatically check for missing packages during build in Visual Studio**: - -![enable NuGet package restore in Tool/Options](../Consume-Packages/media/restore-01-autorestoreoptions.png) - - diff --git a/docs/Quickstart/restore.md b/docs/Quickstart/restore.md new file mode 100644 index 000000000..8cde8de08 --- /dev/null +++ b/docs/Quickstart/restore.md @@ -0,0 +1,3 @@ +--- +redirect_url: /nuget/Consume-Packages/Package-restore-troubleshooting +--- From 483929df07fcd17fa600c8e01ed01b24cb03eaf1 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 24 Oct 2017 13:25:54 -0700 Subject: [PATCH 0320/2943] Update TOC.md --- docs/TOC.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/TOC.md b/docs/TOC.md index 16ac30a5a..7cbd19ee6 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -2,7 +2,6 @@ # Quickstart ## [Create and Publish a Package](Quickstart/Create-and-Publish-a-Package.md) ## [Use a Package](Quickstart/Use-a-Package.md) -## [Restore Packages](Quickstart/Restore.md) # Guides ## [Install NuGet client tools](Guides/Install-NuGet.md) ## [Create UWP Packages](Guides/Create-UWP-Packages.md) From db7e2a99817cbb8c4905e8d0ec5e3e8dadbea324 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 24 Oct 2017 14:05:02 -0700 Subject: [PATCH 0321/2943] Update Package-restore-troubleshooting.md --- .../Package-restore-troubleshooting.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/Consume-Packages/Package-restore-troubleshooting.md b/docs/Consume-Packages/Package-restore-troubleshooting.md index c0ccf28c9..71095e159 100644 --- a/docs/Consume-Packages/Package-restore-troubleshooting.md +++ b/docs/Consume-Packages/Package-restore-troubleshooting.md @@ -16,24 +16,24 @@ ms.assetid: b70326a0-5bfc-4b7c-881d-7a7d5ebeeed5 description: A description of commong nuget restore errors and how to troubleshoot them. keywords: NuGet package restore, restoring packages, troubleshooting, troubleshoot ms.reviewer: -- karann -- unnir +- karann-msft +- unniravindranathan --- -# Troubleshooting package restore errors +# Troubleshooting package restore errors in Visual Studio > [!Note] -> This page focuses on common package restore errors and steps to resolve them. For how-to restore packages, see [Package restore](../Consume-Packages/Package-Restore.md#enabling-and-disabling-package-restore). +> This page focuses on common errors when restoring packages in Visual Studio and steps to resolve them. For how-to restore packages, see [Package restore](../Consume-Packages/Package-Restore.md#enabling-and-disabling-package-restore). -By default, building a project in Visual Studio automatically restores NuGet packages referenced in the project. However, builds will fail with if package restore is disabled in the **Tools > Options > NuGet Package Manager > Package Restore** settings and the necessary packages are not available on your computer. In these cases you may see the following errors: +By default, building a project in Visual Studio automatically restores NuGet packages referenced in the project. However, builds will fail if package restore is disabled in the **Tools > Options > NuGet Package Manager > Package Restore** settings and the necessary packages are not available on your computer. In these cases you may see the following errors: -```bash +``` This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. The missing file is {name}. ``` -```bash +``` One or more NuGet packages need to be restored but couldn't be because consent has not been granted. To give consent, open the Visual Studio Options dialog, click on the NuGet Package Manager node and check 'Allow NuGet to download missing packages From a38b33f8fa99d0ceaf6f1d5f8a05d97835ce3bf6 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 24 Oct 2017 14:31:16 -0700 Subject: [PATCH 0322/2943] Update CLI links --- .../Configuring-NuGet-Behavior.md | 2 +- docs/Guides/Install-NuGet.md | 4 +-- docs/Tools/nuget-exe-CLI-Reference.md | 32 +++++++++---------- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index faa8e8e3e..1838873c4 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -5,7 +5,7 @@ title: Configuring the behavior of NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/25/2017 +ms.date: 10/24/2017 ms.topic: article ms.prod: nuget #ms.service: diff --git a/docs/Guides/Install-NuGet.md b/docs/Guides/Install-NuGet.md index 22ca03e3e..0800b5096 100644 --- a/docs/Guides/Install-NuGet.md +++ b/docs/Guides/Install-NuGet.md @@ -13,8 +13,8 @@ ms.assetid: 683b8b34-a6f4-4d56-b9cd-2483bfbad1ad # optional metadata -description: Guidance on installing the NuGet client tools, the command-line interface (CLI), and the NuGet Package Manager for Visual Studio. -keywords: nuget.exe CLI, nuget client tools, NuGet package manager, NuGet package manager console, NuGet for Visual Studio, NuGet beta channel +description: Guidance on installing client tools, the command-line interface (CLI), and the Package Manager for Visual Studio. +keywords: nuget.exe CLI, NuGet client tools, NuGet package manager, NuGet package manager console, NuGet for Visual Studio, NuGet beta channel ms.reviewer: - karann-msft - unniravindranathan diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 045f73aad..b7ee152d1 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -43,22 +43,22 @@ Available commands and applicability to package creation, package consumption, a | Command | Applicable Roles | NuGet Version | Description | | --- | --- | --- | --- | -| [add](#cli-ref-add.md) | Publishing | 3.3+ | Adds a package to a non-HTTP package source using hierarchical layout. For HTTP sources, use *push*. | -| [config](#cli-ref-config.md) | All | All | Gets or sets NuGet configuration values. | -| [delete](#cli-ref-delete.md) | Publishing | All | Removes or unlists a package from a package source. | -| [help or ?](#cli-ref-help.md) | All | All | Displays help information or help for a command. | -| [init](#cli-ref-init.md) | Creation | 3.3+ | Adds packages from a folder to a package source using hierarchical layout. | -| [install](#cli-ref-install.md) | Consumption | All | Installs a package into the current project but does not modify projects or reference files. | -| [list](#cli-ref-list.md) | Consumption, perhaps Publishing | All | Displays packages from a given source. | -| [locals](#cli-ref-locals.md) | Consumption | 3.3+ | Clears or lists packages in various caches or the global packages folder, or identifies those folders. | -| [mirror](#cli-ref-mirror.md) | Publishing | Deprecated in 3.2+ | Mirrors a package and its dependencies from a source to a target repository. | -| [pack](#cli-ref-pack.md) | Creation | 2.7+ | Creates a NuGet package from a `.nuspec` or project file. When running on Mono, creating a package from a project file is not supported. | -| [push](#cli-ref-push.md) | Publishing | All | Publishes a package to a package source. | -| [restore](#cli-ref-restore.md) | Consumption | 2.7+ | Restores all packages referenced by the package reference format in use. When running on Mono, restoring packages using the PackageReference format is not supported. | -| [setapikey](#cli-ref-setapikey.md) | Consumption, Publishing | All | Saves an API key for a given package source when that package source requires a key for access. | -| [sources](#cli-ref-sources.md) | Consumption, Publishing | All | Manages package sources in configuration files. | -| [spec](#cli-ref-spec.md) | Creation | All | Generates a `.nuspec` file, using tokens if generating the file from a Visual Studio project. | -| [update](#cli-ref-update.md) | Consumption | All | Updates a project's packages to the latest available versions. Not supported when running on Mono. | +| [add](cli-ref-add.md) | Publishing | 3.3+ | Adds a package to a non-HTTP package source using hierarchical layout. For HTTP sources, use *push*. | +| [config](cli-ref-config.md) | All | All | Gets or sets NuGet configuration values. | +| [delete](cli-ref-delete.md) | Publishing | All | Removes or unlists a package from a package source. | +| [help or ?](cli-ref-help.md) | All | All | Displays help information or help for a command. | +| [init](cli-ref-init.md) | Creation | 3.3+ | Adds packages from a folder to a package source using hierarchical layout. | +| [install](cli-ref-install.md) | Consumption | All | Installs a package into the current project but does not modify projects or reference files. | +| [list](cli-ref-list.md) | Consumption, perhaps Publishing | All | Displays packages from a given source. | +| [locals](cli-ref-locals.md) | Consumption | 3.3+ | Clears or lists packages in various caches or the global packages folder, or identifies those folders. | +| [mirror](cli-ref-mirror.md) | Publishing | Deprecated in 3.2+ | Mirrors a package and its dependencies from a source to a target repository. | +| [pack](cli-ref-pack.md) | Creation | 2.7+ | Creates a NuGet package from a `.nuspec` or project file. When running on Mono, creating a package from a project file is not supported. | +| [push](cli-ref-push.md) | Publishing | All | Publishes a package to a package source. | +| [restore](cli-ref-restore.md) | Consumption | 2.7+ | Restores all packages referenced by the package reference format in use. When running on Mono, restoring packages using the PackageReference format is not supported. | +| [setapikey](cli-ref-setapikey.md) | Consumption, Publishing | All | Saves an API key for a given package source when that package source requires a key for access. | +| [sources](cli-ref-sources.md) | Consumption, Publishing | All | Manages package sources in configuration files. | +| [spec](cli-ref-spec.md) | Creation | All | Generates a `.nuspec` file, using tokens if generating the file from a Visual Studio project. | +| [update](cli-ref-update.md) | Consumption | All | Updates a project's packages to the latest available versions. Not supported when running on Mono. | Different commands make use of various [Environment variables](cli-ref-environment-variables.md). From 53bf165104faa15c68081a57819d04d5c151716e Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 24 Oct 2017 14:44:30 -0700 Subject: [PATCH 0323/2943] Reorg list --- docs/Tools/nuget-exe-CLI-Reference.md | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index b7ee152d1..5777e8ed3 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -41,23 +41,27 @@ To use any command, open a command window or bash shell, then run `nuget` follow Available commands and applicability to package creation, package consumption, and/or publishing a package to a host: -| Command | Applicable Roles | NuGet Version | Description | +| Common Commands | Applicable Roles | NuGet Version | Description | | --- | --- | --- | --- | -| [add](cli-ref-add.md) | Publishing | 3.3+ | Adds a package to a non-HTTP package source using hierarchical layout. For HTTP sources, use *push*. | +| [pack](cli-ref-pack.md) | Creation | 2.7+ | Creates a NuGet package from a `.nuspec` or project file. When running on Mono, creating a package from a project file is not supported. | +| [push](cli-ref-push.md) | Publishing | All | Publishes a package to a package source. | | [config](cli-ref-config.md) | All | All | Gets or sets NuGet configuration values. | -| [delete](cli-ref-delete.md) | Publishing | All | Removes or unlists a package from a package source. | | [help or ?](cli-ref-help.md) | All | All | Displays help information or help for a command. | +| [locals](cli-ref-locals.md) | Consumption | 3.3+ | Clears or lists packages in various caches or the global packages folder, or identifies those folders. | +| [restore](cli-ref-restore.md) | Consumption | 2.7+ | Restores all packages referenced by the package reference format in use. When running on Mono, restoring packages using the PackageReference format is not supported. | +| [setapikey](cli-ref-setapikey.md) | Publishing, Consumption | All | Saves an API key for a given package source when that package source requires a key for access. | +| [spec](cli-ref-spec.md) | Creation | All | Generates a `.nuspec` file, using tokens if generating the file from a Visual Studio project. | + + +| Secondary Commands | Applicable Roles | NuGet Version | Description | +| --- | --- | --- | --- | +| [add](cli-ref-add.md) | Publishing | 3.3+ | Adds a package to a non-HTTP package source using hierarchical layout. For HTTP sources, use *push*. | +| [delete](cli-ref-delete.md) | Publishing | All | Removes or unlists a package from a package source. | | [init](cli-ref-init.md) | Creation | 3.3+ | Adds packages from a folder to a package source using hierarchical layout. | | [install](cli-ref-install.md) | Consumption | All | Installs a package into the current project but does not modify projects or reference files. | | [list](cli-ref-list.md) | Consumption, perhaps Publishing | All | Displays packages from a given source. | -| [locals](cli-ref-locals.md) | Consumption | 3.3+ | Clears or lists packages in various caches or the global packages folder, or identifies those folders. | | [mirror](cli-ref-mirror.md) | Publishing | Deprecated in 3.2+ | Mirrors a package and its dependencies from a source to a target repository. | -| [pack](cli-ref-pack.md) | Creation | 2.7+ | Creates a NuGet package from a `.nuspec` or project file. When running on Mono, creating a package from a project file is not supported. | -| [push](cli-ref-push.md) | Publishing | All | Publishes a package to a package source. | -| [restore](cli-ref-restore.md) | Consumption | 2.7+ | Restores all packages referenced by the package reference format in use. When running on Mono, restoring packages using the PackageReference format is not supported. | -| [setapikey](cli-ref-setapikey.md) | Consumption, Publishing | All | Saves an API key for a given package source when that package source requires a key for access. | | [sources](cli-ref-sources.md) | Consumption, Publishing | All | Manages package sources in configuration files. | -| [spec](cli-ref-spec.md) | Creation | All | Generates a `.nuspec` file, using tokens if generating the file from a Visual Studio project. | | [update](cli-ref-update.md) | Consumption | All | Updates a project's packages to the latest available versions. Not supported when running on Mono. | Different commands make use of various [Environment variables](cli-ref-environment-variables.md). From 0c83f0b223afc8439d598cd57692b68e36a5c27f Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 24 Oct 2017 14:45:26 -0700 Subject: [PATCH 0324/2943] Change intro sentence --- docs/Tools/nuget-exe-CLI-Reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 5777e8ed3..fee3e1f50 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -25,7 +25,7 @@ ms.reviewer: The NuGet Command Line Interface (CLI), `nuget.exe`, provides the full extent of NuGet functionality to install, create, publish, and manage packages without making any changes to project files. -To use any command, open a command window or bash shell, then run `nuget` followed by the command and appropriate options, such as `nuget install elmah` (to install the elmah package). +To use any command, open a command window or bash shell, then run `nuget` followed by the command and appropriate options, such as `nuget help pack` (to view help on the pack command). ## Installing nuget.exe From 597ba5ca268544978da4861f46ece6a7b1285893 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 25 Oct 2017 11:33:03 -0700 Subject: [PATCH 0325/2943] Rework NuGet Config topic --- .../Configuring-NuGet-Behavior.md | 243 ++++++++---------- docs/archive/config-priority-order.md | 29 +++ docs/archive/readme.md | 1 + docs/docfx.json | 3 +- docs/index.md | 12 +- 5 files changed, 151 insertions(+), 137 deletions(-) create mode 100644 docs/archive/config-priority-order.md create mode 100644 docs/archive/readme.md diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index 1838873c4..6ac47b94d 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -5,7 +5,7 @@ title: Configuring the behavior of NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 10/25/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -16,265 +16,248 @@ ms.assetid: c1e34826-d07d-4609-a0fd-123459ae89c5 description: NuGet.Config files control NuGet's behavior both globally and on a per-project basis, and are modified with nuget config command. keywords: NuGet config files, NuGet configuration, NuGet behavior settings, NuGet settings, Nuget.Config, NuGetDefaults.Config, defaults -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- # Configuring NuGet behavior -NuGet's `NuGet.Config` files store configuration settings in XML and allow for changing default configuration values. NuGet uses several global configuration files and any number of configuration files within and near to a project to determine its exact behavior. In addition, in NuGet 2.7 and later you can use the `NuGetDefaults.Config` file to also specifically control package sources. +NuGet's behavior is driven by the accumulated settings in one or more `NuGet.Config` (XML) files that can exist at project-, user-, and computer-wide levels. A global `NuGetDefaults.Config` file (2.7+) also specifically configures package sources. Settings apply to all commands issued in the CLI, the Package Manager Console, and the Package Manager UI. In this topic: -- [File locations and uses](#config-file-locations-and-uses) +- [NuGet.Config file locations and uses](#config-file-locations-and-uses) - [Changing settings](#changing-config-settings) - [How settings are applied](#how-settings-are-applied) -- [NuGet defaults file](#nuget-defaults-file) +- [NuGetDefaults.Config file](#nuget-defaults-file) ## Config file locations and uses -The behavior of every NuGet command, whether issued from the command line, the Package Manager UI, or the Package Manager Console, is driven by the accumulated settings from any number of `NuGet.Config` files: +| Scope | NuGet.Config file location | Decsription | +| --- | --- | --- | +| Project | Project folder or any folder up to the drive root | In a project folder, settings apply only to that project. In parent folders that contain multiple projects subfolders, settings apply to all projects in those subfolders. | +| User | Windows: `%APPDATA%\NuGet\NuGet.Config`
        Mac/Linux: `$HOME/.nuget/` | Settings apply to all operations, but are overridden by any project-level settings. When using CLI commands, you can specify a different config file using the `-configFile` switch to ignore any settings in the default user-level file. | +| Computer | Windows: `%ProgramFiles(x86)%\NuGet\Config`
        Mac/Linux: `$XDG_DATA_HOME` (typically `~/.local/share`) | Settings apply to all operations on the computer, but are overriden by any user- or project-level settings. | -- Project-specific `NuGet.Config` files located in any folder from the solution folder up to the drive root. These allow control over settings as they apply to a project or a group of projects. -- A solution-specific `NuGet.Config` file located within a `.nuget` folder in the solution. Settings in this file apply only to solution-wide packages and is supported only in NuGet 3.3 and earlier. It is ignored for NuGet 3.4 and later. -- The global config file located in `%APPDATA%\NuGet\NuGet.Config`, which is always used unless you specify a different config file using the `-configFile` switch on any NuGet command. For example, `nuget restore -configfile c:\my.config` uses settings from `c:\my.config` for the command and ignores any settings in the global config file. -- Additional machine-wide config files: - - NuGet 2.6 to NuGet 3.5: located in `%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}\]]]NuGet.Config`, where `{IDE}` can be `VisualStudio`, `{Version}` can be the Visual Studio version such as `14.0`, and `{SKU}` is either `Community`, `Pro`, or `Enterprise`. These variants allow you to create configurations that are specific to different versions and editions of Visual Studio if needs be. - - NuGet 4.0+: located under `%ProgramFiles(x86)%\NuGet\Config` rather than `%ProgramData%`. To migrate configuration files from `%ProgramData%`, simply copy them to the location under `%ProgramFiles(x86)%`. -- The "default" file: - - NuGet 2.7 to NuGet 3.5: located at `%PROGRAMDATA%\NuGet\NuGetDefaults.Config`, which is described later under [NuGet defaults file](#nuget-defaults-file) as a way to specifically enable and disable package sources. No other settings are supported in this file. - - NuGet 4.0+: located under `%ProgramFiles(x86)%\NuGet\Config` rather than `%ProgramData%`. - -> [!Note] -> The `%ProgramData%\NuGet` and `%ProgramFiles(x86)%\NuGet` folders typically requires Administrator permissions to modify. Administrators are expected to set the correct permissions on these folders based on the user and/or machine information. +Notes for earlier versions of NuGet: +- NuGet 3.3 and earlier used a `.nuget` folder for solution-wide settings. This file not used in NuGet 3.4+. +- For NuGet 2.6 to 3.x, the computer-level config file on Windows was located in `%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}\]]]NuGet.Config`, where `{IDE}` can be `VisualStudio`, `{Version}` was the Visual Studio version such as `14.0`, and `{SKU}` is either `Community`, `Pro`, or `Enterprise`. To migrate settings to NuGet 4.0+, simply copy the config file to `%ProgramFiles(x86)%\NuGet\Config`. ## Changing config settings -A configuration file is a simple XML text file containing settings as described in the [NuGet Configuration Settings](../Schema/nuget-config-file.md) topic. +A `NuGet.Config` file is a simple XML text file containing key/value pairs as described in the [NuGet Configuration Settings](../Schema/nuget-config-file.md) topic. -The preferred method for changing the configuration is using the NuGet [config command](../tools/cli-ref-config.md) to set a key and value. +Settings are managed using the NuGet CLI[config command](../tools/cli-ref-config.md): +- By default, changes are made to the user-level config file. +- To change settings in a different file, use the `-configFile` switch. In this case files can use any filename. +- Keys are always case sensitive. +- Elevation is required to change settings in the computer-level settings file. -> [!Note] -> Keys are always case sensitive. +> [!Warning] +> Although you can modify the file in any text editor, NuGet (v3.4.3 and later) silently ignores the entire configuration file if it contains malformed XML (mismatched tags, invalid quotation marks, etc.). This is why it's preferable to manage setting using `nuget config`. + +### Setting a value -To **set a value** in any existing configuration file, use the `-configFile` switch as shown in the examples below. +Windows: ``` -nuget config -set repositoryPath=c:\packages -configfile c:\my.config +# Set repositoryPath in the user-level config file +nuget config -set repositoryPath=c:\packages + +# Set repositoryPath in project-level files +nuget config -set repositoryPath=c:\packages -configfile c:\my.Config nuget config -set repositoryPath=c:\packages -configfile .\myApp\NuGet.Config -nuget config -set repositoryPath=c:\packages -configfile %ProgramData%\NuGet\Config\VisualStudio\14.0\NuGet.Config -nuget config -set repositoryPath=c:\packages -configfile %ProgramData%\NuGet\NuGetDefaults.Config + +# Set repositoryPath in the computer-level file (requires elevation) +nuget config -set repositoryPath=c:\packages -configfile %ProgramFiles(x86)%\NuGet\NuGet.Config +``` + +Mac/Linux: + ``` +# Set repositoryPath in the user-level config file +nuget config -set repositoryPath=/home/packages -Without the `-configFile` switch, NuGet makes the change in the global config file. +# Set repositoryPath in project-level files +nuget config -set repositoryPath=/home/projects/packages -configfile /home/my.Config +nuget config -set repositoryPath=/home/packages -configfile home/myApp/NuGet.Config + +# Set repositoryPath in the computer-level file (requires elevation) +nuget config -set repositoryPath=/home/packages -configfile $XDG_DATA_HOME/NuGet.Config +``` > [!Note] -> In NuGet 3.4 and later you can use environment variables in any value, as in `repositoryPath=%PACKAGEHOME%`. +> In NuGet 3.4 and later you can use environment variables in any value, as in `repositoryPath=%PACKAGEHOME%` (Windows) and `repositoryPath=%PACKAGEHOME` (Mac/Linux). + -To **remove a value**, use the same commands but with an empty value, such as: +### Removing a value + +To remove a value, specify a key with an empty value. ``` -nuget config -set repositoryPath= -configfile c:\my.config +# Windows +nuget config -set repositoryPath= -configfile c:\my.Config + +# Mac/Linux +nuget config -set repositoryPath= -configfile /home/my.Config ``` -To create a new configuration file, copy the template below into that file and then use the `nuget config --configFile ` command to set values: +### Creating a new config file + +Copy the template below into the new file and then use `nuget config --configFile ` to set values: ```xml ``` +
        -> [!Warning] -> Although you can modify the file in any text editor, NuGet (v3.4.3 and later) silently ignores the entire configuration file if it contains malformed XML (mismatched tags, invalid quotation marks, etc.). ## How settings are applied -As described above in [Config file locations and uses](#config-file-locations-and-uses), any number of `NuGet.Config` files can exist on a machine, both in global locations and within a project's folder structure. This allows you to control settings in different places as they apply to a project, a group of projects, or all projects. - -> [!Note] -> This process is sometimes referred to as "chaining" of config file, and the ability to insert a specific setting anywhere along the chain may be referred to as a "NuGet extensibility point." +Multiple `NuGet.Config` files allow you to store settings in different locations so that they apply to a single project, a group of projects, or all projects. These settings collectively apply to any NuGet operation invoked from the command line or from Visual Studio, with settings that exist "closest" to a project or the current folder taking precedence. -When `nuget.exe` is run from the command line or run implicitly within Visual Studio, it loads settings from config files in the following order: +Specifically, NuGet loads settings from the different config files in the following order: -1. Files in `%ProgramData%\NuGet\Config` (NuGet 3.5 and earlier) or `%ProgramFiles(x86)%\NuGet\Config` (NuGet 4.0+) starting at this top folder and iterating down through the `{IDE}\{Version}\{SKU}\` subfolders if they exist. -1. The global config file, except in NuGet 3.4 and later if `-configFile` is used on the command line. +1. The [NuGetDefaults.Config file](#nuget-defaults-file), which contains settings related only to package sources. +1. The computer-level file. +1. The user-level file. 1. The file specified with `-configFile`. -1. Files found in the path to the current folder (where nuget.exe is invoked or the folder containing the Visual Studio solution), starting from the root and ending in the current folder. +1. Files found in every folder in the path from the drive root to the current folder (where nuget.exe is invoked or the folder containing the Visual Studio project). For example, if a command is invoked in `c:\A\B\C`, NuGet looks for and loads config files in `c:\`, then `c:\A`, then `c:\A\B`, and finally `c:\A\B\C`. -As settings are found in these files, they are processed as follows: +As NuGet finds settings in these files, they are processed as follows: -1. For single-item elements, the last value found for any given key is used. This means that those settings that are "closest" to where NuGet was invoked is applied. +1. For single-item elements, NuGet uses only the last value found for any given key. This means that settings that are "closest" to the current folder or project override any others found earlier. For example, the `DefaultPushSource` settings in `NuGetDefaults.Config` is overridden if it exists in any other config file. -1. For collection elements (such as ``), values from all configuration files are added to the collection. +1. For collection elements (such as ``), NuGet combines the values from all configuration files into a single collection. -1. When `` is present for a given node, previously defined configuration values for that node are ignored. - -See [the example](#settings-walkthrough) below for a walkthrough of this process. - -Note also that the [NuGetDefaults.Config file](#nuget-defaults-file) can affect a few specific settings related to package sources, but does not have an effect on any other NuGet behavior. - -### Priority ordering - -It can also help to think about the "priority order" in which settings are applied, which is essentially the reverse of the processing order. For example, if a project is located in `c:\A\B\C`, then NuGet applies settings in the following priority order, meaning settings found higher up in the order win: - - (For solution-level packages only in NuGet 2.x; ignored in NuGet 3.x) - c:\A\B\C\.nuget\NuGet.Config - - (For all version of NuGet) - c:\A\B\C\NuGet.Config - c:\A\B\NuGet.Config - c:\A\NuGet.Config - c:\NuGet.Config - - configFile, if specified - - (Ignored in NuGet 3.4 and later if -configFile is used) - %AppData%\NuGet\NuGet.Config - - (NuGet 2.6 to 3.5) - %ProgramData%\NuGet\Config\{IDE}\{Version}\{SKU}\NuGet.Config - %ProgramData%\NuGet\Config\{IDE}\{Version}\NuGet.Config - %ProgramData%\NuGet\Config\{IDE}\NuGet.Config - %ProgramData%\NuGet\Config\NuGet.Config - - (NuGet 4.0+) - %ProgramFiles(x86)%\NuGet\Config\{IDE}\{Version}\{SKU}\NuGet.Config - %ProgramFiles(x86)%\NuGet\Config\{IDE}\{Version}\NuGet.Config - %ProgramFiles(x86)%\NuGet\Config\{IDE}\NuGet.Config - %ProgramFiles(x86)%\NuGet\Config\NuGet.Config +1. When `` is present for a given node, NuGet ignores previously defined configuration values for that node. ### Settings walkthrough -Let's say you have the following folder structure: +Let's say you have the following folder structure on two separate drives: - c:\ - Users - d:\ + disk_drive_1 + User + disk_drive_2 Project1 Source Project2 Source tmp -You then have four `NuGet.Config` files in the following locations with the given content: +You then have four `NuGet.Config` files in the following locations with the given content. (The computer-level file is not included in this example, but would behave similarly to the user-level file.) -File A. Global configuration file, `%APPDATA%\NuGet\Nuget.Config`: +File A. User-level file, (`%APPDATA%\NuGet\NuGet.Config` on Windows, `$HOME/.nuget/` on Mac/Linux): ```xml - + ``` -File B. `d:\NuGet.Config`: +File B. `disk_drive_2/NuGet.Config`: ```xml - - + + - + ``` -File C. `d:\Project1\NuGet.Config`: +File C. `disk_drive_2/Project1/NuGet.Config`: ```xml - - + + - - + + ``` -File D. `d:\Project2\NuGet.Config`: +File D. `disk_drive_2/Project2/NuGet.Config`: ```xml - - + + ``` -Here's how NuGet loads and apply the settings, depending on where it's invoked: +NuGet then loads and applies settings as follows, depending on where it's invoked: -- **Invoked from c:\users**: Only the default repository listed in the global configuration file (A) is used, because that's the only file found on the `c:` drive. +- **Invoked from disk_drive_1/users**: Only the default repository listed in the user-level configuration file (A) is used, because that's the only file found on disk_drive_1. -- **Invoked from d:\ or d:\tmp**: File (A) is loaded first, then NuGet goes to the root of `d:` and finds file (B). NuGet also looks for a configuration file in `d:\tmp` but does not find one. As a result, the default repository on nuget.org is used, package restore is enabled, and packages get expanded in `d:\tmp`. +- **Invoked from disk_drive_2/ or disk_drive_`/tmp**: The user-level file (A) is loaded first, then NuGet goes to the root of disk_drive_2 and finds file (B). NuGet also looks for a configuration file in `/tmp` but does not find one. As a result, the default repository on nuget.org is used, package restore is enabled, and packages get expanded in `disk_drive_2/tmp`. -- **Invoked from d:\Project1 or d:\Project1\Source**: File (A) is loaded first, then NuGet loads file (B) from the `d:` root, followed by file (C). Settings in (C) override those in (B) and (A), so the `repositoryPath` where packages get installed is `d:\Project1\External\Packages` instead of `d:\tmp`. Also, because (C) clears ``, nuget.org is no longer available a source leaving only `https://MyPrivateRepo/ES/nuget`. +- **Invoked from disk_drive_2/Project1 or disk_drive_2/Project1/Source**: The user-level file (A) is loaded first, then NuGet loads file (B) from the root of disk_drive_2, followed by file (C). Settings in (C) override those in (B) and (A), so the `repositoryPath` where packages get installed is `disk_drive_2/Project1/External/Packages` instead of `disk_drive_2/tmp`. Also, because (C) clears ``, nuget.org is no longer available as a source leaving only `https://MyPrivateRepo/ES/nuget`. -- **Invoked from d:\Project2 or d:\Project2\Source**: File (A) is loaded first followed by file (B) and file (D). Because `packageSources` is not cleared, both `nuget.org` and `https://MyPrivateRepo/DQ/nuget` are available as sources. Packages get expanded in `d:\tmp` as specified in (B). +- **Invoked from disk_drive_2/Project2 or disk_drive_2/Project2/Source**: The user-level file (A) is loaded first followed by file (B) and file (D). Because `packageSources` is not cleared, both `nuget.org` and `https://MyPrivateRepo/DQ/nuget` are available as sources. Packages get expanded in `disk_drive_2/tmp` as specified in (B). ## NuGet defaults file -NuGet 3.3 and earlier is hardcoded to use nuget.org as the default package source, which cannot be changed. However, when using NuGet with internal package sources, it's often desirable to make sure that developers and build servers use packages from those sources instead of nuget.org. With NuGet 2.7 to 3.5, you can use the `%ProgramData%\NuGet\NuGetDefaults.Config` file (or `%ProgramFiles(x86)%\NuGet\NuGetDefaults.Config` with NuGet 4.0+) to control certain machine-wide defaults described below. This provides administrators a convenient way (using Group Policy, for example) to deploy consistent `NuGetDefaults.Config` files to developer and build machines, thus ensuring correct use of package sources. +The `NuGetDefaults.Config` file exists to specify package sources from which packages are installed and updated, and to control the default target for publishing packages with `nuget push`. Because administrators can conveniently (using Group Policy, for example) deploy consistent `NuGetDefaults.Config` files to developer and build machines, they can ensuring that everyone in the organization is using the correct package sources rather than nuget.org. -Note that NuGet 3.4 and later does not use a hardcoded default source. When nuget.exe is run for the first time, `NuGet.Config` is generated and nuget.org is added as the default package source in the config file. In the absence of the `NuGet.Config` file, the default package source is undefined. +> [!Important] +> The `NuGetDefaults.Config` file never causes a package source to be removed from a developer's NuGet configuration. That means if the developer has already used NuGet and therefore has the nuget.org package source registered, it won't be removed after the creation of a `NuGetDefaults.Config` file. +> +> Furthermore, neither `NuGetDefaults.Config` nor any other mechanism in NuGet can prevent access to package sources like nuget.org. If an organization wishes to block such access, it much use other means such as firewalls to do so. -The defaults file works with the following settings: +### NuGetDefaults.Config location -- `packageSources`: this collection has the same meaning as `packageSources` in regular config files and specifies the default sources in their preferred order. If this setting exists in `NuGetDefaults.Config`, then NuGet doesn't use nuget.org as a default package source. An administrator can thus make sure that everyone using this file is working with the same sources and avoids using nuget.org if desired. - -- `disabledPackageSources`: this collection also has the same meaning as in `NuGet.Config` files, where each affected source is listed by its name and a true/false value indicating whether it's disabled. This allows the source name and URL to remain in `packageSources` without it being turned on by default. Individual developers can then re-enable the source by setting the source's value to false in other `NuGet.Config` files without having to find the correct URL again. This is also useful to supply developers with a full list of internal source URLs for an organization while enabling only an individual team's source by default. +Windows: `%ProgramFiles(x86)%\NuGet\Config` (NuGet 2.7 to NuGet 3.x: `%PROGRAMDATA%\NuGet\NuGetDefaults.Config`) +Mac/Linux: `$XDG_DATA_HOME` (typically `~/.local/share`) -- `defaultPushSource`: when publishing a package, nuget.org is used as the destination or "push source" unless another is specified, which risks developers accidentally pushing internal packages to a public site. By changing the default push source, administrators can ensure that packages stay internal unless published to nuget.org explicitly. +### NuGetDefaults.Config settings -> [!Note] -> The `NuGetDefaults.Config` file never causes a package source to be removed from a developer's NuGet configuration. That means if the developer has already used NuGet and therefore has the nuget.org package source registered, it won't be removed after the creation of a `NuGetDefaults.Config` file. -> -> Furthermore, neither `NuGetDefaults.Config` or any other mechanism in NuGet can prevent access to package sources like nuget.org. If an organization wishes to block such access, it much use other means such as firewalls to do so. +- `packageSources`: this collection has the same meaning as `packageSources` in regular config files and specifies the default sources in their preferred order. If this setting exists in `NuGetDefaults.Config`, then NuGet doesn't use nuget.org as a default package source. An administrator can thus make sure that everyone using this file is working with the same sources and avoids using nuget.org if desired. + +- `disabledPackageSources`: this collection also has the same meaning as in `NuGet.Config` files, where each affected source is listed by its name and a true/false value indicating whether it's disabled. This allows the source name and URL to remain in `packageSources` without having it turned on by default. Individual developers can then re-enable the source by setting the source's value to false in other `NuGet.Config` files without having to find the correct URL again. This is also useful to supply developers with a full list of internal source URLs for an organization while enabling only an individual team's source by default. -## Example NuGetDefaults.Config and application +- `DefaultPushSource`: specifies the default target for `nuget push` operations, overriding the built-in default of nuget.org. Administrators can deploy this setting to avoid publishing internal packages to the public nuget.org by accident, as developers specifically need to use `nuget push -Source` to publish to nuget.org. -The following is an example `NuGetDefaults.Config` file containing each of its allowable sections: +### Example NuGetDefaults.Config and application ```xml - - + + - - - + + - - - - + + + diff --git a/docs/archive/config-priority-order.md b/docs/archive/config-priority-order.md new file mode 100644 index 000000000..ff7e66e55 --- /dev/null +++ b/docs/archive/config-priority-order.md @@ -0,0 +1,29 @@ +### Priority ordering + +It can also help to think about the "priority order" in which settings are applied, which is essentially the reverse of the processing order. For example, if a project is located in `c:\A\B\C`, then NuGet applies settings in the following priority order, meaning settings found higher up in the order win: + + (For solution-level packages only in NuGet 2.x; ignored in NuGet 3.x) + c:\A\B\C\.nuget\NuGet.Config + + (For all version of NuGet) + c:\A\B\C\NuGet.Config + c:\A\B\NuGet.Config + c:\A\NuGet.Config + c:\NuGet.Config + + configFile, if specified + + (Ignored in NuGet 3.4 and later if -configFile is used) + %AppData%\NuGet\NuGet.Config + + (NuGet 2.6 to 3.5) + %ProgramData%\NuGet\Config\{IDE}\{Version}\{SKU}\NuGet.Config + %ProgramData%\NuGet\Config\{IDE}\{Version}\NuGet.Config + %ProgramData%\NuGet\Config\{IDE}\NuGet.Config + %ProgramData%\NuGet\Config\NuGet.Config + + (NuGet 4.0+) + %ProgramFiles(x86)%\NuGet\Config\{IDE}\{Version}\{SKU}\NuGet.Config + %ProgramFiles(x86)%\NuGet\Config\{IDE}\{Version}\NuGet.Config + %ProgramFiles(x86)%\NuGet\Config\{IDE}\NuGet.Config + %ProgramFiles(x86)%\NuGet\Config\NuGet.Config \ No newline at end of file diff --git a/docs/archive/readme.md b/docs/archive/readme.md new file mode 100644 index 000000000..3b83194e7 --- /dev/null +++ b/docs/archive/readme.md @@ -0,0 +1 @@ +This folder a holding location for content being removed from the main documentation, typically material that applies to earlier versions that will likely be moved into a permanent archive location. \ No newline at end of file diff --git a/docs/docfx.json b/docs/docfx.json index beeaf3dd5..bed087a09 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -9,7 +9,8 @@ "exclude": [ "**/obj/**", "nuget/**", - "**/includes/**" + "**/includes/**", + "archive/**" ] } ], diff --git a/docs/index.md b/docs/index.md index b87d5775a..0dfd202e5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -44,12 +44,12 @@ ms.reviewer:
        - What is NuGet? Learn how NuGet allows .NET developers to create, share, and consume libraries and packages. + What is NuGet? Learn how NuGet, the package manager for .NET, allows developers to create, share, and consume libraries.

        What is NuGet?

        -

        Learn how NuGet allows .NET developers to create, share, and consume libraries and packages.

        +

        Learn how NuGet, the package manager for .NET, allows developers to create, share, and consume libraries.

        @@ -63,12 +63,12 @@ ms.reviewer:
        - Quickstarts: Experience NuGet with focused walkthroughs + Quickstarts: Experience NuGet with focused walkthroughs for creating a simple package and using a package.

        Quickstarts

        -

        Experience NuGet with focused walkthroughs.

        +

        Experience NuGet with focused walkthroughs for creating a simple package and using a package.

        @@ -82,12 +82,12 @@ ms.reviewer:
        - Guides: learn more about NuGet's tools and capabilities + Guides: experience NuGet's tools and capabilities with installation and package creation walkthroughs.

        Guides

        -

        Learn more about NuGet's tools and capabilities.

        +

        Experience NuGet's tools and capabilities with installation and package creation walkthroughs.

        From f02b01f80f7801c51aefbf217ad6afe87fc4eaf2 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 25 Oct 2017 11:55:05 -0700 Subject: [PATCH 0326/2943] Updating for Linux --- .../Configuring-NuGet-Behavior.md | 16 ++++---- docs/Schema/nuget-config-file.md | 38 ++++++++++--------- 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index 6ac47b94d..ff9460c3d 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -38,12 +38,12 @@ In this topic: | Scope | NuGet.Config file location | Decsription | | --- | --- | --- | | Project | Project folder or any folder up to the drive root | In a project folder, settings apply only to that project. In parent folders that contain multiple projects subfolders, settings apply to all projects in those subfolders. | -| User | Windows: `%APPDATA%\NuGet\NuGet.Config`
        Mac/Linux: `$HOME/.nuget/` | Settings apply to all operations, but are overridden by any project-level settings. When using CLI commands, you can specify a different config file using the `-configFile` switch to ignore any settings in the default user-level file. | +| User | Windows: `%APPDATA%\NuGet\NuGet.Config`
        Mac/Linux: `~/.nuget/NuGet.Config` | Settings apply to all operations, but are overridden by any project-level settings. When using CLI commands, you can specify a different config file using the `-configFile` switch to ignore any settings in the default user-level file. | | Computer | Windows: `%ProgramFiles(x86)%\NuGet\Config`
        Mac/Linux: `$XDG_DATA_HOME` (typically `~/.local/share`) | Settings apply to all operations on the computer, but are overriden by any user- or project-level settings. | Notes for earlier versions of NuGet: - NuGet 3.3 and earlier used a `.nuget` folder for solution-wide settings. This file not used in NuGet 3.4+. -- For NuGet 2.6 to 3.x, the computer-level config file on Windows was located in `%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}\]]]NuGet.Config`, where `{IDE}` can be `VisualStudio`, `{Version}` was the Visual Studio version such as `14.0`, and `{SKU}` is either `Community`, `Pro`, or `Enterprise`. To migrate settings to NuGet 4.0+, simply copy the config file to `%ProgramFiles(x86)%\NuGet\Config`. +- For NuGet 2.6 to 3.x, the computer-level config file on Windows was located in `%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}\]]]NuGet.Config`, where `{IDE}` can be `VisualStudio`, `{Version}` was the Visual Studio version such as `14.0`, and `{SKU}` is either `Community`, `Pro`, or `Enterprise`. To migrate settings to NuGet 4.0+, simply copy the config file to `%ProgramFiles(x86)%\NuGet\Config`. On Mac, this previous location was `/Library/Appilcation Support` and on Linux, `/etc/opt`. ## Changing config settings @@ -131,7 +131,7 @@ Specifically, NuGet loads settings from the different config files in the follow As NuGet finds settings in these files, they are processed as follows: -1. For single-item elements, NuGet uses only the last value found for any given key. This means that settings that are "closest" to the current folder or project override any others found earlier. For example, the `DefaultPushSource` settings in `NuGetDefaults.Config` is overridden if it exists in any other config file. +1. For single-item elements, NuGet uses only the last value found for any given key. This means that settings that are "closest" to the current folder or project override any others found earlier. For example, the `defaultPushSource` settings in `NuGetDefaults.Config` is overridden if it exists in any other config file. 1. For collection elements (such as ``), NuGet combines the values from all configuration files into a single collection. @@ -152,7 +152,7 @@ Let's say you have the following folder structure on two separate drives: You then have four `NuGet.Config` files in the following locations with the given content. (The computer-level file is not included in this example, but would behave similarly to the user-level file.) -File A. User-level file, (`%APPDATA%\NuGet\NuGet.Config` on Windows, `$HOME/.nuget/` on Mac/Linux): +File A. User-level file, (`%APPDATA%\NuGet\NuGet.Config` on Windows, `~/.nuget/NuGet.Config` on Mac/Linux): ```xml @@ -184,7 +184,7 @@ File C. `disk_drive_2/Project1/NuGet.Config`: - + @@ -235,17 +235,17 @@ Mac/Linux: `$XDG_DATA_HOME` (typically `~/.local/share`) - `disabledPackageSources`: this collection also has the same meaning as in `NuGet.Config` files, where each affected source is listed by its name and a true/false value indicating whether it's disabled. This allows the source name and URL to remain in `packageSources` without having it turned on by default. Individual developers can then re-enable the source by setting the source's value to false in other `NuGet.Config` files without having to find the correct URL again. This is also useful to supply developers with a full list of internal source URLs for an organization while enabling only an individual team's source by default. -- `DefaultPushSource`: specifies the default target for `nuget push` operations, overriding the built-in default of nuget.org. Administrators can deploy this setting to avoid publishing internal packages to the public nuget.org by accident, as developers specifically need to use `nuget push -Source` to publish to nuget.org. +- `defaultPushSource`: specifies the default target for `nuget push` operations, overriding the built-in default of nuget.org. Administrators can deploy this setting to avoid publishing internal packages to the public nuget.org by accident, as developers specifically need to use `nuget push -Source` to publish to nuget.org. ### Example NuGetDefaults.Config and application ```xml - + - + diff --git a/docs/Schema/nuget-config-file.md b/docs/Schema/nuget-config-file.md index 5be2c57a9..47f00ad0d 100644 --- a/docs/Schema/nuget-config-file.md +++ b/docs/Schema/nuget-config-file.md @@ -5,7 +5,7 @@ title: NuGet.Config File Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 8/25/2017 +ms.date: 10/25/2017 ms.topic: reference ms.prod: nuget #ms.service: @@ -16,15 +16,9 @@ ms.assetid: fbf31530-3bf4-478c-b26c-c2b24dd3406d description: NuGet.Config file reference including the config, bindingRedirects, packageRestore, solution, and packageSource sections. keywords: NuGet.Config file, NuGet configuration reference, NuGet configuration options -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- @@ -32,12 +26,7 @@ ms.reviewer: NuGet behavior is controlled by settings in different `NuGet.Config` files as described in [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md). -`NuGet.Config` is an XML file containing a top-level `` node, which then contains the section elements described in this topic. Each section then contains zero or more `` elements with `key` and `value` attributes. See the [examples config file](#example-config-file) at the end of this topic. Setting names are case-insensitive. - -With NuGet 3.4+ you can use environment variables in `NuGet.Config` values to apply machine-specific settings at run time. For example, if the `HOME` environment variable is set to `c:\users\username`, then the value of `%HOME%\NuGetRepository` in the configuration file resolves to `c:\users\username\NuGetRepository`. If an environment variable is not found, NuGet uses the literal value from the configuration file. - -> [!Note] -> With Visual Studio 2017+ and NuGet 4.0+, the machine-wide `NuGet.Config` is located at `%ProgramFiles(x86)%\NuGet\Config\` to improve security in multi-user scenarios. You need to manually migrate existing config files from `%ProgramData%` to `%ProgramFiles(x86)%`. NuGet 4.0+ also treats this as the location for the machine-wide configuration. Also, `NuGet.Config` in `%ProgramData%\NuGet\Config\` is not implicitly referenced or considered for hierarchical merging of `Nuget.Config`. +`NuGet.Config` is an XML file containing a top-level `` node, which then contains the section elements described in this topic. Each section contains zero or more `` elements with `key` and `value` attributes. See the [examples config file](#example-config-file). Setting names are case-insensitive, and values can use [environment variables](#using-environment-variables). In this topic: @@ -51,6 +40,7 @@ In this topic: - [apikeys](#apikeys) - [disabledPackageSources](#disabledpackagesources) - [activePackageSource](#activepackagesource) +- [Using environment variables](#using-environment-variables) - [Example config file](#example-config-file) @@ -67,8 +57,8 @@ Note: `dependencyVersion` and `repositoryPath` apply only to projects using `pac | Key | Value | | --- | --- | | 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 (projects not using `packages.config`) | The location of the default global packages folder. The default is `%userprofile%\.nuget\packages`. A relative path can be used in project-specific `Nuget.Config` files. | -| 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. | +| globalPackagesFolder (projects not using `packages.config`) | The location of the default global packages folder. The default is `%USERPROFILE%\.nuget\packages` (Windows) or `/home/.nuget/packages` (Mac/Linux). A relative path can be used in project-specific `Nuget.Config` files. | +| 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). | @@ -145,6 +135,7 @@ The `packageSources`, `packageSourceCredentials`, `apikeys`, `activePackageSourc The [`nuget sources` command](../tools/cli-ref-sources.md) is generally used to manage these settings, except for `apikeys` which is managed using the [`nuget setapikey` command](../tools/cli-ref-setapikey.md). + ### packageSources Lists all known package sources. @@ -266,6 +257,16 @@ Identifies to the currently active source or indicates the aggregate of all sour ``` +## Using environment variables + +You can use environment variables in `NuGet.Config` values (NuGet 3.4+) to apply settings at run time. + +For example, if the `HOME` environment variable on Windows is set to `c:\users\username`, then the value of `%HOME%\NuGetRepository` in the configuration file resolves to `c:\users\username\NuGetRepository`. + +Similarly, if `HOME` on Mac/Linux is set to `/home/myStuff`, then `$HOME/NuGetRepository` in the configuration file resolves to `/home/myStuff/NuGetRepository`. + +If an environment variable is not found, NuGet uses the literal value from the configuration file. + ## Example config file @@ -279,15 +280,18 @@ Below is an example `NuGet.Config` file that illustrates a number of settings: Used to specify the default location to expand packages. See: nuget.exe help install See: nuget.exe help update + + In this example, %PACKAGEHOME% is an environment variable. On Mac/Linux, + use $PACKAGE_HOME/External as the value. --> - + - + From ce4ab1d93d7a656729b91a7c5fbf8cf7e4aa22ab Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 25 Oct 2017 11:55:46 -0700 Subject: [PATCH 0327/2943] Small correction --- docs/Schema/nuget-config-file.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Schema/nuget-config-file.md b/docs/Schema/nuget-config-file.md index 47f00ad0d..045d58220 100644 --- a/docs/Schema/nuget-config-file.md +++ b/docs/Schema/nuget-config-file.md @@ -57,7 +57,7 @@ Note: `dependencyVersion` and `repositoryPath` apply only to projects using `pac | Key | Value | | --- | --- | | 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 (projects not using `packages.config`) | The location of the default global packages folder. The default is `%USERPROFILE%\.nuget\packages` (Windows) or `/home/.nuget/packages` (Mac/Linux). A relative path can be used in project-specific `Nuget.Config` files. | +| globalPackagesFolder (projects not using `packages.config`) | 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. | | 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). | From 34b6223d6fa594dea86dc78442a5481121f0020a Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 25 Oct 2017 13:39:47 -0700 Subject: [PATCH 0328/2943] Updates --- .../Configuring-NuGet-Behavior.md | 22 +++---- docs/Tools/Package-Manager-UI.md | 57 ++++++++++--------- 2 files changed, 41 insertions(+), 38 deletions(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index ff9460c3d..ae2246d50 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -38,12 +38,12 @@ In this topic: | Scope | NuGet.Config file location | Decsription | | --- | --- | --- | | Project | Project folder or any folder up to the drive root | In a project folder, settings apply only to that project. In parent folders that contain multiple projects subfolders, settings apply to all projects in those subfolders. | -| User | Windows: `%APPDATA%\NuGet\NuGet.Config`
        Mac/Linux: `~/.nuget/NuGet.Config` | Settings apply to all operations, but are overridden by any project-level settings. When using CLI commands, you can specify a different config file using the `-configFile` switch to ignore any settings in the default user-level file. | -| Computer | Windows: `%ProgramFiles(x86)%\NuGet\Config`
        Mac/Linux: `$XDG_DATA_HOME` (typically `~/.local/share`) | Settings apply to all operations on the computer, but are overriden by any user- or project-level settings. | +| User | Windows: *%APPDATA%\NuGet\NuGet.Config*
        Mac/Linux: *~/.nuget/NuGet.Config* | Settings apply to all operations, but are overridden by any project-level settings. When using CLI commands, you can specify a different config file using the `-configFile` switch to ignore any settings in the default user-level file. | +| Computer | Windows: *%ProgramFiles(x86)%\NuGet\Config*
        Mac/Linux: *$XDG_DATA_HOME* (typically *~/.local/share*) | Settings apply to all operations on the computer, but are overriden by any user- or project-level settings. | Notes for earlier versions of NuGet: - NuGet 3.3 and earlier used a `.nuget` folder for solution-wide settings. This file not used in NuGet 3.4+. -- For NuGet 2.6 to 3.x, the computer-level config file on Windows was located in `%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}\]]]NuGet.Config`, where `{IDE}` can be `VisualStudio`, `{Version}` was the Visual Studio version such as `14.0`, and `{SKU}` is either `Community`, `Pro`, or `Enterprise`. To migrate settings to NuGet 4.0+, simply copy the config file to `%ProgramFiles(x86)%\NuGet\Config`. On Mac, this previous location was `/Library/Appilcation Support` and on Linux, `/etc/opt`. +- For NuGet 2.6 to 3.x, the computer-level config file on Windows was located in *%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}\]]]NuGet.Config*, where *{IDE}* can be *VisualStudio*, *{Version}* was the Visual Studio version such as *14.0*, and *{SKU}* is either *Community*, *Pro*, or *Enterprise*. To migrate settings to NuGet 4.0+, simply copy the config file to *%ProgramFiles(x86)%\NuGet\Config*. On Mac, this previous location was */Library/Appilcation Support* and on Linux, */etc/opt*. ## Changing config settings @@ -152,7 +152,7 @@ Let's say you have the following folder structure on two separate drives: You then have four `NuGet.Config` files in the following locations with the given content. (The computer-level file is not included in this example, but would behave similarly to the user-level file.) -File A. User-level file, (`%APPDATA%\NuGet\NuGet.Config` on Windows, `~/.nuget/NuGet.Config` on Mac/Linux): +File A. User-level file, (*%APPDATA%\NuGet\NuGet.Config* on Windows, *~/.nuget/NuGet.Config* on Mac/Linux): ```xml @@ -163,7 +163,7 @@ File A. User-level file, (`%APPDATA%\NuGet\NuGet.Config` on Windows, `~/.nuget/N
        ``` -File B. `disk_drive_2/NuGet.Config`: +File B. *disk_drive_2/NuGet.Config*: ```xml @@ -177,7 +177,7 @@ File B. `disk_drive_2/NuGet.Config`:
        ``` -File C. `disk_drive_2/Project1/NuGet.Config`: +File C. *disk_drive_2/Project1/NuGet.Config*: ```xml @@ -193,7 +193,7 @@ File C. `disk_drive_2/Project1/NuGet.Config`:
        ``` -File D. `disk_drive_2/Project2/NuGet.Config`: +File D. *disk_drive_2/Project2/NuGet.Config*: ```xml @@ -211,9 +211,9 @@ NuGet then loads and applies settings as follows, depending on where it's invoke - **Invoked from disk_drive_2/ or disk_drive_`/tmp**: The user-level file (A) is loaded first, then NuGet goes to the root of disk_drive_2 and finds file (B). NuGet also looks for a configuration file in `/tmp` but does not find one. As a result, the default repository on nuget.org is used, package restore is enabled, and packages get expanded in `disk_drive_2/tmp`. -- **Invoked from disk_drive_2/Project1 or disk_drive_2/Project1/Source**: The user-level file (A) is loaded first, then NuGet loads file (B) from the root of disk_drive_2, followed by file (C). Settings in (C) override those in (B) and (A), so the `repositoryPath` where packages get installed is `disk_drive_2/Project1/External/Packages` instead of `disk_drive_2/tmp`. Also, because (C) clears ``, nuget.org is no longer available as a source leaving only `https://MyPrivateRepo/ES/nuget`. +- **Invoked from disk_drive_2/Project1 or disk_drive_2/Project1/Source**: The user-level file (A) is loaded first, then NuGet loads file (B) from the root of disk_drive_2, followed by file (C). Settings in (C) override those in (B) and (A), so the `repositoryPath` where packages get installed is *disk_drive_2/Project1/External/Packages* instead of *disk_drive_2/tmp*. Also, because (C) clears ``, nuget.org is no longer available as a source leaving only *https://MyPrivateRepo/ES/nuget*. -- **Invoked from disk_drive_2/Project2 or disk_drive_2/Project2/Source**: The user-level file (A) is loaded first followed by file (B) and file (D). Because `packageSources` is not cleared, both `nuget.org` and `https://MyPrivateRepo/DQ/nuget` are available as sources. Packages get expanded in `disk_drive_2/tmp` as specified in (B). +- **Invoked from disk_drive_2/Project2 or disk_drive_2/Project2/Source**: The user-level file (A) is loaded first followed by file (B) and file (D). Because `packageSources` is not cleared, both `nuget.org` and *https://MyPrivateRepo/DQ/nuget* are available as sources. Packages get expanded in *disk_drive_2/tmp* as specified in (B). ## NuGet defaults file @@ -226,8 +226,8 @@ The `NuGetDefaults.Config` file exists to specify package sources from which pac ### NuGetDefaults.Config location -Windows: `%ProgramFiles(x86)%\NuGet\Config` (NuGet 2.7 to NuGet 3.x: `%PROGRAMDATA%\NuGet\NuGetDefaults.Config`) -Mac/Linux: `$XDG_DATA_HOME` (typically `~/.local/share`) +Windows: *%ProgramFiles(x86)%\NuGet\Config* (NuGet 2.7 to NuGet 3.x: *%PROGRAMDATA%\NuGet\NuGetDefaults.Config*) +Mac/Linux: *$XDG_DATA_HOME* (typically *~/.local/share*) ### NuGetDefaults.Config settings diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index 8a0b335f0..408a842d0 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -5,7 +5,7 @@ title: NuGet Package Manager UI Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 07/24/2017 +ms.date: 10/25/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -20,15 +20,9 @@ f1_keywords: description: Instructions for using the NuGet Package Manager UI in Visual Studio for working with NuGet packages. keywords: NuGet UI, NuGet package manager UI, NuGet in Visual Studio, managing NuGet packages, NuGet user interface, package manager in Visual Studio -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- @@ -38,56 +32,65 @@ The NuGet Package Manager UI in Visual Studio on Windows allows you to easily in In this topic: -- [Finding and installing a package](#finding-and-installing-a-package) -- [Uninstalling a package](#uninstalling-a-package) -- [Updating a package](#updating-a-package) (includes the ["Implicitly referenced by an SDK" or "AutoReferenced" message](#implicit_reference)) +- [Finding and installing a package (Browse tab)](#finding-and-installing-a-package) +- [Uninstalling a package (Installed tab)](#uninstalling-a-package) +- [Updating a package (Installed and Updates tabs)](#updating-a-package) (includes the ["Implicitly referenced by an SDK" or "AutoReferenced" message](#implicit_reference)) - [Managing packages for the solution](#managing-packages-for-the-solution) (working with multiple projects at the same time). - [Package sources](#package-sources) - [Package manager Options control](#package-manager-options-control) > [!Note] -> If you're missing the NuGet Package Manager in Visual Studio 2015, check **Tools > Extensions and Updates...** and search for the *NuGet Package Manager* extension. If you're unable to use the extensions installer in Visual Studio, you can download the extension directly from [https://dist.nuget.org/index.html](https://dist.nuget.org/index.html). +> If you're missing the NuGet Package Manager in Visual Studio 2015, check **Tools > Extensions and Updates...** and search for the *NuGet Package Manager* extension. If you're unable to use the extensions installer in Visual Studio, download the extension directly from [https://dist.nuget.org/index.html](https://dist.nuget.org/index.html). > -> In Visual Studio 2017, NuGet and the NuGet Package Manager are automatically installed when you select any .NET-related workloads; you can also install it individually by checking the **Individual components > Code tools > NuGet package manager** option in the Visual Studio 2017 installer. +> In Visual Studio 2017, NuGet and the NuGet Package Manager are automatically installed with any .NET-related workloads. Install it individuall by selecting the **Individual components > Code tools > NuGet package manager** option in the Visual Studio 2017 installer. ## Finding and installing a package -1. In **Solution Explorer**, right-click either **References** or a project and select **Manage NuGet Packages...**. (In web site projects, right-click the **Bin** folder instead.) +1. In **Solution Explorer**, right-click either **References** or a project and select **Manage NuGet Packages...**. (In web site projects, right-click the **Bin** folder.) ![Manage NuGet Packages menu option](media/ManagePackagesUICommand.png) -2. The **Browse** tab displays available packages by popularity. Search for a specific package using the search box on the top right. Select a package to display the package information on the right and to enable the **Install** button along with a version-selection drop-down. +2. The **Browse** tab displays packages by popularity from the currently selected source (see [package sources](#package-sources)). Search for a specific package using the search box on the upper left. Select a package from the list to display its information, which also enables the **Install** button along with a version-selection drop-down. ![Manage NuGet Packages Dialog Browse tab](media/Search.png) - -3. Select the desired version from the drop-down and select **Install**. Visual Studio installs the package and its dependencies into the project. You may be asked to accept license terms in the process. When installation is complete, the added packages appear on the **Installed** tab. **Solution Explorer** also shows the added packages, which you can now use in your project. + +4. Select the desired version from the drop-down and select **Install**. Visual Studio installs the package and its dependencies into the project. You may be asked to accept license terms. When installation is complete, the added packages appear on the **Installed** tab. Packages are also listed in the **References** node of Solution Explorer, indicating that you can refer to them in the project with `using` statements. ![References in Solution Explorer](media/References.png) +> [!Tip] + > To include prerelease versions in the search, and to make prerelease versions available in the version drop-down, select the **Include prerelease** option. + + ## Uninstalling a package -1. In **Solution Explorer**, right-click either **References** or the desired project, and select **Manage NuGet Packages...**. (In web site projects, right-click the **Bin** folder instead.) +1. In **Solution Explorer**, right-click either **References** or the desired project, and select **Manage NuGet Packages...**. (In web site projects, right-click the **Bin** folder.) 2. Select the **Installed** tab. -3. Select the package to uninstall and select **Uninstall**. +3. Select the package to uninstall (using search to filter the list if necessary) and select **Uninstall**. ![Uninstalling a package](media/UninstallPackage.png) +4. Note that the **Include preprelease** and **Package source** controls have no effect when uninstalling packages. + ## Updating a package -1. In **Solution Explorer**, right-click either **References** or the desired project, and select **Manage NuGet Packages...**. (In web site projects, right-click the **Bin** folder instead.) -2. Select the **Updates** tab to see packages that have available updates. +1. In **Solution Explorer**, right-click either **References** or the desired project, and select **Manage NuGet Packages...**. (In web site projects, right-click the **Bin** folder.) +2. Select the **Updates** tab to see packages that have available updates from the selected package sources. Select **Include prerelease** to include prerelease packages in the update list. 3. Select the package to update, select the desired version from the drop-down on the right, and select **Update**. ![Updating a package](media/UpdatePackages.png) -4. For some packages, the **Update** button is disabled and the package a message appears saying that it's "Implicitly referenced by an SDK". (In some versions of Visual Studio the text may read only "AutoReferenced".) These conditions indicate that the package, such as Microsoft.NETCore.App, is part of a larger framework or SDK and should not be updated independently. (Such packages, of which Microsoft.NETStandard.Library is another example, are marked internally with `True`.) To update the package, you must update the SDK to which it belongs. +4. For some packages, the **Update** button is disabled and a message appears saying that it's "Implicitly referenced by an SDK" (or "AutoReferenced"). The message indicates that the package, such as Microsoft.NETCore.App or Microsoft.NETStandard.Library, is part of a larger framework or SDK and should not be updated independently. (Such packagee are internally marked with `True`.) To update the package, update the SDK to which it belongs. ![Example package marked as Implicitly references or AutoReferenced](media/PackageManagerUIAutoReferenced.png) +5. To update multiple packages to their newest versions, select them in the list and select the **Update** button above the list. +6. You can also update an individual package from the **Installed** tab. In this case, the details for the package include a version selector (subject to the **Include prerelease** option) and an **Update** button. ## Managing packages for the solution -*NuGet 1.4+* + +Managing packages for a solution is a convenient means to work with multiple projects simultaneously. 1. Select the **Tools > NuGet Package Manager > Manage NuGet Packages for Solution...** menu command, or right-click the solution and select **Manage NuGet Packages...**: @@ -99,7 +102,7 @@ In this topic: ## Package sources -To change the source Visual Studio uses to obtain packages, select one from the source selector: +To change the source from which Visual Studio obtains packages, select one from the source selector: ![Package source selector in the package manager UI](media/PackageSourceDropDown.png) @@ -120,11 +123,11 @@ To manage package sources: 7. Use the up and down arrow buttons to change the priority order of the package sources. Visual Studio searches these sources in the priority order when restoring packages for a project. For more information, see [Package restore](../Consume-Packages/Package-Restore.md). > [!Tip] -> If a package source reappears after deleting it, it may be listed in a computer-wide or global NuGet.Config files. See [Configuring NuGet behavior](../Consume-Packages/Configuring-NuGet-Behavior.md) for the location of these files, then edit those files manually to remove the source. Sources can also be managed through the [`nuget sources` command](../tools/nuget-exe-CLI-reference.md). +> If a package source reappears after deleting it, it may be listed in a computer-level or user-level `NuGet.Config` files. See [Configuring NuGet behavior](../Consume-Packages/Configuring-NuGet-Behavior.md) for the location of these files, then remove the source by editing the files manually or using the [nuget sources command](../tools/nuget-exe-CLI-reference.md). ## Package manager Options control -In the Package Manager UI there is a small, expandable **Options** control (shown here both collapsed and expanded): +When a package is selected, the Package Manager UI displays a small, expandable **Options** control below the version selector (shown here both collapsed and expanded): ![Package manager options](media/PackageManagerUIOptions.png) @@ -132,7 +135,7 @@ The following sections explain these options. ### Show preview window -When selected, a modal window displays which the dependencies of a chosen package. +When selected, a modal window displays which the dependencies of a chosen package before the package is installed: ![Example Preview Dialog](media/InstallPreviewDialog.png) @@ -160,6 +163,6 @@ When selected, a modal window displays which the dependencies of a chosen packag ### Uninstall Options -**Remove dependencies**: when selected, removes any dependent packages if they are not referenced elsewhere in the project. +**Remove dependencies**: when selected, removes any dependent packages if they're not referenced elsewhere in the project. **Force uninstall even if there are dependencies on it**: when selected, uninstalls a package even if it's still being referenced in the project. This is typically used in combination with **Remove dependencies** to remove a package and whatever dependencies it installed. Using this option may, however, lead to a broken references in the project. In such cases you may need to [reinstall those other packages](../consume-packages/reinstalling-and-updating-packages.md). From 3dcf8576efe35c97b032b56cf52e09cce4511a72 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 25 Oct 2017 14:00:40 -0700 Subject: [PATCH 0329/2943] Remove italics --- .../Configuring-NuGet-Behavior.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index ae2246d50..26df628fe 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -38,12 +38,12 @@ In this topic: | Scope | NuGet.Config file location | Decsription | | --- | --- | --- | | Project | Project folder or any folder up to the drive root | In a project folder, settings apply only to that project. In parent folders that contain multiple projects subfolders, settings apply to all projects in those subfolders. | -| User | Windows: *%APPDATA%\NuGet\NuGet.Config*
        Mac/Linux: *~/.nuget/NuGet.Config* | Settings apply to all operations, but are overridden by any project-level settings. When using CLI commands, you can specify a different config file using the `-configFile` switch to ignore any settings in the default user-level file. | -| Computer | Windows: *%ProgramFiles(x86)%\NuGet\Config*
        Mac/Linux: *$XDG_DATA_HOME* (typically *~/.local/share*) | Settings apply to all operations on the computer, but are overriden by any user- or project-level settings. | +| User | Windows: %APPDATA%\NuGet\NuGet.Config
        Mac/Linux: ~/.nuget/NuGet.Config | Settings apply to all operations, but are overridden by any project-level settings. When using CLI commands, you can specify a different config file using the `-configFile` switch to ignore any settings in the default user-level file. | +| Computer | Windows: %ProgramFiles(x86)%\NuGet\Config
        Mac/Linux: $XDG_DATA_HOME (typically ~/.local/share) | Settings apply to all operations on the computer, but are overriden by any user- or project-level settings. | Notes for earlier versions of NuGet: - NuGet 3.3 and earlier used a `.nuget` folder for solution-wide settings. This file not used in NuGet 3.4+. -- For NuGet 2.6 to 3.x, the computer-level config file on Windows was located in *%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}\]]]NuGet.Config*, where *{IDE}* can be *VisualStudio*, *{Version}* was the Visual Studio version such as *14.0*, and *{SKU}* is either *Community*, *Pro*, or *Enterprise*. To migrate settings to NuGet 4.0+, simply copy the config file to *%ProgramFiles(x86)%\NuGet\Config*. On Mac, this previous location was */Library/Appilcation Support* and on Linux, */etc/opt*. +- For NuGet 2.6 to 3.x, the computer-level config file on Windows was located in %ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}\]]]NuGet.Config, where *{IDE}* can be *VisualStudio*, *{Version}* was the Visual Studio version such as *14.0*, and *{SKU}* is either *Community*, *Pro*, or *Enterprise*. To migrate settings to NuGet 4.0+, simply copy the config file to %ProgramFiles(x86)%\NuGet\Config. On Mac, this previous location was /Library/Appilcation Support and on Linux, /etc/opt. ## Changing config settings @@ -152,7 +152,7 @@ Let's say you have the following folder structure on two separate drives: You then have four `NuGet.Config` files in the following locations with the given content. (The computer-level file is not included in this example, but would behave similarly to the user-level file.) -File A. User-level file, (*%APPDATA%\NuGet\NuGet.Config* on Windows, *~/.nuget/NuGet.Config* on Mac/Linux): +File A. User-level file, (%APPDATA%\NuGet\NuGet.Config on Windows, ~/.nuget/NuGet.Config on Mac/Linux): ```xml @@ -163,7 +163,7 @@ File A. User-level file, (*%APPDATA%\NuGet\NuGet.Config* on Windows, *~/.nuget/N
        ``` -File B. *disk_drive_2/NuGet.Config*: +File B. disk_drive_2/NuGet.Config: ```xml @@ -177,7 +177,7 @@ File B. *disk_drive_2/NuGet.Config*: ``` -File C. *disk_drive_2/Project1/NuGet.Config*: +File C. disk_drive_2/Project1/NuGet.Config: ```xml @@ -193,7 +193,7 @@ File C. *disk_drive_2/Project1/NuGet.Config*: ``` -File D. *disk_drive_2/Project2/NuGet.Config*: +File D. disk_drive_2/Project2/NuGet.Config: ```xml @@ -209,11 +209,11 @@ NuGet then loads and applies settings as follows, depending on where it's invoke - **Invoked from disk_drive_1/users**: Only the default repository listed in the user-level configuration file (A) is used, because that's the only file found on disk_drive_1. -- **Invoked from disk_drive_2/ or disk_drive_`/tmp**: The user-level file (A) is loaded first, then NuGet goes to the root of disk_drive_2 and finds file (B). NuGet also looks for a configuration file in `/tmp` but does not find one. As a result, the default repository on nuget.org is used, package restore is enabled, and packages get expanded in `disk_drive_2/tmp`. +- **Invoked from disk_drive_2/ or disk_drive_/tmp**: The user-level file (A) is loaded first, then NuGet goes to the root of disk_drive_2 and finds file (B). NuGet also looks for a configuration file in /tmp but does not find one. As a result, the default repository on nuget.org is used, package restore is enabled, and packages get expanded in disk_drive_2/tmp. -- **Invoked from disk_drive_2/Project1 or disk_drive_2/Project1/Source**: The user-level file (A) is loaded first, then NuGet loads file (B) from the root of disk_drive_2, followed by file (C). Settings in (C) override those in (B) and (A), so the `repositoryPath` where packages get installed is *disk_drive_2/Project1/External/Packages* instead of *disk_drive_2/tmp*. Also, because (C) clears ``, nuget.org is no longer available as a source leaving only *https://MyPrivateRepo/ES/nuget*. +- **Invoked from disk_drive_2/Project1 or disk_drive_2/Project1/Source**: The user-level file (A) is loaded first, then NuGet loads file (B) from the root of disk_drive_2, followed by file (C). Settings in (C) override those in (B) and (A), so the `repositoryPath` where packages get installed is disk_drive_2/Project1/External/Packages instead of *disk_drive_2/tmp*. Also, because (C) clears ``, nuget.org is no longer available as a source leaving only `https://MyPrivateRepo/ES/nuget`. -- **Invoked from disk_drive_2/Project2 or disk_drive_2/Project2/Source**: The user-level file (A) is loaded first followed by file (B) and file (D). Because `packageSources` is not cleared, both `nuget.org` and *https://MyPrivateRepo/DQ/nuget* are available as sources. Packages get expanded in *disk_drive_2/tmp* as specified in (B). +- **Invoked from disk_drive_2/Project2 or disk_drive_2/Project2/Source**: The user-level file (A) is loaded first followed by file (B) and file (D). Because `packageSources` is not cleared, both `nuget.org` and `https://MyPrivateRepo/DQ/nuget` are available as sources. Packages get expanded in disk_drive_2/tmp as specified in (B). ## NuGet defaults file @@ -226,8 +226,8 @@ The `NuGetDefaults.Config` file exists to specify package sources from which pac ### NuGetDefaults.Config location -Windows: *%ProgramFiles(x86)%\NuGet\Config* (NuGet 2.7 to NuGet 3.x: *%PROGRAMDATA%\NuGet\NuGetDefaults.Config*) -Mac/Linux: *$XDG_DATA_HOME* (typically *~/.local/share*) +Windows: %ProgramFiles(x86)%\NuGet\Config (NuGet 2.7 to NuGet 3.x: %PROGRAMDATA%\NuGet\NuGetDefaults.Config) +Mac/Linux: $XDG_DATA_HOME (typically ~/.local/share) ### NuGetDefaults.Config settings From b425d1dd26ad1767ab45a54ac52d8e1abe7849c4 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 25 Oct 2017 14:01:51 -0700 Subject: [PATCH 0330/2943] Typo --- docs/Consume-Packages/Configuring-NuGet-Behavior.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index 26df628fe..a991403fe 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -43,7 +43,7 @@ In this topic: Notes for earlier versions of NuGet: - NuGet 3.3 and earlier used a `.nuget` folder for solution-wide settings. This file not used in NuGet 3.4+. -- For NuGet 2.6 to 3.x, the computer-level config file on Windows was located in %ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}\]]]NuGet.Config, where *{IDE}* can be *VisualStudio*, *{Version}* was the Visual Studio version such as *14.0*, and *{SKU}* is either *Community*, *Pro*, or *Enterprise*. To migrate settings to NuGet 4.0+, simply copy the config file to %ProgramFiles(x86)%\NuGet\Config. On Mac, this previous location was /Library/Appilcation Support and on Linux, /etc/opt. +- For NuGet 2.6 to 3.x, the computer-level config file on Windows was located in %ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}\]]]NuGet.Config, where *{IDE}* can be *VisualStudio*, *{Version}* was the Visual Studio version such as *14.0*, and *{SKU}* is either *Community*, *Pro*, or *Enterprise*. To migrate settings to NuGet 4.0+, simply copy the config file to %ProgramFiles(x86)%\NuGet\Config. On Linus, this previous location was /etc/opt, and on Mac, /Library/Application Support. ## Changing config settings From a316cedd601ece8d10a2e830e3716d01d9b2fbee Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 25 Oct 2017 14:09:50 -0700 Subject: [PATCH 0331/2943] Tweaks --- docs/Consume-Packages/Configuring-NuGet-Behavior.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index a991403fe..420437dc1 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -43,7 +43,7 @@ In this topic: Notes for earlier versions of NuGet: - NuGet 3.3 and earlier used a `.nuget` folder for solution-wide settings. This file not used in NuGet 3.4+. -- For NuGet 2.6 to 3.x, the computer-level config file on Windows was located in %ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}\]]]NuGet.Config, where *{IDE}* can be *VisualStudio*, *{Version}* was the Visual Studio version such as *14.0*, and *{SKU}* is either *Community*, *Pro*, or *Enterprise*. To migrate settings to NuGet 4.0+, simply copy the config file to %ProgramFiles(x86)%\NuGet\Config. On Linus, this previous location was /etc/opt, and on Mac, /Library/Application Support. +- For NuGet 2.6 to 3.x, the computer-level config file on Windows was located in %ProgramData%\NuGet\Config[\\{IDE}[\\{Version}[\\{SKU}\]]]NuGet.Config, where *{IDE}* can be *VisualStudio*, *{Version}* was the Visual Studio version such as *14.0*, and *{SKU}* is either *Community*, *Pro*, or *Enterprise*. To migrate settings to NuGet 4.0+, simply copy the config file to %ProgramFiles(x86)%\NuGet\Config. On Linus, this previous location was /etc/opt, and on Mac, /Library/Application Support. ## Changing config settings @@ -127,11 +127,11 @@ Specifically, NuGet loads settings from the different config files in the follow 1. The computer-level file. 1. The user-level file. 1. The file specified with `-configFile`. -1. Files found in every folder in the path from the drive root to the current folder (where nuget.exe is invoked or the folder containing the Visual Studio project). For example, if a command is invoked in `c:\A\B\C`, NuGet looks for and loads config files in `c:\`, then `c:\A`, then `c:\A\B`, and finally `c:\A\B\C`. +1. Files found in every folder in the path from the drive root to the current folder (where nuget.exe is invoked or the folder containing the Visual Studio project). For example, if a command is invoked in c:\A\B\C, NuGet looks for and loads config files in c:\, then c:\A, then c:\A\B, and finally c:\A\B\C. -As NuGet finds settings in these files, they are processed as follows: +As NuGet finds settings in these files, they are applied as follows: -1. For single-item elements, NuGet uses only the last value found for any given key. This means that settings that are "closest" to the current folder or project override any others found earlier. For example, the `defaultPushSource` settings in `NuGetDefaults.Config` is overridden if it exists in any other config file. +1. For single-item elements, NuGet replaced any previously-found value for the same key. This means that settings that are "closest" to the current folder or project override any others found earlier. For example, the `defaultPushSource` setting in `NuGetDefaults.Config` is overridden if it exists in any other config file. 1. For collection elements (such as ``), NuGet combines the values from all configuration files into a single collection. From 03255d9130f16e6bab326a5e9dd4a43ba17e8156 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 25 Oct 2017 14:16:26 -0700 Subject: [PATCH 0332/2943] Errant \ --- docs/Consume-Packages/Configuring-NuGet-Behavior.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index 420437dc1..83babd1e7 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -43,7 +43,7 @@ In this topic: Notes for earlier versions of NuGet: - NuGet 3.3 and earlier used a `.nuget` folder for solution-wide settings. This file not used in NuGet 3.4+. -- For NuGet 2.6 to 3.x, the computer-level config file on Windows was located in %ProgramData%\NuGet\Config[\\{IDE}[\\{Version}[\\{SKU}\]]]NuGet.Config, where *{IDE}* can be *VisualStudio*, *{Version}* was the Visual Studio version such as *14.0*, and *{SKU}* is either *Community*, *Pro*, or *Enterprise*. To migrate settings to NuGet 4.0+, simply copy the config file to %ProgramFiles(x86)%\NuGet\Config. On Linus, this previous location was /etc/opt, and on Mac, /Library/Application Support. +- For NuGet 2.6 to 3.x, the computer-level config file on Windows was located in %ProgramData%\NuGet\Config[\\{IDE}[\\{Version}[\\{SKU}]]]\NuGet.Config, where *{IDE}* can be *VisualStudio*, *{Version}* was the Visual Studio version such as *14.0*, and *{SKU}* is either *Community*, *Pro*, or *Enterprise*. To migrate settings to NuGet 4.0+, simply copy the config file to %ProgramFiles(x86)%\NuGet\Config. On Linus, this previous location was /etc/opt, and on Mac, /Library/Application Support. ## Changing config settings From 32561a1acd70ee0327d11d72c5a4521da7e76d9d Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 25 Oct 2017 14:16:59 -0700 Subject: [PATCH 0333/2943] Typo --- docs/Consume-Packages/Configuring-NuGet-Behavior.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index 83babd1e7..bb179c126 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -49,7 +49,7 @@ Notes for earlier versions of NuGet: A `NuGet.Config` file is a simple XML text file containing key/value pairs as described in the [NuGet Configuration Settings](../Schema/nuget-config-file.md) topic. -Settings are managed using the NuGet CLI[config command](../tools/cli-ref-config.md): +Settings are managed using the NuGet CLI [config command](../tools/cli-ref-config.md): - By default, changes are made to the user-level config file. - To change settings in a different file, use the `-configFile` switch. In this case files can use any filename. - Keys are always case sensitive. From 10078601c4d033a8dc69ad30c580962a7d45e2b4 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 25 Oct 2017 14:21:16 -0700 Subject: [PATCH 0334/2943] Update cli-ref-sources.md --- docs/Tools/cli-ref-sources.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/Tools/cli-ref-sources.md b/docs/Tools/cli-ref-sources.md index b2e0bd2cd..40f73f3e8 100644 --- a/docs/Tools/cli-ref-sources.md +++ b/docs/Tools/cli-ref-sources.md @@ -63,4 +63,6 @@ nuget sources Add -Name "MyServer" -Source \\myserver\packages nuget sources Disable -Name "MyServer" nuget source Enable -Source "nuget.org" + +nuget sources add -name foo.bar -source C:\NuGet\local -username foo -password bar -StorePasswordInClearText -configfile %AppData%\NuGet\my.config ``` From 726e5374c5e3b5c69b8fc4427da40c913af105e6 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 26 Oct 2017 12:07:21 -0700 Subject: [PATCH 0335/2943] Add package description, and rename Windows > Microsoft Store --- docs/Schema/Target-Frameworks.md | 9 +-------- docs/What-is-NuGet.md | 16 +++++++--------- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/docs/Schema/Target-Frameworks.md b/docs/Schema/Target-Frameworks.md index 4fecd29f7..e6f52dd92 100644 --- a/docs/Schema/Target-Frameworks.md +++ b/docs/Schema/Target-Frameworks.md @@ -8,7 +8,6 @@ manager: ghogen ms.date: 8/23/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 4343a48e-f6df-4a44-9d66-4616c3caacf5 @@ -16,16 +15,10 @@ ms.assetid: 4343a48e-f6df-4a44-9d66-4616c3caacf5 description: NuGet target framework references identify and isolate framework-dependent components of a package. keywords: NuGet package targeting, .NET framework targets, .NET framework versions -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - anangaur - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- @@ -128,7 +121,7 @@ Framework | Can use uap (Universal Windows Platform) | win81 | | wpa81 | | netcore50 -win (Windows Store) | winrt +win (Microsoft Store) | winrt | | winrt45 ## NET Platform Standard diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index 983eb347e..ca281ee24 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -5,10 +5,9 @@ title: What is NuGet and what does it do? | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/27/2017 +ms.date: 10/26/2017 ms.topic: hero-article ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: c3faf278-4cbf-4733-96f6-9ee9f7203af9 @@ -16,24 +15,23 @@ ms.assetid: c3faf278-4cbf-4733-96f6-9ee9f7203af9 description: A comprehensive introduction to what NuGet is and does keywords: NuGet package manager, consumption, package creation, package hosting -#ROBOTS: -#audience: -#ms.devlang: + ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- # An introduction to NuGet -An essential tool for any modern development platform is a mechanism through which developers can create, share, and consume useful libraries and packages. For .NET, that mechanism is **NuGet**, which defines how packages for .NET are created, hosted, and consumed, and provides the tools for each of those roles. +An essential tool for any modern development platform is a mechanism through which developers can create, share, and consume useful libraries of code. Such libraries are typically referred to as "packages" because they can contain compiled code (as DLLs) along with other useful content for whatever projects consume them. + +For .NET, the mechanism for sharing code is **NuGet**, which defines how packages for .NET are created, hosted, and consumed, and provides the tools for each of those roles. ## The flow of packages between creators, hosts, and consumers +Put simply, a library developer create a package (which is essentially a ZIP file) and makes it available to others through a host. Consumers then download that package and expand its contents into their projects. Consumers can then utilize that library in their own code. + In its role as host, NuGet itself maintains the central repository of over 60,000 unique, publicly-available packages at [nuget.org](https://www.nuget.org). These packages are employed by millions of .NET developers every day. NuGet also enables you to host packages privately in the cloud, on a private network, or even on just your local file system. By doing so, those packages are available to only those developers within a particular organization or customer group. The options are explained on [Hosting your own NuGet feeds](Hosting-Packages/Overview.md). Whatever its nature, a host serves as a point of connection between package *creators* and package *consumers*. Creators build useful NuGet packages and publish them to a host. Consumers then search for useful and compatible packages on accessible hosts, downloading and including those packages in their projects. Once installed in a project, the packages' APIs are available to the rest of the project code. From 885ad4ee7afcd63adb2bc801f8d834076e42f9b1 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 26 Oct 2017 12:14:52 -0700 Subject: [PATCH 0336/2943] Revising package definition --- docs/What-is-NuGet.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index ca281ee24..2a4ecf914 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -24,13 +24,13 @@ ms.reviewer: # An introduction to NuGet -An essential tool for any modern development platform is a mechanism through which developers can create, share, and consume useful libraries of code. Such libraries are typically referred to as "packages" because they can contain compiled code (as DLLs) along with other useful content for whatever projects consume them. +An essential tool for any modern development platform is a mechanism through which developers can create, share, and consume useful libraries of code. Such libraries are typically referred to as "packages" because they can contain compiled code (as DLLs) along with other content that might be needed in the projects consume those libraries. For .NET, the mechanism for sharing code is **NuGet**, which defines how packages for .NET are created, hosted, and consumed, and provides the tools for each of those roles. -## The flow of packages between creators, hosts, and consumers +Put simply, a NuGet package is a single ZIP file with the `.nupkg` extension that contains compiled code (DLLs), other files related to that code, and a descriptive manifest that includes information like the package's version number. Library developers create package files and publish them to a host. Package consumers receive those packages, add them to their projects, and then call that library's functionality in their project code. NuGet itself then handles all of the intermediate details. -Put simply, a library developer create a package (which is essentially a ZIP file) and makes it available to others through a host. Consumers then download that package and expand its contents into their projects. Consumers can then utilize that library in their own code. +## The flow of packages between creators, hosts, and consumers In its role as host, NuGet itself maintains the central repository of over 60,000 unique, publicly-available packages at [nuget.org](https://www.nuget.org). These packages are employed by millions of .NET developers every day. NuGet also enables you to host packages privately in the cloud, on a private network, or even on just your local file system. By doing so, those packages are available to only those developers within a particular organization or customer group. The options are explained on [Hosting your own NuGet feeds](Hosting-Packages/Overview.md). From c1fc1116afe2574816e0f4ae555bcfab880c656b Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Fri, 27 Oct 2017 11:05:23 -0700 Subject: [PATCH 0337/2943] Update Package-Restore.md (#536) * Update Package-Restore.md * Update Known-Issues.md * Update Package-Manager-UI.md * Update Package-Restore.md * Update TOC.md --- docs/Consume-Packages/Package-Restore.md | 120 ++--------------------- docs/Release-Notes/Known-Issues.md | 10 -- docs/TOC.md | 4 +- docs/Tools/Package-Manager-UI.md | 11 +-- 4 files changed, 13 insertions(+), 132 deletions(-) diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/Consume-Packages/Package-Restore.md index d22666316..c60fe2c2c 100644 --- a/docs/Consume-Packages/Package-Restore.md +++ b/docs/Consume-Packages/Package-Restore.md @@ -21,7 +21,7 @@ ms.reviewer: --- -# Installing and reinstalling packages with package restore +# Package Restore To promote a cleaner development environment and to reduce repository size, NuGet **Package Restore** installs all referenced packages before a project is built. This widely-used feature ensures that all dependencies are available in a project without requiring those packages to be stored in source control (see [Packages and Source Control](../consume-packages/packages-and-source-control.md) on how to configure your repository to exclude package binaries). @@ -69,7 +69,6 @@ From the command line or [Package Manager Console](../tools/Package-Manager-Cons | `nuget restore` | All versions of NuGet and all reference types. See [Command-line restore](#command-line-restore) below. | | `dotnet restore` | Same as `nuget restore` for .NET Core projects. See [dotnet restore](https://docs.microsoft.com/dotnet/articles/core/tools/dotnet-restore). | | `msbuild /t:restore` | Nuget 4.x+ and MSBuild 15.1+ with [package references in project files](../Consume-Packages/Package-References-in-Project-Files.md) only. `nuget restore` and `dotnet restore` both use this command for applicable projects. See [NuGet pack and restore as MSBuild targets- restore target](../schema/msbuild-targets.md#restore-target).| -| `Update-Package -reinstall -ProjectName ` | Restores a project's packages from the Package Manager Console. See [Update-Package reference](../tools/ps-ref-update-package.md). | Visual Studio itself also restores packages at different times: @@ -80,17 +79,13 @@ Visual Studio itself also restores packages at different times: | Solution restore | When user right-clicks a solution and selects **Restore NuGet Packages**. | | Restore on project change | *(NuGet 4.x only)* When a .NET Core SDK-based project is used, including when project state changes. | -See [Automatic restore in Visual Studio](#automatic-restore-in-visual-studio) below for more details. - ## Enabling and disabling package restore -Automatic restore and command-line restore is enabled by default with NuGet 2.7+. MSBuild-integrated restore and command-line restore is **not** enabled by default for NuGet 2.6 and earlier and must be enabled manually. - Package restore is primarily enabled through **Tools > Options > NuGet Package Manager** in Visual Studio: ![Controlling package restore behaviors through NuGet Package Manager options](media/Restore-01-AutoRestoreOptions.png) -- **Allow NuGet to download missing packages**: controls all forms of package restore by changing the `packageRestore/enabled` setting in the `%AppData%\NuGet\NuGet.Config` file as shown below. (For NuGet 2.6 or earlier, this setting can also be used in a project-specific `.nuget\Nuget.Config` file.) +- **Allow NuGet to download missing packages**: controls all forms of package restore by changing the `packageRestore/enabled` setting in the `%AppData%\NuGet\NuGet.Config` file as shown below. ```xml @@ -122,8 +117,6 @@ Package restore is primarily enabled through **Tools > Options > NuGet Package M For reference, see the [NuGet config file - packageRestore section](../Schema/nuget-config-file.md#packagerestore-section). -MSBuild-integrated restore with NuGet 2.6 and earlier is typically enabled by right-clicking a solution in Visual Studio and selecting **Enable NuGet Package Restore**. This sets up the necessary files and folders for this option to work, as explained under [MSBuild-integrated restore in Visual Studio](#msbuild-integrated-restore). - In some cases, a developer or company might want to enable or disable package restore on a machine by default for all users. This can be done by adding the same settings above to the global NuGet configuration file located in `%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}]]]`. Individual users can then selectively enable restore as needed on a project level. See [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md#how-settings-are-applied) for exact details on how NuGet prioritizes multiple config files. ## Constraining package versions with restore @@ -152,8 +145,6 @@ In all cases, use the notation described in [Package versioning](../reference/pa ## Command-line restore -For NuGet 2.6 and earlier, you use the [Install](../tools/cli-ref-install.md) command and point to the `packages.config` file that lists all the dependencies. - For NuGet 2.7 and above, use the [Restore](../tools/cli-ref-restore.md) command to restore all packages in a solution (whether it uses `packages.config`, `project.json`, or package references in project files). For a given project folder such as `c:\proj\app`, the common variations below each restore the packages: ``` @@ -164,113 +155,20 @@ c:\proj\> nuget restore app For NuGet 4.0+ and MSBuild 15.1+, you can also use `MSBuild /t:restore` as described on [NuGet pack and restore as MSBuild targets](../schema/msbuild-targets.md). -In the [Package Manager Console](../tools/Package-Manager-Console.md) you can use the [`Update-Package`](../tools/ps-ref-update-package.md) command: - -```ps -# Restore packages for a project -Update-Package -reinstall -ProjectName +## Build-time restore in Visual Studio -# Restore packages for all projects in the solution -Update-Package -reinstall -``` - -Note that the `-reinstall` argument is what specifically instructs `Update-Package` to restore packages to their currently installed versions rather than updating any of those versions. - -## Automatic restore in Visual Studio - -With NuGet 2.7 and later, Visual Studio automatically restores missing packages by default at the beginning of a build. This behavior can be changed by clearing **Tools > Options > [NuGet] Package Manager > General > Automatically check for missing packages during build in Visual Studio**. - -Automatic restore is also ignored if a `.nuget\NuGet.targets` file exists in a project, indicating that the project is configured for MSBuild-integrated restore. This can cause some errors as described below in [Automatic restore errors](#automatic-restore-errors). To update a project, see [Migrating to automatic restore](#migrating-to-automatic-restore). +Visual Studio automatically restores missing packages by default at the beginning of a build. This behavior can be changed by clearing **Tools > Options > NuGet Package Manager > General > Automatically check for missing packages during build in Visual Studio**. When enabled, automatic restore works as follows: -1. A `.nuget` folder is created in the solution containing a `Nuget.Config` file that contains only a single setting for `disableSourceControlIntegration` (as described in [Packages and source control](../consume-packages/packages-and-source-control.md) for Team Foundation Version Control). 1. When a build begins, Visual Studio instructs NuGet to restore packages. 1. NuGet recursively looks for all `packages.config` files in the solution, looks for `project.json`, or looks in the project file. 1. For each packages listed in the reference files, NuGet checks if it already exists in the solution (the `packages` folder, `project.lock.json`, or `project.assets.json` depending on whether the project is using `packages.config`, `project.json`, or package references in project files). -1. If the package is not found, NuGet attempts to retrieve the package from its cache first (see [Managing the NuGet cache](../consume-packages/managing-the-nuget-cache.md). If the package is not in the cache, NuGet attempts to download the package from the enabled sources as listed in **Tools > Options > [NuGet] Package Manager > Package Sources**, in the order that the sources appear. In this case, NuGet does not indicate a failure to find the package until all the sources have been checked, at which time it reports the failure only for the last source in the list. By implication such an error also means that the package wasn't present on any of the other sources either, even though errors were not shown for those sources individually. +1. If the package is not found, NuGet attempts to retrieve the package from its cache first (see [Managing the NuGet cache](../consume-packages/managing-the-nuget-cache.md). If the package is not in the cache, NuGet attempts to download the package from the enabled sources as listed in **Tools > Options > NuGet Package Manager > Package Sources**, in the order that the sources appear. In this case, NuGet does not indicate a failure to find the package until all the sources have been checked, at which time it reports the failure only for the last source in the list. By implication such an error also means that the package wasn't present on any of the other sources either, even though errors were not shown for those sources individually. 1. If the download is successful, NuGet caches the package and installs it into the solution (again, into either the `packages` folder, `project.lock.json`, or `project.assets.json`); otherwise NuGet fails and the build fails. During this process, you see a progress dialog with the option to cancel package restore. -### Automatic restore errors - -If you're using NuGet 2.7 or later and have a solution that is still configured for MSBuild-integrated restore, you may have an older version of `nuget.exe` in the solution's `.nuget` folder. This will cause builds to fail with an error stating that you have not given consent to restore packages. - -To correct these errors, do one of the following: - -1. [Migrate the project to automatic restore](#migrating-to-automatic-restore). -1. Update `nuget.exe` in the `.nuget` folder as follows - - ``` - cd .nuget - nuget update -self - ``` - -1. Reset consent in your `%AppData%\NuGet\NuGet.Config` file by going to **Tools > Options > NuGet Package Manager > General** in Visual Studio, clear and re-select both **Package Restore** options, and click OK. This re-saves `NuGet.Config` with the proper consent settings for NuGet 2.6 and earlier. - - -## MSBuild-integrated restore - -> [!Important] -> Although MS-Build integrated restore still works with NuGet 2.7 and later, we recommended that you [migrate to automatic restore](#migrating-to-automatic-restore) instead because it's simpler and more robust. - -As noted before, MSBuild-integrated restore with NuGet 2.6 and earlier is typically enabled by right-clicking a solution in Visual Studio and selecting **Enable NuGet Package Restore**. This has the following effects: - -- NuGet creates a `.nuget` folder in the solution containing `nuget.exe`, `Nuget.Config`, and `NuGet.targets` files. -- NuGet updates all projects in the solution to include a `true` flag and to import `NuGet.targets`. These cause MSBuild to invoke `nuget.exe` to restore packages before a build provided that the **Tools > Options > NuGet Package Manager > General > Allow NuGet to download missing packages** option is checked. - -Again, this option is **not** checked by default for NuGet 2.6 and earlier and must be manually set for package restore to work. For a custom build `.proj`, a pre build `` action must also be added manually to restore packages. - -With MSBuild-integrated restore, packages that are downloaded by Visual Studio will be automatically added to Team Foundation Version Control by default when the project is connected to a repository. To change this behavior, see [Omitting packages with Team Foundation Version Control](../consume-packages/packages-and-source-control.md#omitting-packages-with-team-foundation-version-control). - - -### Migrating to automatic restore - -Although the MSBuild-integrated restore approach works with NuGet 2.7 and later, it has several drawbacks: - -- It requires additional files within the solution folder. -- It requires importing a `.targets` file into all projects in the solution, which can introduce issues when projects are shared among multiple solutions. -- Projects will fail to load if `NuGet.targets` cannot be found. -- Projects won't build successfully if any of the restored NuGet packages extend MSBuild through a targets/props file import. -- Packages are automatically added to Team Foundation Version Control, when in use, unless specifically disabled. -- It is not compatible with ASP.NET web site projects created in Visual Studio. - -To avoid all these issues, it's recommended to migrate any project using MSBuild-integrated restore to use the automatic restore capabilities of NuGet 2.7 and above. - -The process is as follows: - -1. Close Visual Studio to avoid file potential file locks and conflicts. -1. If using Team Foundation Server (TFS): - 1. Remove `nuget.exe` and `NuGet.targets` from the solution's `.nuget` folder and remove those files from the solution workspace. - 1. Retain `Nuget.Config` with the `disableSourceControlIntegration` setting as explained in [Omitting packages with Team Foundation Version Control](../consume-packages/packages-and-source-control.md#omitting-packages-with-team-foundation-version-control). -1. If not using TFS: - 1. Remove the `.nuget` folder from the solution and the solution workspace. -1. Edit each project file in the solution, remove the `` element, and remove any references to the `NuGet.targets` file. Those settings generally appear as follows: - - ```xml - true - ... - - ... - - - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - ``` - -> [!Tip] -> Owen Johnson has created a [PowerShell migration script](https://github.com/owen2/AutomaticPackageRestoreMigrationScript) that can work in many cases, but is used at your own risk. Be sure to commit your project to source control or make a backup before using it.
    - -To test the migration, do the following: - -1. Remove the `packages` folder from the solution. -1. Open the solution in Visual Studio and start a build. -1. Automatic restore should download and install each dependency package, without adding them to source control. - - ## Package Restore with Team Foundation Build Package restore is commonly used when building projects on build servers, as with Team Foundation Server (TFS) and Visual Studio Team Services (as well as other build systems, which are not covered here). @@ -289,10 +187,4 @@ If you're using a previous version of build templates (such as in a project that For earlier version of TFS, you can simply include a build step to invoke [command-line restore](#command-line-restore) as described earlier. -For more details see then [Walkthrough of Package Restore with Team Foundation Build](../consume-packages/team-foundation-build.md). - -### Command-line restore wrapped in MSBuild - -With existing build servers and MSBuild-based projects, you can also choose to wrap the command line in a regular MSBuild project. This minimizes changes on the server and also provides built-in support for aggregated logging and error reporting. This differs from the usual MSBuild-integrated restore as it runs before any other build process happens, instead of as part of those other processes. - -Note that for NuGet 4.0+ and MSBuild 15.1+, you can also use `MSBuild /t:restore` as described on [NuGet pack and restore as MSBuild targets](../schema/msbuild-targets.md). +For more details see then [Walkthrough of Package Restore with Team Foundation Build](../consume-packages/team-foundation-build.md). diff --git a/docs/Release-Notes/Known-Issues.md b/docs/Release-Notes/Known-Issues.md index 75740199c..0a6e53166 100644 --- a/docs/Release-Notes/Known-Issues.md +++ b/docs/Release-Notes/Known-Issues.md @@ -92,16 +92,6 @@ If the command fails, check to see if the file exists in that location. For more information about this error, see this [work item](https://nuget.codeplex.com/workitem/3609 "Work item 3609"). -## Package Restore Consent Errors with NuGet 2.7 - -If you are using NuGet 2.7+, but you are working in a solution that had enabled package restore through the MSBuild-integrated approach, it's possible that package restore will still fail due to a lack of package restore consent. This happens when the version of `nuget.exe` in your solution's `.nuget` folder is version 2.6 or earlier, where package restore consent was still OFF by default. - -If you have upgraded to NuGet 2.7+ but your solution fails to build stating that you haven't given consent, you have a few options for proceeding: - -1. **Force save your NuGet settings with consent given.** To do this, open Visual Studio's options and under Package Manager, choose General. Uncheck and then re-check the boxes for consent and click OK. This forces your `%AppData%\NuGet\NuGet.Config` file to be saved with consent explicitly given, allowing NuGet 2.6 and earlier to see that you've given consent. -1. **Update the version of `nuget.exe` in your `.nuget` folder.** To do this, run `nuget.exe update -self` from your `.nuget` folder, which will download the latest version of `nuget.exe` and replace the version in the `.nuget` folder. The latest version of `nuget.exe` will infer consent to be ON even when not explicitly saved in the `NuGet.Config` file. -1. **Migrate to Automatic Package Restore.** For this approach, you would migrate from the MSBuild-integrated package restore to the Automatic Package Restore approach, following the [documented walkthrough](../consume-packages/package-restore.md#migrating-to-automatic-restore). - ## Build failure after package update in VS 2012 The problem: You are using VS 2012 RTM. When updating NuGet packages, you get this message: "One or more packages could not be completed uninstalled." and you are prompted to restart diff --git a/docs/TOC.md b/docs/TOC.md index ce58b7131..03016d812 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -24,10 +24,10 @@ # Consume Packages ## [Overview and Workflow](Consume-Packages/Overview-and-Workflow.md) ## [Finding and Choosing Packages](Consume-Packages/Finding-and-Choosing-Packages.md) -## [Reinstalling and Updating Packages](Consume-Packages/Reinstalling-and-Updating-Packages.md) -## [Packages and Source Control](Consume-Packages/Packages-and-Source-Control.md) ## [Package Restore](Consume-Packages/Package-Restore.md) ### [Troubleshooting](Consume-Packages/Package-restore-troubleshooting.md) +## [Reinstalling and Updating Packages](Consume-Packages/Reinstalling-and-Updating-Packages.md) +## [Packages and Source Control](Consume-Packages/Packages-and-Source-Control.md) ## [Managing the NuGet Cache](Consume-Packages/Managing-the-NuGet-Cache.md) ## [Configuring NuGet Behavior](Consume-Packages/Configuring-NuGet-Behavior.md) ## [Dependency Resolution](Consume-Packages/Dependency-Resolution.md) diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index 8a0b335f0..65a4683e4 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -53,11 +53,11 @@ In this topic: ## Finding and installing a package -1. In **Solution Explorer**, right-click either **References** or a project and select **Manage NuGet Packages...**. (In web site projects, right-click the **Bin** folder instead.) +1. In **Solution Explorer**, right-click either **References** or a project and select **Manage NuGet Packages...**. ![Manage NuGet Packages menu option](media/ManagePackagesUICommand.png) -2. The **Browse** tab displays available packages by popularity. Search for a specific package using the search box on the top right. Select a package to display the package information on the right and to enable the **Install** button along with a version-selection drop-down. +2. The **Browse** tab displays available packages by popularity. Search for a specific package using the search box on the top left. Select a package to display the package information on the right and to enable the **Install** button along with a version-selection drop-down. ![Manage NuGet Packages Dialog Browse tab](media/Search.png) @@ -67,7 +67,7 @@ In this topic: ## Uninstalling a package -1. In **Solution Explorer**, right-click either **References** or the desired project, and select **Manage NuGet Packages...**. (In web site projects, right-click the **Bin** folder instead.) +1. In **Solution Explorer**, right-click either **References** or the desired project, and select **Manage NuGet Packages...**. 2. Select the **Installed** tab. 3. Select the package to uninstall and select **Uninstall**. @@ -75,19 +75,18 @@ In this topic: ## Updating a package -1. In **Solution Explorer**, right-click either **References** or the desired project, and select **Manage NuGet Packages...**. (In web site projects, right-click the **Bin** folder instead.) +1. In **Solution Explorer**, right-click either **References** or the desired project, and select **Manage NuGet Packages...**. 2. Select the **Updates** tab to see packages that have available updates. 3. Select the package to update, select the desired version from the drop-down on the right, and select **Update**. ![Updating a package](media/UpdatePackages.png) -4. For some packages, the **Update** button is disabled and the package a message appears saying that it's "Implicitly referenced by an SDK". (In some versions of Visual Studio the text may read only "AutoReferenced".) These conditions indicate that the package, such as Microsoft.NETCore.App, is part of a larger framework or SDK and should not be updated independently. (Such packages, of which Microsoft.NETStandard.Library is another example, are marked internally with `True`.) To update the package, you must update the SDK to which it belongs. +4. For some packages, the **Update** button is disabled and a message appears saying that it's "Implicitly referenced by an SDK". (In some versions of Visual Studio the text may read only "AutoReferenced".) These conditions indicate that the package, such as Microsoft.NETCore.App, is part of a larger framework or SDK and should not be updated independently. (Such packages, of which Microsoft.NETStandard.Library is another example, are marked internally with `True`.) To update the package, you must update the SDK to which it belongs. ![Example package marked as Implicitly references or AutoReferenced](media/PackageManagerUIAutoReferenced.png) ## Managing packages for the solution -*NuGet 1.4+* 1. Select the **Tools > NuGet Package Manager > Manage NuGet Packages for Solution...** menu command, or right-click the solution and select **Manage NuGet Packages...**: From cb49d8358d2e4bbc46233b270544e2ba9036efd8 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 27 Oct 2017 13:54:31 -0700 Subject: [PATCH 0338/2943] temporarily backing out changes --- .../Configuring-NuGet-Behavior.md | 245 ++++++++++-------- 1 file changed, 131 insertions(+), 114 deletions(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index bb179c126..1838873c4 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -5,7 +5,7 @@ title: Configuring the behavior of NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/25/2017 +ms.date: 10/24/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -16,248 +16,265 @@ ms.assetid: c1e34826-d07d-4609-a0fd-123459ae89c5 description: NuGet.Config files control NuGet's behavior both globally and on a per-project basis, and are modified with nuget config command. keywords: NuGet config files, NuGet configuration, NuGet behavior settings, NuGet settings, Nuget.Config, NuGetDefaults.Config, defaults +#ROBOTS: +#audience: +#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: --- # Configuring NuGet behavior -NuGet's behavior is driven by the accumulated settings in one or more `NuGet.Config` (XML) files that can exist at project-, user-, and computer-wide levels. A global `NuGetDefaults.Config` file (2.7+) also specifically configures package sources. Settings apply to all commands issued in the CLI, the Package Manager Console, and the Package Manager UI. +NuGet's `NuGet.Config` files store configuration settings in XML and allow for changing default configuration values. NuGet uses several global configuration files and any number of configuration files within and near to a project to determine its exact behavior. In addition, in NuGet 2.7 and later you can use the `NuGetDefaults.Config` file to also specifically control package sources. In this topic: -- [NuGet.Config file locations and uses](#config-file-locations-and-uses) +- [File locations and uses](#config-file-locations-and-uses) - [Changing settings](#changing-config-settings) - [How settings are applied](#how-settings-are-applied) -- [NuGetDefaults.Config file](#nuget-defaults-file) +- [NuGet defaults file](#nuget-defaults-file) ## Config file locations and uses -| Scope | NuGet.Config file location | Decsription | -| --- | --- | --- | -| Project | Project folder or any folder up to the drive root | In a project folder, settings apply only to that project. In parent folders that contain multiple projects subfolders, settings apply to all projects in those subfolders. | -| User | Windows: %APPDATA%\NuGet\NuGet.Config
    Mac/Linux: ~/.nuget/NuGet.Config | Settings apply to all operations, but are overridden by any project-level settings. When using CLI commands, you can specify a different config file using the `-configFile` switch to ignore any settings in the default user-level file. | -| Computer | Windows: %ProgramFiles(x86)%\NuGet\Config
    Mac/Linux: $XDG_DATA_HOME (typically ~/.local/share) | Settings apply to all operations on the computer, but are overriden by any user- or project-level settings. | +The behavior of every NuGet command, whether issued from the command line, the Package Manager UI, or the Package Manager Console, is driven by the accumulated settings from any number of `NuGet.Config` files: -Notes for earlier versions of NuGet: -- NuGet 3.3 and earlier used a `.nuget` folder for solution-wide settings. This file not used in NuGet 3.4+. -- For NuGet 2.6 to 3.x, the computer-level config file on Windows was located in %ProgramData%\NuGet\Config[\\{IDE}[\\{Version}[\\{SKU}]]]\NuGet.Config, where *{IDE}* can be *VisualStudio*, *{Version}* was the Visual Studio version such as *14.0*, and *{SKU}* is either *Community*, *Pro*, or *Enterprise*. To migrate settings to NuGet 4.0+, simply copy the config file to %ProgramFiles(x86)%\NuGet\Config. On Linus, this previous location was /etc/opt, and on Mac, /Library/Application Support. +- Project-specific `NuGet.Config` files located in any folder from the solution folder up to the drive root. These allow control over settings as they apply to a project or a group of projects. +- A solution-specific `NuGet.Config` file located within a `.nuget` folder in the solution. Settings in this file apply only to solution-wide packages and is supported only in NuGet 3.3 and earlier. It is ignored for NuGet 3.4 and later. +- The global config file located in `%APPDATA%\NuGet\NuGet.Config`, which is always used unless you specify a different config file using the `-configFile` switch on any NuGet command. For example, `nuget restore -configfile c:\my.config` uses settings from `c:\my.config` for the command and ignores any settings in the global config file. +- Additional machine-wide config files: + - NuGet 2.6 to NuGet 3.5: located in `%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}\]]]NuGet.Config`, where `{IDE}` can be `VisualStudio`, `{Version}` can be the Visual Studio version such as `14.0`, and `{SKU}` is either `Community`, `Pro`, or `Enterprise`. These variants allow you to create configurations that are specific to different versions and editions of Visual Studio if needs be. + - NuGet 4.0+: located under `%ProgramFiles(x86)%\NuGet\Config` rather than `%ProgramData%`. To migrate configuration files from `%ProgramData%`, simply copy them to the location under `%ProgramFiles(x86)%`. +- The "default" file: + - NuGet 2.7 to NuGet 3.5: located at `%PROGRAMDATA%\NuGet\NuGetDefaults.Config`, which is described later under [NuGet defaults file](#nuget-defaults-file) as a way to specifically enable and disable package sources. No other settings are supported in this file. + - NuGet 4.0+: located under `%ProgramFiles(x86)%\NuGet\Config` rather than `%ProgramData%`. + +> [!Note] +> The `%ProgramData%\NuGet` and `%ProgramFiles(x86)%\NuGet` folders typically requires Administrator permissions to modify. Administrators are expected to set the correct permissions on these folders based on the user and/or machine information. ## Changing config settings -A `NuGet.Config` file is a simple XML text file containing key/value pairs as described in the [NuGet Configuration Settings](../Schema/nuget-config-file.md) topic. +A configuration file is a simple XML text file containing settings as described in the [NuGet Configuration Settings](../Schema/nuget-config-file.md) topic. -Settings are managed using the NuGet CLI [config command](../tools/cli-ref-config.md): -- By default, changes are made to the user-level config file. -- To change settings in a different file, use the `-configFile` switch. In this case files can use any filename. -- Keys are always case sensitive. -- Elevation is required to change settings in the computer-level settings file. +The preferred method for changing the configuration is using the NuGet [config command](../tools/cli-ref-config.md) to set a key and value. -> [!Warning] -> Although you can modify the file in any text editor, NuGet (v3.4.3 and later) silently ignores the entire configuration file if it contains malformed XML (mismatched tags, invalid quotation marks, etc.). This is why it's preferable to manage setting using `nuget config`. - -### Setting a value +> [!Note] +> Keys are always case sensitive. -Windows: +To **set a value** in any existing configuration file, use the `-configFile` switch as shown in the examples below. ``` -# Set repositoryPath in the user-level config file -nuget config -set repositoryPath=c:\packages - -# Set repositoryPath in project-level files -nuget config -set repositoryPath=c:\packages -configfile c:\my.Config +nuget config -set repositoryPath=c:\packages -configfile c:\my.config nuget config -set repositoryPath=c:\packages -configfile .\myApp\NuGet.Config - -# Set repositoryPath in the computer-level file (requires elevation) -nuget config -set repositoryPath=c:\packages -configfile %ProgramFiles(x86)%\NuGet\NuGet.Config -``` - -Mac/Linux: - +nuget config -set repositoryPath=c:\packages -configfile %ProgramData%\NuGet\Config\VisualStudio\14.0\NuGet.Config +nuget config -set repositoryPath=c:\packages -configfile %ProgramData%\NuGet\NuGetDefaults.Config ``` -# Set repositoryPath in the user-level config file -nuget config -set repositoryPath=/home/packages -# Set repositoryPath in project-level files -nuget config -set repositoryPath=/home/projects/packages -configfile /home/my.Config -nuget config -set repositoryPath=/home/packages -configfile home/myApp/NuGet.Config - -# Set repositoryPath in the computer-level file (requires elevation) -nuget config -set repositoryPath=/home/packages -configfile $XDG_DATA_HOME/NuGet.Config -``` +Without the `-configFile` switch, NuGet makes the change in the global config file. > [!Note] -> In NuGet 3.4 and later you can use environment variables in any value, as in `repositoryPath=%PACKAGEHOME%` (Windows) and `repositoryPath=%PACKAGEHOME` (Mac/Linux). - +> In NuGet 3.4 and later you can use environment variables in any value, as in `repositoryPath=%PACKAGEHOME%`. -### Removing a value - -To remove a value, specify a key with an empty value. +To **remove a value**, use the same commands but with an empty value, such as: ``` -# Windows -nuget config -set repositoryPath= -configfile c:\my.Config - -# Mac/Linux -nuget config -set repositoryPath= -configfile /home/my.Config +nuget config -set repositoryPath= -configfile c:\my.config ``` -### Creating a new config file - -Copy the template below into the new file and then use `nuget config --configFile ` to set values: +To create a new configuration file, copy the template below into that file and then use the `nuget config --configFile ` command to set values: ```xml ``` -
    +> [!Warning] +> Although you can modify the file in any text editor, NuGet (v3.4.3 and later) silently ignores the entire configuration file if it contains malformed XML (mismatched tags, invalid quotation marks, etc.). ## How settings are applied -Multiple `NuGet.Config` files allow you to store settings in different locations so that they apply to a single project, a group of projects, or all projects. These settings collectively apply to any NuGet operation invoked from the command line or from Visual Studio, with settings that exist "closest" to a project or the current folder taking precedence. +As described above in [Config file locations and uses](#config-file-locations-and-uses), any number of `NuGet.Config` files can exist on a machine, both in global locations and within a project's folder structure. This allows you to control settings in different places as they apply to a project, a group of projects, or all projects. + +> [!Note] +> This process is sometimes referred to as "chaining" of config file, and the ability to insert a specific setting anywhere along the chain may be referred to as a "NuGet extensibility point." -Specifically, NuGet loads settings from the different config files in the following order: +When `nuget.exe` is run from the command line or run implicitly within Visual Studio, it loads settings from config files in the following order: -1. The [NuGetDefaults.Config file](#nuget-defaults-file), which contains settings related only to package sources. -1. The computer-level file. -1. The user-level file. +1. Files in `%ProgramData%\NuGet\Config` (NuGet 3.5 and earlier) or `%ProgramFiles(x86)%\NuGet\Config` (NuGet 4.0+) starting at this top folder and iterating down through the `{IDE}\{Version}\{SKU}\` subfolders if they exist. +1. The global config file, except in NuGet 3.4 and later if `-configFile` is used on the command line. 1. The file specified with `-configFile`. -1. Files found in every folder in the path from the drive root to the current folder (where nuget.exe is invoked or the folder containing the Visual Studio project). For example, if a command is invoked in c:\A\B\C, NuGet looks for and loads config files in c:\, then c:\A, then c:\A\B, and finally c:\A\B\C. +1. Files found in the path to the current folder (where nuget.exe is invoked or the folder containing the Visual Studio solution), starting from the root and ending in the current folder. -As NuGet finds settings in these files, they are applied as follows: +As settings are found in these files, they are processed as follows: -1. For single-item elements, NuGet replaced any previously-found value for the same key. This means that settings that are "closest" to the current folder or project override any others found earlier. For example, the `defaultPushSource` setting in `NuGetDefaults.Config` is overridden if it exists in any other config file. +1. For single-item elements, the last value found for any given key is used. This means that those settings that are "closest" to where NuGet was invoked is applied. -1. For collection elements (such as ``), NuGet combines the values from all configuration files into a single collection. +1. For collection elements (such as ``), values from all configuration files are added to the collection. -1. When `` is present for a given node, NuGet ignores previously defined configuration values for that node. +1. When `` is present for a given node, previously defined configuration values for that node are ignored. + +See [the example](#settings-walkthrough) below for a walkthrough of this process. + +Note also that the [NuGetDefaults.Config file](#nuget-defaults-file) can affect a few specific settings related to package sources, but does not have an effect on any other NuGet behavior. + +### Priority ordering + +It can also help to think about the "priority order" in which settings are applied, which is essentially the reverse of the processing order. For example, if a project is located in `c:\A\B\C`, then NuGet applies settings in the following priority order, meaning settings found higher up in the order win: + + (For solution-level packages only in NuGet 2.x; ignored in NuGet 3.x) + c:\A\B\C\.nuget\NuGet.Config + + (For all version of NuGet) + c:\A\B\C\NuGet.Config + c:\A\B\NuGet.Config + c:\A\NuGet.Config + c:\NuGet.Config + + configFile, if specified + + (Ignored in NuGet 3.4 and later if -configFile is used) + %AppData%\NuGet\NuGet.Config + + (NuGet 2.6 to 3.5) + %ProgramData%\NuGet\Config\{IDE}\{Version}\{SKU}\NuGet.Config + %ProgramData%\NuGet\Config\{IDE}\{Version}\NuGet.Config + %ProgramData%\NuGet\Config\{IDE}\NuGet.Config + %ProgramData%\NuGet\Config\NuGet.Config + + (NuGet 4.0+) + %ProgramFiles(x86)%\NuGet\Config\{IDE}\{Version}\{SKU}\NuGet.Config + %ProgramFiles(x86)%\NuGet\Config\{IDE}\{Version}\NuGet.Config + %ProgramFiles(x86)%\NuGet\Config\{IDE}\NuGet.Config + %ProgramFiles(x86)%\NuGet\Config\NuGet.Config ### Settings walkthrough -Let's say you have the following folder structure on two separate drives: +Let's say you have the following folder structure: - disk_drive_1 - User - disk_drive_2 + c:\ + Users + d:\ Project1 Source Project2 Source tmp -You then have four `NuGet.Config` files in the following locations with the given content. (The computer-level file is not included in this example, but would behave similarly to the user-level file.) +You then have four `NuGet.Config` files in the following locations with the given content: -File A. User-level file, (%APPDATA%\NuGet\NuGet.Config on Windows, ~/.nuget/NuGet.Config on Mac/Linux): +File A. Global configuration file, `%APPDATA%\NuGet\Nuget.Config`: ```xml - + ``` -File B. disk_drive_2/NuGet.Config: +File B. `d:\NuGet.Config`: ```xml - - + + - + ``` -File C. disk_drive_2/Project1/NuGet.Config: +File C. `d:\Project1\NuGet.Config`: ```xml - - + + - - + + ``` -File D. disk_drive_2/Project2/NuGet.Config: +File D. `d:\Project2\NuGet.Config`: ```xml - - + + ``` -NuGet then loads and applies settings as follows, depending on where it's invoked: +Here's how NuGet loads and apply the settings, depending on where it's invoked: -- **Invoked from disk_drive_1/users**: Only the default repository listed in the user-level configuration file (A) is used, because that's the only file found on disk_drive_1. +- **Invoked from c:\users**: Only the default repository listed in the global configuration file (A) is used, because that's the only file found on the `c:` drive. -- **Invoked from disk_drive_2/ or disk_drive_/tmp**: The user-level file (A) is loaded first, then NuGet goes to the root of disk_drive_2 and finds file (B). NuGet also looks for a configuration file in /tmp but does not find one. As a result, the default repository on nuget.org is used, package restore is enabled, and packages get expanded in disk_drive_2/tmp. +- **Invoked from d:\ or d:\tmp**: File (A) is loaded first, then NuGet goes to the root of `d:` and finds file (B). NuGet also looks for a configuration file in `d:\tmp` but does not find one. As a result, the default repository on nuget.org is used, package restore is enabled, and packages get expanded in `d:\tmp`. -- **Invoked from disk_drive_2/Project1 or disk_drive_2/Project1/Source**: The user-level file (A) is loaded first, then NuGet loads file (B) from the root of disk_drive_2, followed by file (C). Settings in (C) override those in (B) and (A), so the `repositoryPath` where packages get installed is disk_drive_2/Project1/External/Packages instead of *disk_drive_2/tmp*. Also, because (C) clears ``, nuget.org is no longer available as a source leaving only `https://MyPrivateRepo/ES/nuget`. +- **Invoked from d:\Project1 or d:\Project1\Source**: File (A) is loaded first, then NuGet loads file (B) from the `d:` root, followed by file (C). Settings in (C) override those in (B) and (A), so the `repositoryPath` where packages get installed is `d:\Project1\External\Packages` instead of `d:\tmp`. Also, because (C) clears ``, nuget.org is no longer available a source leaving only `https://MyPrivateRepo/ES/nuget`. -- **Invoked from disk_drive_2/Project2 or disk_drive_2/Project2/Source**: The user-level file (A) is loaded first followed by file (B) and file (D). Because `packageSources` is not cleared, both `nuget.org` and `https://MyPrivateRepo/DQ/nuget` are available as sources. Packages get expanded in disk_drive_2/tmp as specified in (B). +- **Invoked from d:\Project2 or d:\Project2\Source**: File (A) is loaded first followed by file (B) and file (D). Because `packageSources` is not cleared, both `nuget.org` and `https://MyPrivateRepo/DQ/nuget` are available as sources. Packages get expanded in `d:\tmp` as specified in (B). ## NuGet defaults file -The `NuGetDefaults.Config` file exists to specify package sources from which packages are installed and updated, and to control the default target for publishing packages with `nuget push`. Because administrators can conveniently (using Group Policy, for example) deploy consistent `NuGetDefaults.Config` files to developer and build machines, they can ensuring that everyone in the organization is using the correct package sources rather than nuget.org. +NuGet 3.3 and earlier is hardcoded to use nuget.org as the default package source, which cannot be changed. However, when using NuGet with internal package sources, it's often desirable to make sure that developers and build servers use packages from those sources instead of nuget.org. With NuGet 2.7 to 3.5, you can use the `%ProgramData%\NuGet\NuGetDefaults.Config` file (or `%ProgramFiles(x86)%\NuGet\NuGetDefaults.Config` with NuGet 4.0+) to control certain machine-wide defaults described below. This provides administrators a convenient way (using Group Policy, for example) to deploy consistent `NuGetDefaults.Config` files to developer and build machines, thus ensuring correct use of package sources. -> [!Important] -> The `NuGetDefaults.Config` file never causes a package source to be removed from a developer's NuGet configuration. That means if the developer has already used NuGet and therefore has the nuget.org package source registered, it won't be removed after the creation of a `NuGetDefaults.Config` file. -> -> Furthermore, neither `NuGetDefaults.Config` nor any other mechanism in NuGet can prevent access to package sources like nuget.org. If an organization wishes to block such access, it much use other means such as firewalls to do so. - -### NuGetDefaults.Config location +Note that NuGet 3.4 and later does not use a hardcoded default source. When nuget.exe is run for the first time, `NuGet.Config` is generated and nuget.org is added as the default package source in the config file. In the absence of the `NuGet.Config` file, the default package source is undefined. -Windows: %ProgramFiles(x86)%\NuGet\Config (NuGet 2.7 to NuGet 3.x: %PROGRAMDATA%\NuGet\NuGetDefaults.Config) -Mac/Linux: $XDG_DATA_HOME (typically ~/.local/share) - -### NuGetDefaults.Config settings +The defaults file works with the following settings: - `packageSources`: this collection has the same meaning as `packageSources` in regular config files and specifies the default sources in their preferred order. If this setting exists in `NuGetDefaults.Config`, then NuGet doesn't use nuget.org as a default package source. An administrator can thus make sure that everyone using this file is working with the same sources and avoids using nuget.org if desired. -- `disabledPackageSources`: this collection also has the same meaning as in `NuGet.Config` files, where each affected source is listed by its name and a true/false value indicating whether it's disabled. This allows the source name and URL to remain in `packageSources` without having it turned on by default. Individual developers can then re-enable the source by setting the source's value to false in other `NuGet.Config` files without having to find the correct URL again. This is also useful to supply developers with a full list of internal source URLs for an organization while enabling only an individual team's source by default. +- `disabledPackageSources`: this collection also has the same meaning as in `NuGet.Config` files, where each affected source is listed by its name and a true/false value indicating whether it's disabled. This allows the source name and URL to remain in `packageSources` without it being turned on by default. Individual developers can then re-enable the source by setting the source's value to false in other `NuGet.Config` files without having to find the correct URL again. This is also useful to supply developers with a full list of internal source URLs for an organization while enabling only an individual team's source by default. + +- `defaultPushSource`: when publishing a package, nuget.org is used as the destination or "push source" unless another is specified, which risks developers accidentally pushing internal packages to a public site. By changing the default push source, administrators can ensure that packages stay internal unless published to nuget.org explicitly. + +> [!Note] +> The `NuGetDefaults.Config` file never causes a package source to be removed from a developer's NuGet configuration. That means if the developer has already used NuGet and therefore has the nuget.org package source registered, it won't be removed after the creation of a `NuGetDefaults.Config` file. +> +> Furthermore, neither `NuGetDefaults.Config` or any other mechanism in NuGet can prevent access to package sources like nuget.org. If an organization wishes to block such access, it much use other means such as firewalls to do so. -- `defaultPushSource`: specifies the default target for `nuget push` operations, overriding the built-in default of nuget.org. Administrators can deploy this setting to avoid publishing internal packages to the public nuget.org by accident, as developers specifically need to use `nuget push -Source` to publish to nuget.org. +## Example NuGetDefaults.Config and application -### Example NuGetDefaults.Config and application +The following is an example `NuGetDefaults.Config` file containing each of its allowable sections: ```xml - - + + - + - - + + + - - - + + + + From 060774522e69ba64e959bfcfe1e768399cd92393 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 27 Oct 2017 13:55:29 -0700 Subject: [PATCH 0339/2943] Revisions to config topic --- .../Configuring-NuGet-Behavior.md | 249 ++++++++---------- 1 file changed, 116 insertions(+), 133 deletions(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index 1eb989af8..bb179c126 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -5,7 +5,7 @@ title: Configuring the behavior of NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/25/2017 +ms.date: 10/25/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -16,265 +16,248 @@ ms.assetid: c1e34826-d07d-4609-a0fd-123459ae89c5 description: NuGet.Config files control NuGet's behavior both globally and on a per-project basis, and are modified with nuget config command. keywords: NuGet config files, NuGet configuration, NuGet behavior settings, NuGet settings, Nuget.Config, NuGetDefaults.Config, defaults -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: -- karann -- unnir -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: +- karann-msft +- unniravindranathan --- # Configuring NuGet behavior -NuGet's `NuGet.Config` files (in XML) store configuration settings and allow for changing default configuration values. NuGet uses several global configuration files and any number of configuration files within and near to a project to determine its exact behavior. In addition, in NuGet 2.7 and later you can use the `NuGetDefaults.Config` file to also specifically control package sources. +NuGet's behavior is driven by the accumulated settings in one or more `NuGet.Config` (XML) files that can exist at project-, user-, and computer-wide levels. A global `NuGetDefaults.Config` file (2.7+) also specifically configures package sources. Settings apply to all commands issued in the CLI, the Package Manager Console, and the Package Manager UI. In this topic: -- [File locations and uses](#config-file-locations-and-uses) +- [NuGet.Config file locations and uses](#config-file-locations-and-uses) - [Changing settings](#changing-config-settings) - [How settings are applied](#how-settings-are-applied) -- [NuGet defaults file](#nuget-defaults-file) +- [NuGetDefaults.Config file](#nuget-defaults-file) ## Config file locations and uses -The behavior of every NuGet command, whether issued from the command line, the Package Manager UI, or the Package Manager Console, is driven by the accumulated settings from any number of `NuGet.Config` files: +| Scope | NuGet.Config file location | Decsription | +| --- | --- | --- | +| Project | Project folder or any folder up to the drive root | In a project folder, settings apply only to that project. In parent folders that contain multiple projects subfolders, settings apply to all projects in those subfolders. | +| User | Windows: %APPDATA%\NuGet\NuGet.Config
    Mac/Linux: ~/.nuget/NuGet.Config | Settings apply to all operations, but are overridden by any project-level settings. When using CLI commands, you can specify a different config file using the `-configFile` switch to ignore any settings in the default user-level file. | +| Computer | Windows: %ProgramFiles(x86)%\NuGet\Config
    Mac/Linux: $XDG_DATA_HOME (typically ~/.local/share) | Settings apply to all operations on the computer, but are overriden by any user- or project-level settings. | -- Project-specific `NuGet.Config` files located in any folder from the solution folder up to the drive root. These allow control over settings as they apply to a project or a group of projects. -- A solution-specific `NuGet.Config` file located within a `.nuget` folder in the solution. Settings in this file apply only to solution-wide packages and is supported only in NuGet 3.3 and earlier. It is ignored for NuGet 3.4 and later. -- The global config file located in `%APPDATA%\NuGet\NuGet.Config`, which is always used unless you specify a different config file using the `-configFile` switch on any NuGet command. For example, `nuget restore -configfile c:\my.config` uses settings from `c:\my.config` for the command and ignores any settings in the global config file. -- Additional machine-wide config files: - - NuGet 2.6 to NuGet 3.5: located in `%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}\]]]NuGet.Config`, where `{IDE}` can be `VisualStudio`, `{Version}` can be the Visual Studio version such as `14.0`, and `{SKU}` is either `Community`, `Pro`, or `Enterprise`. These variants allow you to create configurations that are specific to different versions and editions of Visual Studio if needs be. - - NuGet 4.0+: located under `%ProgramFiles(x86)%\NuGet\Config` rather than `%ProgramData%`. To migrate configuration files from `%ProgramData%`, simply copy them to the location under `%ProgramFiles(x86)%`. -- The "default" file: - - NuGet 2.7 to NuGet 3.5: located at `%PROGRAMDATA%\NuGet\NuGetDefaults.Config`, which is described later under [NuGet defaults file](#nuget-defaults-file) as a way to specifically enable and disable package sources. No other settings are supported in this file. - - NuGet 4.0+: located under `%ProgramFiles(x86)%\NuGet\Config` rather than `%ProgramData%`. - -> [!Note] -> The `%ProgramData%\NuGet` and `%ProgramFiles(x86)%\NuGet` folders typically requires Administrator permissions to modify. Administrators are expected to set the correct permissions on these folders based on the user and/or machine information. +Notes for earlier versions of NuGet: +- NuGet 3.3 and earlier used a `.nuget` folder for solution-wide settings. This file not used in NuGet 3.4+. +- For NuGet 2.6 to 3.x, the computer-level config file on Windows was located in %ProgramData%\NuGet\Config[\\{IDE}[\\{Version}[\\{SKU}]]]\NuGet.Config, where *{IDE}* can be *VisualStudio*, *{Version}* was the Visual Studio version such as *14.0*, and *{SKU}* is either *Community*, *Pro*, or *Enterprise*. To migrate settings to NuGet 4.0+, simply copy the config file to %ProgramFiles(x86)%\NuGet\Config. On Linus, this previous location was /etc/opt, and on Mac, /Library/Application Support. ## Changing config settings -A configuration file is a simple XML text file containing settings as described in the [NuGet Configuration Settings](../Schema/nuget-config-file.md) topic. +A `NuGet.Config` file is a simple XML text file containing key/value pairs as described in the [NuGet Configuration Settings](../Schema/nuget-config-file.md) topic. -The preferred method for changing the configuration is using the NuGet [config command](../tools/nuget-exe-cli-reference.md#config) to set a key and value. +Settings are managed using the NuGet CLI [config command](../tools/cli-ref-config.md): +- By default, changes are made to the user-level config file. +- To change settings in a different file, use the `-configFile` switch. In this case files can use any filename. +- Keys are always case sensitive. +- Elevation is required to change settings in the computer-level settings file. -> [!Note] -> Keys are always case sensitive. +> [!Warning] +> Although you can modify the file in any text editor, NuGet (v3.4.3 and later) silently ignores the entire configuration file if it contains malformed XML (mismatched tags, invalid quotation marks, etc.). This is why it's preferable to manage setting using `nuget config`. + +### Setting a value -To **set a value** in any existing configuration file, use the `-configFile` switch as shown in the examples below. +Windows: ``` -nuget config -set repositoryPath=c:\packages -configfile c:\my.config +# Set repositoryPath in the user-level config file +nuget config -set repositoryPath=c:\packages + +# Set repositoryPath in project-level files +nuget config -set repositoryPath=c:\packages -configfile c:\my.Config nuget config -set repositoryPath=c:\packages -configfile .\myApp\NuGet.Config -nuget config -set repositoryPath=c:\packages -configfile %ProgramData%\NuGet\Config\VisualStudio\14.0\NuGet.Config -nuget config -set repositoryPath=c:\packages -configfile %ProgramData%\NuGet\NuGetDefaults.Config + +# Set repositoryPath in the computer-level file (requires elevation) +nuget config -set repositoryPath=c:\packages -configfile %ProgramFiles(x86)%\NuGet\NuGet.Config +``` + +Mac/Linux: + ``` +# Set repositoryPath in the user-level config file +nuget config -set repositoryPath=/home/packages -Without the `-configFile` switch, NuGet makes the change in the global config file. +# Set repositoryPath in project-level files +nuget config -set repositoryPath=/home/projects/packages -configfile /home/my.Config +nuget config -set repositoryPath=/home/packages -configfile home/myApp/NuGet.Config + +# Set repositoryPath in the computer-level file (requires elevation) +nuget config -set repositoryPath=/home/packages -configfile $XDG_DATA_HOME/NuGet.Config +``` > [!Note] -> In NuGet 3.4 and later you can use environment variables in any value, as in `repositoryPath=%PACKAGEHOME%`. +> In NuGet 3.4 and later you can use environment variables in any value, as in `repositoryPath=%PACKAGEHOME%` (Windows) and `repositoryPath=%PACKAGEHOME` (Mac/Linux). + -To **remove a value**, use the same commands but with an empty value, such as: +### Removing a value + +To remove a value, specify a key with an empty value. ``` -nuget config -set repositoryPath= -configfile c:\my.config +# Windows +nuget config -set repositoryPath= -configfile c:\my.Config + +# Mac/Linux +nuget config -set repositoryPath= -configfile /home/my.Config ``` -To create a new configuration file, copy the template below into that file and then use the `nuget config --configFile ` command to set values: +### Creating a new config file + +Copy the template below into the new file and then use `nuget config --configFile ` to set values: ```xml ``` +
    -> [!Warning] -> Although you can modify the file in any text editor, NuGet (v3.4.3 and later) silently ignores the entire configuration file if it contains malformed XML (mismatched tags, invalid quotation marks, etc.). ## How settings are applied -As described above in [Config file locations and uses](#config-file-locations-and-uses), any number of `NuGet.Config` files can exist on a machine, both in global locations and within a project's folder structure. This allows you to control settings in different places as they apply to a project, a group of projects, or all projects. - -> [!Note] -> This process is sometimes referred to as "chaining" of config file, and the ability to insert a specific setting anywhere along the chain may be referred to as a "NuGet extensibility point." +Multiple `NuGet.Config` files allow you to store settings in different locations so that they apply to a single project, a group of projects, or all projects. These settings collectively apply to any NuGet operation invoked from the command line or from Visual Studio, with settings that exist "closest" to a project or the current folder taking precedence. -When `nuget.exe` is run from the command line or run implicitly within Visual Studio, it loads settings from config files in the following order: +Specifically, NuGet loads settings from the different config files in the following order: -1. Files in `%ProgramData%\NuGet\Config` (NuGet 3.5 and earlier) or `%ProgramFiles(x86)%\NuGet\Config` (NuGet 4.0+) starting at this top folder and iterating down through the `{IDE}\{Version}\{SKU}\` subfolders if they exist. -1. The global config file, except in NuGet 3.4 and later if `-configFile` is used on the command line. +1. The [NuGetDefaults.Config file](#nuget-defaults-file), which contains settings related only to package sources. +1. The computer-level file. +1. The user-level file. 1. The file specified with `-configFile`. -1. Files found in the path to the current folder (where nuget.exe is invoked or the folder containing the Visual Studio solution), starting from the root and ending in the current folder. +1. Files found in every folder in the path from the drive root to the current folder (where nuget.exe is invoked or the folder containing the Visual Studio project). For example, if a command is invoked in c:\A\B\C, NuGet looks for and loads config files in c:\, then c:\A, then c:\A\B, and finally c:\A\B\C. -As settings are found in these files, they are processed as follows: +As NuGet finds settings in these files, they are applied as follows: -1. For single-item elements, the last value found for any given key is used. This means that those settings that are "closest" to where NuGet was invoked is applied. +1. For single-item elements, NuGet replaced any previously-found value for the same key. This means that settings that are "closest" to the current folder or project override any others found earlier. For example, the `defaultPushSource` setting in `NuGetDefaults.Config` is overridden if it exists in any other config file. -1. For collection elements (such as ``), values from all configuration files are added to the collection. +1. For collection elements (such as ``), NuGet combines the values from all configuration files into a single collection. -1. When `` is present for a given node, previously defined configuration values for that node are ignored. - -See [the example](#settings-walkthrough) below for a walkthrough of this process. - -Note also that the [NuGetDefaults.Config file](#nuget-defaults-file) can affect a few specific settings related to package sources, but does not have an effect on any other NuGet behavior. - -### Priority ordering - -It can also help to think about the "priority order" in which settings are applied, which is essentially the reverse of the processing order. For example, if a project is located in `c:\A\B\C`, then NuGet applies settings in the following priority order, meaning settings found higher up in the order win: - - (For solution-level packages only in NuGet 2.x; ignored in NuGet 3.x) - c:\A\B\C\.nuget\NuGet.Config - - (For all version of NuGet) - c:\A\B\C\NuGet.Config - c:\A\B\NuGet.Config - c:\A\NuGet.Config - c:\NuGet.Config - - configFile, if specified - - (Ignored in NuGet 3.4 and later if -configFile is used) - %AppData%\NuGet\NuGet.Config - - (NuGet 2.6 to 3.5) - %ProgramData%\NuGet\Config\{IDE}\{Version}\{SKU}\NuGet.Config - %ProgramData%\NuGet\Config\{IDE}\{Version}\NuGet.Config - %ProgramData%\NuGet\Config\{IDE}\NuGet.Config - %ProgramData%\NuGet\Config\NuGet.Config - - (NuGet 4.0+) - %ProgramFiles(x86)%\NuGet\Config\{IDE}\{Version}\{SKU}\NuGet.Config - %ProgramFiles(x86)%\NuGet\Config\{IDE}\{Version}\NuGet.Config - %ProgramFiles(x86)%\NuGet\Config\{IDE}\NuGet.Config - %ProgramFiles(x86)%\NuGet\Config\NuGet.Config +1. When `` is present for a given node, NuGet ignores previously defined configuration values for that node. ### Settings walkthrough -Let's say you have the following folder structure: +Let's say you have the following folder structure on two separate drives: - c:\ - Users - d:\ + disk_drive_1 + User + disk_drive_2 Project1 Source Project2 Source tmp -You then have four `NuGet.Config` files in the following locations with the given content: +You then have four `NuGet.Config` files in the following locations with the given content. (The computer-level file is not included in this example, but would behave similarly to the user-level file.) -File A. Global configuration file, `%APPDATA%\NuGet\Nuget.Config`: +File A. User-level file, (%APPDATA%\NuGet\NuGet.Config on Windows, ~/.nuget/NuGet.Config on Mac/Linux): ```xml - + ``` -File B. `d:\NuGet.Config`: +File B. disk_drive_2/NuGet.Config: ```xml - - + + - + ``` -File C. `d:\Project1\NuGet.Config`: +File C. disk_drive_2/Project1/NuGet.Config: ```xml - - + + - - + + ``` -File D. `d:\Project2\NuGet.Config`: +File D. disk_drive_2/Project2/NuGet.Config: ```xml - - + + ``` -Here's how NuGet loads and apply the settings, depending on where it's invoked: +NuGet then loads and applies settings as follows, depending on where it's invoked: -- **Invoked from c:\users**: Only the default repository listed in the global configuration file (A) is used, because that's the only file found on the `c:` drive. +- **Invoked from disk_drive_1/users**: Only the default repository listed in the user-level configuration file (A) is used, because that's the only file found on disk_drive_1. -- **Invoked from d:\ or d:\tmp**: File (A) is loaded first, then NuGet goes to the root of `d:` and finds file (B). NuGet also looks for a configuration file in `d:\tmp` but does not find one. As a result, the default repository on nuget.org is used, package restore is enabled, and packages get expanded in `d:\tmp`. +- **Invoked from disk_drive_2/ or disk_drive_/tmp**: The user-level file (A) is loaded first, then NuGet goes to the root of disk_drive_2 and finds file (B). NuGet also looks for a configuration file in /tmp but does not find one. As a result, the default repository on nuget.org is used, package restore is enabled, and packages get expanded in disk_drive_2/tmp. -- **Invoked from d:\Project1 or d:\Project1\Source**: File (A) is loaded first, then NuGet loads file (B) from the `d:` root, followed by file (C). Settings in (C) override those in (B) and (A), so the `repositoryPath` where packages get installed is `d:\Project1\External\Packages` instead of `d:\tmp`. Also, because (C) clears ``, nuget.org is no longer available a source leaving only `https://MyPrivateRepo/ES/nuget`. +- **Invoked from disk_drive_2/Project1 or disk_drive_2/Project1/Source**: The user-level file (A) is loaded first, then NuGet loads file (B) from the root of disk_drive_2, followed by file (C). Settings in (C) override those in (B) and (A), so the `repositoryPath` where packages get installed is disk_drive_2/Project1/External/Packages instead of *disk_drive_2/tmp*. Also, because (C) clears ``, nuget.org is no longer available as a source leaving only `https://MyPrivateRepo/ES/nuget`. -- **Invoked from d:\Project2 or d:\Project2\Source**: File (A) is loaded first followed by file (B) and file (D). Because `packageSources` is not cleared, both `nuget.org` and `https://MyPrivateRepo/DQ/nuget` are available as sources. Packages get expanded in `d:\tmp` as specified in (B). +- **Invoked from disk_drive_2/Project2 or disk_drive_2/Project2/Source**: The user-level file (A) is loaded first followed by file (B) and file (D). Because `packageSources` is not cleared, both `nuget.org` and `https://MyPrivateRepo/DQ/nuget` are available as sources. Packages get expanded in disk_drive_2/tmp as specified in (B). ## NuGet defaults file -NuGet 3.3 and earlier is hardcoded to use nuget.org as the default package source, which cannot be changed. However, when using NuGet with internal package sources, it's often desirable to make sure that developers and build servers use packages from those sources instead of nuget.org. With NuGet 2.7 to 3.5, you can use the `%ProgramData%\NuGet\NuGetDefaults.Config` file (or `%ProgramFiles(x86)%\NuGet\NuGetDefaults.Config` with NuGet 4.0+) to control certain machine-wide defaults described below. This provides administrators a convenient way (using Group Policy, for example) to deploy consistent `NuGetDefaults.Config` files to developer and build machines, thus ensuring correct use of package sources. +The `NuGetDefaults.Config` file exists to specify package sources from which packages are installed and updated, and to control the default target for publishing packages with `nuget push`. Because administrators can conveniently (using Group Policy, for example) deploy consistent `NuGetDefaults.Config` files to developer and build machines, they can ensuring that everyone in the organization is using the correct package sources rather than nuget.org. -Note that NuGet 3.4 and later does not use a hardcoded default source. When nuget.exe is run for the first time, `NuGet.Config` is generated and nuget.org is added as the default package source in the config file. In the absence of the `NuGet.Config` file, the default package source is undefined. +> [!Important] +> The `NuGetDefaults.Config` file never causes a package source to be removed from a developer's NuGet configuration. That means if the developer has already used NuGet and therefore has the nuget.org package source registered, it won't be removed after the creation of a `NuGetDefaults.Config` file. +> +> Furthermore, neither `NuGetDefaults.Config` nor any other mechanism in NuGet can prevent access to package sources like nuget.org. If an organization wishes to block such access, it much use other means such as firewalls to do so. -The defaults file works with the following settings: +### NuGetDefaults.Config location -- `packageSources`: this collection has the same meaning as `packageSources` in regular config files and specifies the default sources in their preferred order. If this setting exists in `NuGetDefaults.Config`, then NuGet doesn't use nuget.org as a default package source. An administrator can thus make sure that everyone using this file is working with the same sources and avoids using nuget.org if desired. - -- `disabledPackageSources`: this collection also has the same meaning as in `NuGet.Config` files, where each affected source is listed by its name and a true/false value indicating whether it's disabled. This allows the source name and URL to remain in `packageSources` without it being turned on by default. Individual developers can then re-enable the source by setting the source's value to false in other `NuGet.Config` files without having to find the correct URL again. This is also useful to supply developers with a full list of internal source URLs for an organization while enabling only an individual team's source by default. +Windows: %ProgramFiles(x86)%\NuGet\Config (NuGet 2.7 to NuGet 3.x: %PROGRAMDATA%\NuGet\NuGetDefaults.Config) +Mac/Linux: $XDG_DATA_HOME (typically ~/.local/share) -- `defaultPushSource`: when publishing a package, nuget.org is used as the destination or "push source" unless another is specified, which risks developers accidentally pushing internal packages to a public site. By changing the default push source, administrators can ensure that packages stay internal unless published to nuget.org explicitly. +### NuGetDefaults.Config settings -> [!Note] -> The `NuGetDefaults.Config` file never causes a package source to be removed from a developer's NuGet configuration. That means if the developer has already used NuGet and therefore has the nuget.org package source registered, it won't be removed after the creation of a `NuGetDefaults.Config` file. -> -> Furthermore, neither `NuGetDefaults.Config` or any other mechanism in NuGet can prevent access to package sources like nuget.org. If an organization wishes to block such access, it much use other means such as firewalls to do so. +- `packageSources`: this collection has the same meaning as `packageSources` in regular config files and specifies the default sources in their preferred order. If this setting exists in `NuGetDefaults.Config`, then NuGet doesn't use nuget.org as a default package source. An administrator can thus make sure that everyone using this file is working with the same sources and avoids using nuget.org if desired. + +- `disabledPackageSources`: this collection also has the same meaning as in `NuGet.Config` files, where each affected source is listed by its name and a true/false value indicating whether it's disabled. This allows the source name and URL to remain in `packageSources` without having it turned on by default. Individual developers can then re-enable the source by setting the source's value to false in other `NuGet.Config` files without having to find the correct URL again. This is also useful to supply developers with a full list of internal source URLs for an organization while enabling only an individual team's source by default. -## Example NuGetDefaults.Config and application +- `defaultPushSource`: specifies the default target for `nuget push` operations, overriding the built-in default of nuget.org. Administrators can deploy this setting to avoid publishing internal packages to the public nuget.org by accident, as developers specifically need to use `nuget push -Source` to publish to nuget.org. -The following is an example `NuGetDefaults.Config` file containing each of its allowable sections: +### Example NuGetDefaults.Config and application ```xml - - + + - + - - - + + - - - - + + + From bd5ff3d2ed55fbffd502ecd0145157e18c3b63fc Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 27 Oct 2017 14:00:02 -0700 Subject: [PATCH 0340/2943] Restoring changes to config --- .../Configuring-NuGet-Behavior.md | 245 ++++++++---------- 1 file changed, 114 insertions(+), 131 deletions(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index 1838873c4..bb179c126 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -5,7 +5,7 @@ title: Configuring the behavior of NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 10/25/2017 ms.topic: article ms.prod: nuget #ms.service: @@ -16,265 +16,248 @@ ms.assetid: c1e34826-d07d-4609-a0fd-123459ae89c5 description: NuGet.Config files control NuGet's behavior both globally and on a per-project basis, and are modified with nuget config command. keywords: NuGet config files, NuGet configuration, NuGet behavior settings, NuGet settings, Nuget.Config, NuGetDefaults.Config, defaults -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- # Configuring NuGet behavior -NuGet's `NuGet.Config` files store configuration settings in XML and allow for changing default configuration values. NuGet uses several global configuration files and any number of configuration files within and near to a project to determine its exact behavior. In addition, in NuGet 2.7 and later you can use the `NuGetDefaults.Config` file to also specifically control package sources. +NuGet's behavior is driven by the accumulated settings in one or more `NuGet.Config` (XML) files that can exist at project-, user-, and computer-wide levels. A global `NuGetDefaults.Config` file (2.7+) also specifically configures package sources. Settings apply to all commands issued in the CLI, the Package Manager Console, and the Package Manager UI. In this topic: -- [File locations and uses](#config-file-locations-and-uses) +- [NuGet.Config file locations and uses](#config-file-locations-and-uses) - [Changing settings](#changing-config-settings) - [How settings are applied](#how-settings-are-applied) -- [NuGet defaults file](#nuget-defaults-file) +- [NuGetDefaults.Config file](#nuget-defaults-file) ## Config file locations and uses -The behavior of every NuGet command, whether issued from the command line, the Package Manager UI, or the Package Manager Console, is driven by the accumulated settings from any number of `NuGet.Config` files: +| Scope | NuGet.Config file location | Decsription | +| --- | --- | --- | +| Project | Project folder or any folder up to the drive root | In a project folder, settings apply only to that project. In parent folders that contain multiple projects subfolders, settings apply to all projects in those subfolders. | +| User | Windows: %APPDATA%\NuGet\NuGet.Config
    Mac/Linux: ~/.nuget/NuGet.Config | Settings apply to all operations, but are overridden by any project-level settings. When using CLI commands, you can specify a different config file using the `-configFile` switch to ignore any settings in the default user-level file. | +| Computer | Windows: %ProgramFiles(x86)%\NuGet\Config
    Mac/Linux: $XDG_DATA_HOME (typically ~/.local/share) | Settings apply to all operations on the computer, but are overriden by any user- or project-level settings. | -- Project-specific `NuGet.Config` files located in any folder from the solution folder up to the drive root. These allow control over settings as they apply to a project or a group of projects. -- A solution-specific `NuGet.Config` file located within a `.nuget` folder in the solution. Settings in this file apply only to solution-wide packages and is supported only in NuGet 3.3 and earlier. It is ignored for NuGet 3.4 and later. -- The global config file located in `%APPDATA%\NuGet\NuGet.Config`, which is always used unless you specify a different config file using the `-configFile` switch on any NuGet command. For example, `nuget restore -configfile c:\my.config` uses settings from `c:\my.config` for the command and ignores any settings in the global config file. -- Additional machine-wide config files: - - NuGet 2.6 to NuGet 3.5: located in `%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}\]]]NuGet.Config`, where `{IDE}` can be `VisualStudio`, `{Version}` can be the Visual Studio version such as `14.0`, and `{SKU}` is either `Community`, `Pro`, or `Enterprise`. These variants allow you to create configurations that are specific to different versions and editions of Visual Studio if needs be. - - NuGet 4.0+: located under `%ProgramFiles(x86)%\NuGet\Config` rather than `%ProgramData%`. To migrate configuration files from `%ProgramData%`, simply copy them to the location under `%ProgramFiles(x86)%`. -- The "default" file: - - NuGet 2.7 to NuGet 3.5: located at `%PROGRAMDATA%\NuGet\NuGetDefaults.Config`, which is described later under [NuGet defaults file](#nuget-defaults-file) as a way to specifically enable and disable package sources. No other settings are supported in this file. - - NuGet 4.0+: located under `%ProgramFiles(x86)%\NuGet\Config` rather than `%ProgramData%`. - -> [!Note] -> The `%ProgramData%\NuGet` and `%ProgramFiles(x86)%\NuGet` folders typically requires Administrator permissions to modify. Administrators are expected to set the correct permissions on these folders based on the user and/or machine information. +Notes for earlier versions of NuGet: +- NuGet 3.3 and earlier used a `.nuget` folder for solution-wide settings. This file not used in NuGet 3.4+. +- For NuGet 2.6 to 3.x, the computer-level config file on Windows was located in %ProgramData%\NuGet\Config[\\{IDE}[\\{Version}[\\{SKU}]]]\NuGet.Config, where *{IDE}* can be *VisualStudio*, *{Version}* was the Visual Studio version such as *14.0*, and *{SKU}* is either *Community*, *Pro*, or *Enterprise*. To migrate settings to NuGet 4.0+, simply copy the config file to %ProgramFiles(x86)%\NuGet\Config. On Linus, this previous location was /etc/opt, and on Mac, /Library/Application Support. ## Changing config settings -A configuration file is a simple XML text file containing settings as described in the [NuGet Configuration Settings](../Schema/nuget-config-file.md) topic. +A `NuGet.Config` file is a simple XML text file containing key/value pairs as described in the [NuGet Configuration Settings](../Schema/nuget-config-file.md) topic. -The preferred method for changing the configuration is using the NuGet [config command](../tools/cli-ref-config.md) to set a key and value. +Settings are managed using the NuGet CLI [config command](../tools/cli-ref-config.md): +- By default, changes are made to the user-level config file. +- To change settings in a different file, use the `-configFile` switch. In this case files can use any filename. +- Keys are always case sensitive. +- Elevation is required to change settings in the computer-level settings file. -> [!Note] -> Keys are always case sensitive. +> [!Warning] +> Although you can modify the file in any text editor, NuGet (v3.4.3 and later) silently ignores the entire configuration file if it contains malformed XML (mismatched tags, invalid quotation marks, etc.). This is why it's preferable to manage setting using `nuget config`. + +### Setting a value -To **set a value** in any existing configuration file, use the `-configFile` switch as shown in the examples below. +Windows: ``` -nuget config -set repositoryPath=c:\packages -configfile c:\my.config +# Set repositoryPath in the user-level config file +nuget config -set repositoryPath=c:\packages + +# Set repositoryPath in project-level files +nuget config -set repositoryPath=c:\packages -configfile c:\my.Config nuget config -set repositoryPath=c:\packages -configfile .\myApp\NuGet.Config -nuget config -set repositoryPath=c:\packages -configfile %ProgramData%\NuGet\Config\VisualStudio\14.0\NuGet.Config -nuget config -set repositoryPath=c:\packages -configfile %ProgramData%\NuGet\NuGetDefaults.Config + +# Set repositoryPath in the computer-level file (requires elevation) +nuget config -set repositoryPath=c:\packages -configfile %ProgramFiles(x86)%\NuGet\NuGet.Config +``` + +Mac/Linux: + ``` +# Set repositoryPath in the user-level config file +nuget config -set repositoryPath=/home/packages -Without the `-configFile` switch, NuGet makes the change in the global config file. +# Set repositoryPath in project-level files +nuget config -set repositoryPath=/home/projects/packages -configfile /home/my.Config +nuget config -set repositoryPath=/home/packages -configfile home/myApp/NuGet.Config + +# Set repositoryPath in the computer-level file (requires elevation) +nuget config -set repositoryPath=/home/packages -configfile $XDG_DATA_HOME/NuGet.Config +``` > [!Note] -> In NuGet 3.4 and later you can use environment variables in any value, as in `repositoryPath=%PACKAGEHOME%`. +> In NuGet 3.4 and later you can use environment variables in any value, as in `repositoryPath=%PACKAGEHOME%` (Windows) and `repositoryPath=%PACKAGEHOME` (Mac/Linux). + -To **remove a value**, use the same commands but with an empty value, such as: +### Removing a value + +To remove a value, specify a key with an empty value. ``` -nuget config -set repositoryPath= -configfile c:\my.config +# Windows +nuget config -set repositoryPath= -configfile c:\my.Config + +# Mac/Linux +nuget config -set repositoryPath= -configfile /home/my.Config ``` -To create a new configuration file, copy the template below into that file and then use the `nuget config --configFile ` command to set values: +### Creating a new config file + +Copy the template below into the new file and then use `nuget config --configFile ` to set values: ```xml ``` +
    -> [!Warning] -> Although you can modify the file in any text editor, NuGet (v3.4.3 and later) silently ignores the entire configuration file if it contains malformed XML (mismatched tags, invalid quotation marks, etc.). ## How settings are applied -As described above in [Config file locations and uses](#config-file-locations-and-uses), any number of `NuGet.Config` files can exist on a machine, both in global locations and within a project's folder structure. This allows you to control settings in different places as they apply to a project, a group of projects, or all projects. - -> [!Note] -> This process is sometimes referred to as "chaining" of config file, and the ability to insert a specific setting anywhere along the chain may be referred to as a "NuGet extensibility point." +Multiple `NuGet.Config` files allow you to store settings in different locations so that they apply to a single project, a group of projects, or all projects. These settings collectively apply to any NuGet operation invoked from the command line or from Visual Studio, with settings that exist "closest" to a project or the current folder taking precedence. -When `nuget.exe` is run from the command line or run implicitly within Visual Studio, it loads settings from config files in the following order: +Specifically, NuGet loads settings from the different config files in the following order: -1. Files in `%ProgramData%\NuGet\Config` (NuGet 3.5 and earlier) or `%ProgramFiles(x86)%\NuGet\Config` (NuGet 4.0+) starting at this top folder and iterating down through the `{IDE}\{Version}\{SKU}\` subfolders if they exist. -1. The global config file, except in NuGet 3.4 and later if `-configFile` is used on the command line. +1. The [NuGetDefaults.Config file](#nuget-defaults-file), which contains settings related only to package sources. +1. The computer-level file. +1. The user-level file. 1. The file specified with `-configFile`. -1. Files found in the path to the current folder (where nuget.exe is invoked or the folder containing the Visual Studio solution), starting from the root and ending in the current folder. +1. Files found in every folder in the path from the drive root to the current folder (where nuget.exe is invoked or the folder containing the Visual Studio project). For example, if a command is invoked in c:\A\B\C, NuGet looks for and loads config files in c:\, then c:\A, then c:\A\B, and finally c:\A\B\C. -As settings are found in these files, they are processed as follows: +As NuGet finds settings in these files, they are applied as follows: -1. For single-item elements, the last value found for any given key is used. This means that those settings that are "closest" to where NuGet was invoked is applied. +1. For single-item elements, NuGet replaced any previously-found value for the same key. This means that settings that are "closest" to the current folder or project override any others found earlier. For example, the `defaultPushSource` setting in `NuGetDefaults.Config` is overridden if it exists in any other config file. -1. For collection elements (such as ``), values from all configuration files are added to the collection. +1. For collection elements (such as ``), NuGet combines the values from all configuration files into a single collection. -1. When `` is present for a given node, previously defined configuration values for that node are ignored. - -See [the example](#settings-walkthrough) below for a walkthrough of this process. - -Note also that the [NuGetDefaults.Config file](#nuget-defaults-file) can affect a few specific settings related to package sources, but does not have an effect on any other NuGet behavior. - -### Priority ordering - -It can also help to think about the "priority order" in which settings are applied, which is essentially the reverse of the processing order. For example, if a project is located in `c:\A\B\C`, then NuGet applies settings in the following priority order, meaning settings found higher up in the order win: - - (For solution-level packages only in NuGet 2.x; ignored in NuGet 3.x) - c:\A\B\C\.nuget\NuGet.Config - - (For all version of NuGet) - c:\A\B\C\NuGet.Config - c:\A\B\NuGet.Config - c:\A\NuGet.Config - c:\NuGet.Config - - configFile, if specified - - (Ignored in NuGet 3.4 and later if -configFile is used) - %AppData%\NuGet\NuGet.Config - - (NuGet 2.6 to 3.5) - %ProgramData%\NuGet\Config\{IDE}\{Version}\{SKU}\NuGet.Config - %ProgramData%\NuGet\Config\{IDE}\{Version}\NuGet.Config - %ProgramData%\NuGet\Config\{IDE}\NuGet.Config - %ProgramData%\NuGet\Config\NuGet.Config - - (NuGet 4.0+) - %ProgramFiles(x86)%\NuGet\Config\{IDE}\{Version}\{SKU}\NuGet.Config - %ProgramFiles(x86)%\NuGet\Config\{IDE}\{Version}\NuGet.Config - %ProgramFiles(x86)%\NuGet\Config\{IDE}\NuGet.Config - %ProgramFiles(x86)%\NuGet\Config\NuGet.Config +1. When `` is present for a given node, NuGet ignores previously defined configuration values for that node. ### Settings walkthrough -Let's say you have the following folder structure: +Let's say you have the following folder structure on two separate drives: - c:\ - Users - d:\ + disk_drive_1 + User + disk_drive_2 Project1 Source Project2 Source tmp -You then have four `NuGet.Config` files in the following locations with the given content: +You then have four `NuGet.Config` files in the following locations with the given content. (The computer-level file is not included in this example, but would behave similarly to the user-level file.) -File A. Global configuration file, `%APPDATA%\NuGet\Nuget.Config`: +File A. User-level file, (%APPDATA%\NuGet\NuGet.Config on Windows, ~/.nuget/NuGet.Config on Mac/Linux): ```xml - + ``` -File B. `d:\NuGet.Config`: +File B. disk_drive_2/NuGet.Config: ```xml - - + + - + ``` -File C. `d:\Project1\NuGet.Config`: +File C. disk_drive_2/Project1/NuGet.Config: ```xml - - + + - - + + ``` -File D. `d:\Project2\NuGet.Config`: +File D. disk_drive_2/Project2/NuGet.Config: ```xml - - + + ``` -Here's how NuGet loads and apply the settings, depending on where it's invoked: +NuGet then loads and applies settings as follows, depending on where it's invoked: -- **Invoked from c:\users**: Only the default repository listed in the global configuration file (A) is used, because that's the only file found on the `c:` drive. +- **Invoked from disk_drive_1/users**: Only the default repository listed in the user-level configuration file (A) is used, because that's the only file found on disk_drive_1. -- **Invoked from d:\ or d:\tmp**: File (A) is loaded first, then NuGet goes to the root of `d:` and finds file (B). NuGet also looks for a configuration file in `d:\tmp` but does not find one. As a result, the default repository on nuget.org is used, package restore is enabled, and packages get expanded in `d:\tmp`. +- **Invoked from disk_drive_2/ or disk_drive_/tmp**: The user-level file (A) is loaded first, then NuGet goes to the root of disk_drive_2 and finds file (B). NuGet also looks for a configuration file in /tmp but does not find one. As a result, the default repository on nuget.org is used, package restore is enabled, and packages get expanded in disk_drive_2/tmp. -- **Invoked from d:\Project1 or d:\Project1\Source**: File (A) is loaded first, then NuGet loads file (B) from the `d:` root, followed by file (C). Settings in (C) override those in (B) and (A), so the `repositoryPath` where packages get installed is `d:\Project1\External\Packages` instead of `d:\tmp`. Also, because (C) clears ``, nuget.org is no longer available a source leaving only `https://MyPrivateRepo/ES/nuget`. +- **Invoked from disk_drive_2/Project1 or disk_drive_2/Project1/Source**: The user-level file (A) is loaded first, then NuGet loads file (B) from the root of disk_drive_2, followed by file (C). Settings in (C) override those in (B) and (A), so the `repositoryPath` where packages get installed is disk_drive_2/Project1/External/Packages instead of *disk_drive_2/tmp*. Also, because (C) clears ``, nuget.org is no longer available as a source leaving only `https://MyPrivateRepo/ES/nuget`. -- **Invoked from d:\Project2 or d:\Project2\Source**: File (A) is loaded first followed by file (B) and file (D). Because `packageSources` is not cleared, both `nuget.org` and `https://MyPrivateRepo/DQ/nuget` are available as sources. Packages get expanded in `d:\tmp` as specified in (B). +- **Invoked from disk_drive_2/Project2 or disk_drive_2/Project2/Source**: The user-level file (A) is loaded first followed by file (B) and file (D). Because `packageSources` is not cleared, both `nuget.org` and `https://MyPrivateRepo/DQ/nuget` are available as sources. Packages get expanded in disk_drive_2/tmp as specified in (B). ## NuGet defaults file -NuGet 3.3 and earlier is hardcoded to use nuget.org as the default package source, which cannot be changed. However, when using NuGet with internal package sources, it's often desirable to make sure that developers and build servers use packages from those sources instead of nuget.org. With NuGet 2.7 to 3.5, you can use the `%ProgramData%\NuGet\NuGetDefaults.Config` file (or `%ProgramFiles(x86)%\NuGet\NuGetDefaults.Config` with NuGet 4.0+) to control certain machine-wide defaults described below. This provides administrators a convenient way (using Group Policy, for example) to deploy consistent `NuGetDefaults.Config` files to developer and build machines, thus ensuring correct use of package sources. +The `NuGetDefaults.Config` file exists to specify package sources from which packages are installed and updated, and to control the default target for publishing packages with `nuget push`. Because administrators can conveniently (using Group Policy, for example) deploy consistent `NuGetDefaults.Config` files to developer and build machines, they can ensuring that everyone in the organization is using the correct package sources rather than nuget.org. -Note that NuGet 3.4 and later does not use a hardcoded default source. When nuget.exe is run for the first time, `NuGet.Config` is generated and nuget.org is added as the default package source in the config file. In the absence of the `NuGet.Config` file, the default package source is undefined. +> [!Important] +> The `NuGetDefaults.Config` file never causes a package source to be removed from a developer's NuGet configuration. That means if the developer has already used NuGet and therefore has the nuget.org package source registered, it won't be removed after the creation of a `NuGetDefaults.Config` file. +> +> Furthermore, neither `NuGetDefaults.Config` nor any other mechanism in NuGet can prevent access to package sources like nuget.org. If an organization wishes to block such access, it much use other means such as firewalls to do so. -The defaults file works with the following settings: +### NuGetDefaults.Config location -- `packageSources`: this collection has the same meaning as `packageSources` in regular config files and specifies the default sources in their preferred order. If this setting exists in `NuGetDefaults.Config`, then NuGet doesn't use nuget.org as a default package source. An administrator can thus make sure that everyone using this file is working with the same sources and avoids using nuget.org if desired. - -- `disabledPackageSources`: this collection also has the same meaning as in `NuGet.Config` files, where each affected source is listed by its name and a true/false value indicating whether it's disabled. This allows the source name and URL to remain in `packageSources` without it being turned on by default. Individual developers can then re-enable the source by setting the source's value to false in other `NuGet.Config` files without having to find the correct URL again. This is also useful to supply developers with a full list of internal source URLs for an organization while enabling only an individual team's source by default. +Windows: %ProgramFiles(x86)%\NuGet\Config (NuGet 2.7 to NuGet 3.x: %PROGRAMDATA%\NuGet\NuGetDefaults.Config) +Mac/Linux: $XDG_DATA_HOME (typically ~/.local/share) -- `defaultPushSource`: when publishing a package, nuget.org is used as the destination or "push source" unless another is specified, which risks developers accidentally pushing internal packages to a public site. By changing the default push source, administrators can ensure that packages stay internal unless published to nuget.org explicitly. +### NuGetDefaults.Config settings -> [!Note] -> The `NuGetDefaults.Config` file never causes a package source to be removed from a developer's NuGet configuration. That means if the developer has already used NuGet and therefore has the nuget.org package source registered, it won't be removed after the creation of a `NuGetDefaults.Config` file. -> -> Furthermore, neither `NuGetDefaults.Config` or any other mechanism in NuGet can prevent access to package sources like nuget.org. If an organization wishes to block such access, it much use other means such as firewalls to do so. +- `packageSources`: this collection has the same meaning as `packageSources` in regular config files and specifies the default sources in their preferred order. If this setting exists in `NuGetDefaults.Config`, then NuGet doesn't use nuget.org as a default package source. An administrator can thus make sure that everyone using this file is working with the same sources and avoids using nuget.org if desired. + +- `disabledPackageSources`: this collection also has the same meaning as in `NuGet.Config` files, where each affected source is listed by its name and a true/false value indicating whether it's disabled. This allows the source name and URL to remain in `packageSources` without having it turned on by default. Individual developers can then re-enable the source by setting the source's value to false in other `NuGet.Config` files without having to find the correct URL again. This is also useful to supply developers with a full list of internal source URLs for an organization while enabling only an individual team's source by default. -## Example NuGetDefaults.Config and application +- `defaultPushSource`: specifies the default target for `nuget push` operations, overriding the built-in default of nuget.org. Administrators can deploy this setting to avoid publishing internal packages to the public nuget.org by accident, as developers specifically need to use `nuget push -Source` to publish to nuget.org. -The following is an example `NuGetDefaults.Config` file containing each of its allowable sections: +### Example NuGetDefaults.Config and application ```xml - - + + - + - - - + + - - - - + + + From ce28dad33739a2afd6af0fbcfb22ad694898bca7 Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Thu, 26 Oct 2017 15:18:54 -0700 Subject: [PATCH 0341/2943] Fix messy pages --- docs/Create-Packages/Overview-and-Workflow.md | 9 +-------- docs/Reference/ID-Prefix-Reservation.md | 13 +++---------- docs/Release-Notes/NuGet-3.5-RTM.md | 9 +-------- docs/Tools/ps-ref-update-package.md | 9 +-------- 4 files changed, 6 insertions(+), 34 deletions(-) diff --git a/docs/Create-Packages/Overview-and-Workflow.md b/docs/Create-Packages/Overview-and-Workflow.md index 65ae0d3ec..d26cb9421 100644 --- a/docs/Create-Packages/Overview-and-Workflow.md +++ b/docs/Create-Packages/Overview-and-Workflow.md @@ -8,23 +8,16 @@ manager: ghogen ms.date: 7/26/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 3c60f920-457d-4f43-9efe-210c514e5242 +ms.assetid: feb7918c-4709-48a4-a106-8d65c41014dc # optional metadata description: An overview of the process of creating and publishing a NuGet package, with links to other specific parts of the process. keywords: NuGet package creation, NuGet creation overview, NuGet creation workflow, package creation workflow, package creation overview. -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- # Package creation workflow diff --git a/docs/Reference/ID-Prefix-Reservation.md b/docs/Reference/ID-Prefix-Reservation.md index 178ac2c9f..225b8b4a3 100644 --- a/docs/Reference/ID-Prefix-Reservation.md +++ b/docs/Reference/ID-Prefix-Reservation.md @@ -4,28 +4,21 @@ title: ID Prefix Reservation Reference | Microsoft Docs author: diverdan92 ms.author: diverdan92 -manager: unniravindranathanavindranathan +manager: unniravindranathan ms.date: 10/9/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null -#ms.assetid: +ms.assetid: 76c0bb7f-9aaf-4c09-b3fd-f6802f9dd602 # optional metadata description: Package ID Prefix Reservation feature description and author guide. keywords: NuGet package ID, prefix, reservation -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - ananguar - karann-msft -- unniravindranathanavindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: +- unniravindranathan --- diff --git a/docs/Release-Notes/NuGet-3.5-RTM.md b/docs/Release-Notes/NuGet-3.5-RTM.md index a0a245165..770ab6e37 100644 --- a/docs/Release-Notes/NuGet-3.5-RTM.md +++ b/docs/Release-Notes/NuGet-3.5-RTM.md @@ -8,23 +8,16 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 4153ff3f-f97f-4e54-b638-e844f70edf22 +ms.assetid: 082a96b9-607b-4225-864d-e1cea537f591 # optional metadata description: Release notes for NuGet 3.5 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.5 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- diff --git a/docs/Tools/ps-ref-update-package.md b/docs/Tools/ps-ref-update-package.md index 0a9e033f1..549c47898 100644 --- a/docs/Tools/ps-ref-update-package.md +++ b/docs/Tools/ps-ref-update-package.md @@ -8,23 +8,16 @@ manager: ghogen ms.date: 7/17/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 90f4dcb0-6e5a-4948-8ea9-62e0d061d95a +ms.assetid: b4aa92a9-ce47-4d23-ae51-d5683e08a9d5 # optional metadata description: Reference for Update-Package PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Update-Package -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- From 4219a53eb4c4cdef9e3c0c4501074a1caec047d7 Mon Sep 17 00:00:00 2001 From: Vishal Lama Date: Sat, 28 Oct 2017 09:59:19 -0600 Subject: [PATCH 0342/2943] Fix a couple of small typos --- docs/What-is-NuGet.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index 2a4ecf914..21591beed 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -24,7 +24,7 @@ ms.reviewer: # An introduction to NuGet -An essential tool for any modern development platform is a mechanism through which developers can create, share, and consume useful libraries of code. Such libraries are typically referred to as "packages" because they can contain compiled code (as DLLs) along with other content that might be needed in the projects consume those libraries. +An essential tool for any modern development platform is a mechanism through which developers can create, share, and consume useful libraries of code. Such libraries are typically referred to as "packages" because they can contain compiled code (as DLLs) along with other content that might be needed in the projects that consume those libraries. For .NET, the mechanism for sharing code is **NuGet**, which defines how packages for .NET are created, hosted, and consumed, and provides the tools for each of those roles. @@ -38,7 +38,7 @@ Whatever its nature, a host serves as a point of connection between package *cre ![Relationship between package creators, package hosts, and package consumers](media/nuget-roles.png) -A "compatible" package in this case means that it contains assemblies built for at least one target .NET framework that's compatible with the consuming project's target framework. To make a package widely compatible, it's creator compiles separate assemblies for various target frameworks and includes all of them in the same package. When a consumer installs that package, NuGet extracts only those assemblies that are needed by the project. This minimizes the package's footprint in the final application and/or assemblies produced by that project. +A "compatible" package in this case means that it contains assemblies built for at least one target .NET framework that's compatible with the consuming project's target framework. To make a package widely compatible, its creator compiles separate assemblies for various target frameworks and includes all of them in the same package. When a consumer installs that package, NuGet extracts only those assemblies that are needed by the project. This minimizes the package's footprint in the final application and/or assemblies produced by that project. ## NuGet tools From 19ac06be0f068299591ff9015442527383e30e5e Mon Sep 17 00:00:00 2001 From: Vishal Lama Date: Sat, 28 Oct 2017 10:51:25 -0600 Subject: [PATCH 0343/2943] Fix a few typos and minor grammatical errors --- docs/What-is-NuGet.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index 21591beed..77dbd1d2f 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -77,11 +77,11 @@ Instead, NuGet simply maintains a reference list of the packages upon which a pr ![A NuGet reference list is created on package installation and can be used to restore packages elsewhere](media/nuget-restore.png) -With only the reference list, NuGet can then reinstall—that is, restore—all of those packages from public and/or private hosts at any later time. (For this reason, nuget.org does not allow permanent deletion of published packages, although they can be hidden; see [Deleting packages](Policies/deleting-packages.md).) When committing a project to source control, or sharing it in some other way, you need only include the reference list and need not include any package binaries (see [Packages and source control](Consume-Packages/Packages-and-Source-Control.md). +With only the reference list, NuGet can then reinstall—that is, restore—all of those packages from public and/or private hosts at any later time. (For this reason, nuget.org does not allow permanent deletion of published packages, although they can be hidden; see [Deleting packages](Policies/deleting-packages.md).) When committing a project to source control, or sharing it in some other way, you need only include the reference list and need not include any package binaries (see [Packages and source control](Consume-Packages/Packages-and-Source-Control.md).) The computer that receives a project, such as a build server obtaining a copy of the project as part of an automated deployment system, simply asks NuGet to restore dependencies whenever they're needed. Build systems like Visual Studio Team Services provide "NuGet restore" steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository) then open the project in Visual Studio and run a build, Visual Studio automatically restores the necessary NuGet packages. Developers can also tell NuGet to restore packages at any time using the the `nuget restore` CLI command or the `Install-Package` cmdlet in the Package Manager Console. -Clearly, then, NuGet's primarily role where developers are concerned is maintaining that reference list on behalf of your project and providing the means to efficiently restore (and update) those referenced packages. +Clearly, then, NuGet's primary role where developers are concerned is maintaining that reference list on behalf of your project and providing the means to efficiently restore (and update) those referenced packages. How this exactly happens has evolved over the different versions of NuGet, resulting in several *package management formats*, as they're called: @@ -103,7 +103,7 @@ Within an individual project, NuGet does a lot of work to manage the overall dep That is, it's quite common that a project takes a dependency on one or more packages that themselves have the same dependencies. For example, some of the most useful utility packages on nuget.org are employed by many other packages. In the entire dependency graph, ten, you could easily have ten different references to different versions of the same package. However, you don't want to bring multiple versions of that package into the application itself, so NuGet sorts out which single version that everyone can use. (See [Dependency Resolution](Consume-Packages/Dependency-Resolution.md) for more on this topic.) -Beyond that, NuGet maintains all the specifications related to how packages are structured (including [localization](Create-Packages/Creating-Localized-Packages.md) and [debug symbols](Create-Packages/Symbol-Packages.md) and how they are referenced (including [version ranges](reference/package-versioning.md#version-ranges-and-wildcards) and [pre-release versions](create-packages/Prerelease-Packages.md). NuGet also and provides APIs for credential providers (for accessing private hosts) and for developers who write Visual Studio extensions and project templates. +Beyond that, NuGet maintains all the specifications related to how packages are structured (including [localization](Create-Packages/Creating-Localized-Packages.md) and [debug symbols](Create-Packages/Symbol-Packages.md)) and how they are referenced (including [version ranges](reference/package-versioning.md#version-ranges-and-wildcards) and [pre-release versions](create-packages/Prerelease-Packages.md).) NuGet also provides APIs for credential providers (for accessing private hosts) and for developers who write Visual Studio extensions and project templates. Take a moment to browse the table of contents for this documentation, and you'll see all of these capabilities represented there, along with release notes dating back to NuGet's beginnings. From fe1a52d59b5b2b6174294f6fdd3da7b4553ed838 Mon Sep 17 00:00:00 2001 From: Steven Moschidis Date: Mon, 30 Oct 2017 15:47:51 +0000 Subject: [PATCH 0344/2943] fix casing in examples as those values are case sensitive --- docs/Consume-Packages/Package-References-in-Project-Files.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Consume-Packages/Package-References-in-Project-Files.md b/docs/Consume-Packages/Package-References-in-Project-Files.md index b630fca22..7d21d775b 100644 --- a/docs/Consume-Packages/Package-References-in-Project-Files.md +++ b/docs/Consume-Packages/Package-References-in-Project-Files.md @@ -86,7 +86,7 @@ You might be using a dependency purely as a development harness and might not wa - All + all @@ -122,7 +122,7 @@ In the following example, everything except the content files from the package w - All + all contentFiles contentFiles;analyzers From f278714f1148f250d92bf04a2992b8a516bd0827 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 30 Oct 2017 09:25:50 -0700 Subject: [PATCH 0345/2943] Tweak in response to comment --- docs/Tools/cli-ref-install.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/Tools/cli-ref-install.md b/docs/Tools/cli-ref-install.md index d4c2ad5c9..682598ed9 100644 --- a/docs/Tools/cli-ref-install.md +++ b/docs/Tools/cli-ref-install.md @@ -25,14 +25,14 @@ ms.reviewer: **Applies to:** package consumption • **Supported versions:** all -Downloads and installs a package into a project using the specified package sources. +Downloads and installs a package into a project, defaulting to the current folder, using specified package sources. > [!Tip] -> The nuget.exe CLI downloads packages within the context of a project. To download a package directly outside the context of a project, visit the package's page on [nuget.org](https://www.nuget.org) and select the **Download** link. +> To download a package directly outside the context of a project, visit the package's page on [nuget.org](https://www.nuget.org) and select the **Download** link. -If no sources are specified, those listed in the global configuration file, `%APPDATA%\NuGet\NuGet.Config`, will be used. See [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md) for additional details. +If no sources are specified, those listed in the global configuration file, `%APPDATA%\NuGet\NuGet.Config`, are used. See [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md) for additional details. -If no specific packages are specified, `install` installs all packages listed in the project's `packages.config` file, making it similar to [`restore`](#restore). In this case, `install` does not work with projects that use `project.json`. +If no specific packages are specified, `install` installs all packages listed in the project's `packages.config` file, making it similar to [`restore`](#restore). (The `install` command does not work with `project.json`.) The `install` command does not modify a project file or `packages.config`; in this way it's similar to `restore` in that it only adds packages to disk but does not change a project's dependencies. From e40cca87455c8d682bfe1081e1429f322ad75edb Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 30 Oct 2017 15:58:46 -0700 Subject: [PATCH 0346/2943] Update NuGet-FAQ.md --- docs/Policies/NuGet-FAQ.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index 634cd47a1..2697648df 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -166,6 +166,10 @@ This is not an issue when using PackageReference, as each project file contains ## Managing packages on nuget.org +**Why do you recommend editing the nuspec and uploading a new package for making changes to package metadata?** + +NuGet will be implementing package signing. A design principle of package signing is that signed package content must be immutable, which includes the nuspec. Editing the package metadata results in changes to the nuspec, invalidating existing signatures. We recommend modifying existing workflows to not require editing the package metadata after the package has been created. + **Is it possible to reserve names for packages that will be published in future?** Yes. You can reserve IDs for packages on [nuget.org](https://www.nuget.org/) by requesting a package ID prefix for your account. In order to request a package ID prefix, send mail to account (at) nuget.org with the package owner display name, and the requested package ID prefix. From cd63c667815cc78841052a3228b1996ffd9278c2 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 30 Oct 2017 15:59:11 -0700 Subject: [PATCH 0347/2943] Update NuGet-FAQ.md --- docs/Policies/NuGet-FAQ.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index 2697648df..63d8e4b50 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -5,7 +5,7 @@ title: NuGet Frequently-Asked Questions | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 8/25/2017 +ms.date: 10/30/2017 ms.topic: article ms.prod: nuget #ms.service: From e0ed203ace4f8b181f0aea84a2db0b95c42bbd46 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 30 Oct 2017 16:03:41 -0700 Subject: [PATCH 0348/2943] Update NuGet-FAQ.md --- docs/Policies/NuGet-FAQ.md | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index 63d8e4b50..38105408e 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -166,10 +166,14 @@ This is not an issue when using PackageReference, as each project file contains ## Managing packages on nuget.org -**Why do you recommend editing the nuspec and uploading a new package for making changes to package metadata?** +**Can I edit package metadata after it's been uploaded? Why do you recommend editing the nuspec and uploading a new package for making changes to package metadata?** NuGet will be implementing package signing. A design principle of package signing is that signed package content must be immutable, which includes the nuspec. Editing the package metadata results in changes to the nuspec, invalidating existing signatures. We recommend modifying existing workflows to not require editing the package metadata after the package has been created. +Note that dependencies listed for your package are generated automatically from the package itself and cannot be edited. + +In addition, uploading packages to [staging.nuget.org](http://staging.nuget.org) is a great way to test and validate your package without making a package available in the public gallery. + **Is it possible to reserve names for packages that will be published in future?** Yes. You can reserve IDs for packages on [nuget.org](https://www.nuget.org/) by requesting a package ID prefix for your account. In order to request a package ID prefix, send mail to account (at) nuget.org with the package owner display name, and the requested package ID prefix. @@ -198,16 +202,6 @@ It is possible to share dependencies between multiple packages, making the total Dependencies are mostly static and never change. When fixing a bug in code, the dependencies may not need to be updated. If you bundle dependencies, you end up reshipping larger packages every time. By splitting NuGet packages into related dependencies, upgrades are much more fine-grained for consumers of your package. -**Can I edit package information after it's been uploaded?** - -Yes, in fact, you first get an opportunity to edit package metadata during the upload process. When you upload a package, the NuGet gallery performs some static analysis and indicates issues. If the package is accepted, you see a page that allows you to edit any of the metadata before the package is added to the gallery. - -For a package already in the gallery, sign into nuget.org, select on your username, select **Manage my packages**, then select the package you want to manage. From that page, select **Edit Package** on the left-hand side and make the desired changes to the metadata. - -Note that dependencies listed for your package are generated automatically from the package itself and cannot be edited. - -In addition, uploading packages to [staging.nuget.org](http://staging.nuget.org) is a great way to check your package and test the editing process without making a package available in the public gallery. - **Why can't I download packages from or upload packages to nuget.org?** First make sure you're using the latest versions of NuGet. If that continues to fail, [contact support](https://www.nuget.org/policies/Contact) and provide additional connection troubleshooting information including: From 208c16dd43c511a67ec8a42598348867630f6a26 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 31 Oct 2017 10:34:51 -0700 Subject: [PATCH 0349/2943] Update package-restore.md can't do restore from package manager console. reinstall is not same as restore. --- docs/includes/package-restore.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/includes/package-restore.md b/docs/includes/package-restore.md index ba4917ba7..350efd09f 100644 --- a/docs/includes/package-restore.md +++ b/docs/includes/package-restore.md @@ -1,5 +1,3 @@ -- **Package Manager console** (Visual Studio, **Tools > NuGet Package Manager > Package Manager Console**): Run the `Update-Package -reinstall -ProjectName ` command where \ is the name of the affected project as it appears in Solution Explorer. Use `Update-Package -reinstall` by itself to restore all packages in the solution. See [Update-Package](../tools/ps-ref-update-package.md). You can also reinstall a single package, if desired. - - **Package Manager UI** (Visual Studio): right-click the solution in Solution Explorer and select **Restore NuGet Packages**. If one or more individual packages are still not installed properly (meaning that Solution Explorer shows an error icon), then use the Package Manager UI to uninstall the affected packages and reinstall them. See [Reinstalling and updating packages](../Consume-Packages/Reinstalling-and-Updating-Packages.md) -- **Command line**: use the [nuget restore](../tools/cli-ref-restore.md) command. Simply running `nuget restore` in the project folder attempts to restore the project's dependencies. \ No newline at end of file +- **Command line**: use the [nuget restore](../tools/cli-ref-restore.md) command. Simply running `nuget restore` in the project folder attempts to restore the project's dependencies. From 4dc114f437512e4c779ea00545c1aedd7c3b4c57 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 31 Oct 2017 10:39:01 -0700 Subject: [PATCH 0350/2943] Update Package-Manager-Console.md --- docs/Tools/Package-Manager-Console.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index 24aecf633..796546f35 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -45,7 +45,7 @@ For example, finding and installing a package is done with three easy steps: In this topic: -- [Opening the console](#opening-the-console) +- [Opening the console](#opening-the-console-and-console-controls) - [Installing a package](#installing-a-package) - [Uninstalling a package](#uninstalling-a-package) - [Finding a package](#finding-a-package) From 6f6ac18bc9f81169d9b7ef47ded3f0337ffa08e1 Mon Sep 17 00:00:00 2001 From: Sendhil Panchadsaram Date: Tue, 31 Oct 2017 11:48:08 -0700 Subject: [PATCH 0351/2943] Fixing typo --- docs/Create-Packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index a36ed026d..9b07ff12a 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -195,7 +195,7 @@ The folder conventions are as follows: Because your folder structure can contain any number of assemblies for any number of target frameworks, this method is necessary when creating packages that support multiple frameworks -In any case, once you have the desired folder structure in place, run the following command in that foler to create the `.nuspec` file: +In any case, once you have the desired folder structure in place, run the following command in that folder to create the `.nuspec` file: ``` nuget spec From 2644f33f02f15f6e2ff978eb5e4d476b7983cb10 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Wed, 1 Nov 2017 11:32:56 -0700 Subject: [PATCH 0352/2943] Update NuGet-FAQ.md --- docs/Policies/NuGet-FAQ.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index 38105408e..7692c60ac 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -37,6 +37,7 @@ In this topic: - [Creating and publishing packages](#creating-and-publishing-packages) - [Working with packages](#working-with-packages) - [Managing packages on nuget.org](#managing-packages-on-nugetorg) +- [NuGet.org not accessible](#nugetorg-not-accessible) ## Getting started @@ -202,6 +203,8 @@ It is possible to share dependencies between multiple packages, making the total Dependencies are mostly static and never change. When fixing a bug in code, the dependencies may not need to be updated. If you bundle dependencies, you end up reshipping larger packages every time. By splitting NuGet packages into related dependencies, upgrades are much more fine-grained for consumers of your package. +## NuGet.org not accessible + **Why can't I download packages from or upload packages to nuget.org?** First make sure you're using the latest versions of NuGet. If that continues to fail, [contact support](https://www.nuget.org/policies/Contact) and provide additional connection troubleshooting information including: From cc246220d20de460a155812efc55d9c08402467a Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 1 Nov 2017 16:04:30 -0700 Subject: [PATCH 0353/2943] Tweaks --- docs/Policies/NuGet-FAQ.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index 7692c60ac..d71f75081 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -37,7 +37,7 @@ In this topic: - [Creating and publishing packages](#creating-and-publishing-packages) - [Working with packages](#working-with-packages) - [Managing packages on nuget.org](#managing-packages-on-nugetorg) -- [NuGet.org not accessible](#nugetorg-not-accessible) +- [nuget.org not accessible](#nugetorg-not-accessible) ## Getting started @@ -203,11 +203,11 @@ It is possible to share dependencies between multiple packages, making the total Dependencies are mostly static and never change. When fixing a bug in code, the dependencies may not need to be updated. If you bundle dependencies, you end up reshipping larger packages every time. By splitting NuGet packages into related dependencies, upgrades are much more fine-grained for consumers of your package. -## NuGet.org not accessible +## nuget.org not accessible **Why can't I download packages from or upload packages to nuget.org?** -First make sure you're using the latest versions of NuGet. If that continues to fail, [contact support](https://www.nuget.org/policies/Contact) and provide additional connection troubleshooting information including: +First, make sure you're using the latest versions of NuGet. If that version continues to fail, [contact support](https://www.nuget.org/policies/Contact) and provide additional connection troubleshooting information including: - The version of NuGet you're using - The package sources you're using From c86401064375e2d75755bd101d03dbfaa45485f7 Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Thu, 2 Nov 2017 08:08:11 -0700 Subject: [PATCH 0354/2943] Document the HTTP-based NuGet V3 API Introduce references for V3 API: - Overview - Service Index - Push and Delete - Search - Autocomplete - Package Metadata - Package Content - Report Abuse URL Progress on https://github.com/NuGet/NuGetGallery/issues/4103 --- docs/API/NuGet-API-V3.md | 40 +-- ...-Credential-Providers-for-Visual-Studio.md | 102 +----- docs/API/NuGet-Protocols.md | 85 +++-- docs/API/_data/autocomplete-id-result.json | 25 ++ .../_data/autocomplete-version-result.json | 10 + docs/API/_data/newtonsoft.json.6.0.4.xml | 16 + .../API/_data/package-base-address-index.json | 10 + .../API/_data/package-registration-index.json | 50 +++ docs/API/_data/package-registration-leaf.json | 8 + docs/API/_data/package-registration-page.json | 55 ++++ docs/API/_data/search-result.json | 70 ++++ docs/API/_data/service-index.json | 39 +++ docs/API/introduction.md | 3 + docs/API/nuget-exe-Credential-Providers.md | 99 +----- docs/API/overview.md | 145 +++++++++ docs/API/package-base-address-resource.md | 185 +++++++++++ docs/API/package-publish-resource.md | 120 +++++++ docs/API/registration-base-url-resource.md | 306 ++++++++++++++++++ docs/API/report-abuse-resource.md | 86 +++++ .../search-autocomplete-service-resource.md | 160 +++++++++ docs/API/search-query-service-resource.md | 149 +++++++++ docs/API/service-index.md | 128 ++++++++ docs/Reference/Errors-and-Warnings.md | 4 +- docs/Reference/ID-Prefix-Reservation.md | 53 +-- docs/Reference/NuGet-Client-SDK.md | 36 +++ ...-Credential-Providers-for-Visual-Studio.md | 101 ++++++ .../nuget-exe-Credential-Providers.md | 98 ++++++ docs/TOC.md | 17 +- docs/_breadcrumb/toc.yml | 2 +- docs/docfx.json | 4 +- docs/index.md | 6 +- 31 files changed, 1898 insertions(+), 314 deletions(-) create mode 100644 docs/API/_data/autocomplete-id-result.json create mode 100644 docs/API/_data/autocomplete-version-result.json create mode 100644 docs/API/_data/newtonsoft.json.6.0.4.xml create mode 100644 docs/API/_data/package-base-address-index.json create mode 100644 docs/API/_data/package-registration-index.json create mode 100644 docs/API/_data/package-registration-leaf.json create mode 100644 docs/API/_data/package-registration-page.json create mode 100644 docs/API/_data/search-result.json create mode 100644 docs/API/_data/service-index.json create mode 100644 docs/API/introduction.md create mode 100644 docs/API/overview.md create mode 100644 docs/API/package-base-address-resource.md create mode 100644 docs/API/package-publish-resource.md create mode 100644 docs/API/registration-base-url-resource.md create mode 100644 docs/API/report-abuse-resource.md create mode 100644 docs/API/search-autocomplete-service-resource.md create mode 100644 docs/API/search-query-service-resource.md create mode 100644 docs/API/service-index.md create mode 100644 docs/Reference/NuGet-Client-SDK.md create mode 100644 docs/Reference/extensibility/NuGet-Credential-Providers-for-Visual-Studio.md create mode 100644 docs/Reference/extensibility/nuget-exe-Credential-Providers.md diff --git a/docs/API/NuGet-API-V3.md b/docs/API/NuGet-API-V3.md index 36f31aa22..3fbc136db 100644 --- a/docs/API/NuGet-API-V3.md +++ b/docs/API/NuGet-API-V3.md @@ -1,39 +1,3 @@ --- -# required metadata  - -title: NuGet v3 Client and NuGetGallery APIs | Microsoft Docs -author: kraigb -ms.author: kraigb -manager: ghogen -ms.date: 1/9/2017 -ms.topic: article -ms.prod: nuget -#ms.service: -ms.technology: null - -ms.assetid: d1a393b7-51b1-4840-b1a8-fdd76455077d - -# optional metadata - -description: The NuGet and NuGetGallery APIs are evolving and not yet documented, but examples are available on Dave Glick's blog. -keywords: NuGet API, NuGetGallery API, NuGet v3 libraries -#ROBOTS: -#audience: -#ms.devlang: -ms.reviewer: -- karann-msft -- unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: ---- - -# NuGet API v3 - -The NuGet v3 Client and NuGetGallery APIs are constantly evolving and we are working on having a stable surface area that we can document soon. - -In the meantime, you can find examples and documentation for some of the API in the following blog series by Dave Glick: - -- [Exploring the NuGet v3 Libraries, Part 1: Introduction and concepts](http://daveaglick.com/posts/exploring-the-nuget-v3-libraries-part-1) -- [Exploring the NuGet v3 Libraries, Part 2: Searching for packages](http://daveaglick.com/posts/exploring-the-nuget-v3-libraries-part-2) -- [Exploring the NuGet v3 Libraries, Part 3: Installing packages](http://daveaglick.com/posts/exploring-the-nuget-v3-libraries-part-3) +redirect_url: /nuget/reference/nuget-client-sdk +--- \ No newline at end of file diff --git a/docs/API/NuGet-Credential-Providers-for-Visual-Studio.md b/docs/API/NuGet-Credential-Providers-for-Visual-Studio.md index ed3976bb8..f179a7585 100644 --- a/docs/API/NuGet-Credential-Providers-for-Visual-Studio.md +++ b/docs/API/NuGet-Credential-Providers-for-Visual-Studio.md @@ -1,101 +1,3 @@ --- -# required metadata - -title: NuGet credential providers for Visual Studio | Microsoft Docs -author: kraigb -ms.author: kraigb -manager: ghogen -ms.date: 1/9/2017 -ms.topic: article -ms.prod: nuget -#ms.service: -ms.technology: null -ms.assetid: 9c7f6d16-f437-47c4-82d4-6c996e0b18ec - -# optional metadata - -description: NuGet credential providers authenticate with feeds by implementing the IVsCredentialProvider interface in a Visual Studio extension. -keywords: NuGet credential providers, authenticate with feed, authenticate with gallery, NuGet visual studio extension -#ROBOTS: -#audience: -#ms.devlang: -ms.reviewer: -- karann-msft -- unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - ---- - -# Authenticating feeds in Visual Studio with NuGet credential providers - -The NuGet Visual Studio Extension 3.6+ supports credential providers, which enable NuGet to work with authenticated feeds. -After you install a NuGet credential provider for Visual Studio, the NuGet Visual Studio extension will automatically acquire and refresh credentials for authenticated feeds as necessary. - -A sample implementation can be found in [the VsCredentialProvider sample](https://github.com/NuGet/Samples/tree/master/VsCredentialProvider). - -> [!Note] -> NuGet credential providers for Visual Studio must be installed as a regular Visual Studio extension and will require [Visual Studio 2017](https://aka.ms/vs/15/preview/vs_enterprise) (currently in preview) or above. -> -> NuGet credential providers for Visual Studio work only in Visual Studio (not in dotnet restore or nuget.exe). For credential providers with nuget.exe, see [nuget.exe Credential Providers](../api/nuget-exe-Credential-providers.md). - -## Available NuGet credential providers for Visual Studio - -There is a credential provider built into the Visual Studio NuGet extension to support Visual Studio Team Services. - -The NuGet Visual Studio Extension uses an internal `VsCredentialProviderImporter` which also scans for plug-in credential providers. These plug-in credential providers must be discoverable as a MEF Export of type `IVsCredentialProvider`. - -Available plug-in credential providers include: - -- [MyGet Credential Provider for Visual Studio 2017](http://docs.myget.org/docs/reference/credential-provider-for-visual-studio) - -## Creating a NuGet credential provider for Visual Studio - -The NuGet Visual Studio Extension 3.6+ implements an internal CredentialService that is used to acquire credentials. The CredentialService has a list of built-in and plug-in credential providers. Each provider is tried sequentially until credentials are acquired. - -During credential acquisition, the credential service will try credential providers in the following order, stopping as soon as credentials are acquired: - -1. Credentials will be fetched from NuGet configuration files (using the built-in `SettingsCredentialProvider`). -1. If the package source is on Visual Studio Team Services, the `VisualStudioAccountProvider` will be used. -1. All other plug-in credential providers will be tried sequentially. -1. If no credentials have been acquired yet, the user will be prompted for credentials using a standard basic authentication dialog. - -### Implementing IVsCredentialProvider.GetCredentialsAsync - -To create a NuGet credential provider for Visual Studio, create a Visual Studio Extension that exposes a public MEF Export implementing the `IVsCredentialProvider` type, and adheres to the principles outlined below. - -```cs -public interface IVsCredentialProvider -{ - Task GetCredentialsAsync( - Uri uri, - IWebProxy proxy, - bool isProxyRequest, - bool isRetry, - bool nonInteractive, - CancellationToken cancellationToken); -} -``` - -A sample implementation can be found in [the VsCredentialProvider sample](https://github.com/NuGet/Samples/tree/master/VsCredentialProvider). - -Each NuGet credential provider for Visual Studio must: - -1. Determine whether it can provide credentials for the targeted URI before initiating credential acquisition. If the provider cannot supply credentials for the targeted source, then it should return `null`. -1. If the provider does handle requests for the targeted URI, but cannot supply credentials, an exception should be thrown. - -A custom NuGet credential provider for Visual Studio must implement the `IVsCredentialProvider` interface available in the [NuGet.VisualStudio package](https://www.nuget.org/packages/NuGet.VisualStudio/). - -#### GetCredentialAsync - -| Input Parameter |Description| -| ----------------|-----------| -| Uri uri | The package source Uri for which credentials are being requested.| -| IWebProxy proxy | Web proxy to use when communicating on the network. Null if there is no proxy authentication configured. | -| bool isProxyRequest | True if this request is to get proxy authentication credentials. If the implementation is not valid for acquiring proxy credentials, then null should be returned. | -| bool isRetry | True if credentials were previously requested for this Uri, but the supplied credentials did not allow authorized access. | -| bool nonInteractive | If true, the credential provider must suppress all user prompts and use default values instead. | -| CancellationToken cancellationToken | This cancellation token should be checked to determine if the operation requesting credentials has been cancelled. | - -**Return value**: A credentials object implementing the [`System.Net.ICredentials` interface](https://msdn.microsoft.com/library/system.net.icredentials.aspx). +redirect_url: /nuget/reference/extensibility/nuget-credential-providers-for-visual-studio +--- \ No newline at end of file diff --git a/docs/API/NuGet-Protocols.md b/docs/API/NuGet-Protocols.md index 76bae7510..75fe3b256 100644 --- a/docs/API/NuGet-Protocols.md +++ b/docs/API/NuGet-Protocols.md @@ -1,11 +1,11 @@ --- # required metadata  -title: NuGet Protocols | Microsoft Docs +title: nuget.org Protocols | Microsoft Docs author: anangaur ms.author: anangaur manager: unniravindranathan -ms.date: 10/3/2017 +ms.date: 10/30/2017 ms.topic: article ms.prod: nuget ms.technology: null @@ -13,77 +13,102 @@ ms.assetid: ba1d9742-9f1c-42ff-8c30-8e953e23c501 # optional metadata -description: The evolving nuget.org protocols to interact with nuget.org by NuGet clients. +description: The evolving nuget.org protocols to interact with NuGet clients. ms.reviewer: - kraigb - karann-msft --- -# NuGet Protocols +# nuget.org Protocols -To interact with nuget.org, clients need to follow certain protocols. Because these protocols keep evolving, clients must identify the protocol version they use when calling nuget.org APIs. This allows nuget.org to introduce changes in a non-breaking way for the old clients. +To interact with nuget.org, clients need to follow certain protocols. Because these protocols keep evolving, clients +must identify the protocol version they use when calling specific nuget.org APIs. This allows nuget.org to introduce +changes in a non-breaking way for the old clients. + +> [!Note] +> The APIs documented on this page are specific to nuget.org and there is no expectation for other NuGet server +> implementations to introduce these APIs. + +For information about the NuGet API implemented broadly across the NuGet ecosystem, see the +[API overview](overview.md). This topic lists various protocols as and when they come to existence. ## NuGet protocol version 4.1.0 -This protocol specifies usage of verify-scope keys to interact with services other than nuget.org, to validate a package against a nuget.org account. +The 4.1.0 protocol specifies usage of verify-scope keys to interact with services other than nuget.org, to validate a +package against a nuget.org account. Note that the `4.1.0` version number is an opaque string but happens to coincide +with the first version of the official NuGet client that supported this protocol. -Validation ensures that the user-created API keys are used only with nuget.org, and that other verification or validation from a third-party service is handled through a one-time use verify-scope keys. These verify-scope keys can be used to validate that the package belongs to a particular user (account) on nuget.org. +Validation ensures that the user-created API keys are used only with nuget.org, and that other verification or +validation from a third-party service is handled through a one-time use verify-scope keys. These verify-scope keys can +be used to validate that the package belongs to a particular user (account) on nuget.org. ### Client requirement -If a client interacts with other services and needs to validate whether a package belongs to a particular user (account), it should use this protocol and use the verify scope keys and not the API keys from nuget.org. - Clients are required to pass the following header when they make API calls to **push** packages to nuget.org: ``` X-NuGet-Protocol-Version: 4.1.0 ``` -### Protocol usage details +Note that the pre-existing `X-NuGet-Client-Version` header has the same purpose but is now deprecated and should no +longer be used. + +The **push** protocol itself is described in the documentation for the +[`PackagePublish` resource](package-publish-resource.md). + +If a client interacts with external services and needs to validate whether a package belongs to a particular user +(account), it should use the following protocol and use the verify-scope keys and not the API keys from nuget.org. + +### API to request a verify-scope key -#### API to request a verify scope key This API is used to get a verify-scope key for a nuget.org author to validate a package owned by him/her. ``` -POST api/v2/package/create-verification-key/{id}/{version} +POST api/v2/package/create-verification-key/{ID}/{VERSION} ``` -Request parameters: +#### Request parameters -| Name | In | Type | Notes| -|:------------- |:-------------|:----|:-----| -| id | URL | string | Required: the package identidier for which theverify scope key is requested. | -| version | URL | string | Optional: package version| -| X-NuGet-ApiKey | Header | string | Required: for example, `X-NuGet-ApiKey={USER_API_KEY}` | +Name | In | Type | Required | Notes +-------------- | ------ | ------ | -------- | ----- +ID | URL | string | yes | The package identidier for which the verify scope key is requested +VERSION | URL | string | no | The package version +X-NuGet-ApiKey | Header | string | yes | For example, `X-NuGet-ApiKey: {USER_API_KEY}` -Response: +#### Response ``` -Response: { "Key": "{Verify scope key from nuget.org}", "Expires": "{Date}" } - ``` -#### API to verify the verify scope key +### API to verify the verify scope key -This API is used to validate a verify-scope key for package owned by the nuget.org author +This API is used to validate a verify-scope key for package owned by the nuget.org author. ``` -GET api/v2/package/verifykey/{id}/{version} +GET api/v2/verifykey/{ID}/{VERSION} ``` -Request parameters: +#### Request parameters -| Name | In | Type | Notes| -|:------------- |:-------------|:----|:-----| -| id | URL | string | Required: the package identifier for which the verify scope key is requested. | -| version | URL | string | Optional: package version | -| X-NuGet-ApiKey | Header | string | Required: for example, `X-NuGet-ApiKey={VERIFY_SCOPE_KEY}` | +Name | In | Type | Required | Notes +------------- | ------ | ------ | -------- | ----- +ID | URL | string | yes | The package identifier for which the verify scope key is requested +VERSION | URL | string | no | The package version +X-NuGet-ApiKey | Header | string | yes | For example, `X-NuGet-ApiKey: {VERIFY_SCOPE_KEY}` > [!Note] > This verify scope API key expires in a day's time or on first use, whichever occurs first. + +#### Response + +Status Code | Meaning +----------- | ------- +200 | The API key is valid +403 | The API key is invalid or not authorized to push against the package +404 | The package referred to by `ID` and `VERSION` (optional) does not exist diff --git a/docs/API/_data/autocomplete-id-result.json b/docs/API/_data/autocomplete-id-result.json new file mode 100644 index 000000000..d13ddb8d9 --- /dev/null +++ b/docs/API/_data/autocomplete-id-result.json @@ -0,0 +1,25 @@ +{ + "totalHits": 571, + "data": [ + "WindowsAzure.Storage", + "Storage.Net", + "CK.Storage", + "NCL.Storage", + "DK.Storage", + "Nine.Storage.Test", + "Touch.Storage.Aws", + "StorageAPIClient", + "StorageAccess", + "Storage.Net.Microsoft.Azure.Storage", + "UnofficialAzure.StorageClient", + "StorageAccess12", + "AWSSDK.StorageGateway", + "StorageExtensions", + "Cloud.Storage", + "lighthouse.storage", + "ZU.Storage.Redis", + "Magicodes.Storage", + "Masticore.Storage", + "hq.storage" + ] +} \ No newline at end of file diff --git a/docs/API/_data/autocomplete-version-result.json b/docs/API/_data/autocomplete-version-result.json new file mode 100644 index 000000000..4663a254d --- /dev/null +++ b/docs/API/_data/autocomplete-version-result.json @@ -0,0 +1,10 @@ +{ + "data": [ + "4.3.0-preview3-4168", + "4.3.0-preview4", + "4.3.0-rtm-4324", + "4.3.0", + "4.4.0-preview3-4475", + "4.4.0" + ] +} \ No newline at end of file diff --git a/docs/API/_data/newtonsoft.json.6.0.4.xml b/docs/API/_data/newtonsoft.json.6.0.4.xml new file mode 100644 index 000000000..4f361ab9c --- /dev/null +++ b/docs/API/_data/newtonsoft.json.6.0.4.xml @@ -0,0 +1,16 @@ + + + + Newtonsoft.Json + 6.0.4 + Json.NET + James Newton-King + James Newton-King + https://raw.github.com/JamesNK/Newtonsoft.Json/master/LICENSE.md + http://james.newtonking.com/json + false + Json.NET is a popular high-performance JSON framework for .NET + en-US + json + + \ No newline at end of file diff --git a/docs/API/_data/package-base-address-index.json b/docs/API/_data/package-base-address-index.json new file mode 100644 index 000000000..2a7014b23 --- /dev/null +++ b/docs/API/_data/package-base-address-index.json @@ -0,0 +1,10 @@ +{ + "versions": [ + "0.5.0", + "0.7.0", + "0.11.0", + "0.12.0", + "0.14.0", + "1.0.0" + ] +} \ No newline at end of file diff --git a/docs/API/_data/package-registration-index.json b/docs/API/_data/package-registration-index.json new file mode 100644 index 000000000..59d3ae709 --- /dev/null +++ b/docs/API/_data/package-registration-index.json @@ -0,0 +1,50 @@ +{ + "count": 1, + "items": [ + { + "@id": "https://api.nuget.org/v3/registration3/nuget.server.core/index.json#page/3.0.0-beta/3.0.0-beta", + "count": 1, + "items": [ + { + "@id": "https://api.nuget.org/v3/registration3/nuget.server.core/3.0.0-beta.json", + "catalogEntry": { + "@id": "https://api.nuget.org/v3/catalog0/data/2017.10.05.18.41.33/nuget.server.core.3.0.0-beta.json", + "authors": ".NET Foundation", + "dependencyGroups": [ + { + "@id": "https://api.nuget.org/v3/catalog0/data/2017.10.05.18.41.33/nuget.server.core.3.0.0-beta.json#dependencygroup", + "dependencies": [ + { + "@id": "https://api.nuget.org/v3/catalog0/data/2017.10.05.18.41.33/nuget.server.core.3.0.0-beta.json#dependencygroup/nuget.core", + "id": "NuGet.Core", + "range": "[2.14.0, )", + "registration": "https://api.nuget.org/v3/registration3/nuget.core/index.json" + } + ] + } + ], + "description": "Core library for creating a Web Application used to host a simple NuGet feed", + "iconUrl": "", + "id": "NuGet.Server.Core", + "language": "", + "licenseUrl": "https://raw.githubusercontent.com/NuGet/NuGet.Server/dev/LICENSE.txt", + "listed": true, + "minClientVersion": "2.6", + "packageContent": "https://api.nuget.org/v3-flatcontainer/nuget.server.core/3.0.0-beta/nuget.server.core.3.0.0-beta.nupkg", + "projectUrl": "https://github.com/NuGet/NuGet.Server", + "published": "2017-10-05T18:40:32.43+00:00", + "requireLicenseAcceptance": false, + "summary": "", + "tags": [ "" ], + "title": "", + "version": "3.0.0-beta" + }, + "packageContent": "https://api.nuget.org/v3-flatcontainer/nuget.server.core/3.0.0-beta/nuget.server.core.3.0.0-beta.nupkg", + "registration": "https://api.nuget.org/v3/registration3/nuget.server.core/index.json" + } + ], + "lower": "3.0.0-beta", + "upper": "3.0.0-beta" + } + ] +} \ No newline at end of file diff --git a/docs/API/_data/package-registration-leaf.json b/docs/API/_data/package-registration-leaf.json new file mode 100644 index 000000000..7eac0c826 --- /dev/null +++ b/docs/API/_data/package-registration-leaf.json @@ -0,0 +1,8 @@ +{ + "@id": "https://api.nuget.org/v3/registration3/nuget.versioning/4.3.0.json", + "catalogEntry": "https://api.nuget.org/v3/catalog0/data/2017.08.11.18.24.22/nuget.versioning.4.3.0.json", + "listed": true, + "packageContent": "https://api.nuget.org/v3-flatcontainer/nuget.versioning/4.3.0/nuget.versioning.4.3.0.nupkg", + "published": "2017-08-11T18:24:14.36+00:00", + "registration": "https://api.nuget.org/v3/registration3/nuget.versioning/index.json" +} \ No newline at end of file diff --git a/docs/API/_data/package-registration-page.json b/docs/API/_data/package-registration-page.json new file mode 100644 index 000000000..3eb52c99c --- /dev/null +++ b/docs/API/_data/package-registration-page.json @@ -0,0 +1,55 @@ +{ + "count": 2, + "lower": "1.0.531", + "parent": "https://api.nuget.org/v3/registration3/ravendb.client/index.json", + "upper": "1.0.729-unstable", + "items": [ + { + "@id": "https://api.nuget.org/v3/registration3/ravendb.client/1.0.531.json", + "@type": "Package", + "commitId": "e0b9ca79-75b5-414f-9e3e-de9534b5cfd1", + "commitTimeStamp": "2017-10-26T14:12:19.3439088Z", + "catalogEntry": { + "@id": "https://api.nuget.org/v3/catalog0/data/2015.02.01.11.38.37/ravendb.client.1.0.531.json", + "@type": "PackageDetails", + "authors": "Hibernating Rhinos", + "iconUrl": "http://static.ravendb.net/logo-for-nuget.png", + "id": "RavenDB.Client", + "licenseUrl": "http://www.ravendb.net/licensing", + "listed": false, + "packageContent": "https://api.nuget.org/v3-flatcontainer/ravendb.client/1.0.531/ravendb.client.1.0.531.nupkg", + "projectUrl": "http://www.ravendb.net/", + "published": "1900-01-01T00:00:00+00:00", + "requireLicenseAcceptance": true, + "title": "RavenDB (Client Only)", + "version": "1.0.531" + }, + "packageContent": "https://api.nuget.org/v3-flatcontainer/ravendb.client/1.0.531/ravendb.client.1.0.531.nupkg", + "registration": "https://api.nuget.org/v3/registration3/ravendb.client/index.json" + }, + { + "@id": "https://api.nuget.org/v3/registration3/ravendb.client/1.0.729-unstable.json", + "@type": "Package", + "commitId": "e0b9ca79-75b5-414f-9e3e-de9534b5cfd1", + "commitTimeStamp": "2017-10-26T14:12:19.3439088Z", + "catalogEntry": { + "@id": "https://api.nuget.org/v3/catalog0/data/2015.02.01.18.22.05/ravendb.client.1.0.729-unstable.json", + "@type": "PackageDetails", + "authors": "Hibernating Rhinos", + "iconUrl": "http://static.ravendb.net/logo-for-nuget.png", + "id": "RavenDB.Client", + "licenseUrl": "http://www.ravendb.net/licensing", + "listed": false, + "packageContent": "https://api.nuget.org/v3-flatcontainer/ravendb.client/1.0.729-unstable/ravendb.client.1.0.729-unstable.nupkg", + "projectUrl": "http://www.ravendb.net/", + "published": "1900-01-01T00:00:00+00:00", + "requireLicenseAcceptance": true, + "summary": "This package includes the clinet API of RavenDB.", + "title": "RavenDB Client", + "version": "1.0.729-Unstable" + }, + "packageContent": "https://api.nuget.org/v3-flatcontainer/ravendb.client/1.0.729-unstable/ravendb.client.1.0.729-unstable.nupkg", + "registration": "https://api.nuget.org/v3/registration3/ravendb.client/index.json" + } + ] +} \ No newline at end of file diff --git a/docs/API/_data/search-result.json b/docs/API/_data/search-result.json new file mode 100644 index 000000000..57dea6b6e --- /dev/null +++ b/docs/API/_data/search-result.json @@ -0,0 +1,70 @@ +{ + "totalHits": 2, + "data": [ + { + "@id": "https://api.nuget.org/v3/registration3/nuget.versioning/index.json", + "@type": "Package", + "registration": "https://api.nuget.org/v3/registration3/nuget.versioning/index.json", + "id": "NuGet.Versioning", + "version": "4.4.0", + "description": "NuGet's implementation of Semantic Versioning.", + "summary": "", + "title": "NuGet.Versioning", + "licenseUrl": "https://raw.githubusercontent.com/NuGet/NuGet.Client/dev/LICENSE.txt", + "tags": [ "semver", "semantic", "versioning" ], + "authors": [ "NuGet" ], + "totalDownloads": 141896, + "verified": true, + "versions": [ + { + "version": "3.3.0", + "downloads": 50343, + "@id": "https://api.nuget.org/v3/registration3/nuget.versioning/3.3.0.json" + }, + { + "version": "3.4.3", + "downloads": 27932, + "@id": "https://api.nuget.org/v3/registration3/nuget.versioning/3.4.3.json" + }, + { + "version": "4.0.0", + "downloads": 63004, + "@id": "https://api.nuget.org/v3/registration3/nuget.versioning/4.0.0.json" + }, + { + "version": "4.4.0", + "downloads": 617, + "@id": "https://api.nuget.org/v3/registration3/nuget.versioning/4.4.0.json" + } + ] + }, + { + "@id": "https://api.nuget.org/v3/registration3/nerdbank.gitversioning/index.json", + "@type": "Package", + "registration": "https://api.nuget.org/v3/registration3/nerdbank.gitversioning/index.json", + "id": "Nerdbank.GitVersioning", + "version": "2.0.41", + "description": "Stamps your assemblies with semver 2.0 compliant git commit specific version information and provides NuGet versioning information as well.", + "summary": "Stamps your assemblies with semver 2.0 compliant git commit specific version information and provides NuGet versioning information as well.", + "title": "Nerdbank.GitVersioning", + "licenseUrl": "https://raw.githubusercontent.com/AArnott/Nerdbank.GitVersioning/ed547462f7/LICENSE.txt", + "projectUrl": "http://github.com/aarnott/Nerdbank.GitVersioning", + "tags": [ "git", "commit", "versioning", "version", "assemblyinfo" ], + "authors": [ "Andrew Arnott" ], + "totalDownloads": 11906, + "verified": false, + "versions": [ + { + "version": "1.6.35", + "downloads": 10229, + "@id": "https://api.nuget.org/v3/registration3/nerdbank.gitversioning/1.6.35.json" + }, + { + "version": "2.0.41", + "downloads": 1677, + "@id": "https://api.nuget.org/v3/registration3/nerdbank.gitversioning/2.0.41.json" + } + ] + } + ] +} \ No newline at end of file diff --git a/docs/API/_data/service-index.json b/docs/API/_data/service-index.json new file mode 100644 index 000000000..18ef7c93d --- /dev/null +++ b/docs/API/_data/service-index.json @@ -0,0 +1,39 @@ +{ + "version": "3.0.0-beta.1", + "resources": [ + { + "@id": "https://api.nuget.org/v3-flatcontainer/", + "@type": "PackageBaseAddress/3.0.0", + "comment": "Base URL of Azure storage where NuGet package registration info for NET Core is stored, in the format https://api.nuget.org/v3-flatcontainer/{id-lower}/{id-lower}.{version-lower}.nupkg" + }, + { + "@id": "https://www.nuget.org/api/v2/package", + "@type": "PackagePublish/2.0.0" + }, + { + "@id": "https://api-v2v3search-0.nuget.org/query", + "@type": "SearchQueryService/3.0.0-rc", + "comment": "Query endpoint of NuGet Search service (primary) used by RC clients" + }, + { + "@id": "https://api-v2v3search-0.nuget.org/autocomplete", + "@type": "SearchAutocompleteService/3.0.0-rc", + "comment": "Autocomplete endpoint of NuGet Search service (primary) used by RC clients" + }, + { + "@id": "https://api.nuget.org/v3/registration2/", + "@type": "RegistrationsBaseUrl/3.0.0-rc", + "comment": "Base URL of Azure storage where NuGet package registration info is stored used by RC clients. This base URL does not include SemVer 2.0.0 packages." + }, + { + "@id": "https://api.nuget.org/v3/registration2-gz-semver2/", + "@type": "RegistrationsBaseUrl/Versioned", + "clientVersion": "4.3.0-alpha", + "comment": "Base URL of Azure storage where NuGet package registration info is stored in GZIP format. This base URL includes SemVer 2.0.0 packages." + } + ], + "@context": { + "@vocab": "http://schema.nuget.org/services#", + "comment": "http://www.w3.org/2000/01/rdf-schema#comment" + } +} \ No newline at end of file diff --git a/docs/API/introduction.md b/docs/API/introduction.md new file mode 100644 index 000000000..8f2090398 --- /dev/null +++ b/docs/API/introduction.md @@ -0,0 +1,3 @@ +--- +redirect_url: /nuget/api/overview +--- \ No newline at end of file diff --git a/docs/API/nuget-exe-Credential-Providers.md b/docs/API/nuget-exe-Credential-Providers.md index 166834dad..b1a9b277c 100644 --- a/docs/API/nuget-exe-Credential-Providers.md +++ b/docs/API/nuget-exe-Credential-Providers.md @@ -1,98 +1,3 @@ --- -# required metadata - -title: nuget.exe Credential Providers | Microsoft Docs -author: kraigb -ms.author: kraigb -manager: ghogen -ms.date: 1/9/2017 -ms.topic: article -ms.prod: nuget -#ms.service: -ms.technology: null -ms.assetid: 3cf592de-39f2-4e7f-a597-62635fdcedfa - -# optional metadata - -description: nuget.exe credential providers authenticate with a feed, and are implemented as command-line executables that follow specific conventions. -keywords: nuget.exe credential providers, credential provider API, authenticate with feed, authenticate with gallery -#ROBOTS: -#audience: -#ms.devlang: -ms.reviewer: -- karann-msft -- unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - ---- - -# Authenticating feeds with nuget.exe credential providers - -*NuGet 3.3+* - -When `nuget.exe` needs credentials to authenticate with a feed, it looks for them in the following manner: - -1. NuGet first looks for credentials in `Nuget.Config` files. -1. NuGet then uses plug-in credential providers, subject to the order given below. (And example is the [Visual Studio Team Services Credential Provider](https://www.visualstudio.com/docs/package/get-started/nuget/auth#vsts-credential-provider).) -1. NuGet then prompts the user for credentials on the command line. - -> [!Note] -> nuget.exe credential providers only work in nuget.exe (not in dotnet restore or Visual Studio). For credential providers with Visual Studio, see [nuget.exe Credential Providers for Visual Studio](../api/nuget-credential-providers-for-visual-studio.md) - -nuget.exe credential providers can be used in 3 ways: - -- **Globally**: to make a credential provider available to all instances of `nuget.exe` run under the current user's profile, add it to `%LocalAppData%\NuGet\CredentialProviders`. You may need to create the `CredentialProviders` folder. Credential providers can be installed at the root of the `CredentialProviders` folder or within a subfolder. If a credential provider has multiple files/assemblies, you can use subfolders to keep the providers organized. - -- **From an environment variable**: Credential providers can be stored anywhere and made accessible to `nuget.exe` by setting the `%NUGET_CREDENTIALPROVIDERS_PATH%` environment variable to the provider location. This variable can be a semicolon-separated list (for example, `path1;path2`) if you have multiple locations. - -- **Alongside nuget.exe**: nuget.exe credential providers can be placed in the same folder as `nuget.exe`. - -When loading credential providers, `nuget.exe` searches the above locations, in order, for any file named `credentialprovider*.exe`, then loads those files in the order they're found. If multiple credential providers exist in the same folder, they're loaded in alphabetical order. - - -## Creating a nuget.exe credential provider - -A credential provider is a command-line executable, named in the form `CredentialProvider*.exe`, that gathers inputs, acquires credentials as appropriate, and then returns the appropriate exit status code and standard output. - -A provider must do the following: - -- Determine whether it can provide credentials for the targeted URI before initiating credential acquisition. If not, it should return status code 1 with no credentials. -- Not modify `Nuget.Config` (such as setting credentials there). -- Handle HTTP proxy configuration on its own, as NuGet does not provide proxy information to the plugin. -- Return credentials or error details to `nuget.exe` by writing a JSON response object (see below) to stdout, using UTF-8 encoding. -- Optionally emit additional trace logging to stderr. No secrets should ever be written to stderr, since at verbosity levels "normal" or "detailed" such traces are echoed by NuGet to the console. -- Unexpected parameters should be ignored, providing forward compatibility with future versions of NuGet. - -### Input parameters - - -| Parameter/Switch |Description| -|----------------|-----------| -| Uri {value} | The package source URI requiring credentials.| -| NonInteractive | If present, provider does not issue interactive prompts. | -| IsRetry | If present, indicates that this attempt is a retry of a previously failed attempt. Providers typically use this flag to ensure that they bypass any existing cache and prompt for new credentials if possible.| -| Verbosity {value} | If present, one of the following values: "normal", "quiet", or "detailed". If no value is supplied, defaults to "normal". Providers should use this as an indication of the level of optional logging to emit to the standard error stream. | - -### Exit codes - -| Code |Result | Description | -|----------------|-----------|-----------| -| 0 | Success | Credentials were successfully acquired and have been written to stdout.| -| 1 | ProviderNotApplicable | The current provider does not provide credentials for the given URI.| -| 2 | Failure | The provider is the correct provider for the given URI, but cannot provide credentials. In this case, nuget.exe will not retry authentication and will fail. A typical example is when a user cancels an interactive login. | - -### Standard output - -| Property |Notes| -|----------------|-----------| -| Username | Username for authenticated requests.| -| Password | Password for authenticated requests.| -| Message | Optional details about the response, used only to show additional details in failure cases. | - -Example stdout: - - { "Username" : "freddy@example.com", - "Password" : "bwm3bcx6txhprzmxhl2x63mdsul6grctazoomtdb6kfbof7m3a3z", - "Message" : "" } +redirect_url: /nuget/reference/extensibility/nuget-exe-credential-providers +--- \ No newline at end of file diff --git a/docs/API/overview.md b/docs/API/overview.md new file mode 100644 index 000000000..0f4776be8 --- /dev/null +++ b/docs/API/overview.md @@ -0,0 +1,145 @@ +--- +# required metadata  + +title: Overview, NuGet API | Microsoft Docs +author: +- joelverhagen +- kraigb +ms.author: +- joelverhagen +- kraigb +manager: skofman +ms.date: 10/26/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: 8c81f1ac-18c7-44d1-b2e3-584fe85dee6f + +# optional metadata + +description: The NuGet API is a set of HTTP endpoints that can be used to download packages, fetch metadata, publish new packages, etc. +keywords: NuGet V3 API, NuGet V2 API, NuGet JSON, NuGet registration API, NuGet API flat container, NuGet nupkg API, NuGet metadata API, NuGet search API, NuGet push API, NuGe publish API, NuGet delete API, NuGet unlist API, NuGet protocol +ms.reviewer: +- karann +- unniravindranathan + +--- + +# NuGet API + +The NuGet API is a set of HTTP endpoints that can be used to download packages, fetch metadata, publish new packages, +and perform most other operations available in the official NuGet clients. + +This API is used by the NuGet client in Visual Studio, nuget.exe, and the .NET CLI to perform NuGet operations such as +[`dotnet restore`](https://docs.microsoft.com/dotnet/articles/core/preview3/tools/dotnet-restore), search in the Visual +Studio UI, and [`nuget.exe push`](../tools/cli-ref-push.md). + +Note in some cases, nuget.org has additional requirements that are not enforced by other package sources. These +differences are documented by the [nuget.org Protocols](nuget-protocols.md). + +## Service index + +The entry point for the API is a JSON document in a well known location. This document is called the **service index**. +The location of the service index for nuget.org is `https://api.nuget.org/v3/index.json`. + +This JSON document contains a list of *resources* which provide different functionality and fulfill different +use cases. + +Clients that support the API should accept one or more of these service index URL as the means of connecting to the +respective package sources. + +For more information about the service index, see [its API reference](service-index.md). + +## Versioning + +The API is version 3 of NuGet's HTTP protocol. This protocol is sometimes referred to as "the V3 API." These reference +documents will refer to this version of the protocol simply as "the API." + +The service index schema version is indicated by the `version` property in the service index. The API mandates that +the version string has a major version number of `3`. As non-breaking changes are made to the service index schema, the +version string's minor version will be increased. + +Older clients (such as nuget.exe 2.x) do not support the V3 API and only support the older V2 API, which is not +documented here. + +The NuGet V3 API is named as such because it is the successor of the V2 API, which was the OData-based protocol +implemented by the 2.x version of the official NuGet client. The V3 API was first supported by the 3.0 version of the +official NuGet client and is still the latest major protocol version supported by the NuGet client, 4.0 and on. + +Non-breaking protocol changes have been made to the API since it was first release. + +## Resources and schema + +The **service index** describes a variety of resources. The current set of supported resources are as follows: + +Resource name | Required | Description +---------------------------------------------------------------------- | -------- | ----------- +[`PackagePublish`](package-publish-resource.md) | yes | Push and delete (or unlist) packages. +[`SearchQueryService`](search-query-service-resource.md) | yes | Filter and search for packages by keyword. +[`RegistrationsBaseUrl`](registration-base-url-resource.md) | yes | Get package metadata. +[`PackageBaseAddress`](package-base-address-resource.md) | yes | Get package content (.nupkg). +[`SearchAutocompleteService`](search-autocomplete-service-resource.md) | no | Discover package IDs and versions by substring. +[`ReportAbuseUriTemplate`](report-abuse-resource.md) | no | Construct a URL to access a "report abuse" web page. + +In general, all non-binary data returned by a API resource are serialized using JSON. The response schema +returned by each resource in the service index is defined individually for that resource. For more information about +each resource, see the topics listed above. + +> [!Note] +> When a source does not implement `SearchAutocompleteService` any autocomplete behavior should be disabled +> gracefully. When `ReportAbuseUriTemplate` is not implemented, the official NuGet client falls back to nuget.org's +> report abuse URL (tracked by [NuGet/Home#4924](https://github.com/NuGet/Home/issues/4924)). Other clients may opt +> to simply not show a report abuse URL to the user. + +## Timestamps + +All timestamps returned by the API are UTC or are otherwise specified using +[ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) representation. + +## HTTP methods + +Verb | Use +------ | ----------- +GET | Performs a read-only operation, typically retrieving data. +HEAD | Fetches the response headers for the corresponding `GET` request. +PUT | Creates a resource that doesn't exist or, if it does exist, updates it. Some resources may not support update. +DELETE | Deletes or unlists a resource. + +## HTTP status codes + +Code | Description +---- | ----- +200 | Success, and there is a response body. +201 | Success, and the resource was created. +202 | Success, the request has been accepted but some work may still be incomplete and completed asynchronously. +204 | Success, but there is no response body. +301 | A permanent redirect. +302 | A temporary redirect. +400 | The parameters in the URL or in the request body aren't valid. +401 | The provided credentials are invalid. +403 | The action is not allowed given the provided credentials. +404 | The requested resource doesn't exist. +409 | The request conflicts with an existing resource. +500 | The service has encountered an unexpected error. +503 | The service is temporarily unavailable. + +Any `GET` request made to a API endpoint may return an HTTP redirect (301 or 302). Clients should gracefully handle +such redirects by observing the `Location` header and issueing a subsequent `GET`. Documentation concerning specific +endpoints will not explicitly call out where redirects may be used. + +In the case of a 500-level status code, the client can implement a reasonable retry mechanism. The official NuGet +client retries three times when encountering any 500-level status code or TCP/DNS error. + +## HTTP request headers + +Name | Description +------------------------ | ----------- +X-NuGet-ApiKey | Required for push and delete, see [`PackagePublish` resource](package-publish-resource.md) +X-NuGet-Client-Version | **Deprecated** and replaced by `X-NuGet-Protocol-Version` +X-NuGet-Protocol-Version | Required in certain cases only on nuget.org, see [nuget.org protocols](NuGet-Protocols.md) + +## Authentication + +Authentication is left up to the package source implementation to define. For nuget.org, only the `PackagePublish` +resource requires authentication via a special API key header. See +[`PackagePublish` resource](package-publish-resource.md) for details. diff --git a/docs/API/package-base-address-resource.md b/docs/API/package-base-address-resource.md new file mode 100644 index 000000000..121b43690 --- /dev/null +++ b/docs/API/package-base-address-resource.md @@ -0,0 +1,185 @@ +--- +# required metadata  + +title: Package Content, NuGet API | Microsoft Docs +author: +- joelverhagen +- kraigb +ms.author: +- joelverhagen +- kraigb +manager: skofman +ms.date: 10/26/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: ec68b5d1-a684-4995-b1a6-6210dbb24875 + +# optional metadata + +description: The package base address is a simple interface for fetching the package itself. +keywords: NuGet flat container, NuGet package base address, NuGet nupkg API, NuGet API package versions, NuGet API unlisted packages, NuGet API download nuspec +ms.reviewer: +- karann +- unniravindranathan + +--- + +# Package Content + +It is possible to generate a URL to fetch an arbitrary package's content (the .nupkg file) using the V3 API. The +resource used for fetching package content is the `PackageBaseAddress` resource found in the +[service index](service-index.md). This resource also enables discovery of all versions of a package, listed or +unlisted. + +This resource is commonly referred to as either the "package base address" or as the "flat container". + +## Versioning + +The following `@type` value is used: + +@type value | Notes +------------------------ | ----- +PackageBaseAddress/3.0.0 | The initial release + +## Base URL + +The base URL for the following APIs is the value of the `@id` property associated with the aforementioned +resource `@type` value. In the following document, the placeholder base URL `{@id}` will be used. + +## HTTP methods + +All URLs found in the registration resource support the HTTP methods `GET` and `HEAD`. + +## Enumerate package versions + +If the client knows a package ID and wants to discover which package versions the package source has available, the +client can construct a predictable URL to enumerate all package versions. This list is meant to be a "directory +listing" for the package content API mentioned below. + +> [!Note] +> This list contains both listed and unlisted package versions. + +``` +GET {@id}/{LOWER_ID}/index.json +``` + +### Request parameters + +Name | In | Type | Required | Notes +-------- | ------ | ------- | -------- | ----- +LOWER_ID | URL | string | yes | The package ID, lowercase + +The `LOWER_ID` value is the desired package ID lowercased using the rules implemented by .NET's +[`System.String.ToLowerInvariant()`](https://msdn.microsoft.com/en-us/library/system.string.tolowerinvariant.aspx) +method. + +### Response + +If the package source has no versions of the provided package ID, a 404 status code is returned. + +If the package source has one or more versions, a 200 status code is returned. The response body is a JSON object with +the following property: + +Name | Type | Required | Notes +-------- | ---------------- | -------- | ----- +versions | array of strings | yes | The package IDs available + +The strings in the `versions` array are all lowercased, +[normalized NuGet version strings](../reference/package-versioning.md#normalized-version-numbers). The version +strings do not contain any SemVer 2.0.0 build metadata. + +The intent is that the version strings found in this array can be used verbatim for the `LOWER_VERSION` tokens found +in the following endpoints. + +### Sample request + +``` +GET https://api.nuget.org/v3-flatcontainer/owin/index.json +``` + +### Sample response + +[!code-JSON [package-base-address-index.json](./_data/package-base-address-index.json)] + +## Download package content (.nupkg) + +If the client knows a package ID and version and wants to download the package content, they only need to construct the +following URL: + +``` +GET {@id}/{LOWER_ID}/{LOWER_VERSION}/{LOWER_ID}.{LOWER_VERSION}.nupkg +``` + +### Request parameters + +Name | In | Type | Required | Notes +------------- | ------ | ------- | -------- | ----- +LOWER_ID | URL | string | yes | The package ID, lowercase +LOWER_VERSION | URL | integer | yes | The package version, normalized and lowercased + +Both `LOWER_ID` and `LOWER_VERSION` are lowercased using the rules implemented by .NET's +[`System.String.ToLowerInvariant()`](https://msdn.microsoft.com/en-us/library/system.string.tolowerinvariant.aspx) +method. + +The `LOWER_VERSION` is the desired package version normalized using NuGet's version +[normalization rules](../reference/package-versioning.md#normalized-version-numbers). This means that build metadata +that is allowed by the SemVer 2.0.0 specification must be excluded in this case. + +### Response body + +If the package exists on the package source, a 200 status code is returned. The response body will be the package +content itself. + +If the package does not exist on the package source, a 404 status code is returned. + +### Sample request + +``` +GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/9.0.1/newtonsoft.json.9.0.1.nupkg +``` + +### Sample response + +The binary stream that is the .nupkg for Newtonsoft.Json 9.0.1. + +## Download package manifest (.nuspec) + +If the client knows a package ID and version and wants to download the package manifest, they only need to construct the +following URL: + +``` +GET {@id}/{LOWER_ID}/{LOWER_VERSION}/{LOWER_ID}.nuspec +``` + +### Request parameters + +Name | In | Type | Required | Notes +------------- | ------ | ------- | -------- | ----- +LOWER_ID | URL | string | yes | The package ID, lowercase +LOWER_VERSION | URL | integer | yes | The package version, normalized and lowercased + +Both `LOWER_ID` and `LOWER_VERSION` are lowercased using the rules implemented by .NET's +[`System.String.ToLowerInvariant()`](https://msdn.microsoft.com/en-us/library/system.string.tolowerinvariant.aspx) +method. + +The `LOWER_VERSION` is the desired package version normalized using NuGet's version +[normalization rules](../reference/package-versioning.md#normalized-version-numbers). This means that build metadata +that is allowed by the SemVer 2.0.0 specification must be excluded in this case. + +### Response body + +If the package exists on the package source, a 200 status code is returned. The response body will be the package +manifest, which is the .nuspec contained in the corresponding .nupkg. The .nuspec is an XML document. + +If the package does not exist on the package source, a 404 status code is returned. + +### Sample request + +``` +GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/6.0.4/newtonsoft.json.nuspec +``` + +### Sample response + +[!code-XML [newtonsoft.json.6.0.4.xml](./_data/newtonsoft.json.6.0.4.xml)] diff --git a/docs/API/package-publish-resource.md b/docs/API/package-publish-resource.md new file mode 100644 index 000000000..4174ebbfe --- /dev/null +++ b/docs/API/package-publish-resource.md @@ -0,0 +1,120 @@ +--- +# required metadata  + +title: Push and Delete, NuGet API | Microsoft Docs +author: +- joelverhagen +- kraigb +ms.author: +- joelverhagen +- kraigb +manager: skofman +ms.date: 10/26/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: 1eaa403a-5c13-4c05-9352-2f791b98aa7e + +# optional metadata + +description: The publish service allows clients to publish new packages and unlist or delete existing packages. +keywords: NuGet API push package, NuGet API delete package, NuGet API unlist package, NuGet API upload package, NuGet API create package +ms.reviewer: +- karann +- unniravindranathan + +--- + +# Push and Delete + +It is possible to push and delete (or unlist, depending on the server implementation) packages using the NuGet V3 API. +Both operations are based off of the `PackagePublish` resource found in the [service index](service-index.md). + +## Versioning + +The following `@type` value is used: + +@type value | Notes +-------------------- | ----- +PackagePublish/2.0.0 | The initial release + +## Base URL + +The base URL for the following APIs is the value of the `@id` property of the `PackagePublish/2.0.0` resource in the +package source's [service index](service-index.md). For the documentation below, nuget.org's URL is used. Consider +`https://www.nuget.org/api/v2/package` as a placeholder for the `@id` value found in the service index. + +Note that this URL points to the same location as the legacy V2 push endpoint since the protocol is the same. + +## HTTP methods + +The `PUT` and `DELETE` HTTP methods are supported by this resource. For which methods are supported on each endpoint, +see below. + +## Push a package + +nuget.org supports pushing new packages using the following API. If the package with the provided ID and version +already exists, nuget.org will reject the push. Other package sources may support replacing an existing package. + +``` +PUT https://www.nuget.org/api/v2/package +``` + +### Request parameters + +Name | In | Type | Required | Notes +-------------- | ------ | ------ | -------- | ----- +X-NuGet-ApiKey | Header | string | yes | For example, `X-NuGet-ApiKey: {USER_API_KEY}` + +The API key is an opaque string gotten from the package source by the user and configured into the client. No +particular string format is mandated but the length of the API key should not exceed a reasonable size for HTTP header +values. + +### Request body + +The request body must come in the following form: + +#### Multipart form data + +The request header `Content-Type` is `multipart/form-data` and the first item in the request body is the raw bytes of +the .nupkg being pushed. Subsequent items in the multipart body are ignored. The file name or any other headers of the +multipart items are ignored. + +### Response + +Status Code | Meaning +----------- | ------- +201, 202 | The package was successfully pushed +400 | The provided package is invalid +409 | A package with the provided ID and version already exists + +Server implementations vary on the success status code returned when a package is successfully pushed. + +## Delete a package + +nuget.org interprets the package delete request as an "unlist". This means that the package is still available for +existing consumers of the package but the package no longer appears in search results or in the web interface. For +more information about this practice, see the +[Deleted Packages](../policies/deleting-packages.md) policy. Other server +implementations are free to interpret this signal as a hard delete, soft delete, or unlist. For example, +[NuGet.Server](https://www.nuget.org/packages/NuGet.Server) (a server implementation only supporting the older V2 API) +supports handling this request as either an unlist or a hard delete based on a configuration option. + +``` +DELETE https://www.nuget.org/api/v2/package/{ID}/{VERSION} +``` + +### Request parameters + +Name | In | Type | Required | Notes +-------------- | ------ | ------ | -------- | ----- +ID | URL | string | yes | The ID of the package to delete +VERSION | URL | string | yes | The version of the package to delete +X-NuGet-ApiKey | Header | string | yes | For example, `X-NuGet-ApiKey: {USER_API_KEY}` + +### Response + +Status Code | Meaning +----------- | ------- +204 | The package was deleted +404 | No package with the provided `ID` and `VERSION` exists diff --git a/docs/API/registration-base-url-resource.md b/docs/API/registration-base-url-resource.md new file mode 100644 index 000000000..ba416b3c1 --- /dev/null +++ b/docs/API/registration-base-url-resource.md @@ -0,0 +1,306 @@ +--- +# required metadata  + +title: Package Metadata, NuGet API | Microsoft Docs +author: +- joelverhagen +- kraigb +ms.author: +- joelverhagen +- kraigb +manager: skofman +ms.date: 10/26/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: 96b07019-c2e1-4f40-9290-f65ad71af3b1 + +# optional metadata + +description: The package registration base URL allows fetching metadata about packages. +keywords: NuGet API package metadata, NuGet API registration, NuGet API unlisted packages +ms.reviewer: +- karann +- unniravindranathan + +--- + +# Package Metadata + +It is possible to fetch metadata about the packages available on a package source using the NuGet V3 API. This +metadata can be fetched using the `RegistrationsBaseUrl` resource found in the [service index](service-index.md). + +The collection of the documents found under `RegistrationsBaseUrl` are often called "registrations" or "registration +blobs". The set of documents under a single `RegistrationsBaseUrl` is referred to as a "registration hive". A +registration hive contains all metadata about every package available on a package source. + +## Versioning + +The following `@type` values are used: + +@type value | clientVersion value | Notes +------------------------------- | ------------------- | ----- +RegistrationsBaseUrl | (none) | The initial release +RegistrationsBaseUrl/3.0.0-beta | (none) | Alias of `RegistrationsBaseUrl` +RegistrationsBaseUrl/3.0.0-rc | (none) | Alias of `RegistrationsBaseUrl` +RegistrationsBaseUrl/3.4.0 | (none) | Gzipped responses +RegistrationsBaseUrl/3.6.0 | (none) | Includes SemVer 2.0.0 packages +RegistrationsBaseUrl/Versioned | 4.3.0-alpha | Alias of `RegistrationsBaseUrl/3.6.0` + +This represents three distinct registration hives available for various client versions. + +### RegistrationsBaseUrl + +These registrations are not compressed (meaning they use an implied `Content-Encoding: identity`). SemVer 2.0.0 +packages are **excluded** from this hive. + +### RegistrationsBaseUrl/3.4.0 + +These registrations are compressed using `Content-Encoding: gzip`. SemVer 2.0.0 packages are **excluded** from this +hive. + +### RegistrationsBaseUrl/3.6.0 + +These registrations are compressed using `Content-Encoding: gzip`. SemVer 2.0.0 packages are **included** in this hive. +For more information about SemVer 2.0.0, see +[SemVer 2.0.0 support for nuget.org](https://github.com/NuGet/Home/wiki/SemVer2-support-for-nuget.org-%28server-side%29). + +## Base URL + +The base URL for the following APIs is the value of the `@id` property associated with the aforementioned +resource `@type` values. In the following document, the placeholder base URL `{@id}` will be used. + +## HTTP methods + +All URLs found in the registration resource support the HTTP methods `GET` and `HEAD`. + +## Registration index + +The registration resource groups package metadata by package ID. It is not possible to get data about more than one +package ID at a time. This resource provides no way to discover package IDs. Instead the client is assumed to already +know the desired package ID. Available metadata about each package version varies by server implementation. The package +registration blobs have the following hierarchical structure: + +- **Index**: the entry point for the package metadata, shared by all packages on a source with the same package ID. +- **Page**: a grouping of package versions. The number of package versions in a page is defined by server implementation. +- **Leaf**: a document specific to a single package version. + +The URL of the registration index is predictable and can be determined by the client given a package ID and the +registration resource's `@id` value from the service index. The URLs for the registration pages and leaves are +discovered by inspecting the registration index. + +### Registration pages and leaves + +Although it is not strictly required for a server implementation to store registration leafs in seperate +registration page documents, it is a recommended practice to conserve client-side memory. Instead of inlining all +registration leaves in the index or immediately storing leaves in page documents, it is recommended that the server +implementation define some heuristic to choose between the two approaches based on the number of package versions +or cumulative size of package leaves. + +Storing all package versions (leaves) in the registration index saves on the number of HTTP requests necessary to fetch +package metadata but means that a larger document must be downloaded and more client memory must be allocated. On the +other hand, if the server implementation immediately stores registration leaves in seperate page documents, the client +must perform more HTTP requests to get the information it needs. + +The heuristic that nuget.org uses is as follows: if there are 128 or more versions of a package, break the leaves +into pages of size 64. If there are less than 128 versions, inline all leaves into the registration index. + +``` +GET {@id}/{LOWER_ID}/index.json +``` + +### Request parameters + +Name | In | Type | Required | Notes +-------- | ------ | ------- | -------- | ----- +LOWER_ID | URL | string | yes | The package ID, lowercased + +The `LOWER_ID` value is the desired package ID lowercased using the rules implemented by .NET's +[`System.String.ToLowerInvariant()`](https://msdn.microsoft.com/en-us/library/system.string.tolowerinvariant.aspx) +method. + +### Response + +The response is a JSON document which has a root object with the following properties: + +Name | Type | Required | Notes +----- | ---------------- | -------- | ----- +count | integer | yes | The number of registration pages in the index +items | array of objects | yes | The array of registration pages + +Each item in the index object's `items` array is a JSON object representing a registration page. + +#### Registration page object + +The registration page object found in the registration index has the following properties: + +Name | Type | Required | Notes +------ | ---------------- | -------- | ----- +@id | string | yes | The URL to the registration page +count | integer | yes | The number of registration leaves in the page +items | array of objects | no | The array of registration leaves and their associate metadata +lower | string | yes | The lowest SemVer 2.0.0 version in the page (inclusive) +parent | string | yes | The URL to the registration index +upper | string | yes | The highest SemVer 2.0.0 version in the page (inclusive) + +The `lower` and `upper` bounds of the page object are useful when the metadata for a specific page version is needed. +These bounds can be used to fetch the only registration page needed. The version strings adhere to +[NuGet's version rules](../reference/package-versioning.md). The version strings are normalized and do not include +build metadata. As with all versions in the NuGet ecosystem, comparison of version strings is implemented using +[SemVer 2.0.0's version precedence rules](http://semver.org/spec/v2.0.0.html#spec-item-11). + +If the `items` property is not present in the registration page object, the URL specified in the `@id` must be used to +fetch metadata about individual package versions. The `items` array is sometimes excluded from the page +object as an optimization. If the number of versions of a single package ID is very large, then the registration index +document will be massive and wasteful to process for a client that only cares about a specific version or small range +of versions. + +Note that if the `items` property is present, the `@id` property need not be used, since all of the page data is +already inlined in the `items` property. + +Each item in the page object's `items` array is a JSON object representing a registration leaf and it's associated +metadata. + +#### Registration leaf object in a page + +The registration leaf object found in a registration page has the following properties: + +Name | Type | Required | Notes +-------------- | ------ | -------- | ----- +@id | string | yes | The URL to the registration leaf +catalogEntry | object | yes | The catalog entry containing the package metadata +packageContent | string | yes | The URL to the package content (.nupkg) + +Each registration leaf object represents data associated with a single package version. + +#### Catalog entry + +The `catalogEntry` property in the registration leaf object has the following properties: + +Name | Type | Required | Notes +------------------------ | -------------------------- | -------- | ----- +@id | string | yes | The URL to document used to produce this object +authors | string or array of strings | no | +dependencyGroups | array of objects | no | The URL to the package content (.nupkg) +description | string | no | +iconUrl | string | no | +id | string | yes | The ID of the package +licenseUrl | string | no | +listed | boolean | no | Should be considered as listed if absent +minClientVersion | string | no | +projectUrl | string | no | +published | string | no | A string containing a ISO 8601 timestamp of when the package was published +requireLicenseAcceptance | boolean | no | +summary | string | no | +tags | string or array of string | no | +title | string | no | +version | string | yes | The version of the package + +The `dependencyGroups` property is an array of objects representing the dependencies of the package, grouped by target +framework. If the package has no dependencies, the `dependencyGroups` property is missing, an empty array, or the +`dependencies` property of all groups is empty or missing. + +#### Package dependency group + +Each dependency group object has the following properties: + +Name | Type | Required | Notes +--------------- | ---------------- | -------- | ----- +targetFramework | string | no | The target framework that these dependencies are applicable to +dependencies | array of objects | no | + +The `targetFramework` string uses the format implemented by NuGet's .NET library +[NuGet.Frameworks](https://www.nuget.org/packages/NuGet.Frameworks/). If no `targetFramework` is specified, the +dependency group applies to all target frameworks. + +The `dependencies` property is an array of objects, each representing a package dependency of the current package. + +#### Package dependency + +Each package dependency has the following properties: + +Name | Type | Required | Notes +------------ | ------ | -------- | ----- +id | string | yes | The ID of the package dependency +range | object | no | The allowed [version range](../reference/package-versioning.md#version-ranges-and-wildcards) of the dependency +registration | string | no | The URL to the registration index for this dependency + +If the `range` property is excluded or an empty string, the client should default to the version range `(, )`. That is, +any version of the dependency is allowed. + +### Sample request + +``` +GET https://api.nuget.org/v3/registration3/nuget.server.core/index.json +``` + +### Sample response + +[!code-JSON [package-registration-index.json](./_data/package-registration-index.json)] + +In this particular case, the registration index has the registration page inlined so no extra requests are needed to +fetch metadata about individual package versions. + +## Registration page + +The registration page contains registration leaves. The URL to fetch a registration page is determined by the `@id` +property in the [registration page object](#registration-page-object) mentioned above. + +When the `items` array is not provided in the registration index, an HTTP GET request of the `@id` value will return a +JSON document which has an object as its root. The object has the following properties: + +Name | Type | Required | Notes +------ | ---------------- | -------- | ----- +@id | string | yes | The URL to the registration page +count | integer | yes | The number of registration leaves in the page +items | array of objects | yes | The array of registration leaves and their associate metadata +lower | string | yes | The lowest SemVer 2.0.0 version in the page (inclusive) +parent | string | yes | The URL to the registration index +upper | string | yes | The highest SemVer 2.0.0 version in the page (inclusive) + +The shape of the registration leaf objects is the same as in the registration index +[above](#registration-leaf-object-in-a-page). + +## Sample request + +``` +GET https://api.nuget.org/v3/registration3/ravendb.client/page/1.0.531/1.0.729-unstable.json +``` + +## Sample response + +[!code-JSON [package-registration-page.json](./_data/package-registration-page.json)] + +## Registration leaf + +The registration leaf contains information about a specific package ID and version. The metadata about the specific +version may not be available in this document. Package metadata should be fetched from the +[registration index](#registration-index) or the [registration page](#registration-page) (which is discovered using +the registration index). + +The URL to fetch a registration leaf is obtained from the `@id` property of a registration leaf object in either a +registration index or registration page. + +The registration leaf is a JSON document with a root object with the following properties: + +Name | Type | Required | Notes +-------------- | ------- | -------- | ----- +@id | string | yes | The URL to the registration leaf +catalogEntry | string | no | The URL to the catalog entry that produced these leaf +listed | boolean | no | Should be considered as listed if absent +packageContent | string | no | The URL to the package content (.nupkg) +published | string | no | A string containing a ISO 8601 timestamp of when the package was published +registration | string | no | The URL to the registration index + +> [!Note] +> On nuget.org, the `published` value is set to year 1900 when the package is unlisted. + +### Sample request + +``` +GET https://api.nuget.org/v3/registration3/nuget.versioning/4.3.0.json +``` + +### Sample response + +[!code-JSON [package-registration-leaf.json](./_data/package-registration-leaf.json)] diff --git a/docs/API/report-abuse-resource.md b/docs/API/report-abuse-resource.md new file mode 100644 index 000000000..37a0434dd --- /dev/null +++ b/docs/API/report-abuse-resource.md @@ -0,0 +1,86 @@ +--- +# required metadata  + +title: Report Abuse URL Template, NuGet API | Microsoft Docs +author: +- joelverhagen +- kraigb +ms.author: +- joelverhagen +- kraigb +manager: skofman +ms.date: 10/26/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: 148d743a-09e5-4539-8454-675be11902db + +# optional metadata + +description: The report abuse URL template allows clients to display a report abuse link in their UI. +keywords: NuGet API report abuse, NuGet API file complaint, NuGet.org report URL template +ms.reviewer: +- karann +- unniravindranathan + +--- + +# Report Abuse URL Template + +It is possible for a client to build a URL that can be used by the user to report abuse about a specific package. This +is useful when a package source wants to enable all client experiences (even 3rd party) to delegate abuse reports to +the package source. + +The resource used for fetching package content is the `ReportAbuseUriTemplate` resource found in the +[service index](service-index.md). + +## Versioning + +The following `@type` values are used: + +@type value | Notes +--------------------------------- | ----- +ReportAbuseUriTemplate/3.0.0-beta | The initial release +ReportAbuseUriTemplate/3.0.0-rc | Alias of `ReportAbuseUriTemplate/3.0.0-beta` + +## URL template + +The URL for the following API is the value of the `@id` property associated with one of the aforementioned +resource `@type` values. + +## HTTP methods + +Although the client is not intended to make requests to the report abuse URL on behalf of the user, the web page +should support the `GET` method to allow a clicked URL to be easily opened in a web browser. + +## Construct the URL + +Given a known package ID and version, the client implementation can construct a URL used to access a web interface. The +client implementation should display this constructed URL (or clickable link) to the user allowing them to open a web +browser to the URL and make any necessary abuse report. The implementation of the abuse report form is determined by +the server implementation. + +The value of the `@id` is a URL string containing any of the following placeholder tokens: + +### URL placeholders + +Name | Type | Required | Notes +----------- | ------- | -------- | ----- +`{id}` | string | no | The package ID to report abuse for +`{version}` | string | no | The package version to report abuse for + +The `{id}` and `{version}` values interpreted by the server implementation must be case insenstive and not sensitive to +whether the version is normalized. + +For example, nuget.org's report abuse template looks like this: + +``` +https://www.nuget.org/packages/{id}/{version}/ReportAbuse +``` + +If the client implementation needs to display a link to the report abuse form for NuGet.Versioning 4.3.0, it would +produce the following URL and provide it to the user: + +``` +https://www.nuget.org/packages/NuGet.Versioning/4.3.0/ReportAbuse +``` \ No newline at end of file diff --git a/docs/API/search-autocomplete-service-resource.md b/docs/API/search-autocomplete-service-resource.md new file mode 100644 index 000000000..1256a452d --- /dev/null +++ b/docs/API/search-autocomplete-service-resource.md @@ -0,0 +1,160 @@ +--- +# required metadata  + +title: Autocomplete, NuGet API | Microsoft Docs +author: +- joelverhagen +- kraigb +ms.author: +- joelverhagen +- kraigb +manager: skofman +ms.date: 10/26/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: ead5cf7a-e51e-4cbb-8798-58226f4c853f + +# optional metadata + +description: The search autocomplete service supports interactive discovery of package IDs and versions. +keywords: NuGet autocomplete API, NuGet search package ID, substring package ID +ms.reviewer: +- karann +- unniravindranathan + +--- + +# Autocomplete + +It is possible to build a package ID and version autocomplete experience using the V3 API. The resource used for making +autocomplete queries is the `SearchAutocompleteService` resource found in the [service index](service-index.md). + +## Versioning + +The following `@type` values are used: + +@type value | Notes +------------------------------------ | ----- +SearchAutocompleteService | The initial release +SearchAutocompleteService/3.0.0-beta | Alias of `SearchAutocompleteService` +SearchAutocompleteService/3.0.0-rc | Alias of `SearchAutocompleteService` + +## Base URL + +The base URL for the following APIs is the value of the `@id` property associated with one of the aforementioned +resource `@type` values. In the following document, the placeholder base URL `{@id}` will be used. + +## HTTP Methods + +All URLs found in the registration resource support the HTTP methods `GET` and `HEAD`. + +## Search for package IDs + +The first autocomplete API supports searching for part of a package ID string. This is great when you want to provide +a package typeahead feature in a user interface integrated with a NuGet package source. + +A package with only unlisted versions will not appear in the results. + +``` +GET {@id}?q={QUERY}&skip={SKIP}&take={TAKE}&prerelease={PRERELEASE}&semVerLevel={SEMVERLEVEL} +``` + +### Request parameters + +Name | In | Type | Required | Notes +----------- | ------ | ------- | -------- | ----- +q | URL | string | no | The string to compare against package IDs +skip | URL | integer | no | The number of results to skip, for pagination +take | URL | integer | no | The number of results to return, for pagination +prerelease | URL | boolean | no | `true` or `false` determining whether to include [pre-release packages](../create-packages/prerelease-packages.md) +semVerLevel | URL | string | no | A SemVer 1.0.0 version string + +The autocomplete query `q` is parsed in a manner that is defined by the server implementation. nuget.org supports +querying for the prefix of package ID tokens, which are pieces of the ID produced by spliting the original by camel +case and symbol characters. + +The `skip` parameter defaults to 0. + +The `take` parameter should be an integer greater than zero. The server implementation may impose a maximum value. + +If `prerelease` is not provided, pre-release packages are excluded. + +The `semVerLevel` query parameter is used to opt-in to +[SemVer 2.0.0 packages](https://github.com/NuGet/Home/wiki/SemVer2-support-for-nuget.org-%28server-side%29#identifying-semver-v200-packages). +If this query parameter is excluded, only package IDs with SemVer 1.0.0 compatible versions will be returned (with the +[standard NuGet versioning](../reference/package-versioning.md) caveats, such as version strings with 4 integer pieces). +If `semVerLevel=2.0.0` is provided, both SemVer 1.0.0 and SemVer 2.0.0 compatible packages will be returned. See the +[SemVer 2.0.0 support for nuget.org](https://github.com/NuGet/Home/wiki/SemVer2-support-for-nuget.org-%28server-side%29) +for more information. + +### Response + +The response is JSON document containing up to `take` autocomplete results. + +The root JSON object has the following properties: + +Name | Type | Required | Notes +--------- | ---------------- | -------- | ----- +totalHits | integer | yes | The total number of matches, disregarding `skip` and `take` +data | array of strings | yes | The package IDs matched by the request + +### Sample request + +``` +GET https://api-v2v3search-0.nuget.org/autocomplete?q=storage&prerelease=true +``` + +### Sample response + +[!code-JSON [autocomplete-id-result.json](./_data/autocomplete-id-result.json)] + +## Enumerate package versions + +Once a package ID is discovered using the previous API, a client can use the autocomplete API to enumerate package +versions for a provided package ID. + +A package version that is unlisted will not appear in the results. + +``` +GET {@id}?id={ID}&prerelease={PRERELEASE}&semVerLevel={SEMVERLEVEL} +``` + +### Request parameters + +Name | In | Type | Required | Notes +----------- | ------ | ------- | -------- | ----- +id | URL | string | no | The package ID to fetch versions for +prerelease | URL | boolean | no | `true` or `false` determining whether to include [pre-release packages](../create-packages/prerelease-packages.md) +semVerLevel | URL | string | no | A SemVer 2.0.0 version string + +If `prerelease` is not provided, pre-release packages are excluded. + +The `semVerLevel` query parameter is used to opt-in to SemVer 2.0.0 packages. If this query parameter is excluded, only +SemVer 1.0.0 versions will be returned. If `semVerLevel=2.0.0` is provided, both SemVer 1.0.0 and SemVer 2.0.0 versions +will be returned. See the [SemVer 2.0.0 support for nuget.org](https://github.com/NuGet/Home/wiki/SemVer2-support-for-nuget.org-%28server-side%29) +for more information. + +### Response + +The response is JSON document containing all package versions of the provided package ID, filtering by the given query +parameters. + +The root JSON object has the following property: + +Name | Type | Required | Notes +--------- | ---------------- | -------- | ----- +data | array of strings | yes | The package versions matched by the request + +The package versions in the `data` array could contain SemVer 2.0.0 build metadata (e.g. `1.0.0+metadata`) if the +`semVerLevel=2.0.0` was provided in the query string. + +### Sample request + +``` +GET https://api-v2v3search-0.nuget.org/autocomplete?id=nuget.protocol&prerelease=true +``` + +### Sample response + +[!code-JSON [autocomplete-version-result.json](./_data/autocomplete-version-result.json)] \ No newline at end of file diff --git a/docs/API/search-query-service-resource.md b/docs/API/search-query-service-resource.md new file mode 100644 index 000000000..91bd07a3d --- /dev/null +++ b/docs/API/search-query-service-resource.md @@ -0,0 +1,149 @@ +--- +# required metadata  + +title: Search, NuGet API | Microsoft Docs +author: +- joelverhagen +- kraigb +ms.author: +- joelverhagen +- kraigb +manager: skofman +ms.date: 10/26/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: 11ca2092-67dc-41a9-a7af-afe610d8febb + +# optional metadata + +description: The search service allows clients to query for packages by keyword and to filter results on certain package fields. +keywords: NuGet search API, NuGet discover packages, API to query NuGet packages, API to browse NuGet packages +ms.reviewer: +- karann +- unniravindranathan + +--- + +# Search + +It is possible to search for packages available on a package source using the V3 API. The resource used for searching +is the `SearchQueryService` resource found in the [service index](service-index.md). + +## Versioning + +The following `@type` values are used: + +@type value | Notes +----------------------------- | ----- +SearchQueryService | The initial release +SearchQueryService/3.0.0-beta | Alias of `SearchQueryService` +SearchQueryService/3.0.0-rc | Alias of `SearchQueryService` + +## Base URL + +The base URL for the following API is the value of the `@id` property associated with one of the aforementioned +resource `@type` values. In the following document, the placeholder base URL `{@id}` will be used. + +## HTTP methods + +All URLs found in the registration resource support the HTTP methods `GET` and `HEAD`. + +## Search for packages + +The search API allows a client to query for a page of packages matching a specified search query. The interpretation +of the search query (e.g. the tokenization of the search terms) is determined by the server implementation but the +general expectation is that the search query is used for matching package IDs, titles, descriptions, and tags. Other +package metadata fields may also be considered. + +An unlisted package should never appear in search results. + +``` +GET {@id}?q={QUERY}&skip={SKIP}&take={TAKE}&prerelease={PRERELEASE}&semVerLevel={SEMVERLEVEL} +``` + +### Request parameters + +Name | In | Type | Required | Notes +----------- | ------ | ------- | -------- | ----- +q | URL | string | no | The search terms to used to filter packages +skip | URL | integer | no | The number of results to skip, for pagination +take | URL | integer | no | The number of results to return, for pagination +prerelease | URL | boolean | no | `true` or `false` determining whether to include [pre-release packages](../create-packages/prerelease-packages.md) +semVerLevel | URL | string | no | A SemVer 1.0.0 version string + +The search query `q` is parsed in a manner that is defined by the server implementation. nuget.org supports basic +filtering on a [variety of fields](../consume-packages/finding-and-choosing-packages.md#search-syntax). If no +`q` is provided, all packages should be returned, within the boundaries imposed by skip and take. This enables the +"Browse" tab in the NuGet Visual Studio experience. + +The `skip` parameter defaults to 0. + +The `take` parameter should be an integer greater than zero. The server implementation may impose a maximum value. + +If `prerelease` is not provided, pre-release packages are excluded. + +The `semVerLevel` query parameter is used to opt-in to +[SemVer 2.0.0 packages](https://github.com/NuGet/Home/wiki/SemVer2-support-for-nuget.org-%28server-side%29#identifying-semver-v200-packages). +If this query parameter is excluded, only packages with SemVer 1.0.0 compatible versions will be returned (with the +[standard NuGet versioning](../reference/package-versioning.md) caveats, such as version strings with 4 integer pieces). +If `semVerLevel=2.0.0` is provided, both SemVer 1.0.0 and SemVer 2.0.0 compatible packages will be returned. See the +[SemVer 2.0.0 support for nuget.org](https://github.com/NuGet/Home/wiki/SemVer2-support-for-nuget.org-%28server-side%29) +for more information. + +### Response + +The response is JSON document containing up to `take` search results. Search results are grouped by package ID. + +The root JSON object has the following properties: + +Name | Type | Required | Notes +--------- | ---------------- | -------- | ----- +totalHits | integer | yes | The total number of matches, disregarding `skip` and `take` +data | array of objects | yes | The search results matched by the request + +### Search result + +Each item in the `data` array is a JSON object comprised of a group of package versions sharing the same package ID. +The object has the following properties: + +Name | Type | Required | Notes +-------------- | -------------------------- | -------- | ----- +id | string | yes | The ID of the matched package +version | string | yes | The full SemVer 2.0.0 version string of the package (could contain build metadata) +description | string | no | +versions | array of objects | yes | All of the versions of the package matching the `prerelease` parameter +authors | string or array of strings | no | +iconUrl | string | no | +licenseUrl | string | no | +owners | string or array of strings | no | +projectUrl | string | no | +registration | string | no | The absolute URL to the associated [registration index](registration-base-url-resource.md#registration-index) +summary | string | no | +tags | string or array of strings | no | +title | string | no | +totalDownloads | integer | no | This value can be inferred by the sum of downloads in the `versions` array +verified | boolean | no | A JSON boolean indicating whether the package is [verified](../reference/id-prefix-reservation.md) + +On nuget.org, a verified package is one which has a package ID matching a reserved ID prefix and owned by one of the +reserved namespace's owners. For more information, see the +[documentation about ID prefix reservation](../reference/id-prefix-reservation.md). + +The metadata contained in the search result object is taken from the latest package version. Each item in the +`versions` array is a JSON object with the following properties: + +Name | Type | Required | Notes +--------- | ------- | -------- | ----- +@id | string | yes | The absolute URL to the associated [registration leaf](registration-base-url-resource.md#registration-leaf) +version | string | yes | The full SemVer 2.0.0 version string of the package (could contain build metadata) +downloads | integer | yes | The number of downloads for this specific package version + +### Sample request + +``` +GET https://api-v2v3search-0.nuget.org/query?q=NuGet.Versioning&prerelease=false +``` + +### Sample response + +[!code-JSON [search-result.json](./_data/search-result.json)] diff --git a/docs/API/service-index.md b/docs/API/service-index.md new file mode 100644 index 000000000..c7e11ad2d --- /dev/null +++ b/docs/API/service-index.md @@ -0,0 +1,128 @@ +--- +# required metadata  + +title: Service Index, NuGet API | Microsoft Docs +author: +- joelverhagen +- kraigb +ms.author: +- joelverhagen +- kraigb +manager: skofman +ms.date: 10/26/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: 2f6d6cf2-53fb-417a-b1d8-e0ac591c1699 + +# optional metadata + +description: The service index is the entry point of the NuGet HTTP API and enumerates the capabilities of the server. +keywords: NuGet API entry point, NuGetA PI endpoint discovery +ms.reviewer: +- karann +- unnir + +--- + +# Service Index + +The service index is a JSON document that is the entry point for a NuGet package source and allows a client +implementation to discover the package source's capabilities. The service index is a JSON object with two required +properties: `version` (the schema version of the service index) and `resources` (the endpoints or capabilities of the +package source). + +nuget.org's service index is located here: +``` +https://api.nuget.org/v3/index.json +``` + +## Versioning + +The `version` value is a SemVer 2.0.0 parseable version string which indicates the schema version of the service index. +The API mandates that the version string has a major version number of `3`. As non-breaking changes are made to the +service index schema, the version string's minor version will be increased. + +Each resource in the service index is versioned independently from the service index schema version. + +The current schema version is `3.0.0-beta.1`. + +## HTTP methods + +The service index is accessible using HTTP methods `GET` and `HEAD`. + +## Resources + +The `resources` property contains an array of resources supported by this package source. + +### Resource + +A resource is an object in the `resources` array. It represents a versioned capability of a package source. A +resource has the following properties: + +Name | Type | Required | Notes +------------- | ------ | -------- | ----- +@id | string | yes | The URL to the resource +@type | string | yes | A string constant representing the resource type +clientVersion | string | no | The client version that this resource applies to +comment | string | no | A human readable description of the resource + +The `@id` is a URL that must be absolute and must either have the HTTP or HTTPS schema. + +The `@type` is used to identify the specific protocol to use when interacting with resource. The type of the resource +is an opaque string but generally has the format: + +``` +{RESOURCE_NAME}/{RESOURCE_VERSION} +``` + +Clients are expected to hard code the `@type` values that they understand and look them up in a package source's +service index. The exact `@type` values in use today are enumerated on the individual resource reference documents +listed in the [API overview](overview.md#resources-and-schema). + +For the sake of this documentation, the documentation about different resources will essentially be grouped by the +`{RESOURCE_NAME}` found in the service index which is analogous to grouping by scenario. + +There is no requirement that each resource has a unique `@id` or `@type`. It is up to the client implementation to +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. + +### Sample request + +``` +GET https://api.nuget.org/v3/index.json +``` + +### Sample response + +[!code-JSON [service-index.json](./_data/service-index.json)] + +### Client version + +A resource `@type` can optionally have the following form: + +``` +{RESOURCE_NAME}/Versioned +``` + +When the `@type` is suffixed with the `/Versioned` string, an additional property is required on the resource: +`clientVersion`. + +This value is the minimum client version compatible with this resource. The client version is SemVer 2.0.0 compliant +version string. A client implementation knows its own version (also a SemVer 2.0.0 version) and compares it to the +resource `clientVersion` value using standard SemVer 2.0.0 comparison rules. If the client's own version is greater +than or equal to the resource `clientVersion` and if the `{RESOURCE_NAME}` is known, this resource should be considered +consumable by the client implementation. + +For this `clientVersion` model to work, there needs to be some agreement between the server and client implementors +about what protocol each `{RESOURCE_NAME}` and `clientVersion` combination implies. + +This feature allows server implementations to backport resources to clients that have already shipped. When no +`clientVersion` is specified on the resource, there is no way for a client that is already shipped to discover the +resource since the `@type` values that client knows about are hard coded. + +> [!Note] +> For nuget.org, the client versions in the service index align with the official NuGet client. + +> [!Note] +> This client version feature was first supported by version 4.0.0 of the official NuGet client. diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index ce3a843ee..243d749a7 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -103,14 +103,14 @@ The errors and warnings listed here are available only with [PackageReference-ba | --- | --- | | **Issue** | The package cannot be found on any sources. | | **Common causes** | The correct package source is missing or the package identifier is incorrect. | -| **Example message** | *Unable to find package System.Missing. No packages exist with this id in source(s): dotnet-core, dotnet-roslyn, NuGet.org* | +| **Example message** | *Unable to find package System.Missing. No packages exist with this id in source(s): dotnet-core, dotnet-roslyn, nuget.org* | ### NU1102 | | | | --- | --- | | **Issue** | The package identifier is found but a version within the specified dependency range cannot be found on any of the sources. | | **Common causes** | The correct package source is missing or the dependency range is incorrect. The range might be specified by a package and not the user. The user may need to switch to an available version if this package is referenced by the project directly. | -| **Example message** | *Unable to find package NuGet.Versioning with version (>= 9.0.1)
    - Found 30 version(s) in NuGet.org [ Nearest version: 4.0.0 ]
    - Found 10 version(s) in dotnet-buildtools [ Nearest version: 4.0.0-rc-2129 ]
    - Found 9 version(s) in NuGetVolatile [ Nearest version: 3.0.0-beta-00032 ]
    - Found 0 version(s) in dotnet-core
    - Found 0 version(s) in dotnet-roslyn* | +| **Example message** | *Unable to find package NuGet.Versioning with version (>= 9.0.1)
    - Found 30 version(s) in nuget.org [ Nearest version: 4.0.0 ]
    - Found 10 version(s) in dotnet-buildtools [ Nearest version: 4.0.0-rc-2129 ]
    - Found 9 version(s) in NuGetVolatile [ Nearest version: 3.0.0-beta-00032 ]
    - Found 0 version(s) in dotnet-core
    - Found 0 version(s) in dotnet-roslyn* | ### NU1103 diff --git a/docs/Reference/ID-Prefix-Reservation.md b/docs/Reference/ID-Prefix-Reservation.md index 225b8b4a3..69fc8f427 100644 --- a/docs/Reference/ID-Prefix-Reservation.md +++ b/docs/Reference/ID-Prefix-Reservation.md @@ -23,21 +23,21 @@ ms.reviewer: --- # Package ID prefix reservation -[NuGet.org](https://www.nuget.org/) and Visual Studio 2017 version 15.4 or later show a visual indicator for packages that are submitted by owners with a reserved package ID prefix, as long as the package matches the reserved ID prefix naming pattern. The below reference explains what the ID prefix reservation entails, and how an owner can apply for an ID prefix. +[nuget.org](https://www.nuget.org/) and Visual Studio 2017 version 15.4 or later show a visual indicator for packages that are submitted by owners with a reserved package ID prefix, as long as the package matches the reserved ID prefix naming pattern. The below reference explains what the ID prefix reservation entails, and how an owner can apply for an ID prefix. ## What is package ID prefix reservation? Package owners are able to reserve and protect their identity by reserving ID prefixes. Package consumers are provided with additional information when consuming packages that the package they are consuming are not deceptive in their identifying properties. Read on to see how ID prefix reservation works in details. ## ID prefix reservation details -When a package ID prefix is reserved, several things happen on the [NuGet.org](https://www.nuget.org/) gallery, as well as in Visual Studio. In addition, there are advanced scenarios that are supported by ID prefix reservations, such as setting a prefix as 'public', delegating prefix subsets to multiple owners. +When a package ID prefix is reserved, several things happen on the [nuget.org](https://www.nuget.org/) gallery, as well as in Visual Studio. In addition, there are advanced scenarios that are supported by ID prefix reservations, such as setting a prefix as 'public', delegating prefix subsets to multiple owners. The below section describes the feature in detail, as well as the more advanced functionality. -### ID prefix reservation on NuGet.org -When a prefix is reserved on [NuGet.org](https://www.nuget.org/), the following will happen: -1. A prefix reservation is associated with an owner or set of owners on [NuGet.org](https://www.nuget.org/). -2. Whenever a package is submitted to [NuGet.org](https://www.nuget.org/) with an ID that matches the reserved ID prefix, the package is rejected unless it originates from the owner(s) that reserved the ID prefix. -3. Any package that matches the reserved ID prefix and originates from the owner(s) that reserved the ID prefix will have a visual indicator in Visual Studio 2017 version 15.4 or later, and on [NuGet.org](https://www.nuget.org/) indicating that the package is under a reserved ID prefix. This is true for both new package submissions as well as existing packages under the owner(s). **Note:** The indicator in Visual Studio will only appear if a single feed is selected as the package source. +### ID prefix reservation on nuget.org +When a prefix is reserved on [nuget.org](https://www.nuget.org/), the following will happen: +1. A prefix reservation is associated with an owner or set of owners on [nuget.org](https://www.nuget.org/). +2. Whenever a package is submitted to [nuget.org](https://www.nuget.org/) with an ID that matches the reserved ID prefix, the package is rejected unless it originates from the owner(s) that reserved the ID prefix. +3. Any package that matches the reserved ID prefix and originates from the owner(s) that reserved the ID prefix will have a visual indicator in Visual Studio 2017 version 15.4 or later, and on [nuget.org](https://www.nuget.org/) indicating that the package is under a reserved ID prefix. This is true for both new package submissions as well as existing packages under the owner(s). **Note:** The indicator in Visual Studio will only appear if a single feed is selected as the package source. 4. All previously existing packages that match the reserved ID prefix, but are *not* owned by the owner of the reserved prefix will remain unchanged (they will not be unlisted, but they will also not have the visual indicator). In addition, owners of these packages will still be able to submit new versions to the package. These changes are based on the following conditions and impose several additional restrictions: @@ -52,10 +52,10 @@ There are several more advanced prefix reservation scenarios described below, in * During prefix reservation, the owner can choose to make a prefix public. This will still give them the visual indicator showing that the package originates from a reserved prefix, but it will **not** block future package submissions on the prefix for any owner. This is useful for open source projects with many contributors - the top or core contributors can have the prefix reserved, but it can still be open to all contributors. ### Prefix reservation visual indicator -When a package comes from a reserved prefix, you will see the below visual indicators on the [NuGet.org](https://www.nuget.org/) gallery and in Visual Studio 2017 version 15.4 or later: +When a package comes from a reserved prefix, you will see the below visual indicators on the [nuget.org](https://www.nuget.org/) gallery and in Visual Studio 2017 version 15.4 or later: -**NuGet.org Gallery** -![NuGet.org Gallery](media/nuget-gallery-reserved-prefix.png) +**nuget.org Gallery** +![nuget.org Gallery](media/nuget-gallery-reserved-prefix.png) **Visual Studio** ![Visual Studio](media/visual-studio-reserved-prefix.png) @@ -64,12 +64,12 @@ When a package comes from a reserved prefix, you will see the below visual indic To apply for a prefix reservation, follow the below steps. 1. Review the acceptance [criteria for prefix ID reservation](#id-prefix-reservation-criteria). 2. Determine the namespaces you want to reserve, in addition to any [advanced prefix reservation scenarios](#advanced-prefix-reservation-scenarios) you may require. -3. Send a mail to [account@nuget.org](mailto:account@nuget.org) with the owner display name on [NuGet.org](https://www.nuget.org/), as well as any reserved prefixes you are requesting. If you are delegating prefix subsets to multiple owners, make sure you mention all owner display names and prefix subsets. +3. Send a mail to [account@nuget.org](mailto:account@nuget.org) with the owner display name on [nuget.org](https://www.nuget.org/), as well as any reserved prefixes you are requesting. If you are delegating prefix subsets to multiple owners, make sure you mention all owner display names and prefix subsets. After the application is submitted, you will be notified of acceptance or rejection (with the criteria that caused rejection). We may need to ask additional identifying questions to confirm owner identity. ### ID prefix reservation criteria -When reviewing any application for ID prefix reservation, the [NuGet.org](https://www.nuget.org/) team will evalaute the application against the below criteria. Not all criteria needs to be met for a prefix to be reserved, but the application may be denied if there is not substantial evidence of the criteria being met (with an explanation given): +When reviewing any application for ID prefix reservation, the [nuget.org](https://www.nuget.org/) team will evalaute the application against the below criteria. Not all criteria needs to be met for a prefix to be reserved, but the application may be denied if there is not substantial evidence of the criteria being met (with an explanation given): 1. Does the package ID prefix properly and clearly identify the package owner? 2. Are a significant number of the packages that have already been submitted by the owner under the package ID prefix? 3. Is the package ID prefix something common that should not belong to any individual owner or organization? @@ -77,29 +77,6 @@ When reviewing any application for ID prefix reservation, the [NuGet.org](https: 5. Are the identifying properties of the packages that match the package ID prefix clear and consistent (especially the package author)? ## 3rd party feed provider scenarios -If a 3rd party feed provider is interested in implementing their own service to provide prefix reservations, you can do so by modifying the search service in the NuGet v3 feed providers. The addition in the feed search service is to add the *verified* property, with examples for the v3 feeds below. The NuGet client will not support the added property in the v2 feed. - -### v3 search service example -```json -"data": -[ - { - "@id": "https://api.nuget.org/v3/registration2/mysql.data.entity/index.json", - "@type": "Package", - "registration": "https://api.nuget.org/v3/registration2/mysql.data.entity/index.json", - "id": "MySql.Data.Entity", - "version": "6.9.9", - "description": "Entity Framework 6.0 supported", - "summary": "", - "title": "MySql.Data.Entity", - "iconUrl": "http://www.mysql.com/common/logos/logo-mysql-170x115.png", - "licenseUrl": "http://www.gnu.org/licenses/old-licenses/gpl-2.0.html", - "projectUrl": "http://dev.mysql.com/downloads/", - "tags": [], - "authors": [], - "totalDownloads": 434685, - "verified": true, - "versions": [] - }, -] -``` +If a 3rd party feed provider is interested in implementing their own service to provide prefix reservations, you can do so by modifying the search service in the NuGet V3 feed providers. The addition in the feed search service is to add the *verified* property, with examples for the V3 feeds below. The NuGet client will not support the added property in the V2 feed. + +For more information, see the [documentation about the API's search service](../api/search-query-service-resource.md). diff --git a/docs/Reference/NuGet-Client-SDK.md b/docs/Reference/NuGet-Client-SDK.md new file mode 100644 index 000000000..201ceb920 --- /dev/null +++ b/docs/Reference/NuGet-Client-SDK.md @@ -0,0 +1,36 @@ +--- +# required metadata  + +title: NuGet v3 Client and NuGetGallery APIs | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 1/9/2017 +ms.topic: article +ms.prod: nuget +ms.technology: null +ms.assetid: d1a393b7-51b1-4840-b1a8-fdd76455077d + +# optional metadata + +description: The NuGet and NuGetGallery APIs are evolving and not yet documented, but examples are available on Dave Glick's blog. +keywords: NuGet API, NuGetGallery API, NuGet v3 libraries +ms.reviewer: +- karann-msft +- unniravindranathan + +--- + +# NuGet Client SDK + +The NuGet v3 Client and NuGetGallery APIs are constantly evolving and we are working on having a stable surface area that we can document soon. + +In the meantime, you can find examples and documentation for some of the API in the following blog series by Dave Glick: + +- [Exploring the NuGet v3 Libraries, Part 1: Introduction and concepts](http://daveaglick.com/posts/exploring-the-nuget-v3-libraries-part-1) +- [Exploring the NuGet v3 Libraries, Part 2: Searching for packages](http://daveaglick.com/posts/exploring-the-nuget-v3-libraries-part-2) +- [Exploring the NuGet v3 Libraries, Part 3: Installing packages](http://daveaglick.com/posts/exploring-the-nuget-v3-libraries-part-3) + +> [!Note] +> These blog posts were written shortly after the **3.4.3** version of the NuGet client SDK packages were released. +> Newer versions of the packages may be incompatible with the information in the blog posts. diff --git a/docs/Reference/extensibility/NuGet-Credential-Providers-for-Visual-Studio.md b/docs/Reference/extensibility/NuGet-Credential-Providers-for-Visual-Studio.md new file mode 100644 index 000000000..afad59e46 --- /dev/null +++ b/docs/Reference/extensibility/NuGet-Credential-Providers-for-Visual-Studio.md @@ -0,0 +1,101 @@ +--- +# required metadata + +title: NuGet credential providers for Visual Studio | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 1/9/2017 +ms.topic: article +ms.prod: nuget +#ms.service: +ms.technology: null +ms.assetid: 9c7f6d16-f437-47c4-82d4-6c996e0b18ec + +# optional metadata + +description: NuGet credential providers authenticate with feeds by implementing the IVsCredentialProvider interface in a Visual Studio extension. +keywords: NuGet credential providers, authenticate with feed, authenticate with gallery, NuGet visual studio extension +#ROBOTS: +#audience: +#ms.devlang: +ms.reviewer: +- karann-msft +- unniravindranathan +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: + +--- + +# Authenticating feeds in Visual Studio with NuGet credential providers + +The NuGet Visual Studio Extension 3.6+ supports credential providers, which enable NuGet to work with authenticated feeds. +After you install a NuGet credential provider for Visual Studio, the NuGet Visual Studio extension will automatically acquire and refresh credentials for authenticated feeds as necessary. + +A sample implementation can be found in [the VsCredentialProvider sample](https://github.com/NuGet/Samples/tree/master/VsCredentialProvider). + +> [!Note] +> NuGet credential providers for Visual Studio must be installed as a regular Visual Studio extension and will require [Visual Studio 2017](https://aka.ms/vs/15/preview/vs_enterprise) (currently in preview) or above. +> +> NuGet credential providers for Visual Studio work only in Visual Studio (not in dotnet restore or nuget.exe). For credential providers with nuget.exe, see [nuget.exe Credential Providers](nuget-exe-Credential-providers.md). + +## Available NuGet credential providers for Visual Studio + +There is a credential provider built into the Visual Studio NuGet extension to support Visual Studio Team Services. + +The NuGet Visual Studio Extension uses an internal `VsCredentialProviderImporter` which also scans for plug-in credential providers. These plug-in credential providers must be discoverable as a MEF Export of type `IVsCredentialProvider`. + +Available plug-in credential providers include: + +- [MyGet Credential Provider for Visual Studio 2017](http://docs.myget.org/docs/reference/credential-provider-for-visual-studio) + +## Creating a NuGet credential provider for Visual Studio + +The NuGet Visual Studio Extension 3.6+ implements an internal CredentialService that is used to acquire credentials. The CredentialService has a list of built-in and plug-in credential providers. Each provider is tried sequentially until credentials are acquired. + +During credential acquisition, the credential service will try credential providers in the following order, stopping as soon as credentials are acquired: + +1. Credentials will be fetched from NuGet configuration files (using the built-in `SettingsCredentialProvider`). +1. If the package source is on Visual Studio Team Services, the `VisualStudioAccountProvider` will be used. +1. All other plug-in credential providers will be tried sequentially. +1. If no credentials have been acquired yet, the user will be prompted for credentials using a standard basic authentication dialog. + +### Implementing IVsCredentialProvider.GetCredentialsAsync + +To create a NuGet credential provider for Visual Studio, create a Visual Studio Extension that exposes a public MEF Export implementing the `IVsCredentialProvider` type, and adheres to the principles outlined below. + +```cs +public interface IVsCredentialProvider +{ + Task GetCredentialsAsync( + Uri uri, + IWebProxy proxy, + bool isProxyRequest, + bool isRetry, + bool nonInteractive, + CancellationToken cancellationToken); +} +``` + +A sample implementation can be found in [the VsCredentialProvider sample](https://github.com/NuGet/Samples/tree/master/VsCredentialProvider). + +Each NuGet credential provider for Visual Studio must: + +1. Determine whether it can provide credentials for the targeted URI before initiating credential acquisition. If the provider cannot supply credentials for the targeted source, then it should return `null`. +1. If the provider does handle requests for the targeted URI, but cannot supply credentials, an exception should be thrown. + +A custom NuGet credential provider for Visual Studio must implement the `IVsCredentialProvider` interface available in the [NuGet.VisualStudio package](https://www.nuget.org/packages/NuGet.VisualStudio/). + +#### GetCredentialAsync + +| Input Parameter |Description| +| ----------------|-----------| +| Uri uri | The package source Uri for which credentials are being requested.| +| IWebProxy proxy | Web proxy to use when communicating on the network. Null if there is no proxy authentication configured. | +| bool isProxyRequest | True if this request is to get proxy authentication credentials. If the implementation is not valid for acquiring proxy credentials, then null should be returned. | +| bool isRetry | True if credentials were previously requested for this Uri, but the supplied credentials did not allow authorized access. | +| bool nonInteractive | If true, the credential provider must suppress all user prompts and use default values instead. | +| CancellationToken cancellationToken | This cancellation token should be checked to determine if the operation requesting credentials has been cancelled. | + +**Return value**: A credentials object implementing the [`System.Net.ICredentials` interface](https://msdn.microsoft.com/library/system.net.icredentials.aspx). diff --git a/docs/Reference/extensibility/nuget-exe-Credential-Providers.md b/docs/Reference/extensibility/nuget-exe-Credential-Providers.md new file mode 100644 index 000000000..793854220 --- /dev/null +++ b/docs/Reference/extensibility/nuget-exe-Credential-Providers.md @@ -0,0 +1,98 @@ +--- +# required metadata + +title: nuget.exe Credential Providers | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 1/9/2017 +ms.topic: article +ms.prod: nuget +#ms.service: +ms.technology: null +ms.assetid: 3cf592de-39f2-4e7f-a597-62635fdcedfa + +# optional metadata + +description: nuget.exe credential providers authenticate with a feed, and are implemented as command-line executables that follow specific conventions. +keywords: nuget.exe credential providers, credential provider API, authenticate with feed, authenticate with gallery +#ROBOTS: +#audience: +#ms.devlang: +ms.reviewer: +- karann-msft +- unniravindranathan +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: + +--- + +# Authenticating feeds with nuget.exe credential providers + +*NuGet 3.3+* + +When `nuget.exe` needs credentials to authenticate with a feed, it looks for them in the following manner: + +1. NuGet first looks for credentials in `Nuget.Config` files. +1. NuGet then uses plug-in credential providers, subject to the order given below. (And example is the [Visual Studio Team Services Credential Provider](https://www.visualstudio.com/docs/package/get-started/nuget/auth#vsts-credential-provider).) +1. NuGet then prompts the user for credentials on the command line. + +> [!Note] +> nuget.exe credential providers only work in nuget.exe (not in dotnet restore or Visual Studio). For credential providers with Visual Studio, see [nuget.exe Credential Providers for Visual Studio](nuget-credential-providers-for-visual-studio.md) + +nuget.exe credential providers can be used in 3 ways: + +- **Globally**: to make a credential provider available to all instances of `nuget.exe` run under the current user's profile, add it to `%LocalAppData%\NuGet\CredentialProviders`. You may need to create the `CredentialProviders` folder. Credential providers can be installed at the root of the `CredentialProviders` folder or within a subfolder. If a credential provider has multiple files/assemblies, you can use subfolders to keep the providers organized. + +- **From an environment variable**: Credential providers can be stored anywhere and made accessible to `nuget.exe` by setting the `%NUGET_CREDENTIALPROVIDERS_PATH%` environment variable to the provider location. This variable can be a semicolon-separated list (for example, `path1;path2`) if you have multiple locations. + +- **Alongside nuget.exe**: nuget.exe credential providers can be placed in the same folder as `nuget.exe`. + +When loading credential providers, `nuget.exe` searches the above locations, in order, for any file named `credentialprovider*.exe`, then loads those files in the order they're found. If multiple credential providers exist in the same folder, they're loaded in alphabetical order. + + +## Creating a nuget.exe credential provider + +A credential provider is a command-line executable, named in the form `CredentialProvider*.exe`, that gathers inputs, acquires credentials as appropriate, and then returns the appropriate exit status code and standard output. + +A provider must do the following: + +- Determine whether it can provide credentials for the targeted URI before initiating credential acquisition. If not, it should return status code 1 with no credentials. +- Not modify `Nuget.Config` (such as setting credentials there). +- Handle HTTP proxy configuration on its own, as NuGet does not provide proxy information to the plugin. +- Return credentials or error details to `nuget.exe` by writing a JSON response object (see below) to stdout, using UTF-8 encoding. +- Optionally emit additional trace logging to stderr. No secrets should ever be written to stderr, since at verbosity levels "normal" or "detailed" such traces are echoed by NuGet to the console. +- Unexpected parameters should be ignored, providing forward compatibility with future versions of NuGet. + +### Input parameters + + +| Parameter/Switch |Description| +|----------------|-----------| +| Uri {value} | The package source URI requiring credentials.| +| NonInteractive | If present, provider does not issue interactive prompts. | +| IsRetry | If present, indicates that this attempt is a retry of a previously failed attempt. Providers typically use this flag to ensure that they bypass any existing cache and prompt for new credentials if possible.| +| Verbosity {value} | If present, one of the following values: "normal", "quiet", or "detailed". If no value is supplied, defaults to "normal". Providers should use this as an indication of the level of optional logging to emit to the standard error stream. | + +### Exit codes + +| Code |Result | Description | +|----------------|-----------|-----------| +| 0 | Success | Credentials were successfully acquired and have been written to stdout.| +| 1 | ProviderNotApplicable | The current provider does not provide credentials for the given URI.| +| 2 | Failure | The provider is the correct provider for the given URI, but cannot provide credentials. In this case, nuget.exe will not retry authentication and will fail. A typical example is when a user cancels an interactive login. | + +### Standard output + +| Property |Notes| +|----------------|-----------| +| Username | Username for authenticated requests.| +| Password | Password for authenticated requests.| +| Message | Optional details about the response, used only to show additional details in failure cases. | + +Example stdout: + + { "Username" : "freddy@example.com", + "Password" : "bwm3bcx6txhprzmxhl2x63mdsul6grctazoomtdb6kfbof7m3a3z", + "Message" : "" } diff --git a/docs/TOC.md b/docs/TOC.md index 03016d812..10816e839 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -79,11 +79,20 @@ ## [Analyzers Conventions](Schema/Analyzers-Conventions.md) ## [Errors and warnings](Reference/Errors-and-Warnings.md) ## [ID Prefix Reservation](Reference/ID-Prefix-Reservation.md) +## [NuGet Client SDK](Reference/nuget-client-sdk.md) +## Extensibility +### [NuGet Credential Providers for Visual Studio](Reference/extensibility/Nuget-Credential-Providers-for-Visual-Studio.md) +### [nuget.exe Credential Providers](Reference/extensibility/nuget-exe-Credential-Providers.md) # API -## [NuGet API V3](API/NuGet-API-V3.md) -## [NuGet Credential Providers for Visual Studio](API/Nuget-Credential-Providers-for-Visual-Studio.md) -## [nuget.exe Credential Providers](API/nuget-exe-Credential-Providers.md) -## [NuGet Protocols](API/nuget-protocols.md) +## [Overview](API/overview.md) +## [Service Index](API/service-index.md) +## [Push and Delete](API/package-publish-resource.md) +## [Search](API/search-query-service-resource.md) +## [Autocomplete](API/search-autocomplete-service-resource.md) +## [Package Metadata](API/registration-base-url-resource.md) +## [Package Content](API/package-base-address-resource.md) +## [Report Abuse URL](API/report-abuse-resource.md) +## [nuget.org Protocols](API/nuget-protocols.md) # Visual Studio Extensibility ## [NuGet API in Visual Studio](Visual-Studio-Extensibility/NuGet-API-in-Visual-Studio.md) ## [Project System Support](Visual-Studio-Extensibility/Project-System-Support.md) diff --git a/docs/_breadcrumb/toc.yml b/docs/_breadcrumb/toc.yml index 5e45b16ed..5c1b18fd9 100644 --- a/docs/_breadcrumb/toc.yml +++ b/docs/_breadcrumb/toc.yml @@ -29,7 +29,7 @@ topicHref: /nuget/schema/nuspec - name: API tocHref: /nuget/api/ - topicHref: /nuget/api/nuget-api-v3 + topicHref: /nuget/api/overview - name: Visual Studio Extensibility tocHref: /nuget/visual-studio-extensibility/ topicHref: /nuget/visual-studio-extensibility/nuget-api-in-visual-studio diff --git a/docs/docfx.json b/docs/docfx.json index bed087a09..6e95c50f8 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -19,7 +19,9 @@ "files": [ "**/*.png", "**/*.jpg", - "**/*.svg" + "**/*.svg", + "**/*.json", + "**/*.xml" ], "exclude": [ "**/obj/**", diff --git a/docs/index.md b/docs/index.md index 0dfd202e5..40fa6829f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -200,18 +200,18 @@ ms.reviewer:
  • - +
    - API: Details about the NuGet API and authenticating with package sources. + API: Details about the NuGet API

    API

    -

    Details about the NuGet API and authenticating with package sources.

    +

    Details about the NuGet HTTP protocol and programmatically interacting with package sources.

    From be0796563fc9e1a1f926e83b05796f570cc6f561 Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Wed, 1 Nov 2017 18:18:16 -0700 Subject: [PATCH 0355/2943] Remove mention of clientVersion from the API (this one needs more discussion) --- docs/API/_data/service-index.json | 12 +-------- docs/API/registration-base-url-resource.md | 15 +++++------ docs/API/service-index.md | 31 ---------------------- 3 files changed, 8 insertions(+), 50 deletions(-) diff --git a/docs/API/_data/service-index.json b/docs/API/_data/service-index.json index 18ef7c93d..44bb9606b 100644 --- a/docs/API/_data/service-index.json +++ b/docs/API/_data/service-index.json @@ -24,16 +24,6 @@ "@id": "https://api.nuget.org/v3/registration2/", "@type": "RegistrationsBaseUrl/3.0.0-rc", "comment": "Base URL of Azure storage where NuGet package registration info is stored used by RC clients. This base URL does not include SemVer 2.0.0 packages." - }, - { - "@id": "https://api.nuget.org/v3/registration2-gz-semver2/", - "@type": "RegistrationsBaseUrl/Versioned", - "clientVersion": "4.3.0-alpha", - "comment": "Base URL of Azure storage where NuGet package registration info is stored in GZIP format. This base URL includes SemVer 2.0.0 packages." } - ], - "@context": { - "@vocab": "http://schema.nuget.org/services#", - "comment": "http://www.w3.org/2000/01/rdf-schema#comment" - } + ] } \ No newline at end of file diff --git a/docs/API/registration-base-url-resource.md b/docs/API/registration-base-url-resource.md index ba416b3c1..51d784e62 100644 --- a/docs/API/registration-base-url-resource.md +++ b/docs/API/registration-base-url-resource.md @@ -38,14 +38,13 @@ registration hive contains all metadata about every package available on a packa The following `@type` values are used: -@type value | clientVersion value | Notes -------------------------------- | ------------------- | ----- -RegistrationsBaseUrl | (none) | The initial release -RegistrationsBaseUrl/3.0.0-beta | (none) | Alias of `RegistrationsBaseUrl` -RegistrationsBaseUrl/3.0.0-rc | (none) | Alias of `RegistrationsBaseUrl` -RegistrationsBaseUrl/3.4.0 | (none) | Gzipped responses -RegistrationsBaseUrl/3.6.0 | (none) | Includes SemVer 2.0.0 packages -RegistrationsBaseUrl/Versioned | 4.3.0-alpha | Alias of `RegistrationsBaseUrl/3.6.0` +@type value | Notes +------------------------------- | ----- +RegistrationsBaseUrl | The initial release +RegistrationsBaseUrl/3.0.0-beta | Alias of `RegistrationsBaseUrl` +RegistrationsBaseUrl/3.0.0-rc | Alias of `RegistrationsBaseUrl` +RegistrationsBaseUrl/3.4.0 | Gzipped responses +RegistrationsBaseUrl/3.6.0 | Includes SemVer 2.0.0 packages This represents three distinct registration hives available for various client versions. diff --git a/docs/API/service-index.md b/docs/API/service-index.md index c7e11ad2d..0968d8a3e 100644 --- a/docs/API/service-index.md +++ b/docs/API/service-index.md @@ -64,7 +64,6 @@ Name | Type | Required | Notes ------------- | ------ | -------- | ----- @id | string | yes | The URL to the resource @type | string | yes | A string constant representing the resource type -clientVersion | string | no | The client version that this resource applies to comment | string | no | A human readable description of the resource The `@id` is a URL that must be absolute and must either have the HTTP or HTTPS schema. @@ -96,33 +95,3 @@ GET https://api.nuget.org/v3/index.json ### Sample response [!code-JSON [service-index.json](./_data/service-index.json)] - -### Client version - -A resource `@type` can optionally have the following form: - -``` -{RESOURCE_NAME}/Versioned -``` - -When the `@type` is suffixed with the `/Versioned` string, an additional property is required on the resource: -`clientVersion`. - -This value is the minimum client version compatible with this resource. The client version is SemVer 2.0.0 compliant -version string. A client implementation knows its own version (also a SemVer 2.0.0 version) and compares it to the -resource `clientVersion` value using standard SemVer 2.0.0 comparison rules. If the client's own version is greater -than or equal to the resource `clientVersion` and if the `{RESOURCE_NAME}` is known, this resource should be considered -consumable by the client implementation. - -For this `clientVersion` model to work, there needs to be some agreement between the server and client implementors -about what protocol each `{RESOURCE_NAME}` and `clientVersion` combination implies. - -This feature allows server implementations to backport resources to clients that have already shipped. When no -`clientVersion` is specified on the resource, there is no way for a client that is already shipped to discover the -resource since the `@type` values that client knows about are hard coded. - -> [!Note] -> For nuget.org, the client versions in the service index align with the official NuGet client. - -> [!Note] -> This client version feature was first supported by version 4.0.0 of the official NuGet client. From 45f4ef652f6ae6f1c7bc9af4b8c15093e7bef689 Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Mon, 30 Oct 2017 17:25:40 -0700 Subject: [PATCH 0356/2943] Add documentation for the catalog resource Address https://github.com/NuGet/NuGetGallery/issues/4913 --- docs/API/_data/catalog-index.json | 25 ++ docs/API/_data/catalog-package-delete.json | 12 + docs/API/_data/catalog-package-details.json | 55 +++ docs/API/_data/catalog-page.json | 48 +++ docs/API/catalog-resource.md | 420 ++++++++++++++++++++ docs/API/overview.md | 1 + docs/TOC.md | 1 + 7 files changed, 562 insertions(+) create mode 100644 docs/API/_data/catalog-index.json create mode 100644 docs/API/_data/catalog-package-delete.json create mode 100644 docs/API/_data/catalog-package-details.json create mode 100644 docs/API/_data/catalog-page.json create mode 100644 docs/API/catalog-resource.md diff --git a/docs/API/_data/catalog-index.json b/docs/API/_data/catalog-index.json new file mode 100644 index 000000000..2eab700eb --- /dev/null +++ b/docs/API/_data/catalog-index.json @@ -0,0 +1,25 @@ +{ + "commitId": "3d698852-eefb-48ed-8f55-9ee357540d20", + "commitTimeStamp": "2017-10-31T23:33:17.0954363Z", + "count": 3, + "items": [ + { + "@id": "https://api.nuget.org/v3/catalog0/page0.json", + "commitId": "3a4df280-3d86-458e-a713-4c91ca261fef", + "commitTimeStamp": "2015-02-01T06:30:11.7477681Z", + "count": 540 + }, + { + "@id": "https://api.nuget.org/v3/catalog0/page1.json", + "commitId": "8bcd3cbf-74f0-47a2-a7ae-b7ecc50005d3", + "commitTimeStamp": "2015-02-01T06:39:53.9553899Z", + "count": 540 + }, + { + "@id": "https://api.nuget.org/v3/catalog0/page2.json", + "commitId": "3d698852-eefb-48ed-8f55-9ee357540d20", + "commitTimeStamp": "2017-10-31T23:33:17.0954363Z", + "count": 47 + } + ] +} \ No newline at end of file diff --git a/docs/API/_data/catalog-package-delete.json b/docs/API/_data/catalog-package-delete.json new file mode 100644 index 000000000..9addb5b05 --- /dev/null +++ b/docs/API/_data/catalog-package-delete.json @@ -0,0 +1,12 @@ +{ + "@type": [ + "PackageDelete", + "catalog:Permalink" + ], + "catalog:commitId": "19fec5b4-9335-4e4b-bd50-8d5d3f734597", + "catalog:commitTimeStamp": "2017-11-02T00:40:00.1969812Z", + "id": "netstandard1.4_lib", + "originalId": "netstandard1.4_lib", + "published": "2017-11-02T00:37:43.7181952Z", + "version": "1.0.0-test" +} \ No newline at end of file diff --git a/docs/API/_data/catalog-package-details.json b/docs/API/_data/catalog-package-details.json new file mode 100644 index 000000000..9aa138b86 --- /dev/null +++ b/docs/API/_data/catalog-package-details.json @@ -0,0 +1,55 @@ +{ + "@type": [ + "PackageDetails", + "catalog:Permalink" + ], + "authors": "Microsoft DPE", + "catalog:commitId": "49fe04d8-5694-45a5-9822-3be61bda871b", + "catalog:commitTimeStamp": "2015-02-01T11:18:40.8589193Z", + "created": "2011-12-02T20:21:23.74Z", + "description": "This package contains a class library with the Windows Azure Storage Proxy Cloud Services, and a WebActivator enabled class with the default configuration.", + "iconUrl": "http://wazmobiletoolkit.blob.core.windows.net/nuget/logos/WinAzure_rgb.png", + "id": "WindowsAzure.Storage", + "isPrerelease": false, + "language": "en-US", + "licenseUrl": "http://www.opensource.org/licenses/ms-pl", + "packageHash": "2edCwKLcbcgFJpsAwa883BLtOy8bZpWwbQpiIb71E74k5t2f2WzXEGWbPwntRleUEgSrcxJrh9Orm/TAmgO4NQ==", + "packageHashAlgorithm": "SHA512", + "packageSize": 118348, + "projectUrl": "http://watwp.codeplex.com/", + "published": "1900-01-01T00:00:00Z", + "requireLicenseAcceptance": false, + "title": "Windows Azure Storage Proxy Cloud Services", + "version": "1.0.0", + "dependencyGroups": [ + { + "@id": "https://api.nuget.org/v3/catalog0/data/2015.02.01.11.18.40/windowsazure.storage.1.0.0.json#dependencygroup", + "@type": "PackageDependencyGroup", + "dependencies": [ + { + "@id": "https://api.nuget.org/v3/catalog0/data/2015.02.01.11.18.40/windowsazure.storage.1.0.0.json#dependencygroup/aspnet.suppressformsredirect", + "@type": "PackageDependency", + "id": "aspnet.suppressformsredirect", + "range": "[0.0.1.4, )" + }, + { + "@id": "https://api.nuget.org/v3/catalog0/data/2015.02.01.11.18.40/windowsazure.storage.1.0.0.json#dependencygroup/webactivator", + "@type": "PackageDependency", + "id": "WebActivator", + "range": "[1.4.4, )" + }, + { + "@id": "https://api.nuget.org/v3/catalog0/data/2015.02.01.11.18.40/windowsazure.storage.1.0.0.json#dependencygroup/webapi.all", + "@type": "PackageDependency", + "id": "WebApi.All", + "range": "[0.5.0, )" + } + ] + } + ], + "tags": [ + "Storage", + "WindowsAzure", + "DPE" + ] +} \ No newline at end of file diff --git a/docs/API/_data/catalog-page.json b/docs/API/_data/catalog-page.json new file mode 100644 index 000000000..9f0b9a048 --- /dev/null +++ b/docs/API/_data/catalog-page.json @@ -0,0 +1,48 @@ +{ + "commitId": "616117f5-d9dd-4664-82b9-74d87169bbe9", + "commitTimeStamp": "2017-10-31T23:30:32.4197849Z", + "count": 5, + "parent": "https://api.nuget.org/v3/catalog0/index.json", + "items": [ + { + "@id": "https://api.nuget.org/v3/catalog0/data/2017.10.31.23.30.32/util.biz.payments.0.0.4-preview.json", + "@type": "nuget:PackageDetails", + "commitId": "616117f5-d9dd-4664-82b9-74d87169bbe9", + "commitTimeStamp": "2017-10-31T23:30:32.4197849Z", + "nuget:id": "Util.Biz.Payments", + "nuget:version": "0.0.4-preview" + }, + { + "@id": "https://api.nuget.org/v3/catalog0/data/2017.10.31.23.28.02/util.biz.0.0.4-preview.json", + "@type": "nuget:PackageDetails", + "commitId": "820340b2-97e3-4f93-b82e-bc85550a6560", + "commitTimeStamp": "2017-10-31T23:28:02.788239Z", + "nuget:id": "Util.Biz", + "nuget:version": "0.0.4-preview" + }, + { + "@id": "https://api.nuget.org/v3/catalog0/data/2017.10.31.22.31.22/sourcecode.clay.data.1.0.0-preview1-00258.json", + "@type": "nuget:PackageDetails", + "commitId": "cae34527-ffc7-4e96-884f-7cf95a32dbdd", + "commitTimeStamp": "2017-10-31T22:31:22.5169519Z", + "nuget:id": "SourceCode.Clay.Data", + "nuget:version": "1.0.0-preview1-00258" + }, + { + "@id": "https://api.nuget.org/v3/catalog0/data/2017.10.31.22.31.22/sourcecode.clay.1.0.0-preview1-00258.json", + "@type": "nuget:PackageDetails", + "commitId": "cae34527-ffc7-4e96-884f-7cf95a32dbdd", + "commitTimeStamp": "2017-10-31T22:31:22.5169519Z", + "nuget:id": "SourceCode.Clay", + "nuget:version": "1.0.0-preview1-00258" + }, + { + "@id": "https://api.nuget.org/v3/catalog0/data/2017.10.31.22.31.22/sourcecode.clay.json.1.0.0-preview1-00258.json", + "@type": "nuget:PackageDetails", + "commitId": "cae34527-ffc7-4e96-884f-7cf95a32dbdd", + "commitTimeStamp": "2017-10-31T22:31:22.5169519Z", + "nuget:id": "SourceCode.Clay.Json", + "nuget:version": "1.0.0-preview1-00258" + } + ] +} \ No newline at end of file diff --git a/docs/API/catalog-resource.md b/docs/API/catalog-resource.md new file mode 100644 index 000000000..c91f963d5 --- /dev/null +++ b/docs/API/catalog-resource.md @@ -0,0 +1,420 @@ +--- +# required metadata  + +title: Catalog, NuGet V3 API | Microsoft Docs +author: +- joelverhagen +- kraigb +ms.author: +- joelverhagen +- kraigb +manager: skofman +ms.date: 10/30/2017 +ms.topic: reference +ms.prod: nuget +ms.technology: null +ms.assetid: cfd338b5-6253-48c0-88ba-17c6b98fc935 + +# optional metadata + +description: The catalog is an index of all packages created and deleted on nuget.org. +keywords: NuGet V3 API catalog, nuget.org transaction log, replicate NuGet.org, clone NuGet.org, append-only record of NuGet.org +ms.reviewer: +- karann +- unniravindranathan + +--- + +# Catalog + +It is possible to enumerate all package creates and deletes on a package source by inspecting a resource +called the **catalog**. The catalog resource has the `Catalog` type in the [service index](service-index.md). + +> [!Note] +> Since the catalog is not used by the official NuGet client, not all package sources implement the catalog. + +## Versioning + +The following `@type` value is used: + +@type value | Notes +------------- | ----- +Catalog/3.0.0 | The initial release + +## Base URL + +The entry point URL for the following APIs is the value of the `@id` property associated with the aforementioned +resource `@type` values. In the following document, the placeholder URL `{@id}` will be used. + +## HTTP methods + +All URLs found in the catalog resource only support the HTTP methods `GET` and `HEAD`. + +## Catalog index + +The catalog index is a document in a well-known location that has a list of catalog items, ordered cronologically. It +is the entry point of the catalog resource. + +The index is comprised of catalog pages. Each catalog page contains catalog items. Each catalog item represents an +event concerning a single package at a point in time. A catalog item can represent a package that was created, +unlisted, relisted, or deleted from the package source. By processing the catalog items in chronological order, the +client can build an up-to-date view of every package that exists on the V3 package source. + +In short, catalog blobs have the following hierarchical structure: + +- **Index**: the entry point for the catalog. +- **Page**: a grouping of catalog items. +- **Leaf**: a document representing a catalog item, which is a snapshot of a single package's state. + +Each catalog object has a property called the `commitTimeStamp`. This is the time when the item was added to the +catalog. Catalog items are added to a catalog page in batches called commits. All catalog items in the same commit +have the same commit timestamp (`commitTimeStamp`) and commit ID (`commitId`). Catalog items placed in the same commit +represent events that happened around the same point in time on the package source. There is no ordering within a +catalog commit. + +Per package ID and version, there will never be more than one catalog item in a commit. This ensures that catalog items +for a single package can always be unambiguously ordered with respect to commit timestamp. + +There will never be more than one commit to the catalog per `commitTimeStamp`. In other words, the `commitId` is +redundant with the `commitTimeStamp`. + +In contrast to the [package metadata resource](registration-base-url-resource.md) which is indexed by package ID, the +catalog is indexed (i.e. queryable) only by time. + +Catalog items are always added to the catalog in a monotonically increasing, chronological order. This means that if a +catalog commit is added at time X then no catalog commit will ever be added with a time less than or equal to X. + +The following request fetches the catalog index. + +``` +GET {@id} +``` + +The catalog index is a JSON document that contains an object with the following properties: + +Name | Type | Required | Notes +--------------- | ---------------- | -------- | ----- +commitId | string | yes | A unique ID associated with the most recent commit +commitTimeStamp | string | yes | A timestamp of the most recent commit +count | integer | yes | The number of pages in the index +items | array of objects | yes | A array of objects, each object representing a page + +Each element in the `items` array is an object with some minimal details about each page. These page objects do not +contain the catalog leaves (items). The order of the elements in this array is not defined. Pages can be ordered by the +client in memory using their `commitTimeStamp` property. + +As new pages are introduced, the `count` will be incremented and new objects will appear in the `items` array. + +As items are added to the catalog, the index's `commitId` will change and the `commitTimeStamp` will increase. These +two properties are essentially a summary over all page `commitId` and `commitTimeStamp` values in the `items` array. + +### Catalog page object in the index + +The catalog page objects found in the catalog index's `items` property have the following properties: + +Name | Type | Required | Notes +--------------- | ------- | -------- | ----- +@id | string | yes | The URL to fetch catalog page +commitId | string | yes | A unique ID associated with the most recent commit in this page +commitTimeStamp | string | yes | A timestamp of the most recent commit in this page +count | integer | yes | The number of items in the catalog page + +In contrast to the [package metadata resource](registration-base-url-resource.md) which in some cases inlines leaves +into the index, catalog leaves are never inlined into the index and must always be fetched by using the page's `@id` +URL. + +### Sample request + +``` +GET https://api.nuget.org/v3/catalog0/index.json +``` + +### Sample response + +[!code-JSON [catalog-index.json](./_data/catalog-index.json)] + +## Catalog page + +The catalog page is a collection of catalog items. It is a document fetched using one of the `@id` values found in the +catalog index. The URL to a catalog page is not intended to be predictable and should be discovered using only the +catalog index. + +New catalog items will only ever be added to the page in the catalog index with the highest commit timestamp or to a +new page. Once a page with a higher commit timestamp is added to the catalog, older pages will never be added to or +changed. + +The catalog page document is a JSON object with the following properties: + +Name | Type | Required | Notes +--------------- | ---------------- | -------- | ----- +commitId | string | yes | A unique ID associated with the most recent commit in this page +commitTimeStamp | string | yes | A timestamp of the most recent commit in this page +count | integer | yes | The number of items in the page +items | array of objects | yes | The catalog items in this page +parent | string | yes | A URL to the catalog index + +Each element in the `items` array is an object with some minimal details about the catalog item. These item objects do +not contain all of the catalog item's data. The order of the items in the page's `items` array is not defined. Items +can be ordered by the client in memory using their `commitTimeStamp` property. + +The number of catalog items in a page is defined by server implementation. For nuget.org, there will be at most 550 +items in each page, although the actual number may be smaller for some pages dependong on the size of the next commit +batch at the point in time. + +As new items are introduced, the `count` will be incremented and new catalog item objects will appear in the `items` +array. + +As items are added to the page, the `commitId` will change and the `commitTimeStamp` will increase. These two +properties are essentially a summary over all `commitId` and `commitTimeStamp` values in the `items` array. + +### Catalog item object in a page + +The catalog item objects found in the catalog page's `items` property have the following properties: + +Name | Type | Required | Notes +--------------- | ------- | -------- | ----- +@id | string | yes | The URL to fetch the catalog item +@type | string | yes | The type of the catalog item +commitId | string | yes | The commit ID associated with this catalog item +commitTimeStamp | string | yes | The commit timestamp of this catalog item +nuget:id | string | yes | The package ID that this leaf is related to +nuget:version | string | yes | The package version that this leaf is related to + +The `@type` value will be one of the following two values: + +1. `nuget:PackageDetails`: this corresponds to `PackageDetails` type in the catalog leaf document. +1. `nuget:PackageDelete`: this corresponds to the `PackageDelete` type in the catalog leaf document. + +For more details about what each type means, see the [corresponding items type](#item-types) below. + +### Sample request + +``` +GET https://api.nuget.org/v3/catalog0/page2926.json +``` + +### Sample response + +[!code-JSON [catalog-page.json](./_data/catalog-page.json)] + +## Catalog leaf + +The catalog leaf contains metadata about a specific package ID and version at some point in time. It is a document +fetched using the `@id` value found in a catalog page. The URL to a catalog leaf is not intended to be predictedable +and should be discovered using only a catalog page. + +The catalog leaf document is a JSON object with the following properties: + +Name | Type | Required | Notes +----------------------- | -------------------------- | -------- | ----- +@type | string or array of strings | yes | The type(s) of the catalog item +catalog:commitId | string | yes | A commit ID associated with this catalog item +catalog:commitTimeStamp | string | yes | The commit timestamp of this catalog item +id | string | yes | The package ID of the catalog item +published | string | yes | The published date of the package catalog item +version | string | yes | The package version of the catalog item + +### Item types + +The `@type` property is a string or array of strings. For convenience, if the `@type` value is a string, it should be +treated as any array of size one. Not all possible values for `@type` are documented. However, each catalog item will +have exactly one of the two following string type values: + +1. `PackageDetails`: represents a snapshot of package metadata +1. `PackageDelete`: represents a package that was deleted + +### Package details catalog items + +Catalog items with the type `PackageDetails` contain a snapshot of package metadata for a specific package (ID and +version combination). A package details catalog item is produced when a package source encounters any of the +following scenarios: + +1. A package is **pushed**. +1. A package is **listed**. +1. A package is **unlisted**. +1. A package is **reflowed**. + +A package reflow is an administrative gesture that essentially generates a fake push of an existing package with no +changes to the package itself. On nuget.org, a reflow is used after fixing a bug in one of the background jobs +which consume the catalog. + +Clients consuming the catalog items should not attempt to determine which of these scenarios produced the catalog +item. Instead, the client should simply update any maintained view or index with the metadata contained in the +catalog item. Furthermore, duplicate or redundant catalog items should be handled gracefully (idempotently). + +Package details catalog items have the following properties in addition to those +[included on all catalog leaves](#catalog-leaf). + +Name | Type | Required | Notes +----------------------- | -------------------------- | -------- | ----- +authors | string | no | +created | string | yes | A timestamp of when the package was first created +dependencyGroups | array of objects | no | Same format as the [package metadata resource](registration-base-url-resource.md#package-dependency-group) +description | string | no | +iconUrl | string | no | +isPrerelease | boolean | yes | Whether or not the package version is prerelease +language | string | no | +licenseUrl | string | no | +listed | boolean | no | Whether or not the package is listed +minClientVersion | string | no | +packageHash | string | yes | The hash of the package, encoding using [standard base 64](https://tools.ietf.org/html/rfc4648#section-4) +packageHashAlgorithm | string | yes | +packageSize | integer | yes | The size of the package .nupkg in bytes +projectUrl | string | no | +releaseNotes | string | no | +requireLicenseAgreement | boolean | no | +summary | string | no | +tags | array of strings | no | +title | string | no | +verbatimVersion | string | no | The version string as it is originally found in the .nuspec + +The package `version` property is the full, normalized version string. This means that SemVer 2.0.0 build data can +be included here. + +The `created` timestamp is when the package was first received by the package source, which is typically a short +time before the catalog item's commit timestamp. + +The `packageHashAlgorithm` is a string defined by the server implementation represeting the hashing algorithm used to +produce the `packageHash`. nuget.org always used the `packageHashAlgorithm` value of `SHA512`. + +The `published` timestamp is the time when the package was last listed. + +> [!Note] +> On nuget.org, the `published` value is set to year 1900 when the package is unlisted. + +#### Sample request + +``` +GET https://api.nuget.org/v3/catalog0/data/2015.02.01.11.18.40/windowsazure.storage.1.0.0.json +``` + +#### Sample response + +[!code-JSON [catalog-package-details.json](./_data/catalog-package-details.json)] + +### Package delete catalog items + +Catalog items with the type `PackageDelete` contain a minimal set of information indicating to catalog clients that a +package has been deleted from the package source and is no longer available for any package operation (such as +restore). + +> [!Note] +> It is possible for a package to be deleted and later republished using the same package ID and version. On nuget.org, +> this is a very rare case as it breaks the official client's assumption that a package ID and version imply a specific +> package content. For more information about package deletion on nuget.org, see +> [our policy](../policies/deleting-packages.md). + +Package delete catalog items have no additional properties in addition to those +[included on all catalog leaves](#catalog-leaf). + +The `version` property is the original version string found in the package .nuspec. + +The `published` property is the time when package was deleted, which is typically as short time before the catalog +item's commit timestamp. + +#### Sample request + +``` +GET https://api.nuget.org/v3/catalog0/data/2017.11.02.00.40.00/netstandard1.4_lib.1.0.0-test.json +``` + +#### Sample response + +[!code-JSON [catalog-package-delete.json](./_data/catalog-package-delete.json)] + +## Cursor + +### Overview + +This section describes a client concept that, although is not necessarily mandated by the protocol, should be part of +any practical catalog client implementation. + +Since the catalog is an append-only data structure indexed by time, the client should store a **cursor** locally, +representing up to what point in time the client has processed catalog items. Note that this cursor value should never +be generated using the client's machine clock. Instead, the value should come from a catalog object's +`commitTimestamp` value. + +Every time the client wants to process new events on the package source, it need only query the catalog for all +catalog items with a commit timestamp greater than its stored cursor. After the client successfully processes all new +catalog items, it records the latest commit timestamp of catalog items just processed as its new cursor value. + +Using this approach, the client can be sure to never miss any package events that occurred on the package source. +Additionally, the client never has to reprocess old events prior to the cursor's recorded commit timestamp. + +This powerful concept of cursors is used for many of nuget.org background jobs and is used to keep the V3 API itself +up-to-date. + +### Initial value + +When the catalog client is starting for the very first time (and therefore has no cursor value), it should use a default +cursor value of .NET's `System.DateTimeOffset.MinValue` or some such analogous notion of minimum representable +timestamp. + +### Iterating over catalog items + +To query for the next set of catalog items to process, the client should: + +1. Fetch the recorded cursor value from a local store. +1. Download and deserialize the catalog index. +1. Find all catalog pages with a commit timestamp *greater than* the cursor. +1. Declare an empty list of catalog items to process. +1. For each catalog page matched in step 3: + 1. Download and deserialized the catalog page. + 1. Find all catalog items with a commit timestamp *greater than* the cursor. + 1. Add all matching catalog items to the list declared in step 4. +1. Sort the catalog item list by commit timestamp. +1. Process each catalog item in sequence: + 1. Download and deserialize the catalog item. + 1. React appropriately to the catalog item's type. + 1. Process the catalog item document in a client-specific fashion. +1. Record the last catalog item's commit timestamp as the new cursor value. + +With this basic algorithm, the client implementation can build up a complete view of all packages available on the +package source. The client need only execute this algorithm periodically to always be aware of the latest changes +to the package source. + +> [!Note] +> This is the algorithm that nuget.org uses to keep the [Package Metadata](registration-base-url-resource.md), +> [Package Content](package-base-address-resource.md), [Search](search-query-service-resource.md) and +> [Autocomplete](search-autocomplete-service-resource.md) resources up to date. + +### Dependent cursors + +Suppose there are two catalog clients that have an inherant dependency where one client's output depends on another +client's output. + +#### Example + +For example, on nuget.org a newly published package should not appear in the search resource before it appears in the +package metadata resource. This is because the "restore" operation performed by the official NuGet client uses the +package metadata resource. If a customer discovers a package using the search service, they should be able to +successfully restore that package using the package metadata resource. In other words, the search resource depends on +the package metadata resource. Each resource has a catalog client background job updating that resource. Each client +has its own cursor. + +Since both resources are built off of the catalog, the cursor of the catalog client that updates the search resource +*must not go beyond* the cursor of the package metadata catalog client. + +#### Algorithm + +To implement this restriction, simple modify the algorithm above to be: + +1. Fetch the recorded cursor value from a local store. +1. Download and deserialize the catalog index. +1. Find all catalog pages with a commit timestamp *greater than* the cursor **less than or equal to the + dependency's cursor.** +1. Declare an empty list of catalog items to process. +1. For each catalog page matched in step 3: + 1. Download and deserialized the catalog page. + 1. Find all catalog items with a commit timestamp *greater than* the cursor **less than or equal to the + dependency's cursor.** + 1. Add all matching catalog items to the list declared in step 4. +1. Sort the catalog item list by commit timestamp. +1. Process each catalog item in sequence: + 1. Download and deserialize the catalog item. + 1. React appropriately to the catalog item's type. + 1. Process the catalog item document in a client-specific fashion. +1. Record the last catalog item's commit timestamp as the new cursor value. + +Using this modified algorithm, you can build a system of dependent catalog clients all producing their own specific +indexes, artifacts, etc. diff --git a/docs/API/overview.md b/docs/API/overview.md index 0f4776be8..97285fc06 100644 --- a/docs/API/overview.md +++ b/docs/API/overview.md @@ -80,6 +80,7 @@ Resource name | Require [`PackageBaseAddress`](package-base-address-resource.md) | yes | Get package content (.nupkg). [`SearchAutocompleteService`](search-autocomplete-service-resource.md) | no | Discover package IDs and versions by substring. [`ReportAbuseUriTemplate`](report-abuse-resource.md) | no | Construct a URL to access a "report abuse" web page. +[`Catalog`](catalog-resource.md) | no | Full record of all package events. In general, all non-binary data returned by a API resource are serialized using JSON. The response schema returned by each resource in the service index is defined individually for that resource. For more information about diff --git a/docs/TOC.md b/docs/TOC.md index 10816e839..6bbad0304 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -92,6 +92,7 @@ ## [Package Metadata](API/registration-base-url-resource.md) ## [Package Content](API/package-base-address-resource.md) ## [Report Abuse URL](API/report-abuse-resource.md) +## [Catalog](API/catalog-resource.md) ## [nuget.org Protocols](API/nuget-protocols.md) # Visual Studio Extensibility ## [NuGet API in Visual Studio](Visual-Studio-Extensibility/NuGet-API-in-Visual-Studio.md) From eeeb645c26d8e1d416e8c954710f65ab3b118c4d Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 2 Nov 2017 15:56:10 -0700 Subject: [PATCH 0357/2943] Small stylistic edits --- docs/API/catalog-resource.md | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/docs/API/catalog-resource.md b/docs/API/catalog-resource.md index c91f963d5..f8756f9cf 100644 --- a/docs/API/catalog-resource.md +++ b/docs/API/catalog-resource.md @@ -27,11 +27,10 @@ ms.reviewer: # Catalog -It is possible to enumerate all package creates and deletes on a package source by inspecting a resource -called the **catalog**. The catalog resource has the `Catalog` type in the [service index](service-index.md). +The **catalog** is a resource that records all package operations on a package source, such as creations and deletions. The catalog resource has the `Catalog` type in the [service index](service-index.md). > [!Note] -> Since the catalog is not used by the official NuGet client, not all package sources implement the catalog. +> Because the catalog is not used by the official NuGet client, not all package sources implement the catalog. ## Versioning @@ -44,11 +43,11 @@ Catalog/3.0.0 | The initial release ## Base URL The entry point URL for the following APIs is the value of the `@id` property associated with the aforementioned -resource `@type` values. In the following document, the placeholder URL `{@id}` will be used. +resource `@type` values. This topic uses the placeholder URL `{@id}`. ## HTTP methods -All URLs found in the catalog resource only support the HTTP methods `GET` and `HEAD`. +All URLs found in the catalog resource support only the HTTP methods `GET` and `HEAD`. ## Catalog index @@ -66,20 +65,19 @@ In short, catalog blobs have the following hierarchical structure: - **Page**: a grouping of catalog items. - **Leaf**: a document representing a catalog item, which is a snapshot of a single package's state. -Each catalog object has a property called the `commitTimeStamp`. This is the time when the item was added to the +Each catalog object has a property called the `commitTimeStamp` representing when the item was added to the catalog. Catalog items are added to a catalog page in batches called commits. All catalog items in the same commit have the same commit timestamp (`commitTimeStamp`) and commit ID (`commitId`). Catalog items placed in the same commit represent events that happened around the same point in time on the package source. There is no ordering within a catalog commit. -Per package ID and version, there will never be more than one catalog item in a commit. This ensures that catalog items -for a single package can always be unambiguously ordered with respect to commit timestamp. +Because each package ID and version is unique, there will never be more than one catalog item in a commit. This ensures that catalog items for a single package can always be unambiguously ordered with respect to commit timestamp. -There will never be more than one commit to the catalog per `commitTimeStamp`. In other words, the `commitId` is +There is never be more than one commit to the catalog per `commitTimeStamp`. In other words, the `commitId` is redundant with the `commitTimeStamp`. -In contrast to the [package metadata resource](registration-base-url-resource.md) which is indexed by package ID, the -catalog is indexed (i.e. queryable) only by time. +In contrast to the [package metadata resource](registration-base-url-resource.md), which is indexed by package ID, the +catalog is indexed (and queryable) only by time. Catalog items are always added to the catalog in a monotonically increasing, chronological order. This means that if a catalog commit is added at time X then no catalog commit will ever be added with a time less than or equal to X. @@ -139,8 +137,8 @@ The catalog page is a collection of catalog items. It is a document fetched usin catalog index. The URL to a catalog page is not intended to be predictable and should be discovered using only the catalog index. -New catalog items will only ever be added to the page in the catalog index with the highest commit timestamp or to a -new page. Once a page with a higher commit timestamp is added to the catalog, older pages will never be added to or +New catalog items are added to the page in the catalog index only with the highest commit timestamp or to a +new page. Once a page with a higher commit timestamp is added to the catalog, older pages are never added to or changed. The catalog page document is a JSON object with the following properties: @@ -157,14 +155,14 @@ Each element in the `items` array is an object with some minimal details about t not contain all of the catalog item's data. The order of the items in the page's `items` array is not defined. Items can be ordered by the client in memory using their `commitTimeStamp` property. -The number of catalog items in a page is defined by server implementation. For nuget.org, there will be at most 550 +The number of catalog items in a page is defined by server implementation. For nuget.org, there are at most 550 items in each page, although the actual number may be smaller for some pages dependong on the size of the next commit batch at the point in time. -As new items are introduced, the `count` will be incremented and new catalog item objects will appear in the `items` +As new items are introduced, the `count` is incremented and new catalog item objects appear in the `items` array. -As items are added to the page, the `commitId` will change and the `commitTimeStamp` will increase. These two +As items are added to the page, the `commitId` changes and the `commitTimeStamp` increases. These two properties are essentially a summary over all `commitId` and `commitTimeStamp` values in the `items` array. ### Catalog item object in a page @@ -217,8 +215,7 @@ version | string | yes | The package ve ### Item types The `@type` property is a string or array of strings. For convenience, if the `@type` value is a string, it should be -treated as any array of size one. Not all possible values for `@type` are documented. However, each catalog item will -have exactly one of the two following string type values: +treated as any array of size one. Not all possible values for `@type` are documented. However, each catalog item has exactly one of the two following string type values: 1. `PackageDetails`: represents a snapshot of package metadata 1. `PackageDelete`: represents a package that was deleted @@ -329,7 +326,7 @@ GET https://api.nuget.org/v3/catalog0/data/2017.11.02.00.40.00/netstandard1.4_li This section describes a client concept that, although is not necessarily mandated by the protocol, should be part of any practical catalog client implementation. -Since the catalog is an append-only data structure indexed by time, the client should store a **cursor** locally, +Because the catalog is an append-only data structure indexed by time, the client should store a **cursor** locally, representing up to what point in time the client has processed catalog items. Note that this cursor value should never be generated using the client's machine clock. Instead, the value should come from a catalog object's `commitTimestamp` value. From eff0d37376cfedbc45ae563f79d918ee1870d0d4 Mon Sep 17 00:00:00 2001 From: M Hickford Date: Fri, 3 Nov 2017 15:00:18 +0000 Subject: [PATCH 0358/2943] Document Framework option for install command https://github.com/NuGet/NuGet.Client/pull/1634 introduced a Framework option for the install command. --- docs/Tools/cli-ref-install.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Tools/cli-ref-install.md b/docs/Tools/cli-ref-install.md index d4c2ad5c9..cad5a1c62 100644 --- a/docs/Tools/cli-ref-install.md +++ b/docs/Tools/cli-ref-install.md @@ -57,6 +57,7 @@ where `` names the package to install (using the latest version), or | FallbackSource | *(3.2+)* A list of package sources to use as fallbacks in case the package isn't found in the primary or default source. | | FileConflictAction | *(2.5+)* Specifies the action to take when asked to overwrite or ignore existing files referenced by the project. Values are *overwrite, ignore, none*. | | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| Framework | *(4.4+)* Target framework used for selecting dependencies. Defaults to 'Any' if not specified. | | Help | Displays help information for the command. | | NoCache | Prevents NuGet from using packages from local machine caches. | | NonInteractive | Suppresses prompts for user input or confirmations. | From 79c2336c11e04ff1365da01d6fefedaf3a4f2f78 Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Thu, 2 Nov 2017 13:16:17 -0700 Subject: [PATCH 0359/2943] Write guide about how to use the catalog to query for all packages Address https://github.com/NuGet/NuGetGallery/issues/4914 --- docs/API/catalog-resource.md | 3 + .../api/query-for-all-published-packages.md | 207 ++++++++++++++++++ docs/TOC.md | 2 + 3 files changed, 212 insertions(+) create mode 100644 docs/Guides/api/query-for-all-published-packages.md diff --git a/docs/API/catalog-resource.md b/docs/API/catalog-resource.md index f8756f9cf..4724ee62d 100644 --- a/docs/API/catalog-resource.md +++ b/docs/API/catalog-resource.md @@ -32,6 +32,9 @@ The **catalog** is a resource that records all package operations on a package s > [!Note] > Because the catalog is not used by the official NuGet client, not all package sources implement the catalog. +> [!Note] +> Currently, the nuget.org catalog is not available in China. For more details, see [NuGet/NuGetGallery#4949](https://github.com/NuGet/NuGetGallery/issues/4949). + ## Versioning The following `@type` value is used: diff --git a/docs/Guides/api/query-for-all-published-packages.md b/docs/Guides/api/query-for-all-published-packages.md new file mode 100644 index 000000000..41fa8f2eb --- /dev/null +++ b/docs/Guides/api/query-for-all-published-packages.md @@ -0,0 +1,207 @@ +--- +# required metadata  + +title: Query for all packages published to nuget.org | Microsoft Docs +author: +- joelverhagen +- kraigb +ms.author: +- joelverhagen +- kraigb +manager: skofman +ms.date: 11/2/2017 +ms.topic: get-started-article +ms.prod: nuget +ms.technology: null +ms.assetid: 5d017cd4-3d75-4341-ba90-3c57be093b7d + +# optional metadata + +description: Using the NuGet API, you can query for all packages published to nuget.org and stay up-to-date over time. +keywords: NuGet API enumerate all packages, NuGet API replicate packages, latest packages published to nuget.org +ms.reviewer: +- karann +- unniravindranathan + +--- + +# Query for all packages published to nuget.org + +One common query pattern on the legacy OData V2 API was enumerating all packages published to nuget.org, ordered by when +the package was published. Scenarios requiring this kind of query against nuget.org vary widely: + +- Replicating nuget.org entirely +- Detecting when packages have new versions released +- Finding packages that depend on your package + +The legacy way of doing this typically depended on sorting the OData package entity by a timestamp and paging across +the massive result set using `skip` and `top` (page size) parameters. Unfortunately, this approach has some drawbacks: + +- Possibility of missing packages, since the queries are being made on data that is often changing order +- Slow query response time, since the queries are not optimized (the most optimized queries are ones that support a + mainline scenario for the official NuGet client) +- Use of deprecated and undocumented API, meaning the support of such queries in the future is not guaranteed +- Inability to replay history in the exact order that it transpired + +For this reason, the following guide can be followed to address the aforementioned scenarios in a more reliable and +future-proof way. + +## Overview + +At the center of this guide is resource in the [NuGet API](../../api/overview.md) called the **catalog**. The catalog +is an append-only API that allows the caller to see a full history of packages added to, modified, and deleted from +nuget.org. If you are interested in all or even a subset of packages published to nuget.org, the catalog is a great way +to stay up-to-date with the set of currently available packages as time goes on. + +This guide is intended to be a high-level walk-through but if you are interested in the fine-grain details of the +catalog, see its [API reference document](../../api/catalog-resource.md). + +The following steps can be implemented in any programming language of your choice. If you want a full running sample, +take a look at the [C# sample](#c-sample-code) mentioned below. + +Otherwise, follow the guide below to build a reliable catalog reader. + +## Initialize a cursor + +The first piece of a reliable catalog reader is implementing a cursor. For full details about the design of a catalog +cursor, see the [catalog reference document](../../api/catalog-resource.md#cursor). In short, cursor is just a point +in time up to which you have processed events in the catalog. Events in the catalog represent package publishes and +other package changes. If you care about all packages ever published to NuGet (since the beginning of time), you would +initialize your cursor to a "minimum value" timestamp (e.g. `DateTime.MinValue` in .NET). If you care only about +packages published starting now, you would use the current timestamp as your initial cursor value. + +For this guide, we'll initialize our cursor to a timestamp one hour ago. For now, just save that timestamp in memory. + +```cs +DateTime cursor = DateTime.UtcNow.AddHours(-1); +``` + +## Determine catalog index URL + +The location of every resource (endpoint) in the NuGet API should be should be discovered using the +[service index](../../api/service-index.md). Since this guide focuses on nuget.org, we'll be using nuget.org's service +index. + +``` +GET https://api.nuget.org/v3/index.json +``` + +The service document is JSON document containing all of the resources on nuget.org. Look for the resource having the +`@type` property value of `Catalog/3.0.0`. The associated `@id` property value is the URL to the catalog index itself. + +## Find new catalog leaves + +Using the `@id` property value found in the previous step, download the catalog index: + +``` +GET https://api.nuget.org/v3/catalog0/index.json +``` + +Deserialize the [catalog index](../../api/catalog-resource.md#catalog-index). Filter out all +[catalog page objects](../../api/catalog-resource.md#catalog-page-object-in-the-index) with `commitTimeStamp` less than +or equal to your current cursor value. + +For each remaining catalog page, download the full document using the `@id` property. + +``` +GET https://api.nuget.org/v3/catalog0/page2926.json +``` + +Deserialize the [catalog page](../../api/catalog-resource.md#catalog-page). Filter out all +[catalog leaf objects](../../api/catalog-resource.md#catalog-item-object-in-a-page) with `commitTimeStamp` less than +or equal to your current cursor value. + +After you have downloaded all of the catalog pages not filtered out, you will have a set of catalog leaf objects +representing packages that have been published, unlisted, listed, or deleted in the time between your cursor timestamp +and now. + +## Process catalog leaves + +At this point, you can perform any custom processing you'd like on the catalog items. If all you need is the ID and +version of the package, you can inspect the `nuget:id` and `nuget:version` properties on the catalog item objects found +in the pages. Make sure to look at the `@type` property to know if the catalog item concerns an existing package or a +deleted package. + +If you are interested in the metadata about the package (such at the description, dependencies, .nupkg size, etc), you +can fetch the [catalog leaf document](../../api/catalog-resource.md#catalog-leaf) using the `@id` property. + +``` +GET https://api.nuget.org/v3/catalog0/data/2015.02.01.11.18.40/windowsazure.storage.1.0.0.json +``` + +This document has all of the metadata included in the +[package metadata resource](../../api/registration-base-url-resource.md), and more! + +This step is where you implement your custom logic. The other steps in this guide are implemented in pretty much the +same way not matter what you are doing with the catalog leaves. + +### Downloading the .nupkg + +If you are interested in downloading the .nupkg's for packages found in the catalog, you can use the +[package content resource](../../api/package-base-address-resource.md). However, note that there is a short delay +between when a package is found in catalog and when it is available in the package content resource. Therefore, if +you encounter `404 Not Found` when attempting to download a .nupkg for a package that you found in the catalog, simply +retry a short time later. Fixing this delay is tracked by GitHub issue +[NuGet/NuGetGallery#3455](https://github.com/NuGet/NuGetGallery/issues/3455). + +## Move the cursor forward + +Once you have successfully processed the catalog items, you need to determine the new cursor value to save. To do this, +find the maximum (latest chronologically) `commitTimeStamp` of all catalog items that you processed. This is your new +cursor value. Save it to some persistent store, like a database, file system, or blob storage. When you want to get more +catalog items, simply start from the [first step](#initialize-a-cursor) by initializing your cursor value from this +persistent store. + +If your application throws an exception or faults, don't move the cursor forward. Moving the cursor forward has the +meaning that you never again need to process catalog items before your cursor. + +If, for some reason, you have a bug in how you process catalog leaves, you can simply move your cursor backward in time +and allow your code to reprocess the old catalog items. + +## C# sample code + +Since the catalog is a set of JSON documents, it can be interacted with using any programming language that has +an HTTP client and JSON deserializer. + +For improved understanding and convenience, we have made a small sample available written in C# to demonstrate how to +read from the catalog. The solution file requires Visual Studio 2017. The project is `netcoreapp2.0` depends on the +[NuGet.Protocol 4.4.0](https://www.nuget.org/packages/NuGet.Protocol/4.4.0) (for resolving the service index) and +[Newtonsoft.Json 9.0.1](https://www.nuget.org/packages/Newtonsoft.Json/9.0.1) (for JSON deserialization). + +Simply clone the [NuGet/Samples](https://github.com/NuGet/Samples) repository on GitHub, restore, build, and run the +project file under the `CatalogReaderExample` directory. + +``` +git clone https://github.com/NuGet/Samples.git +``` + +The main logic of the code is visible in the +[`Program.cs`](https://github.com/NuGet/Samples/blob/master/CatalogReaderExample/CatalogReaderExample/Program.cs) +file. + +### Sample output + +``` +No cursor found. Defaulting to 11/2/2017 9:41:28 PM. +Fetched catalog index https://api.nuget.org/v3/catalog0/index.json. +Fetched catalog page https://api.nuget.org/v3/catalog0/page2935.json. +Processing 69 catalog leaves. +11/2/2017 9:32:35 PM: DotVVM.Compiler.Light 1.1.7 (type is nuget:PackageDetails) +11/2/2017 9:32:35 PM: Momentum.Pm.Api 5.12.181-beta (type is nuget:PackageDetails) +11/2/2017 9:32:44 PM: Momentum.Pm.PortalApi 5.12.181-beta (type is nuget:PackageDetails) +11/2/2017 9:35:14 PM: Genesys.Extensions.Standard 3.17.11.40 (type is nuget:PackageDetails) +11/2/2017 9:35:14 PM: Genesys.Extensions.Core 3.17.11.40 (type is nuget:PackageDetails) +11/2/2017 9:35:14 PM: Halforbit.DataStores.FileStores.Serialization.Bond 1.0.4 (type is nuget:PackageDetails) +11/2/2017 9:35:14 PM: Halforbit.DataStores.FileStores.AmazonS3 1.0.4 (type is nuget:PackageDetails) +11/2/2017 9:35:14 PM: Halforbit.DataStores.DocumentStores.DocumentDb 1.0.6 (type is nuget:PackageDetails) +11/2/2017 9:35:14 PM: Halforbit.DataStores.FileStores.BlobStorage 1.0.5 (type is nuget:PackageDetails) +... +11/2/2017 10:23:54 PM: Cake.GitPackager 0.1.2 (type is nuget:PackageDetails) +11/2/2017 10:23:54 PM: UtilPack.NuGet 2.0.0 (type is nuget:PackageDetails) +11/2/2017 10:23:54 PM: UtilPack.NuGet.AssemblyLoading 2.0.0 (type is nuget:PackageDetails) +11/2/2017 10:26:26 PM: UtilPack.NuGet.Deployment 2.0.0 (type is nuget:PackageDetails) +11/2/2017 10:26:26 PM: UtilPack.NuGet.Common.MSBuild 2.0.0 (type is nuget:PackageDetails) +11/2/2017 10:26:36 PM: InstaClient 1.0.2 (type is nuget:PackageDetails) +11/2/2017 10:26:36 PM: SecureStrConvertor.VARUN_RUSIYA 1.0.0.5 (type is nuget:PackageDetails) +Writing cursor value: 11/2/2017 10:26:36 PM. +``` diff --git a/docs/TOC.md b/docs/TOC.md index 6bbad0304..3addb39b7 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -9,6 +9,8 @@ ## [Create Cross-Platform Packages](Guides/Create-Cross-Platform-Packages.md) ## [Create NET Standard Packages (Visual Studio 2017)](Guides/Create-NET-Standard-Packages-VS2017.md) ## [Create NET Standard Packages (Visual Studio 2015)](Guides/Create-NET-Standard-Packages-VS2015.md) +## API +### [Query for all packages](Guides/api/query-for-all-published-packages.md) # Create Packages ## [Overview and Workflow](Create-Packages/Overview-and-Workflow.md) ## [Creating a Package](Create-Packages/Creating-a-Package.md) From b79eefdbf5c362d187a24402d865e62639a55fb5 Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Fri, 3 Nov 2017 14:28:59 -0700 Subject: [PATCH 0360/2943] Address comments --- docs/Guides/api/query-for-all-published-packages.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/Guides/api/query-for-all-published-packages.md b/docs/Guides/api/query-for-all-published-packages.md index 41fa8f2eb..dd1e52eb0 100644 --- a/docs/Guides/api/query-for-all-published-packages.md +++ b/docs/Guides/api/query-for-all-published-packages.md @@ -63,11 +63,11 @@ Otherwise, follow the guide below to build a reliable catalog reader. ## Initialize a cursor -The first piece of a reliable catalog reader is implementing a cursor. For full details about the design of a catalog -cursor, see the [catalog reference document](../../api/catalog-resource.md#cursor). In short, cursor is just a point -in time up to which you have processed events in the catalog. Events in the catalog represent package publishes and -other package changes. If you care about all packages ever published to NuGet (since the beginning of time), you would -initialize your cursor to a "minimum value" timestamp (e.g. `DateTime.MinValue` in .NET). If you care only about +The first step in building a reliable catalog reader is implementing a cursor. For full details about the design of a +catalog cursor, see the [catalog reference document](../../api/catalog-resource.md#cursor). In short, cursor is a +point in time up to which you have processed events in the catalog. Events in the catalog represent package publishes +and other package changes. If you care about all packages ever published to NuGet (since the beginning of time), you +would initialize your cursor to a "minimum value" timestamp (e.g. `DateTime.MinValue` in .NET). If you care only about packages published starting now, you would use the current timestamp as your initial cursor value. For this guide, we'll initialize our cursor to a timestamp one hour ago. For now, just save that timestamp in memory. @@ -78,7 +78,7 @@ DateTime cursor = DateTime.UtcNow.AddHours(-1); ## Determine catalog index URL -The location of every resource (endpoint) in the NuGet API should be should be discovered using the +The location of every resource (endpoint) in the NuGet API should be discovered using the [service index](../../api/service-index.md). Since this guide focuses on nuget.org, we'll be using nuget.org's service index. From 4525563c6e4d284b08c82d825262d52cf6afeac9 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 7 Nov 2017 09:50:42 -0800 Subject: [PATCH 0361/2943] Small edits to TOC --- docs/TOC.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index 3addb39b7..68ebbcd4d 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -4,13 +4,12 @@ ## [Use a Package](Quickstart/Use-a-Package.md) # Guides ## [Install NuGet client tools](Guides/Install-NuGet.md) +## [Create NET Standard Packages (Visual Studio 2017)](Guides/Create-NET-Standard-Packages-VS2017.md) +## [Create NET Standard Packages (Visual Studio 2015)](Guides/Create-NET-Standard-Packages-VS2015.md) ## [Create UWP Packages](Guides/Create-UWP-Packages.md) ## [Creating UWP Controls as NuGet Packages](Guides/Create-UWP-Controls.md) ## [Create Cross-Platform Packages](Guides/Create-Cross-Platform-Packages.md) -## [Create NET Standard Packages (Visual Studio 2017)](Guides/Create-NET-Standard-Packages-VS2017.md) -## [Create NET Standard Packages (Visual Studio 2015)](Guides/Create-NET-Standard-Packages-VS2015.md) -## API -### [Query for all packages](Guides/api/query-for-all-published-packages.md) +## [Query for all packages using the API](Guides/api/query-for-all-published-packages.md) # Create Packages ## [Overview and Workflow](Create-Packages/Overview-and-Workflow.md) ## [Creating a Package](Create-Packages/Creating-a-Package.md) From 58ebe805ea02cba44739935c3fbf0415ba70e344 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 8 Nov 2017 15:46:22 -0800 Subject: [PATCH 0362/2943] Tweaks from Q&A scan --- .../Configuring-NuGet-Behavior.md | 4 +-- .../Consume-Packages/Overview-and-Workflow.md | 2 +- docs/Create-Packages/Overview-and-Workflow.md | 2 +- docs/Create-Packages/Publish-a-package.md | 2 +- docs/Guides/Install-NuGet.md | 28 +++++++++---------- docs/Hosting-Packages/Overview.md | 2 +- docs/Policies/NuGet-FAQ.md | 9 ++++-- .../Create-and-Publish-a-Package.md | 2 +- docs/Quickstart/Use-a-Package.md | 2 +- docs/Schema/nuget-config-file.md | 4 +-- docs/Schema/nuspec.md | 8 +++--- docs/Tools/cli-ref-delete.md | 2 +- docs/Tools/cli-ref-push.md | 2 +- docs/Tools/cli-ref-restore.md | 3 +- docs/Tools/cli-ref-update.md | 4 +-- .../NuGet-API-in-Visual-Studio.md | 2 +- docs/index.md | 2 +- 17 files changed, 42 insertions(+), 38 deletions(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index bb179c126..5bbafc11a 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -158,7 +158,7 @@ File A. User-level file, (%APPDATA%\NuGet\NuGet.Config on Windows, ~/.nuget/NuGe - + ``` @@ -252,7 +252,7 @@ Mac/Linux: $XDG_DATA_HOME (typically ~/.local/share) - + diff --git a/docs/Consume-Packages/Overview-and-Workflow.md b/docs/Consume-Packages/Overview-and-Workflow.md index e0026dbc4..a8d64c9b5 100644 --- a/docs/Consume-Packages/Overview-and-Workflow.md +++ b/docs/Consume-Packages/Overview-and-Workflow.md @@ -5,7 +5,7 @@ title: Overview and workflow of using NuGet packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 6/6/2017 +ms.date: 06/06/2017 ms.topic: article ms.prod: nuget #ms.service: diff --git a/docs/Create-Packages/Overview-and-Workflow.md b/docs/Create-Packages/Overview-and-Workflow.md index 65ae0d3ec..ee08128b6 100644 --- a/docs/Create-Packages/Overview-and-Workflow.md +++ b/docs/Create-Packages/Overview-and-Workflow.md @@ -5,7 +5,7 @@ title: Overview and workflow of creating NuGet packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/26/2017 +ms.date: 07/26/2017 ms.topic: article ms.prod: nuget #ms.service: diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index c9c589d1a..b12f8d248 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -68,7 +68,7 @@ Next, you can either upload the package through the nuget.org web portal, push t 4. Push your package to NuGet Gallery using the command: ``` - nuget push YourPackage.nupkg -Source https://www.nuget.org/api/v2/package + nuget push YourPackage.nupkg -Source https://api.nuget.org/v3/index.json ``` 5. Before being made public, all packages uploaded to nuget.org are scanned for viruses and rejected if any viruses are found. All packages listed on nuget.org are also scanned periodically. diff --git a/docs/Guides/Install-NuGet.md b/docs/Guides/Install-NuGet.md index 0800b5096..7914cce73 100644 --- a/docs/Guides/Install-NuGet.md +++ b/docs/Guides/Install-NuGet.md @@ -2,28 +2,28 @@ # required metadata title: Installing NuGet client tools | Microsoft Docs -author: kraigb -ms.author: kraigb -manager: ghogen -ms.date: 10/2/2017 +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 10/02/2017 ms.topic: get-started-article -ms.prod: nuget -ms.technology: null -ms.assetid: 683b8b34-a6f4-4d56-b9cd-2483bfbad1ad - +ms.prod: nuget +ms.technology: null +ms.assetid: 683b8b34-a6f4-4d56-b9cd-2483bfbad1ad + # optional metadata description: Guidance on installing client tools, the command-line interface (CLI), and the Package Manager for Visual Studio. keywords: nuget.exe CLI, NuGet client tools, NuGet package manager, NuGet package manager console, NuGet for Visual Studio, NuGet beta channel -ms.reviewer: -- karann-msft -- unniravindranathan - +ms.reviewer: +- karann-msft +- unniravindranathan + --- # Installing NuGet client tools -> [!Tip] +> [!Tip] > **Looking to install a package? See [Quickstart - Use a package](../Quickstart/Use-a-Package.md).** There are two primary tools available to help you build, publish and consume NuGet packages: @@ -73,7 +73,7 @@ The NuGet command-line interface provides access to all NuGet capabilities, and - **Chocolatey**: Install the [NuGet.CommandLine](http://chocolatey.org/packages/NuGet.CommandLine) Chocolatey package using the [Chocolatey](http://chocolatey.org) client. - ``` + ```ps choco install nuget.commandline ``` diff --git a/docs/Hosting-Packages/Overview.md b/docs/Hosting-Packages/Overview.md index 5f9087406..da6854f07 100644 --- a/docs/Hosting-Packages/Overview.md +++ b/docs/Hosting-Packages/Overview.md @@ -5,7 +5,7 @@ title: Overview of Hosting Your Own NuGet Feeds | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 8/25/2017 +ms.date: 08/25/2017 ms.topic: article ms.prod: nuget #ms.service: diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index 634cd47a1..8e94c8dfc 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -154,8 +154,8 @@ You need to select the **All** source when installing a local package into the p In most projects where separate projects live in separate folders, this is not a problem as NuGet identifies the `packages.config` and `project.json` files in each project. With NuGet 3.3+ and multiple projects in the same folder, you can insert the name of the project into the `packages.config` or `project.json` filenames as below and NuGet uses that file: - `packages.config`: use the pattern `packages.{project-name}.config` - `project.json`: use the pattern `{project-name}.project.json` +- `packages.config`: use the pattern `packages.{project-name}.config` +- `project.json`: use the pattern `{project-name}.project.json` This is not an issue when using PackageReference, as each project file contains its own list of dependencies. @@ -243,3 +243,8 @@ First make sure you're using the latest versions of NuGet. If that continues to Note: it may be required to set the `HTTP_PROXY` environment variable to `http://127.0.0.1:8888` for routing NuGet traffic through Fiddler. If that fails, try the [tips mentioned in this StackOverflow post](http://stackoverflow.com/questions/21049908/using-fiddler-to-sniff-visual-studio-2013-requests-proxy-firewall). + +**What are the API endpoints for nuget.org?** + +V3: `https://api.nuget.org/v3/index.json` +V2: `https://www.nuget.org/api/v2/` (Note that the V2 API is deprecated and does not work with NuGet 4+.) diff --git a/docs/Quickstart/Create-and-Publish-a-Package.md b/docs/Quickstart/Create-and-Publish-a-Package.md index b0e1df9a1..8a99e4cfa 100644 --- a/docs/Quickstart/Create-and-Publish-a-Package.md +++ b/docs/Quickstart/Create-and-Publish-a-Package.md @@ -134,7 +134,7 @@ Once you have a `.nupkg` file, you publish it to nuget.org using the `push` comm 1. At a command prompt, run the following command, specifying your package name and replacing the key with the value copied in step 4: ``` - nuget push AppLogger.1.0.0.0.nupkg 47be3377-c434-4c29-8576-af7f6993a54b -Source https://www.nuget.org/api/v2/package + nuget push AppLogger.1.0.0.0.nupkg 47be3377-c434-4c29-8576-af7f6993a54b -Source https://api.nuget.org/v3/index.json ``` 1. nuget.exe displays the results of the publishing process: diff --git a/docs/Quickstart/Use-a-Package.md b/docs/Quickstart/Use-a-Package.md index 3e52fba35..58420c22b 100644 --- a/docs/Quickstart/Use-a-Package.md +++ b/docs/Quickstart/Use-a-Package.md @@ -5,7 +5,7 @@ title: Introductory Guide to Using NuGet Packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/4/2017 +ms.date: 10/04/2017 ms.topic: get-started-article ms.prod: nuget ms.technology: null diff --git a/docs/Schema/nuget-config-file.md b/docs/Schema/nuget-config-file.md index 045d58220..ce6fc00bd 100644 --- a/docs/Schema/nuget-config-file.md +++ b/docs/Schema/nuget-config-file.md @@ -250,7 +250,7 @@ Identifies to the currently active source or indicates the aggregate of all sour ```xml - + @@ -314,7 +314,7 @@ Below is an example `NuGet.Config` file that illustrates a number of settings: See: nuget.exe help update --> - + diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index 650f75c43..dea042a49 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -5,7 +5,7 @@ title: .nuspec File Reference for NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/25/2017 +ms.date: 07/25/2017 ms.topic: reference ms.prod: nuget #ms.service: @@ -95,7 +95,7 @@ These elements must appear within a `` element. | **owners** | A comma-separated list of the package creators using profile names on nuget.org. This is often the same list as in *authors*, and is ignored when uploading the package to nuget.org. See [Managing package owners on nuget.org](../create-packages/publish-a-package.md#managing-package-owners-on-nugetorg). | | **projectUrl** | A URL for the package's home page, often shown in UI displays as well as nuget.org. | | **licenseUrl** | A URL for the package's license, often shown in UI displays as well as nuget.org. | -| **iconUrl** | A URL for a 64x64 image with transparency background to use as the icon for the package in UI display. Be sure this element contains the *direct image URL* and not the URL of a web page containing the image. For example, to use an image from GitHub, use the raw file URL like `https://github.com///raw//`. | +| **iconUrl** | A URL for a 64x64 image with transparency background to use as the icon for the package in UI display. Be sure this element contains the *direct image URL* and not the URL of a web page containing the image. For example, to use an image from GitHub, use the raw file URL like https://github.com/username/repository-/raw/branch/logo.png. | | **requireLicenseAcceptance** | A Boolean value specifying whether the client must prompt the consumer to accept the package license before installing the package. | | **developmentDependency** | *(2.8+)* A Boolean value specifying whether the package is be marked as a development-only-dependency, which prevents the package from being included as a dependency in other packages. | | **summary** | A short description of the package for UI display. If omitted, a truncated version of **description** is used. | @@ -126,7 +126,7 @@ When creating a package, the [`nuget pack` command](../tools/cli-ref-pack.md) re On the command line, you specify token values with `nuget pack -properties =;=`. For example, you can use a token such as `$owners$` and `$desc$` in the `.nuspec` and provide the values at packing time as follows: -``` +```ps nuget pack MyProject.csproj -properties owners=janedoe,harikm,kimo,xiaop;desc="Awesome app logger utility" ``` @@ -135,7 +135,7 @@ To use values from a project, specify the tokens described in the table below (A To use these tokens, run `nuget pack` with the project file rather than just the `.nuspec`. For example, when using the following command, the `$id$` and `$version$` tokens in a `.nuspec` file are replaced with the project's `AssemblyName` and `AssemblyVersion` values: -``` +```ps nuget pack MyProject.csproj ``` diff --git a/docs/Tools/cli-ref-delete.md b/docs/Tools/cli-ref-delete.md index 5d3868e8a..58324bd45 100644 --- a/docs/Tools/cli-ref-delete.md +++ b/docs/Tools/cli-ref-delete.md @@ -44,7 +44,7 @@ where `` and `` identify the exact package to delete | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | | NonInteractive | Suppresses prompts for user input or confirmations. | -| Source | Specifies the server URL. Supported URLs for nuget.org include `https://www.nuget.org`, `https://www.nuget.org/api/v3`, `https://www.nuget.org/api/v2/package`. For private feeds, substitute the host name, for example, *%hostname%/api/v3*. | +| Source | Specifies the server URL. The URL for nuget.org is `https://api.nuget.org/v3/index.json`. For private feeds, substitute the host name, for example, *%hostname%/api/v3*. | | Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | Also see [Environment variables](cli-ref-environment-variables.md) diff --git a/docs/Tools/cli-ref-push.md b/docs/Tools/cli-ref-push.md index 7f50cdcb4..954ca37c2 100644 --- a/docs/Tools/cli-ref-push.md +++ b/docs/Tools/cli-ref-push.md @@ -72,7 +72,7 @@ nuget push *.nupkg nuget.exe push -source \\mycompany\repo\ mypackage.1.0.0.nupkg -nuget push foo.nupkg 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -Source https://www.nuget.org/api/v2/package +nuget push foo.nupkg 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -Source https://api.nuget.org/v3/index.json nuget push foo.nupkg 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a diff --git a/docs/Tools/cli-ref-restore.md b/docs/Tools/cli-ref-restore.md index aa832fcc2..1c2d557c3 100644 --- a/docs/Tools/cli-ref-restore.md +++ b/docs/Tools/cli-ref-restore.md @@ -108,6 +108,5 @@ nuget restore a.sln -MSBuildVersion 14 nuget restore proj1\packages.config -PackagesDirectory ..\packages # Restore packages for the solution in the current folder, specifying package sources -nuget restore -source "https://www.nuget.org/api/v2;https://www.myget.org/F/nuget" +nuget restore -source "https://api.nuget.org/v3/index.json;https://www.myget.org/F/nuget" ``` -\ \ No newline at end of file diff --git a/docs/Tools/cli-ref-update.md b/docs/Tools/cli-ref-update.md index 89ca1c876..f1ac420cf 100644 --- a/docs/Tools/cli-ref-update.md +++ b/docs/Tools/cli-ref-update.md @@ -25,9 +25,9 @@ ms.reviewer: **Applies to:** package consumption • **Supported versions:** all -Updates all packages in a project the latest available versions. It is recommended to run ['restore'](#restore) before running the `update`. +Updates all packages in a project (using `packages.config`) to their latest available versions. It is recommended to run ['restore'](#restore) before running the `update`. -Note: `update` does not work with the CLI running under Mono (Mac OSX or Linux). The command also does not work with projects using `project.json`. +Note: `update` does not work with the CLI running under Mono (Mac OSX or Linux). The command also does not work with projects using `project.json` or PackageReference management formats. The `update` command also updates assembly references in the project file, provided those references already exist. If an updated package has an added assembly, a new reference is *not* added. New package dependencies also don't have their assembly references added. To include these operations as part of an update, update the package in Visual Studio using the Package Manager UI or the Package Manager Console. 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 d1b530536..7792880f2 100644 --- a/docs/Visual-Studio-Extensibility/NuGet-API-in-Visual-Studio.md +++ b/docs/Visual-Studio-Extensibility/NuGet-API-in-Visual-Studio.md @@ -5,7 +5,7 @@ title: NuGet API in Visual Studio | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 01/09/2017 ms.topic: reference ms.prod: nuget #ms.service: diff --git a/docs/index.md b/docs/index.md index 0dfd202e5..9f4c33e41 100644 --- a/docs/index.md +++ b/docs/index.md @@ -16,7 +16,7 @@ keywords: author: kraigb ms.author: kraigb manager: ghogen -ms.date: 8/15/2017 +ms.date: 08/15/2017 ms.topic: hub-page ms.prod: nuget #ms.service: From 2d4badd62039f29c5270eb60dd9e5e6200021b76 Mon Sep 17 00:00:00 2001 From: Al Rodriguez Date: Wed, 8 Nov 2017 20:11:05 -0800 Subject: [PATCH 0363/2943] Added example packing a release build Added an example showing how to use the pack command to use a Release build instead of the default Debug build. It would also be helpful to be told somewhere in the text that Debug is the default, but I'm not sure where that should go. --- docs/Tools/cli-ref-pack.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/Tools/cli-ref-pack.md b/docs/Tools/cli-ref-pack.md index 1189da037..8eae950b9 100644 --- a/docs/Tools/cli-ref-pack.md +++ b/docs/Tools/cli-ref-pack.md @@ -92,6 +92,8 @@ nuget pack foo.nuspec nuget pack foo.csproj +nuget pack foo.csproj -Properties Configuration=Release + nuget pack foo.csproj -Build -Symbols -Properties owners=janedoe,xiaop;version="1.0.5" # create a package from project foo.csproj, using MSBuild version 12 to build the project From 3714e70d82b5cd1b2e19bc4f04acc3667f37172b Mon Sep 17 00:00:00 2001 From: Chris Maddock Date: Thu, 9 Nov 2017 13:36:18 +0000 Subject: [PATCH 0364/2943] Correct typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b4eecd722..e50e6c405 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ No contribution is too big or too small-- 1. Relative links to other pages in this docset should be in the form `..//.md` including the training `.md`. If you're linking to another topic in the same folder, then `..//` can be omitted. When using anchors, always remember to include the `.md` before the `#`. 1. When using external links, especially to docs.microsoft.com or msdn.microsoft.com, omit any language tag like "en-us" so that a reader in another language lands on a target page in that same language if it's available. 1. When you're done, enter a commit message below, and click **Propose file change**. -1. Send a pull request for your change. We review PRs on a regular basis.' +1. Send a pull request for your change. We review PRs on a regular basis. 1. Thank you! If you're creating a new topic, keep the following in mind as well: From 72378aef914883f8a86e895c218ff50776f14f7a Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Fri, 10 Nov 2017 15:06:50 -0800 Subject: [PATCH 0365/2943] Improve the catalog API guide to mention the pre-release SDK available on MyGet (#562) Document assumption for requireLicenseAgreement in catalog --- docs/API/catalog-resource.md | 2 +- .../api/query-for-all-published-packages.md | 73 ++++++++++++++++--- 2 files changed, 64 insertions(+), 11 deletions(-) diff --git a/docs/API/catalog-resource.md b/docs/API/catalog-resource.md index 4724ee62d..f1eecce6c 100644 --- a/docs/API/catalog-resource.md +++ b/docs/API/catalog-resource.md @@ -262,7 +262,7 @@ packageHashAlgorithm | string | yes | packageSize | integer | yes | The size of the package .nupkg in bytes projectUrl | string | no | releaseNotes | string | no | -requireLicenseAgreement | boolean | no | +requireLicenseAgreement | boolean | no | Assume `false` if excluded summary | string | no | tags | array of strings | no | title | string | no | diff --git a/docs/Guides/api/query-for-all-published-packages.md b/docs/Guides/api/query-for-all-published-packages.md index dd1e52eb0..ee3a296bc 100644 --- a/docs/Guides/api/query-for-all-published-packages.md +++ b/docs/Guides/api/query-for-all-published-packages.md @@ -160,26 +160,79 @@ and allow your code to reprocess the old catalog items. ## C# sample code -Since the catalog is a set of JSON documents, it can be interacted with using any programming language that has -an HTTP client and JSON deserializer. +Since the catalog is a set of JSON documents available over HTTP, it can be interacted with using any programming +language that has an HTTP client and JSON deserializer. -For improved understanding and convenience, we have made a small sample available written in C# to demonstrate how to -read from the catalog. The solution file requires Visual Studio 2017. The project is `netcoreapp2.0` depends on the -[NuGet.Protocol 4.4.0](https://www.nuget.org/packages/NuGet.Protocol/4.4.0) (for resolving the service index) and -[Newtonsoft.Json 9.0.1](https://www.nuget.org/packages/Newtonsoft.Json/9.0.1) (for JSON deserialization). - -Simply clone the [NuGet/Samples](https://github.com/NuGet/Samples) repository on GitHub, restore, build, and run the -project file under the `CatalogReaderExample` directory. +However, for your convenience, ww have made some C# samples available in the +[*NuGet/Samples* GitHub repository](https://github.com/NuGet/Samples/tree/master/CatalogReaderExample). ``` git clone https://github.com/NuGet/Samples.git ``` +### Catalog SDK + +The easiest way to consume the catalog is to use our pre-release .NET catalog SDK package: +[`NuGet.Protocol.Catalog`](https://dotnet.myget.org/feed/nuget-build/package/nuget/NuGet.Protocol.Catalog). +This package is available on the `nuget-build` MyGet feed, which has the following NuGet package source URL: +``` +https://dotnet.myget.org/F/nuget-build/api/v3/index.json +``` + +You can install this package to a project compatible with `netstandard1.3` or greater (such as .NET Framework 4.6) +and start hacking! + +A sample using this package is available on GitHub in the +[*NuGet.Protocol.Catalog.Sample* project](https://github.com/NuGet/Samples/tree/master/CatalogReaderExample/NuGet.Protocol.Catalog.Sample). + +#### Sample output + +``` +2017-11-10T22:16:44.8689025+00:00: Found package details leaf for xSkrape.APIWrapper.REST 1.0.2. +2017-11-10T22:16:54.6972769+00:00: Found package details leaf for xSkrape.APIWrapper.REST 1.0.1. +2017-11-10T22:19:20.6385542+00:00: Found package details leaf for Platform.EnUnity 1.0.8. +... +2017-11-10T23:05:04.9695890+00:00: Found package details leaf for xSkrape.APIWrapper.Base 1.0.1. +2017-11-10T23:05:04.9695890+00:00: Found package details leaf for xSkrape.APIWrapper.Base 1.0.2. +2017-11-10T23:07:23.1303569+00:00: Found package details leaf for VeiculoX.Model 0.0.15. +Processing the catalog leafs failed. Retrying. +fail: NuGet.Protocol.Catalog.LoggerCatalogLeafProcessor[0] + 10 catalog commits have been processed. We will now simulate a failure. +warn: NuGet.Protocol.Catalog.CatalogProcessor[0] + Failed to process leaf https://api.nuget.org/v3/catalog0/data/2017.11.10.23.07.23/veiculox.model.0.0.15.json (VeiculoX.Model 0.0.15, PackageDetails). +warn: NuGet.Protocol.Catalog.CatalogProcessor[0] + 13 out of 59 leaves were left incomplete due to a processing failure. +warn: NuGet.Protocol.Catalog.CatalogProcessor[0] + 1 out of 1 pages were left incomplete due to a processing failure. +2017-11-10T23:07:23.1303569+00:00: Found package details leaf for VeiculoX.Model 0.0.15. +2017-11-10T23:07:33.0212446+00:00: Found package details leaf for VeiculoX.Model 0.0.14. +2017-11-10T23:07:41.6621837+00:00: Found package details leaf for VeiculoX.Model 0.0.13. +2017-11-10T23:09:58.5728614+00:00: Found package details leaf for CreaSoft.Composition.Web.Extensions 1.1.0. +2017-11-10T23:09:58.5728614+00:00: Found package details leaf for DarkXaHTeP.Extensions.Configuration.Consul 0.0.4. +2017-11-10T23:09:58.5728614+00:00: Found package details leaf for xSkrape.APIWrapper.REST.Sample 1.0.3. +2017-11-10T23:10:09.0574930+00:00: Found package details leaf for Microsoft.VisualStudio.Imaging 15.4.27004. +2017-11-10T23:10:09.0574930+00:00: Found package details leaf for Microsoft.VisualStudio.Imaging.Interop.14.0.DesignTime 14.3.25407. +2017-11-10T23:10:09.0574930+00:00: Found package details leaf for Microsoft.VisualStudio.Language.Intellisense 15.4.27004. +2017-11-10T23:10:09.0574930+00:00: Found package details leaf for Microsoft.VisualStudio.Language.StandardClassification 15.4.27004. +2017-11-10T23:10:09.0574930+00:00: Found package details leaf for Microsoft.VisualStudio.ManagedInterfaces 8.0.50727. +2017-11-10T23:10:09.0574930+00:00: Found package details leaf for xSkrape.APIWrapper.REST.Sample 1.0.2. +2017-11-10T23:10:09.0574930+00:00: Found package details leaf for xSkrape.APIWrapper.REST.Sample 1.0.3. +``` + +### Minimal sample + +If you are interested in an example with fewer dependencies and one that illustrates the interaction with the catalog +in more detail, you can take a look at the +[*CatalogReaderExample* sample project](https://github.com/NuGet/Samples/tree/master/CatalogReaderExample/CatalogReaderExample). +The project is `netcoreapp2.0` and depends on the [NuGet.Protocol 4.4.0](https://www.nuget.org/packages/NuGet.Protocol/4.4.0) +(for resolving the service index) and +[Newtonsoft.Json 9.0.1](https://www.nuget.org/packages/Newtonsoft.Json/9.0.1) (for JSON deserialization). + The main logic of the code is visible in the [`Program.cs`](https://github.com/NuGet/Samples/blob/master/CatalogReaderExample/CatalogReaderExample/Program.cs) file. -### Sample output +#### Sample output ``` No cursor found. Defaulting to 11/2/2017 9:41:28 PM. From ca5c6ac9189185cf58dba1eb84260f8c7e7e08c3 Mon Sep 17 00:00:00 2001 From: IgorZubov Date: Sat, 11 Nov 2017 12:18:44 +0300 Subject: [PATCH 0366/2943] Correct typo in dependency graph description --- docs/What-is-NuGet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index 77dbd1d2f..6d5f4dbf4 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -65,7 +65,7 @@ The following image shows a project that depends on five packages, which in turn ![An example NuGet dependency graph for a .NET project](media/dependency-graph.png) -Notice that some packages appear multiple times in the dependency graph. For example, there are four different consumers of package B, and each consumer might also specify a different version for that package (not shown). Because this is a common occurrence, NuGet fortunately does all the hard work to determine exactly which version of package B satisfies all its consumers. NuGet then does the same for all other packages, no matter how deep the dependency graph becomes. +Notice that some packages appear multiple times in the dependency graph. For example, there are three different consumers of package B, and each consumer might also specify a different version for that package (not shown). Because this is a common occurrence, NuGet fortunately does all the hard work to determine exactly which version of package B satisfies all its consumers. NuGet then does the same for all other packages, no matter how deep the dependency graph becomes. For more details on how NuGet performs this service, see [Dependency resolution](Consume-Packages/Dependency-Resolution.md). From 257e36f4f9c3bb14b5f3790d01c43fcfc176a883 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 13 Nov 2017 11:14:38 -0800 Subject: [PATCH 0367/2943] Update docs to clarify package edit feature deprecation https://github.com/NuGet/Engineering/issues/897 --- docs/Policies/NuGet-FAQ.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index d71f75081..fa37be054 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -167,9 +167,9 @@ This is not an issue when using PackageReference, as each project file contains ## Managing packages on nuget.org -**Can I edit package metadata after it's been uploaded? Why do you recommend editing the nuspec and uploading a new package for making changes to package metadata?** +**Can I edit package metadata after it's been uploaded? Why do you require editing the nuspec and uploading a new package for making changes to package metadata?** -NuGet will be implementing package signing. A design principle of package signing is that signed package content must be immutable, which includes the nuspec. Editing the package metadata results in changes to the nuspec, invalidating existing signatures. We recommend modifying existing workflows to not require editing the package metadata after the package has been created. +NuGet requires all packages to be signed. A design principle of package signing is that signed package content must be immutable, which includes the nuspec. Editing the package metadata results in changes to the nuspec, invalidating existing signatures. We recommend modifying existing workflows to not require editing the package metadata after the package has been created. Note that dependencies listed for your package are generated automatically from the package itself and cannot be edited. From f09c4863db9f25a62a83c16d01f8ded9f8455e4f Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 13 Nov 2017 11:31:09 -0800 Subject: [PATCH 0368/2943] Small edits --- .../api/query-for-all-published-packages.md | 35 ++++++++----------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/docs/Guides/api/query-for-all-published-packages.md b/docs/Guides/api/query-for-all-published-packages.md index ee3a296bc..444e11965 100644 --- a/docs/Guides/api/query-for-all-published-packages.md +++ b/docs/Guides/api/query-for-all-published-packages.md @@ -37,8 +37,8 @@ the package was published. Scenarios requiring this kind of query against nuget. The legacy way of doing this typically depended on sorting the OData package entity by a timestamp and paging across the massive result set using `skip` and `top` (page size) parameters. Unfortunately, this approach has some drawbacks: -- Possibility of missing packages, since the queries are being made on data that is often changing order -- Slow query response time, since the queries are not optimized (the most optimized queries are ones that support a +- Possibility of missing packages, because the queries are being made on data that is often changing order +- Slow query response time, because the queries are not optimized (the most optimized queries are ones that support a mainline scenario for the official NuGet client) - Use of deprecated and undocumented API, meaning the support of such queries in the future is not guaranteed - Inability to replay history in the exact order that it transpired @@ -79,7 +79,7 @@ DateTime cursor = DateTime.UtcNow.AddHours(-1); ## Determine catalog index URL The location of every resource (endpoint) in the NuGet API should be discovered using the -[service index](../../api/service-index.md). Since this guide focuses on nuget.org, we'll be using nuget.org's service +[service index](../../api/service-index.md). Because this guide focuses on nuget.org, we'll be using nuget.org's service index. ``` @@ -160,11 +160,10 @@ and allow your code to reprocess the old catalog items. ## C# sample code -Since the catalog is a set of JSON documents available over HTTP, it can be interacted with using any programming +Because the catalog is a set of JSON documents available over HTTP, it can be interacted with using any programming language that has an HTTP client and JSON deserializer. -However, for your convenience, ww have made some C# samples available in the -[*NuGet/Samples* GitHub repository](https://github.com/NuGet/Samples/tree/master/CatalogReaderExample). +C# samples are available in the [NuGet/Samples repository](https://github.com/NuGet/Samples/tree/master/CatalogReaderExample). ``` git clone https://github.com/NuGet/Samples.git @@ -172,18 +171,14 @@ git clone https://github.com/NuGet/Samples.git ### Catalog SDK -The easiest way to consume the catalog is to use our pre-release .NET catalog SDK package: -[`NuGet.Protocol.Catalog`](https://dotnet.myget.org/feed/nuget-build/package/nuget/NuGet.Protocol.Catalog). -This package is available on the `nuget-build` MyGet feed, which has the following NuGet package source URL: -``` -https://dotnet.myget.org/F/nuget-build/api/v3/index.json -``` +The easiest way to consume the catalog is to use the pre-release .NET catalog SDK package: +[NuGet.Protocol.Catalog](https://dotnet.myget.org/feed/nuget-build/package/nuget/NuGet.Protocol.Catalog). +This package is available on the `nuget-build` MyGet feed, for which you use the NuGet package source URL `https://dotnet.myget.org/F/nuget-build/api/v3/index.json`. -You can install this package to a project compatible with `netstandard1.3` or greater (such as .NET Framework 4.6) -and start hacking! +You can install this package to a project compatible with `netstandard1.3` or greater (such as .NET Framework 4.6). A sample using this package is available on GitHub in the -[*NuGet.Protocol.Catalog.Sample* project](https://github.com/NuGet/Samples/tree/master/CatalogReaderExample/NuGet.Protocol.Catalog.Sample). +[NuGet.Protocol.Catalog.Sample project](https://github.com/NuGet/Samples/tree/master/CatalogReaderExample/NuGet.Protocol.Catalog.Sample). #### Sample output @@ -221,16 +216,14 @@ warn: NuGet.Protocol.Catalog.CatalogProcessor[0] ### Minimal sample -If you are interested in an example with fewer dependencies and one that illustrates the interaction with the catalog -in more detail, you can take a look at the -[*CatalogReaderExample* sample project](https://github.com/NuGet/Samples/tree/master/CatalogReaderExample/CatalogReaderExample). -The project is `netcoreapp2.0` and depends on the [NuGet.Protocol 4.4.0](https://www.nuget.org/packages/NuGet.Protocol/4.4.0) +For an example with fewer dependencies that illustrates the interaction with the catalog in more detail, see the +[CatalogReaderExample sample project](https://github.com/NuGet/Samples/tree/master/CatalogReaderExample/CatalogReaderExample). +The project targets `netcoreapp2.0` and depends on the [NuGet.Protocol 4.4.0](https://www.nuget.org/packages/NuGet.Protocol/4.4.0) (for resolving the service index) and [Newtonsoft.Json 9.0.1](https://www.nuget.org/packages/Newtonsoft.Json/9.0.1) (for JSON deserialization). The main logic of the code is visible in the -[`Program.cs`](https://github.com/NuGet/Samples/blob/master/CatalogReaderExample/CatalogReaderExample/Program.cs) -file. +[Program.cs file](https://github.com/NuGet/Samples/blob/master/CatalogReaderExample/CatalogReaderExample/Program.cs). #### Sample output From 07826795bb385b0dd7847c724c78c8ac14b36a9a Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 13 Nov 2017 11:34:59 -0800 Subject: [PATCH 0369/2943] Adding a note for default debug configuration --- docs/Tools/cli-ref-pack.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/cli-ref-pack.md b/docs/Tools/cli-ref-pack.md index 8eae950b9..6e8f56093 100644 --- a/docs/Tools/cli-ref-pack.md +++ b/docs/Tools/cli-ref-pack.md @@ -55,7 +55,7 @@ where `` and `` specify the `.nuspec` or project file, | NoDefaultExcludes | Prevents default exclusion of NuGet package files and files and folders starting with a dot, such as `.svn` and `.gitignore`. | | NoPackageAnalysis | Specifies that pack should not run package analysis after building the package. | | OutputDirectory | Specifies the folder in which the created package is stored. If no folder is specified, the current folder is used. | -| Properties | Specifies a list of token=value pairs, separated by semicolons, where each occurrence of `$token$` in the `.nuspec` file will be replaced with the given value. Values can be strings in quotation marks. | +| Properties | Specifies a list of token=value pairs, separated by semicolons, where each occurrence of `$token$` in the `.nuspec` file will be replaced with the given value. Values can be strings in quotation marks. Note that for the "Configuration" property, the default is "Debug". To change to a Release configuration, use `-Properties Configuration=Release`. | | Suffix | *(3.4.4+)* Appends a suffix to the internally generated version number, typically used for appending build or other pre-release identifiers. For example, using `-suffix nightly` will create a package with a version number like `1.2.3-nightly`. Suffixes must start with a letter to avoid warnings, errors, and potential incompatibilities with different versions of NuGet and the NuGet Package Manager. | | Symbols | Specifies that the package contains sources and symbols. When used with a `.nuspec` file, this creates a regular NuGet package file and the corresponding symbols package. | | Tool | Specifies that the output files of the project should be placed in the `tool` folder. | From 8e1e7ddbde0f654f1d108aef7c538c6feade2b44 Mon Sep 17 00:00:00 2001 From: Alexandre Arpin Date: Tue, 14 Nov 2017 14:07:49 -0500 Subject: [PATCH 0370/2943] Fix a typo in Quick Start/Use a Package - Change MainWindwos.xaml to MainWindow.xaml --- docs/Quickstart/Use-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Quickstart/Use-a-Package.md b/docs/Quickstart/Use-a-Package.md index 3e52fba35..0619ed38e 100644 --- a/docs/Quickstart/Use-a-Package.md +++ b/docs/Quickstart/Use-a-Package.md @@ -78,7 +78,7 @@ To install a NuGet package, you need some kind of .NET-based project in Visual S With the Newtonsoft.Json package in the project, you can call its `JsonConvert.SerializeObject` method to convert an object to a human-readable string. -1. Open `MainWindwos.xaml` (WPF) or `MainPage.xaml` (UWP) and replace the existing `Grid` element with the following: +1. Open `MainWindow.xaml` (WPF) or `MainPage.xaml` (UWP) and replace the existing `Grid` element with the following: ```xaml From 8ae5b725608b9a6005c2a25e84da474b8c3d4fb3 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 16 Nov 2017 10:42:56 -0800 Subject: [PATCH 0371/2943] Revert "Update docs to clarify package edit feature deprecation" (#568) --- docs/Policies/NuGet-FAQ.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index fa37be054..d71f75081 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -167,9 +167,9 @@ This is not an issue when using PackageReference, as each project file contains ## Managing packages on nuget.org -**Can I edit package metadata after it's been uploaded? Why do you require editing the nuspec and uploading a new package for making changes to package metadata?** +**Can I edit package metadata after it's been uploaded? Why do you recommend editing the nuspec and uploading a new package for making changes to package metadata?** -NuGet requires all packages to be signed. A design principle of package signing is that signed package content must be immutable, which includes the nuspec. Editing the package metadata results in changes to the nuspec, invalidating existing signatures. We recommend modifying existing workflows to not require editing the package metadata after the package has been created. +NuGet will be implementing package signing. A design principle of package signing is that signed package content must be immutable, which includes the nuspec. Editing the package metadata results in changes to the nuspec, invalidating existing signatures. We recommend modifying existing workflows to not require editing the package metadata after the package has been created. Note that dependencies listed for your package are generated automatically from the package itself and cannot be edited. From 8e4733f5dd6061fc04574f134370bb7c368b42f4 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 16 Nov 2017 10:44:20 -0800 Subject: [PATCH 0372/2943] Revert "Update docs to clarify package edit feature deprecation" (#568) (#569) --- docs/Policies/NuGet-FAQ.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index fa37be054..d71f75081 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -167,9 +167,9 @@ This is not an issue when using PackageReference, as each project file contains ## Managing packages on nuget.org -**Can I edit package metadata after it's been uploaded? Why do you require editing the nuspec and uploading a new package for making changes to package metadata?** +**Can I edit package metadata after it's been uploaded? Why do you recommend editing the nuspec and uploading a new package for making changes to package metadata?** -NuGet requires all packages to be signed. A design principle of package signing is that signed package content must be immutable, which includes the nuspec. Editing the package metadata results in changes to the nuspec, invalidating existing signatures. We recommend modifying existing workflows to not require editing the package metadata after the package has been created. +NuGet will be implementing package signing. A design principle of package signing is that signed package content must be immutable, which includes the nuspec. Editing the package metadata results in changes to the nuspec, invalidating existing signatures. We recommend modifying existing workflows to not require editing the package metadata after the package has been created. Note that dependencies listed for your package are generated automatically from the package itself and cannot be edited. From 40c7314b91f9ae74d8b12157af3dbaea35b91908 Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Thu, 16 Nov 2017 22:25:41 -0800 Subject: [PATCH 0373/2943] Update search-autocomplete-service-resource.md --- docs/API/search-autocomplete-service-resource.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/API/search-autocomplete-service-resource.md b/docs/API/search-autocomplete-service-resource.md index 1256a452d..a44fd55b7 100644 --- a/docs/API/search-autocomplete-service-resource.md +++ b/docs/API/search-autocomplete-service-resource.md @@ -124,7 +124,7 @@ GET {@id}?id={ID}&prerelease={PRERELEASE}&semVerLevel={SEMVERLEVEL} Name | In | Type | Required | Notes ----------- | ------ | ------- | -------- | ----- -id | URL | string | no | The package ID to fetch versions for +id | URL | string | yes | The package ID to fetch versions for prerelease | URL | boolean | no | `true` or `false` determining whether to include [pre-release packages](../create-packages/prerelease-packages.md) semVerLevel | URL | string | no | A SemVer 2.0.0 version string @@ -157,4 +157,4 @@ GET https://api-v2v3search-0.nuget.org/autocomplete?id=nuget.protocol&prerelease ### Sample response -[!code-JSON [autocomplete-version-result.json](./_data/autocomplete-version-result.json)] \ No newline at end of file +[!code-JSON [autocomplete-version-result.json](./_data/autocomplete-version-result.json)] From 8b881b47eaa8e2f17267b467c3a441552afaf1cd Mon Sep 17 00:00:00 2001 From: Kirill Katsnelson Date: Mon, 20 Nov 2017 11:08:04 -0800 Subject: [PATCH 0374/2943] Fix incorrect description of the /tools folder --- docs/Create-Packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 9b07ff12a..73fb38dbe 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -191,7 +191,7 @@ The folder conventions are as follows: | runtimes | Architecture-specific assembly (`.dll`), symbol (`.pdb`), and native resource (`.pri`) files | Assemblies are added as references; other files are copied into project folders. See [Supporting multiple target frameworks](Supporting-Multiple-Target-Frameworks.md). | | content | Arbitrary files | Contents are copied to the project root. Think of the **content** folder as the root of the target application that ultimately consumes the package. To have the package add an image in the application's */images* folder, place it in the package's *content/images* folder. | | build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (NuGet 2.x) or `project.lock.json` (NuGet 3.x+). | -| tools | Powershell scripts and programs accessible from the Package Manager Console | Contents are copied to the project folder, and the `tools` folder is added to the PATH environment variable. | +| tools | Powershell scripts and programs accessible from the Package Manager Console | The `tools` folder is added to the `PATH` environment variable for the Package Manager Console only (Specifically, *not* to the `PATH` as set for MSBuild when building the project). | Because your folder structure can contain any number of assemblies for any number of target frameworks, this method is necessary when creating packages that support multiple frameworks From b37e91e8d2b4962d236485e86575dcf389e33cc6 Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Mon, 27 Nov 2017 07:05:58 -0800 Subject: [PATCH 0375/2943] Address two small API documentation mistakes Thanks @loic-sharma! --- docs/API/package-base-address-resource.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/API/package-base-address-resource.md b/docs/API/package-base-address-resource.md index 121b43690..d6b4e6ed7 100644 --- a/docs/API/package-base-address-resource.md +++ b/docs/API/package-base-address-resource.md @@ -113,10 +113,10 @@ GET {@id}/{LOWER_ID}/{LOWER_VERSION}/{LOWER_ID}.{LOWER_VERSION}.nupkg ### Request parameters -Name | In | Type | Required | Notes -------------- | ------ | ------- | -------- | ----- -LOWER_ID | URL | string | yes | The package ID, lowercase -LOWER_VERSION | URL | integer | yes | The package version, normalized and lowercased +Name | In | Type | Required | Notes +------------- | ------ | ------ | -------- | ----- +LOWER_ID | URL | string | yes | The package ID, lowercase +LOWER_VERSION | URL | string | yes | The package version, normalized and lowercased Both `LOWER_ID` and `LOWER_VERSION` are lowercased using the rules implemented by .NET's [`System.String.ToLowerInvariant()`](https://msdn.microsoft.com/en-us/library/system.string.tolowerinvariant.aspx) From 5be39cc513e248dc3c72d1f2f034b486ddf731d7 Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Mon, 27 Nov 2017 07:08:17 -0800 Subject: [PATCH 0376/2943] Update registration-base-url-resource.md --- docs/API/registration-base-url-resource.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/API/registration-base-url-resource.md b/docs/API/registration-base-url-resource.md index 51d784e62..b28602728 100644 --- a/docs/API/registration-base-url-resource.md +++ b/docs/API/registration-base-url-resource.md @@ -139,7 +139,7 @@ Name | Type | Required | Notes count | integer | yes | The number of registration leaves in the page items | array of objects | no | The array of registration leaves and their associate metadata lower | string | yes | The lowest SemVer 2.0.0 version in the page (inclusive) -parent | string | yes | The URL to the registration index +parent | string | no | The URL to the registration index upper | string | yes | The highest SemVer 2.0.0 version in the page (inclusive) The `lower` and `upper` bounds of the page object are useful when the metadata for a specific page version is needed. @@ -148,6 +148,8 @@ These bounds can be used to fetch the only registration page needed. The version build metadata. As with all versions in the NuGet ecosystem, comparison of version strings is implemented using [SemVer 2.0.0's version precedence rules](http://semver.org/spec/v2.0.0.html#spec-item-11). +The `parent` property will only appear if the registration page object has the `items` property. + If the `items` property is not present in the registration page object, the URL specified in the `@id` must be used to fetch metadata about individual package versions. The `items` array is sometimes excluded from the page object as an optimization. If the number of versions of a single package ID is very large, then the registration index From e9a93ecad703746f0358a99ec43414b55a288b18 Mon Sep 17 00:00:00 2001 From: Chris Maddock Date: Thu, 30 Nov 2017 14:22:56 +0000 Subject: [PATCH 0377/2943] Formatting standardisation --- docs/Schema/nuspec.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index 650f75c43..879c3875e 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -92,19 +92,19 @@ These elements must appear within a `` element. | Element | Description | | --- | --- | | **title** | A human-friendly title of the package, typically used in UI displays as on nuget.org and the Package Manager in Visual Studio. If not specified, the package ID is used. | -| **owners** | A comma-separated list of the package creators using profile names on nuget.org. This is often the same list as in *authors*, and is ignored when uploading the package to nuget.org. See [Managing package owners on nuget.org](../create-packages/publish-a-package.md#managing-package-owners-on-nugetorg). | +| **owners** | A comma-separated list of the package creators using profile names on nuget.org. This is often the same list as in `authors`, and is ignored when uploading the package to nuget.org. See [Managing package owners on nuget.org](../create-packages/publish-a-package.md#managing-package-owners-on-nugetorg). | | **projectUrl** | A URL for the package's home page, often shown in UI displays as well as nuget.org. | | **licenseUrl** | A URL for the package's license, often shown in UI displays as well as nuget.org. | -| **iconUrl** | A URL for a 64x64 image with transparency background to use as the icon for the package in UI display. Be sure this element contains the *direct image URL* and not the URL of a web page containing the image. For example, to use an image from GitHub, use the raw file URL like `https://github.com///raw//`. | +| **iconUrl** | A URL for a 64x64 image with transparency background to use as the icon for the package in UI display. Be sure this element contains the *direct image URL* and not the URL of a web page containing the image. For example, to use an image from GitHub, use the raw file URL like `https://github.com///raw//`. | | **requireLicenseAcceptance** | A Boolean value specifying whether the client must prompt the consumer to accept the package license before installing the package. | -| **developmentDependency** | *(2.8+)* A Boolean value specifying whether the package is be marked as a development-only-dependency, which prevents the package from being included as a dependency in other packages. | -| **summary** | A short description of the package for UI display. If omitted, a truncated version of **description** is used. | -| **releaseNotes** | *(1.5+)* A description of the changes made in this release of the package, often used in UI like the **Updates** tab of the Visual Studio Package Manager in place of the package description. | +| **developmentDependency** | *(2.8+)* A Boolean value specifying whether the package is be marked as a development-only-dependency, which prevents the package from being included as a dependency in other packages. | +| **summary** | A short description of the package for UI display. If omitted, a truncated version of `description` is used. | +| **releaseNotes** | *(1.5+)* A description of the changes made in this release of the package, often used in UI like the *Updates* tab of the Visual Studio Package Manager in place of the package description. | | **copyright** | *(1.5+)* Copyright details for the package. | | **language** | The locale ID for the package. See [Creating localized packages](../create-packages/creating-localized-packages.md). | | **tags** | A space-delimited list of tags and keywords that describe the package and aid discoverability of packages through search and filtering. | -| **serviceable** | *(3.3+)*For internal NuGet use only. | -| **minClientVersion** | *(2.5+)* Specifies the minimum version of the NuGet client that can install this package, enforced by nuget.exe and the Visual Studio Package Manager. This is used whenever the package depends on specific features of the `.nuspec` file that were added in a particular version of the NuGet client. For example, a package using the `developmentDependency` attribute should specify "2.8" for `minClientVersion`. Similarly, a package using the `contentFiles` element (see the next section) should set `minClientVersion` to "3.3". Note also that because NuGet clients prior to 2.5 do not recognize this flag, they *always* refuse to install the package no matter what `minClientVersion` contains. | +| **serviceable** | *(3.3+)* For internal NuGet use only. | +| **minClientVersion** | *(2.5+)* Specifies the minimum version of the NuGet client that can install this package, enforced by nuget.exe and the Visual Studio Package Manager. This is used whenever the package depends on specific features of the `.nuspec` file that were added in a particular version of the NuGet client. For example, a package using the `developmentDependency` attribute should specify "2.8" for `minClientVersion`. Similarly, a package using the `contentFiles` element (see the next section) should set `minClientVersion` to "3.3". Note also that because NuGet clients prior to 2.5 do not recognize this flag, they *always* refuse to install the package no matter what `minClientVersion` contains. | #### Collection elements @@ -164,7 +164,7 @@ And you build an assembly whose `AssemblyName` is `LoggingLibrary` with the `Rel ```xml - + ``` From 67415d7ae2211e664f5517b7c2896aaa2837e4a7 Mon Sep 17 00:00:00 2001 From: Chris Maddock Date: Thu, 30 Nov 2017 14:30:10 +0000 Subject: [PATCH 0378/2943] Undo incorrect change to GUI string --- docs/Schema/nuspec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index 879c3875e..cb7c04954 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -99,7 +99,7 @@ These elements must appear within a `` element. | **requireLicenseAcceptance** | A Boolean value specifying whether the client must prompt the consumer to accept the package license before installing the package. | | **developmentDependency** | *(2.8+)* A Boolean value specifying whether the package is be marked as a development-only-dependency, which prevents the package from being included as a dependency in other packages. | | **summary** | A short description of the package for UI display. If omitted, a truncated version of `description` is used. | -| **releaseNotes** | *(1.5+)* A description of the changes made in this release of the package, often used in UI like the *Updates* tab of the Visual Studio Package Manager in place of the package description. | +| **releaseNotes** | *(1.5+)* A description of the changes made in this release of the package, often used in UI like the **Updates** tab of the Visual Studio Package Manager in place of the package description. | | **copyright** | *(1.5+)* Copyright details for the package. | | **language** | The locale ID for the package. See [Creating localized packages](../create-packages/creating-localized-packages.md). | | **tags** | A space-delimited list of tags and keywords that describe the package and aid discoverability of packages through search and filtering. | From a7cbee4b83249806ae0f34bbe1b49a74f9404d95 Mon Sep 17 00:00:00 2001 From: Chris Maddock Date: Thu, 30 Nov 2017 14:34:54 +0000 Subject: [PATCH 0379/2943] Correct NuGet Pack example --- docs/Schema/nuspec.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index cb7c04954..831d8ec09 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -156,7 +156,7 @@ Tokens can also be used to resolve paths when you include [assembly files](#incl ```xml - + ``` @@ -164,7 +164,7 @@ And you build an assembly whose `AssemblyName` is `LoggingLibrary` with the `Rel ```xml - + ``` From d229af83aab80b56b859df4cec3126adbab698e9 Mon Sep 17 00:00:00 2001 From: Sombrio Date: Mon, 4 Dec 2017 03:13:56 -0200 Subject: [PATCH 0380/2943] Fixing typo "repsitory" to "repository" --- docs/Schema/nuspec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index 650f75c43..5911bb050 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -95,7 +95,7 @@ These elements must appear within a `` element. | **owners** | A comma-separated list of the package creators using profile names on nuget.org. This is often the same list as in *authors*, and is ignored when uploading the package to nuget.org. See [Managing package owners on nuget.org](../create-packages/publish-a-package.md#managing-package-owners-on-nugetorg). | | **projectUrl** | A URL for the package's home page, often shown in UI displays as well as nuget.org. | | **licenseUrl** | A URL for the package's license, often shown in UI displays as well as nuget.org. | -| **iconUrl** | A URL for a 64x64 image with transparency background to use as the icon for the package in UI display. Be sure this element contains the *direct image URL* and not the URL of a web page containing the image. For example, to use an image from GitHub, use the raw file URL like `https://github.com///raw//`. | +| **iconUrl** | A URL for a 64x64 image with transparency background to use as the icon for the package in UI display. Be sure this element contains the *direct image URL* and not the URL of a web page containing the image. For example, to use an image from GitHub, use the raw file URL like `https://github.com///raw//`. | | **requireLicenseAcceptance** | A Boolean value specifying whether the client must prompt the consumer to accept the package license before installing the package. | | **developmentDependency** | *(2.8+)* A Boolean value specifying whether the package is be marked as a development-only-dependency, which prevents the package from being included as a dependency in other packages. | | **summary** | A short description of the package for UI display. If omitted, a truncated version of **description** is used. | From 294b4abd1322d37c4284959738135c6e5a7d193b Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Mon, 4 Dec 2017 17:54:45 -0800 Subject: [PATCH 0381/2943] Added 4.5 release notes --- docs/Release-Notes/NuGet-4.5-RTM.md | 229 ++++++++++++++++++++++++++++ 1 file changed, 229 insertions(+) create mode 100644 docs/Release-Notes/NuGet-4.5-RTM.md diff --git a/docs/Release-Notes/NuGet-4.5-RTM.md b/docs/Release-Notes/NuGet-4.5-RTM.md new file mode 100644 index 000000000..97b2a5a49 --- /dev/null +++ b/docs/Release-Notes/NuGet-4.5-RTM.md @@ -0,0 +1,229 @@ +--- +# required metadata + +title: NuGet 4.5 RTM Release Notes | Microsoft Docs +author: anangaur +ms.author: anangaur +manager: unniravindranathan +ms.date: 12/4/2017 +ms.topic: article +ms.prod: nuget +#ms.service: +ms.technology: null +ms.assetid: 68751bde-8814-4da3-89fd-7976a2a96762 + +# optional metadata + +description: Release notes for NuGet 4.5 RTM including known issues, bug fixes, added features, and DCRs. +keywords: NuGet 4.5 RTM release notes, bug fixes, known issues, added features, DCRs +#ROBOTS: +#audience: +#ms.devlang: +ms.reviewer: +- karann-msft +- unniravindranathan +- anangaur +#ms.suite: +#ms.tgt_pltfrm: +#ms.custom: + +--- + +# 4.5 RTM Release Notes + +[Visual Studio 2017 15.5 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.5 RTM. + +## Known issues + +### Issues with .NET Standard 2.0 with .NET Framework & NuGet +.NET Standard & its tooling was designed such that projects targeting .NET Framework 4.6.1 can consume NuGet packages & projects targeting .NET Standard 2.0 or earlier. [This document](https://github.com/dotnet/standard/issues/481) summarizes the issues around that scenario, the plan for addressing them, and workarounds you can deploy with today's state of the tooling. + +### You will be unable to view, add, or update DotNetCLITools, using Nuget Package Manager + +#### Issue: +NuGet Package Manager does not display and does not allow add/update of DotNetCLITools. [NuGet#4256](https://github.com/NuGet/Home/issues/4256) + +#### Workaround: +DotNetCLIToolReferences must be manually edited in your project file. + +### Retargeting target framework version may lead to incomplete Intellisense + +#### Issue: +Retargeting target framework version may lead to incomplete Intellisense, in Visual Studio. This happens when you are using PackageReferences as the package manager format. [NuGet#4216](https://github.com/NuGet/Home/issues/4216) + +#### Workaround: +Do a manual restore. + + +### A package in a .NET Core project that contains an assembly with an invalid signature, can trigger an infinite restore loop + +#### Issue: +Occasionally, when you use a package that contains an assembly with an invalid signature or when the package version is set with 'DateTime' ticker, it causes the package auto-restore to run in an infinite loop [dotnet/project-system#1457](https://github.com/dotnet/project-system/issues/1457). + +#### Workaround: +There is no workaround at this time. + + +## Issues fixed in NuGet 4.5 RTM timeframe + +[NuGet 4.4 RTM Release Notes](../release-notes/nuget-4.4-RTM.md) - Lists all the issues fixed for NuGet 4.4 RTM + +**Feature:** + +* Disable auto-push of symbols package - [#6113](https://github.com/NuGet/Home/issues/6113) + +* Add Support: Enable installing Full .Net Framework from within netstandad 2 ,netcore 2 library project by option - [#5977](https://github.com/NuGet/Home/issues/5977) + +* nuget spec doesn't detect csproj dependencies - [#5833](https://github.com/NuGet/Home/issues/5833) + +* RS3 – UWP should work with NET Standard 2.0 using PackageTargetFallback - [#4957](https://github.com/NuGet/Home/issues/4957) + +* Deprecation and Security warnings in NuGet.exe/Visual Studio and NuGet.org - [#4731](https://github.com/NuGet/Home/issues/4731) + +* Automate offer suggestions for NuGet packages - [#3634](https://github.com/NuGet/Home/issues/3634) + +* Add end to end tests for MSBuild targets - [#3605](https://github.com/NuGet/Home/issues/3605) + +* on does not work - [#3568](https://github.com/NuGet/Home/issues/3568) + +* Adding static analysis tooling to help prevent semantic versioning breaks. - [#2195](https://github.com/NuGet/Home/issues/2195) + +* Feature Discussion: Add --interactive flag to command-line - [#2055](https://github.com/NuGet/Home/issues/2055) + + +**DCR:** + +* enable restore to share obj directory between projects - [#4154](https://github.com/NuGet/Home/issues/4154) + +* Adapt Pack for Transitive Project References change - [#4077](https://github.com/NuGet/Home/issues/4077) + +* Restore fails with custom framework names - [#4056](https://github.com/NuGet/Home/issues/4056) + +* Restore, http cache and failed packages - [#4055](https://github.com/NuGet/Home/issues/4055) + +* Investigate the usage of Managed C++ projects - [#2090](https://github.com/NuGet/Home/issues/2090) + +* Determine a shared v2 and v3 MachineCache location - [#2088](https://github.com/NuGet/Home/issues/2088) + +* IVsPackageRestorer API does not support UWP projects - [#2066](https://github.com/NuGet/Home/issues/2066) + +* Add useragent to the ILogger context - [#2028](https://github.com/NuGet/Home/issues/2028) + + +**Bug:** + +* Package Manager Console (PMC): Sorting in "default project" combobox changes after selection - [#6194](https://github.com/NuGet/Home/issues/6194) + +* [Regression] in 15.5p1: Portable0.0 is skipped - [#6105](https://github.com/NuGet/Home/issues/6105) + +* Assets from packages are missing after restore - [#5995](https://github.com/NuGet/Home/issues/5995) + +* Plugin credential providers do not work with URIs containing spaces - [#5982](https://github.com/NuGet/Home/issues/5982) + +* NuGet support for source build of NetCore - [#5903](https://github.com/NuGet/Home/issues/5903) + +* nuget.exe list PackageName -IncludeDelisted doesn't show unlisted package - [#5896](https://github.com/NuGet/Home/issues/5896) + +* Visual Studio 2017 failing to install nuget package in .NET 4.7 project (path too long) - [#5835](https://github.com/NuGet/Home/issues/5835) + +* NuGet UI in VS displays the wrong available versions of nuget packages. - [#5738](https://github.com/NuGet/Home/issues/5738) + +* If package failed to restore, error should be printed i the output even with Minimal verbosity ON - [#5658](https://github.com/NuGet/Home/issues/5658) + +* dotnet restore at solution-level doesn't follow ProjectReference with ReferenceOutputAssembly of false leading to random build failures - [#5490](https://github.com/NuGet/Home/issues/5490) + +* Avoid user specific data from nuget props/targets files - [#4929](https://github.com/NuGet/Home/issues/4929) + +* linux subsystem (bash) windows 10 - fails to communicate network - [#4844](https://github.com/NuGet/Home/issues/4844) + +* Auto-complete in PMC works incorrectly with object methods - [#4800](https://github.com/NuGet/Home/issues/4800) + +* Unable to nuget.exe delete on a prerelease build - [#4746](https://github.com/NuGet/Home/issues/4746) + +* Migrated project shows warning when packed. - [#4718](https://github.com/NuGet/Home/issues/4718) + +* nuget.exe restore fails with Visual Studio 2015 toolset - [#4713](https://github.com/NuGet/Home/issues/4713) + +* Visual Studio package manager not updated when NuGet.config is edited - [#4285](https://github.com/NuGet/Home/issues/4285) + +* update packages on .net core projects not working - [#4278](https://github.com/NuGet/Home/issues/4278) + +* perf - pmc is expensive to instantiate in vs2017 - [#4205](https://github.com/NuGet/Home/issues/4205) + +* Latest NuGet PACK yields PREVIOUS version AssemblyVersionAttribute values - [#4149](https://github.com/NuGet/Home/issues/4149) + +* VSFeedback: Update of Microsoft.Owin.Security.Cookies took long time - [#4111](https://github.com/NuGet/Home/issues/4111) + +* Slow to get dependency information on slow connection - [#4089](https://github.com/NuGet/Home/issues/4089) + +* Feature Request: Enhance support for Management Pack projects (mpproj) - [#4068](https://github.com/NuGet/Home/issues/4068) + +* uninstall-package w/ -RemoveDependencies will fail if multiple packages share a common dependency - [#4026](https://github.com/NuGet/Home/issues/4026) + +* Error in Nuget restore command - nuget 2.8.6 - [#4010](https://github.com/NuGet/Home/issues/4010) + +* Can't enable package source from local config if that source is disabled in global config. - [#3608](https://github.com/NuGet/Home/issues/3608) + +* Move NuGet.targets to contentFiles in NuGet.Build.Tasks - [#3603](https://github.com/NuGet/Home/issues/3603) + +* Version conflicts can occur when a project is used instead of a package - [#3602](https://github.com/NuGet/Home/issues/3602) + +* Remove noninteractive option from nuget.exe pack command - [#3598](https://github.com/NuGet/Home/issues/3598) + +* Logging of nuget.exe push does not agree with source parameter - [#3597](https://github.com/NuGet/Home/issues/3597) + +* Consider: nuget locals should still support nuget.exe locals -clear packages-cache - [#3591](https://github.com/NuGet/Home/issues/3591) + +* Finalize NuGet.Core.nupkg for publishing - [#3581](https://github.com/NuGet/Home/issues/3581) + +* NuGet pack resolves dependency ID from directory name when -IncludeProjectReferences is used for csproj + project.json - [#3566](https://github.com/NuGet/Home/issues/3566) + +* Unable to write any unit test because of Nuget - [#3254](https://github.com/NuGet/Home/issues/3254) + +* The type initializer for 'NuGet.ProxyCache' threw an exception - [#3144](https://github.com/NuGet/Home/issues/3144) + +* nuget restore performance issue with kudu - [#3087](https://github.com/NuGet/Home/issues/3087) + +* VS2015 freezes on startup loading Nuget Packages - [#2175](https://github.com/NuGet/Home/issues/2175) + +* UI Client fails to show any error or warning when search is ahead of registration blobs - [#2149](https://github.com/NuGet/Home/issues/2149) + +* Restore summary has incorrect "packages installed" output - [#2139](https://github.com/NuGet/Home/issues/2139) + +* Get-Packages -Updates generates an incorrect query - [#2135](https://github.com/NuGet/Home/issues/2135) + +* NuGet 3 dependency resolution model breaks the ability to use Debug builds - [#2120](https://github.com/NuGet/Home/issues/2120) + +* Dependency version resolution appears broken - [#2118](https://github.com/NuGet/Home/issues/2118) + +* Inconsistent Behavior in Packages View in Package Manager UI - [#2111](https://github.com/NuGet/Home/issues/2111) + +* Uninstall packages tries to install old version first - [#2050](https://github.com/NuGet/Home/issues/2050) + +* Managa Packages for Solution UX in VS 2015 - [#2030](https://github.com/NuGet/Home/issues/2030) + +* Unhelpful error message - [#2027](https://github.com/NuGet/Home/issues/2027) + +* nuget.commandline 3.3.0 -Source not adhering to source - [#2018](https://github.com/NuGet/Home/issues/2018) + +* nuget.exe update -Id not working when project has not restored packages ? - [#2013](https://github.com/NuGet/Home/issues/2013) + +* Packages with deep content get partially unpacked and an incorrect error result of "Package Not Found" - [#1727](https://github.com/NuGet/Home/issues/1727) + + +**Docs:** + +* We need docs for AssetTargetFallback, both generally and migrating from PackageTargetFallback . - [#5998](https://github.com/NuGet/Home/issues/5998) + +* No documentation? - [#4890](https://github.com/NuGet/Home/issues/4890) + +* Project style dialog should not apply to templates - [#4748](https://github.com/NuGet/Home/issues/4748) + +* Project.json docs page contains link-to-self for Dependency Resolution. - [#4107](https://github.com/NuGet/Home/issues/4107) + +* NuGet docs do not specify behavior for ./tools or install.ps1 args - [#3656](https://github.com/NuGet/Home/issues/3656) + + +## Link to GitHub issues fixed in 4.5 RTM + +[Issues list](https://github.com/NuGet/Home/issues?q=is%3Aissue+milestone%3A4.5+is%3Aclosed) From 083ca768e8656f1ba882f3501660ed6bf2417c74 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Mon, 4 Dec 2017 17:58:18 -0800 Subject: [PATCH 0382/2943] Update NuGet-4.5-RTM.md --- docs/Release-Notes/NuGet-4.5-RTM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Release-Notes/NuGet-4.5-RTM.md b/docs/Release-Notes/NuGet-4.5-RTM.md index 97b2a5a49..281b86eaf 100644 --- a/docs/Release-Notes/NuGet-4.5-RTM.md +++ b/docs/Release-Notes/NuGet-4.5-RTM.md @@ -31,7 +31,7 @@ ms.reviewer: # 4.5 RTM Release Notes -[Visual Studio 2017 15.5 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.5 RTM. +[Visual Studio 2017 15.5 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with [NuGet 4.5 RTM](https://dist.nuget.org/win-x86-commandline/v4.5.0/nuget.exe). ## Known issues From 6e1d3607c1f26926618b09eab2411ea8350a2f5e Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Mon, 4 Dec 2017 18:00:16 -0800 Subject: [PATCH 0383/2943] Update NuGet-4.5-RTM.md --- docs/Release-Notes/NuGet-4.5-RTM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Release-Notes/NuGet-4.5-RTM.md b/docs/Release-Notes/NuGet-4.5-RTM.md index 281b86eaf..0f3e1948b 100644 --- a/docs/Release-Notes/NuGet-4.5-RTM.md +++ b/docs/Release-Notes/NuGet-4.5-RTM.md @@ -66,7 +66,7 @@ There is no workaround at this time. ## Issues fixed in NuGet 4.5 RTM timeframe -[NuGet 4.4 RTM Release Notes](../release-notes/nuget-4.4-RTM.md) - Lists all the issues fixed for NuGet 4.4 RTM +For issues fixed in NuGet 4.4 RTM, please refer to [NuGet 4.4 RTM Release Notes](../release-notes/nuget-4.4-RTM.md) **Feature:** From 25402323cf47b9f037d6fc55073df9b8c73ad898 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Tue, 5 Dec 2017 09:20:54 -0800 Subject: [PATCH 0384/2943] Update friendly name for netcore TFM Use Windows Store instead of .NET Core for the friendly name of the netcore TFM to distinguish it from the netcoreapp TFM. --- docs/Schema/Target-Frameworks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Schema/Target-Frameworks.md b/docs/Schema/Target-Frameworks.md index e6f52dd92..b4f6a3a64 100644 --- a/docs/Schema/Target-Frameworks.md +++ b/docs/Schema/Target-Frameworks.md @@ -57,7 +57,7 @@ The NuGet clients support the following frameworks. Equivalents are shown within | | |net46 | | | |net461 | | | |net462 | -|.NET Core | netcore | netcore [netcore45] +|Windows Store | netcore | netcore [netcore45] | | | netcore45 [win, win8] | | | netcore451 [win81] | | | netcore50 From ef652f6aeb9f2c725c08be670c6058363debf0e1 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Tue, 5 Dec 2017 11:12:06 -0800 Subject: [PATCH 0385/2943] Added index to rel notes for 4.5 --- docs/Release-Notes/Index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/Release-Notes/Index.md b/docs/Release-Notes/Index.md index 36b59d60f..c36654a9b 100644 --- a/docs/Release-Notes/Index.md +++ b/docs/Release-Notes/Index.md @@ -32,6 +32,8 @@ ms.reviewer: [Known Issues](../release-notes/known-issues.md) +[NuGet 4.5 RTM](../release-notes/nuget-4.5-rtm.md) + [NuGet 4.4 RTM](../release-notes/nuget-4.4-rtm.md) [NuGet 4.3 RTM](../release-notes/nuget-4.3-rtm.md) From e0c2c15494a2d027e12324391e99d1c6dde428d2 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Tue, 5 Dec 2017 11:36:42 -0800 Subject: [PATCH 0386/2943] No auto-push with 4.5.0 --- docs/Create-Packages/Publish-a-package.md | 1 + docs/Create-Packages/Symbol-Packages.md | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index c9c589d1a..c35c155ea 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -20,6 +20,7 @@ keywords: NuGet package publishing, publish NuGet package, NuGet package ownersh #audience: #ms.devlang: ms.reviewer: +- anangaurkarann-msft - karann-msft - unniravindranathan #ms.suite: diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index a467e4e9c..dd8965a7e 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -20,6 +20,7 @@ keywords: NuGet symbol packages, NuGet package debugging, supporting NuGet debug #audience: #ms.devlang: ms.reviewer: +- anangaur - karann-msft - unniravindranathan #ms.suite: @@ -125,6 +126,8 @@ A symbol package can be built by conventions, from a folder structure as describ ``` nuget push MyPackage.symbols.nupkg ``` +> [!Important] +> With nuget.exe 4.5.0 or above, the symbols packages are not automatically pushed to symbolsource.org. You would need to push separately as explained in the next step. 1. To publish to a different symbol repository, or to push a symbol package that doesn't follow the naming convention, use the `-Source` option: @@ -142,4 +145,4 @@ In this case, NuGet will publish `MyPackage.symbols.nupkg`, if present, to https ## See Also - -
    Using SymbolSource (symbolsource.org) + - Using SymbolSource (symbolsource.org) From d20fbe4919bd89e9cab213596c994dd4fa985051 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Tue, 5 Dec 2017 11:38:05 -0800 Subject: [PATCH 0387/2943] Update Publish-a-package.md --- docs/Create-Packages/Publish-a-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index c35c155ea..1f3c2c450 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -20,7 +20,7 @@ keywords: NuGet package publishing, publish NuGet package, NuGet package ownersh #audience: #ms.devlang: ms.reviewer: -- anangaurkarann-msft +- anangaur - karann-msft - unniravindranathan #ms.suite: From ce3d24ad8128fc38382676c10ffb8c8d8acdad10 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Tue, 5 Dec 2017 14:12:56 -0800 Subject: [PATCH 0388/2943] Update Symbol-Packages.md --- docs/Create-Packages/Symbol-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index dd8965a7e..82a947bc0 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -126,7 +126,7 @@ A symbol package can be built by conventions, from a folder structure as describ ``` nuget push MyPackage.symbols.nupkg ``` -> [!Important] +> [!Note] > With nuget.exe 4.5.0 or above, the symbols packages are not automatically pushed to symbolsource.org. You would need to push separately as explained in the next step. 1. To publish to a different symbol repository, or to push a symbol package that doesn't follow the naming convention, use the `-Source` option: From 3d54ba2811cd34dbe38826330e2d8d3ac491b6d3 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Tue, 5 Dec 2017 14:13:29 -0800 Subject: [PATCH 0389/2943] Update Symbol-Packages.md --- docs/Create-Packages/Symbol-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index 82a947bc0..83500a05b 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -127,7 +127,7 @@ A symbol package can be built by conventions, from a folder structure as describ nuget push MyPackage.symbols.nupkg ``` > [!Note] -> With nuget.exe 4.5.0 or above, the symbols packages are not automatically pushed to symbolsource.org. You would need to push separately as explained in the next step. +> With nuget.exe 4.5.0 or above, the symbols packages are not automatically pushed to symbolsource.org. You would need to push the symbols packages separately as explained in the next step. 1. To publish to a different symbol repository, or to push a symbol package that doesn't follow the naming convention, use the `-Source` option: From 7eaba5cb40914b73b7a1b4b2e01a712c10a587ac Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 5 Dec 2017 15:15:08 -0800 Subject: [PATCH 0390/2943] Update warnings, other edits --- .../Consume-Packages/Overview-and-Workflow.md | 13 ----- .../Package-restore-troubleshooting.md | 2 +- docs/Guides/Install-NuGet.md | 12 ++--- docs/Quickstart/Use-a-Package.md | 14 +---- docs/Reference/Errors-and-Warnings.md | 53 ++++++++----------- docs/Tools/Package-Manager-Console.md | 24 ++++----- docs/Tools/Package-Manager-UI.md | 42 +++++++-------- docs/includes/install-methods.md | 7 +++ 8 files changed, 68 insertions(+), 99 deletions(-) create mode 100644 docs/includes/install-methods.md diff --git a/docs/Consume-Packages/Overview-and-Workflow.md b/docs/Consume-Packages/Overview-and-Workflow.md index a8d64c9b5..8b9094ca2 100644 --- a/docs/Consume-Packages/Overview-and-Workflow.md +++ b/docs/Consume-Packages/Overview-and-Workflow.md @@ -1,6 +1,4 @@ --- -# required metadata - title: Overview and workflow of using NuGet packages | Microsoft Docs author: kraigb ms.author: kraigb @@ -8,24 +6,13 @@ manager: ghogen ms.date: 06/06/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 3c60f920-457d-4f43-9efe-210c514e5242 - -# optional metadata - description: An overview of the process of consuming NuGet packages in a project, with links to other specific parts of the process. keywords: NuGet package consumption, NuGet consumption overview, NuGet consumption workflow, package consumption workflow, package consumption overview -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Package consumption workflow diff --git a/docs/Consume-Packages/Package-restore-troubleshooting.md b/docs/Consume-Packages/Package-restore-troubleshooting.md index afd9fd34a..ad527eb27 100644 --- a/docs/Consume-Packages/Package-restore-troubleshooting.md +++ b/docs/Consume-Packages/Package-restore-troubleshooting.md @@ -1,7 +1,7 @@ --- # required metadata -title: Troubleshooting NuGet Package Restore in Visual STudio | Microsoft Docs +title: Troubleshooting NuGet Package Restore in Visual Studio | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen diff --git a/docs/Guides/Install-NuGet.md b/docs/Guides/Install-NuGet.md index 7914cce73..6c572fe76 100644 --- a/docs/Guides/Install-NuGet.md +++ b/docs/Guides/Install-NuGet.md @@ -33,6 +33,8 @@ There are two primary tools available to help you build, publish and consume NuG With Visual Studio for Mac, NuGet capabilities are built in directly. See [Including a NuGet package in your project](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough) for a walkthrough. + Visual Studio Code at present does not have any built-in NuGet support. Use the NuGet CLI or the [dotnet CLI](../Tools/dotnet-Commands.md). + The NuGet CLI and Package Manager both support the following operations: - Search packages @@ -55,7 +57,6 @@ The following capabilities are supported only in the NuGet CLI: > Another good tool is the [NuGet Package Explorer](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer), an open-source, stand-alone tool to visually explore, create, and edit NuGet packages. It's very helpful, for example, to make experimental changes to a package structure without having to rebuild the package each time. > The cross-platform [.NET Core CLI](https://docs.microsoft.com/dotnet/articles/core/tools/index#installation) toolchain, used for developing .NET Core applications, supports several NuGet commands, such as delete, locals, push, pack, and restore. - ## NuGet CLI The NuGet command-line interface provides access to all NuGet capabilities, and can be run on Windows, Mac OSX, and Linux as described in the following sections. @@ -76,12 +77,12 @@ The NuGet command-line interface provides access to all NuGet capabilities, and ```ps choco install nuget.commandline ``` - + - **Visual Studio**: Install the [NuGet.CommandLine](http://www.nuget.org/packages/NuGet.CommandLine/) package from the Package Manager Console in Visual Studio. > [!Note] > **For NuGet 2.x users**: Because of breaking changes introduced in NuGet 3.2, [https://nuget.org/nuget.exe](https://nuget.org/nuget.exe) points to the latest stable NuGet 2.x release to prevent continuous integration systems from potentially breaking. - + ## Mac OSX and Linux @@ -110,14 +111,12 @@ On Mac OSX and Linux, there are two ways to run the NuGet CLI: - Commands that do not work: - update - ### Related topics - [NuGet CLI reference](../tools/nuget-exe-cli-reference.md) - [Creating a package](../create-packages/creating-a-package.md) - [Publishing a Package](../create-packages/publish-a-package.md) - ## NuGet Package Manager in Visual Studio The NuGet Package Manager is included in every edition of Visual Studio on Windows, 2012 and later. It includes the Package Manager UI ([reference](../tools/package-manager-ui.md)), and the Package Manager Console through which you can access tools that come with certain packages ([reference](../tools/package-manager-console.md)). @@ -127,8 +126,7 @@ The Visual Studio 2017 installer includes the NuGet Package Manager with any wor > [!Note] > The console requires [PowerShell 2.0](http://support.microsoft.com/kb/968929), which will already be installed on Windows 7 or higher and Windows Server 2008 R2 or higher. > -> Package Manager Console commands also work only within Visual Studio on Windows. Use the NuGet CLI outside of that environment, including with Visual Studio for Mac. - +> Package Manager Console commands also work only within Visual Studio on Windows. Use the NuGet CLI outside of that environment, including with Visual Studio for Mac and Visual Studio Code. ### Package Manager installation for Visual Studio 2010 and earlier diff --git a/docs/Quickstart/Use-a-Package.md b/docs/Quickstart/Use-a-Package.md index 58420c22b..3b3163c2b 100644 --- a/docs/Quickstart/Use-a-Package.md +++ b/docs/Quickstart/Use-a-Package.md @@ -1,6 +1,4 @@ --- -# required metadata - title: Introductory Guide to Using NuGet Packages | Microsoft Docs author: kraigb ms.author: kraigb @@ -10,26 +8,16 @@ ms.topic: get-started-article ms.prod: nuget ms.technology: null ms.assetid: f31f8259-20a8-4617-880e-5819299372d2 - -# optional metadata - description: A walkthrough tutorial on the process of installing and using a NuGet package in a project. keywords: install NuGet, NuGet package consumption, installing NuGet packages, NuGet package references, using NuGet packages ms.reviewer: - karann-msft - unniravindranathan - --- # Install and use a package -Installing a package happens in three ways: - -| Method | Description | Reference | -| --- | --- | --- | -| nuget.exe CLI: `nuget install ` | Downloads the package identified by \ and expands its contents into a folder in the current directory. No changes are made to any project files. Dependencies are also downloaded and expanded. | [CLI reference](../tools/nuget-exe-CLI-Reference.md) | -| Package Manager Console (Visual Studio): `Install-Package ` | Downloads and installs the package into the current project, then update the project file to list the package as a dependency. | [Package Manager Console Guide](../tools/Package-Manager-Console.md) | -| Package Manager UI (Visual Studio) | Provides a UI through which you can browse, select, and install packages into a project. Updates the project file to list the package as a dependency. | [Package Manager UI Reference](../tools/Package-Manager-UI.md) | +[!INCLUDE [install-methods](../includes/install-methods.md)] Once installed, refer to the package in code with `using ` where \ is specific to the package you're using. Once the reference is made, you can call the package through its API. diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index ce3a843ee..ae5e2ac2a 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet Restore Errors and Warnings Reference | Microsoft Docs author: kraigb ms.author: kraigb @@ -8,25 +6,16 @@ manager: ghogen ms.date: 8/14/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: b76b8a00-7155-4163-b533-894086d2ef78 # optional metadata - description: Complete reference for warnings and errors issued from NuGet during package restore keywords: NuGet errors, NuGet warnings, diagnostics -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - anangaur - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Errors and warnings @@ -66,7 +55,6 @@ The errors and warnings listed here are available only with [PackageReference-ba | **Common causes** | The project doesn't contain a `TargetFramework` or `TargetFrameworks` property. | | **Example message** | *The project projA does not specify any target frameworks in c:\tmp\projA.csproj* | - ### NU1002 | | | @@ -83,7 +71,6 @@ The errors and warnings listed here are available only with [PackageReference-ba | **Common causes** | Both `PackageTargetFallback` and `AssetTargetFallback` exist in the project. | | **Example message** | *PackageTargetFallback and AssetTargetFallback cannot be used together. Remove PackageTargetFallback(deprecated) references from the project environment.* | - ## Missing package and project errors [NU1100](#nu1100) | [NU1101](#nu1101) | [NU1102](#nu1102) | [NU1103](#nu1103) | [NU1104](#nu1104) | [NU1105](#nu1105) | [NU1106](#nu1106) @@ -96,7 +83,6 @@ The errors and warnings listed here are available only with [PackageReference-ba | **Common causes** | The project contains a dependency on an item that doesn't exist. | | **Example message** | *Unable to resolve System.Missing for net45* | - ### NU1101 | | | @@ -104,6 +90,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | **Issue** | The package cannot be found on any sources. | | **Common causes** | The correct package source is missing or the package identifier is incorrect. | | **Example message** | *Unable to find package System.Missing. No packages exist with this id in source(s): dotnet-core, dotnet-roslyn, NuGet.org* | + ### NU1102 | | | @@ -120,7 +107,6 @@ The errors and warnings listed here are available only with [PackageReference-ba | **Common causes** | The project specified a stable version for the dependency range. Users need to change the version range to include pre-release versions. | | **Example message** | *Unable to find a stable package NuGet.Versioning with version (>= 3.0.0)
    - Found 10 version(s) in dotnet-buildtools [ Nearest version: 4.0.0-rc-2129 ]
    - Found 9 version(s) in NuGetVolatile [ Nearest version: 3.0.0-beta-00032 ]
    - Found 0 version(s) in dotnet-core
    - Found 0 version(s) in dotnet-roslyn* | - ### NU1104 | | | @@ -145,6 +131,22 @@ The errors and warnings listed here are available only with [PackageReference-ba | **Common causes** | Packages contain dependency on exact versions of a package instead of open-ended ranges. | | **Example message** | *Unable to satisfy conflicting requests for {id}: {conflict path} Framework: {target graph}* | +### NU1107 (Previously NU1607) + +| | | +| --- | --- | +| **Issue** | Unable to resolve dependency constraints between packages. | +| **Common causes** | Packages with dependency constraints on exact versions do not allow other packages to increase the version if needed. | +| **Example message** | *Version conflict detected for NuGet.Versioning. Reference the package directly from the project to resolve this issue.
    NuGet.Packaging 3.5.0 -> NuGet.Versioning (= 3.5.0)
    NuGet.Configuration 4.0.0 -> NuGet.Versioning (= 4.0.0)* | + +### NU1108 (Previously NU1606) + +| | | +| --- | --- | +| **Issue** | A circular dependency was detected. | +| **Common causes** | A package is authored incorrectly. | +| **Example message** | *Cycle detected: A -> B -> A* | + ## Compatibility errors [NU1201](#nu1201) | [NU1202](#nu1202) | [NU1203](#nu1203) | [NU1401](#nu1401) @@ -157,7 +159,6 @@ The errors and warnings listed here are available only with [PackageReference-ba | **Common causes** | The project's target framework is a higher version than the consuming project. | | **Example message** | *Project ServerWeb is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Project ServerWeb supports:
    - netstandard1.6 (.NETStandard,Version=v1.6)
    - netcoreapp1.0 (.NETCoreApp,Version=v1.0)* | - ### NU1202 | | | @@ -166,7 +167,6 @@ The errors and warnings listed here are available only with [PackageReference-ba | **Common causes** | The package doesn't support the project's target framework. | | **Example message** | *Package System.ComponentModel.EventBasedAsync 4.0.11 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package System.ComponentModel.EventBasedAsync 4.0.11 supports:
    - monoandroid10 (MonoAndroid,Version=v1.0)
    - monotouch10 (MonoTouch,Version=v1.0)
    - net45 (.NETFramework,Version=v4.5)
    - netcore50 (.NETCore,Version=v5.0)
    - netstandard1.0 (.NETStandard,Version=v1.0)
    - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
    - win8 (Windows,Version=v8.0)
    - wp8 (WindowsPhone,Version=v8.0)
    - wpa81 (WindowsPhoneApp,Version=v8.1)
    - xamarinios10 (Xamarin.iOS,Version=v1.0)
    - xamarinmac20 (Xamarin.Mac,Version=v2.0)
    - xamarintvos10 (Xamarin.TVOS,Version=v1.0)
    - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0)*| - ### NU1203 | | | @@ -257,23 +257,15 @@ The errors and warnings listed here are available only with [PackageReference-ba ## Resolver conflict warnings -[NU1606](#nu1606) | [NU1607](#nu1607) +[NU1608](#nu1608) -### NU1606 +### NU1608 | | | | --- | --- | -| **Issue** | A circular dependency was detected. | -| **Common causes** | A package is authored incorrectly. | -| **Example message** | *Cycle detected: A -> B -> A* | - -### NU1607 - -| | | -| --- | --- | -| **Issue** | Unable to resolve dependency constraints between packages. | -| **Common causes** | Packages with dependency constraints on exact versions do not allow other packages to increase the version if needed. | -| **Example message** | *Version conflict detected for NuGet.Versioning. Reference the package directly from the project to resolve this issue.
    NuGet.Packaging 3.5.0 -> NuGet.Versioning (= 3.5.0)
    NuGet.Configuration 4.0.0 -> NuGet.Versioning (= 4.0.0)* | +| **Issue** | A resolve package is higher than a dependency constraint allows. In some cases this is intentional and the warning can be suppressed. | +| **Common causes** | A package referenced directly by a project will override dependency constraints from other packages. | +| **Example message** | *Detected package version outside of dependency constraint: x 1.0.0 requires y (= 1.0.0) but version y 2.0.0 was resolved.* | ## Package fallback warnings @@ -299,7 +291,6 @@ The errors and warnings listed here are available only with [PackageReference-ba | **Common causes** | The source is invalid. | | **Example message** | n/a | - ## NuGet internal errors and warnings [NU1000](#nu1000) | [NU1500](#nu1500) diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index 24aecf633..9b3dfcf91 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -23,20 +23,22 @@ ms.reviewer: # Package Manager Console -The NuGet Package Manager Console is built into Visual Studio on Windows version 2012 and later. The console lets you use [NuGet PowerShell commands](../tools/powershell-reference.md) to find, install, uninstall, and update NuGet packages. Using the console is necessary in cases where the Package Manager UI does not provide a way to perform an operation. +The NuGet Package Manager Console is built into Visual Studio on Windows version 2012 and later. (It is not included with Visual Studio for Mac or Visual Studio Code.) + +The console lets you use [NuGet PowerShell commands](../tools/powershell-reference.md) to find, install, uninstall, and update NuGet packages. Using the console is necessary in cases where the Package Manager UI does not provide a way to perform an operation. For example, finding and installing a package is done with three easy steps: 1. Open the project/solution in Visual Studio, and open the console using the **Tools > NuGet Package Manager > Package Manager Console** command. -2. Find the package you want to install. If you already know this, skip to step 3. +1. Find the package you want to install. If you already know this, skip to step 3. ```ps # Find packages containing the keyword "elmah" Find-Package elmah - ``` + ``` -3. Run the install command +1. Run the install command: ```ps # Install the Elmah package to the project named MyProject. @@ -64,21 +66,20 @@ In this topic: 1. Open the console in Visual Studio using the **Tools > NuGet Package Manager > Package Manager Console** command. The console is a Visual Studio window that can be arranged and positioned however you like (see [Customize window layouts in Visual Studio](https://docs.microsoft.com/visualstudio/ide/customizing-window-layouts-in-visual-studio)). -2. By default, console commands operate against a specific package source and project as set in the control at the top of the window: +1. By default, console commands operate against a specific package source and project as set in the control at the top of the window: ![Package Manager Console controls for package source and project](media/PackageManagerConsoleControls1.png) -3. Selecting a different package source and/or project changes those defaults for subsequent commands. To overrride these settings without changing the defaults, most commands support `-Source` and `-ProjectName` options. +1. Selecting a different package source and/or project changes those defaults for subsequent commands. To overrride these settings without changing the defaults, most commands support `-Source` and `-ProjectName` options. -4. To manage package sources, select the gear icon. This is a shortcut to the **Tools > Options > NuGet Package Manager > Package Sources** dialog box as described on the [Package Manager UI](Package-Manager-UI.md#package-sources) page. Also, the control to the right of the project selector clears the console's contents: +1. To manage package sources, select the gear icon. This is a shortcut to the **Tools > Options > NuGet Package Manager > Package Sources** dialog box as described on the [Package Manager UI](Package-Manager-UI.md#package-sources) page. Also, the control to the right of the project selector clears the console's contents: ![Package Manager Console settings and clear controls](media/PackageManagerConsoleControls2.png) -5. The rightmost button interrupts a long-running command. For example, running `Get-Package -ListAvailable -PageSize 500` lists the top 500 packages on the default source (such as nuget.org), which could take several minutes to run. +1. The rightmost button interrupts a long-running command. For example, running `Get-Package -ListAvailable -PageSize 500` lists the top 500 packages on the default source (such as nuget.org), which could take several minutes to run. ![Package Manager Console stop control](media/PackageManagerConsoleControls3.png) - ## Installing a package ```ps @@ -166,7 +167,6 @@ Find-Package jquery -AllVersions -ExactMatch See [Find-Package](../tools/ps-ref-find-package.md). In Visual Studio 2013 and earlier, use [Get-Package](../tools/ps-ref-get-package.md) instead. - ## Availability of the console In Visual Studio 2017, NuGet and the NuGet Package Manager are automatically installed when you select any .NET-related workloads; you can also install it individually by checking the **Individual components > Code tools > NuGet package manager** option in the Visual Studio 2017 installer. @@ -175,6 +175,7 @@ Also, if you're missing the NuGet Package Manager in Visual Studio 2015 and earl The Package Manager Console is not presently available with Visual Studio for Mac. The equivalent commands, however, are available through the [NuGet CLI](nuget-exe-CLI-reference.md). Visual Studio for Mac does have a UI for managing NuGet packages. See [Including a NuGet package in your project](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough). +The Package Manager Console is not included with Visual Studio Code. ## Extending the Package Manager Console @@ -182,7 +183,6 @@ Some packages install new commands for the console. For example, `MvcScaffolding ![Installing and using MvcScaffold](media/PackageManagerConsoleInstall.png) - ## Setting up a NuGet PowerShell Profile A PowerShell profile lets you make commonly-used commands available wherever you use PowerShell. NuGet supports a NuGet-specific profile typically found at the following location: @@ -193,7 +193,7 @@ A PowerShell profile lets you make commonly-used commands available wherever you To find the profile, type `$profile` in the console: -```ps +```ps $profile C:\Users\\Documents\WindowsPowerShell\NuGet_profile.ps1 ``` diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index 9ff35b925..569e92c9d 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -28,7 +28,7 @@ ms.reviewer: # NuGet Package Manager UI -The NuGet Package Manager UI in Visual Studio on Windows allows you to easily install, uninstall, and update NuGet packages in projects and solutions. For the experience in Visual Studio for Mac, see [Including a NuGet package in your project](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough). +The NuGet Package Manager UI in Visual Studio on Windows allows you to easily install, uninstall, and update NuGet packages in projects and solutions. For the experience in Visual Studio for Mac, see [Including a NuGet package in your project](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough). The Package Manager UI is not included with Visual Studio Code. In this topic: @@ -44,49 +44,47 @@ In this topic: > > In Visual Studio 2017, NuGet and the NuGet Package Manager are automatically installed with any .NET-related workloads. Install it individuall by selecting the **Individual components > Code tools > NuGet package manager** option in the Visual Studio 2017 installer. - ## Finding and installing a package 1. In **Solution Explorer**, right-click either **References** or a project and select **Manage NuGet Packages...**. ![Manage NuGet Packages menu option](media/ManagePackagesUICommand.png) -2. The **Browse** tab displays packages by popularity from the currently selected source (see [package sources](#package-sources)). Search for a specific package using the search box on the upper left. Select a package from the list to display its information, which also enables the **Install** button along with a version-selection drop-down. +1. The **Browse** tab displays packages by popularity from the currently selected source (see [package sources](#package-sources)). Search for a specific package using the search box on the upper left. Select a package from the list to display its information, which also enables the **Install** button along with a version-selection drop-down. ![Manage NuGet Packages Dialog Browse tab](media/Search.png) - -4. Select the desired version from the drop-down and select **Install**. Visual Studio installs the package and its dependencies into the project. You may be asked to accept license terms. When installation is complete, the added packages appear on the **Installed** tab. Packages are also listed in the **References** node of Solution Explorer, indicating that you can refer to them in the project with `using` statements. + +1. Select the desired version from the drop-down and select **Install**. Visual Studio installs the package and its dependencies into the project. You may be asked to accept license terms. When installation is complete, the added packages appear on the **Installed** tab. Packages are also listed in the **References** node of Solution Explorer, indicating that you can refer to them in the project with `using` statements. ![References in Solution Explorer](media/References.png) > [!Tip] > To include prerelease versions in the search, and to make prerelease versions available in the version drop-down, select the **Include prerelease** option. - ## Uninstalling a package 1. In **Solution Explorer**, right-click either **References** or the desired project, and select **Manage NuGet Packages...**. -2. Select the **Installed** tab. -3. Select the package to uninstall (using search to filter the list if necessary) and select **Uninstall**. +1. Select the **Installed** tab. +1. Select the package to uninstall (using search to filter the list if necessary) and select **Uninstall**. ![Uninstalling a package](media/UninstallPackage.png) -4. Note that the **Include preprelease** and **Package source** controls have no effect when uninstalling packages. - +1. Note that the **Include preprelease** and **Package source** controls have no effect when uninstalling packages. + ## Updating a package 1. In **Solution Explorer**, right-click either **References** or the desired project, and select **Manage NuGet Packages...**. (In web site projects, right-click the **Bin** folder.) -2. Select the **Updates** tab to see packages that have available updates from the selected package sources. Select **Include prerelease** to include prerelease packages in the update list. -3. Select the package to update, select the desired version from the drop-down on the right, and select **Update**. +1. Select the **Updates** tab to see packages that have available updates from the selected package sources. Select **Include prerelease** to include prerelease packages in the update list. +1. Select the package to update, select the desired version from the drop-down on the right, and select **Update**. ![Updating a package](media/UpdatePackages.png) -4. For some packages, the **Update** button is disabled and a message appears saying that it's "Implicitly referenced by an SDK" (or "AutoReferenced"). The message indicates that the package, such as Microsoft.NETCore.App or Microsoft.NETStandard.Library, is part of a larger framework or SDK and should not be updated independently. (Such packagee are internally marked with `True`.) To update the package, update the SDK to which it belongs. +1. For some packages, the **Update** button is disabled and a message appears saying that it's "Implicitly referenced by an SDK" (or "AutoReferenced"). The message indicates that the package, such as Microsoft.NETCore.App or Microsoft.NETStandard.Library, is part of a larger framework or SDK and should not be updated independently. (Such packagee are internally marked with `True`.) To update the package, update the SDK to which it belongs. ![Example package marked as Implicitly references or AutoReferenced](media/PackageManagerUIAutoReferenced.png) -5. To update multiple packages to their newest versions, select them in the list and select the **Update** button above the list. -6. You can also update an individual package from the **Installed** tab. In this case, the details for the package include a version selector (subject to the **Include prerelease** option) and an **Update** button. +1. To update multiple packages to their newest versions, select them in the list and select the **Update** button above the list. +1. You can also update an individual package from the **Installed** tab. In this case, the details for the package include a version selector (subject to the **Include prerelease** option) and an **Update** button. ## Managing packages for the solution @@ -96,7 +94,7 @@ Managing packages for a solution is a convenient means to work with multiple pro ![Manage NuGet packages for the solution](media/ManagePackagesSolutionUICommand.png) -2. When managing packages for the solution, the UI lets you select the projects that are affected by the operations: +1. When managing packages for the solution, the UI lets you select the projects that are affected by the operations: ![Project selector when managing packages for the solution](media/SolutionPackagesUI.png) @@ -112,15 +110,15 @@ To manage package sources: ![Package manager UI settings icon](media/PackageSourceSettings.png) -2. Select the **Package Sources** node: +1. Select the **Package Sources** node: ![Package Sources options](media/options.png) -3. To add a source, select **+**, edit the name, enter the URL or path in the **Source** control, and select **Update**. The source now appears in the selector drop-down. -4. To change a package source, select it, make edits in the **Name** and **Source** boxes, and select **Update**. -5. To disable a package source, clear the box to the left of the name in the list. -6. To remove a package source, select it and then select the **X** button. -7. Use the up and down arrow buttons to change the priority order of the package sources. Visual Studio searches these sources in the priority order when restoring packages for a project. For more information, see [Package restore](../Consume-Packages/Package-Restore.md). +1. To add a source, select **+**, edit the name, enter the URL or path in the **Source** control, and select **Update**. The source now appears in the selector drop-down. +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. +1. Use the up and down arrow buttons to change the priority order of the package sources. Visual Studio searches these sources in the priority order when restoring packages for a project. For more information, see [Package restore](../Consume-Packages/Package-Restore.md). > [!Tip] > If a package source reappears after deleting it, it may be listed in a computer-level or user-level `NuGet.Config` files. See [Configuring NuGet behavior](../Consume-Packages/Configuring-NuGet-Behavior.md) for the location of these files, then remove the source by editing the files manually or using the [nuget sources command](../tools/nuget-exe-CLI-reference.md). diff --git a/docs/includes/install-methods.md b/docs/includes/install-methods.md new file mode 100644 index 000000000..8a49f6477 --- /dev/null +++ b/docs/includes/install-methods.md @@ -0,0 +1,7 @@ +Installing a package happens in three ways: + +| Method | Description | Reference | +| --- | --- | --- | +| nuget.exe CLI: `nuget install ` | Downloads the package identified by \ and expands its contents into a folder in the current directory. If no packages are specified, installs all packages listed in the project's `packages.config` file. No changes are made to any project files. Dependencies are also downloaded and expanded. | [CLI reference](../tools/nuget-exe-CLI-Reference.md) | +| Package Manager Console (Visual Studio): `Install-Package ` | Downloads and installs the package into the current project, then update the project file to list the package as a dependency. | [Package Manager Console Guide](../tools/Package-Manager-Console.md) | +| Package Manager UI (Visual Studio) | Provides a UI through which you can browse, select, and install packages into a project. Updates the project file to list the package as a dependency. | [Package Manager UI Reference](../tools/Package-Manager-UI.md) | \ No newline at end of file From 61216fa933ac9268a3aaef0b169c93c7d08d2e1c Mon Sep 17 00:00:00 2001 From: karann-msft Date: Wed, 6 Dec 2017 22:08:49 +0000 Subject: [PATCH 0391/2943] Initialize open publishing repository: https://github.com/NuGet/docs.microsoft.com-nuget of branch live --- .openpublishing.publish.config.json | 18 +++++++++++++----- LICENSE-CODE | 17 +++++++++++++++++ ThirdPartyNotices | 15 +++++++++++++++ 3 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 LICENSE-CODE create mode 100644 ThirdPartyNotices diff --git a/.openpublishing.publish.config.json b/.openpublishing.publish.config.json index 49ddd1d3f..a0ea0b7eb 100644 --- a/.openpublishing.publish.config.json +++ b/.openpublishing.publish.config.json @@ -1,14 +1,11 @@ { "build_entry_point": "docs", - "need_generate_pdf": false, - "need_generate_intellisense": false, "docsets_to_publish": [ { "docset_name": "Nuget_concept", "build_source_folder": "docs", "build_output_subfolder": "nuget", "locale": "en-us", - "version": 0, "open_to_public_contributors": true, "type_mapping": { "Conceptual": "Content", @@ -16,12 +13,14 @@ "RestApi": "Content" }, "build_entry_point": "docs", - "template_folder": "_themes" + "template_folder": "_themes", + "version": 0 } ], "notification_subscribers": [], "branches_to_filter": [], "skip_source_output_uploading": false, + "contribution_branch_mappings": {}, "dependent_repositories": [ { "path_to_root": "_themes", @@ -29,5 +28,14 @@ "branch": "master", "branch_mapping": {} } - ] + ], + "branch_target_mapping": { + "live": [ + "Publish", + "Pdf" + ] + }, + "need_generate_pdf_url_template": true, + "need_generate_pdf": false, + "need_generate_intellisense": false } \ No newline at end of file diff --git a/LICENSE-CODE b/LICENSE-CODE new file mode 100644 index 000000000..b17b032a4 --- /dev/null +++ b/LICENSE-CODE @@ -0,0 +1,17 @@ +The MIT License (MIT) +Copyright (c) Microsoft Corporation + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT +NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/ThirdPartyNotices b/ThirdPartyNotices new file mode 100644 index 000000000..a0bd09d68 --- /dev/null +++ b/ThirdPartyNotices @@ -0,0 +1,15 @@ +##Legal Notices +Microsoft and any contributors grant you a license to the Microsoft documentation and other content +in this repository under the [Creative Commons Attribution 4.0 International Public License](https://creativecommons.org/licenses/by/4.0/legalcode), +see the [LICENSE](LICENSE) file, and grant you a license to any code in the repository under the [MIT License](https://opensource.org/licenses/MIT), see the +[LICENSE-CODE](LICENSE-CODE) file. + +Microsoft, Windows, Microsoft Azure and/or other Microsoft products and services referenced in the documentation +may be either trademarks or registered trademarks of Microsoft in the United States and/or other countries. +The licenses for this project do not grant you rights to use any Microsoft names, logos, or trademarks. +Microsoft's general trademark guidelines can be found at http://go.microsoft.com/fwlink/?LinkID=254653. + +Privacy information can be found at https://privacy.microsoft.com/en-us/ + +Microsoft and any contributors reserve all others rights, whether under their respective copyrights, patents, +or trademarks, whether by implication, estoppel or otherwise. \ No newline at end of file From 12ff86a12826f495a38ff2b12f9335af540d23d8 Mon Sep 17 00:00:00 2001 From: karann-msft Date: Wed, 6 Dec 2017 22:08:49 +0000 Subject: [PATCH 0392/2943] Initialize open publishing repository: https://github.com/NuGet/docs.microsoft.com-nuget of branch master --- .openpublishing.publish.config.json | 18 +++++++++++++----- LICENSE-CODE | 17 +++++++++++++++++ ThirdPartyNotices | 15 +++++++++++++++ 3 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 LICENSE-CODE create mode 100644 ThirdPartyNotices diff --git a/.openpublishing.publish.config.json b/.openpublishing.publish.config.json index 49ddd1d3f..a0ea0b7eb 100644 --- a/.openpublishing.publish.config.json +++ b/.openpublishing.publish.config.json @@ -1,14 +1,11 @@ { "build_entry_point": "docs", - "need_generate_pdf": false, - "need_generate_intellisense": false, "docsets_to_publish": [ { "docset_name": "Nuget_concept", "build_source_folder": "docs", "build_output_subfolder": "nuget", "locale": "en-us", - "version": 0, "open_to_public_contributors": true, "type_mapping": { "Conceptual": "Content", @@ -16,12 +13,14 @@ "RestApi": "Content" }, "build_entry_point": "docs", - "template_folder": "_themes" + "template_folder": "_themes", + "version": 0 } ], "notification_subscribers": [], "branches_to_filter": [], "skip_source_output_uploading": false, + "contribution_branch_mappings": {}, "dependent_repositories": [ { "path_to_root": "_themes", @@ -29,5 +28,14 @@ "branch": "master", "branch_mapping": {} } - ] + ], + "branch_target_mapping": { + "live": [ + "Publish", + "Pdf" + ] + }, + "need_generate_pdf_url_template": true, + "need_generate_pdf": false, + "need_generate_intellisense": false } \ No newline at end of file diff --git a/LICENSE-CODE b/LICENSE-CODE new file mode 100644 index 000000000..b17b032a4 --- /dev/null +++ b/LICENSE-CODE @@ -0,0 +1,17 @@ +The MIT License (MIT) +Copyright (c) Microsoft Corporation + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT +NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/ThirdPartyNotices b/ThirdPartyNotices new file mode 100644 index 000000000..a0bd09d68 --- /dev/null +++ b/ThirdPartyNotices @@ -0,0 +1,15 @@ +##Legal Notices +Microsoft and any contributors grant you a license to the Microsoft documentation and other content +in this repository under the [Creative Commons Attribution 4.0 International Public License](https://creativecommons.org/licenses/by/4.0/legalcode), +see the [LICENSE](LICENSE) file, and grant you a license to any code in the repository under the [MIT License](https://opensource.org/licenses/MIT), see the +[LICENSE-CODE](LICENSE-CODE) file. + +Microsoft, Windows, Microsoft Azure and/or other Microsoft products and services referenced in the documentation +may be either trademarks or registered trademarks of Microsoft in the United States and/or other countries. +The licenses for this project do not grant you rights to use any Microsoft names, logos, or trademarks. +Microsoft's general trademark guidelines can be found at http://go.microsoft.com/fwlink/?LinkID=254653. + +Privacy information can be found at https://privacy.microsoft.com/en-us/ + +Microsoft and any contributors reserve all others rights, whether under their respective copyrights, patents, +or trademarks, whether by implication, estoppel or otherwise. \ No newline at end of file From 78fcd78ce9ed0151aafd2f80c6b20417e4fc5e8f Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Thu, 7 Dec 2017 10:44:14 -0800 Subject: [PATCH 0393/2943] Update NuGet-4.5-RTM.md --- docs/Release-Notes/NuGet-4.5-RTM.md | 144 +--------------------------- 1 file changed, 2 insertions(+), 142 deletions(-) diff --git a/docs/Release-Notes/NuGet-4.5-RTM.md b/docs/Release-Notes/NuGet-4.5-RTM.md index 0f3e1948b..cf0c253dd 100644 --- a/docs/Release-Notes/NuGet-4.5-RTM.md +++ b/docs/Release-Notes/NuGet-4.5-RTM.md @@ -39,190 +39,50 @@ ms.reviewer: .NET Standard & its tooling was designed such that projects targeting .NET Framework 4.6.1 can consume NuGet packages & projects targeting .NET Standard 2.0 or earlier. [This document](https://github.com/dotnet/standard/issues/481) summarizes the issues around that scenario, the plan for addressing them, and workarounds you can deploy with today's state of the tooling. ### You will be unable to view, add, or update DotNetCLITools, using Nuget Package Manager - #### Issue: NuGet Package Manager does not display and does not allow add/update of DotNetCLITools. [NuGet#4256](https://github.com/NuGet/Home/issues/4256) - #### Workaround: DotNetCLIToolReferences must be manually edited in your project file. ### Retargeting target framework version may lead to incomplete Intellisense - #### Issue: Retargeting target framework version may lead to incomplete Intellisense, in Visual Studio. This happens when you are using PackageReferences as the package manager format. [NuGet#4216](https://github.com/NuGet/Home/issues/4216) - #### Workaround: Do a manual restore. - ### A package in a .NET Core project that contains an assembly with an invalid signature, can trigger an infinite restore loop - #### Issue: Occasionally, when you use a package that contains an assembly with an invalid signature or when the package version is set with 'DateTime' ticker, it causes the package auto-restore to run in an infinite loop [dotnet/project-system#1457](https://github.com/dotnet/project-system/issues/1457). - #### Workaround: There is no workaround at this time. - ## Issues fixed in NuGet 4.5 RTM timeframe For issues fixed in NuGet 4.4 RTM, please refer to [NuGet 4.4 RTM Release Notes](../release-notes/nuget-4.4-RTM.md) -**Feature:** +### Feature: * Disable auto-push of symbols package - [#6113](https://github.com/NuGet/Home/issues/6113) -* Add Support: Enable installing Full .Net Framework from within netstandad 2 ,netcore 2 library project by option - [#5977](https://github.com/NuGet/Home/issues/5977) - -* nuget spec doesn't detect csproj dependencies - [#5833](https://github.com/NuGet/Home/issues/5833) - -* RS3 – UWP should work with NET Standard 2.0 using PackageTargetFallback - [#4957](https://github.com/NuGet/Home/issues/4957) - -* Deprecation and Security warnings in NuGet.exe/Visual Studio and NuGet.org - [#4731](https://github.com/NuGet/Home/issues/4731) - -* Automate offer suggestions for NuGet packages - [#3634](https://github.com/NuGet/Home/issues/3634) - -* Add end to end tests for MSBuild targets - [#3605](https://github.com/NuGet/Home/issues/3605) - -* on does not work - [#3568](https://github.com/NuGet/Home/issues/3568) - -* Adding static analysis tooling to help prevent semantic versioning breaks. - [#2195](https://github.com/NuGet/Home/issues/2195) - -* Feature Discussion: Add --interactive flag to command-line - [#2055](https://github.com/NuGet/Home/issues/2055) - - -**DCR:** - -* enable restore to share obj directory between projects - [#4154](https://github.com/NuGet/Home/issues/4154) - -* Adapt Pack for Transitive Project References change - [#4077](https://github.com/NuGet/Home/issues/4077) - -* Restore fails with custom framework names - [#4056](https://github.com/NuGet/Home/issues/4056) - -* Restore, http cache and failed packages - [#4055](https://github.com/NuGet/Home/issues/4055) - -* Investigate the usage of Managed C++ projects - [#2090](https://github.com/NuGet/Home/issues/2090) - -* Determine a shared v2 and v3 MachineCache location - [#2088](https://github.com/NuGet/Home/issues/2088) - -* IVsPackageRestorer API does not support UWP projects - [#2066](https://github.com/NuGet/Home/issues/2066) - -* Add useragent to the ILogger context - [#2028](https://github.com/NuGet/Home/issues/2028) - - -**Bug:** - -* Package Manager Console (PMC): Sorting in "default project" combobox changes after selection - [#6194](https://github.com/NuGet/Home/issues/6194) +### Bug: * [Regression] in 15.5p1: Portable0.0 is skipped - [#6105](https://github.com/NuGet/Home/issues/6105) - * Assets from packages are missing after restore - [#5995](https://github.com/NuGet/Home/issues/5995) - * Plugin credential providers do not work with URIs containing spaces - [#5982](https://github.com/NuGet/Home/issues/5982) - -* NuGet support for source build of NetCore - [#5903](https://github.com/NuGet/Home/issues/5903) - -* nuget.exe list PackageName -IncludeDelisted doesn't show unlisted package - [#5896](https://github.com/NuGet/Home/issues/5896) - -* Visual Studio 2017 failing to install nuget package in .NET 4.7 project (path too long) - [#5835](https://github.com/NuGet/Home/issues/5835) - -* NuGet UI in VS displays the wrong available versions of nuget packages. - [#5738](https://github.com/NuGet/Home/issues/5738) - * If package failed to restore, error should be printed i the output even with Minimal verbosity ON - [#5658](https://github.com/NuGet/Home/issues/5658) - * dotnet restore at solution-level doesn't follow ProjectReference with ReferenceOutputAssembly of false leading to random build failures - [#5490](https://github.com/NuGet/Home/issues/5490) - -* Avoid user specific data from nuget props/targets files - [#4929](https://github.com/NuGet/Home/issues/4929) - -* linux subsystem (bash) windows 10 - fails to communicate network - [#4844](https://github.com/NuGet/Home/issues/4844) - * Auto-complete in PMC works incorrectly with object methods - [#4800](https://github.com/NuGet/Home/issues/4800) - -* Unable to nuget.exe delete on a prerelease build - [#4746](https://github.com/NuGet/Home/issues/4746) - -* Migrated project shows warning when packed. - [#4718](https://github.com/NuGet/Home/issues/4718) - * nuget.exe restore fails with Visual Studio 2015 toolset - [#4713](https://github.com/NuGet/Home/issues/4713) - -* Visual Studio package manager not updated when NuGet.config is edited - [#4285](https://github.com/NuGet/Home/issues/4285) - -* update packages on .net core projects not working - [#4278](https://github.com/NuGet/Home/issues/4278) - * perf - pmc is expensive to instantiate in vs2017 - [#4205](https://github.com/NuGet/Home/issues/4205) - -* Latest NuGet PACK yields PREVIOUS version AssemblyVersionAttribute values - [#4149](https://github.com/NuGet/Home/issues/4149) - -* VSFeedback: Update of Microsoft.Owin.Security.Cookies took long time - [#4111](https://github.com/NuGet/Home/issues/4111) - * Slow to get dependency information on slow connection - [#4089](https://github.com/NuGet/Home/issues/4089) - -* Feature Request: Enhance support for Management Pack projects (mpproj) - [#4068](https://github.com/NuGet/Home/issues/4068) - * uninstall-package w/ -RemoveDependencies will fail if multiple packages share a common dependency - [#4026](https://github.com/NuGet/Home/issues/4026) - -* Error in Nuget restore command - nuget 2.8.6 - [#4010](https://github.com/NuGet/Home/issues/4010) - -* Can't enable package source from local config if that source is disabled in global config. - [#3608](https://github.com/NuGet/Home/issues/3608) - -* Move NuGet.targets to contentFiles in NuGet.Build.Tasks - [#3603](https://github.com/NuGet/Home/issues/3603) - -* Version conflicts can occur when a project is used instead of a package - [#3602](https://github.com/NuGet/Home/issues/3602) - -* Remove noninteractive option from nuget.exe pack command - [#3598](https://github.com/NuGet/Home/issues/3598) - -* Logging of nuget.exe push does not agree with source parameter - [#3597](https://github.com/NuGet/Home/issues/3597) - -* Consider: nuget locals should still support nuget.exe locals -clear packages-cache - [#3591](https://github.com/NuGet/Home/issues/3591) - * Finalize NuGet.Core.nupkg for publishing - [#3581](https://github.com/NuGet/Home/issues/3581) - * NuGet pack resolves dependency ID from directory name when -IncludeProjectReferences is used for csproj + project.json - [#3566](https://github.com/NuGet/Home/issues/3566) - -* Unable to write any unit test because of Nuget - [#3254](https://github.com/NuGet/Home/issues/3254) - * The type initializer for 'NuGet.ProxyCache' threw an exception - [#3144](https://github.com/NuGet/Home/issues/3144) - * nuget restore performance issue with kudu - [#3087](https://github.com/NuGet/Home/issues/3087) - -* VS2015 freezes on startup loading Nuget Packages - [#2175](https://github.com/NuGet/Home/issues/2175) - * UI Client fails to show any error or warning when search is ahead of registration blobs - [#2149](https://github.com/NuGet/Home/issues/2149) - -* Restore summary has incorrect "packages installed" output - [#2139](https://github.com/NuGet/Home/issues/2139) - * Get-Packages -Updates generates an incorrect query - [#2135](https://github.com/NuGet/Home/issues/2135) -* NuGet 3 dependency resolution model breaks the ability to use Debug builds - [#2120](https://github.com/NuGet/Home/issues/2120) - -* Dependency version resolution appears broken - [#2118](https://github.com/NuGet/Home/issues/2118) - -* Inconsistent Behavior in Packages View in Package Manager UI - [#2111](https://github.com/NuGet/Home/issues/2111) - -* Uninstall packages tries to install old version first - [#2050](https://github.com/NuGet/Home/issues/2050) - -* Managa Packages for Solution UX in VS 2015 - [#2030](https://github.com/NuGet/Home/issues/2030) - -* Unhelpful error message - [#2027](https://github.com/NuGet/Home/issues/2027) - -* nuget.commandline 3.3.0 -Source not adhering to source - [#2018](https://github.com/NuGet/Home/issues/2018) - -* nuget.exe update -Id not working when project has not restored packages ? - [#2013](https://github.com/NuGet/Home/issues/2013) - -* Packages with deep content get partially unpacked and an incorrect error result of "Package Not Found" - [#1727](https://github.com/NuGet/Home/issues/1727) - - -**Docs:** - -* We need docs for AssetTargetFallback, both generally and migrating from PackageTargetFallback . - [#5998](https://github.com/NuGet/Home/issues/5998) - -* No documentation? - [#4890](https://github.com/NuGet/Home/issues/4890) - -* Project style dialog should not apply to templates - [#4748](https://github.com/NuGet/Home/issues/4748) - -* Project.json docs page contains link-to-self for Dependency Resolution. - [#4107](https://github.com/NuGet/Home/issues/4107) - -* NuGet docs do not specify behavior for ./tools or install.ps1 args - [#3656](https://github.com/NuGet/Home/issues/3656) - ## Link to GitHub issues fixed in 4.5 RTM From 8b83f707b94dc12abb0c0b3fbc8df955075ce57f Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Thu, 7 Dec 2017 10:49:02 -0800 Subject: [PATCH 0394/2943] Update NuGet-4.5-RTM.md --- docs/Release-Notes/NuGet-4.5-RTM.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/Release-Notes/NuGet-4.5-RTM.md b/docs/Release-Notes/NuGet-4.5-RTM.md index cf0c253dd..98fa5d606 100644 --- a/docs/Release-Notes/NuGet-4.5-RTM.md +++ b/docs/Release-Notes/NuGet-4.5-RTM.md @@ -57,15 +57,12 @@ Occasionally, when you use a package that contains an assembly with an invalid s There is no workaround at this time. ## Issues fixed in NuGet 4.5 RTM timeframe - For issues fixed in NuGet 4.4 RTM, please refer to [NuGet 4.4 RTM Release Notes](../release-notes/nuget-4.4-RTM.md) ### Feature: - * Disable auto-push of symbols package - [#6113](https://github.com/NuGet/Home/issues/6113) ### Bug: - * [Regression] in 15.5p1: Portable0.0 is skipped - [#6105](https://github.com/NuGet/Home/issues/6105) * Assets from packages are missing after restore - [#5995](https://github.com/NuGet/Home/issues/5995) * Plugin credential providers do not work with URIs containing spaces - [#5982](https://github.com/NuGet/Home/issues/5982) From 3121766c05220e3fe3e0d9976427182fd00ee93e Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Thu, 7 Dec 2017 10:58:06 -0800 Subject: [PATCH 0395/2943] Update TOC.md --- docs/TOC.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/TOC.md b/docs/TOC.md index 68ebbcd4d..63ae7d37f 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -108,6 +108,7 @@ # [GitHub Repositories](https://github.com/NuGet) # Release Notes ## [Known Issues](Release-Notes/Known-Issues.md) +## [NuGet 4.5 RTM](Release-Notes/NuGet-4.5-RTM.md) ## [NuGet 4.4 RTM](Release-Notes/NuGet-4.4-RTM.md) ## [NuGet 4.3 RTM](Release-Notes/NuGet-4.3-RTM.md) ## [NuGet 4.0 RTM](Release-Notes/NuGet-4.0-RTM.md) From 28f335fc5d21be5449ac1c3de3ac5c10f19757f5 Mon Sep 17 00:00:00 2001 From: Den Delimarsky Date: Thu, 7 Dec 2017 11:11:42 -0800 Subject: [PATCH 0396/2943] Update .openpublishing.publish.config.json --- .openpublishing.publish.config.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.openpublishing.publish.config.json b/.openpublishing.publish.config.json index a0ea0b7eb..d2b3a88fe 100644 --- a/.openpublishing.publish.config.json +++ b/.openpublishing.publish.config.json @@ -27,8 +27,18 @@ "url": "https://github.com/Microsoft/templates.docs.msft", "branch": "master", "branch_mapping": {} + }, + { + "path_to_root": "_themes.pdf", + "url": "https://github.com/Microsoft/templates.docs.msft.pdf", + "branch": "master" } ], + "Targets": { + "Pdf": { + "template_folder": "_themes.pdf" + } + }, "branch_target_mapping": { "live": [ "Publish", @@ -38,4 +48,4 @@ "need_generate_pdf_url_template": true, "need_generate_pdf": false, "need_generate_intellisense": false -} \ No newline at end of file +} From dbe6cb1899871a305e9e2c528ad299f00550ec09 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 7 Dec 2017 11:46:42 -0800 Subject: [PATCH 0397/2943] Update .openpublishing.publish.config.json --- .openpublishing.publish.config.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.openpublishing.publish.config.json b/.openpublishing.publish.config.json index e67571464..8fb6cc1c8 100644 --- a/.openpublishing.publish.config.json +++ b/.openpublishing.publish.config.json @@ -34,9 +34,15 @@ "branch": "master" } ], + "branch_target_mapping": { + "live": [ + "Publish", + "Pdf" + ] + }, "Targets": { "Pdf": { "template_folder": "_themes.pdf" } }, -} \ No newline at end of file +} From ead003beba2c0c65fd6b8643f864fba115d57ff0 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 7 Dec 2017 14:42:24 -0800 Subject: [PATCH 0398/2943] Edits from verbatims and comments --- .../Finding-and-Choosing-Packages.md | 93 +++++++++--------- .../Reinstalling-and-Updating-Packages.md | 13 +-- .../media/Finding-01-Popularity.png | Bin 48699 -> 48129 bytes .../media/Finding-02-SearchResults.png | Bin 44894 -> 41923 bytes .../media/Finding-03-Downloads.png | Bin 5074 -> 6452 bytes .../media/Finding-04-VersionHistory.png | Bin 11189 -> 11507 bytes .../media/Finding-06-include-prerelease.png | Bin 0 -> 45205 bytes docs/Hosting-Packages/Local-Feeds.md | 33 +++---- docs/Hosting-Packages/NuGet-Server.md | 16 +-- docs/Policies/NuGet-FAQ.md | 45 +++++---- docs/Tools/cli-ref-install.md | 9 +- docs/Tools/cli-ref-update.md | 10 +- docs/Tools/ps-ref-add-bindingredirect.md | 27 ++--- docs/Tools/ps-ref-find-package.md | 16 +-- docs/Tools/ps-ref-get-package.md | 19 +--- docs/Tools/ps-ref-get-project.md | 17 +--- docs/Tools/ps-ref-install-package.md | 17 +--- docs/Tools/ps-ref-open-packagepage.md | 21 +--- docs/Tools/ps-ref-register-tabexpansion.md | 19 +--- docs/Tools/ps-ref-sync-package.md | 19 +--- docs/Tools/ps-ref-uninstall-package.md | 17 +--- docs/Tools/ps-ref-update-package.md | 12 +-- 22 files changed, 127 insertions(+), 276 deletions(-) create mode 100644 docs/Consume-Packages/media/Finding-06-include-prerelease.png diff --git a/docs/Consume-Packages/Finding-and-Choosing-Packages.md b/docs/Consume-Packages/Finding-and-Choosing-Packages.md index d77032628..4325f1e1a 100644 --- a/docs/Consume-Packages/Finding-and-Choosing-Packages.md +++ b/docs/Consume-Packages/Finding-and-Choosing-Packages.md @@ -1,30 +1,18 @@ --- -# required metadata - title: Finding and choosing NuGet Packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 8/25/2017 +ms.date: 12/07/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 8886f899-797b-4704-9d16-820b55b71186 - -# optional metadata - description: An overview of how to find and choose the best NuGet packages for a project including details on the NuGet search syntax. keywords: NuGet package consumption, NuGet package discovery, best NuGet packages, deciding on packages, consuming packages, evaluating package, NuGet search syntax -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- @@ -44,6 +32,8 @@ When you visit nuget.org or open the Package Manager UI in Visual Studio, you'll ![Default view of nuget.org/packages showing the most popular packages](media/Finding-01-Popularity.png) +Notice the **Include prerelease** option on the upper right of the page. When selected, nuget.org shows all versions of packages including beta and other early releases. To show only stable released, clear the option. + For specific needs, searching by tags (within Visual Studio's Package Manager or on a portal like nuget.org) is the most common means of discovering a suitable package. For example, searching on "json" lists all NuGet packages that are tagged with that keyword and thus have some relationship to the JSON data format. ![Search results for 'json' on nuget.org](media/Finding-02-SearchResults.png) @@ -56,61 +46,68 @@ At this time, search results are sorted only by relevance, so you generally want NuGet installs a package into a project only if that package's supported frameworks include the project's target framework. (See [Supporting multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) for how this is done when creating a package.) If the package is not compatible, NuGet issues an error. -Some packages list their supported frameworks directly in the nuget.org gallery, but because such data is not required, many packages do not include that list. Therefore the primary way to check whether a target framework is supported is to attempt to install the package into a project. Using `Install-Package` in the NuGet Package Manager Console is the best method for this, as it shows you the most information if the package is incompatible, including its list of supported frameworks. +Some packages list their supported frameworks directly in the nuget.org gallery, but because such data is not required, many packages do not include that list. At present there is no means to search nuget.org for packages that support a specific target framework (the feature is under consideration, see [NuGet Issue 2936](https://github.com/NuGet/NuGetGallery/issues/2936)). -At present there is no means to search nuget.org for packages that support a specific target framework, but the feature is under consideration; see [NuGet Issue 2936](https://github.com/NuGet/NuGetGallery/issues/2936). +Fortunately, you can determine supported frameworks through two other means: + +1. Attempt to install a package into a project using the [`Install-Package`](../tools/ps-ref-install-package.md) command in the NuGet Package Manager Console. If the package is incompatible, this command shows you the package's supported frameworks. + +1. Download the package from its page on nuget.org using the **Manual download** link under **Info**. Change the extension from `.nupkg` to `.zip`, and open the file to examine the content of its `lib` folder. There you'll see subfolders for each of the supported frameworks, where each subfolder is named with a target framework moniker (TFM; see [Target Frameworks](../schema/Target-Frameworks.md)). If you see no subfolders under `lib` and only a single DLL, then you must attempt to install the package in your project to discover its compatibility. ## Pre-release packages -By default, NuGet does not include pre-release versions when working with packages, but you can change this behavior as follows: +Many package authors make preview and beta releases available as they continue to make improvements and seek feedback on their latest revisions. -- **Package Manager UI in Visual Studio**: In the **Manage NuGet Packages** UI, check the **Include prerelease** box: +By default, nuget.org shows pre-release packages in search results. To search only stable releases, clear the **Include prerelease** option on the upper right of the page - ![The Include prerelease checkbox in Visual Studio](media/Prerelease_02-CheckPrerelease.png) +![Include prerelease checkbox on nuget.org](media/Finding-06-include-prerelease.png) + +In Visual Studio and when using the NuGet CLI, NuGet does not include pre-release versions by default. To change this behavior, do the following steps: - Setting or clearing this box refreshes the Package Manager UI and the list of available versions you can install. +- **Package Manager UI in Visual Studio**: In the **Manage NuGet Packages** UI, set the **Include prerelease** box. Setting or clearing this box refreshes the Package Manager UI and the list of available versions you can install. + + ![The Include prerelease checkbox in Visual Studio](media/Prerelease_02-CheckPrerelease.png) - **Package Manager Console**: Use the `-IncludePrerelease` switch with the `Find-Package`, `Get-Package`, `Install-Package`, `Sync-Package`, and `Update-Package` commands. Refer to the [PowerShell Reference](../tools/powershell-reference.md). - **NuGet CLI**: Use the `-prerelease` switch with the `install`, `update`, `delete`, and `mirror` commands. Refer to the [NuGet CLI reference](../tools/nuget-exe-cli-reference.md) - ### Native C++ packages -NuGet 2.5+ supports native C++ packages can that can be used in C++ projects in Visual Studio. This enables the **Manage NuGet Packages** context-menu command for projects, introduces a `native` target framework, and provides MSBuild integration. +NuGet (2.5+) supports native C++ packages can that can be used in C++ projects in Visual Studio. This enables the **Manage NuGet Packages** context-menu command for projects, introduces a `native` target framework, and provides MSBuild integration. To find native packages on [nuget.org](https://www.nuget.org/packages), search using `tag:native`. Such packages typically provide `.targets` and `.props` files, which NuGet imports automatically when the package is added to a project. For information on creating native packages, see [Native packages](../create-packages/native-packages.md). - ## Evaluating packages -The best way to evaluate the usefulness of a package is, of course, to download it and try it out. After all, every highly popular package got started with only a few developers using it, and you might be one of the early adopters! +The best way to evaluate the usefulness of a package is to download it and try it out in your code. After all, every highly popular package got started with only a few developers using it, and you might be one of the early adopters! (Note that all packages on nuget.org are routinely scanned for viruses.) -At the same time, using a NuGet package means taking a dependency on it, so you'll want to make sure it's robust and reliable. Because installing and directly testing a package is very time-consuming, you can also learn a lot about a package's quality by using the information on a package's listing page: +At the same time, using a NuGet package means taking a dependency on it, so you want to make sure it's robust and reliable. Because installing and directly testing a package is time-consuming, you can also learn a lot about a package's quality by using the information on a package's listing page: -- *Downloads statistics*: a the package page you'll see total downloads, downloads of the most recent version, and average downloads per day. Larger numbers indicate that many other developers have taken a dependency on the package, which means that it has proven itself. +- *Downloads statistics*: on the package page on nuget.org, the **Statistics** section shows total downloads, downloads of the most recent version, and average downloads per day. Larger numbers indicate that many other developers have taken a dependency on the package, which means that it has proven itself. ![Download statistics on a package's listing page](media/Finding-03-Downloads.png) -- *Version history*: on the package page, look at the date of the most recent update, and scroll down to see the version history. A well-maintained package has recent updates and a rich version history. Neglected packages have few updates and often haven't been updated in some time. +- *Version history*: on the package page, look under **Info** for the date of the most recent update and examine the **Version History**. A well-maintained package has recent updates and a rich version history. Neglected packages have few updates and often haven't been updated in some time. ![Version history on a package's listing page](media/Finding-04-VersionHistory.png) -- *Recent installs*: on the package page, select **View full stats** on the right side. This shows you the package installs over the last six weeks. A package that other developers are actively using is typically a better choice than one that's not. -- *Support*: on the package page, select **Project Site** (if available) to see what support options are available. A project with a dedicated site is generally better supported. -- *Developer history*: on the package page, select the listed **Owners** to see what other packages they've published. Those with multiple packages are more likely to continue supporting their work in the future. +- *Recent installs*: on the package page under **Statistics**, select **View full stats**. The full stats page shows the package installs over the last six weeks by version number. A package that other developers are actively using is typically a better choice than one that's not. + +- *Support*: on the package page under **Info**, select **Project Site** (if available) to see what support options are available. A project with a dedicated site is generally better supported. + +- *Developer history*: on the package page under **Owners**, select an owner to see what other packages they've published. Those with multiple packages are more likely to continue supporting their work in the future. + - *Open source contributions*: many packages are maintained in open-source repositories, making it possible for developers depending on them to directly contribute bug fixes and feature improvements. The contribution history of any given package is also a good indicator of how many developers are actively involved. -- *Interview the owners*: new developers can certainly be equally committed to producing great packages for you to use, and it's good to give them a chance to bring something new to the NuGet ecosystem. With this in mind, reach out directly to the package developers through the **Contact Owners** option on the listing page. Chances are, they'll be happy to work with you to serve your needs! -> [!Note] -> Always be mindful of a package's license terms, which you can see by selecting **License** on a package's listing page on nuget.org. +- *Interview the owners*: new developers can certainly be equally committed to producing great packages for you to use, and it's good to give them a chance to bring something new to the NuGet ecosystem. With this in mind, reach out directly to the package developers through the **Contact Owners** option under **Info** on the listing page. Chances are, they'll be happy to work with you to serve your needs! > [!Note] -> Every package that's uploaded to nuget.org is scanned for viruses, and nuget.org periodically re-scans all packages. +> Always be mindful of a package's license terms, which you can see by selecting **License Info** on a package's listing page on nuget.org. ## Search Syntax @@ -118,21 +115,27 @@ NuGet package search works the same on nuget.org, from the NuGet CLI, and within - **Keywords**: Search looks for relevant packages that contain all the provided keywords. Example: - modern UI javascript + ``` + modern UI javascript + ``` - **Phrases**: Entering terms within quotation marks looks for exact case-insensitive matches to those terms. Example: - "modern UI" package + ``` + "modern UI" package + ``` - **Filtering**: You can apply a search term to a specific property by using the syntax `:` where `` (case-insensitive) can be `id`, `packageid`, `version`, `title`, `tags`, `author`, `description`, `summary`, and `owner`. Terms can be contained in quotes if needed, and you can search for multiple properties at the same time. Also, searches on the `id` property are substring matches, whereas `packageid` uses an exact match. Examples: - id:NuGet.Core //Match any part of the id property - Id:"Nuget.Core" - ID:jQuery - title:jquery //Searches title as shown on the package listing - PackageId:jquery //Match the package id exactly - id:jquery id:ui //Search for multiple terms in the id - id:jquery tags:validation //Search multiple properties - id:"jquery.ui" //Phrase search - invalid:jquery ui //Unsupported properties are ignored, so this - //is the same as searching on jquery ui + ``` + id:NuGet.Core //Match any part of the id property + Id:"Nuget.Core" + ID:jQuery + title:jquery //Searches title as shown on the package listing + PackageId:jquery //Match the package id exactly + id:jquery id:ui //Search for multiple terms in the id + id:jquery tags:validation //Search multiple properties + id:"jquery.ui" //Phrase search + invalid:jquery ui //Unsupported properties are ignored, so this + //is the same as searching on jquery ui + ``` \ No newline at end of file diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index 56abac99a..b4d521c44 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -1,25 +1,18 @@ --- -# required metadata - title: Reinstalling and Updating NuGet Packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/17/2017 +ms.date: 12/07/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 2785879b-97f0-4a85-b3cc-bf4eaa5c39bf - -# optional metadata - description: Details on when it's necessary to reinstall and update packages, as with broken package references in Visual Studio. keywords: NuGet package installation, NuGet package reinstallation, NuGet package restore, updating package, restoring packages, fixing broken references ms.reviewer: - karann-msft - unniravindranathan - --- # How to reinstall and update packages @@ -70,12 +63,12 @@ In all cases, use the notation described in [Package versioning](../reference/pa Being mindful of the [Considerations](#considerations) described below, you can easily reinstall any package using the [Update-Package command](../Tools/ps-ref-update-package.md) in the Visual Studio Package Manager Console (**Tools** > **NuGet Package Manager** > **Package Manager Console**): ```ps -Update-Package -Id –reinstall +Update-Package -Id –reinstall ``` Using this command is much easier than removing a package and then trying to locate the same package in the NuGet gallery with the same version. Note that the `-Id` switch is optional. -The same command without `-reinstall` updates a package to a newer version, if applicable: +The same command without `-reinstall` updates a package to a newer version, if applicable. The command gives an error if the package in question is not already installed in a project; that is, `Update-Package` does not install packages directly. ```ps Update-Package diff --git a/docs/Consume-Packages/media/Finding-01-Popularity.png b/docs/Consume-Packages/media/Finding-01-Popularity.png index a065b730825f5a0a6e023da2c371c88068a82f0b..f1a4da978f2b0615d78e0f5b8bd6d0ebe348a317 100644 GIT binary patch literal 48129 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�szp#o+N#h>vl)AGI|^+3yvta&6l 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 diff --git a/docs/Consume-Packages/media/Finding-02-SearchResults.png b/docs/Consume-Packages/media/Finding-02-SearchResults.png index 49cd15f59f4a97a4a7abc8d14a5df1d85ad8473e..bfd9956c11cbc9a95815b970e7bc632ade41da18 100644 GIT binary patch literal 41923 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 diff --git a/docs/Consume-Packages/media/Finding-03-Downloads.png b/docs/Consume-Packages/media/Finding-03-Downloads.png index bcf60cb9e9bce9c83a52076c60ec0f436719c5fa..0bca8f786ffeab991dfd9f6f61ba95f5bbfbaa12 100644 GIT binary patch literal 6452 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 diff --git a/docs/Consume-Packages/media/Finding-04-VersionHistory.png b/docs/Consume-Packages/media/Finding-04-VersionHistory.png index e221ef340a47ee0bb4c67dd54ba4339dedb117c6..1a2cdf8bca70aba5d239405dcef2251d8e484019 100644 GIT binary patch literal 11507 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 JRmhl!{2T05rbz$* diff --git a/docs/Consume-Packages/media/Finding-06-include-prerelease.png b/docs/Consume-Packages/media/Finding-06-include-prerelease.png new file mode 100644 index 0000000000000000000000000000000000000000..69cc6c91be0b9a1a1373f83e4ad2b41829acddc5 GIT binary patch literal 45205 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 literal 0 HcmV?d00001 diff --git a/docs/Hosting-Packages/Local-Feeds.md b/docs/Hosting-Packages/Local-Feeds.md index 1622dbd5f..632c4f556 100644 --- a/docs/Hosting-Packages/Local-Feeds.md +++ b/docs/Hosting-Packages/Local-Feeds.md @@ -1,41 +1,32 @@ --- -# required metadata - title: Setting up Local NuGet Feeds | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 8/25/2017 +ms.date: 12/06/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 1354a527-d988-43d1-8dcf-6ce46ec5d3d4 - -# optional metadata - description: How to create a local feed for NuGet packages using folders on your local network keywords: NuGet feed, NuGet gallery, local package feed -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # Local feeds -Local NuGet package feeds are simply folders on your local network (or even just your own computer) in which you place packages. Local feeds can be a simple folder of packages, or a hierarchical folder structure that include version numbers. With NuGet 3.3 and above, using the hierarchical structure gives much better performance. +Local NuGet package feeds are simply hierarchical folder structures on your local network (or even just your own computer) in which you place packages. These feeds can then be used as package sources with all other NuGet operations using the CLI, the Package Manager UI, and the Package Manager Console. + +To enable the source, add its pathname (such as `\\myserver\packages`) to the list of sources using the [Package Manager UI](../tools/package-manager-ui.md#package-sources) or the [`nuget sources`](../tools/cli-ref-sources.md) command. -In all cases, enable the source by adding its pathname, such as `\\myserver\packages`, using the [Package Manager UI](../tools/package-manager-ui.md#package-sources) or the [`nuget sources`](../tools/cli-ref-sources.md) command. +> [!Note] +> Hierarchical folder structures are supported in NuGet 3.3+. Older versions of NuGet use only a single folder containing packages, with which performance is much lower than the hierarchical structure. ## Initializing and maintaining hierarchical folders -With NuGet 3.3+, you realize much better performance by structuring the feed using a hierarchical versioned folder tree: +The hierarchical versioned folder tree has the following general structure: \\myserver\packages └─ @@ -43,16 +34,18 @@ With NuGet 3.3+, you realize much better performance by structuring the feed usi ├─..nupkg └─ -NuGet creates this structure automatically when you use the [`nuget add`](../tools/cli-ref-add.md) command to copy packages to the feed: +NuGet creates this structure automatically when you use the [`nuget add`](../tools/cli-ref-add.md) command to copy a package to the feed: ``` nuget add new_package.1.0.0.nupkg -source \\myserver\packages ``` -You can also use the [`nuget init`](../tools/cli-ref-init.md) command to copy multiple packages from a single folder to the feed. For example, the following command copies all packages from `c:\packages` to a hierarchical tree on `\\myserver\packages`: +The `nuget add` command works with one package at a time, which can be inconvenient when setting up a feed with multiple packages. + +In such cases, use the [`nuget init`](../tools/cli-ref-init.md) command to copy all packages in a folder to the feed as if you ran `nuget add` on each one individually. For example, the following command copies all packages from `c:\packages` to a hierarchical tree on `\\myserver\packages`: ``` nuget init c:\packages \\myserver\packages ``` -Again, this creates a folder for each package identifier, each of which contains a version number folder, within which is the appropriate package. +As with the `add` command, `init` creates a folder for each package identifier, each of which contains a version number folder, within which is the appropriate package. diff --git a/docs/Hosting-Packages/NuGet-Server.md b/docs/Hosting-Packages/NuGet-Server.md index 41d7e469e..153d80ac6 100644 --- a/docs/Hosting-Packages/NuGet-Server.md +++ b/docs/Hosting-Packages/NuGet-Server.md @@ -1,31 +1,18 @@ --- -# required metadata - -title: NuGet.Server to Host NuGet Feeds | Microsoft Docs +title: Using NuGet.Server to Host NuGet Feeds | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen ms.date: 8/25/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 45138f80-9717-42c2-8b34-9a1bc1fb3eab - -# optional metadata - description: How to create and host a NuGet package feed on any server running IIS using NuGet.Server, making packages available through HTTP and OData. keywords: NuGet feed, NuGet gallery, remote package feed, NuGet.Server -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # NuGet.Server @@ -70,7 +57,6 @@ The following sections walk through this process in detail, using C#. 1. Once you've tested your local deployment, deploy the application to any other internal or external site as needed. 1. Once deployed to `http://`, the URL that you use for the package source will be `http:///nuget`. - ## Configuring the Packages folder With `NuGet.Server` 1.5 and later, you can more specifically configure the package folder using the `appSetting/packagesPath` value in `web.config`: diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index 9d4341db6..d09b5191d 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -1,31 +1,20 @@ --- -# required metadata - title: NuGet Frequently-Asked Questions | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/30/2017 +ms.date: 12/07/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 199a915d-9595-4ae2-a1fb-b15da6d7735a - -# optional metadata - description: Common questions and answers for using NuGet on the command line and in Visual Studio, and working with the NuGet gallery. keywords: NuGet Q&A, questions and answers, common problems, NuGet versions, package versions -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- + # NuGet frequently-asked questions In this topic: @@ -53,15 +42,28 @@ Although `nuget.exe` works fully on Windows, there are known issues on Linux and A [graphical client](https://github.com/mrward/monodevelop-nuget-addin) is available as an add-in for MonoDevelop. +**How can I determine what a package contains and whether it's stable and useful for my application?** + +The primary source for learning about a package is its listing page on nuget.org (or another private feed). Each package page on nuget.org includes a description of the package, its version history, and usage statistics. The **Info** section on the package page also contains a link to the project's web site where you typically find many examples and other documentation to help you learn how the package is used. + +For more information, see [Finding and choosing packages](../Consume-Packages/Finding-and-Choosing-Packages.md). + ## NuGet in Visual Studio -**How do I check the exact version of NuGet installed?** +**How is NuGet supported in different Visual Studio products?** + +- Visual Studio on Windows supports the [Package Manager UI](../tools/Package-Manager-UI.md) and the [Package Manager Console](../tools/Package-Manager-Console.md). +- Visual Studio for Mac has built-in NuGet capabilities as described on [Including a NuGet package in your project](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough). +- Visual Studio Code (all platforms) does not have any direct NuGet integration. Use the [NuGet CLI](../tools/nuget-exe-CLI-Reference.md) or the [dotnet CLI](../tools/dotnet-commands.md). +- Visual Studio Team Services provides [a build step to restore NuGet packages](https://docs.microsoft.com/vsts/build-release/tasks/package/nuget). You can also [host private NuGet package feeds on Team Services](https://www.visualstudio.com/docs/package/nuget/publish). + +**How do I check the exact version of the NuGet tools that are installed?** In Visual Studio, use the **Help > About Microsoft Visual Studio** command and look at the version displayed next to **NuGet Package Manager**. Alternatively, launch the Package Manager Console (**Tools > NuGet Package Manager > Package Manager Console**) and enter `$host` to see information about NuGet including the version. -**What languages are supported by NuGet?** +**What programming languages are supported by NuGet?** NuGet generally works for .NET languages and is designed to bring .NET libraries into a project. Because it also supports MSBuild and Visual Studio automation in some project types, it also supports other projects and languages to various degrees. @@ -91,7 +93,7 @@ See the [Install guide](../guides/install-nuget.md). Yes, it's possible to add custom commands to `nuget.exe`, as described in [Rob Reynold's post](http://geekswithblogs.net/robz/archive/2011/07/15/extend-nuget-command-line.aspx). -## NuGet Package Manager Console +## NuGet Package Manager Console (Visual Studio on Windows) **How do I get access to the DTE object in the Package Manager console?** @@ -129,7 +131,7 @@ See [Bulk publishing NuGet packages](http://jeffhandley.com/archive/2012/12/13/B **What is the difference between a project-level package and a solution-level package?** -A solution-level package (NuGet 3.x and later) is installed only once in a solution and is then available for all projects in the solution. A project-level package is installed in each project that uses it. A solution-level package might also install new commands that can be called from within the Package Manager Console. +A solution-level package (NuGet 3.x+) is installed only once in a solution and is then available for all projects in the solution. A project-level package is installed in each project that uses it. A solution-level package might also install new commands that can be called from within the Package Manager Console. **Is it possible to install NuGet packages without Internet connectivity?** @@ -139,7 +141,7 @@ Yes, see Scott Hanselman's Blog post [How to access NuGet when nuget.org is down Set the [`repositoryPath`](../Schema/nuget-config-file.md#config-section) setting in `Nuget.Config` using `nuget config -set repositoryPath=`. -**How do I avoid checking in packages folder to source control?** +**How do I avoid adding the NuGet packages folder into to source control?** Set the [`disableSourceControlIntegration`](../Schema/nuget-config-file.md#solution-section) in `Nuget.Config` to `true`. This key works at the solution level and hence need to be added to the `$(Solutiondir)\.nuget\Nuget.Config` file. Enabling package restore from Visual Studio creates this file automatically. @@ -151,12 +153,9 @@ See [Enabling and disabling package restore](../consume-packages/package-restore You need to select the **All** source when installing a local package into the project. This aggregates all the feeds instead of using just one. The reason this error appears is that users of a local repository often want to avoid accidentally installing a remote package due to corporate polices. -**I have multiple projects in the same folder, how can I use separate packages.config or project.json files for each project?** - -In most projects where separate projects live in separate folders, this is not a problem as NuGet identifies the `packages.config` and `project.json` files in each project. With NuGet 3.3+ and multiple projects in the same folder, you can insert the name of the project into the `packages.config` or `project.json` filenames as below and NuGet uses that file: +**I have multiple projects in the same folder, how can I use separate packages.config files for each project?** -- `packages.config`: use the pattern `packages.{project-name}.config` -- `project.json`: use the pattern `{project-name}.project.json` +In most projects where separate projects live in separate folders, this is not a problem as NuGet identifies the `packages.config` files in each project. With NuGet 3.3+ and multiple projects in the same folder, you can insert the name of the project into the `packages.config` filenames use the pattern `packages.{project-name}.config`, and NuGet uses that file. This is not an issue when using PackageReference, as each project file contains its own list of dependencies. diff --git a/docs/Tools/cli-ref-install.md b/docs/Tools/cli-ref-install.md index a5a6b7107..3b114b85f 100644 --- a/docs/Tools/cli-ref-install.md +++ b/docs/Tools/cli-ref-install.md @@ -1,24 +1,18 @@ --- -# required metadata - title: NuGet CLI install command | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 12/07/2017 ms.topic: reference ms.prod: nuget ms.technology: null ms.assetid: 59ac622f-837c-4545-bc93-a56330e02d71 - -# optional metadata - description: Reference for the nuget.exe install command keywords: nuget install reference, install package command ms.reviewer: - karann-msft - unniravindranathan - --- # install command (NuGet CLI) @@ -55,7 +49,6 @@ where `` names the package to install (using the latest version), or | DisableParallelProcessing | Disables installing multiple packages in parallel. | | ExcludeVersion | Installs the package to a folder named with only the package name and not the version number. | | FallbackSource | *(3.2+)* A list of package sources to use as fallbacks in case the package isn't found in the primary or default source. | -| FileConflictAction | *(2.5+)* Specifies the action to take when asked to overwrite or ignore existing files referenced by the project. Values are *overwrite, ignore, none*. | | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Framework | *(4.4+)* Target framework used for selecting dependencies. Defaults to 'Any' if not specified. | | Help | Displays help information for the command. | diff --git a/docs/Tools/cli-ref-update.md b/docs/Tools/cli-ref-update.md index f1ac420cf..a9392645f 100644 --- a/docs/Tools/cli-ref-update.md +++ b/docs/Tools/cli-ref-update.md @@ -1,31 +1,25 @@ --- -# required metadata - title: NuGet CLI update command | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 12/07/2017 ms.topic: reference ms.prod: nuget ms.technology: null ms.assetid: 61fde945-6983-46a5-8636-da0fada4e641 - -# optional metadata - description: Reference for the nuget.exe update command keywords: nuget update reference, update package command ms.reviewer: - karann-msft - unniravindranathan - --- # update command (NuGet CLI) **Applies to:** package consumption • **Supported versions:** all -Updates all packages in a project (using `packages.config`) to their latest available versions. It is recommended to run ['restore'](#restore) before running the `update`. +Updates all packages in a project (using `packages.config`) to their latest available versions. It is recommended to run ['restore'](#restore) before running the `update`. (To update an individual package, use [`nuget install`](cli-ref-install.md) without specifying a version number, in which case NuGet installs the latest version.) Note: `update` does not work with the CLI running under Mono (Mac OSX or Linux). The command also does not work with projects using `project.json` or PackageReference management formats. diff --git a/docs/Tools/ps-ref-add-bindingredirect.md b/docs/Tools/ps-ref-add-bindingredirect.md index 996c16b69..1f9ea4ec5 100644 --- a/docs/Tools/ps-ref-add-bindingredirect.md +++ b/docs/Tools/ps-ref-add-bindingredirect.md @@ -1,41 +1,27 @@ --- -# required metadata - title: NuGet Add-BindingRedirect PowerShell Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/17/2017 +ms.date: 12/07/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 90f4dcb0-6e5a-4948-8ea9-62e0d061d95a - -# optional metadata - description: Reference for Add-BindingRedirect PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Add-BindingRedirect -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- -# Add-BindingRedirect +# Add-BindingRedirect (Package Manager Console in Visual Studio) -Examines all assemblies within the output path for a project and adds binding redirects to the application or web configuration file where necessary. +*Available only within the [NuGet Package Manager Console](Package-Manager-Console.md) in Visual Studio on Windows.* -For details on binding redirects and why they are used, see [Redirecting Assembly Versions](https://docs.microsoft.com/dotnet/framework/configure-apps/redirect-assembly-versions) in the .NET documentation. +Examines all assemblies within the output path for a project and adds binding redirects to the application or web configuration file where necessary. This command is run automatically when installing a package. -> [!Note] -> NuGet 1.2+ automatically runs this command when installing a package. +For details on binding redirects and why they are used, see [Redirecting Assembly Versions](https://docs.microsoft.com/dotnet/framework/configure-apps/redirect-assembly-versions) in the .NET documentation. ## Syntax @@ -61,5 +47,4 @@ None of these parameters accept pipeline input or wildcard characters. Add-BindingRedirect MyProject Add-BindingRedirect -ProjectName MyProject -``` - \ No newline at end of file +``` \ No newline at end of file diff --git a/docs/Tools/ps-ref-find-package.md b/docs/Tools/ps-ref-find-package.md index 9c60212b7..d40f9c5c6 100644 --- a/docs/Tools/ps-ref-find-package.md +++ b/docs/Tools/ps-ref-find-package.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet Find-Package PowerShell Reference | Microsoft Docs author: kraigb ms.author: kraigb @@ -8,29 +6,19 @@ manager: ghogen ms.date: 6/1/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 2f7b8847-8259-4366-98c0-13cab88d6e1b - -# optional metadata - description: Reference for Find-Package PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Find-Package -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- -# Find-Package +# Find-Package (Package Manager Console in Visual Studio) -*Version 3.0+* +*Version 3.0+; this topic describes the command within the [NuGet Package Manager Console](Package-Manager-Console.md) in Visual Studio on Windows. For the generic PowerShell Find-Package command, see the [PowerShell PackageManagement reference](https://docs.microsoft.com/powershell/module/packagemanagement/?view=powershell-6).* Gets the set of remote packages with specified ID or keywords from the package source. diff --git a/docs/Tools/ps-ref-get-package.md b/docs/Tools/ps-ref-get-package.md index 92f0b9ac4..a8c543782 100644 --- a/docs/Tools/ps-ref-get-package.md +++ b/docs/Tools/ps-ref-get-package.md @@ -1,34 +1,23 @@ --- -# required metadata - title: NuGet Get-Package PowerShell Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 6/1/2017 +ms.date: 12/07/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 42476008-64b3-480e-a966-98b2fa38b681 - -# optional metadata - description: Reference for Get-Package PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Get-Package -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- -# Get-Package +# Get-Package (Package Manager Console in Visual Studio) + +*This topic describes the command within the [NuGet Package Manager Console](Package-Manager-Console.md) in Visual Studio on Windows. For the generic PowerShell Get-Package command, see the [PowerShell PackageManagement reference](https://docs.microsoft.com/powershell/module/packagemanagement/?view=powershell-6).* Retrieves the list of packages installed in the local repository, lists packages available from a package source when used with the -ListAvailable switch, or lists available updates when used with the -Update switch. diff --git a/docs/Tools/ps-ref-get-project.md b/docs/Tools/ps-ref-get-project.md index 5adb27e59..215363cd4 100644 --- a/docs/Tools/ps-ref-get-project.md +++ b/docs/Tools/ps-ref-get-project.md @@ -1,34 +1,25 @@ --- -# required metadata - title: NuGet Get-Project PowerShell Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 6/1/2017 +ms.date: 12/07/2017 ms.topic: reference ms.prod: nuget #ms.service: ms.technology: null ms.assetid: 09c10ea3-ba26-4bfa-999e-de5350e6e920 - -# optional metadata - description: Reference for GetProject PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Get-Project -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- -# Get-Project +# Get-Project (Package Manager Console in Visual Studio) + +*Available only within the [NuGet Package Manager Console](Package-Manager-Console.md) in Visual Studio on Windows.* Displays information about the default or specified project. `Get-Project` specifically returns a referent to the Visual Studio DTE (Development Tools Environment) object for the project. diff --git a/docs/Tools/ps-ref-install-package.md b/docs/Tools/ps-ref-install-package.md index bd4db340c..a5bda7af1 100644 --- a/docs/Tools/ps-ref-install-package.md +++ b/docs/Tools/ps-ref-install-package.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet Install-Package PowerShell Reference | Microsoft Docs author: kraigb ms.author: kraigb @@ -8,27 +6,18 @@ manager: ghogen ms.date: 6/1/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 879db0ef-6b72-4a4a-bb68-f9e3a00f64b8 - -# optional metadata - description: Reference for Install-Package PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Install-Package -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- -# Install-Package +# Install-Package (Package Manager Console in Visual Studio) + +*This topic describes the command within the [NuGet Package Manager Console](Package-Manager-Console.md) in Visual Studio on Windows. For the generic PowerShell Install-Package command, see the [PowerShell PackageManagement reference](https://docs.microsoft.com/powershell/module/packagemanagement/?view=powershell-6).* Installs a package and its dependencies into a project. diff --git a/docs/Tools/ps-ref-open-packagepage.md b/docs/Tools/ps-ref-open-packagepage.md index 3c73fdc2c..5f4e78314 100644 --- a/docs/Tools/ps-ref-open-packagepage.md +++ b/docs/Tools/ps-ref-open-packagepage.md @@ -1,36 +1,24 @@ --- -# required metadata - title: NuGet Open-PackagePage PowerShell Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 6/1/2017 +ms.date: 12/07/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: e9f84530-6b3d-43b0-a832-0acb2997f6fc - -# optional metadata - description: Reference for Open-PackagePage PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Open-PackagePage -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- -# Open-PackagePage +# Open-PackagePage (Package Manager Console in Visual Studio) -*Deprecated in 3.0+* +*Deprecated in 3.0+; available only within the [NuGet Package Manager Console](Package-Manager-Console.md) in Visual Studio on Windows.* Launches the default browser with the project, license, or report abuse URL for the specified package. @@ -72,5 +60,4 @@ Open-PackagePage Ninject -ReportAbuse # Assigns the license URL to the variable, $url, without launching the browser $url = Open-PackagePage Ninject -License -PassThru -WhatIf -``` - \ No newline at end of file +``` \ No newline at end of file diff --git a/docs/Tools/ps-ref-register-tabexpansion.md b/docs/Tools/ps-ref-register-tabexpansion.md index fe665044c..2fa1147f7 100644 --- a/docs/Tools/ps-ref-register-tabexpansion.md +++ b/docs/Tools/ps-ref-register-tabexpansion.md @@ -1,34 +1,23 @@ --- -# required metadata - title: NuGet Register-TabExpansion PowerShell Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/25/2017 +ms.date: 12/07/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 8314ec69-ee8c-4933-84ef-e6d8a412d268 - -# optional metadata - description: Reference for Register-TabExpansion PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Register-TabExpansion -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- -# Register-TabExpansion +# Register-TabExpansion (Package Manager Console in Visual Studio) + +*Available only within the [NuGet Package Manager Console](Package-Manager-Console.md) in Visual Studio on Windows.* Registers a tab expansion for the parameters of the specified command, such that when Tab is used when entering a command, the expanded values appear as available options for the parameter in question. Any previous expansions for the command are overwritten. diff --git a/docs/Tools/ps-ref-sync-package.md b/docs/Tools/ps-ref-sync-package.md index 08609f00c..dfb79ccb7 100644 --- a/docs/Tools/ps-ref-sync-package.md +++ b/docs/Tools/ps-ref-sync-package.md @@ -1,36 +1,23 @@ --- -# required metadata - title: NuGet Sync-Package PowerShell Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 6/1/2017 +ms.date: 12/07/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 1b980b93-fa58-430c-b663-78ce069b1603 - -# optional metadata - description: Reference for Sync-Package PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Sync-Package -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- -# Sync-Package +# Sync-Package (Package Manager Console in Visual Studio) -*Version 3.0+* +*Version 3.0+; available only within the [NuGet Package Manager Console](Package-Manager-Console.md) in Visual Studio on Windows.* Gets the version of installed package from specified (or default) project and synchronizes the version to the rest of projects in the solution. diff --git a/docs/Tools/ps-ref-uninstall-package.md b/docs/Tools/ps-ref-uninstall-package.md index 8c6257697..4169265dc 100644 --- a/docs/Tools/ps-ref-uninstall-package.md +++ b/docs/Tools/ps-ref-uninstall-package.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet Uninstall-Package PowerShell Reference | Microsoft Docs author: kraigb ms.author: kraigb @@ -8,27 +6,19 @@ manager: ghogen ms.date: 6/1/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: f4f5dc79-8e8e-4012-8986-873a5d9283d9 - -# optional metadata - description: Reference for Uninstall-Package PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Uninstall-Package -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- -# Uninstall-Package +# Uninstall-Package (Package Manager Console in Visual Studio) + +*This topic describes the command within the [NuGet Package Manager Console](Package-Manager-Console.md) in Visual Studio on Windows. For the generic PowerShell Uninstall-Package command, see the [PowerShell PackageManagement reference](https://docs.microsoft.com/powershell/module/packagemanagement/?view=powershell-6).* Removes a package from a project, optionally removing its dependencies. If other packages depend on this package, the command will fail unless the –Force option is specified. @@ -41,7 +31,6 @@ Uninstall-Package [-Id] [-RemoveDependencies] [-ProjectName ] [ If other packages depend on this package, the command will fail unless the –Force option is specified. - ## Parameters | Parameter | Description | diff --git a/docs/Tools/ps-ref-update-package.md b/docs/Tools/ps-ref-update-package.md index 549c47898..a622a3edc 100644 --- a/docs/Tools/ps-ref-update-package.md +++ b/docs/Tools/ps-ref-update-package.md @@ -1,27 +1,23 @@ --- -# required metadata - title: NuGet Update-Package PowerShell Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/17/2017 +ms.date: 12/07/2017 ms.topic: reference ms.prod: nuget ms.technology: null ms.assetid: b4aa92a9-ce47-4d23-ae51-d5683e08a9d5 - -# optional metadata - description: Reference for Update-Package PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Update-Package ms.reviewer: - karann-msft - unniravindranathan - --- -# Update-Package +# Update-Package (Package Manager Console in Visual Studio) + +*Available only within the [NuGet Package Manager Console](Package-Manager-Console.md) in Visual Studio on Windows.* Updates a package and its dependencies, or all packages in a project, to a newer version. From a5aae658e5448bc47ce22a1196bedc5ae1294622 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 7 Dec 2017 14:50:12 -0800 Subject: [PATCH 0399/2943] Fix --- .openpublishing.publish.config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.openpublishing.publish.config.json b/.openpublishing.publish.config.json index 8fb6cc1c8..2560421ae 100644 --- a/.openpublishing.publish.config.json +++ b/.openpublishing.publish.config.json @@ -44,5 +44,5 @@ "Pdf": { "template_folder": "_themes.pdf" } - }, + } } From 631a7de3fe16b0fed2bb0b5f5e518a0c08841d5f Mon Sep 17 00:00:00 2001 From: Michael Broadbent Date: Thu, 7 Dec 2017 22:00:11 -0500 Subject: [PATCH 0400/2943] Fix NuGet CLI restore link pointing to pack --- docs/Schema/msbuild-targets.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Schema/msbuild-targets.md b/docs/Schema/msbuild-targets.md index 53da70e62..d0d58b796 100644 --- a/docs/Schema/msbuild-targets.md +++ b/docs/Schema/msbuild-targets.md @@ -33,7 +33,7 @@ ms.reviewer: NuGet 4.0+ can work directly with the information in a `.csproj` file without requiring a separate `.nuspec` or `project.json` file. All the metadata that was previously stored in those configuration files can be instead stored in the `.csproj` file directly, as described here. -With MSBuild 15.1+, NuGet is also a first-class MSBuild citizen with the `pack` and `restore` targets as described below. These targets allow you to work with NuGet as you would with any other MSBuild task or target. (For NuGet 3.x and earlier, you use the [pack](../tools/cli-ref-pack.md) and [restore](../tools/cli-ref-pack.md) commands through the NuGet CLI instead.) +With MSBuild 15.1+, NuGet is also a first-class MSBuild citizen with the `pack` and `restore` targets as described below. These targets allow you to work with NuGet as you would with any other MSBuild task or target. (For NuGet 3.x and earlier, you use the [pack](../tools/cli-ref-pack.md) and [restore](../tools/cli-ref-restore.md) commands through the NuGet CLI instead.) In this topic: From d41e132018f372a67555ad904911ba1e4bd186ff Mon Sep 17 00:00:00 2001 From: Rohit Agrawal Date: Fri, 8 Dec 2017 14:46:17 -0800 Subject: [PATCH 0401/2943] correcting documentation for dotnet pack dotnet pack does not run the same code as nuget pack --- docs/Tools/dotnet-Commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/dotnet-Commands.md b/docs/Tools/dotnet-Commands.md index 6984b7560..d297fd3ac 100644 --- a/docs/Tools/dotnet-Commands.md +++ b/docs/Tools/dotnet-Commands.md @@ -31,7 +31,7 @@ ms.reviewer: The DotNet command-line interface, which runs on Windows, Mac OS X, and Linux, provides a number of essential nuget.exe commands as listed below. Where dotnet provides the desired commands, it is not necessary to download nuget.exe. -- [**dotnet pack**](https://docs.microsoft.com/dotnet/core/tools/dotnet-pack?tabs=netcore2x): Packs the code into a NuGet package. As of NuGet 4.0, this runs the same code as `nuget pack`. +- [**dotnet pack**](https://docs.microsoft.com/dotnet/core/tools/dotnet-pack?tabs=netcore2x): Packs the code into a NuGet package. Only used for NETCore SDK projects. For everything else, use `nuget.exe pack` - [**dotnet restore**](https://docs.microsoft.com/dotnet/core/tools/dotnet-restore?tabs=netcore2x): Restores the dependencies and tools of a project. As of NuGet 4.0, this runs the same code as `nuget restore`. - [**dotnet nuget locals**](https://docs.microsoft.com/dotnet/core/tools/dotnet-nuget-locals): Clears or lists local NuGet resources such as http the -request cache, temporary cache, or machine-wide global packages folder. - [**dotnet nuget push**](https://docs.microsoft.com/dotnet/core/tools/dotnet-nuget-push): Pushes a package to a server and publishes it, applicable to nuget.org, Visual Studio Team Services, or any third-party NuGet servers. From d8b8b189fb439e5aa1525f56bb2ea38313dd45dd Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 8 Dec 2017 16:55:52 -0800 Subject: [PATCH 0402/2943] Corrections from verbatims and comments Package-Versioning had incorrect packages.config XML --- docs/Create-Packages/Creating-a-Package.md | 17 +-- docs/Create-Packages/Prerelease-Packages.md | 16 --- docs/Reference/Package-Versioning.md | 110 ++++++++++++-------- docs/Schema/nuspec.md | 14 +-- docs/Schema/packages-config.md | 17 +-- docs/Tools/Package-Manager-UI.md | 15 ++- docs/Tools/cli-ref-pack.md | 14 +-- 7 files changed, 82 insertions(+), 121 deletions(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 9aa3f8339..b6446e95b 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -1,6 +1,4 @@ --- -# required metadata - title: How to create a NuGet package | Microsoft Docs author: kraigb ms.author: kraigb @@ -11,16 +9,13 @@ ms.prod: nuget #ms.service: ms.technology: null ms.assetid: 456797cb-e3e4-4b88-9b01-8b5153cee802 - -# optional metadata - description: A detailed guide to the process of designing and creating a NuGet package, including key decision points like files and versioning. keywords: NuGet package creation, creating a package, nuspec manifest, NuGet package conventions, NuGet package version ms.reviewer: - karann-msft - unniravindranathan - --- + # Creating NuGet packages No matter what your package does or what code it contains, you use `nuget.exe` to package that functionality into a component that can be shared with and used by any number of other developers. To install `nuget.exe`, see [Install NuGet CLI](../guides/Install-NuGet.md#nuget-cli). Note that Visual Studio does not automatically include `nuget.exe`. @@ -203,7 +198,6 @@ nuget spec Again, the generated `.nuspec` contains no explicit references to files in the folder structure. NuGet automatically includes all files when the package is created. You still need to edit placeholder values in other parts of the manifest, however. - ### From an assembly DLL In the simple case of creating a package from an assembly, you can generate a `.nuspec` file from the metadata in the assembly using the following command: @@ -237,7 +231,6 @@ Tokens relieve you from needing to update crucial values like the version number Note that there are several additional packaging options available when working from a Visual Studio project, as described in [Running nuget pack to generate the .nupkg file](#running-nuget-pack-to-generate-the-nupkg-file) later on. - #### Solution-level packages *NuGet 2.x only. Not available in NuGet 3.0+.* @@ -258,7 +251,6 @@ If you omit \, the resulting file is `Package.nuspec`. If you pro The resulting `.nuspec` contains placeholders for values like the `projectUrl`. Be sure to edit the file before using it to create the final `.nupkg` file. - ## Choosing a unique package identifier and setting the version number The package identifier (`` element) and the version number (`` element) are the two most important values in the manifest because they uniquely identify the exact code that's contained in the package. @@ -280,7 +272,6 @@ The package identifier (`` element) and the version number (`` elem > - [Part 2: The core algorithm](http://blog.davidebbo.com/2011/01/nuget-versioning-part-2-core-algorithm.html) > - [Part 3: Unification via Binding Redirects](http://blog.davidebbo.com/2011/01/nuget-versioning-part-3-unification-via.html) - ## Setting a package type With NuGet 3.5+, packages can be marked with a specific *package type* to indicate its intended use. Packages not marked with a type, including all packages created with earlier versions of NuGet, default to the `Dependency` type. @@ -386,7 +377,7 @@ When NuGet 2.x installs a package with `\build` files, it adds an MSBuild `.csproj > [!Note] > Using the project file directly is necessary for token replacement because the project is the source of the token values. Token replacement does not happen if you use `nuget pack` with a `.nuspec` file. - In all cases, `nuget pack` excludes folders that start with a period, such as `.git` or `.hg`. NuGet indicates if there are any errors in the `.nuspec` file that need correcting, such as forgetting to change placeholder values in the manifest. @@ -436,7 +426,6 @@ Once `nuget pack` succeeds, you have a `.nupkg` file that you can publish to a s > [!Tip] > A helpful way to examine a package after creating it is to open it in the [Package Explorer](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer) tool. This gives you a graphical view of the package contents and its manifest. You can also rename the resulting `.nupkg` file to a `.zip` file and explore its contents directly. - ### Additional options You can use various command-line switches with `nuget pack` to exclude files, override the version number in the manifest, and change the output folder, among other features. For a complete list, refer to the [pack command reference](../tools/cli-ref-pack.md). @@ -464,7 +453,7 @@ The following options are a few that are common with Visual Studio projects: ``` nuget pack MyProject.csproj -symbols ``` - + ## Next Steps Once you've created a package, which is a `.nupkg` file, you can publish it to the gallery of your choice as described on [Publishing a Package](../create-packages/publish-a-package.md). diff --git a/docs/Create-Packages/Prerelease-Packages.md b/docs/Create-Packages/Prerelease-Packages.md index 89044f221..b598724c8 100644 --- a/docs/Create-Packages/Prerelease-Packages.md +++ b/docs/Create-Packages/Prerelease-Packages.md @@ -1,6 +1,4 @@ --- -# required metadata - title: Pre-release versions in NuGet packages | Microsoft Docs author: kraigb ms.author: kraigb @@ -8,24 +6,13 @@ manager: ghogen ms.date: 8/14/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: df6a366a-22c1-47bb-8017-18231311ce88 - -# optional metadata - description: Guidance for building pre-release packages keywords: versioning, NuGet package versioning, NuGet prerelease versions, NuGet prerelease packages, preview package versions, RC package versions, Beta package versions, NuGet semantic versioning -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Building pre-release packages @@ -54,9 +41,6 @@ You can specify such versions in two ways: NuGet picks up this value instead of the one specified in the `AssemblyVersion` attribute, which does not support semantic versioning. -> [!Note] -> A stable package release cannot have a pre-release dependency. This avoids accidentally installing potentially unstable releases. - When you’re ready to release a stable version, just remove the suffix and the package takes precedence over any pre-release versions. Again, see [Package versioning](../reference/package-versioning.md#pre-release-versions). diff --git a/docs/Reference/Package-Versioning.md b/docs/Reference/Package-Versioning.md index fa40f7d83..06f5e69a2 100644 --- a/docs/Reference/Package-Versioning.md +++ b/docs/Reference/Package-Versioning.md @@ -1,32 +1,19 @@ --- -# required metadata - title: NuGet Package Version Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 8/14/2017 +ms.date: 12/08/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 6ee3c826-dd3a-4fa9-863f-1fd80bc4230f - -# optional metadata - description: Exact details on specifying version numbers and ranges for other packages upon which a NuGet package depends, and how dependencies are installed. keywords: versioning, NuGet package dependencies, NuGet dependency versions, NuGet version numbers, NuGet package version, version ranges, version specifications, normalized version numbers -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - anandr - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Package versioning @@ -52,7 +39,7 @@ A specific version number is in the form *Major.Minor.Patch[-Suffix]*, where the **Examples:** ``` -1.0.1 +1.0.1 6.11.1231 4.3.1-rc 2.2.44-beta1 @@ -72,12 +59,12 @@ That said, package developers generally follow recognized naming conventions: - `-rc`: Release candidate, typically a release that's potentially final (stable) unless significant bugs emerge. > [!Note] -> NuGet 4.3.0+ supports [SemVer 2.0.0](http://semver.org/spec/v2.0.0.html), which supports pre-release numbers with dot notation, as in *1.0.1-build.23*. Dot notation is not supported with NuGet versions before 4.3.0. You can use a form like *1.0.1-build23*. +> NuGet 4.3.0+ supports [SemVer 2.0.0](http://semver.org/spec/v2.0.0.html), which supports pre-release numbers with dot notation, as in *1.0.1-build.23*. Dot notation is not supported with NuGet versions before 4.3.0. You can use a form like *1.0.1-build23*. -When resolving package references and multiple package versions differ only by suffix, NuGet chooses a version without a suffix first, then applies precedence to pre-release versions in reverse alphabetical order. For example, the following versions would be chosen in the exact order shown: +When resolving package references and multiple package versions differ only by suffix, NuGet chooses a version without a suffix first, then applies precedence to pre-release versions in reverse alphabetical order. For example, the following versions would be chosen in the exact order shown: ``` -1.0.1 +1.0.1 1.0.1-zzz 1.0.1-rc 1.0.1-open @@ -87,9 +74,6 @@ When resolving package references and multiple package versions differ only by s 1.0.1-aaa ``` - - - ## Semantic Versioning 2.0.0 With NuGet 4.3.0+ and Visual Studio 2017 version 15.3+, NuGet supports [Semantic Versioning 2.0.0](http://semver.org/spec/v2.0.0.html). @@ -104,15 +88,20 @@ For nuget.org, a package is defined as a SemVer v2.0.0 package if either of the - The package's own version is SemVer v2.0.0 compliant but not SemVer v1.0.0 compliant, as defined above. - Any of the package's dependency version ranges has a minimum or maximum version that is SemVer v2.0.0 compliant but not SemVer v1.0.0 compliant, defined above; for example, *[1.0.0-alpha.1, )*. -If you upload a SemVer v2.0.0-specific package to nuget.org, the package is invisible to older clients and available to only the following NuGet clients: +If you upload a SemVer v2.0.0-specific package to nuget.org, the package is invisible to older clients and available to only the following NuGet clients: + - NuGet 4.3.0+ - Visual Studio 2017 version 15.3+ - dotnet.exe (.NET SDK 2.0.0+) Third-party clients: + - JetBrains Rider - Paket version 5.0+ + + + ## Version ranges and wildcards When referring to package dependencies, NuGet supports using interval notation for specifying version ranges, summarized as follows: @@ -132,32 +121,32 @@ When referring to package dependencies, NuGet supports using interval notation f When using the PackageReference or `project.json` package reference formats, NuGet also supports using a wildcard notation, \*, for Major, Minor, Patch, and pre-release suffix parts of the number. Wildcards are not supported with the `packages.config` format. > [!Note] -> Pre-release versions are not included when resolving version ranges. Pre-release versions *are* included when using a wildcard (\*). The version range *[1.0,2.0]*, for example, does not include 2.0-beta, but the wildcard notation _2.0-*_ does. However, due to issues [issue 912](https://github.com/NuGet/Home/issues/912), [4513](https://github.com/NuGet/Home/issues/4513), and [4859](https://github.com/NuGet/Home/issues/4859), the wildcard notation resolves the lowest matching version, not the latest. There is presently no means to resolve the latest version. +> Pre-release versions are not included when resolving version ranges. Pre-release versions *are* included when using a wildcard (\*). The version range *[1.0,2.0]*, for example, does not include 2.0-beta, but the wildcard notation _2.0-*_ does. See [issue 912](https://github.com/NuGet/Home/issues/912) for further discussion on pre-release wildcards. ### Examples -> [!Important] -> Always specify a version or version range for package dependencies. Without a version or version range, NuGet 2.8.x and earlier chooses the latest available package version when resolving a dependency, whereas NuGet 3.x and later chooses the lowest package version. Specifying a version or version range avoids this uncertainty. +Always specify a version or version range for package dependencies in project files, `packages.config` files, and `.nuspec` files. Without a version or version range, NuGet 2.8.x and earlier chooses the latest available package version when resolving a dependency, whereas NuGet 3.x and later chooses the lowest package version. Specifying a version or version range avoids this uncertainty. + +#### References in project files (PackageReference) -**References in project files:** ```xml - + - + + - + - + - + @@ -169,31 +158,62 @@ When using the PackageReference or `project.json` package reference formats, NuG **References in `packages.config`:** +In `packages.config`, every dependency is listed with an exact `version` attribute that's used when restoring packages. The `allowedVersions` attribute is used only during update operations to constrain the versions to which the package might be updated. + ```xml - + + + + + + + + + + + + + + + + + + + + +``` + +**References in `.nuspec` files** + +The `version` attribute in a `` element describes the range versions that are acceptable for a dependency. + +```xml + - + - + - + - + ``` - ## Normalized version numbers > [!Note] diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index 2da93dbbe..1245a5131 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -1,6 +1,4 @@ --- -# required metadata - title: .nuspec File Reference for NuGet | Microsoft Docs author: kraigb ms.author: kraigb @@ -8,24 +6,14 @@ manager: ghogen ms.date: 8/29/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: d4a4db9b-5c2d-46aa-9107-d2b01733df7c - -# optional metadata - description: The .nuspec file contains package metadata used when building a package and to provide information to package consumers. keywords: nuspec reference, NuGet package metadata, NuGet package manifest, nuspec schema -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - anangaur - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- # .nuspec reference @@ -118,7 +106,7 @@ These elements must appear within a `` element. ### Files element -The `` node may contain a `` or `` node as siblings to `` to specify which assembly and content files to include in the package. See [Including assembly files](#including-assembly-files) and [Including content files](#including-content-files) later in this topic for details. +The `` node may contain a `` node as a sibling to ``, and a or `` child under ``, to specify which assembly and content files to include in the package. See [Including assembly files](#including-assembly-files) and [Including content files](#including-content-files) later in this topic for details. ## Replacement tokens diff --git a/docs/Schema/packages-config.md b/docs/Schema/packages-config.md index 0ab6f92f4..d183267ab 100644 --- a/docs/Schema/packages-config.md +++ b/docs/Schema/packages-config.md @@ -1,31 +1,18 @@ --- -# required metadata - title: NuGet packages.config File Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 4/3/2017 +ms.date: 12/07/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 207b9547-4558-41dc-9f3f-4bbdfb1d74e3 - -# optional metadata - description: In some project types, packages.config maintains the list of NuGet packages used in the project. keywords: NuGet packages.config file, NuGet package references, NuGet dependencies -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # packages.config reference @@ -65,7 +52,7 @@ The following `packages.config` refers to nine packages, but `Microsoft.Net.Comp - + diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index 569e92c9d..dbb60aaa5 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -1,29 +1,22 @@ --- -# required metadata - title: NuGet Package Manager UI Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/25/2017 +ms.date: 12/08/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 62f6962b-7b84-4452-ae0d-a9e1ef1fc6f0 f1_keywords: - "vs.toolsoptionspages.nuget_package_manager" - "vs.toolsoptionspages.nuget_package_manager.general" - "vs.toolsoptionspages.nuget_package_manager.package_sources" - -# optional metadata - description: Instructions for using the NuGet Package Manager UI in Visual Studio for working with NuGet packages. keywords: NuGet UI, NuGet package manager UI, NuGet in Visual Studio, managing NuGet packages, NuGet user interface, package manager in Visual Studio ms.reviewer: - karann-msft - unniravindranathan - --- # NuGet Package Manager UI @@ -125,7 +118,7 @@ To manage package sources: ## Package manager Options control -When a package is selected, the Package Manager UI displays a small, expandable **Options** control below the version selector (shown here both collapsed and expanded): +When a package is selected, the Package Manager UI displays a small, expandable **Options** control below the version selector (shown here both collapsed and expanded). Note that for some project types, such as .NET Core and those using the `project.json` reference format, only the **Show preview window** option is provided. ![Package manager options](media/PackageManagerUIOptions.png) @@ -142,6 +135,8 @@ When selected, a modal window displays which the dependencies of a chosen packag ### Install and Update Options +(Not available for all project types.) + **Dependency behavior** configures how NuGet decides which versions of dependent packages to install: - *Ignore dependencies* skips installing any dependencies, which typically breaks the package being installed. @@ -161,6 +156,8 @@ When selected, a modal window displays which the dependencies of a chosen packag ### Uninstall Options +(Not available for all project types.) + **Remove dependencies**: when selected, removes any dependent packages if they're not referenced elsewhere in the project. **Force uninstall even if there are dependencies on it**: when selected, uninstalls a package even if it's still being referenced in the project. This is typically used in combination with **Remove dependencies** to remove a package and whatever dependencies it installed. Using this option may, however, lead to a broken references in the project. In such cases you may need to [reinstall those other packages](../consume-packages/reinstalling-and-updating-packages.md). diff --git a/docs/Tools/cli-ref-pack.md b/docs/Tools/cli-ref-pack.md index 1189da037..b8e0e5719 100644 --- a/docs/Tools/cli-ref-pack.md +++ b/docs/Tools/cli-ref-pack.md @@ -1,31 +1,25 @@ --- -# required metadata - title: NuGet CLI pack command | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 12/08/2017 ms.topic: reference ms.prod: nuget ms.technology: null ms.assetid: 55e9e4d2-8039-4e9b-bdd9-c8b3eb0e894b - -# optional metadata - description: Reference for the nuget.exe pack command keywords: nuget pack reference, pack command ms.reviewer: - karann-msft - unniravindranathan - --- # pack command (NuGet CLI) **Applies to:** package creation • **Supported versions:** 2.7+ -Creates a NuGet package based on the specified `.nuspec` or project file. +Creates a NuGet package based on the specified `.nuspec` or project file. The `dotnet pack` command (see [dotnet Commands](dotnet-Commands.md)) and `msbuild /t:pack` (see [MSBuild targets](../schema/msbuild-targets.md)) may be used as alternates. > [!Important] > Under Mono, creating a package from a project file is not supported. You also need to adjust non-local paths in the `.nuspec` file to Unix-style paths, as nuget.exe doesn't convert Windows pathnames itself. @@ -55,7 +49,7 @@ where `` and `` specify the `.nuspec` or project file, | NoDefaultExcludes | Prevents default exclusion of NuGet package files and files and folders starting with a dot, such as `.svn` and `.gitignore`. | | NoPackageAnalysis | Specifies that pack should not run package analysis after building the package. | | OutputDirectory | Specifies the folder in which the created package is stored. If no folder is specified, the current folder is used. | -| Properties | Specifies a list of token=value pairs, separated by semicolons, where each occurrence of `$token$` in the `.nuspec` file will be replaced with the given value. Values can be strings in quotation marks. | +| Properties | Specifies a list of properties that override values in the project file; see [Common MSBuild Project Properties](https://docs.microsoft.com/visualstudio/msbuild/common-msbuild-project-properties) for property names. The Properties argument here is a list of token=value pairs, separated by semicolons, where each occurrence of `$token$` in the `.nuspec` file will be replaced with the given value. Values can be strings in quotation marks. Note that for the "Configuration" property, the default is "Debug". To change to a Release configuration, use `-Properties Configuration=Release`. | | Suffix | *(3.4.4+)* Appends a suffix to the internally generated version number, typically used for appending build or other pre-release identifiers. For example, using `-suffix nightly` will create a package with a version number like `1.2.3-nightly`. Suffixes must start with a letter to avoid warnings, errors, and potential incompatibilities with different versions of NuGet and the NuGet Package Manager. | | Symbols | Specifies that the package contains sources and symbols. When used with a `.nuspec` file, this creates a regular NuGet package file and the corresponding symbols package. | | Tool | Specifies that the output files of the project should be placed in the `tool` folder. | @@ -92,6 +86,8 @@ nuget pack foo.nuspec nuget pack foo.csproj +nuget pack foo.csproj -Properties Configuration=Release + nuget pack foo.csproj -Build -Symbols -Properties owners=janedoe,xiaop;version="1.0.5" # create a package from project foo.csproj, using MSBuild version 12 to build the project From 1f2750d6d75085829e567510f41357de69fc00a7 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 8 Dec 2017 16:56:43 -0800 Subject: [PATCH 0403/2943] Correct license position on nuget.org --- docs/Consume-Packages/Overview-and-Workflow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Overview-and-Workflow.md b/docs/Consume-Packages/Overview-and-Workflow.md index 8b9094ca2..4b1bd5d60 100644 --- a/docs/Consume-Packages/Overview-and-Workflow.md +++ b/docs/Consume-Packages/Overview-and-Workflow.md @@ -26,7 +26,7 @@ Between nuget.org and private package galleries that your organization might est NuGet remembers the identity and version number of each installed package, recording it in either `packages.config`, the project file, or a `project.json` file in your project root, depending on project type and your version of NuGet. With NuGet 4.0+, [storing dependencies in the project file](../consume-packages/package-references-in-project-files.md) is the default (except for UWP projects targeting Windows 10 RS1). In any case, you can look in the appropriate file at any time to see the full list of dependencies for your project. > [!Tip] -> It's prudent to always check the license for each package you intend to use in your software. On nuget.org, you'll find a **License** link on the left side of each package's description page. +> It's prudent to always check the license for each package you intend to use in your software. On nuget.org, you'll find a license link on the right side of each package's description page. When installing packages, NuGet typically checks if the package is already available from its cache. You can manually clear this cache from the command line, as described on [Managing the NuGet cache](../consume-packages/managing-the-nuget-cache.md). From 87aa1c095e40f2ba5f3a8eb2f4ec64071a550a3c Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 8 Dec 2017 16:59:27 -0800 Subject: [PATCH 0404/2943] Tweaking the language and adding link to nuget pack --- docs/Tools/dotnet-Commands.md | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/docs/Tools/dotnet-Commands.md b/docs/Tools/dotnet-Commands.md index d297fd3ac..c255e4879 100644 --- a/docs/Tools/dotnet-Commands.md +++ b/docs/Tools/dotnet-Commands.md @@ -1,37 +1,25 @@ --- -# required metadata - title: dotNet NuGet commands | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 12/08/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 0c81dbc4-2c14-4ec8-b87a-b802a899c3ea - -# optional metadata - description: A short reference for NuGet-related commands using the dotnet command-line interface. keywords: dotnet NuGet commands, dotnet pack, dotnet restore, dotnet nuget locals, dotnet nuget push, dotnet nuget delete -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # dotNet commands The DotNet command-line interface, which runs on Windows, Mac OS X, and Linux, provides a number of essential nuget.exe commands as listed below. Where dotnet provides the desired commands, it is not necessary to download nuget.exe. -- [**dotnet pack**](https://docs.microsoft.com/dotnet/core/tools/dotnet-pack?tabs=netcore2x): Packs the code into a NuGet package. Only used for NETCore SDK projects. For everything else, use `nuget.exe pack` +- [**dotnet pack**](https://docs.microsoft.com/dotnet/core/tools/dotnet-pack?tabs=netcore2x): Packs code for NETCore SDK projects into a NuGet package. All other project types should use [`nuget pack`](cli-ref-pack.md) - [**dotnet restore**](https://docs.microsoft.com/dotnet/core/tools/dotnet-restore?tabs=netcore2x): Restores the dependencies and tools of a project. As of NuGet 4.0, this runs the same code as `nuget restore`. - [**dotnet nuget locals**](https://docs.microsoft.com/dotnet/core/tools/dotnet-nuget-locals): Clears or lists local NuGet resources such as http the -request cache, temporary cache, or machine-wide global packages folder. - [**dotnet nuget push**](https://docs.microsoft.com/dotnet/core/tools/dotnet-nuget-push): Pushes a package to a server and publishes it, applicable to nuget.org, Visual Studio Team Services, or any third-party NuGet servers. From bfe66ea550a388d65ecbed805acb9559bb28fc5e Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 11 Dec 2017 08:38:03 -0800 Subject: [PATCH 0405/2943] Correcting "post" to "host" --- docs/media/nuget-roles.png | Bin 18753 -> 18792 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/media/nuget-roles.png b/docs/media/nuget-roles.png index 3cb11c3c5a25990a7a47bfeccb91abea5d56e9e3..25d98ed950dfeb955828cabac189e428de869d66 100644 GIT binary patch literal 18792 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 c3jdd1ssGNXYjScQ@Ps1 Date: Mon, 11 Dec 2017 15:45:29 -0800 Subject: [PATCH 0406/2943] Remove the "the the" typo --- docs/What-is-NuGet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index 6d5f4dbf4..32ece8429 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -79,7 +79,7 @@ Instead, NuGet simply maintains a reference list of the packages upon which a pr With only the reference list, NuGet can then reinstall—that is, restore—all of those packages from public and/or private hosts at any later time. (For this reason, nuget.org does not allow permanent deletion of published packages, although they can be hidden; see [Deleting packages](Policies/deleting-packages.md).) When committing a project to source control, or sharing it in some other way, you need only include the reference list and need not include any package binaries (see [Packages and source control](Consume-Packages/Packages-and-Source-Control.md).) -The computer that receives a project, such as a build server obtaining a copy of the project as part of an automated deployment system, simply asks NuGet to restore dependencies whenever they're needed. Build systems like Visual Studio Team Services provide "NuGet restore" steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository) then open the project in Visual Studio and run a build, Visual Studio automatically restores the necessary NuGet packages. Developers can also tell NuGet to restore packages at any time using the the `nuget restore` CLI command or the `Install-Package` cmdlet in the Package Manager Console. +The computer that receives a project, such as a build server obtaining a copy of the project as part of an automated deployment system, simply asks NuGet to restore dependencies whenever they're needed. Build systems like Visual Studio Team Services provide "NuGet restore" steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository) then open the project in Visual Studio and run a build, Visual Studio automatically restores the necessary NuGet packages. Developers can also tell NuGet to restore packages at any time using the `nuget restore` CLI command or the `Install-Package` cmdlet in the Package Manager Console. Clearly, then, NuGet's primary role where developers are concerned is maintaining that reference list on behalf of your project and providing the means to efficiently restore (and update) those referenced packages. From 659cf5acf90f2ae8d72b22fe6c0a612154072edb Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 11 Dec 2017 17:06:55 -0800 Subject: [PATCH 0407/2943] Add note about non-standard framework names --- docs/Schema/Target-Frameworks.md | 175 +++++++++++++++---------------- 1 file changed, 82 insertions(+), 93 deletions(-) diff --git a/docs/Schema/Target-Frameworks.md b/docs/Schema/Target-Frameworks.md index b4f6a3a64..a47c7a40a 100644 --- a/docs/Schema/Target-Frameworks.md +++ b/docs/Schema/Target-Frameworks.md @@ -1,25 +1,19 @@ --- -# required metadata - title: Target Frameworks References for NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 8/23/2017 +ms.date: 12/11/2017 ms.topic: reference ms.prod: nuget ms.technology: null ms.assetid: 4343a48e-f6df-4a44-9d66-4616c3caacf5 - -# optional metadata - description: NuGet target framework references identify and isolate framework-dependent components of a package. keywords: NuGet package targeting, .NET framework targets, .NET framework versions ms.reviewer: - anangaur - karann-msft - unniravindranathan - --- # Target frameworks @@ -31,18 +25,16 @@ NuGet uses target framework references in a variety of places to specifically id - [packages.config](../Schema/packages-config.md): The `targetframework` attribute of a dependency specifies the variant of a package to install. - [project.json](../Schema/project-json.md): The `frameworks` node specifies the framework versions that the project can be compiled against. - > [!Note] > The NuGet client source code that calculates the tables below is found in the following locations: > - Supported framework names: [FrameworkConstants.cs](https://github.com/NuGet/NuGet.Client/blob/dev/src/NuGet.Core/NuGet.Frameworks/FrameworkConstants.cs) > - Framework precedence and mapping: [DefaultFrameworkMappings.cs](https://github.com/NuGet/NuGet.Client/blob/dev/src/NuGet.Core/NuGet.Frameworks/DefaultFrameworkMappings.cs) - ## Supported frameworks A framework is typically referenced by a short target framework moniker or TFM. In .NET Standard this is also is generalized to *TxM* to allow a single reference to multiple frameworks. -The NuGet clients support the following frameworks. Equivalents are shown within brackets []. +The NuGet clients support the frameworks in the table below. Equivalents are shown within brackets []. Note that some tools, such as `dotnet`, might use variations of canonical TFMs in some files. For example, `dotnet pack` uses `.NETCoreApp2.0` in a `.nuspec` file rather than `netcoreapp2.0`. The various NuGet client tools handle these variations properly, but you should always use canonical TFMs when editing files directly. | Name | Abbreviation | TFMs/TxMs | | ------------- | ------------ | --------- | @@ -51,78 +43,78 @@ The NuGet clients support the following frameworks. Equivalents are shown within | | | net35 | | | | net40 | | | | net403 | -| | |net45 | -| | |net451 | -| | |net452 | -| | |net46 | -| | |net461 | -| | |net462 | -|Windows Store | netcore | netcore [netcore45] -| | | netcore45 [win, win8] -| | | netcore451 [win81] -| | | netcore50 -|.NET MicroFramework | netmf | netmf -|Windows | win | win [win8, netcore45] -| | | win8 [netcore45, win] -| | | win81 [netcore451] -| | | win10 (not supported by Windows 10 Platform) -Silverlight | sl | sl4 -| | | sl5 -Windows Phone (SL) | wp | wp [wp7] -| | | wp7 -| | | wp75 -| | | wp8 -| | | wp81 -Windows Phone (UWP) | | wpa81 -Universal Windows Platform | uap | uap [uap10.0] -| | | uap10.0 -.NET Standard | netstandard | netstandard1.0 -| | | netstandard1.1 -| | | netstandard1.2 -| | | netstandard1.3 -| | | netstandard1.4 -| | | netstandard1.5 -| | | netstandard1.6 -| | | netstandard2.0 -.NET Core App | netcoreapp | netcoreapp1.0| -| | | netcoreapp1.1| -| | | netcoreapp2.0| -Tizen | tizen | tizen3| -| | | tizen4| +| | | net45 | +| | | net451 | +| | | net452 | +| | | net46 | +| | | net461 | +| | | net462 | +|Windows Store | netcore | netcore [netcore45] | +| | | netcore45 [win, win8] | +| | | netcore451 [win81] | +| | | netcore50 | +|.NET MicroFramework | netmf | netmf | +|Windows | win | win [win8, netcore45] | +| | | win8 [netcore45, win] | +| | | win81 [netcore451] | +| | | win10 (not supported by Windows 10 Platform) | +Silverlight | sl | sl4 | +| | | sl5 | +Windows Phone (SL) | wp | wp [wp7] | +| | | wp7 | +| | | wp75 | +| | | wp8 | +| | | wp81 | +Windows Phone (UWP) | | wpa81 | +Universal Windows Platform | uap | uap [uap10.0] | +| | | uap10.0 | +.NET Standard | netstandard | netstandard1.0 | +| | | netstandard1.1 | +| | | netstandard1.2 | +| | | netstandard1.3 | +| | | netstandard1.4 | +| | | netstandard1.5 | +| | | netstandard1.6 | +| | | netstandard2.0 | +.NET Core App | netcoreapp | netcoreapp1.0 | +| | | netcoreapp1.1 | +| | | netcoreapp2.0 | +Tizen | tizen | tizen3 | +| | | tizen4 | ## Deprecated frameworks The following frameworks are deprecated. Packages targeting these frameworks should migrate to the indicated replacements. -Deprecated framework | Replacement ---- | --- -aspnet50 | netcoreapp -aspnetcore50 | -dnxcore50 | -dnx | -dnx45 | -dnx451 | -dnx452 | -dotnet | netstandard -dotnet50 | -dotnet51 | -dotnet52 | -dotnet53 | -dotnet54 | -dotnet55 | -dotnet56 | -winrt | win +| Deprecated framework | Replacement +| --- | --- +| aspnet50 | netcoreapp | +| aspnetcore50 | +| dnxcore50 | +| dnx | +| dnx45 | +| dnx451 | +| dnx452 | +| dotnet | netstandard | +| dotnet50 | | +| dotnet51 | | +| dotnet52 | | +| dotnet53 | | +| dotnet54 | | +| dotnet55 | | +| dotnet56 | | +| winrt | win | ## Precedence A number of frameworks are related to and compatible with one another, but not necessarily equivalent: -Framework | Can use ---- | --- -uap (Universal Windows Platform) | win81 -| | wpa81 -| | netcore50 -win (Microsoft Store) | winrt -| | winrt45 +| Framework | Can use | +| --- | --- | +| uap (Universal Windows Platform) | win81 | +| | wpa81 | +| | netcore50 | +| win (Microsoft Store) | winrt | +| | | winrt45 | ## NET Platform Standard @@ -132,19 +124,16 @@ The [NuGet Get Nearest Framework Tool](https://aka.ms/s2m3th) simulates what NuG The `dotnet` series of monikers should be used in NuGet 3.3 and earlier; the `netstandard` moniker syntax should be used in v3.4 and later. - ## Portable Class Libraries > [!Warning] -> **PCLs are not recommended** -> -> Although PCLs are supported, package authors should support netstandard instead. The .NET Platform Standard is an evolution of PCLs and represents binary portability across platforms using a single moniker that isn't tied to a static like like *portable-a+b+c* monikers. +> **PCLs are not recommended**. Although PCLs are supported, package authors should support netstandard instead. The .NET Platform Standard is an evolution of PCLs and represents binary portability across platforms using a single moniker that isn't tied to a static like like *portable-a+b+c* monikers. To define a target framework that refers to multiple child-target-frameworks, the `portable` keyword use used to prefix the list of referenced frameworks. Avoid artificially including extra frameworks that are not directly compiled against because it can lead to unintended side-effects in those frameworks. Additional frameworks defined by third parties provide compatibility with other environments that are accessible in this manner. Additionally, there are shorthand profile numbers that are available to reference these combinations of related frameworks as `Profile#`, but this is not a recommended practice to use these numbers as it reduces the readability of the folders and `.nuspec`. -Profile # | Frameworks | Full name | .NET Standard +| Profile # | Frameworks | Full name | .NET Standard | --- | --- | --- | --- Profile2 | .NETFramework 4.0 | portable-net40+win8+sl4+wp7 | | | Windows 8.0 | | @@ -160,7 +149,7 @@ Profile # | Frameworks | Full name | .NET Standard | | Windows 8.0 | Profile6 | .NETFramework 4.0.3 | portable-net403+win8 | | Windows 8.0 | - Profile7 | .NETFramework 4.5 | portable-net45+win8 | netstandard1.1 + Profile7 | .NETFramework 4.5 | portable-net45+win8 | netstandard1.1 | | Windows 8.0 | Profile14 | .NETFramework 4.0 | portable-net40+sl5 | | Silverlight 5.0 | @@ -289,20 +278,20 @@ Profile # | Frameworks | Full name | .NET Standard Additionally, NuGet packages targeting Xamarin can use additional Xamarin-defined frameworks. See [Creating NuGet packages for Xamarin](https://developer.xamarin.com/guides/cross-platform/advanced/nuget/). - Name | Description | .NET Standard - --- | --- | --- - monoandroid | Mono Support for Android OS | netstandard1.4 - monotouch | Mono Support for iOS | netstandard1.4 - monomac | Mono Support for OSX | netstandard1.4 - xamarinios | Support for Xamarin for iOS | netstandard1.4 - xamarinmac | Supports for Xamarin for Mac | netstandard1.4 - xamarinpsthree | Support for Xamarin on Playstation 3 | netstandard1.4 - xamarinpsfour | Support for Xamarin on Playstation 4 | netstandard1.4 - xamarinpsvita | Support for Xamarin on PS Vita | netstandard1.4 - xamarinwatchos | Xamarin for Watch OS | netstandard1.4 - xamarintvos | Xamarin for TV OS | netstandard1.4 - xamarinxboxthreesixty | Xamarin for XBox 360 | netstandard1.4 - xamarinxboxone | Xamarin for XBox One | netstandard1.4 +| Name | Description | .NET Standard | +| --- | --- | --- +| monoandroid | Mono Support for Android OS | netstandard1.4 | +| monotouch | Mono Support for iOS | netstandard1.4 | +| monomac | Mono Support for OSX | netstandard1.4 | +| xamarinios | Support for Xamarin for iOS | netstandard1.4 | +| xamarinmac | Supports for Xamarin for Mac | netstandard1.4 | +| xamarinpsthree | Support for Xamarin on Playstation 3 | netstandard1.4 | +| xamarinpsfour | Support for Xamarin on Playstation 4 | netstandard1.4 | +| xamarinpsvita | Support for Xamarin on PS Vita | netstandard1.4 | +| xamarinwatchos | Xamarin for Watch OS | netstandard1.4 | +| xamarintvos | Xamarin for TV OS | netstandard1.4 | +| xamarinxboxthreesixty | Xamarin for XBox 360 | netstandard1.4 | +| xamarinxboxone | Xamarin for XBox One | netstandard1.4 | > [!Note] > Stephen Cleary has created a tool that lists the supported PCLs, which you can find on his post, [Framework profiles in .NET](http://blog.stephencleary.com/2012/05/framework-profiles-in-net.html). From 0779293b4fe74e63c0f8fad2641d5a50c84cd336 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 12 Dec 2017 14:19:49 -0800 Subject: [PATCH 0408/2943] Improvements from comments; issues 173 & 273 --- .../Configuring-NuGet-Behavior.md | 9 ++-- docs/Create-Packages/Creating-a-Package.md | 25 ++++++++--- ...-Credential-Providers-for-Visual-Studio.md | 13 ------ .../nuget-exe-Credential-Providers.md | 45 ++++++++++--------- docs/Tools/cli-ref-add.md | 6 --- docs/Tools/cli-ref-config.md | 8 +--- docs/Tools/cli-ref-delete.md | 6 --- docs/Tools/cli-ref-environment-variables.md | 6 --- docs/Tools/cli-ref-install.md | 5 +-- docs/Tools/cli-ref-locals.md | 1 - docs/Tools/cli-ref-push.md | 2 +- docs/Tools/cli-ref-restore.md | 2 +- docs/Tools/cli-ref-update.md | 2 +- 13 files changed, 55 insertions(+), 75 deletions(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index 31409655d..1989e5f72 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -114,7 +114,6 @@ Copy the template below into the new file and then use `nuget config --configFil
    - ## How settings are applied Multiple `NuGet.Config` files allow you to store settings in different locations so that they apply to a single project, a group of projects, or all projects. These settings collectively apply to any NuGet operation invoked from the command line or from Visual Studio, with settings that exist "closest" to a project or the current folder taking precedence. @@ -139,9 +138,9 @@ As NuGet finds settings in these files, they are applied as follows: Let's say you have the following folder structure on two separate drives: - disk_drive_1 - User - disk_drive_2 + disk_drive_1 + User + disk_drive_2 Project1 Source Project2 @@ -230,7 +229,7 @@ Mac/Linux: $XDG_DATA_HOME (typically ~/.local/share) ### NuGetDefaults.Config settings - `packageSources`: this collection has the same meaning as `packageSources` in regular config files and specifies the default sources in their preferred order. If this setting exists in `NuGetDefaults.Config`, then NuGet doesn't use nuget.org as a default package source. An administrator can thus make sure that everyone using this file is working with the same sources and avoids using nuget.org if desired. - + - `disabledPackageSources`: this collection also has the same meaning as in `NuGet.Config` files, where each affected source is listed by its name and a true/false value indicating whether it's disabled. This allows the source name and URL to remain in `packageSources` without having it turned on by default. Individual developers can then re-enable the source by setting the source's value to false in other `NuGet.Config` files without having to find the correct URL again. This is also useful to supply developers with a full list of internal source URLs for an organization while enabling only an individual team's source by default. - `defaultPushSource`: specifies the default target for `nuget push` operations, overriding the built-in default of nuget.org. Administrators can deploy this setting to avoid publishing internal packages to the public nuget.org by accident, as developers specifically need to use `nuget push -Source` to publish to nuget.org. diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 3c1acddd9..e771c2e03 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -3,10 +3,9 @@ title: How to create a NuGet package | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/20/2017 +ms.date: 12/12/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 456797cb-e3e4-4b88-9b01-8b5153cee802 description: A detailed guide to the process of designing and creating a NuGet package, including key decision points like files and versioning. @@ -63,11 +62,13 @@ If your library contains COM interop assemblies, follow additional the guideline Once you know what files you want to package, the next step is creating a package manifest in a `.nuspec` XML file. The manifest: + 1. Describes the package's contents and is itself included in the package. -2. Drives both the creation of the package and instructs NuGet on how to install the package into a project. For example, the manifest identifies other package dependencies such that NuGet can also install those dependencies when the main package is installed. -3. Contains both required and optional properties as described below. For exact details, including other properties not mentioned here, see the [.nuspec reference](../schema/nuspec.md). +1. Drives both the creation of the package and instructs NuGet on how to install the package into a project. For example, the manifest identifies other package dependencies such that NuGet can also install those dependencies when the main package is installed. +1. Contains both required and optional properties as described below. For exact details, including other properties not mentioned here, see the [.nuspec reference](../schema/nuspec.md). Required properties: + - The package identifier, which must be unique across the gallery that hosts the package. - A specific version number in the form *Major.Minor.Patch[-Suffix]* where *-Suffix* identifies [pre-release versions](Prerelease-Packages.md) - The package title as it should appears on the host (like nuget.org) @@ -75,6 +76,7 @@ Required properties: - A long description of the package. Common optional properties: + - Release notes - Copyright information - A short description for the [Package Manager UI in Visual Studio](../Tools/Package-Manager-UI.md) @@ -243,7 +245,7 @@ NuGet tracks installed solution-level packages in a `packages.config` file in th The following command creates a default manifest with placeholders, which ensures you start with the proper file structure: -``` +``` nuget spec [] ``` @@ -454,6 +456,19 @@ The following options are a few that are common with Visual Studio projects: nuget pack MyProject.csproj -symbols ``` +### Testing package installation + +Before publishing a package, you typically want to test the process of installing a package into a project. The tests make sure that the necessarily files all end up in their correct places in the project. + +You can test installations manually in Visual Studio or on the command line using the normal [package installation steps](../Quickstart/Use-a-Package.md). + +For automated testing, the basic process is as follows: + +1. Copy the `.nupkg` file to a local folder. +1. Add the folder to your package sources using the `nuget sources -name -source ` command (see [nuget sources](../tools/cli-ref-sources.md)). Note that you need only set this local source once on any given computer. +1. Install the package from that source using `nuget install -source ` where `` matches the name of your source as given to `nuget sources`. Specifying the source ensures that the package is installed from that source alone. +1. Examine the file system to check that files are installed correctly. + ## Next Steps Once you've created a package, which is a `.nupkg` file, you can publish it to the gallery of your choice as described on [Publishing a Package](../create-packages/publish-a-package.md). 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 afad59e46..1c6fd1869 100644 --- a/docs/Reference/extensibility/NuGet-Credential-Providers-for-Visual-Studio.md +++ b/docs/Reference/extensibility/NuGet-Credential-Providers-for-Visual-Studio.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet credential providers for Visual Studio | Microsoft Docs author: kraigb ms.author: kraigb @@ -8,24 +6,13 @@ manager: ghogen ms.date: 1/9/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 9c7f6d16-f437-47c4-82d4-6c996e0b18ec - -# optional metadata - description: NuGet credential providers authenticate with feeds by implementing the IVsCredentialProvider interface in a Visual Studio extension. keywords: NuGet credential providers, authenticate with feed, authenticate with gallery, NuGet visual studio extension -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Authenticating feeds in Visual Studio with NuGet credential providers diff --git a/docs/Reference/extensibility/nuget-exe-Credential-Providers.md b/docs/Reference/extensibility/nuget-exe-Credential-Providers.md index 793854220..f588bb90c 100644 --- a/docs/Reference/extensibility/nuget-exe-Credential-Providers.md +++ b/docs/Reference/extensibility/nuget-exe-Credential-Providers.md @@ -1,31 +1,18 @@ --- -# required metadata - title: nuget.exe Credential Providers | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 12/12/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 3cf592de-39f2-4e7f-a597-62635fdcedfa - -# optional metadata - description: nuget.exe credential providers authenticate with a feed, and are implemented as command-line executables that follow specific conventions. keywords: nuget.exe credential providers, credential provider API, authenticate with feed, authenticate with gallery -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Authenticating feeds with nuget.exe credential providers @@ -38,9 +25,8 @@ When `nuget.exe` needs credentials to authenticate with a feed, it looks for the 1. NuGet then uses plug-in credential providers, subject to the order given below. (And example is the [Visual Studio Team Services Credential Provider](https://www.visualstudio.com/docs/package/get-started/nuget/auth#vsts-credential-provider).) 1. NuGet then prompts the user for credentials on the command line. -> [!Note] -> nuget.exe credential providers only work in nuget.exe (not in dotnet restore or Visual Studio). For credential providers with Visual Studio, see [nuget.exe Credential Providers for Visual Studio](nuget-credential-providers-for-visual-studio.md) - +Note that the credential providers described here work only in `nuget.exe` and not in 'dotnet restore' or Visual Studio. For credential providers with Visual Studio, see [nuget.exe Credential Providers for Visual Studio](nuget-credential-providers-for-visual-studio.md) + nuget.exe credential providers can be used in 3 ways: - **Globally**: to make a credential provider available to all instances of `nuget.exe` run under the current user's profile, add it to `%LocalAppData%\NuGet\CredentialProviders`. You may need to create the `CredentialProviders` folder. Credential providers can be installed at the root of the `CredentialProviders` folder or within a subfolder. If a credential provider has multiple files/assemblies, you can use subfolders to keep the providers organized. @@ -51,7 +37,6 @@ nuget.exe credential providers can be used in 3 ways: When loading credential providers, `nuget.exe` searches the above locations, in order, for any file named `credentialprovider*.exe`, then loads those files in the order they're found. If multiple credential providers exist in the same folder, they're loaded in alphabetical order. - ## Creating a nuget.exe credential provider A credential provider is a command-line executable, named in the form `CredentialProvider*.exe`, that gathers inputs, acquires credentials as appropriate, and then returns the appropriate exit status code and standard output. @@ -67,7 +52,6 @@ A provider must do the following: ### Input parameters - | Parameter/Switch |Description| |----------------|-----------| | Uri {value} | The package source URI requiring credentials.| @@ -75,7 +59,7 @@ A provider must do the following: | IsRetry | If present, indicates that this attempt is a retry of a previously failed attempt. Providers typically use this flag to ensure that they bypass any existing cache and prompt for new credentials if possible.| | Verbosity {value} | If present, one of the following values: "normal", "quiet", or "detailed". If no value is supplied, defaults to "normal". Providers should use this as an indication of the level of optional logging to emit to the standard error stream. | -### Exit codes +### Exit codes | Code |Result | Description | |----------------|-----------|-----------| @@ -96,3 +80,24 @@ Example stdout: { "Username" : "freddy@example.com", "Password" : "bwm3bcx6txhprzmxhl2x63mdsul6grctazoomtdb6kfbof7m3a3z", "Message" : "" } + +## Troubleshooting a credential provider + +At present, NuGet doesn't provide much direct support for debugging custom credential providers; [issue 4598](https://github.com/NuGet/Home/issues/4598) is tracking this work. + +You can also do the following: + +- Run nuget.exe with the `-verbosity` switch to inspect detailed output. +- Add debug messages to `stdout` in appropriate places. +- Be sure that you're using nuget.exe 3.3 or higher. +- Attach debugger on startup with this code snippet: + + ```cs + while (!Debugger.IsAttached) + { + System.Threading.Thread.Sleep(100); + } + Debugger.Break(); + ``` + +For further help, [submit a support request a nuget.org](https://www.nuget.org/policies/Contact). diff --git a/docs/Tools/cli-ref-add.md b/docs/Tools/cli-ref-add.md index bf6a2884e..8e5fd8f03 100644 --- a/docs/Tools/cli-ref-add.md +++ b/docs/Tools/cli-ref-add.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet CLI add command | Microsoft Docs author: kraigb ms.author: kraigb @@ -10,15 +8,11 @@ ms.topic: reference ms.prod: nuget ms.technology: null ms.assetid: 4f68a016-ad4e-41fc-b869-88910fc5121e - -# optional metadata - description: Reference for the nuget.exe add command keywords: nuget add reference, add package command ms.reviewer: - karann-msft - unniravindranathan - --- # add command (NuGet CLI) diff --git a/docs/Tools/cli-ref-config.md b/docs/Tools/cli-ref-config.md index 82d1d088b..87ad3c050 100644 --- a/docs/Tools/cli-ref-config.md +++ b/docs/Tools/cli-ref-config.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet CLI config command | Microsoft Docs author: kraigb ms.author: kraigb @@ -10,15 +8,11 @@ ms.topic: reference ms.prod: nuget ms.technology: null ms.assetid: a50295ff-8be9-47d9-a260-822e899334cb - -# optional metadata - description: Reference for the nuget.exe config command keywords: nuget config reference, config command ms.reviewer: - karann-msft - unniravindranathan - --- # config command (NuGet CLI) @@ -43,7 +37,7 @@ In NuGet 3.4+, `` can use [environment variables](cli-ref-environment-var | Option | Description | | --- | --- | | AsPath | Returns the config value as a path, ignored when `-Set` is used. | -| ConfigFile | *(2.5+)* The NuGet configuration file to modify. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | *(2.5+)* The NuGet configuration file to modify. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | | NonInteractive | Suppresses prompts for user input or confirmations. | diff --git a/docs/Tools/cli-ref-delete.md b/docs/Tools/cli-ref-delete.md index 58324bd45..b9a830ff7 100644 --- a/docs/Tools/cli-ref-delete.md +++ b/docs/Tools/cli-ref-delete.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet CLI delete command | Microsoft Docs author: kraigb ms.author: kraigb @@ -10,15 +8,11 @@ ms.topic: reference ms.prod: nuget ms.technology: null ms.assetid: c213a07a-711d-47e0-9ee6-1d582e6cdb69 - -# optional metadata - description: Reference for the nuget.exe delete command keywords: nuget delete reference, delete package command ms.reviewer: - karann-msft - unniravindranathan - --- # delete command (NuGet CLI) diff --git a/docs/Tools/cli-ref-environment-variables.md b/docs/Tools/cli-ref-environment-variables.md index 702d5e2b5..446189381 100644 --- a/docs/Tools/cli-ref-environment-variables.md +++ b/docs/Tools/cli-ref-environment-variables.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet CLI environment variables | Microsoft Docs author: kraigb ms.author: kraigb @@ -10,15 +8,11 @@ ms.topic: reference ms.prod: nuget ms.technology: null ms.assetid: 1f5c31ca-fa0a-4798-a906-110f2c73d00b - -# optional metadata - description: Reference for the nuget.exe environment variables keywords: nuget environment variables ms.reviewer: - karann-msft - unniravindranathan - --- # NuGet CLI environment variables diff --git a/docs/Tools/cli-ref-install.md b/docs/Tools/cli-ref-install.md index 3b114b85f..73a96a154 100644 --- a/docs/Tools/cli-ref-install.md +++ b/docs/Tools/cli-ref-install.md @@ -19,7 +19,7 @@ ms.reviewer: **Applies to:** package consumption • **Supported versions:** all -Downloads and installs a package into a project, defaulting to the current folder, using specified package sources. +Downloads and installs a package into a project, defaulting to the current folder, using specified package sources. > [!Tip] > To download a package directly outside the context of a project, visit the package's page on [nuget.org](https://www.nuget.org) and select the **Download** link. @@ -40,7 +40,6 @@ nuget install [options] where `` names the package to install (using the latest version), or `` identifies the `packages.config` file that lists the packages to install. You can indicate a specific version with the `-Version` option. - ## Options | Option | Description | @@ -59,7 +58,7 @@ where `` names the package to install (using the latest version), or | PreRelease | Allows prerelease packages to be installed. This flag is not required when restoring packages with `packages.config`. | | RequireConsent | Verifies that restoring packages is enabled before downloading and installing the packages. For details, see [Package Restore](../consume-packages/package-restore.md). | | SolutionDirectory | Specifies root folder of the solution for which to restore packages. | -| Source | Specifies a list of package sources to use. | +| Source | Specifies list of package sources (as URLS) to use. If omitted, the command uses the sources provided in configuration files, see [Configuring NuGet behvior](../Consume-Packages/Configuring-NuGet-Behavior.md). | | Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | | Version | Specifies the version of the package to install. | diff --git a/docs/Tools/cli-ref-locals.md b/docs/Tools/cli-ref-locals.md index 1e964f175..afb1a7946 100644 --- a/docs/Tools/cli-ref-locals.md +++ b/docs/Tools/cli-ref-locals.md @@ -35,7 +35,6 @@ nuget locals [options] where `` is one of `all`, `http-cache`, `packages-cache`, `global-packages`, and `temp` *(3.4+)*. - ## Options | Option | Description | diff --git a/docs/Tools/cli-ref-push.md b/docs/Tools/cli-ref-push.md index 954ca37c2..6da9f8615 100644 --- a/docs/Tools/cli-ref-push.md +++ b/docs/Tools/cli-ref-push.md @@ -51,7 +51,7 @@ where `` identifies the package to push to the server. | Help | Displays help information for the command. | | NonInteractive | Suppresses prompts for user input or confirmations. | | NoSymbols | *(3.5+)* If a symbols package exists, it will not be pushed to a symbol server. | -| Source | Specifies the server URL. With NuGet 2.5+, NuGet will identify a UNC or local folder source and simply copy the file there instead of pushing it using HTTP. Also, starting with NuGet 3.4.2, this is a mandatory parameter unless the `NuGet.Config` file specifies a *DefaultPushSource* value. | +| Source | Specifies the server URL. With NuGet 2.5+, NuGet will identify a UNC or local folder source and simply copy the file there instead of pushing it using HTTP. Also, starting with NuGet 3.4.2, this is a mandatory parameter unless the `NuGet.Config` file specifies a *DefaultPushSource* value (see [Configuring NuGet behvior](../Consume-Packages/Configuring-NuGet-Behavior.md)). | | SymbolSource | *(3.5+)* Specifies the symbol server URL; nuget.smbsrc.net is used when pushing to nuget.org | | SymbolApiKey | *(3.5+)* Specifies the API key for the URL specified in `-SymbolSource`. | | Timeout | Specifies the timeout, in seconds, for pushing to a server. The default is 300 seconds (5 minutes). | diff --git a/docs/Tools/cli-ref-restore.md b/docs/Tools/cli-ref-restore.md index 1c2d557c3..64fdda4e4 100644 --- a/docs/Tools/cli-ref-restore.md +++ b/docs/Tools/cli-ref-restore.md @@ -62,7 +62,7 @@ where `` specifies the location of a solution, a `packages.config` | Recursive | *(4.0+)* Restores all references projects for UWP and .NET Core projects. Does not apply to projects using `packages.config`. | | RequireConsent | Verifies that restoring packages is enabled before downloading and installing the packages. For details, see [Package Restore](../consume-packages/package-restore.md). | | SolutionDirectory | Specifies the solution folder. Not valid when restoring packages for a solution. | -| Source | Specifies list of package sources (as URLS) to use for the restore. | +| Source | Specifies list of package sources (as URLS) to use for the restore. If omitted, the command uses the sources provided in configuration files, see [Configuring NuGet behvior](../Consume-Packages/Configuring-NuGet-Behavior.md). | | Verbosity |>Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | Also see [Environment variables](cli-ref-environment-variables.md) diff --git a/docs/Tools/cli-ref-update.md b/docs/Tools/cli-ref-update.md index a9392645f..3221aecae 100644 --- a/docs/Tools/cli-ref-update.md +++ b/docs/Tools/cli-ref-update.md @@ -51,7 +51,7 @@ where `` identifies either a `packages.config` or solution file that | RepositoryPath | Specifies the local folder where packages are installed. | | Safe | Specifies that only updates with the highest version available within the same major and minor version as the installed package will be installed. | | Self | *(1.4+)* Updates nuget.exe to the latest version; all other arguments are ignored. | -| Source | Specifies a list of package sources to use for the updates. | +| Source | Specifies list of package sources (as URLS) to use for the updates. If omitted, the command uses the sources provided in configuration files, see [Configuring NuGet behvior](../Consume-Packages/Configuring-NuGet-Behavior.md). | | Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | | Version | When used with one package ID, specifies the version of the package to update. | From 18677e2cee40d8b3b4278777afe2f0ae58cfc72f Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 12 Dec 2017 16:11:56 -0800 Subject: [PATCH 0409/2943] Update Publish-a-package.md --- docs/Create-Packages/Publish-a-package.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index 366b7b089..0b96f0007 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -78,6 +78,12 @@ Next, you can either upload the package through the nuget.org web portal, push t ![Message indicating a package is not yet indexed](media/publish_NotYetIndexed.png) +### Package Validation and indexing + +Packages pushed to NuGet.org undergo several validations. When the package has passed all validation checks, it takes a whiles for it to be indexed and appear in serach resutlts. Once indexing is complete, you'll receive an email confirming that the package was sucessfully published. If the package fails a validation check, the package details page will display the associated error and you'll also receive an email notifying you about it. + +Package validation and indexing usually takes under 15 minutes. If the package publishing is taking longer than expected, visit [status.nuget.org](https://status.nuget.org/) to check if NuGet.org is experiencing any interruptions. If all systems are operational and the package hasn't been successfully published within an hour, please login to NuGet.org and contact us using the Contact Support link on the package page. + ### Visual Studio Team Services (CI/CD) If you push packages to nuget.org using Visual Studio Team Services as part of your Continuous Integration/Deployment process, you must use nuget.exe 4.1 or above in the NuGet tasks. Details can be found on [Using the latest NuGet in your build](https://blogs.msdn.microsoft.com/devops/2017/09/29/using-the-latest-nuget-in-your-build/) (Microsoft DevOps blog). From 86b7d8649ab9e390e8e643a65c8316b3dd187fc1 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 12 Dec 2017 16:51:54 -0800 Subject: [PATCH 0410/2943] Update Publish-a-package.md --- docs/Create-Packages/Publish-a-package.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index 0b96f0007..47dcf051e 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -78,9 +78,9 @@ Next, you can either upload the package through the nuget.org web portal, push t ![Message indicating a package is not yet indexed](media/publish_NotYetIndexed.png) -### Package Validation and indexing +### Package Validation and Indexing -Packages pushed to NuGet.org undergo several validations. When the package has passed all validation checks, it takes a whiles for it to be indexed and appear in serach resutlts. Once indexing is complete, you'll receive an email confirming that the package was sucessfully published. If the package fails a validation check, the package details page will display the associated error and you'll also receive an email notifying you about it. +Packages pushed to NuGet.org undergo several validations. When the package has passed all validation checks, it might take a while for it to be indexed and appear in serach resutlts. Once indexing is complete, you'll receive an email confirming that the package was sucessfully published. If the package fails a validation check, the package details page will update to display the associated error and you'll also receive an email notifying you about it. Package validation and indexing usually takes under 15 minutes. If the package publishing is taking longer than expected, visit [status.nuget.org](https://status.nuget.org/) to check if NuGet.org is experiencing any interruptions. If all systems are operational and the package hasn't been successfully published within an hour, please login to NuGet.org and contact us using the Contact Support link on the package page. From ada11da5155bacec445ab6e056ac7d84ebc3c9fd Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 12 Dec 2017 16:55:04 -0800 Subject: [PATCH 0411/2943] Update Publish-a-package.md --- docs/Create-Packages/Publish-a-package.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index 366b7b089..47dcf051e 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -78,6 +78,12 @@ Next, you can either upload the package through the nuget.org web portal, push t ![Message indicating a package is not yet indexed](media/publish_NotYetIndexed.png) +### Package Validation and Indexing + +Packages pushed to NuGet.org undergo several validations. When the package has passed all validation checks, it might take a while for it to be indexed and appear in serach resutlts. Once indexing is complete, you'll receive an email confirming that the package was sucessfully published. If the package fails a validation check, the package details page will update to display the associated error and you'll also receive an email notifying you about it. + +Package validation and indexing usually takes under 15 minutes. If the package publishing is taking longer than expected, visit [status.nuget.org](https://status.nuget.org/) to check if NuGet.org is experiencing any interruptions. If all systems are operational and the package hasn't been successfully published within an hour, please login to NuGet.org and contact us using the Contact Support link on the package page. + ### Visual Studio Team Services (CI/CD) If you push packages to nuget.org using Visual Studio Team Services as part of your Continuous Integration/Deployment process, you must use nuget.exe 4.1 or above in the NuGet tasks. Details can be found on [Using the latest NuGet in your build](https://blogs.msdn.microsoft.com/devops/2017/09/29/using-the-latest-nuget-in-your-build/) (Microsoft DevOps blog). From 58d3bfd781f4b429226c0eb6c7667c400aacae7a Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 12 Dec 2017 16:59:20 -0800 Subject: [PATCH 0412/2943] Update Publish-a-package.md --- docs/Create-Packages/Publish-a-package.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index 47dcf051e..63be711f3 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -80,9 +80,9 @@ Next, you can either upload the package through the nuget.org web portal, push t ### Package Validation and Indexing -Packages pushed to NuGet.org undergo several validations. When the package has passed all validation checks, it might take a while for it to be indexed and appear in serach resutlts. Once indexing is complete, you'll receive an email confirming that the package was sucessfully published. If the package fails a validation check, the package details page will update to display the associated error and you'll also receive an email notifying you about it. +Packages pushed to NuGet.org undergo several validations. When the package has passed all validation checks, it might take a while for it to be indexed and appear in search results. Once indexing is complete, you'll receive an email confirming that the package was successfully published. If the package fails a validation check, the package details page will update to display the associated error and you'll also receive an email notifying you about it. -Package validation and indexing usually takes under 15 minutes. If the package publishing is taking longer than expected, visit [status.nuget.org](https://status.nuget.org/) to check if NuGet.org is experiencing any interruptions. If all systems are operational and the package hasn't been successfully published within an hour, please login to NuGet.org and contact us using the Contact Support link on the package page. +Package validation and indexing usually takes under 15 minutes. If it is taking longer than expected, visit [status.nuget.org](https://status.nuget.org/) to check if NuGet.org is experiencing any interruptions. If all systems are operational and the package hasn't been successfully published within an hour, please login to NuGet.org and contact us using the Contact Support link on the package page. ### Visual Studio Team Services (CI/CD) From 13139f3ce91d46f500abc79f69aa1274a2e8d86c Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 12 Dec 2017 16:59:37 -0800 Subject: [PATCH 0413/2943] Update Publish-a-package.md --- docs/Create-Packages/Publish-a-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index 47dcf051e..eec9f1f05 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -80,7 +80,7 @@ Next, you can either upload the package through the nuget.org web portal, push t ### Package Validation and Indexing -Packages pushed to NuGet.org undergo several validations. When the package has passed all validation checks, it might take a while for it to be indexed and appear in serach resutlts. Once indexing is complete, you'll receive an email confirming that the package was sucessfully published. If the package fails a validation check, the package details page will update to display the associated error and you'll also receive an email notifying you about it. +Packages pushed to NuGet.org undergo several validations. When the package has passed all validation checks, it might take a while for it to be indexed and appear in search results. Once indexing is complete, you'll receive an email confirming that the package was successfully published. If the package fails a validation check, the package details page will update to display the associated error and you'll also receive an email notifying you about it. Package validation and indexing usually takes under 15 minutes. If the package publishing is taking longer than expected, visit [status.nuget.org](https://status.nuget.org/) to check if NuGet.org is experiencing any interruptions. If all systems are operational and the package hasn't been successfully published within an hour, please login to NuGet.org and contact us using the Contact Support link on the package page. From 87a31778daddef4b8c48be02aa6608b524f14aad Mon Sep 17 00:00:00 2001 From: Chris Maddock Date: Wed, 13 Dec 2017 11:23:14 +0000 Subject: [PATCH 0414/2943] Fix typo --- docs/Create-Packages/Overview-and-Workflow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Overview-and-Workflow.md b/docs/Create-Packages/Overview-and-Workflow.md index 329781533..019bc40cf 100644 --- a/docs/Create-Packages/Overview-and-Workflow.md +++ b/docs/Create-Packages/Overview-and-Workflow.md @@ -31,7 +31,7 @@ A package can also serve to only pull in any number of other dependencies, witho Whatever the case, creating a package begins with deciding which assemblies and other files to package. You then create a manifest file, referred to as a `.nuspec` file, to describe the package's contents along with its identifer, version number, copyright information, MSBuild props and targets, and much more. -When you've prepared all the necessary files in the appropriate folders and have created the appropriate `.nuspec` file, you then use the `nuget pack` command (or the[MSBuild pack target](../Schema/msbuild-targets.md)) to put everything together into a `.nupkg` file. You're then ready to deploy the package to whatever host makes it available to other developers. +When you've prepared all the necessary files in the appropriate folders and have created the appropriate `.nuspec` file, you then use the `nuget pack` command (or the [MSBuild pack target](../Schema/msbuild-targets.md)) to put everything together into a `.nupkg` file. You're then ready to deploy the package to whatever host makes it available to other developers. > [!Tip] > A NuGet package with the `.nupkg` extension is simple a ZIP file. To easily examine any package's contents, change the extension to `.zip` and expand its contents as usual. Just be sure to change the extension back to `.nupkg` before attempting to upload it to a host. From 07d9b1e38d1fc31b795472b60f442cc2430a53a5 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 13 Dec 2017 14:09:55 -0800 Subject: [PATCH 0415/2943] Fix typos --- docs/Tools/cli-ref-install.md | 2 +- docs/Tools/cli-ref-push.md | 2 +- docs/Tools/cli-ref-restore.md | 2 +- docs/Tools/cli-ref-update.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/Tools/cli-ref-install.md b/docs/Tools/cli-ref-install.md index 73a96a154..88a4d2f19 100644 --- a/docs/Tools/cli-ref-install.md +++ b/docs/Tools/cli-ref-install.md @@ -58,7 +58,7 @@ where `` names the package to install (using the latest version), or | PreRelease | Allows prerelease packages to be installed. This flag is not required when restoring packages with `packages.config`. | | RequireConsent | Verifies that restoring packages is enabled before downloading and installing the packages. For details, see [Package Restore](../consume-packages/package-restore.md). | | SolutionDirectory | Specifies root folder of the solution for which to restore packages. | -| Source | Specifies list of package sources (as URLS) to use. If omitted, the command uses the sources provided in configuration files, see [Configuring NuGet behvior](../Consume-Packages/Configuring-NuGet-Behavior.md). | +| Source | Specifies the list of package sources (as URLs) to use. If omitted, the command uses the sources provided in configuration files, see [Configuring NuGet behavior](../Consume-Packages/Configuring-NuGet-Behavior.md). | | Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | | Version | Specifies the version of the package to install. | diff --git a/docs/Tools/cli-ref-push.md b/docs/Tools/cli-ref-push.md index 6da9f8615..fd5989487 100644 --- a/docs/Tools/cli-ref-push.md +++ b/docs/Tools/cli-ref-push.md @@ -51,7 +51,7 @@ where `` identifies the package to push to the server. | Help | Displays help information for the command. | | NonInteractive | Suppresses prompts for user input or confirmations. | | NoSymbols | *(3.5+)* If a symbols package exists, it will not be pushed to a symbol server. | -| Source | Specifies the server URL. With NuGet 2.5+, NuGet will identify a UNC or local folder source and simply copy the file there instead of pushing it using HTTP. Also, starting with NuGet 3.4.2, this is a mandatory parameter unless the `NuGet.Config` file specifies a *DefaultPushSource* value (see [Configuring NuGet behvior](../Consume-Packages/Configuring-NuGet-Behavior.md)). | +| Source | Specifies the server URL. With NuGet 2.5+, NuGet will identify a UNC or local folder source and simply copy the file there instead of pushing it using HTTP. Also, starting with NuGet 3.4.2, this is a mandatory parameter unless the `NuGet.Config` file specifies a *DefaultPushSource* value (see [Configuring NuGet behavior](../Consume-Packages/Configuring-NuGet-Behavior.md)). | | SymbolSource | *(3.5+)* Specifies the symbol server URL; nuget.smbsrc.net is used when pushing to nuget.org | | SymbolApiKey | *(3.5+)* Specifies the API key for the URL specified in `-SymbolSource`. | | Timeout | Specifies the timeout, in seconds, for pushing to a server. The default is 300 seconds (5 minutes). | diff --git a/docs/Tools/cli-ref-restore.md b/docs/Tools/cli-ref-restore.md index 64fdda4e4..5c70b8120 100644 --- a/docs/Tools/cli-ref-restore.md +++ b/docs/Tools/cli-ref-restore.md @@ -62,7 +62,7 @@ where `` specifies the location of a solution, a `packages.config` | Recursive | *(4.0+)* Restores all references projects for UWP and .NET Core projects. Does not apply to projects using `packages.config`. | | RequireConsent | Verifies that restoring packages is enabled before downloading and installing the packages. For details, see [Package Restore](../consume-packages/package-restore.md). | | SolutionDirectory | Specifies the solution folder. Not valid when restoring packages for a solution. | -| Source | Specifies list of package sources (as URLS) to use for the restore. If omitted, the command uses the sources provided in configuration files, see [Configuring NuGet behvior](../Consume-Packages/Configuring-NuGet-Behavior.md). | +| Source | Specifies the list of package sources (as URLs) to use for the restore. If omitted, the command uses the sources provided in configuration files, see [Configuring NuGet behavior](../Consume-Packages/Configuring-NuGet-Behavior.md). | | Verbosity |>Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | Also see [Environment variables](cli-ref-environment-variables.md) diff --git a/docs/Tools/cli-ref-update.md b/docs/Tools/cli-ref-update.md index 3221aecae..fe1475422 100644 --- a/docs/Tools/cli-ref-update.md +++ b/docs/Tools/cli-ref-update.md @@ -51,7 +51,7 @@ where `` identifies either a `packages.config` or solution file that | RepositoryPath | Specifies the local folder where packages are installed. | | Safe | Specifies that only updates with the highest version available within the same major and minor version as the installed package will be installed. | | Self | *(1.4+)* Updates nuget.exe to the latest version; all other arguments are ignored. | -| Source | Specifies list of package sources (as URLS) to use for the updates. If omitted, the command uses the sources provided in configuration files, see [Configuring NuGet behvior](../Consume-Packages/Configuring-NuGet-Behavior.md). | +| Source | Specifies the list of package sources (as URLs) to use for the updates. If omitted, the command uses the sources provided in configuration files, see [Configuring NuGet behavior](../Consume-Packages/Configuring-NuGet-Behavior.md). | | Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | | Version | When used with one package ID, specifies the version of the package to update. | From 89b8b3753df3b26c4e88ee837d5290c8e2a7296f Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 13 Dec 2017 15:15:59 -0800 Subject: [PATCH 0416/2943] Clean up change to errors https://github.com/NuGet/docs.microsoft.com-nuget/issues/447 --- docs/Reference/Errors-and-Warnings.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index d33b93740..2be0e3c83 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -3,7 +3,7 @@ title: NuGet Restore Errors and Warnings Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 8/14/2017 +ms.date: 12/13/2017 ms.topic: reference ms.prod: nuget ms.technology: null @@ -29,7 +29,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | Group | Error Numbers | | --- | --- | | [Invalid input errors](#invalid-input-errors) | [NU1001](#nu1001), [NU1002](#nu1002), [NU1003](#nu1003) | -| [Missing package and project errors](#missing-package-and-project-errors) | [NU1100](#nu1100), [NU1101](#nu1101), [NU1102](#nu1102), [NU1103](#nu1103), [NU1104](#nu1104), [NU1105](#nu1105), [NU1106](#nu1106) | +| [Missing package and project errors](#missing-package-and-project-errors) | [NU1100](#nu1100), [NU1101](#nu1101), [NU1102](#nu1102), [NU1103](#nu1103), [NU1104](#nu1104), [NU1105](#nu1105), [NU1106](#nu1106), [NU1107](#nu1107) (previously NU1607), [NU1108](#nu1107) (previously NU1606) | | [Compatibility errors](#compatibility-errors) | [NU1201](#nu1201), [NU1202](#nu1202), [NU1203](#nu1203), [NU1401](#nu1401) | **Warnings** @@ -38,7 +38,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | --- | --- | | [Invalid input warnings](#invalid-input-warnings) | [NU1501](#nu1501), [NU1502](#nu1502), [NU1503](#nu1503) | | [Unexpected package version warnings](#unexpected-package-version-warnings) | [NU1601](#nu1601), [NU1602](#nu1602), [NU1603](#nu1603), [NU1604](#nu1604), [NU1605](#nu1605) | -| [Resolver conflict warnings](#resolver-conflict-warnings) | [NU1606](#nu1606), [NU1607](#nu1607) | +| [Resolver conflict warnings](#resolver-conflict-warnings) | [NU1608](#nu1608) | | [Package fallback warnings](#package-fallback-warnings) | [NU1701](#nu1701) | | [Feed warnings](#feed-warnings) | [NU1801](#nu1801) | | [NuGet internal errors and warnings](#nuget-internal-errors-and-warnings) | [NU1000](#nu1000), [NU1500](#nu1500) | @@ -131,6 +131,8 @@ The errors and warnings listed here are available only with [PackageReference-ba | **Common causes** | Packages contain dependency on exact versions of a package instead of open-ended ranges. | | **Example message** | *Unable to satisfy conflicting requests for {id}: {conflict path} Framework: {target graph}* | + + ### NU1108 (Previously NU1606) | | | From 54c16c424083951f3cda335de945ff2371bdfddf Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 13 Dec 2017 15:41:35 -0800 Subject: [PATCH 0417/2943] Add docs for Consolidate tab https://github.com/NuGet/docs.microsoft.com-nuget/issues/498 --- docs/Tools/Package-Manager-UI.md | 14 ++++++++++++++ docs/Tools/media/ConsolidateTab.png | Bin 0 -> 25834 bytes 2 files changed, 14 insertions(+) create mode 100644 docs/Tools/media/ConsolidateTab.png diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index dbb60aaa5..b17723053 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -91,6 +91,20 @@ Managing packages for a solution is a convenient means to work with multiple pro ![Project selector when managing packages for the solution](media/SolutionPackagesUI.png) +### Consolidate tab + +Developers typically consider it bad practice to use different versions of the same NuGet package across different projects in the same solution. When you choose to manage packages for a solution, the Package Manager UI provides a **Consolidate** tab on which you can easily see where packages with distinct version numbers are used by different projects in the solution: + +![Package Manager UI Consolidate tab](media/ConsolidateTab.png) + +In this example, the ClassLibrary1 project is using EntityFramework 6.2.0, whereas ConsoleApp1 is using EntityFramework 6.2.0. To consolidate package versions, do the following: + +- Select the projects to update in the project list. +- Select the version to use in all those projects in the **Version** control, such as EntityFramework 6.2.0. +- Select the **Install** button. + +The Package Manager installs the selected package version into all selected projects, after which the package no longer appears on the **Consolidate** tab. + ## Package sources To change the source from which Visual Studio obtains packages, select one from the source selector: diff --git a/docs/Tools/media/ConsolidateTab.png b/docs/Tools/media/ConsolidateTab.png new file mode 100644 index 0000000000000000000000000000000000000000..e8153c83cd426bc5b1ff6059698518013d541c25 GIT binary patch literal 25834 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 Date: Wed, 13 Dec 2017 15:57:37 -0800 Subject: [PATCH 0418/2943] Correct minClientVersion as an attribute --- docs/Schema/nuspec.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index 3a171cddb..adf4ff918 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -58,6 +58,14 @@ For a clear visual representation of the schema, open the schema file in Visual ![Visual Studio Schema Explorer with nuspec.xsd open](media/SchemaExplorer.png) +### Metadata attributes + +The `` element supports the attributes described in the following table. + +| Attribute | Required | Description | +| --- | --- | --- | +| **minClientVersion** | No | *(2.5+)* Specifies the minimum version of the NuGet client that can install this package, enforced by nuget.exe and the Visual Studio Package Manager. This is used whenever the package depends on specific features of the `.nuspec` file that were added in a particular version of the NuGet client. For example, a package using the `developmentDependency` attribute should specify "2.8" for `minClientVersion`. Similarly, a package using the `contentFiles` element (see the next section) should set `minClientVersion` to "3.3". Note also that because NuGet clients prior to 2.5 do not recognize this flag, they *always* refuse to install the package no matter what `minClientVersion` contains. | + ### Required metadata elements Although the following elements are the minimum requirements for a package, you should consider adding the [optional metadata elements](#optional-metadata-elements) to improve the overall experience developers have with your package. @@ -92,7 +100,6 @@ These elements must appear within a `` element. | **language** | The locale ID for the package. See [Creating localized packages](../create-packages/creating-localized-packages.md). | | **tags** | A space-delimited list of tags and keywords that describe the package and aid discoverability of packages through search and filtering. | | **serviceable** | *(3.3+)* For internal NuGet use only. | -| **minClientVersion** | *(2.5+)* Specifies the minimum version of the NuGet client that can install this package, enforced by nuget.exe and the Visual Studio Package Manager. This is used whenever the package depends on specific features of the `.nuspec` file that were added in a particular version of the NuGet client. For example, a package using the `developmentDependency` attribute should specify "2.8" for `minClientVersion`. Similarly, a package using the `contentFiles` element (see the next section) should set `minClientVersion` to "3.3". Note also that because NuGet clients prior to 2.5 do not recognize this flag, they *always* refuse to install the package no matter what `minClientVersion` contains. | #### Collection elements From ab01080f1983305f0b24346b65d0dd8a670ce978 Mon Sep 17 00:00:00 2001 From: Johan Sigfred Abildskov Date: Thu, 14 Dec 2017 12:53:32 +0100 Subject: [PATCH 0419/2943] Fix small typo Decsription -> Description --- docs/Consume-Packages/Configuring-NuGet-Behavior.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index 1989e5f72..ba4692f2c 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -34,7 +34,7 @@ In this topic: ## Config file locations and uses -| Scope | NuGet.Config file location | Decsription | +| Scope | NuGet.Config file location | Description | | --- | --- | --- | | Project | Project folder or any folder up to the drive root | In a project folder, settings apply only to that project. In parent folders that contain multiple projects subfolders, settings apply to all projects in those subfolders. | | User | Windows: %APPDATA%\NuGet\NuGet.Config
    Mac/Linux: ~/.nuget/NuGet.Config | Settings apply to all operations, but are overridden by any project-level settings. When using CLI commands, you can specify a different config file using the `-configFile` switch to ignore any settings in the default user-level file. | From ba385f667795f9d8d007c69040713f28f4f6fcd5 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 14 Dec 2017 09:08:56 -0800 Subject: [PATCH 0420/2943] Correcting version numbers for packages.config examples --- docs/Reference/Package-Versioning.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/Reference/Package-Versioning.md b/docs/Reference/Package-Versioning.md index 06f5e69a2..35d69e29c 100644 --- a/docs/Reference/Package-Versioning.md +++ b/docs/Reference/Package-Versioning.md @@ -161,27 +161,27 @@ Always specify a version or version range for package dependencies in project fi In `packages.config`, every dependency is listed with an exact `version` attribute that's used when restoring packages. The `allowedVersions` attribute is used only during update operations to constrain the versions to which the package might be updated. ```xml - - + + - - + + - - + + - - + - - + From a6ceaee32b696bfb308f7ba82f4e204b5d95e438 Mon Sep 17 00:00:00 2001 From: Dustan Vodvarka Date: Thu, 14 Dec 2017 13:29:39 -0600 Subject: [PATCH 0421/2943] Changed Simple to Simply Overview-and-Workflow.md This is a grammar fix. "A NuGet package with the `.nupkg` extension is simple a ZIP file." I propose "A NuGet package with the `.nupkg` extension is simply a ZIP file." as a fix. --- docs/Create-Packages/Overview-and-Workflow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Overview-and-Workflow.md b/docs/Create-Packages/Overview-and-Workflow.md index 019bc40cf..74cd6de53 100644 --- a/docs/Create-Packages/Overview-and-Workflow.md +++ b/docs/Create-Packages/Overview-and-Workflow.md @@ -34,7 +34,7 @@ Whatever the case, creating a package begins with deciding which assemblies and When you've prepared all the necessary files in the appropriate folders and have created the appropriate `.nuspec` file, you then use the `nuget pack` command (or the [MSBuild pack target](../Schema/msbuild-targets.md)) to put everything together into a `.nupkg` file. You're then ready to deploy the package to whatever host makes it available to other developers. > [!Tip] -> A NuGet package with the `.nupkg` extension is simple a ZIP file. To easily examine any package's contents, change the extension to `.zip` and expand its contents as usual. Just be sure to change the extension back to `.nupkg` before attempting to upload it to a host. +> A NuGet package with the `.nupkg` extension is simply a ZIP file. To easily examine any package's contents, change the extension to `.zip` and expand its contents as usual. Just be sure to change the extension back to `.nupkg` before attempting to upload it to a host. To learn and understand the creation process, start with [Creating a package](../create-packages/creating-a-package.md) which guides you through the core processes common to all packages. From 0ae94093e8d6462572fe93dc07e8ff9ce737a152 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 14 Dec 2017 11:44:43 -0800 Subject: [PATCH 0422/2943] Add note about licensing --- docs/Consume-Packages/Finding-and-Choosing-Packages.md | 2 +- docs/Consume-Packages/Overview-and-Workflow.md | 2 +- docs/Policies/NuGet-FAQ.md | 7 +++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/Consume-Packages/Finding-and-Choosing-Packages.md b/docs/Consume-Packages/Finding-and-Choosing-Packages.md index 4325f1e1a..1f9b69ffe 100644 --- a/docs/Consume-Packages/Finding-and-Choosing-Packages.md +++ b/docs/Consume-Packages/Finding-and-Choosing-Packages.md @@ -107,7 +107,7 @@ At the same time, using a NuGet package means taking a dependency on it, so you - *Interview the owners*: new developers can certainly be equally committed to producing great packages for you to use, and it's good to give them a chance to bring something new to the NuGet ecosystem. With this in mind, reach out directly to the package developers through the **Contact Owners** option under **Info** on the listing page. Chances are, they'll be happy to work with you to serve your needs! > [!Note] -> Always be mindful of a package's license terms, which you can see by selecting **License Info** on a package's listing page on nuget.org. +> Always be mindful of a package's license terms, which you can see by selecting **License Info** on a package's listing page on nuget.org. If a package does not specify license terms, contact the package owner directly using the **Contact owners** link on the package page. Microsoft does not license any intellectual property to you from third party package providers and is not responsible for information provided by third parties. ## Search Syntax diff --git a/docs/Consume-Packages/Overview-and-Workflow.md b/docs/Consume-Packages/Overview-and-Workflow.md index 4b1bd5d60..45f217ba2 100644 --- a/docs/Consume-Packages/Overview-and-Workflow.md +++ b/docs/Consume-Packages/Overview-and-Workflow.md @@ -26,7 +26,7 @@ Between nuget.org and private package galleries that your organization might est NuGet remembers the identity and version number of each installed package, recording it in either `packages.config`, the project file, or a `project.json` file in your project root, depending on project type and your version of NuGet. With NuGet 4.0+, [storing dependencies in the project file](../consume-packages/package-references-in-project-files.md) is the default (except for UWP projects targeting Windows 10 RS1). In any case, you can look in the appropriate file at any time to see the full list of dependencies for your project. > [!Tip] -> It's prudent to always check the license for each package you intend to use in your software. On nuget.org, you'll find a license link on the right side of each package's description page. +> It's prudent to always check the license for each package you intend to use in your software. On nuget.org, you'll find a **License Info** link on the right side of each package's description page. If a package does not specify license terms, contact the package owner directly using the **Contact owners** link on the package page. Microsoft does not license any intellectual property to you from third party package providers and is not responsible for information provided by third parties. When installing packages, NuGet typically checks if the package is already available from its cache. You can manually clear this cache from the command line, as described on [Managing the NuGet cache](../consume-packages/managing-the-nuget-cache.md). diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index d09b5191d..2080d7091 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -164,6 +164,13 @@ This is not an issue when using PackageReference, as each project file contains - Add `https://api.nuget.org/v3/index.json` to your list of sources, or - Delete the `%appdata%\.nuget\NuGet.Config` and let NuGet re-create it. +**What are the default license terms if a package doesn't provide specific license information?** + +Each package is governed by the terms that are included with the package. You should review the applicable terms before accessing, downloading, or acquiring any packages. On nuget.org, use the **License Info** link on the package page. + +If a package does not specify the licensing terms, contact the package owner directly using the **Contact owners** link on the nuget.org package page. Microsoft does not license any intellectual property to you from third party package providers and is not responsible for information provided by third parties. + + ## Managing packages on nuget.org **Can I edit package metadata after it's been uploaded? Why do you recommend editing the nuspec and uploading a new package for making changes to package metadata?** From 50f3a98774b1877d2b32928a332cf1cea826cb1c Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Wed, 20 Dec 2017 14:39:45 -0800 Subject: [PATCH 0423/2943] Update What-is-NuGet.md Removing the term 'libraries' from the intro para as libraries are DLLs and we are talking about not just libraries in the context of a package. --- docs/What-is-NuGet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index 32ece8429..45873291c 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -24,7 +24,7 @@ ms.reviewer: # An introduction to NuGet -An essential tool for any modern development platform is a mechanism through which developers can create, share, and consume useful libraries of code. Such libraries are typically referred to as "packages" because they can contain compiled code (as DLLs) along with other content that might be needed in the projects that consume those libraries. +An essential tool for any modern development platform is a mechanism through which developers can create, share, and consume useful code. Often such code is bundled into a "packages" that contain compiled code (as DLLs) along with other content needed in the projects that consume these packages. For .NET, the mechanism for sharing code is **NuGet**, which defines how packages for .NET are created, hosted, and consumed, and provides the tools for each of those roles. From 9d28004ec33dc772e870a04532d079a6feb1176e Mon Sep 17 00:00:00 2001 From: John Date: Wed, 27 Dec 2017 12:31:31 -0500 Subject: [PATCH 0424/2943] Add example of multiple -exclude --- docs/Tools/cli-ref-pack.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/Tools/cli-ref-pack.md b/docs/Tools/cli-ref-pack.md index b8e0e5719..4eb5f6f5f 100644 --- a/docs/Tools/cli-ref-pack.md +++ b/docs/Tools/cli-ref-pack.md @@ -38,7 +38,7 @@ where `` and `` specify the `.nuspec` or project file, | --- | --- | | BasePath | Sets the base path of the files defined in the `.nuspec` file. | | Build | Specifies that the project should be built before building the package. | -| Exclude | Specifies one or more wildcard patterns to exclude when creating a package. | +| Exclude | Specifies one or more wildcard patterns to exclude when creating a package. To specify more than one pattern, repeat the -Exclude flag. See example below. | | ExcludeEmptyDirectories | Prevents inclusion of empty directories when building the package. | | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | @@ -96,4 +96,6 @@ nuget pack foo.csproj -Build -Symbols -Properties owners=janedoe,xiaop;version=" nuget pack foo.nuspec -Version 2.1.0 nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5 + +nuget pack Package.nuspec -exclude "*.exe" -exclude "*.bat" ``` From 06a9d12ecab4da82728d0878dddd86cdaf5900cd Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Tue, 2 Jan 2018 10:32:50 -0800 Subject: [PATCH 0425/2943] Document the relist endpoint Complete https://github.com/NuGet/NuGetGallery/issues/5191 --- docs/API/package-publish-resource.md | 35 ++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/docs/API/package-publish-resource.md b/docs/API/package-publish-resource.md index 4174ebbfe..6066f8db5 100644 --- a/docs/API/package-publish-resource.md +++ b/docs/API/package-publish-resource.md @@ -27,8 +27,8 @@ ms.reviewer: # Push and Delete -It is possible to push and delete (or unlist, depending on the server implementation) packages using the NuGet V3 API. -Both operations are based off of the `PackagePublish` resource found in the [service index](service-index.md). +It is possible to push, delete (or unlist, depending on the server implementation), and relist packages using the NuGet +V3 API. These operations are based off of the `PackagePublish` resource found in the [service index](service-index.md). ## Versioning @@ -48,8 +48,8 @@ Note that this URL points to the same location as the legacy V2 push endpoint si ## HTTP methods -The `PUT` and `DELETE` HTTP methods are supported by this resource. For which methods are supported on each endpoint, -see below. +The `PUT`, `POST` and `DELETE` HTTP methods are supported by this resource. For which methods are supported on each +endpoint, see below. ## Push a package @@ -118,3 +118,30 @@ Status Code | Meaning ----------- | ------- 204 | The package was deleted 404 | No package with the provided `ID` and `VERSION` exists + +## Relist a package + +If a package is unlisted, it is possible to make that package once again visible in search results using the "relist" +endpoint. This endpoint has the same shape as the [delete (unlist) endpoint](#delete-a-package) but uses the `POST` +HTTP method instead of the `DELETE` method. + +If the package is already listed, the request still succeeds. + +``` +POST https://www.nuget.org/api/v2/package/{ID}/{VERSION} +``` + +### Request parameters + +Name | In | Type | Required | Notes +-------------- | ------ | ------ | -------- | ----- +ID | URL | string | yes | The ID of the package to relist +VERSION | URL | string | yes | The version of the package to relist +X-NuGet-ApiKey | Header | string | yes | For example, `X-NuGet-ApiKey: {USER_API_KEY}` + +### Response + +Status Code | Meaning +----------- | ------- +204 | The package is now listed +404 | No package with the provided `ID` and `VERSION` exists From 2707e22ed2322450151c17b525eeda294355dc8b Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Tue, 2 Jan 2018 10:46:00 -0800 Subject: [PATCH 0426/2943] Document the difference between X-NuGet-Client-Version and X-NuGet-Protocol-Version Fix https://github.com/NuGet/docs.microsoft.com-nuget/issues/590 --- docs/API/NuGet-Protocols.md | 4 ++-- docs/API/package-publish-resource.md | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/API/NuGet-Protocols.md b/docs/API/NuGet-Protocols.md index 75fe3b256..aa24529f3 100644 --- a/docs/API/NuGet-Protocols.md +++ b/docs/API/NuGet-Protocols.md @@ -52,8 +52,8 @@ Clients are required to pass the following header when they make API calls to ** X-NuGet-Protocol-Version: 4.1.0 ``` -Note that the pre-existing `X-NuGet-Client-Version` header has the same purpose but is now deprecated and should no -longer be used. +Note that the `X-NuGet-Client-Version` header is reserved and only to be used by the official NuGet client. Third party +clients should use the `X-NuGet-Protocol-Version` header and value. The **push** protocol itself is described in the documentation for the [`PackagePublish` resource](package-publish-resource.md). diff --git a/docs/API/package-publish-resource.md b/docs/API/package-publish-resource.md index 4174ebbfe..61b830c1f 100644 --- a/docs/API/package-publish-resource.md +++ b/docs/API/package-publish-resource.md @@ -56,6 +56,9 @@ see below. nuget.org supports pushing new packages using the following API. If the package with the provided ID and version already exists, nuget.org will reject the push. Other package sources may support replacing an existing package. +> [!Note] +> nuget.org has [additional requirements](NuGet-Protocols.md) for interacting with the push endpoint. + ``` PUT https://www.nuget.org/api/v2/package ``` From 755e5f128198fe9911d116e78b6043f1314779fa Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Tue, 2 Jan 2018 10:49:31 -0800 Subject: [PATCH 0427/2943] Polish --- docs/API/NuGet-Protocols.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/API/NuGet-Protocols.md b/docs/API/NuGet-Protocols.md index aa24529f3..754946c6f 100644 --- a/docs/API/NuGet-Protocols.md +++ b/docs/API/NuGet-Protocols.md @@ -52,8 +52,8 @@ Clients are required to pass the following header when they make API calls to ** X-NuGet-Protocol-Version: 4.1.0 ``` -Note that the `X-NuGet-Client-Version` header is reserved and only to be used by the official NuGet client. Third party -clients should use the `X-NuGet-Protocol-Version` header and value. +Note that the `X-NuGet-Client-Version` header has similar semantics but is reserved to only be used by the official +NuGet client. Third party clients should use the `X-NuGet-Protocol-Version` header and value. The **push** protocol itself is described in the documentation for the [`PackagePublish` resource](package-publish-resource.md). From 8029490d8cf5ddba03355e42de1066f5134e1b63 Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Tue, 2 Jan 2018 10:50:42 -0800 Subject: [PATCH 0428/2943] Move note --- docs/API/package-publish-resource.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/API/package-publish-resource.md b/docs/API/package-publish-resource.md index 61b830c1f..d2bcb984a 100644 --- a/docs/API/package-publish-resource.md +++ b/docs/API/package-publish-resource.md @@ -53,12 +53,12 @@ see below. ## Push a package -nuget.org supports pushing new packages using the following API. If the package with the provided ID and version -already exists, nuget.org will reject the push. Other package sources may support replacing an existing package. - > [!Note] > nuget.org has [additional requirements](NuGet-Protocols.md) for interacting with the push endpoint. +nuget.org supports pushing new packages using the following API. If the package with the provided ID and version +already exists, nuget.org will reject the push. Other package sources may support replacing an existing package. + ``` PUT https://www.nuget.org/api/v2/package ``` From 86fb7ed4f41a467142554d5d3082e6e8e60a215f Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 2 Jan 2018 16:18:47 -0800 Subject: [PATCH 0429/2943] Update old MSDN links --- README.md | 4 +- docs/API/package-base-address-resource.md | 8 ++-- docs/API/registration-base-url-resource.md | 3 +- .../Consume-Packages/Team-Foundation-Build.md | 8 ++-- .../Source-and-Config-File-Transformations.md | 14 ++---- docs/Guides/Create-Cross-Platform-Packages.md | 2 +- ...-Credential-Providers-for-Visual-Studio.md | 4 +- docs/Release-Notes/NuGet-2.1.md | 2 +- docs/Release-Notes/NuGet-2.2.md | 2 +- docs/Release-Notes/NuGet-2.6.md | 7 +-- docs/Release-Notes/NuGet-2.8.3.md | 2 +- docs/Release-Notes/NuGet-3.2.md | 2 +- docs/Tools/PowerShell-Reference.md | 2 +- .../NuGet-API-in-Visual-Studio.md | 4 +- .../Project-System-Support.md | 3 +- .../Visual-Studio-Templates.md | 47 +++++-------------- 16 files changed, 41 insertions(+), 73 deletions(-) diff --git a/README.md b/README.md index e50e6c405..36de1c403 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ No contribution is too big or too small-- 1. Edit the markdown: 1. If you're including images (use PNGs, generally), place them in the media folder that's in the topic's folder. Links are then `media/.png`. 1. Relative links to other pages in this docset should be in the form `..//.md` including the training `.md`. If you're linking to another topic in the same folder, then `..//` can be omitted. When using anchors, always remember to include the `.md` before the `#`. - 1. When using external links, especially to docs.microsoft.com or msdn.microsoft.com, omit any language tag like "en-us" so that a reader in another language lands on a target page in that same language if it's available. + 1. When using external links, especially to docs.microsoft.com (or msdn.microsoft.com for any older content), omit any language tag like "en-us" so that a reader in another language lands on a target page in that same language if it's available. 1. When you're done, enter a commit message below, and click **Propose file change**. 1. Send a pull request for your change. We review PRs on a regular basis. 1. Thank you! @@ -139,7 +139,7 @@ You can also use one of the following callout tags on the first line that will c - Links to other markdown files on docs.microsoft.com are case-insensitive (unlike links to files in GitHub, which are). - If you're linking to another topic in the same folder, then `..//` can be omitted. - When using anchors, always remember to include the `.md` before the `#`. -- When using external links, especially to docs.microsoft.com or msdn.microsoft.com, omit any language tag like "en-us" so that a reader in another language lands on a target page in that same language if it's available. +- When using external links, especially to docs.microsoft.com (or msdn.microsoft.com for any older content), omit any language tag like "en-us" so that a reader in another language lands on a target page in that same language if it's available. - Bare URLs are not automatically converted into links. ### Inline HTML diff --git a/docs/API/package-base-address-resource.md b/docs/API/package-base-address-resource.md index d6b4e6ed7..bec152006 100644 --- a/docs/API/package-base-address-resource.md +++ b/docs/API/package-base-address-resource.md @@ -71,8 +71,7 @@ Name | In | Type | Required | Notes LOWER_ID | URL | string | yes | The package ID, lowercase The `LOWER_ID` value is the desired package ID lowercased using the rules implemented by .NET's -[`System.String.ToLowerInvariant()`](https://msdn.microsoft.com/en-us/library/system.string.tolowerinvariant.aspx) -method. +[`System.String.ToLowerInvariant()`](/dotnet/api/system.string.tolowerinvariant?view=netstandard-2.0#System_String_ToLowerInvariant) method. ### Response @@ -119,7 +118,7 @@ LOWER_ID | URL | string | yes | The package ID, lowercase LOWER_VERSION | URL | string | yes | The package version, normalized and lowercased Both `LOWER_ID` and `LOWER_VERSION` are lowercased using the rules implemented by .NET's -[`System.String.ToLowerInvariant()`](https://msdn.microsoft.com/en-us/library/system.string.tolowerinvariant.aspx) +[`System.String.ToLowerInvariant()`](/dotnet/api/system.string.tolowerinvariant?view=netstandard-2.0#System_String_ToLowerInvariant) method. The `LOWER_VERSION` is the desired package version normalized using NuGet's version @@ -160,8 +159,7 @@ LOWER_ID | URL | string | yes | The package ID, lowercase LOWER_VERSION | URL | integer | yes | The package version, normalized and lowercased Both `LOWER_ID` and `LOWER_VERSION` are lowercased using the rules implemented by .NET's -[`System.String.ToLowerInvariant()`](https://msdn.microsoft.com/en-us/library/system.string.tolowerinvariant.aspx) -method. +[`System.String.ToLowerInvariant()`](/dotnet/api/system.string.tolowerinvariant?view=netstandard-2.0#System_String_ToLowerInvariant) method. The `LOWER_VERSION` is the desired package version normalized using NuGet's version [normalization rules](../reference/package-versioning.md#normalized-version-numbers). This means that build metadata diff --git a/docs/API/registration-base-url-resource.md b/docs/API/registration-base-url-resource.md index b28602728..84081c8b1 100644 --- a/docs/API/registration-base-url-resource.md +++ b/docs/API/registration-base-url-resource.md @@ -115,8 +115,7 @@ Name | In | Type | Required | Notes LOWER_ID | URL | string | yes | The package ID, lowercased The `LOWER_ID` value is the desired package ID lowercased using the rules implemented by .NET's -[`System.String.ToLowerInvariant()`](https://msdn.microsoft.com/en-us/library/system.string.tolowerinvariant.aspx) -method. +[`System.String.ToLowerInvariant()`](/dotnet/api/system.string.tolowerinvariant?view=netstandard-2.0#System_String_ToLowerInvariant) method. ### Response diff --git a/docs/Consume-Packages/Team-Foundation-Build.md b/docs/Consume-Packages/Team-Foundation-Build.md index b8bdbd87a..7ed175232 100644 --- a/docs/Consume-Packages/Team-Foundation-Build.md +++ b/docs/Consume-Packages/Team-Foundation-Build.md @@ -38,9 +38,9 @@ ms.reviewer: > > If you're using Visual Studio Team Services or on-premises Team Foundation Server 2013 with its build process templates, Automatic Package Restore happens as part of the build process. -This section will provide a detailed walkthrough on how to restore packages as part of the [Team Foundation Build](http://msdn.microsoft.com/library/ms181710(v=VS.90).aspx) both, for [git](http://en.wikipedia.org/wiki/Git_(software)) as well as [TF Version Control](http://msdn.microsoft.com/library/ms181237(v=vs.120).aspx). +This section will provide a detailed walkthrough on how to restore packages as part of the [Team Services Build](https://docs.microsoft.com/vsts/build-release/index) both, for both Git and Team Services Version Control. -Although this walkthrough is specific for the scenario of using [Team Foundation Service](http://tfs.visualstudio.com/), the concepts also apply to other version control- and build systems. +Although this walkthrough is specific for the scenario of using Visual Studio Team Services, the concepts also apply to other version control and build systems. ## The general approach @@ -128,7 +128,7 @@ The `.gitignore` file is [quite powerful](https://www.kernel.org/pub/software/sc This will exclude all `packages` folders but will re-include all contained `.targets` files. By the way, you can find a template for `.gitignore` files that is specifically tailored for the needs of Visual Studio developers [here](https://github.com/github/gitignore/blob/master/VisualStudio.gitignore). -TF version control supports a very similar mechanism via the [.tfignore](http://msdn.microsoft.com/library/ms245454.aspx) file. The syntax is virtually the same: +TF version control supports a very similar mechanism via the [.tfignore](/vsts/tfvc/add-files-server#customize-which-files-are-ignored-by-version-control) file. The syntax is virtually the same: *.user *.suo @@ -144,7 +144,7 @@ This project will have the three conventional targets `Clean`, `Build` and `Rebu - The `Build` and `Rebuild` targets both depend on `RestorePackages`. This makes sure that you can both run `Build` and `Rebuild` and rely on packages being restored. - `Clean`, `Build` and `Rebuild` invoke the corresponding MSBuild target on all solution files. -- The `RestorePackages` target invokes `nuget.exe` for each solution file. This is accomplished by using [MSBuild's batching functionality](http://msdn.microsoft.com/library/ms171473.aspx). +- The `RestorePackages` target invokes `nuget.exe` for each solution file. This is accomplished by using [MSBuild's batching functionality](/visualstudio/msbuild/msbuild-batching). The result looks as follows: diff --git a/docs/Create-Packages/Source-and-Config-File-Transformations.md b/docs/Create-Packages/Source-and-Config-File-Transformations.md index 3b3b8eca0..9d31306b4 100644 --- a/docs/Create-Packages/Source-and-Config-File-Transformations.md +++ b/docs/Create-Packages/Source-and-Config-File-Transformations.md @@ -36,20 +36,19 @@ For projects using `packages.config` or `project.json`, NuGet supports the abili > [!Note] > Source and configuration file transformations are not applied when a package is installed in a project using [Package References in project files](../Consume-Packages/Package-References-in-Project-Files.md). -A **source code transformation** applies one-way token replacement to files in the package's `content` folder when the package is installed, where tokens refer to Visual Studio [project properties](https://msdn.microsoft.com/library/vslangproj.projectproperties_properties.aspx). This allows you to insert a file into the project's namespace, or to customize code that would typically go into `global.asax` in an ASP.NET project. +A **source code transformation** applies one-way token replacement to files in the package's `content` folder when the package is installed, where tokens refer to Visual Studio [project properties](/dotnet/api/vslangproj.projectproperties?redirectedfrom=MSDN&view=visualstudiosdk-2017#properties_). This allows you to insert a file into the project's namespace, or to customize code that would typically go into `global.asax` in an ASP.NET project. A **config file transformation** allows you to modify files that already exist in a target project, such as `web.config` and `app.config`. For example, your package might need to add an item to the `modules` section in the config file. This transformation is done by including special files in the package that describe the sections to add to the configuration files. When a package is uninstalled, those same changes are then reversed, making this a two-way transformation. - ## Specifying source code transformations 1. Files that you want to insert from the package into the project must be located within the package's `content` folder. For example, if you want a file called `ContosoData.cs` to be installed in a `Models` folder of the target project, it must be inside the `content\Models` folder in the package. -2. To instruct NuGet to apply token replacement at install time, append `.pp` to the source code file name. After installation, the file will not have the `.pp` extension. +1. To instruct NuGet to apply token replacement at install time, append `.pp` to the source code file name. After installation, the file will not have the `.pp` extension. For example, to make transformations in `ContosoData.cs`, name the file in the package `ContosoData.cs.pp`. After installation it will appear as `ContosoData.cs`. -3. In the source code file, use case-insensitive tokens of the form `$token$` to indicate values that NuGet should replace with project properties: +1. In the source code file, use case-insensitive tokens of the form `$token$` to indicate values that NuGet should replace with project properties: ```cs namespace $rootnamespace$.Models @@ -67,8 +66,7 @@ A **config file transformation** allows you to modify files that already exist i Upon installation, NuGet replaces `$rootnamespace$` with `Fabrikam` assuming the target project's whose root namespace is `Fabrikam`. -The `$rootnamespace$` token is the most commonly used project property; all others are listed in the [Project Properties](https://msdn.microsoft.com/library/vslangproj.projectproperties_properties.aspx) documentation on MSDN. Be mindful, of course, that some properties might be specific to the project type. - +The `$rootnamespace$` token is the most commonly used project property; all others are listed in the [Project Properties](/dotnet/api/vslangproj.projectproperties?redirectedfrom=MSDN&view=visualstudiosdk-2017#properties_) documentation on MSDN. Be mindful, of course, that some properties might be specific to the project type. ## Specifying config file transformations @@ -100,7 +98,6 @@ As an example, suppose the project initially contains the following content in ` To add a `MyNuModule` element to the `modules` section during package install, create a `web.config.transform` file in the package's `content` folder that looks like this: - ```xml @@ -134,10 +131,9 @@ To examine its `web.config.transform` file, download the ELMAH package from the To see the effect of installing and uninstalling the package, create a new ASP.NET project in Visual Studio (the template is under **Visual C# > Web** in the New Project dialog), and select an empty ASP.NET application. Open `web.config` to see its initial state. Then right-click the project, select **Manage NuGet Packages**, browse for ELMAH on nuget.org, and install the latest version. Notice all the changes to `web.config`. Now uninstall the package and you'll see `web.config` revert to its prior state. - ### XDT transforms -With NuGet 2.6 and later, you can modify config files using [XDT syntax](https://msdn.microsoft.com/library/dd465326.aspx). You can also have NuGet replace tokens with [Project Properties](https://msdn.microsoft.com/library/vslangproj.projectproperties_properties.aspx) by including the property name within `$` delimeters (case-insensitive). +With NuGet 2.6 and later, you can modify config files using [XDT syntax](https://msdn.microsoft.com/library/dd465326.aspx). You can also have NuGet replace tokens with [Project Properties](/dotnet/api/vslangproj.projectproperties?redirectedfrom=MSDN&view=visualstudiosdk-2017#properties_) by including the property name within `$` delimeters (case-insensitive). For example, the following `app.config.install.xdt` file will insert an `appSettings` element into `app.config` containing the `FullPath`, `FileName`, and `ActiveConfigurationSettings` values from the project: diff --git a/docs/Guides/Create-Cross-Platform-Packages.md b/docs/Guides/Create-Cross-Platform-Packages.md index 6c6d111e0..c0aa1f559 100644 --- a/docs/Guides/Create-Cross-Platform-Packages.md +++ b/docs/Guides/Create-Cross-Platform-Packages.md @@ -52,7 +52,7 @@ In this walkthrough you'll create a cross-platform NuGet package that can be use ## Create the project structure and abstraction code -1. Download and run the [Plugin for Xamarin Templates extension](https://visualstudiogallery.msdn.microsoft.com/afead421-3fbf-489a-a4e8-4a244ecdbb1e) for Visual Studio. These templates will make it easy to create the necessary project structure for this walkthrough. +1. Download and run the [Plugin for Xamarin Templates extension](https://marketplace.visualstudio.com/items?itemName=vs-publisher-473885.PluginForXamarinTemplates) for Visual Studio. These templates will make it easy to create the necessary project structure for this walkthrough. 1. In Visual Studio, **File > New > Project**, search for `Plugin`, select the **Plugin for Xamarin** template, change the name to LoggingLibrary, and click OK. ![New Blank App (Xamarin.Forms Portable) project in Visual Studio](media/CrossPlatform-NewProject.png) 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 1c6fd1869..f500378f8 100644 --- a/docs/Reference/extensibility/NuGet-Credential-Providers-for-Visual-Studio.md +++ b/docs/Reference/extensibility/NuGet-Credential-Providers-for-Visual-Studio.md @@ -84,5 +84,5 @@ A custom NuGet credential provider for Visual Studio must implement the `IVsCred | bool isRetry | True if credentials were previously requested for this Uri, but the supplied credentials did not allow authorized access. | | bool nonInteractive | If true, the credential provider must suppress all user prompts and use default values instead. | | CancellationToken cancellationToken | This cancellation token should be checked to determine if the operation requesting credentials has been cancelled. | - -**Return value**: A credentials object implementing the [`System.Net.ICredentials` interface](https://msdn.microsoft.com/library/system.net.icredentials.aspx). + +**Return value**: A credentials object implementing the [`System.Net.ICredentials` interface](/dotnet/api/system.net.icredentials?view=netstandard-2.0). diff --git a/docs/Release-Notes/NuGet-2.1.md b/docs/Release-Notes/NuGet-2.1.md index d1bfcd980..e5cbfbb1b 100644 --- a/docs/Release-Notes/NuGet-2.1.md +++ b/docs/Release-Notes/NuGet-2.1.md @@ -90,7 +90,7 @@ NuGet 2.1 provides more granular control over the location of the packages folde In this example, the shared `Nuget.Config` file specifies a shared packages folder for every project that is created beneath C:\myteam, regardless of depth. Note that if you have an existing packages folder underneath your solution root, you will need to delete it before NuGet will place packages in the new location. ## Support for Portable Libraries -[Portable libraries](http://msdn.microsoft.com/library/gg597391.aspx) is a feature first introduced with .NET 4 that enables you to build assemblies that can work without modification on different Microsoft platforms, from versions of the.NET Framework to Silverlight to Windows Phone and even Xbox 360 (though at this time, NuGet does not support the Xbox portable library target). By extending the [package conventions](../create-packages/supporting-multiple-target-frameworks.md) for framework versions and profiles, NuGet 2.1 now supports portable libraries by enabling you to create packages that have compound framework and profile target `lib` folders. +[Portable libraries](/dotnet/standard/cross-platform/cross-platform-development-with-the-portable-class-library) is a feature first introduced with .NET 4 that enables you to build assemblies that can work without modification on different Microsoft platforms, from versions of the.NET Framework to Silverlight to Windows Phone and even Xbox 360 (though at this time, NuGet does not support the Xbox portable library target). By extending the [package conventions](../create-packages/supporting-multiple-target-frameworks.md) for framework versions and profiles, NuGet 2.1 now supports portable libraries by enabling you to create packages that have compound framework and profile target `lib` folders. As an example, consider the following portable class library’s available target platforms. diff --git a/docs/Release-Notes/NuGet-2.2.md b/docs/Release-Notes/NuGet-2.2.md index 3af84a278..9170f8f03 100644 --- a/docs/Release-Notes/NuGet-2.2.md +++ b/docs/Release-Notes/NuGet-2.2.md @@ -34,7 +34,7 @@ ms.reviewer: NuGet 2.2 was released on December 12, 2012. ## Visual Studio Quick Launch -One of the new features that was added in Visual Studio 2012 was the [quick launch dialog](http://msdn.microsoft.com/library/hh417697.aspx). NuGet 2.2 extends this dialog, allowing it to initialize the package manager dialog with the search terms entered in the quick launch. For example, entering 'jquery' in quick launch now includes an option in the results to search NuGet packages matching 'jquery'. +One of the new features that was added in Visual Studio 2012 was the [quick launch dialog](/visualstudio/ide/reference/quick-launch-environment-options-dialog-box). NuGet 2.2 extends this dialog, allowing it to initialize the package manager dialog with the search terms entered in the quick launch. For example, entering 'jquery' in quick launch now includes an option in the results to search NuGet packages matching 'jquery'. ![NuGet in Visual Studio Quick Launch](./media/quick-launch.png) diff --git a/docs/Release-Notes/NuGet-2.6.md b/docs/Release-Notes/NuGet-2.6.md index 21eb4af57..c98af745f 100644 --- a/docs/Release-Notes/NuGet-2.6.md +++ b/docs/Release-Notes/NuGet-2.6.md @@ -48,8 +48,8 @@ sizes as small as possible, we are producing a separate extension for Visual Stu Starting with NuGet 2.6, we will publish two extensions as below: -1. [NuGet Package Manager](http://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c/file/37502/30/NuGet.Tools.vsix) (applies to Visual Studio 2010 and 2012) -2. [NuGet Package Manager for Visual Studio 2013](http://visualstudiogallery.msdn.microsoft.com/4ec1526c-4a8c-4a84-b702-b21a8f5293ca) +1. [NuGet Package Manager](https://marketplace.visualstudio.com/items?itemName=NuGetTeam.NuGetPackageManager) (applies to Visual Studio 2010 and 2012) +1. [NuGet Package Manager for Visual Studio 2013](https://marketplace.visualstudio.com/items?itemName=NuGetTeam.NuGetPackageManagerforVisualStudio2013) With this split, the [nuget.org](https://nuget.org) home page's "Install NuGet" button will now take you to the [installing NuGet](../guides/install-nuget.md) @@ -61,7 +61,8 @@ page, where you can find more information about installing the different NuGet c One of the most highly-requested features for the NuGet client has been to support more powerful XML transformations using the XDT transformation engine which is used in Visual -Studio [build configuration transformations](http://msdn.microsoft.com/library/dd465318(v=vs.100).aspx). +Studio build configuration transformations. + In April 2013, we made two big announcements regarding NuGet support for XDT. The first was that the XDT library itself was being itself [released as a NuGet package](https://nuget.org/packages/Microsoft.Web.Xdt) and [open sourced on CodePlex](http://xdt.codeplex.com/). This step enabled the XDT engine diff --git a/docs/Release-Notes/NuGet-2.8.3.md b/docs/Release-Notes/NuGet-2.8.3.md index 81ec97df2..66889645e 100644 --- a/docs/Release-Notes/NuGet-2.8.3.md +++ b/docs/Release-Notes/NuGet-2.8.3.md @@ -33,4 +33,4 @@ ms.reviewer: NuGet 2.8.3 was released October 17, 2014. It is a minor update to our 2.8.1 VSIX with some targeted fixes. -In this release, the support for NuGet Package Manager dialog was added for [ASP.NET vNext](http://www.asp.net/vnext), [DevExtreme](http://js.devexpress.com/) and [BizTalk (.btproj)](http://msdn.microsoft.com/library/aa577497.aspx) project types. It also includes reliability bug fixes related to the scenarios of enabling package restore and saving package manager options. +In this release, the support for NuGet Package Manager dialog was added for [ASP.NET vNext](http://www.asp.net/vnext), [DevExtreme](http://js.devexpress.com/) and [BizTalk (.btproj)](/biztalk/core/developing-biztalk-server-applications) project types. It also includes reliability bug fixes related to the scenarios of enabling package restore and saving package manager options. diff --git a/docs/Release-Notes/NuGet-3.2.md b/docs/Release-Notes/NuGet-3.2.md index 6bf32056d..62918b4aa 100644 --- a/docs/Release-Notes/NuGet-3.2.md +++ b/docs/Release-Notes/NuGet-3.2.md @@ -32,7 +32,7 @@ ms.reviewer: [NuGet 3.2-RC Release Notes](../release-notes/nuget-3.2-RC.md) | [NuGet 3.2.1 Release Notes](../release-notes/nuget-3.2.1.md) -NuGet 3.2 was released September 16, 2015 as a collection of improvements and fixes for the 3.1.1 release and is available from both [dist.nuget.org](http://dist.nuget.org/index.html) and the [Visual Studio Gallery](https://visualstudiogallery.msdn.microsoft.com/5d345edc-2e2d-4a9c-b73b-d53956dc458d?SRC=Home). +NuGet 3.2 was released September 16, 2015 as a collection of improvements and fixes for the 3.1.1 release and is available from both [dist.nuget.org](http://dist.nuget.org/index.html) and the [Visual Studio Gallery](https://marketplace.visualstudio.com/items?itemName=NuGetTeam.NuGetPackageManagerforVisualStudio2015). ## New Features diff --git a/docs/Tools/PowerShell-Reference.md b/docs/Tools/PowerShell-Reference.md index df30898dd..ed113e866 100644 --- a/docs/Tools/PowerShell-Reference.md +++ b/docs/Tools/PowerShell-Reference.md @@ -29,7 +29,7 @@ The Package Manager Console provides a PowerShell interface within Visual Studio > All PowerShell commands relate only to package consumption. No PowerShell commands relate to creating and publishing packages except to the extent that a package can also be a consumer of other packages. > [!Important] -> The commands listed here are specific to the Package Manager Console in Visual Studio, and differ from the [Package Management module commands](https://msdn.microsoft.com/powershell/reference/6/packagemanagement/packagemanagement) that are available in a general PowerShell environment. Specifically, each environment has commands that are not available in the other, and commands with the same name may also differ in their specific arguments. When using the Package Management Console in Visual Studio, the commands and arguments documented in this present topic apply. +> The commands listed here are specific to the Package Manager Console in Visual Studio, and differ from the [Package Management module commands](/powershell/module/packagemanagement/?view=powershell-6) that are available in a general PowerShell environment. Specifically, each environment has commands that are not available in the other, and commands with the same name may also differ in their specific arguments. When using the Package Management Console in Visual Studio, the commands and arguments documented in this present topic apply. | Common Commands | Description | NuGet Version | | --- | --- | --- | 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 7792880f2..3b131b742 100644 --- a/docs/Visual-Studio-Extensibility/NuGet-API-in-Visual-Studio.md +++ b/docs/Visual-Studio-Extensibility/NuGet-API-in-Visual-Studio.md @@ -29,7 +29,7 @@ ms.reviewer: --- # NuGet API in Visual Studio -In addition to the Package Manager UI and Console in Visual Studio, NuGet also exports some useful services through the [Managed Extensibility Framework (MEF)](http://msdn.microsoft.com/library/dd460648.aspx). This interface allows other components in Visual Studio to interact with NuGet, which can be used to install and uninstall packages, and to obtain information about installed packages. +In addition to the Package Manager UI and Console in Visual Studio, NuGet also exports some useful services through the [Managed Extensibility Framework (MEF)](/dotnet/framework/mef/index). This interface allows other components in Visual Studio to interact with NuGet, which can be used to install and uninstall packages, and to obtain information about installed packages. As of NuGet 3.3+, NuGet exports the following services all of which reside in the `NuGet.VisualStudio` namespace in the `NuGet.VisualStudio.dll` assembly: @@ -55,7 +55,7 @@ As of NuGet 3.3+, NuGet exports the following services all of which reside in th > [!Warning] > Do not use any other types besides the public interfaces in your code, and do not reference any other NuGet assemblies, including `NuGet.Core.dll`. -1. To use a service, import it through the [MEF Import attribute](https://msdn.microsoft.com/library/dd460648.aspx#Imports%20and%20Exports%20with%20Attributes), or through the [IComponentModel service](http://msdn.microsoft.com/library/microsoft.visualstudio.componentmodelhost.icomponentmodel.aspx). +1. To use a service, import it through the [MEF Import attribute](/dotnet/framework/mef/index#imports-and-exports-with-attributes), or through the [IComponentModel service](/dotnet/api/microsoft.visualstudio.componentmodelhost.icomponentmodel?redirectedfrom=MSDN&view=visualstudiosdk-2017). ```cs //Using the Import attribute diff --git a/docs/Visual-Studio-Extensibility/Project-System-Support.md b/docs/Visual-Studio-Extensibility/Project-System-Support.md index 6e29122d4..5f7079c96 100644 --- a/docs/Visual-Studio-Extensibility/Project-System-Support.md +++ b/docs/Visual-Studio-Extensibility/Project-System-Support.md @@ -131,9 +131,8 @@ case __VSHPROPID8.VSHPROPID_ProjectCapabilitiesChecker: return VSConstants.S_OK; ``` - ## DTE Support -NuGet drives the project system to add references, content items, and MSBuild imports by calling into [DTE](https://msdn.microsoft.com/library/mt452175.aspx), which is the top-level Visual Studio automation interface. DTE is a set of COM interfaces that you may already implement. +NuGet drives the project system to add references, content items, and MSBuild imports by calling into [DTE](/dotnet/api/envdte.dte?view=visualstudiosdk-2017), which is the top-level Visual Studio automation interface. DTE is a set of COM interfaces that you may already implement. If your project type is based on CPS, DTE is implemented for you. diff --git a/docs/Visual-Studio-Extensibility/Visual-Studio-Templates.md b/docs/Visual-Studio-Extensibility/Visual-Studio-Templates.md index 459bb8b73..177064d24 100644 --- a/docs/Visual-Studio-Extensibility/Visual-Studio-Templates.md +++ b/docs/Visual-Studio-Extensibility/Visual-Studio-Templates.md @@ -1,40 +1,26 @@ --- -# required metadata - title: NuGet Packages in Visual Studio templates | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 2/8/2017 +ms.date: 1/3/2018 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 0b2cf228-f028-475d-8792-c012dffdb26f - -# optional metadata - description: Instructions for including NuGet packages as part of Visual Studio project and item templates. keywords: NuGet in Visual Studio, Visual Studio project templates, Visual Studio item templates, packages in project templates, packages in item templates -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Packages in Visual Studio templates -Visual Studio project and item templates often need to ensure that certain packages are installed into when the project or item is created. For example, the ASP.NET MVC 3 template installs jQuery, Modernizr, and other packages. +Visual Studio project and item templates often need to ensure that certain packages are installed when a project or item is created. For example, the ASP.NET MVC 3 template installs jQuery, Modernizr, and other packages. To support this, template authors can instruct NuGet to install the necessary packages, rather than individual libraries. Developers can then easily update those packages at any later time. -To learn more about authoring templates themselves, refer to [Creating Project and Item Templates in Visual Studio](https://msdn.microsoft.com/library/s365byhx.aspx) or [Creating Custom Project and Item Templates with the Visual Studio SDK](https://msdn.microsoft.com/library/ff527340.aspx). +To learn more about authoring templates themselves, refer to [How to: Create Project Templates](/visualstudio/ide/how-to-create-project-templates) or [Creating Custom Project and Item Templates](/visualstudio/extensibility/creating-custom-project-and-item-templates). The remainder of this section describes the specific steps to take when authoring a template to properly include NuGet packages. @@ -43,16 +29,15 @@ The remainder of this section describes the specific steps to take when authorin For an example, see the [NuGetInVsTemplates sample](https://bitbucket.org/marcind/nugetinvstemplates). - ## Adding packages to a template -When a template is instantiated, a [template wizard](https://msdn.microsoft.com/library/ms185301.aspx) is invoked to load the list of packages to install along with information about where to find those packages. Packages can be embedded in the VSIX, embedded in the template, or located on the local hard drive in which case you use a registry key to reference the file path. Details on these locations are given later in this section. +When a template is instantiated, a [template wizard](/visualstudio/extensibility/how-to-use-wizards-with-project-templates) is invoked to load the list of packages to install along with information about where to find those packages. Packages can be embedded in the VSIX, embedded in the template, or located on the local hard drive in which case you use a registry key to reference the file path. Details on these locations are given later in this section. -Preinstalled packages work using [template wizards](http://msdn.microsoft.com/library/ms185301.aspx). A special wizard gets invoked when the template gets instantiated. The wizard loads the list of packages that need to be installed and passes that information to the appropriate NuGet APIs. +Preinstalled packages work using [template wizards](/visualstudio/extensibility/how-to-use-wizards-with-project-templates). A special wizard gets invoked when the template gets instantiated. The wizard loads the list of packages that need to be installed and passes that information to the appropriate NuGet APIs. Steps to include packages in a template: -1. In your `vstemplate` file, add a reference to the NuGet template wizard by adding a [`WizardExtension`](http://msdn.microsoft.com/library/ms171411.aspx) element: +1. In your `vstemplate` file, add a reference to the NuGet template wizard by adding a [`WizardExtension`](/visualstudio/extensibility/wizardextension-element-visual-studio-templates) element: ```xml @@ -75,12 +60,11 @@ Steps to include packages in a template: *(NuGet 2.2.1+)* The wizard supports multiple `` elements to support multiple package sources. Both the `id` and `version` attributes are required, meaning that specific version of a package will be installed even if a newer version is available. This prevents package updates from breaking the template, leaving the choice to update the package to the developer using the template. - 1. Specify the repository where NuGet can find the packages as described in the following sections. ### VSIX package repository -The recommended deployment approach for Visual Studio project/item templates is a [VSIX extension](http://msdn.microsoft.com/library/ff363239.aspx) because it allows you to package multiple project/item templates together and allows developers to easily discover your templates using the VS Extension Manager or the Visual Studio Gallery. Updates to the extension are also easy to deploy using the [Visual Studio Extension Manager automatic update mechanism](http://msdn.microsoft.com/library/dd997169.aspx). +The recommended deployment approach for Visual Studio project/item templates is a [VSIX extension](/visualstudio/extensibility/shipping-visual-studio-extensions) because it allows you to package multiple project/item templates together and allows developers to easily discover your templates using the VS Extension Manager or the Visual Studio Gallery. Updates to the extension are also easy to deploy using the [Visual Studio Extension Manager automatic update mechanism](/visualstudio/extensibility/how-to-update-a-visual-studio-extension). The VSIX itself can serve as the source for packages required by the template: @@ -92,26 +76,18 @@ The VSIX itself can serve as the source for packages required by the template: ``` - The `repository` attribute specifies the type of repository as `extension` while `repositoryId` is the unique identifier of the VSIX itself (This is the value of the [`ID` attribute](http://msdn.microsoft.com/library/dd393688.aspx) in the extension’s `vsixmanifest` file). + The `repository` attribute specifies the type of repository as `extension` while `repositoryId` is the unique identifier of the VSIX itself (This is the value of the `ID` attribute in the extension’s `vsixmanifest` file, see [VSIX Extension Schema 2.0 Reference](/visualstudio/extensibility/vsix-extension-schema-2-0-reference)). 1. Place your `nupkg` files in a folder called `Packages` within the VSIX. -1. Add the necessary package files as [custom extension content](http://msdn.microsoft.com/library/dd393737.aspx) in your `source.extension.vsixmanifest` file. If you're using the 2.0 schema it should look like this: - ```xml - - ``` - - If you're using the 1.0 schema it should look like this: +1. Add the necessary package files as `` in your `vsixmanifest` file (see [VSIX Extension Schema 2.0 Reference](/visualstudio/extensibility/vsix-extension-schema-2-0-reference)): ```xml - - packages/Moq.4.0.10827.nupkg - + ``` 1. Note that you can deliver packages in the same VSIX as your project templates or you can put them in a separate VSIX if that makes more sense for your scenario. However, do not reference any VSIX over which you do not have control, because changes to that extension could break your template. - ### Template package repository If you are distributing only a single project/item template and do not need to package multiple templates together, you can use a simpler but more limited approach that includes packages directly in the project/item template ZIP file: @@ -130,7 +106,6 @@ If you are distributing only a single project/item template and do not need to p Note that using this approach in a VSIX that contains multiple templates leads to unnecessary bloat when one or more packages are common to the templates. In such cases, use the [VSIX as the repository](#vsix-package-repository) as described in the previous section. - ### Registry-specified folder path SDKs that are installed using an MSI can install NuGet packages directly on the developer's machine. This makes them immediately available when a project or item template is used, rather than having to extract them during that time. ASP.NET templates use this approach. @@ -168,6 +143,6 @@ SDKs that are installed using an MSI can install NuGet packages directly on the ``` -1. Require project/item templates to be saved on creation by setting [``](http://msdn.microsoft.com/library/twfxayz5.aspx) in the `.vstemplate` file. +1. Require project/item templates to be saved on creation by including [`true`](/visualstudio/extensibility/promptforsaveoncreation-element-visual-studio-templates) in the `.vstemplate` file. 1. Templates do not include a `packages.config` or `project.json` file, and do not include or any references or content that would be added when NuGet packages are installed. From 7089a10b276f5abc6f06a4763fca23742fa4abee Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 2 Jan 2018 16:30:13 -0800 Subject: [PATCH 0430/2943] Normalize docs.ms.com links and "it is" to "it's" --- README.md | 12 ++++++------ docs/API/catalog-resource.md | 2 +- docs/API/overview.md | 4 ++-- docs/API/registration-base-url-resource.md | 6 +++--- docs/Consume-Packages/Dependency-Resolution.md | 2 +- .../Package-References-in-Project-Files.md | 2 +- docs/Consume-Packages/Package-Restore.md | 2 +- docs/Consume-Packages/Team-Foundation-Build.md | 2 +- docs/Create-Packages/Creating-a-Package.md | 2 +- docs/Create-Packages/Symbol-Packages.md | 2 +- docs/Create-Packages/project-json-Impact.md | 2 +- docs/Create-Packages/project-json-and-UWP.md | 8 ++++---- docs/Guides/Create-NET-Standard-Packages-VS2015.md | 6 +++--- docs/Guides/Create-NET-Standard-Packages-VS2017.md | 6 +++--- docs/Guides/Create-UWP-Controls.md | 6 +++--- docs/Guides/Install-NuGet.md | 4 ++-- docs/Guides/api/query-for-all-published-packages.md | 2 +- docs/Policies/Deleting-Packages.md | 2 +- docs/Policies/Governance.md | 4 ++-- docs/Policies/NuGet-FAQ.md | 6 +++--- docs/Quickstart/Create-and-Publish-a-Package.md | 3 +-- docs/Reference/Errors-and-Warnings.md | 2 +- docs/Release-Notes/NuGet-1.1.md | 4 ++-- docs/Release-Notes/NuGet-1.2.md | 2 +- docs/Release-Notes/NuGet-1.8.md | 2 +- docs/Release-Notes/NuGet-2.8.md | 4 ++-- docs/Release-Notes/NuGet-3.0-Preview.md | 2 +- docs/Schema/Target-Frameworks.md | 2 +- docs/Schema/msbuild-targets.md | 4 ++-- docs/Schema/nuspec.md | 2 +- docs/Tools/Package-Manager-Console.md | 4 ++-- docs/Tools/Package-Manager-UI.md | 2 +- docs/Tools/cli-ref-pack.md | 2 +- docs/Tools/dotnet-Commands.md | 12 ++++++------ docs/Tools/ps-ref-add-bindingredirect.md | 2 +- docs/Tools/ps-ref-find-package.md | 2 +- docs/Tools/ps-ref-get-package.md | 2 +- docs/Tools/ps-ref-install-package.md | 2 +- docs/Tools/ps-ref-uninstall-package.md | 4 ++-- docs/What-is-NuGet.md | 2 +- 40 files changed, 71 insertions(+), 72 deletions(-) diff --git a/README.md b/README.md index 36de1c403..7f7ce415d 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ NuGet follows the [.NET Foundation Contributors Code of Conduct](https://github. No contribution is too big or too small-- -1. Visit the page to edit on [docs.microsoft.com/nuget](https://docs.microsoft.com/en-us/nuget/), then click the **Edit** button on the top right. This brings you to the appropriate markdown page in the repo. +1. Visit the page to edit on [docs.microsoft.com/nuget](/en-us/nuget/), then click the **Edit** button on the top right. This brings you to the appropriate markdown page in the repo. 1. Edit the markdown: 1. If you're including images (use PNGs, generally), place them in the media folder that's in the topic's folder. Links are then `media/.png`. 1. Relative links to other pages in this docset should be in the form `..//.md` including the training `.md`. If you're linking to another topic in the same folder, then `..//` can be omitted. When using anchors, always remember to include the `.md` before the `#`. @@ -121,16 +121,16 @@ The only case when you should use ``` without a language tag is when creating a docs.microsoft.com uses blockquotes for callouts, that is, lines starting with ">". -Callout sections with ">" only will appear with a solid gray line to the left. See [Creating NuGet packages](https://docs.microsoft.com/en-us/nuget/create-packages/creating-a-package) for examples. +Callout sections with ">" only will appear with a solid gray line to the left. See [Creating NuGet packages](/en-us/nuget/create-packages/creating-a-package) for examples. You can also use one of the following callout tags on the first line that will create a shaded callout in the indicated color: | Tag | Shading color | Topic with examples | | --- | --- | --- | -| `> [!Note]` | Light blue, use for callouts without any special emphasis. | [Creating NuGet packages](https://docs.microsoft.com/nuget/create-packages/creating-a-package) | -| `> [!Tip]` | Green, use for callouts that share special tips and tricks or other helpful knowledge. | [Package consumption overview](https://docs.microsoft.com/nuget/consume-packages/overview-and-workflow) | -| `> [!Important]` | Yellow, use for callouts that describe cautions. | [NuGet.Server](https://docs.microsoft.com/nuget/hosting-packages/nuget-server) | -| `> [!Warning]` | Red, use for callouts that warn readers about situations that could cause data loss or unexpected consequences. | [Dependency resolution](https://docs.microsoft.com/nuget/consume-packages/dependency-resolution) | +| `> [!Note]` | Light blue, use for callouts without any special emphasis. | [Creating NuGet packages](/nuget/create-packages/creating-a-package) | +| `> [!Tip]` | Green, use for callouts that share special tips and tricks or other helpful knowledge. | [Package consumption overview](/nuget/consume-packages/overview-and-workflow) | +| `> [!Important]` | Yellow, use for callouts that describe cautions. | [NuGet.Server](/nuget/hosting-packages/nuget-server) | +| `> [!Warning]` | Red, use for callouts that warn readers about situations that could cause data loss or unexpected consequences. | [Dependency resolution](/nuget/consume-packages/dependency-resolution) | ### Links diff --git a/docs/API/catalog-resource.md b/docs/API/catalog-resource.md index f1eecce6c..12b7e06c5 100644 --- a/docs/API/catalog-resource.md +++ b/docs/API/catalog-resource.md @@ -266,7 +266,7 @@ requireLicenseAgreement | boolean | no | Assume `false` summary | string | no | tags | array of strings | no | title | string | no | -verbatimVersion | string | no | The version string as it is originally found in the .nuspec +verbatimVersion | string | no | The version string as it's originally found in the .nuspec The package `version` property is the full, normalized version string. This means that SemVer 2.0.0 build data can be included here. diff --git a/docs/API/overview.md b/docs/API/overview.md index 97285fc06..3ef8512ac 100644 --- a/docs/API/overview.md +++ b/docs/API/overview.md @@ -31,7 +31,7 @@ The NuGet API is a set of HTTP endpoints that can be used to download packages, and perform most other operations available in the official NuGet clients. This API is used by the NuGet client in Visual Studio, nuget.exe, and the .NET CLI to perform NuGet operations such as -[`dotnet restore`](https://docs.microsoft.com/dotnet/articles/core/preview3/tools/dotnet-restore), search in the Visual +[`dotnet restore`](/dotnet/articles/core/preview3/tools/dotnet-restore), search in the Visual Studio UI, and [`nuget.exe push`](../tools/cli-ref-push.md). Note in some cases, nuget.org has additional requirements that are not enforced by other package sources. These @@ -62,7 +62,7 @@ version string's minor version will be increased. Older clients (such as nuget.exe 2.x) do not support the V3 API and only support the older V2 API, which is not documented here. -The NuGet V3 API is named as such because it is the successor of the V2 API, which was the OData-based protocol +The NuGet V3 API is named as such because it's the successor of the V2 API, which was the OData-based protocol implemented by the 2.x version of the official NuGet client. The V3 API was first supported by the 3.0 version of the official NuGet client and is still the latest major protocol version supported by the NuGet client, 4.0 and on. diff --git a/docs/API/registration-base-url-resource.md b/docs/API/registration-base-url-resource.md index 84081c8b1..b8d978fec 100644 --- a/docs/API/registration-base-url-resource.md +++ b/docs/API/registration-base-url-resource.md @@ -90,9 +90,9 @@ discovered by inspecting the registration index. ### Registration pages and leaves -Although it is not strictly required for a server implementation to store registration leafs in seperate -registration page documents, it is a recommended practice to conserve client-side memory. Instead of inlining all -registration leaves in the index or immediately storing leaves in page documents, it is recommended that the server +Although it's not strictly required for a server implementation to store registration leafs in seperate +registration page documents, it's a recommended practice to conserve client-side memory. Instead of inlining all +registration leaves in the index or immediately storing leaves in page documents, it's recommended that the server implementation define some heuristic to choose between the two approaches based on the number of package versions or cumulative size of package leaves. diff --git a/docs/Consume-Packages/Dependency-Resolution.md b/docs/Consume-Packages/Dependency-Resolution.md index 968e6ed87..8b6b7e233 100644 --- a/docs/Consume-Packages/Dependency-Resolution.md +++ b/docs/Consume-Packages/Dependency-Resolution.md @@ -112,7 +112,7 @@ When different package versions are referred to at the same distance in the grap ![Resolving cousin dependencies using the lower version that satisfies all constraints](media/projectJson-dependency-7.png) -In some cases, it is not possible to meet all version requirements. As shown below, if Package A requires exactly Package B 1.0 and Package C requires Package B >=2.0, then NuGet cannot resolve the dependencies and gives an error. +In some cases, it's not possible to meet all version requirements. As shown below, if Package A requires exactly Package B 1.0 and Package C requires Package B >=2.0, then NuGet cannot resolve the dependencies and gives an error. ![Unresolvable dependencies due to an exact version requirement](media/projectJson-dependency-8.png) diff --git a/docs/Consume-Packages/Package-References-in-Project-Files.md b/docs/Consume-Packages/Package-References-in-Project-Files.md index 7d21d775b..5a2899b64 100644 --- a/docs/Consume-Packages/Package-References-in-Project-Files.md +++ b/docs/Consume-Packages/Package-References-in-Project-Files.md @@ -34,7 +34,7 @@ Package references, using the `PackageReference` node, allow you to manage NuGet > [!Important] > At present, package references are supported in Visual Studio 2017 only, for .NET Core projects, .NET Standard projects, and UWP projects targeting Windows 10 Build 15063 (Creators Update). -The `PackageReference` approach allows you to use MSBuild conditions to choose package references per target framework, configuration, platform, or other groupings. It also allows for fine-grained control over dependencies and content flow. In terms of behavior and [dependency resolution](Dependency-Resolution.md), it is the same as using `project.json`. +The `PackageReference` approach allows you to use MSBuild conditions to choose package references per target framework, configuration, platform, or other groupings. It also allows for fine-grained control over dependencies and content flow. In terms of behavior and [dependency resolution](Dependency-Resolution.md), it's the same as using `project.json`. For more details on the integration of MSBuild with package references in project files, see [NuGet pack and restore as MSBuild targets](../schema/msbuild-targets.md). diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/Consume-Packages/Package-Restore.md index c60fe2c2c..db703e1a4 100644 --- a/docs/Consume-Packages/Package-Restore.md +++ b/docs/Consume-Packages/Package-Restore.md @@ -67,7 +67,7 @@ From the command line or [Package Manager Console](../tools/Package-Manager-Cons | Command | Applicable scenarios | | --- | --- | | `nuget restore` | All versions of NuGet and all reference types. See [Command-line restore](#command-line-restore) below. | -| `dotnet restore` | Same as `nuget restore` for .NET Core projects. See [dotnet restore](https://docs.microsoft.com/dotnet/articles/core/tools/dotnet-restore). | +| `dotnet restore` | Same as `nuget restore` for .NET Core projects. See [dotnet restore](/dotnet/articles/core/tools/dotnet-restore). | | `msbuild /t:restore` | Nuget 4.x+ and MSBuild 15.1+ with [package references in project files](../Consume-Packages/Package-References-in-Project-Files.md) only. `nuget restore` and `dotnet restore` both use this command for applicable projects. See [NuGet pack and restore as MSBuild targets- restore target](../schema/msbuild-targets.md#restore-target).| Visual Studio itself also restores packages at different times: diff --git a/docs/Consume-Packages/Team-Foundation-Build.md b/docs/Consume-Packages/Team-Foundation-Build.md index 7ed175232..0a25d9cfb 100644 --- a/docs/Consume-Packages/Team-Foundation-Build.md +++ b/docs/Consume-Packages/Team-Foundation-Build.md @@ -38,7 +38,7 @@ ms.reviewer: > > If you're using Visual Studio Team Services or on-premises Team Foundation Server 2013 with its build process templates, Automatic Package Restore happens as part of the build process. -This section will provide a detailed walkthrough on how to restore packages as part of the [Team Services Build](https://docs.microsoft.com/vsts/build-release/index) both, for both Git and Team Services Version Control. +This section will provide a detailed walkthrough on how to restore packages as part of the [Team Services Build](/vsts/build-release/index) both, for both Git and Team Services Version Control. Although this walkthrough is specific for the scenario of using Visual Studio Team Services, the concepts also apply to other version control and build systems. diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index e771c2e03..d5dd25bf0 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -280,7 +280,7 @@ With NuGet 3.5+, packages can be marked with a specific *package type* to indica - `Dependency` type packages add build- or run-time assets to libraries and applications, and can be installed in any project type (assuming they are compatible). -- `DotnetCliTool` type packages are extensions to the [.NET CLI](https://docs.microsoft.com/dotnet/articles/core/tools/index) and are invoked from the command line. Such packages can be installed only in .NET Core projects and have no effect on restore operations. More details about these per-project extensions are available in the [.NET Core extensibility](https://docs.microsoft.com/dotnet/articles/core/tools/extensibility#per-project-based-extensibility) documentation. +- `DotnetCliTool` type packages are extensions to the [.NET CLI](/dotnet/articles/core/tools/index) and are invoked from the command line. Such packages can be installed only in .NET Core projects and have no effect on restore operations. More details about these per-project extensions are available in the [.NET Core extensibility](/dotnet/articles/core/tools/extensibility#per-project-based-extensibility) documentation. When a DotnetCliTool package is installed, Visual Studio places the package in the `project.json` `tools` node instead of the `dependencies` node. diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index 83500a05b..8bbbc1f47 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -33,7 +33,7 @@ ms.reviewer: In addition to building packages for nuget.org or other sources, NuGet also supports creating associated symbol packages and publishing them to the [SymbolSource repository](http://www.symbolsource.org/Public). -Package consumers can then add `http://srv.symbolsource.org/pdb/Public` to their symbol sources in Visual Studio, which allows stepping into package code in the Visual Studio debugger. See [Specify symbol (.pdb) and source files in the Visual Studio debugger](https://docs.microsoft.com/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger) for details on that process. +Package consumers can then add `http://srv.symbolsource.org/pdb/Public` to their symbol sources in Visual Studio, which allows stepping into package code in the Visual Studio debugger. See [Specify symbol (.pdb) and source files in the Visual Studio debugger](/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger) for details on that process. ## Creating a symbol package diff --git a/docs/Create-Packages/project-json-Impact.md b/docs/Create-Packages/project-json-Impact.md index 96f7f0af3..24817e500 100644 --- a/docs/Create-Packages/project-json-Impact.md +++ b/docs/Create-Packages/project-json-Impact.md @@ -73,7 +73,7 @@ The format enables native content as a first class scenario. This means that man In summary if the functionality above is not absolutely necessary, we recommend sticking with the existing package format, as the format described here is supported only by NuGet 3.x+. -It would be possible to build packages to work for both `packages.config` and `project.json` scenarios through shimming, however it is often simpler to just structure the packages the traditional way, without the deprecated features mentioned above. +It would be possible to build packages to work for both `packages.config` and `project.json` scenarios through shimming, however it's often simpler to just structure the packages the traditional way, without the deprecated features mentioned above. ## 3.x package format ## diff --git a/docs/Create-Packages/project-json-and-UWP.md b/docs/Create-Packages/project-json-and-UWP.md index 1b6b557c2..03b03f9f1 100644 --- a/docs/Create-Packages/project-json-and-UWP.md +++ b/docs/Create-Packages/project-json-and-UWP.md @@ -78,7 +78,7 @@ NuGet packages using this format have the following well-known folder and behavi NuGet packages can contain `.targets` and `.props` files which are imported into any MSBuild project that the package is installed into. In NuGet 2.x, this was done by injecting `` statements into the `.csproj` file, in NuGet 3.0 there is no specific "installation to project" action. Instead the package restore process writes two files `[projectname].nuget.props` and `[projectname].NuGet.targets`. -MSBuild knows to look for these two files and automatically imports them near the beginning and near the end of the project build process. This provides very similar behavior to NuGet 2.x, but with one major difference: *there is no guaranteed order of targets/props files in this case*. However, MSBuild does provide ways to order targets through the `BeforeTargets` and `AfterTargets` attributes of the `` definition (see [Target Element (MSBuild)](https://docs.microsoft.com/visualstudio/msbuild/target-element-msbuild). +MSBuild knows to look for these two files and automatically imports them near the beginning and near the end of the project build process. This provides very similar behavior to NuGet 2.x, but with one major difference: *there is no guaranteed order of targets/props files in this case*. However, MSBuild does provide ways to order targets through the `BeforeTargets` and `AfterTargets` attributes of the `` definition (see [Target Element (MSBuild)](/visualstudio/msbuild/target-element-msbuild). ## Lib and Ref @@ -101,7 +101,7 @@ There are sometimes cases where a different assembly should be used during compi Most package authors don't require the `ref` folder. It is useful for packages that need to provide a consistent surface area for compilation and IntelliSense but then have different implementation for different TxMs. The biggest use case of this are the `System.*` packages that are being produced as part of shipping .NET Core on NuGet. These packages have various implementations that are being unified by a consistent set of ref assemblies. -Mechanically, the assemblies included in the `ref` folder are the reference assemblies being passed to the compiler. For those of you who have used csc.exe these are the assemblies we are passing to the [C# /reference option](https://docs.microsoft.com/dotnet/articles/csharp/language-reference/compiler-options/reference-compiler-option) switch. +Mechanically, the assemblies included in the `ref` folder are the reference assemblies being passed to the compiler. For those of you who have used csc.exe these are the assemblies we are passing to the [C# /reference option](/dotnet/articles/csharp/language-reference/compiler-options/reference-compiler-option) switch. The structure of the `ref` folder is the same as `lib`, for example: @@ -129,7 +129,7 @@ In this example the assemblies in the `ref` directories would all be identical. ## Runtimes -The runtimes folder contains assemblies and native libraries required to run on specific "runtimes", which are generally defined by Operating System and CPU architecture. These runtimes are identified using [Runtime Identifiers (RIDs)](https://docs.microsoft.com/dotnet/core/rid-catalog) such as `win`, `win-x86`, `win7-x86`, `win8-64`, etc. +The runtimes folder contains assemblies and native libraries required to run on specific "runtimes", which are generally defined by Operating System and CPU architecture. These runtimes are identified using [Runtime Identifiers (RIDs)](/dotnet/core/rid-catalog) such as `win`, `win-x86`, `win7-x86`, `win8-64`, etc. ## Native light-up @@ -165,7 +165,7 @@ Given the above package the following things happen: In the example above the `lib/net40` assembly is purely managed code, whilst the assemblies in the runtimes folder will p/invoke into the native helper assembly to call APIs specific to Windows 8. -Only a single `lib` folder is ever be picked, so if there is a runtime specific folder it is chosen over non-runtime specific `lib`. The native folder is additive, if it exists it's copied to the output of the build. +Only a single `lib` folder is ever be picked, so if there is a runtime specific folder it's chosen over non-runtime specific `lib`. The native folder is additive, if it exists it's copied to the output of the build. ## Managed wrapper diff --git a/docs/Guides/Create-NET-Standard-Packages-VS2015.md b/docs/Guides/Create-NET-Standard-Packages-VS2015.md index c5527ceda..64920ebd3 100644 --- a/docs/Guides/Create-NET-Standard-Packages-VS2015.md +++ b/docs/Guides/Create-NET-Standard-Packages-VS2015.md @@ -32,7 +32,7 @@ ms.reviewer: *Applies to NuGet 3.x. See [Create .NET Standard Packages with Visual Studio 2017](../guides/create-net-standard-packages-vs2017.md) for working with NuGet 4.x+.* -The [.NET Standard Library](https://docs.microsoft.com/dotnet/articles/standard/library) is a formal specification of .NET APIs intended to be available on all .NET runtimes, thus establishing greater uniformity in the .NET ecosystem. The .NET Standard Library defines a uniform set of BCL (Base Class Library) APIs for all .NET platforms to implement, independent of workload. It enables developers to produce PCLs that are usable across all .NET runtimes, and reduces if not eliminates platform-specific conditional compilation directives in shared code. +The [.NET Standard Library](/dotnet/articles/standard/library) is a formal specification of .NET APIs intended to be available on all .NET runtimes, thus establishing greater uniformity in the .NET ecosystem. The .NET Standard Library defines a uniform set of BCL (Base Class Library) APIs for all .NET platforms to implement, independent of workload. It enables developers to produce PCLs that are usable across all .NET runtimes, and reduces if not eliminates platform-specific conditional compilation directives in shared code. This guide will walk you through creating a nuget package targeting .NET Standard Library 1.4. This will work across .NET Framework 4.6.1, Universal Windows Platform 10, .NET Core, and Mono/Xamarin. For details, see the [.NET Standard mapping table](#net-standard-mapping-table) later in this topic. @@ -338,5 +338,5 @@ To do this, create your `readme.txt` file, place it in the project root folder, - [Supporting Multiple .NET Framework Versions](../create-packages/supporting-multiple-target-frameworks.md) - [Include MSBuild props and targets in a package](../create-packages/creating-a-package.md#including-msbuild-props-and-targets-in-a-package) - [Creating Localized Packages](../create-packages/creating-localized-packages.md) -- [.NET Standard Library documentation](https://docs.microsoft.com/dotnet/articles/standard/library) -- [Porting to .NET Core from .NET Framework](https://docs.microsoft.com/dotnet/articles/core/porting/index) +- [.NET Standard Library documentation](/dotnet/articles/standard/library) +- [Porting to .NET Core from .NET Framework](/dotnet/articles/core/porting/index) diff --git a/docs/Guides/Create-NET-Standard-Packages-VS2017.md b/docs/Guides/Create-NET-Standard-Packages-VS2017.md index 9f9e7cbe3..0c3d7450d 100644 --- a/docs/Guides/Create-NET-Standard-Packages-VS2017.md +++ b/docs/Guides/Create-NET-Standard-Packages-VS2017.md @@ -32,7 +32,7 @@ ms.reviewer: *Applies to NuGet 4.x+ and MSBuild 15.3+ as provided with Visual Studio 2017 Update 3. For earlier versions of Visual Studio 2017, these instructions apply to .NET Standard 1.4 to 1.6 by changing the \ property. Also see [Create .NET Standard Packages with Visual Studio 2015](../guides/create-net-standard-packages-vs2015.md) for working with NuGet 3.x+.* -The [.NET Standard Library](https://docs.microsoft.com/dotnet/articles/standard/library) is a formal specification of .NET APIs intended to be available on all .NET runtimes, thus establishing greater uniformity in the .NET ecosystem. The .NET Standard Library defines a uniform set of BCL (Base Class Library) APIs for all .NET platforms to implement, independent of workload. It enables developers to produce PCLs that are usable across all .NET runtimes, and reduces if not eliminates platform-specific conditional compilation directives in shared code. +The [.NET Standard Library](/dotnet/articles/standard/library) is a formal specification of .NET APIs intended to be available on all .NET runtimes, thus establishing greater uniformity in the .NET ecosystem. The .NET Standard Library defines a uniform set of BCL (Base Class Library) APIs for all .NET platforms to implement, independent of workload. It enables developers to produce PCLs that are usable across all .NET runtimes, and reduces if not eliminates platform-specific conditional compilation directives in shared code. This guide will walk you through creating a nuget package targeting .NET Standard Library 2.0 with Visual Studio 2017 Update 3 and NuGet 4.0. @@ -122,5 +122,5 @@ To make your package available to other developers, follow the instructions on - [Package References in Project Files](../consume-packages/package-references-in-project-files.md) describes all the details of describing your package directly in the project file. - [NuGet pack and restore as MSBuild targets](../schema/msbuild-targets.md) describes all the options for using `msbuild /t:pack` to create the package. -- [.NET Standard Library documentation](https://docs.microsoft.com/dotnet/articles/standard/library) -- [Porting to .NET Core from .NET Framework](https://docs.microsoft.com/dotnet/articles/core/porting/index) +- [.NET Standard Library documentation](/dotnet/articles/standard/library) +- [Porting to .NET Core from .NET Framework](/dotnet/articles/core/porting/index) diff --git a/docs/Guides/Create-UWP-Controls.md b/docs/Guides/Create-UWP-Controls.md index 352dc152e..df6c67014 100644 --- a/docs/Guides/Create-UWP-Controls.md +++ b/docs/Guides/Create-UWP-Controls.md @@ -114,7 +114,7 @@ For example, let’s say you’ve set the TPMinV for you controls package to Win \ref\uap10.0\* ``` -To enforce the appropriate TPMinV check, create an [MSBuild targets file](https://docs.microsoft.com/visualstudio/msbuild/msbuild-targets) and package it under the build folder (replacing "your_assembly_name" with the name of your specific assembly): +To enforce the appropriate TPMinV check, create an [MSBuild targets file](/visualstudio/msbuild/msbuild-targets) and package it under the build folder (replacing "your_assembly_name" with the name of your specific assembly): ``` \build @@ -142,7 +142,7 @@ Here is an example of what the targets file should look like: ## Add design-time support -To configure where the control properties show up in the property inspector, add custom adorners, etc., place your `design.dll` file inside the `lib\\Design` folder as appropriate to the target platform. Also, to ensure that the **[Edit Template > Edit a Copy](https://docs.microsoft.com/windows/uwp/controls-and-patterns/xaml-styles#modify-the-default-system-styles)** feature works, you must include the `Generic.xaml` and any resource dictionaries that it merges in the `\Themes` folder. (This file has no impact on the runtime behavior of a control.) +To configure where the control properties show up in the property inspector, add custom adorners, etc., place your `design.dll` file inside the `lib\\Design` folder as appropriate to the target platform. Also, to ensure that the **[Edit Template > Edit a Copy](/windows/uwp/controls-and-patterns/xaml-styles#modify-the-default-system-styles)** feature works, you must include the `Generic.xaml` and any resource dictionaries that it merges in the `\Themes` folder. (This file has no impact on the runtime behavior of a control.) ``` @@ -181,7 +181,7 @@ To package content such as images that can be used by your control or the consum \tools ``` -You may also author an[MSBuild targets file](https://docs.microsoft.com/visualstudio/msbuild/msbuild-targets) to ensure the asset is copied to the consuming project’s output folder: +You may also author an[MSBuild targets file](/visualstudio/msbuild/msbuild-targets) to ensure the asset is copied to the consuming project’s output folder: ```xml diff --git a/docs/Guides/Install-NuGet.md b/docs/Guides/Install-NuGet.md index 6c572fe76..27f8a9aea 100644 --- a/docs/Guides/Install-NuGet.md +++ b/docs/Guides/Install-NuGet.md @@ -31,7 +31,7 @@ There are two primary tools available to help you build, publish and consume NuG 1. The [**NuGet CLI**](#nuget-cli) is the command-line utility for Windows that provides all NuGet capabilities; it can also be run on Mac OSX and Linux using Mono, or through the .NET Core CLI (`dotnet`). 1. The [**NuGet Package Manager in Visual Studio**](#nuget-package-manager-in-visual-studio) (Windows only) is a GUI tool for managing packages and includes a PowerShell console through which you can use certain NuGet commands directly within Visual Studio. The Package Manager UI and Console are both included with Visual Studio (on Windows) 2012 and later and can be installed manually for earlier versions. - With Visual Studio for Mac, NuGet capabilities are built in directly. See [Including a NuGet package in your project](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough) for a walkthrough. + With Visual Studio for Mac, NuGet capabilities are built in directly. See [Including a NuGet package in your project](/visualstudio/mac/nuget-walkthrough) for a walkthrough. Visual Studio Code at present does not have any built-in NuGet support. Use the NuGet CLI or the [dotnet CLI](../Tools/dotnet-Commands.md). @@ -55,7 +55,7 @@ The following capabilities are supported only in the NuGet CLI: > [!Note] > Another good tool is the [NuGet Package Explorer](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer), an open-source, stand-alone tool to visually explore, create, and edit NuGet packages. It's very helpful, for example, to make experimental changes to a package structure without having to rebuild the package each time. -> The cross-platform [.NET Core CLI](https://docs.microsoft.com/dotnet/articles/core/tools/index#installation) toolchain, used for developing .NET Core applications, supports several NuGet commands, such as delete, locals, push, pack, and restore. +> The cross-platform [.NET Core CLI](/dotnet/articles/core/tools/index#installation) toolchain, used for developing .NET Core applications, supports several NuGet commands, such as delete, locals, push, pack, and restore. ## NuGet CLI diff --git a/docs/Guides/api/query-for-all-published-packages.md b/docs/Guides/api/query-for-all-published-packages.md index 444e11965..26c517584 100644 --- a/docs/Guides/api/query-for-all-published-packages.md +++ b/docs/Guides/api/query-for-all-published-packages.md @@ -139,7 +139,7 @@ same way not matter what you are doing with the catalog leaves. If you are interested in downloading the .nupkg's for packages found in the catalog, you can use the [package content resource](../../api/package-base-address-resource.md). However, note that there is a short delay -between when a package is found in catalog and when it is available in the package content resource. Therefore, if +between when a package is found in catalog and when it's available in the package content resource. Therefore, if you encounter `404 Not Found` when attempting to download a .nupkg for a package that you found in the catalog, simply retry a short time later. Fixing this delay is tracked by GitHub issue [NuGet/NuGetGallery#3455](https://github.com/NuGet/NuGetGallery/issues/3455). diff --git a/docs/Policies/Deleting-Packages.md b/docs/Policies/Deleting-Packages.md index 1c78c1e92..059448cdf 100644 --- a/docs/Policies/Deleting-Packages.md +++ b/docs/Policies/Deleting-Packages.md @@ -49,7 +49,7 @@ Packages that meet any of the following criteria are not allowed on the public N - Infringes copyrights or violates licenses. - Contains illegal content. - Are being used to squat on package identifiers, including packages that have zero productive content. Packages must contain code or the owners must concede the identifier to someone who actually has a product to ship. -- Attempt to make the gallery do something that it is not explicitly designed to do. +- Attempt to make the gallery do something that it's not explicitly designed to do. If you find a package that is in violation of any of these items, click the **Report Abuse** link on the package details page and submit a report. diff --git a/docs/Policies/Governance.md b/docs/Policies/Governance.md index a051658f2..a8ab950be 100644 --- a/docs/Policies/Governance.md +++ b/docs/Policies/Governance.md @@ -33,7 +33,7 @@ ms.reviewer: The NuGet project is led by a Benevolent Dictator and managed by the community. That is, the community actively contributes to the day-to-day maintenance of the project, but the general strategic line is drawn by the benevolent dictator. In case of disagreement, the benevolent dictator has the last word. -It is the benevolent dictator’s job to resolve disputes within the community and to ensure that the project is able to progress in a coordinated way. In turn, it is the community’s job to guide the decisions of the benevolent dictator through active engagement and contribution. +It is the benevolent dictator’s job to resolve disputes within the community and to ensure that the project is able to progress in a coordinated way. In turn, it's the community’s job to guide the decisions of the benevolent dictator through active engagement and contribution. ## Roles and responsibilities @@ -51,7 +51,7 @@ Additionally, .NET Foundation staff consider the project lead the primary or fir Committers are contributors who have made sustained valuable contributions to NuGet and are appointed by the Benevolent Dictator. One appointed, committers are relied upon to both write code directly to the repository and screen the contributions of others. Committers are often developers but can contribute in other ways. -Typically, a committer focuses on a specific aspect of the project, and brings a level of expertise and understanding that earns them the respect of the community and the project lead. The role of committer is not an official one, it is simply a position that influential members of the community assume as the project lead looks to them for guidance and support. +Typically, a committer focuses on a specific aspect of the project, and brings a level of expertise and understanding that earns them the respect of the community and the project lead. The role of committer is not an official one, it's simply a position that influential members of the community assume as the project lead looks to them for guidance and support. Committers have no authority where the overall direction of NuGet is concerned. However, they do have the ear of the project lead. It is a committer’s job to ensure that the lead is aware of the community’s needs and collective objectives, and to help develop or elicit appropriate contributions to the project. Often, committers are given informal control over their specific areas of responsibility, and are assigned rights to directly modify certain areas of the source code. That is, although committers do not have explicit decision-making authority, they will often find that their actions are synonymous with the decisions made by the lead. diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index d09b5191d..c19fbbe25 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -53,9 +53,9 @@ For more information, see [Finding and choosing packages](../Consume-Packages/Fi **How is NuGet supported in different Visual Studio products?** - Visual Studio on Windows supports the [Package Manager UI](../tools/Package-Manager-UI.md) and the [Package Manager Console](../tools/Package-Manager-Console.md). -- Visual Studio for Mac has built-in NuGet capabilities as described on [Including a NuGet package in your project](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough). +- Visual Studio for Mac has built-in NuGet capabilities as described on [Including a NuGet package in your project](/visualstudio/mac/nuget-walkthrough). - Visual Studio Code (all platforms) does not have any direct NuGet integration. Use the [NuGet CLI](../tools/nuget-exe-CLI-Reference.md) or the [dotnet CLI](../tools/dotnet-commands.md). -- Visual Studio Team Services provides [a build step to restore NuGet packages](https://docs.microsoft.com/vsts/build-release/tasks/package/nuget). You can also [host private NuGet package feeds on Team Services](https://www.visualstudio.com/docs/package/nuget/publish). +- Visual Studio Team Services provides [a build step to restore NuGet packages](/vsts/build-release/tasks/package/nuget). You can also [host private NuGet package feeds on Team Services](https://www.visualstudio.com/docs/package/nuget/publish). **How do I check the exact version of the NuGet tools that are installed?** @@ -97,7 +97,7 @@ Yes, it's possible to add custom commands to `nuget.exe`, as described in [Rob R **How do I get access to the DTE object in the Package Manager console?** -The top-level object in the Visual Studio automation object model is called the DTE (Development Tools Environment) object. The console provides this through a variable named `$DTE`. For more information, see [Automation Model Overview](https://docs.microsoft.com/visualstudio/extensibility/internals/automation-model-overview) in the Visual Studio Extensibility documentation. +The top-level object in the Visual Studio automation object model is called the DTE (Development Tools Environment) object. The console provides this through a variable named `$DTE`. For more information, see [Automation Model Overview](/visualstudio/extensibility/internals/automation-model-overview) in the Visual Studio Extensibility documentation. **I try to cast the $DTE variable to the type DTE2, but I get an error: Cannot convert the "EnvDTE.DTEClass" value of type "EnvDTE.DTEClass" to type "EnvDTE80.DTE2". What's wrong?** diff --git a/docs/Quickstart/Create-and-Publish-a-Package.md b/docs/Quickstart/Create-and-Publish-a-Package.md index 8a99e4cfa..c3da8e728 100644 --- a/docs/Quickstart/Create-and-Publish-a-Package.md +++ b/docs/Quickstart/Create-and-Publish-a-Package.md @@ -117,7 +117,6 @@ Once you have a `.nupkg` file, you publish it to nuget.org using the `push` comm > [!Warning] > The packages you publish to nuget.org are publicly visible to other developers. To host packages privately, see [Hosting packages](../hosting-packages/overview.md). - 1. Create a free account on [nuget.org](https://www.nuget.org/users/account/LogOn?returnUrl=%2F), or log in if you already have one. Creating a new account sends a confirmation email. You must confirm the account before you can upload a package. 1. Once logged in, select your user name (on the upper right), then select **API Keys**. @@ -136,7 +135,7 @@ Once you have a `.nupkg` file, you publish it to nuget.org using the `push` comm ``` nuget push AppLogger.1.0.0.0.nupkg 47be3377-c434-4c29-8576-af7f6993a54b -Source https://api.nuget.org/v3/index.json ``` - + 1. nuget.exe displays the results of the publishing process: ``` diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index 2be0e3c83..4a222aea0 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -22,7 +22,7 @@ ms.reviewer: In NuGet 4.3.0, errors and warnings are numbered as described in this topic and provide detailed information to help you address the issues involved. -The errors and warnings listed here are available only with [PackageReference-based](../Consume-Packages/Package-References-in-Project-Files.md) projects and NuGet 4.3.0. NuGet also honors MSBuild properties to suppress warnings or elevate them to errors. For more information, see [How to: Suppress Compiler Warnings](https://docs.microsoft.com/visualstudio/ide/how-to-suppress-compiler-warnings) in the Visual Studio documentation. +The errors and warnings listed here are available only with [PackageReference-based](../Consume-Packages/Package-References-in-Project-Files.md) projects and NuGet 4.3.0. NuGet also honors MSBuild properties to suppress warnings or elevate them to errors. For more information, see [How to: Suppress Compiler Warnings](/visualstudio/ide/how-to-suppress-compiler-warnings) in the Visual Studio documentation. **Errors** diff --git a/docs/Release-Notes/NuGet-1.1.md b/docs/Release-Notes/NuGet-1.1.md index b0941ea00..9be71c6b4 100644 --- a/docs/Release-Notes/NuGet-1.1.md +++ b/docs/Release-Notes/NuGet-1.1.md @@ -248,7 +248,7 @@ The following is a list of features and bugs that were fixed for NuGet CTP 1. * [NuPack.UI should use the PackageSource API](http://nuget.codeplex.com/workitem/26) * [[Nupack.Core]: PackageManager marks packages as installed prior to installing them](http://nuget.codeplex.com/workitem/27) * [Deleting default project from solution still shows the deleted project as default](http://nuget.codeplex.com/workitem/30) -* [New-Package fails with "Cannot add part for the specified URI because it is already in the package."](http://nuget.codeplex.com/workitem/32) +* [New-Package fails with "Cannot add part for the specified URI because it's already in the package."](http://nuget.codeplex.com/workitem/32) * [Remove "NuPack" strings from Visual Studio GUI](http://nuget.codeplex.com/workitem/35) * [Add Apache Header To a COPYRIGHT.txt file](http://nuget.codeplex.com/workitem/36) * [Remove Update-PackageSource Command](http://nuget.codeplex.com/workitem/37) @@ -262,7 +262,7 @@ The following is a list of features and bugs that were fixed for NuGet CTP 1. * [Add-Package fails against a website that was opened from IIS or a URL](http://nuget.codeplex.com/workitem/53) * [Package Manager Source Doesn't Work With FwLink](http://nuget.codeplex.com/workitem/55) * [Set the default package source](http://nuget.codeplex.com/workitem/59) -* [When adding package sources in option, when only one source is supplied, assume it is the default.](http://nuget.codeplex.com/workitem/60) +* [When adding package sources in option, when only one source is supplied, assume it's the default.](http://nuget.codeplex.com/workitem/60) * [The Dialog UI shows fake "recent" packages](http://nuget.codeplex.com/workitem/62) * [Options: Clicking cancel does not cancel changes](http://nuget.codeplex.com/workitem/63) * [Add Package Reference Dialog Search should be case insensitive](http://nuget.codeplex.com/workitem/65) diff --git a/docs/Release-Notes/NuGet-1.2.md b/docs/Release-Notes/NuGet-1.2.md index b22641925..3f83f5f36 100644 --- a/docs/Release-Notes/NuGet-1.2.md +++ b/docs/Release-Notes/NuGet-1.2.md @@ -62,7 +62,7 @@ covers the purpose of this feature in more details. ### Specifying Framework Assembly References (GAC) In some cases, a package may depend on an assembly that’s in the .NET Framework. Strictly speaking, it’s not always -necessary that the consumer of your package reference the framework assembly. But in some cases, it is important, +necessary that the consumer of your package reference the framework assembly. But in some cases, it's important, such as when the developer needs to code against types in that assembly in order to use your package. The new `frameworkAssemblies` element, a child element of the metadata element, allows you to specify a set of `frameworkAssembly` elements pointing to a Framework assembly in the GAC. Note the emphasis on Framework assembly. diff --git a/docs/Release-Notes/NuGet-1.8.md b/docs/Release-Notes/NuGet-1.8.md index ae19e0730..c286866fe 100644 --- a/docs/Release-Notes/NuGet-1.8.md +++ b/docs/Release-Notes/NuGet-1.8.md @@ -85,7 +85,7 @@ There are 2 ways to provide this consent. The first can be found in the package The second method is to set the environment variable “EnableNuGetPackageRestore” to the value “true”. This method is intended for unattended machines such as CI or build servers. -Now, as stated above, we have only laid the groundwork for this feature in NuGet 1.8. Practically, this means that while we’ve added all of the logic to enable the feature, it is not currently enforced in this version. It will be enabled, however, in the next release of NuGet, so we wanted to make you aware of it as soon as possible so that you can configure your environments appropriately and therefore not be impacted when we start enforce the consent constraint. +Now, as stated above, we have only laid the groundwork for this feature in NuGet 1.8. Practically, this means that while we’ve added all of the logic to enable the feature, it's not currently enforced in this version. It will be enabled, however, in the next release of NuGet, so we wanted to make you aware of it as soon as possible so that you can configure your environments appropriately and therefore not be impacted when we start enforce the consent constraint. For more details, please see the [team blog post](http://blog.nuget.org/20120518/package-restore-and-consent.html) on this feature. diff --git a/docs/Release-Notes/NuGet-2.8.md b/docs/Release-Notes/NuGet-2.8.md index 1fc874aeb..7365948c3 100644 --- a/docs/Release-Notes/NuGet-2.8.md +++ b/docs/Release-Notes/NuGet-2.8.md @@ -104,11 +104,11 @@ It is not uncommon to install a prerelease version of a package in order to inve ## Development Dependencies -Many different types of capabilities can be delivered as NuGet packages - including tools that are used for optimizing the development process. These components, while they can be instrumental in developing a new package, should not be considered a dependency of the new package when it is later published. NuGet 2.8 enables a package to identify itself in the `.nuspec` file as a developmentDependency. When installed, this metadata will also be added to the `packages.config` file of the project into which the package was installed. When that `packages.config` file is later analyzed for NuGet dependencies during `nuget.exe pack`, it will exclude those dependencies marked as development dependencies. +Many different types of capabilities can be delivered as NuGet packages - including tools that are used for optimizing the development process. These components, while they can be instrumental in developing a new package, should not be considered a dependency of the new package when it's later published. NuGet 2.8 enables a package to identify itself in the `.nuspec` file as a developmentDependency. When installed, this metadata will also be added to the `packages.config` file of the project into which the package was installed. When that `packages.config` file is later analyzed for NuGet dependencies during `nuget.exe pack`, it will exclude those dependencies marked as development dependencies. ## Individual packages.config Files for Different Platforms -When developing applications for multiple target platforms, it is common to have different project files for each of the respective build environments. It is also common to consume different NuGet packages in different project files, as packages have varying levels of support for different platforms. NuGet 2.8 provides improved support for this scenario by creating different `packages.config` files for different platform-specific project files. +When developing applications for multiple target platforms, it's common to have different project files for each of the respective build environments. It is also common to consume different NuGet packages in different project files, as packages have varying levels of support for different platforms. NuGet 2.8 provides improved support for this scenario by creating different `packages.config` files for different platform-specific project files. ![Multiple package.config files](./media/NuGet-2.8/multiple-packageconfigs.png) diff --git a/docs/Release-Notes/NuGet-3.0-Preview.md b/docs/Release-Notes/NuGet-3.0-Preview.md index f4ec31a39..badae0b68 100644 --- a/docs/Release-Notes/NuGet-3.0-Preview.md +++ b/docs/Release-Notes/NuGet-3.0-Preview.md @@ -67,7 +67,7 @@ By using the "Installed" filter, you can then easily see your installed packages ### Version Consolidation -It's common to have the same package installed into multiple projects within your solution. Sometimes the versions installed into each project can drift apart and it is necessary to consolidate the versions in use. NuGet 3.0 Preview introduces a new feature for just this scenario. +It's common to have the same package installed into multiple projects within your solution. Sometimes the versions installed into each project can drift apart and it's necessary to consolidate the versions in use. NuGet 3.0 Preview introduces a new feature for just this scenario. The solution-level package management window can be accessed by right-clicking on the solution and choosing Manage NuGet Packages for Solution. From there, if you select a package that is installed into multiple projects, but with different versions in use, a new "Consolidate" action becomes available. In the screen shot below, `Newtonsoft.Json` was installed into the `SamplesClassLibrary` with version `6.0.4` and installed into `SamplesConsoleApp` with version `5.0.4`. diff --git a/docs/Schema/Target-Frameworks.md b/docs/Schema/Target-Frameworks.md index a47c7a40a..7fd16e8ae 100644 --- a/docs/Schema/Target-Frameworks.md +++ b/docs/Schema/Target-Frameworks.md @@ -118,7 +118,7 @@ A number of frameworks are related to and compatible with one another, but not n ## NET Platform Standard -The [.NET Platform Standard](https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md) simplifies references between binary-compatible frameworks, allowing a single target framework to reference a combination of others. (For background, see the [.NET Primer](https://docs.microsoft.com/dotnet/articles/standard/index).) +The [.NET Platform Standard](https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md) simplifies references between binary-compatible frameworks, allowing a single target framework to reference a combination of others. (For background, see the [.NET Primer](/dotnet/articles/standard/index).) The [NuGet Get Nearest Framework Tool](https://aka.ms/s2m3th) simulates what NuGet uses to select one framework from many available framework assets in a package based on the project's framework. diff --git a/docs/Schema/msbuild-targets.md b/docs/Schema/msbuild-targets.md index 53da70e62..c853e3f4d 100644 --- a/docs/Schema/msbuild-targets.md +++ b/docs/Schema/msbuild-targets.md @@ -203,7 +203,7 @@ When using `MSBuild /t:pack /p:IncludeSymbols=true`, the corresponding `.pdb` fi This is the same as `IncludeSymbols`, except that it copies source files along with `.pdb` files as well. All files of type `Compile` are copied over to `src\\` preserving the relative path folder structure in the resulting package. The same also happens for source files of any `ProjectReference` which has `TreatAsPackageReference` set to `false`. -If a file of type Compile, is outside the project folder, then it is just added to `src\\`. +If a file of type Compile, is outside the project folder, then it's just added to `src\\`. ### IsTool @@ -307,7 +307,7 @@ To declare a fallback for all targets in your project, leave off the `Condition` ### Replacing one library from a restore graph -If a restore is bringing the wrong assembly, it is possible to exclude that packages default choice, and replace it with your own choice. First with a top level `PackageReference`, exclude all assets: +If a restore is bringing the wrong assembly, it's possible to exclude that packages default choice, and replace it with your own choice. First with a top level `PackageReference`, exclude all assets: ```xml diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index 3a171cddb..e472308fd 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -243,7 +243,7 @@ For example, the following `` element instructs NuGet to add referen ``` -Explicit references are typically used for design-time only assemblies. When using [Code Contracts](https://docs.microsoft.com/dotnet/framework/debug-trace-profile/code-contracts), for example, contract assemblies need to be next to the runtime assemblies that they augment so that Visual Studio can find them, but the contract assemblies need not be referenced by the project or copied into the project's `bin` folder. +Explicit references are typically used for design-time only assemblies. When using [Code Contracts](/dotnet/framework/debug-trace-profile/code-contracts), for example, contract assemblies need to be next to the runtime assemblies that they augment so that Visual Studio can find them, but the contract assemblies need not be referenced by the project or copied into the project's `bin` folder. Similarly, explicit references can be used for unit test frameworks, such as XUnit, which needs its tools assemblies located next to the runtime assemblies, but does not need them included as project references. diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index f57fc24dc..043f9efc1 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -64,7 +64,7 @@ In this topic: ## Opening the console and console controls -1. Open the console in Visual Studio using the **Tools > NuGet Package Manager > Package Manager Console** command. The console is a Visual Studio window that can be arranged and positioned however you like (see [Customize window layouts in Visual Studio](https://docs.microsoft.com/visualstudio/ide/customizing-window-layouts-in-visual-studio)). +1. Open the console in Visual Studio using the **Tools > NuGet Package Manager > Package Manager Console** command. The console is a Visual Studio window that can be arranged and positioned however you like (see [Customize window layouts in Visual Studio](/visualstudio/ide/customizing-window-layouts-in-visual-studio)). 1. By default, console commands operate against a specific package source and project as set in the control at the top of the window: @@ -173,7 +173,7 @@ In Visual Studio 2017, NuGet and the NuGet Package Manager are automatically ins Also, if you're missing the NuGet Package Manager in Visual Studio 2015 and earlier, check **Tools > Extensions and Updates...** and search for the NuGet Package Manager extension. If you're unable to use the extensions installer in Visual Studio, you can download the extension directly from [https://dist.nuget.org/index.html](https://dist.nuget.org/index.html). -The Package Manager Console is not presently available with Visual Studio for Mac. The equivalent commands, however, are available through the [NuGet CLI](nuget-exe-CLI-reference.md). Visual Studio for Mac does have a UI for managing NuGet packages. See [Including a NuGet package in your project](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough). +The Package Manager Console is not presently available with Visual Studio for Mac. The equivalent commands, however, are available through the [NuGet CLI](nuget-exe-CLI-reference.md). Visual Studio for Mac does have a UI for managing NuGet packages. See [Including a NuGet package in your project](/visualstudio/mac/nuget-walkthrough). The Package Manager Console is not included with Visual Studio Code. diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index b17723053..dc13dc986 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -21,7 +21,7 @@ ms.reviewer: # NuGet Package Manager UI -The NuGet Package Manager UI in Visual Studio on Windows allows you to easily install, uninstall, and update NuGet packages in projects and solutions. For the experience in Visual Studio for Mac, see [Including a NuGet package in your project](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough). The Package Manager UI is not included with Visual Studio Code. +The NuGet Package Manager UI in Visual Studio on Windows allows you to easily install, uninstall, and update NuGet packages in projects and solutions. For the experience in Visual Studio for Mac, see [Including a NuGet package in your project](/visualstudio/mac/nuget-walkthrough). The Package Manager UI is not included with Visual Studio Code. In this topic: diff --git a/docs/Tools/cli-ref-pack.md b/docs/Tools/cli-ref-pack.md index b8e0e5719..339c2dd8c 100644 --- a/docs/Tools/cli-ref-pack.md +++ b/docs/Tools/cli-ref-pack.md @@ -49,7 +49,7 @@ where `` and `` specify the `.nuspec` or project file, | NoDefaultExcludes | Prevents default exclusion of NuGet package files and files and folders starting with a dot, such as `.svn` and `.gitignore`. | | NoPackageAnalysis | Specifies that pack should not run package analysis after building the package. | | OutputDirectory | Specifies the folder in which the created package is stored. If no folder is specified, the current folder is used. | -| Properties | Specifies a list of properties that override values in the project file; see [Common MSBuild Project Properties](https://docs.microsoft.com/visualstudio/msbuild/common-msbuild-project-properties) for property names. The Properties argument here is a list of token=value pairs, separated by semicolons, where each occurrence of `$token$` in the `.nuspec` file will be replaced with the given value. Values can be strings in quotation marks. Note that for the "Configuration" property, the default is "Debug". To change to a Release configuration, use `-Properties Configuration=Release`. | +| Properties | Specifies a list of properties that override values in the project file; see [Common MSBuild Project Properties](/visualstudio/msbuild/common-msbuild-project-properties) for property names. The Properties argument here is a list of token=value pairs, separated by semicolons, where each occurrence of `$token$` in the `.nuspec` file will be replaced with the given value. Values can be strings in quotation marks. Note that for the "Configuration" property, the default is "Debug". To change to a Release configuration, use `-Properties Configuration=Release`. | | Suffix | *(3.4.4+)* Appends a suffix to the internally generated version number, typically used for appending build or other pre-release identifiers. For example, using `-suffix nightly` will create a package with a version number like `1.2.3-nightly`. Suffixes must start with a letter to avoid warnings, errors, and potential incompatibilities with different versions of NuGet and the NuGet Package Manager. | | Symbols | Specifies that the package contains sources and symbols. When used with a `.nuspec` file, this creates a regular NuGet package file and the corresponding symbols package. | | Tool | Specifies that the output files of the project should be placed in the `tool` folder. | diff --git a/docs/Tools/dotnet-Commands.md b/docs/Tools/dotnet-Commands.md index 6984b7560..5d63ba9bc 100644 --- a/docs/Tools/dotnet-Commands.md +++ b/docs/Tools/dotnet-Commands.md @@ -29,10 +29,10 @@ ms.reviewer: --- # dotNet commands -The DotNet command-line interface, which runs on Windows, Mac OS X, and Linux, provides a number of essential nuget.exe commands as listed below. Where dotnet provides the desired commands, it is not necessary to download nuget.exe. +The DotNet command-line interface, which runs on Windows, Mac OS X, and Linux, provides a number of essential nuget.exe commands as listed below. Where dotnet provides the desired commands, it's not necessary to download nuget.exe. -- [**dotnet pack**](https://docs.microsoft.com/dotnet/core/tools/dotnet-pack?tabs=netcore2x): Packs the code into a NuGet package. As of NuGet 4.0, this runs the same code as `nuget pack`. -- [**dotnet restore**](https://docs.microsoft.com/dotnet/core/tools/dotnet-restore?tabs=netcore2x): Restores the dependencies and tools of a project. As of NuGet 4.0, this runs the same code as `nuget restore`. -- [**dotnet nuget locals**](https://docs.microsoft.com/dotnet/core/tools/dotnet-nuget-locals): Clears or lists local NuGet resources such as http the -request cache, temporary cache, or machine-wide global packages folder. -- [**dotnet nuget push**](https://docs.microsoft.com/dotnet/core/tools/dotnet-nuget-push): Pushes a package to a server and publishes it, applicable to nuget.org, Visual Studio Team Services, or any third-party NuGet servers. -- [**dotnet nuget delete**](https://docs.microsoft.com/dotnet/core/tools/dotnet-nuget-delete): Deletes or unlists a package from a server, applicable to nuget.org, Visual Studio Team Services, or any third-party NuGet servers. +- [**dotnet pack**](/dotnet/core/tools/dotnet-pack?tabs=netcore2x): Packs the code into a NuGet package. As of NuGet 4.0, this runs the same code as `nuget pack`. +- [**dotnet restore**](/dotnet/core/tools/dotnet-restore?tabs=netcore2x): Restores the dependencies and tools of a project. As of NuGet 4.0, this runs the same code as `nuget restore`. +- [**dotnet nuget locals**](/dotnet/core/tools/dotnet-nuget-locals): Clears or lists local NuGet resources such as http the -request cache, temporary cache, or machine-wide global packages folder. +- [**dotnet nuget push**](/dotnet/core/tools/dotnet-nuget-push): Pushes a package to a server and publishes it, applicable to nuget.org, Visual Studio Team Services, or any third-party NuGet servers. +- [**dotnet nuget delete**](/dotnet/core/tools/dotnet-nuget-delete): Deletes or unlists a package from a server, applicable to nuget.org, Visual Studio Team Services, or any third-party NuGet servers. diff --git a/docs/Tools/ps-ref-add-bindingredirect.md b/docs/Tools/ps-ref-add-bindingredirect.md index 1f9ea4ec5..b82838896 100644 --- a/docs/Tools/ps-ref-add-bindingredirect.md +++ b/docs/Tools/ps-ref-add-bindingredirect.md @@ -21,7 +21,7 @@ ms.reviewer: Examines all assemblies within the output path for a project and adds binding redirects to the application or web configuration file where necessary. This command is run automatically when installing a package. -For details on binding redirects and why they are used, see [Redirecting Assembly Versions](https://docs.microsoft.com/dotnet/framework/configure-apps/redirect-assembly-versions) in the .NET documentation. +For details on binding redirects and why they are used, see [Redirecting Assembly Versions](/dotnet/framework/configure-apps/redirect-assembly-versions) in the .NET documentation. ## Syntax diff --git a/docs/Tools/ps-ref-find-package.md b/docs/Tools/ps-ref-find-package.md index d40f9c5c6..06a3e569b 100644 --- a/docs/Tools/ps-ref-find-package.md +++ b/docs/Tools/ps-ref-find-package.md @@ -18,7 +18,7 @@ ms.reviewer: # Find-Package (Package Manager Console in Visual Studio) -*Version 3.0+; this topic describes the command within the [NuGet Package Manager Console](Package-Manager-Console.md) in Visual Studio on Windows. For the generic PowerShell Find-Package command, see the [PowerShell PackageManagement reference](https://docs.microsoft.com/powershell/module/packagemanagement/?view=powershell-6).* +*Version 3.0+; this topic describes the command within the [NuGet Package Manager Console](Package-Manager-Console.md) in Visual Studio on Windows. For the generic PowerShell Find-Package command, see the [PowerShell PackageManagement reference](/powershell/module/packagemanagement/?view=powershell-6).* Gets the set of remote packages with specified ID or keywords from the package source. diff --git a/docs/Tools/ps-ref-get-package.md b/docs/Tools/ps-ref-get-package.md index a8c543782..22d8b8731 100644 --- a/docs/Tools/ps-ref-get-package.md +++ b/docs/Tools/ps-ref-get-package.md @@ -17,7 +17,7 @@ ms.reviewer: # Get-Package (Package Manager Console in Visual Studio) -*This topic describes the command within the [NuGet Package Manager Console](Package-Manager-Console.md) in Visual Studio on Windows. For the generic PowerShell Get-Package command, see the [PowerShell PackageManagement reference](https://docs.microsoft.com/powershell/module/packagemanagement/?view=powershell-6).* +*This topic describes the command within the [NuGet Package Manager Console](Package-Manager-Console.md) in Visual Studio on Windows. For the generic PowerShell Get-Package command, see the [PowerShell PackageManagement reference](/powershell/module/packagemanagement/?view=powershell-6).* Retrieves the list of packages installed in the local repository, lists packages available from a package source when used with the -ListAvailable switch, or lists available updates when used with the -Update switch. diff --git a/docs/Tools/ps-ref-install-package.md b/docs/Tools/ps-ref-install-package.md index a5bda7af1..b76a30629 100644 --- a/docs/Tools/ps-ref-install-package.md +++ b/docs/Tools/ps-ref-install-package.md @@ -17,7 +17,7 @@ ms.reviewer: # Install-Package (Package Manager Console in Visual Studio) -*This topic describes the command within the [NuGet Package Manager Console](Package-Manager-Console.md) in Visual Studio on Windows. For the generic PowerShell Install-Package command, see the [PowerShell PackageManagement reference](https://docs.microsoft.com/powershell/module/packagemanagement/?view=powershell-6).* +*This topic describes the command within the [NuGet Package Manager Console](Package-Manager-Console.md) in Visual Studio on Windows. For the generic PowerShell Install-Package command, see the [PowerShell PackageManagement reference](/powershell/module/packagemanagement/?view=powershell-6).* Installs a package and its dependencies into a project. diff --git a/docs/Tools/ps-ref-uninstall-package.md b/docs/Tools/ps-ref-uninstall-package.md index 4169265dc..48faa2796 100644 --- a/docs/Tools/ps-ref-uninstall-package.md +++ b/docs/Tools/ps-ref-uninstall-package.md @@ -18,7 +18,7 @@ ms.reviewer: # Uninstall-Package (Package Manager Console in Visual Studio) -*This topic describes the command within the [NuGet Package Manager Console](Package-Manager-Console.md) in Visual Studio on Windows. For the generic PowerShell Uninstall-Package command, see the [PowerShell PackageManagement reference](https://docs.microsoft.com/powershell/module/packagemanagement/?view=powershell-6).* +*This topic describes the command within the [NuGet Package Manager Console](Package-Manager-Console.md) in Visual Studio on Windows. For the generic PowerShell Uninstall-Package command, see the [PowerShell PackageManagement reference](/powershell/module/packagemanagement/?view=powershell-6).* Removes a package from a project, optionally removing its dependencies. If other packages depend on this package, the command will fail unless the –Force option is specified. @@ -37,7 +37,7 @@ If other packages depend on this package, the command will fail unless the –Fo | --- | --- | | Id | (Required) The identifier of the package to uninstall. The -Id switch itself is optional. | | Version | The version of the package to uninstall, defaulting to the currently installed version. | -| RemoveDependencies | Uninstall the package and its unused dependencies. That is, if any dependency has another package that depends on it, it is skipped. | +| RemoveDependencies | Uninstall the package and its unused dependencies. That is, if any dependency has another package that depends on it, it's skipped. | | ProjectName | The project from which to uninstall the package, defaulting to the default project. | | Force | Forces a package to be uninstalled, even if other packages depend on it. | | WhatIf | Shows what would happen when running the command without actually performing the uninstall. | diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index 6d5f4dbf4..ff55d1a6a 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -48,7 +48,7 @@ In addition to hosting support, NuGet also provides a variety of tools used by b | --- | --- | --- | --- | | [nuget.exe CLI](Tools/nuget-exe-CLI-Reference.md) | All | Creation, Consumption | Provides all NuGet capabilities, with some commands applying specifically to package creators, some applying only to consumers, and others applying to both. For example, package creators use the `nuget pack` command to create a package from various assemblies and related files, package consumers use `nuget install` to include packages in a project, and everyone uses `nuget config` to set NuGet configuration variables. | | [Package Manager UI](Tools/Package-Manager-UI.md) | Visual Studio on Windows | Consumption | Provides an easy-to-use UI for installing and managing packages in .NET projects. | -| [Manage NuGet UI](https://docs.microsoft.com/visualstudio/mac/nuget-walkthrough) | Visual Studio for Mac | Consumption | Provide an easy-to-use UI for installing and managing packages in .NET projects. | +| [Manage NuGet UI](/visualstudio/mac/nuget-walkthrough) | Visual Studio for Mac | Consumption | Provide an easy-to-use UI for installing and managing packages in .NET projects. | | [Package Manager Console](Tools/Package-Manager-Console.md) | Visual Studio on Windows | Consumption | Provides [PowerShell commands](Tools/Powershell-Reference.md) for installing and managing packages in .NET projects. | | [dotnet CLI](Tools/dotnet-Commands.md) | All | Creation, Consumption | Provides certain NuGet CLI capabilities directly within the .NET Core toolchain. | | [MSBuild](Schema/msbuild-targets.md) | Windows | Creation, Consumption | Provides the ability to create packages and restore packages used in a project directly through the MSBuild toolchain. | From 042aa973baa2119f36421bcbbe7b4a49698f5066 Mon Sep 17 00:00:00 2001 From: matejskubic Date: Wed, 3 Jan 2018 09:50:16 +0100 Subject: [PATCH 0431/2943] Optional metadata elements update Optional elements *may* apper instead of *must*. --- docs/Schema/nuspec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index adf4ff918..60c7ba25d 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -81,7 +81,7 @@ These elements must appear within a `` element. ### Optional metadata elements -These elements must appear within a `` element. +These elements may appear within a `` element. #### Single elements From d3be88ef02413647cd3b3d8620a82e0c4f3770bd Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 4 Jan 2018 15:56:58 -0800 Subject: [PATCH 0432/2943] Change Windows Store to Microsoft Store --- docs/Schema/Target-Frameworks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Schema/Target-Frameworks.md b/docs/Schema/Target-Frameworks.md index 7fd16e8ae..ed3a8128a 100644 --- a/docs/Schema/Target-Frameworks.md +++ b/docs/Schema/Target-Frameworks.md @@ -49,7 +49,7 @@ The NuGet clients support the frameworks in the table below. Equivalents are sho | | | net46 | | | | net461 | | | | net462 | -|Windows Store | netcore | netcore [netcore45] | +|Microsoft Store (Windows Store) | netcore | netcore [netcore45] | | | | netcore45 [win, win8] | | | | netcore451 [win81] | | | | netcore50 | From 282f449428f29319bc4a6e3a019c03eb0a2b5120 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 5 Jan 2018 09:46:50 -0800 Subject: [PATCH 0433/2943] Converting redirects to central file --- .openpublishing.redirection.json | 34 +++++++++++++++++++ docs/API/NuGet-API-V3.md | 3 -- ...-Credential-Providers-for-Visual-Studio.md | 3 -- docs/API/introduction.md | 3 -- docs/API/nuget-exe-Credential-Providers.md | 3 -- docs/Create-Packages/Dependency-Versions.md | 3 -- docs/Quickstart/restore.md | 3 -- 7 files changed, 34 insertions(+), 18 deletions(-) create mode 100644 .openpublishing.redirection.json delete mode 100644 docs/API/NuGet-API-V3.md delete mode 100644 docs/API/NuGet-Credential-Providers-for-Visual-Studio.md delete mode 100644 docs/API/introduction.md delete mode 100644 docs/API/nuget-exe-Credential-Providers.md delete mode 100644 docs/Create-Packages/Dependency-Versions.md delete mode 100644 docs/Quickstart/restore.md diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json new file mode 100644 index 000000000..b1b5245f9 --- /dev/null +++ b/.openpublishing.redirection.json @@ -0,0 +1,34 @@ +{ + "redirections": [ + { + "source_path": "docs/API/introduction.md", + "redirect_url": "/nuget/api/overview", + "redirect_document_id": false + }, + { + "source_path": "docs/API/NuGet-API-V3.md", + "redirect_url": "/nuget/reference/nuget-client-sdk", + "redirect_document_id": false + }, + { + "source_path": "docs/API/NuGet-Credential-Providers-for-Visual-Studio.md", + "redirect_url": "/nuget/reference/extensibility/nuget-credential-providers-for-visual-studio", + "redirect_document_id": false + }, + { + "source_path": "docs/API/nuget-exe-Credential-Providers.md", + "redirect_url": "/nuget/reference/extensibility/nuget-exe-credential-providers", + "redirect_document_id": false + }, + { + "source_path": "docs/Create-Packages/Dependency-Versions.md", + "redirect_url": "/nuget/reference/package-versioning", + "redirect_document_id": false + }, + { + "source_path": "docs/Quickstart/restore.md", + "redirect_url": "/nuget/consume-packages/package-restore-troubleshooting", + "redirect_document_id": false + } + ] +} \ No newline at end of file diff --git a/docs/API/NuGet-API-V3.md b/docs/API/NuGet-API-V3.md deleted file mode 100644 index 3fbc136db..000000000 --- a/docs/API/NuGet-API-V3.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -redirect_url: /nuget/reference/nuget-client-sdk ---- \ No newline at end of file diff --git a/docs/API/NuGet-Credential-Providers-for-Visual-Studio.md b/docs/API/NuGet-Credential-Providers-for-Visual-Studio.md deleted file mode 100644 index f179a7585..000000000 --- a/docs/API/NuGet-Credential-Providers-for-Visual-Studio.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -redirect_url: /nuget/reference/extensibility/nuget-credential-providers-for-visual-studio ---- \ No newline at end of file diff --git a/docs/API/introduction.md b/docs/API/introduction.md deleted file mode 100644 index 8f2090398..000000000 --- a/docs/API/introduction.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -redirect_url: /nuget/api/overview ---- \ No newline at end of file diff --git a/docs/API/nuget-exe-Credential-Providers.md b/docs/API/nuget-exe-Credential-Providers.md deleted file mode 100644 index b1a9b277c..000000000 --- a/docs/API/nuget-exe-Credential-Providers.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -redirect_url: /nuget/reference/extensibility/nuget-exe-credential-providers ---- \ No newline at end of file diff --git a/docs/Create-Packages/Dependency-Versions.md b/docs/Create-Packages/Dependency-Versions.md deleted file mode 100644 index 8817ed7c9..000000000 --- a/docs/Create-Packages/Dependency-Versions.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -redirect_url: /nuget/reference/package-versioning ---- \ No newline at end of file diff --git a/docs/Quickstart/restore.md b/docs/Quickstart/restore.md deleted file mode 100644 index 8cde8de08..000000000 --- a/docs/Quickstart/restore.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -redirect_url: /nuget/Consume-Packages/Package-restore-troubleshooting ---- From 3c52a5885518fb0b61a2201ae97ee0fb041463c2 Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Sun, 7 Jan 2018 19:48:15 -0800 Subject: [PATCH 0434/2943] Fix HTTP status code for relist API success (200, not 204) --- docs/API/package-publish-resource.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/API/package-publish-resource.md b/docs/API/package-publish-resource.md index a05dc5e7d..6b230e7e5 100644 --- a/docs/API/package-publish-resource.md +++ b/docs/API/package-publish-resource.md @@ -146,5 +146,5 @@ X-NuGet-ApiKey | Header | string | yes | For example, `X-NuGet-ApiKey: {USE Status Code | Meaning ----------- | ------- -204 | The package is now listed +200 | The package is now listed 404 | No package with the provided `ID` and `VERSION` exists From c8600a8075a2d33c814db0f90e92f9040dc3b3b1 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 8 Jan 2018 05:00:03 -0500 Subject: [PATCH 0435/2943] Revert "Revert "Update docs to clarify package edit feature deprecation" (#568)" (#570) This reverts commit 8ae5b725608b9a6005c2a25e84da474b8c3d4fb3. --- docs/Policies/NuGet-FAQ.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index 4a4d9ce3e..04643fdc1 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -173,9 +173,9 @@ If a package does not specify the licensing terms, contact the package owner dir ## Managing packages on nuget.org -**Can I edit package metadata after it's been uploaded? Why do you recommend editing the nuspec and uploading a new package for making changes to package metadata?** +**Can I edit package metadata after it's been uploaded? Why do you require editing the nuspec and uploading a new package for making changes to package metadata?** -NuGet will be implementing package signing. A design principle of package signing is that signed package content must be immutable, which includes the nuspec. Editing the package metadata results in changes to the nuspec, invalidating existing signatures. We recommend modifying existing workflows to not require editing the package metadata after the package has been created. +NuGet requires all packages to be signed. A design principle of package signing is that signed package content must be immutable, which includes the nuspec. Editing the package metadata results in changes to the nuspec, invalidating existing signatures. We recommend modifying existing workflows to not require editing the package metadata after the package has been created. Note that dependencies listed for your package are generated automatically from the package itself and cannot be edited. From e5b7cf6675be9891341c196afe822cea6f71d60c Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 8 Jan 2018 05:02:45 -0500 Subject: [PATCH 0436/2943] Revert "Revert "Update docs to clarify package edit feature deprecation" (#568)" (#570) (#638) This reverts commit 8ae5b725608b9a6005c2a25e84da474b8c3d4fb3. --- docs/Policies/NuGet-FAQ.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index 4a4d9ce3e..04643fdc1 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -173,9 +173,9 @@ If a package does not specify the licensing terms, contact the package owner dir ## Managing packages on nuget.org -**Can I edit package metadata after it's been uploaded? Why do you recommend editing the nuspec and uploading a new package for making changes to package metadata?** +**Can I edit package metadata after it's been uploaded? Why do you require editing the nuspec and uploading a new package for making changes to package metadata?** -NuGet will be implementing package signing. A design principle of package signing is that signed package content must be immutable, which includes the nuspec. Editing the package metadata results in changes to the nuspec, invalidating existing signatures. We recommend modifying existing workflows to not require editing the package metadata after the package has been created. +NuGet requires all packages to be signed. A design principle of package signing is that signed package content must be immutable, which includes the nuspec. Editing the package metadata results in changes to the nuspec, invalidating existing signatures. We recommend modifying existing workflows to not require editing the package metadata after the package has been created. Note that dependencies listed for your package are generated automatically from the package itself and cannot be edited. From 878c767aa4b4dc67913dd014a11dc54c86b6ee63 Mon Sep 17 00:00:00 2001 From: Matt Shindala Date: Mon, 8 Jan 2018 11:39:22 -0500 Subject: [PATCH 0437/2943] Fix grammar mistake --- docs/Create-Packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index d5dd25bf0..0cedef5ff 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -153,7 +153,7 @@ nuget locals -list global-packages Go into any *package\version* folder, copy the `.nupkg` file to a `.zip` file, then open that `.zip` file and examine the `.nuspec` within it. > [!Note] -> When creating a `.nuspec` from a Visual Studio project, the manifest contains tokens that are be replaced with information from the project when the package is built. See [Creating the .nuspec from a Visual Studio project](#from-a-visual-studio-project). +> When creating a `.nuspec` from a Visual Studio project, the manifest contains tokens that will be replaced with information from the project when the package is built. See [Creating the .nuspec from a Visual Studio project](#from-a-visual-studio-project). ## Creating the .nuspec file From b62d10c1ebac05cd2998fdc8d2c4ab212b3c7321 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 8 Jan 2018 08:46:07 -0800 Subject: [PATCH 0438/2943] Tweaking the grammar --- docs/Create-Packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 0cedef5ff..f05d0f2d5 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -153,7 +153,7 @@ nuget locals -list global-packages Go into any *package\version* folder, copy the `.nupkg` file to a `.zip` file, then open that `.zip` file and examine the `.nuspec` within it. > [!Note] -> When creating a `.nuspec` from a Visual Studio project, the manifest contains tokens that will be replaced with information from the project when the package is built. See [Creating the .nuspec from a Visual Studio project](#from-a-visual-studio-project). +> When creating a `.nuspec` from a Visual Studio project, the manifest contains tokens that are replaced with information from the project when the package is built. See [Creating the .nuspec from a Visual Studio project](#from-a-visual-studio-project). ## Creating the .nuspec file From 8aae3e78729c9a62f03843fa38f95a5d528d1a9c Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Mon, 8 Jan 2018 14:01:50 -0800 Subject: [PATCH 0439/2943] Update Package-Versioning.md --- docs/Reference/Package-Versioning.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/Reference/Package-Versioning.md b/docs/Reference/Package-Versioning.md index 35d69e29c..8979c7361 100644 --- a/docs/Reference/Package-Versioning.md +++ b/docs/Reference/Package-Versioning.md @@ -91,7 +91,8 @@ For nuget.org, a package is defined as a SemVer v2.0.0 package if either of the If you upload a SemVer v2.0.0-specific package to nuget.org, the package is invisible to older clients and available to only the following NuGet clients: - NuGet 4.3.0+ -- Visual Studio 2017 version 15.3+ +- Visual Studio 2017 version 15.3+ +- Visual Studio 2015 with [NuGet VSIX v3.6.0](https://dist.nuget.org/visualstudio-2015-vsix/latest/NuGet.Tools.vsix) - dotnet.exe (.NET SDK 2.0.0+) Third-party clients: From 0f1e8b5c8822c5e28702b2b975e56a9cafd80d57 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Mon, 8 Jan 2018 16:51:28 -0800 Subject: [PATCH 0440/2943] change the metadata for package reference from exclude to excldue assets --- docs/Consume-Packages/Dependency-Resolution.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Consume-Packages/Dependency-Resolution.md b/docs/Consume-Packages/Dependency-Resolution.md index 1d4c45fab..fa3be3217 100644 --- a/docs/Consume-Packages/Dependency-Resolution.md +++ b/docs/Consume-Packages/Dependency-Resolution.md @@ -150,10 +150,10 @@ To resolve this, you must directly reference the `C.dll` you want (or use anothe } ``` -- With [package references in project files](../consume-packages/package-references-in-project-files.md) (NuGet 4.0+ only), add `Exclude="All"` in the dependency: +- With [package references in project files](../consume-packages/package-references-in-project-files.md) (NuGet 4.0+ only), add `ExcludeAssets="All"` in the dependency: ```xml - + ``` ## Resolving incompatible package errors From 5dba6b84384441f07b4d832c6e6c251d0f0396f9 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Mon, 8 Jan 2018 22:42:47 -0800 Subject: [PATCH 0441/2943] Update Package-Manager-UI.md --- docs/Tools/Package-Manager-UI.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index dc13dc986..75ad62abc 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -12,6 +12,7 @@ f1_keywords: - "vs.toolsoptionspages.nuget_package_manager" - "vs.toolsoptionspages.nuget_package_manager.general" - "vs.toolsoptionspages.nuget_package_manager.package_sources" + - "vs.nuget.packagemanager.ui" description: Instructions for using the NuGet Package Manager UI in Visual Studio for working with NuGet packages. keywords: NuGet UI, NuGet package manager UI, NuGet in Visual Studio, managing NuGet packages, NuGet user interface, package manager in Visual Studio ms.reviewer: From 909358ec409475c55c5523a8f7b66fab78726be5 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Mon, 8 Jan 2018 22:45:22 -0800 Subject: [PATCH 0442/2943] Update Package-Manager-Console.md --- docs/Tools/Package-Manager-Console.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index 043f9efc1..e474185a0 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -10,6 +10,8 @@ ms.topic: article ms.prod: nuget ms.technology: null ms.assetid: 2b92b119-6861-406c-82af-9d739af230e4 +f1_keywords: + - "vs.nuget.packagemanager.console" # optional metadata From d13159bb704e2fd252e9a0e02a90e05df9b249ed Mon Sep 17 00:00:00 2001 From: Victor Akinyemi Date: Tue, 9 Jan 2018 21:51:57 +0100 Subject: [PATCH 0443/2943] fix typo --- docs/Tools/Package-Manager-UI.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index dc13dc986..c8be46c95 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -35,7 +35,7 @@ In this topic: > [!Note] > If you're missing the NuGet Package Manager in Visual Studio 2015, check **Tools > Extensions and Updates...** and search for the *NuGet Package Manager* extension. If you're unable to use the extensions installer in Visual Studio, download the extension directly from [https://dist.nuget.org/index.html](https://dist.nuget.org/index.html). > -> In Visual Studio 2017, NuGet and the NuGet Package Manager are automatically installed with any .NET-related workloads. Install it individuall by selecting the **Individual components > Code tools > NuGet package manager** option in the Visual Studio 2017 installer. +> In Visual Studio 2017, NuGet and the NuGet Package Manager are automatically installed with any .NET-related workloads. Install it individually by selecting the **Individual components > Code tools > NuGet package manager** option in the Visual Studio 2017 installer. ## Finding and installing a package From 4e2ffc10485951b0b8f1438b40d9ae175c04b75d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dariusz=20Wo=C5=BAniak?= Date: Wed, 10 Jan 2018 13:27:14 +0100 Subject: [PATCH 0444/2943] Removed full stops in code comments (consistency) Samples from other pages do not use full stops in code comments --- docs/Tools/ps-ref-install-package.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Tools/ps-ref-install-package.md b/docs/Tools/ps-ref-install-package.md index b76a30629..1f43ea68f 100644 --- a/docs/Tools/ps-ref-install-package.md +++ b/docs/Tools/ps-ref-install-package.md @@ -69,10 +69,10 @@ Install-Package Glimpse -Version 1.0.0 -Project MvcApplication1 # Installs Ninject.Mvc3 but not its dependencies from c:\temp\packages Install-Package Ninject.Mvc3 -IgnoreDependencies -Source c:\temp\packages -# Installs the package listed on the online packages.config into the current project. +# Installs the package listed on the online packages.config into the current project Install-package https://raw.githubusercontent.com/json-ld.net/master/src/JsonLD/packages.config -# Installs jquery 1.10.2 package, using the .nupkg file under local path of c:\temp\packages. +# Installs jquery 1.10.2 package, using the .nupkg file under local path of c:\temp\packages Install-package c:\temp\packages\jQuery.1.10.2.nupkg # Installs the specific online package From 9007f6dedf9dfd79749510ff4b12d56a6c63ae5c Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 10 Jan 2018 10:50:17 -0800 Subject: [PATCH 0445/2943] Fixes from verbatims --- .../Reinstalling-and-Updating-Packages.md | 5 +++-- .../Create-and-Publish-a-Package.md | 2 +- docs/Quickstart/Use-a-Package.md | 2 ++ docs/Schema/nuget-config-file.md | 22 ++++++------------- docs/Schema/nuspec.md | 4 ++-- docs/Tools/cli-ref-config.md | 2 ++ docs/Tools/cli-ref-sources.md | 3 ++- docs/Tools/nuget-exe-CLI-Reference.md | 18 ++++++--------- 8 files changed, 26 insertions(+), 32 deletions(-) diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index b4d521c44..ddd638785 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -27,7 +27,8 @@ Updating and reinstalling packages is accomplished as follows: | Package Manager UI | On the **Updates** tab, select one or more packages and select **Update** | On the **Installed** tab, select a package, record its name, then select **Uninstall**. Switch to the **Browse** tab, search for the package name, select it, then select **Install**). | | nuget.exe CLI | `nuget update` command | For all packages, delete the package folder, then run `nuget install`. For a single package, delete the package folder and use `nuget install ` to reinstall the same one. | -In this topic: +In this article: + - [When to Reinstall a Package](#when-to-reinstall-a-package) - [Constraining upgrade versions](#constraining-upgrade-versions) @@ -35,7 +36,7 @@ In this topic: 1. **Broken references after package restore**: If you've opened a project and restored NuGet packages, but still see broken references, try reinstalling each of those packages. 1. **Project is broken due to deleted files**: NuGet does not prevent you from removing items added from packages, so it's easy to inadvertently modify contents installed from a package and break your project. To restore the project, reinstall the affected packages. -1. **Package update broke the project**: If an update to a package breaks a project, the failure is generally caused by a dependency package which may have also been. To restore the state of the dependency, reinstall that specific package. +1. **Package update broke the project**: If an update to a package breaks a project, the failure is generally caused by a dependency package which may have also been updates. To restore the state of the dependency, reinstall that specific package. 1. **Project retargeting or upgrade**: This can be useful when a project has been retargeted or upgraded and if the package requires reinstallation due to the change in target framework. NuGet 2.7 and later shows a build error in such cases immediately after project retargeting, and subsequent build warnings let you know that the package may need to be reinstalled. For project upgrade, NuGet shows an error in the Project Upgrade Log. 1. **Reinstalling a package during its development**: Package authors often need to reinstall the same version of package they're developing to test the behavior. The `Install-Package` command does not provide an option to force a reinstall, so use `Update-Package -reinstall` instead. diff --git a/docs/Quickstart/Create-and-Publish-a-Package.md b/docs/Quickstart/Create-and-Publish-a-Package.md index c3da8e728..b9f06b066 100644 --- a/docs/Quickstart/Create-and-Publish-a-Package.md +++ b/docs/Quickstart/Create-and-Publish-a-Package.md @@ -54,7 +54,7 @@ Every NuGet package needs a manifest—a `.nuspec` file—to describe it nuget spec ``` -1. Open the file in a text editor. The manifest looks something like the code below, where tokens in the form *$``$* are be replaced during the packaging process with values from the project's Properties/AssemblyInfo.cs file. For more details on tokens, see [Creating a .nuspec file](../create-packages/creating-a-package.md#creating-the-nuspec-file). +1. Open the file in a text editor. The manifest looks something like the code below, where tokens in the form `` (such as `$id$`) are be replaced during the packaging process with values from the project's Properties/AssemblyInfo.cs file. For more details on tokens, see [Creating a .nuspec file](../create-packages/creating-a-package.md#creating-the-nuspec-file). ```xml diff --git a/docs/Quickstart/Use-a-Package.md b/docs/Quickstart/Use-a-Package.md index 1fc3057a2..2937fde67 100644 --- a/docs/Quickstart/Use-a-Package.md +++ b/docs/Quickstart/Use-a-Package.md @@ -17,6 +17,8 @@ ms.reviewer: # Install and use a package +NuGet packages are units of reusable code that other developers make available to you for use in your projects. See [What is NuGet?](../What-is-NuGet.md) for background. + [!INCLUDE [install-methods](../includes/install-methods.md)] Once installed, refer to the package in code with `using ` where \ is specific to the package you're using. Once the reference is made, you can call the package through its API. diff --git a/docs/Schema/nuget-config-file.md b/docs/Schema/nuget-config-file.md index ce6fc00bd..aeaad28ad 100644 --- a/docs/Schema/nuget-config-file.md +++ b/docs/Schema/nuget-config-file.md @@ -35,11 +35,11 @@ In this topic: - [packageRestore section](#packagerestore-section) - [solution section](#solution-section) - [Package source sections](#package-source-sections): - - [packageSources](#packagesources) - - [packageSourceCredentials](#packagesourcecredentials) - - [apikeys](#apikeys) - - [disabledPackageSources](#disabledpackagesources) - - [activePackageSource](#activepackagesource) + -[packageSources](#packagesources) + - [packageSourceCredentials](#packagesourcecredentials) + - [apikeys](#apikeys) + - [disabledPackageSources](#disabledpackagesources) + - [activePackageSource](#activepackagesource) - [Using environment variables](#using-environment-variables) - [Example config file](#example-config-file) @@ -62,7 +62,6 @@ Note: `dependencyVersion` and `repositoryPath` apply only to projects using `pac | 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). | - **Example**: ```xml @@ -74,7 +73,6 @@ Note: `dependencyVersion` and `repositoryPath` apply only to projects using `pac ``` - ## bindingRedirects section Configures whether NuGet does automatic binding redirects when a package is installed. @@ -119,7 +117,6 @@ Controls whether the `packages` folder of a solution is included in source contr | --- | --- | | disableSourceControlIntegration | A Boolean indicating whether to ignore the packages folder when working with source control. The default value is false. | - **Example**: ```xml @@ -128,13 +125,13 @@ Controls whether the `packages` folder of a solution is included in source contr ``` - ## Package source sections The `packageSources`, `packageSourceCredentials`, `apikeys`, `activePackageSource`, and `disabledPackageSources` all work together to configure how NuGet works with package repositories during install, restore, and update operations. The [`nuget sources` command](../tools/cli-ref-sources.md) is generally used to manage these settings, except for `apikeys` which is managed using the [`nuget setapikey` command](../tools/cli-ref-setapikey.md). +Note that the source URL for nuget.org is `https://api.nuget.org/v3/index.json`. ### packageSources @@ -154,7 +151,6 @@ Lists all known package sources. ``` - ### packageSourceCredentials Stores usernames and passwords for sources, typically specified with the `-username` and `-password` switches with `nuget sources`. Passwords are encrypted by default unless the `-storepasswordincleartext` option is also used. @@ -193,7 +189,7 @@ When using unencrypted passwords: - + ``` @@ -213,7 +209,6 @@ Stores keys for sources that use API key authentication, as set with the [`nuget ``` - ### disabledPackageSources Identified currently disabled sources. May be empty. @@ -222,8 +217,6 @@ Identified currently disabled sources. May be empty. | --- | --- | | (name of source) | A Boolean indicating whether the source is disabled. | - - **Example:** ```xml @@ -267,7 +260,6 @@ Similarly, if `HOME` on Mac/Linux is set to `/home/myStuff`, then `$HOME/NuGetRe If an environment variable is not found, NuGet uses the literal value from the configuration file. - ## Example config file Below is an example `NuGet.Config` file that illustrates a number of settings: diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index e6553438d..0e7e990bb 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -168,8 +168,8 @@ And you build an assembly whose `AssemblyName` is `LoggingLibrary` with the `Rel The `` element within `` contains any number of `` elements that identify other packages upon which the top-level package depends. The attributes for each `` are as follows: | Attribute | Description | -| --- | --- | -| `id` | (Required) The package ID of the dependency. | +| --- | --- | +| `id` | (Required) The package ID of the dependency, such as "EntityFramework" and "NUnit", which is the name of the package nuget.org shows on a package page. | | `version` | (Required) The range of versions acceptable as a dependency. See [Package versioning](../reference/package-versioning.md#version-ranges-and-wildcards) for exact syntax. | | include | A comma-delimited list of include/exclude tags (see below) indicating of the dependency to include in the final package. The default value is `none`. | | exclude | A comma-delimited list of include/exclude tags (see below) indicating of the dependency to exclude in the final package. The default value is `all`. Tags specified with `exclude` take precedence over those specified with `include`. For example, `include="runtime, compile" exclude="compile"` is the same as `include="runtime"`. | diff --git a/docs/Tools/cli-ref-config.md b/docs/Tools/cli-ref-config.md index 87ad3c050..9a109ab38 100644 --- a/docs/Tools/cli-ref-config.md +++ b/docs/Tools/cli-ref-config.md @@ -30,6 +30,8 @@ nuget config -AsPath [options] where `` and `` specify a key-value pair to be set in the configuration. You can specify as many pairs as desired. To remove a value, specify the name and the `=` sign but no value. +For allowable key names, see the [NuGet config file reference](../Schema/nuget-config-file.md). + In NuGet 3.4+, `` can use [environment variables](cli-ref-environment-variables.md). ## Options diff --git a/docs/Tools/cli-ref-sources.md b/docs/Tools/cli-ref-sources.md index 40f73f3e8..b4068be80 100644 --- a/docs/Tools/cli-ref-sources.md +++ b/docs/Tools/cli-ref-sources.md @@ -27,6 +27,8 @@ ms.reviewer: Manages the list of sources located in `%AppData%\NuGet\NuGet.Config` or the specified configuration file. +Note that the source URL for nuget.org is `https://api.nuget.org/v3/index.json`. + ## Usage ``` @@ -35,7 +37,6 @@ nuget sources -Name -Source where `` is one of *List, Add, Remove, Enable, Disable,* or *Update*, `` is the name of the source, and `` is the source's URL. - ## Options | Option | Description | diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index fee3e1f50..253ec914c 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet Command-Line Interface (CLI) Reference | Microsoft Docs author: kraigb ms.author: kraigb @@ -10,15 +8,11 @@ ms.topic: reference ms.prod: nuget ms.technology: null ms.assetid: d777c424-0cf3-4bc0-8abd-7ca16c22192b - -# optional metadata - description: Command-line reference index for the nuget.exe CLI keywords: nuget.exe reference index, nuget.exe command-line interface, nuget.exe CLI, nuget command ms.reviewer: - karann-msft - unniravindranathan - --- # NuGet CLI reference @@ -27,6 +21,8 @@ The NuGet Command Line Interface (CLI), `nuget.exe`, provides the full extent of To use any command, open a command window or bash shell, then run `nuget` followed by the command and appropriate options, such as `nuget help pack` (to view help on the pack command). +This documentation reflects the latest version of the NuGet CLI. For exact details for any given version that you're using, run `nuget help` for the desired command. + ## Installing nuget.exe [!INCLUDE[install-cli](../includes/install-cli.md)] @@ -35,25 +31,25 @@ To use any command, open a command window or bash shell, then run `nuget` follow - All commands are available on Windows. - All commands work with [nuget.exe running on Mono](../guides/install-nuget.md#mac-osx-and-linux) except where indicated for `pack`, `restore`, and `update`. -- The `pack`, `restore`, `delete`, `locals`, and `push` commands are also available on Mac and Linux through the [dotnet CLI](dotnet-Commands.md). +- The `pack`, `restore`, `delete`, `locals`, and `push` commands are also available on Mac and Linux through the [dotnet CLI](dotnet-Commands.md). ## Commands and applicability Available commands and applicability to package creation, package consumption, and/or publishing a package to a host: -| Common Commands | Applicable Roles | NuGet Version | Description | +| Common Commands | Applicable Roles | NuGet Version | Description | | --- | --- | --- | --- | | [pack](cli-ref-pack.md) | Creation | 2.7+ | Creates a NuGet package from a `.nuspec` or project file. When running on Mono, creating a package from a project file is not supported. | | [push](cli-ref-push.md) | Publishing | All | Publishes a package to a package source. | | [config](cli-ref-config.md) | All | All | Gets or sets NuGet configuration values. | | [help or ?](cli-ref-help.md) | All | All | Displays help information or help for a command. | | [locals](cli-ref-locals.md) | Consumption | 3.3+ | Clears or lists packages in various caches or the global packages folder, or identifies those folders. | -| [restore](cli-ref-restore.md) | Consumption | 2.7+ | Restores all packages referenced by the package reference format in use. When running on Mono, restoring packages using the PackageReference format is not supported. | +| [restore](cli-ref-restore.md) | Consumption | 2.7+ | Restores all packages referenced by the package reference format in use. When running on Mono, restoring packages using the PackageReference format is not supported. | | [setapikey](cli-ref-setapikey.md) | Publishing, Consumption | All | Saves an API key for a given package source when that package source requires a key for access. | | [spec](cli-ref-spec.md) | Creation | All | Generates a `.nuspec` file, using tokens if generating the file from a Visual Studio project. | -| Secondary Commands | Applicable Roles | NuGet Version | Description | +| Secondary Commands | Applicable Roles | NuGet Version | Description | | --- | --- | --- | --- | | [add](cli-ref-add.md) | Publishing | 3.3+ | Adds a package to a non-HTTP package source using hierarchical layout. For HTTP sources, use *push*. | | [delete](cli-ref-delete.md) | Publishing | All | Removes or unlists a package from a package source. | @@ -70,7 +66,7 @@ NuGet CLI commands by applicable roles: | Role | Commands | | --- | --- | -| Consumption | `config`, `help`, `install`, `list`, `locals`, `restore`, `setapikey`, `sources`, `update` | +| Consumption | `config`, `help`, `install`, `list`, `locals`, `restore`, `setapikey`, `sources`, `update` | | Creation | `config`, `help`, `init`, `pack`, `spec` | | Publishing | `add`, `config`, `delete`, `help`, `list`, `push`, `setapikey`, `sources` | From 11f31e011a42a5772c16f8bff9ee8ce60e2fc376 Mon Sep 17 00:00:00 2001 From: Ashish Jain Date: Wed, 10 Jan 2018 15:23:38 -0800 Subject: [PATCH 0446/2943] Update nuspec.md Updated `flatten` flag description. --- docs/Schema/nuspec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index 4b684bf2d..776791b48 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -543,7 +543,7 @@ These files are specified with a set of attributes that describe how they should | **exclude** | A semicolon-delimited list of files or file patterns to exclude from the `src` location. The wildcard character `*` is allowed, and the double wildcard `**` implies a recursive folder search. | | **buildAction** | The build action to assign to the content item for MSBuild, such as `Content`, `None`, `Embedded Resource`, `Compile`, etc. The default is `Compile`. | | **copyToOutput** | A Boolean indicating whether to copy content items to the build output folder. The default is false. | -| **flatten** | A Boolean indicating whether to copy content items to a single folder in the build output (true), or to preserve the folder structure in the package (false). The default is false. | +| **flatten** | A Boolean indicating whether to copy content items to a single folder in the build output (true), or to preserve the folder structure in the package (false). This flag only works when copyToOutput flag is set to true. The default is false. | When installing a package, NuGet applies the child elements of `` from top to bottom. If multiple entries match the same file then all entries are applied. The top-most entry overrides the lower entries if there is a conflict for the same attribute. From 29b96a692231662927b306e9e74b28fd0d08b2a4 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 11 Jan 2018 11:01:11 -0800 Subject: [PATCH 0447/2943] Intro edits, move API tutorial, add license to FAQ --- docs/Policies/NuGet-FAQ.md | 7 +++- docs/TOC.md | 2 +- docs/What-is-NuGet.md | 86 +++++++++++++++++++------------------- 3 files changed, 49 insertions(+), 46 deletions(-) diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index 4a4d9ce3e..f5eebabed 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -3,7 +3,7 @@ title: NuGet Frequently-Asked Questions | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 12/07/2017 +ms.date: 01/11/2018 ms.topic: article ms.prod: nuget ms.technology: null @@ -89,6 +89,10 @@ Yes, NuGet works directly from the command line. See the [Install guide](../guid See the [Install guide](../guides/install-nuget.md). +**What is the license for nuget.exe?** + +You are allowed to redistribute nuget.exe under the terms of the MIT license. You are responsible for updating and servicing any copies of nuget.exe that you choose to redistribute. + **Is it possible to extend the NuGet command line tool?** Yes, it's possible to add custom commands to `nuget.exe`, as described in [Rob Reynold's post](http://geekswithblogs.net/robz/archive/2011/07/15/extend-nuget-command-line.aspx). @@ -170,7 +174,6 @@ Each package is governed by the terms that are included with the package. You sh If a package does not specify the licensing terms, contact the package owner directly using the **Contact owners** link on the nuget.org package page. Microsoft does not license any intellectual property to you from third party package providers and is not responsible for information provided by third parties. - ## Managing packages on nuget.org **Can I edit package metadata after it's been uploaded? Why do you recommend editing the nuspec and uploading a new package for making changes to package metadata?** diff --git a/docs/TOC.md b/docs/TOC.md index 63ae7d37f..cbb94dd43 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -9,7 +9,6 @@ ## [Create UWP Packages](Guides/Create-UWP-Packages.md) ## [Creating UWP Controls as NuGet Packages](Guides/Create-UWP-Controls.md) ## [Create Cross-Platform Packages](Guides/Create-Cross-Platform-Packages.md) -## [Query for all packages using the API](Guides/api/query-for-all-published-packages.md) # Create Packages ## [Overview and Workflow](Create-Packages/Overview-and-Workflow.md) ## [Creating a Package](Create-Packages/Creating-a-Package.md) @@ -86,6 +85,7 @@ ### [nuget.exe Credential Providers](Reference/extensibility/nuget-exe-Credential-Providers.md) # API ## [Overview](API/overview.md) +## [How-to: query for all packages using the API](Guides/api/query-for-all-published-packages.md) ## [Service Index](API/service-index.md) ## [Push and Delete](API/package-publish-resource.md) ## [Search](API/search-query-service-resource.md) diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index 3af551bfb..5335e075f 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -1,44 +1,45 @@ --- -# required metadata - title: What is NuGet and what does it do? | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/26/2017 +ms.date: 01/10/2018 ms.topic: hero-article ms.prod: nuget ms.technology: null -ms.assetid: c3faf278-4cbf-4733-96f6-9ee9f7203af9 - -# optional metadata - description: A comprehensive introduction to what NuGet is and does keywords: NuGet package manager, consumption, package creation, package hosting - ms.reviewer: - karann-msft - unniravindranathan - --- # An introduction to NuGet -An essential tool for any modern development platform is a mechanism through which developers can create, share, and consume useful code. Often such code is bundled into a "packages" that contain compiled code (as DLLs) along with other content needed in the projects that consume these packages. +An essential tool for any modern development platform is a mechanism through which developers can create, share, and consume useful code. Often such code is bundled into "packages" that contain compiled code (as DLLs) along with other content needed in the projects that consume these packages. + +For .NET, the Microsoft-supported mechanism for sharing code is **NuGet**, which defines how packages for .NET are created, hosted, and consumed, and provides the tools for each of those roles. -For .NET, the mechanism for sharing code is **NuGet**, which defines how packages for .NET are created, hosted, and consumed, and provides the tools for each of those roles. +Put simply, a NuGet package is a single ZIP file with the `.nupkg` extension that contains compiled code (DLLs), other files related to that code, and a descriptive manifest that includes information like the package's version number. Developers with code to share create packages and publish them to a public or private host. Package consumers obtain those packages from suitable hosts, add them to their projects, and then call a package's functionality in their project code. NuGet itself then handles all of the intermediate details. -Put simply, a NuGet package is a single ZIP file with the `.nupkg` extension that contains compiled code (DLLs), other files related to that code, and a descriptive manifest that includes information like the package's version number. Library developers create package files and publish them to a host. Package consumers receive those packages, add them to their projects, and then call that library's functionality in their project code. NuGet itself then handles all of the intermediate details. +Because NuGet supports private hosts alongside the public nuget.org host, you can use NuGet packages to share code that's exclusive to an organization or a workgroup. You can also use NuGet packages as a convenient way to factor your own code for use in nothing but your own projects. In short, a NuGet package is a shareable unit of code, but does not require nor imply any particular means of sharing. ## The flow of packages between creators, hosts, and consumers -In its role as host, NuGet itself maintains the central repository of over 60,000 unique, publicly-available packages at [nuget.org](https://www.nuget.org). These packages are employed by millions of .NET developers every day. NuGet also enables you to host packages privately in the cloud, on a private network, or even on just your local file system. By doing so, those packages are available to only those developers within a particular organization or customer group. The options are explained on [Hosting your own NuGet feeds](Hosting-Packages/Overview.md). +In its role as a public host, NuGet itself maintains the central repository of over 100,000 unique packages at [nuget.org](https://www.nuget.org). These packages are employed by millions of .NET developers every day. NuGet also enables you to host packages privately in the cloud (such as on Visual Studio Team Services), on a private network, or even on just your local file system. By doing so, those packages are available to only those developers that have access to the host, giving you the ability to make packages available to a specific group of consumers. The options are explained on [Hosting your own NuGet feeds](Hosting-Packages/Overview.md). Through configuration options, you can also control exactly which hosts can be accessed by any given computer, thereby ensuring that packages are obtained from specific sources rather than a public repository like nuget.org. -Whatever its nature, a host serves as a point of connection between package *creators* and package *consumers*. Creators build useful NuGet packages and publish them to a host. Consumers then search for useful and compatible packages on accessible hosts, downloading and including those packages in their projects. Once installed in a project, the packages' APIs are available to the rest of the project code. +Whatever its nature, a host serves as the point of connection between package *creators* and package *consumers*. Creators build useful NuGet packages and publish them to a host. Consumers then search for useful and compatible packages on accessible hosts, downloading and including those packages in their projects. Once installed in a project, the packages' APIs are available to the rest of the project code. ![Relationship between package creators, package hosts, and package consumers](media/nuget-roles.png) -A "compatible" package in this case means that it contains assemblies built for at least one target .NET framework that's compatible with the consuming project's target framework. To make a package widely compatible, its creator compiles separate assemblies for various target frameworks and includes all of them in the same package. When a consumer installs that package, NuGet extracts only those assemblies that are needed by the project. This minimizes the package's footprint in the final application and/or assemblies produced by that project. +## Package targeting compatibility + +A "compatible" package means that it contains assemblies built for at least one target .NET framework that's compatible with the consuming project's target framework. Developers can create packages that are specific to one framework, as with UWP controls, or they can support a wider range of targets. To maximize a package's compatibility, developers target [.NET Standard](/dotnet/standard/net-standard), which all .NET projects can consume. This is the most efficient means for both creators and consumers, as a single package (usually containing a single assembly) works for all consuming projects. + +Package developers who require APIs outside of .NET Standard, on the other hand, create separate assemblies for the different target frameworks they want to support and include all of those assemblies in the same package (which is called "multi-targeting"). When a consumer installs such a package, NuGet extracts only those assemblies that are needed by the project. This minimizes the package's footprint in the final application and/or assemblies produced by that project. A multi-targeting package if, of course, more difficult for its creator to maintain. + +> [!Note] +> Targeting .NET Standard supercedes the previous approach of using various "portable class library" (PCL) targets. This documentation therefore focuses on creating packages for .NET Standard. ## NuGet tools @@ -46,70 +47,69 @@ In addition to hosting support, NuGet also provides a variety of tools used by b | Tool | Platforms | Applicable Scenarios | Description | | --- | --- | --- | --- | -| [nuget.exe CLI](Tools/nuget-exe-CLI-Reference.md) | All | Creation, Consumption | Provides all NuGet capabilities, with some commands applying specifically to package creators, some applying only to consumers, and others applying to both. For example, package creators use the `nuget pack` command to create a package from various assemblies and related files, package consumers use `nuget install` to include packages in a project, and everyone uses `nuget config` to set NuGet configuration variables. | -| [Package Manager UI](Tools/Package-Manager-UI.md) | Visual Studio on Windows | Consumption | Provides an easy-to-use UI for installing and managing packages in .NET projects. | -| [Manage NuGet UI](/visualstudio/mac/nuget-walkthrough) | Visual Studio for Mac | Consumption | Provide an easy-to-use UI for installing and managing packages in .NET projects. | -| [Package Manager Console](Tools/Package-Manager-Console.md) | Visual Studio on Windows | Consumption | Provides [PowerShell commands](Tools/Powershell-Reference.md) for installing and managing packages in .NET projects. | -| [dotnet CLI](Tools/dotnet-Commands.md) | All | Creation, Consumption | Provides certain NuGet CLI capabilities directly within the .NET Core toolchain. | -| [MSBuild](Schema/msbuild-targets.md) | Windows | Creation, Consumption | Provides the ability to create packages and restore packages used in a project directly through the MSBuild toolchain. | +| [nuget.exe CLI](Tools/nuget-exe-CLI-Reference.md) | All | Creation, Consumption | Provides all NuGet capabilities, with some commands applying specifically to package creators, some applying only to consumers, and others applying to both. For example, package creators use the `nuget pack` command to create a package from various assemblies and related files, package consumers use `nuget install` to include packages in a project folder, and everyone uses `nuget config` to set NuGet configuration variables. As a platform-agnostic tool, the NuGet CLI does not interact with Visual Studio projects. | +| [dotnet CLI](Tools/dotnet-Commands.md) | All | Creation, Consumption | Provides certain NuGet CLI capabilities directly within the .NET Core tool chain. As with the NuGet CLI, the dotnet CLI does not interact with Visual Studio projects. | +| [Package Manager Console](Tools/Package-Manager-Console.md) | Visual Studio on Windows | Consumption | Provides [PowerShell commands](Tools/Powershell-Reference.md) for installing and managing packages in Visual Studio projects. | +| [Package Manager UI](Tools/Package-Manager-UI.md) | Visual Studio on Windows | Consumption | Provides an easy-to-use UI for installing and managing packages in Visual Studio projects. | +| [Manage NuGet UI](/visualstudio/mac/nuget-walkthrough) | Visual Studio for Mac | Consumption | Provide an easy-to-use UI for installing and managing packages in Visual Studio for Mac projects. | +| [MSBuild](Schema/msbuild-targets.md) | Windows | Creation, Consumption | Provides the ability to create packages and restore packages used in a project directly through the MSBuild tool chain. | -As you can see, the tools with which you work with NuGet depend greatly on whether you're creating (and publishing) packages or consuming them, and the platform you're working on. More specific details can be found in the [Package creation workflow](Create-Packages/Overview-and-Workflow.md) and [Package consumption workflow](Consume-Packages/Overview-and-Workflow.md) topics, along with other topics in those sections. +As you can see, the NuGet tools you work with depend greatly on whether you're creating, consuming, or publishing packages, and the platform on which you're working. Package creators are typically also consumers, as they build on top of functionality that exists in other NuGet packages. And those packages, of course, may in turn depend on still others. -Package creators are typically also consumers, as they build on top of functionality that exists in other NuGet packages. And those packages, of course, may in turn depend on still others. +For more information, start with the [Package creation workflow](Create-Packages/Overview-and-Workflow.md) and [Package consumption workflow](Consume-Packages/Overview-and-Workflow.md) articles. ## Managing dependencies -The ability to easily build on the work of others is one of the things that makes a package management system so powerful. Accordingly, much of what NuGet does is managing that dependency tree or "graph" on behalf of your project. Simply said, you need only concern yourself with those packages that you're directly using in a project. If any of those packages themselves consume other packages (which can consume packages), NuGet takes care of all those down-level dependencies. +The ability to easily build on the work of others is one of most powerful features of a package management system. Accordingly, much of what NuGet does is managing that dependency tree or "graph" on behalf of a project. Simply said, you need only concern yourself with those packages that you're directly using in a project. If any of those packages themselves consume other packages (which can, in turn, consume still others), NuGet takes care of all those down-level dependencies. -The following image shows a project that depends on five packages, which in turn depend on a number of others. +The following image shows a project that depends on five packages, which in turn depend on a number of others. ![An example NuGet dependency graph for a .NET project](media/dependency-graph.png) -Notice that some packages appear multiple times in the dependency graph. For example, there are three different consumers of package B, and each consumer might also specify a different version for that package (not shown). Because this is a common occurrence, NuGet fortunately does all the hard work to determine exactly which version of package B satisfies all its consumers. NuGet then does the same for all other packages, no matter how deep the dependency graph becomes. +Notice that some packages appear multiple times in the dependency graph. For example, there are three different consumers of package B, and each consumer might also specify a different version for that package (not shown). This is a common occurrence, especially for widely-used packages. NuGet fortunately does all the hard work to determine exactly which version of package B satisfies all consumers. NuGet then does the same for all other packages, no matter how deep the dependency graph. For more details on how NuGet performs this service, see [Dependency resolution](Consume-Packages/Dependency-Resolution.md). ## Tracking references and restoring packages -Because projects can easily move between developer computers, source control repositories, build servers, and so forth, it's highly impractical to keep binary assemblies from NuGet packages directly bound to a project. Not only would this make each copy of the project unnecessarily bloated (and thereby waste space in source control repositories), it would also make it very difficult to update package binaries to newer versions as this would have to be done across all copies of the project. +Because projects can easily move between developer computers, source control repositories, build servers, and so forth, it's highly impractical to keep binary assemblies from NuGet packages directly bound to a project. Doing so would this make each copy of the project unnecessarily bloated (and thereby waste space in source control repositories). It would also make it very difficult to update package binaries to newer versions as updates would have to be applied across all copies of the project. -Instead, NuGet simply maintains a reference list of the packages upon which a project depends (including both top-level and down-level dependencies), and provides the means to restore all referenced packages upon request as described on [Package restore](Consume-Packages/Package-Restore.md). That is, whenever you install a package from some host into a project, NuGet records the package identifier and version number in this reference list. (Uninstalling a package, of course, removes it from the list.) +NuGet instead maintains a simple reference list of the packages upon which a project depends, including both top-level and down-level dependencies. That is, whenever you install a package from some host into a project, NuGet records the package identifier and version number in the reference list. (Uninstalling a package, of course, removes it from the list.) NuGet then provides a means to restore all referenced packages upon request, as described on [Package restore](Consume-Packages/Package-Restore.md). ![A NuGet reference list is created on package installation and can be used to restore packages elsewhere](media/nuget-restore.png) -With only the reference list, NuGet can then reinstall—that is, restore—all of those packages from public and/or private hosts at any later time. (For this reason, nuget.org does not allow permanent deletion of published packages, although they can be hidden; see [Deleting packages](Policies/deleting-packages.md).) When committing a project to source control, or sharing it in some other way, you need only include the reference list and need not include any package binaries (see [Packages and source control](Consume-Packages/Packages-and-Source-Control.md).) +With only the reference list, NuGet can then reinstall—that is, *restore*—all of those packages from public and/or private hosts at any later time. When committing a project to source control, or sharing it in some other way, you include only the reference list and exclude any package binaries (see [Packages and source control](Consume-Packages/Packages-and-Source-Control.md).) -The computer that receives a project, such as a build server obtaining a copy of the project as part of an automated deployment system, simply asks NuGet to restore dependencies whenever they're needed. Build systems like Visual Studio Team Services provide "NuGet restore" steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository) then open the project in Visual Studio and run a build, Visual Studio automatically restores the necessary NuGet packages. Developers can also tell NuGet to restore packages at any time using the `nuget restore` CLI command or the `Install-Package` cmdlet in the Package Manager Console. +The computer that receives a project, such as a build server obtaining a copy of the project as part of an automated deployment system, simply asks NuGet to restore dependencies whenever they're needed. Build systems like Visual Studio Team Services provide "NuGet restore" steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository), they can invoke a command like `nuget restore` (NuGet CLI), `dotnet restore` (dotnet CLI), or `Install-Package` (Package Manager Console) to obtain all the necessary a packages. Visual Studio, for its part, automatically restores packages when building a project. Clearly, then, NuGet's primary role where developers are concerned is maintaining that reference list on behalf of your project and providing the means to efficiently restore (and update) those referenced packages. How this exactly happens has evolved over the different versions of NuGet, resulting in several *package management formats*, as they're called: -- [`packages.config`](Schema/packages-config.md): *(NuGet 1.0+)* An XML file that maintains a flat list of all dependencies in the project, including the dependencies of other installed packages. -- [`project.json`](Schema/project-json.md): *(NuGet 3.0+)* A JSON file that maintains a list of the project's dependencies with an overall package graph in an associated file, `project.lock.json`. This structure provides improved performance over `packages.config` as described on [Dependency Resolution](Consume-Packages/Dependency-Resolution.md), including transitive restore, but has itself been generally superseded by PackageReference below. -- [Package references in project files](Consume-Packages/Package-References-in-Project-Files.md) (also known as "PackageReference") | *(NuGet 4.0+)* Maintains a list of a project's top-level dependencies directly within the project file, so no separate file is needed. An associated file, `project.assets.json`, is dynamically generated like `project.lock.json` to manage the overall dependency graph. +- [`packages.config`](Schema/packages-config.md): *(NuGet 1.0+)* An XML file that maintains a flat list of all dependencies in the project, including the dependencies of other installed packages. +- [PackageReference](Consume-Packages/Package-References-in-Project-Files.md) (or "package references in project files") | *(NuGet 4.0+)* Maintains a list of a project's top-level dependencies directly within the project file, so no separate file is needed. An associated file, `project.assets.json`, is dynamically generated to manage the overall dependency graph. +- [`project.json`](Schema/project-json.md): *(deprecated)* A JSON file that maintains a list of the project's dependencies with an overall package graph in an associated file, `project.lock.json`. This format is deprecated in favor of PackageReference. -Which package management format is employed in any given project depends on the project type, and the available version of NuGet and Visual Studio. To check what format is being used, simply look for `packages.config` or `project.json` in the project root after installing your first package. If you don't see either file, look in the project file directly for a <PackageReference>element. - -In Visual Studio 2017, for example, most project types use `packages.config` except for UWP C# and .NET Core projects which use PackageReference. +Which package management format is employed in any given project depends on the project type, and the available version of NuGet (and/or Visual Studio). To check what format is being used, simply look for `packages.config` or `project.json` in the project root after installing your first package. If you don't see either file, look in the project file directly for a <PackageReference>element. ## What else does NuGet do? -To summarize what we've covered so far, NuGet provides (in its hosting role) the central nuget.org repository and supports private hosting. NuGet provides the tools developers need for creating, publishing, and consuming packages. And most importantly, NuGet maintains a reference list of packages used in a project and the ability to restore and update those packages from that list. - -To make these processes work efficiently, NuGet does some behind-the-scenes optimizations. Most notably, NuGet manages both computer-wide and project-specific package caches to shortcut installation and reinstallation. Where the computer-wide cache is concerned, any package that you download and install in a project is stored in the cache, such that installing the same package in another project doesn't have to download it again. This is clearly very helpful when you're frequently restoring a larger number of packages, as on a build server. For more details on the mechanism and how to work with it, see [Managing the NuGet cache](Consume-Packages/Managing-the-Nuget-Cache.md). +So far you've learned the following characteristics of NuGet: +- NuGet provides the central nuget.org repository with support for private hosting. +- NuGet provides the tools developers need for creating, publishing, and consuming packages. +- Most importantly, NuGet maintains a reference list of packages used in a project and the ability to restore and update those packages from that list. -Within an individual project, NuGet does a lot of work to manage the overall dependency graph. (When using `project.json` or <PackageReference>, NuGet keeps that information in a secondary file called `project.lock.json` and `project.assets.json`, respectively.) This again includes resolving multiple references to different versions of the same package. +To make these processes work efficiently, NuGet does some behind-the-scenes optimizations. Most notably, NuGet manages both computer-wide and project-specific package caches to shortcut installation and reinstallation. Where the computer-wide cache is concerned, any package that you download and install in a project is stored in the cache, such that installing the same package in another project doesn't incur another download. This is clearly very helpful when you're frequently restoring a larger number of packages, as on a build server. For more details on the mechanism and how to work with it, see [Managing the NuGet cache](Consume-Packages/Managing-the-Nuget-Cache.md). -That is, it's quite common that a project takes a dependency on one or more packages that themselves have the same dependencies. For example, some of the most useful utility packages on nuget.org are employed by many other packages. In the entire dependency graph, ten, you could easily have ten different references to different versions of the same package. However, you don't want to bring multiple versions of that package into the application itself, so NuGet sorts out which single version that everyone can use. (See [Dependency Resolution](Consume-Packages/Dependency-Resolution.md) for more on this topic.) +Within an individual project, NuGet manages the overall dependency graph, which again includes resolving multiple references to different versions of the same package. It's quite common that a project takes a dependency on one or more packages that themselves have the same dependencies. Some of the most useful utility packages on nuget.org are employed by many other packages. In the entire dependency graph, then, you could easily have ten different references to different versions of the same package. To avoid bringing multiple versions of that package into the application itself, NuGet sorts out which single version can be used by all consumers. (For more information, see [Dependency Resolution](Consume-Packages/Dependency-Resolution.md).) -Beyond that, NuGet maintains all the specifications related to how packages are structured (including [localization](Create-Packages/Creating-Localized-Packages.md) and [debug symbols](Create-Packages/Symbol-Packages.md)) and how they are referenced (including [version ranges](reference/package-versioning.md#version-ranges-and-wildcards) and [pre-release versions](create-packages/Prerelease-Packages.md).) NuGet also provides APIs for credential providers (for accessing private hosts) and for developers who write Visual Studio extensions and project templates. +Beyond that, NuGet maintains all the specifications related to how packages are structured (including [localization](Create-Packages/Creating-Localized-Packages.md) and [debug symbols](Create-Packages/Symbol-Packages.md)) and how they are referenced (including [version ranges](reference/package-versioning.md#version-ranges-and-wildcards) and [pre-release versions](create-packages/Prerelease-Packages.md).) NuGet also provides various APIs to work with its services programmatically, and provides support for developers who write Visual Studio extensions and project templates. Take a moment to browse the table of contents for this documentation, and you'll see all of these capabilities represented there, along with release notes dating back to NuGet's beginnings. ## Comments, contributions, and issues -Finally, we very much welcome comments and contributions to this documentation—just select the **Comments** and **Edit** commands on any page, or visit the [docs repository](https://github.com/NuGet/docs.microsoft.com-nuget/) and [docs issue list](https://github.com/NuGet/docs.microsoft.com-nuget/issues) on GitHub. +Finally, we very much welcome comments and contributions to this documentation—just select the **Feedback** and **Edit** commands on the top of any page, or visit the [docs repository](https://github.com/NuGet/docs.microsoft.com-nuget/) and [docs issue list](https://github.com/NuGet/docs.microsoft.com-nuget/issues) on GitHub. We also welcome contributions to NuGet itself through its [various GitHub repositories](https://github.com/NuGet/Home); NuGet issues can be found on [https://github.com/NuGet/home/issues](https://github.com/NuGet/home/issues). From fefdac9c689002d4535ed47263bf6d0bc45b9e1e Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 16 Jan 2018 09:56:48 -0800 Subject: [PATCH 0448/2943] Fix packageType version to 3.5 --- docs/Schema/nuspec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index 0e7e990bb..be78f85dc 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -105,7 +105,7 @@ These elements must appear within a `` element. | Element | Description | | --- | --- | -**packageTypes** | *(3.3+)* A collection of zero or more `` elements specifying the type of the package if other than a traditional dependency package. Each packageType has attributes of *name* and *version*. See [Setting a package type](../create-packages/creating-a-package.md#setting-a-package-type). | +**packageTypes** | *(3.5+)* A collection of zero or more `` elements specifying the type of the package if other than a traditional dependency package. Each packageType has attributes of *name* and *version*. See [Setting a package type](../create-packages/creating-a-package.md#setting-a-package-type). | | **dependencies** | A collection of zero or more `` elements specifying the dependencies for the package. Each dependency has attributes of *id*, *version*, *include* (3.x+), and *exclude* (3.x+). See [Dependencies](#dependencies) below. | | **frameworkAssemblies** | *(1.2+)* A collection of zero or more `` elements identifying .NET Framework assembly references that this package requires, which ensures that references are added to projects consuming the package. Each frameworkAssembly has *assemblyName* and *targetFramework* attributes. See [Specifying framework assembly references GAC](#specifying-framework-assembly-references-gac) below. | | **references** | *(1.5+)* A collection of zero or more `` elements naming assemblies in the package's `lib` folder that are added as project references. Each reference has a *file* attribute. `` can also contain a `` element with a *targetFramework* attribute, that then contains `` elements. If omitted, all references in `lib` are included. See [Specifying explicit assembly references](#specifying-explicit-assembly-references) below. | From cb0ba3ad55789c63996d6eaf98d136573f65f1b0 Mon Sep 17 00:00:00 2001 From: Raymond Date: Wed, 17 Jan 2018 15:00:59 +0800 Subject: [PATCH 0449/2943] clean words. a) It is puzzled for novice likes me to understand what a 'project' is. b) In description column, deleting makes concept clean, clear, and easy for novice to understand. Same words are said in "Changing config settings" and "How settings are applied". Please do not stuff lots in introduction section. --- docs/Consume-Packages/Configuring-NuGet-Behavior.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index ba4692f2c..383e9abda 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -32,12 +32,12 @@ In this topic: - [How settings are applied](#how-settings-are-applied) - [NuGetDefaults.Config file](#nuget-defaults-file) -## Config file locations and uses +## NuGet.Config file locations and uses | Scope | NuGet.Config file location | Description | | --- | --- | --- | -| Project | Project folder or any folder up to the drive root | In a project folder, settings apply only to that project. In parent folders that contain multiple projects subfolders, settings apply to all projects in those subfolders. | -| User | Windows: %APPDATA%\NuGet\NuGet.Config
    Mac/Linux: ~/.nuget/NuGet.Config | Settings apply to all operations, but are overridden by any project-level settings. When using CLI commands, you can specify a different config file using the `-configFile` switch to ignore any settings in the default user-level file. | +| Project | Current folder (aka Project folder) or any folder up to the drive root.| In a project folder, settings apply only to that project. In parent folders that contain multiple projects subfolders, settings apply to all projects in those subfolders. | +| User | Windows: %APPDATA%\NuGet\NuGet.Config
    Mac/Linux: ~/.nuget/NuGet.Config | Settings apply to all operations, but are overridden by any project-level settings. | | Computer | Windows: %ProgramFiles(x86)%\NuGet\Config
    Mac/Linux: $XDG_DATA_HOME (typically ~/.local/share) | Settings apply to all operations on the computer, but are overriden by any user- or project-level settings. | Notes for earlier versions of NuGet: From 315462cdc3125d2e9c0ab8fd3968eed52434bdb8 Mon Sep 17 00:00:00 2001 From: Maira Wenzel Date: Wed, 17 Jan 2018 13:00:52 -0800 Subject: [PATCH 0450/2943] fix anchors --- docs/Reference/Errors-and-Warnings.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index 4a222aea0..4ed055400 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -131,7 +131,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | **Common causes** | Packages contain dependency on exact versions of a package instead of open-ended ranges. | | **Example message** | *Unable to satisfy conflicting requests for {id}: {conflict path} Framework: {target graph}* | - ### NU1107 (Previously NU1607) @@ -261,8 +261,6 @@ The errors and warnings listed here are available only with [PackageReference-ba ## Resolver conflict warnings -[NU1608](#nu1608) - ### NU1608 | | | @@ -273,8 +271,6 @@ The errors and warnings listed here are available only with [PackageReference-ba ## Package fallback warnings -[NU1701](#nu1701) - ### NU1701 | | | @@ -285,8 +281,6 @@ The errors and warnings listed here are available only with [PackageReference-ba ## Feed warnings -[NU1801](#nu1801) - ### NU1801 | | | From f76e97b5726d746da9bd3d333c2a4798f4d00f29 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Thu, 18 Jan 2018 13:01:03 +1100 Subject: [PATCH 0451/2943] Update NuGet-4.0-RTM.md --- docs/Release-Notes/NuGet-4.0-RTM.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/Release-Notes/NuGet-4.0-RTM.md b/docs/Release-Notes/NuGet-4.0-RTM.md index 58a3ab01f..40835a13b 100644 --- a/docs/Release-Notes/NuGet-4.0-RTM.md +++ b/docs/Release-Notes/NuGet-4.0-RTM.md @@ -60,7 +60,7 @@ There is no workaround at this time. #### Issue: NuGet Package Manager does not display and does not allow add/update of DotNetCLITools. [NuGet#4256](https://github.com/NuGet/Home/issues/4256) -* #### Workaround: +#### Workaround: DotNetCLIToolReferences must be manually edited in your project file. ### NuGet restore will fail when you set PackageId property for projects @@ -374,4 +374,3 @@ There is no workaround at this time. [Issues list 3](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.0 RC3") [Issues list 4](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.0 RC2") [Issues list 5](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.0 RC") - From fd340104707994eb0476c77c22a03120e099fe14 Mon Sep 17 00:00:00 2001 From: Matt Ring Date: Wed, 17 Jan 2018 23:36:36 -0600 Subject: [PATCH 0452/2943] Fixed "Linus" typo to "Linux" --- docs/Consume-Packages/Configuring-NuGet-Behavior.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index ba4692f2c..07e71c3b5 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -42,7 +42,7 @@ In this topic: Notes for earlier versions of NuGet: - NuGet 3.3 and earlier used a `.nuget` folder for solution-wide settings. This file not used in NuGet 3.4+. -- For NuGet 2.6 to 3.x, the computer-level config file on Windows was located in %ProgramData%\NuGet\Config[\\{IDE}[\\{Version}[\\{SKU}]]]\NuGet.Config, where *{IDE}* can be *VisualStudio*, *{Version}* was the Visual Studio version such as *14.0*, and *{SKU}* is either *Community*, *Pro*, or *Enterprise*. To migrate settings to NuGet 4.0+, simply copy the config file to %ProgramFiles(x86)%\NuGet\Config. On Linus, this previous location was /etc/opt, and on Mac, /Library/Application Support. +- For NuGet 2.6 to 3.x, the computer-level config file on Windows was located in %ProgramData%\NuGet\Config[\\{IDE}[\\{Version}[\\{SKU}]]]\NuGet.Config, where *{IDE}* can be *VisualStudio*, *{Version}* was the Visual Studio version such as *14.0*, and *{SKU}* is either *Community*, *Pro*, or *Enterprise*. To migrate settings to NuGet 4.0+, simply copy the config file to %ProgramFiles(x86)%\NuGet\Config. On Linux, this previous location was /etc/opt, and on Mac, /Library/Application Support. ## Changing config settings From 4f11fd8261a18578d08b99502600ac8fc26378ae Mon Sep 17 00:00:00 2001 From: Erlend Date: Thu, 18 Jan 2018 15:17:55 +0100 Subject: [PATCH 0453/2943] Add space between two different words --- docs/Quickstart/Create-and-Publish-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Quickstart/Create-and-Publish-a-Package.md b/docs/Quickstart/Create-and-Publish-a-Package.md index b9f06b066..51c1e6180 100644 --- a/docs/Quickstart/Create-and-Publish-a-Package.md +++ b/docs/Quickstart/Create-and-Publish-a-Package.md @@ -121,7 +121,7 @@ Once you have a `.nupkg` file, you publish it to nuget.org using the `push` comm 1. Once logged in, select your user name (on the upper right), then select **API Keys**. -1. Select **Create**, provide a name for your key, select **Select Scopes > Push**Under **API Key**, enter * for **Glob pattern**, then select **Create**. +1. Select **Create**, provide a name for your key, select **Select Scopes > Push** Under **API Key**, enter * for **Glob pattern**, then select **Create**. 1. Once the key is created, select **Copy** to retrieve the access key you'll need in the CLI: From 7f7eeca2996d73e574f5945a4a84a1b454527c10 Mon Sep 17 00:00:00 2001 From: Erlend Date: Thu, 18 Jan 2018 15:22:09 +0100 Subject: [PATCH 0454/2943] Fix typo and remove redundancy --- docs/Quickstart/Create-and-Publish-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Quickstart/Create-and-Publish-a-Package.md b/docs/Quickstart/Create-and-Publish-a-Package.md index b9f06b066..59abf0540 100644 --- a/docs/Quickstart/Create-and-Publish-a-Package.md +++ b/docs/Quickstart/Create-and-Publish-a-Package.md @@ -128,7 +128,7 @@ Once you have a `.nupkg` file, you publish it to nuget.org using the `push` comm ![Copying the API key to the clipboard](media/QS_Create-02-APIKey.png) > [!Warning] - > Save your key in a secure location and keep is a secret. If your key is accidentally revealed, you can always regenerate it at any time. You can also remove the API key if you no longer want to push packages via the CLI. + > Save your key in a secure location and keep it a secret. If your key is accidentally revealed, you can regenerate it at any time. You can also remove the API key if you no longer want to push packages via the CLI. 1. At a command prompt, run the following command, specifying your package name and replacing the key with the value copied in step 4: From e7f250b67abd49e825f659af7128d9f8f7cd125a Mon Sep 17 00:00:00 2001 From: Erlend Date: Thu, 18 Jan 2018 15:23:00 +0100 Subject: [PATCH 0455/2943] Update Create-and-Publish-a-Package.md --- docs/Quickstart/Create-and-Publish-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Quickstart/Create-and-Publish-a-Package.md b/docs/Quickstart/Create-and-Publish-a-Package.md index 59abf0540..47972bfec 100644 --- a/docs/Quickstart/Create-and-Publish-a-Package.md +++ b/docs/Quickstart/Create-and-Publish-a-Package.md @@ -128,7 +128,7 @@ Once you have a `.nupkg` file, you publish it to nuget.org using the `push` comm ![Copying the API key to the clipboard](media/QS_Create-02-APIKey.png) > [!Warning] - > Save your key in a secure location and keep it a secret. If your key is accidentally revealed, you can regenerate it at any time. You can also remove the API key if you no longer want to push packages via the CLI. + > Save your key in a secure location and keep it secret. If your key is accidentally revealed, you can regenerate it at any time. You can also remove the API key if you no longer want to push packages via the CLI. 1. At a command prompt, run the following command, specifying your package name and replacing the key with the value copied in step 4: From a4ef73626e5571879207a82f68374cfcb8d7b3d1 Mon Sep 17 00:00:00 2001 From: Erlend Date: Thu, 18 Jan 2018 15:35:27 +0100 Subject: [PATCH 0456/2943] Rewrite sentence to be more active --- docs/includes/install-methods.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/includes/install-methods.md b/docs/includes/install-methods.md index 8a49f6477..5b3296cb0 100644 --- a/docs/includes/install-methods.md +++ b/docs/includes/install-methods.md @@ -1,7 +1,7 @@ -Installing a package happens in three ways: +You can install a NuGet package in three different ways: | Method | Description | Reference | | --- | --- | --- | | nuget.exe CLI: `nuget install ` | Downloads the package identified by \ and expands its contents into a folder in the current directory. If no packages are specified, installs all packages listed in the project's `packages.config` file. No changes are made to any project files. Dependencies are also downloaded and expanded. | [CLI reference](../tools/nuget-exe-CLI-Reference.md) | | Package Manager Console (Visual Studio): `Install-Package ` | Downloads and installs the package into the current project, then update the project file to list the package as a dependency. | [Package Manager Console Guide](../tools/Package-Manager-Console.md) | -| Package Manager UI (Visual Studio) | Provides a UI through which you can browse, select, and install packages into a project. Updates the project file to list the package as a dependency. | [Package Manager UI Reference](../tools/Package-Manager-UI.md) | \ No newline at end of file +| Package Manager UI (Visual Studio) | Provides a UI through which you can browse, select, and install packages into a project. Updates the project file to list the package as a dependency. | [Package Manager UI Reference](../tools/Package-Manager-UI.md) | From 141eb7a311a0f3f08518ab484fb21498f6823079 Mon Sep 17 00:00:00 2001 From: Erlend Date: Thu, 18 Jan 2018 15:41:02 +0100 Subject: [PATCH 0457/2943] Fix typo and clearer language --- docs/Quickstart/Use-a-Package.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Quickstart/Use-a-Package.md b/docs/Quickstart/Use-a-Package.md index 2937fde67..758b55be2 100644 --- a/docs/Quickstart/Use-a-Package.md +++ b/docs/Quickstart/Use-a-Package.md @@ -23,7 +23,7 @@ NuGet packages are units of reusable code that other developers make available t Once installed, refer to the package in code with `using ` where \ is specific to the package you're using. Once the reference is made, you can call the package through its API. -The remainder of this topic walks through the process of using the Package Manager UI to install the popular [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) package in a Universal Windows Platform (UWP) project. It then shows an example of using the package. You use a similar same workflow for virtually every NuGet package you use in a project. +The remainder of this topic walks through the process of using the Package Manager UI to install the popular [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) package in a Universal Windows Platform (UWP) project. It then shows an example of using the package. You can use a similar workflow for other NuGet packages as well. - [Install pre-requisites](#install-pre-requisites) - [Create a project](#create-a-project) @@ -31,7 +31,7 @@ The remainder of this topic walks through the process of using the Package Manag - [Use the Newtonsoft.Json API in the app](#use-the-newtonsoftjson-api-in-the-app) > [!Tip] -> **Start with nuget.org**: Installing packages from nuget.org is a common workflow that .NET developers use to find components they can reuse in their own applications. You can always search nuget.org directly or find and install packages within Visual Studio as shown in this topic. +> **Start with nuget.org**: Installing packages from nuget.org is a common workflow that .NET developers use to find components they can use in their own applications. You can always search nuget.org directly or find and install packages within Visual Studio as shown in this topic. ## Install pre-requisites From 7e751de33a5d18dd04cc4e6e1535b7cf6f0c3294 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 18 Jan 2018 17:19:19 -0800 Subject: [PATCH 0458/2943] Metadata and project.json cleanup Removed unnecessary metadata, also moved project.json material into an archive and patched up links and TOCs. This change places all project.json material in that archive, with links back to the topics from which it was removed. --- .openpublishing.redirection.json | 15 + README.md | 26 +- docs/API/NuGet-Protocols.md | 10 +- docs/API/catalog-resource.md | 7 - docs/API/overview.md | 7 - docs/API/package-base-address-resource.md | 7 - docs/API/package-publish-resource.md | 7 - docs/API/registration-base-url-resource.md | 9 +- docs/API/report-abuse-resource.md | 9 +- .../search-autocomplete-service-resource.md | 7 - docs/API/search-query-service-resource.md | 7 - docs/API/service-index.md | 10 +- .../Configuring-NuGet-Behavior.md | 7 - .../Consume-Packages/Dependency-Resolution.md | 56 +-- .../Finding-and-Choosing-Packages.md | 3 +- .../Managing-the-NuGet-Cache.md | 18 +- .../Consume-Packages/Overview-and-Workflow.md | 5 +- .../Package-References-in-Project-Files.md | 36 +- docs/Consume-Packages/Package-Restore.md | 130 ++----- .../Package-restore-troubleshooting.md | 12 +- .../Packages-and-Source-Control.md | 22 +- .../Reinstalling-and-Updating-Packages.md | 6 +- .../Consume-Packages/Team-Foundation-Build.md | 40 +- .../Creating-Localized-Packages.md | 47 +-- docs/Create-Packages/Creating-a-Package.md | 72 ++-- docs/Create-Packages/Native-Packages.md | 15 +- docs/Create-Packages/Overview-and-Workflow.md | 26 +- docs/Create-Packages/Prerelease-Packages.md | 25 +- docs/Create-Packages/Publish-a-package.md | 42 +-- .../Source-and-Config-File-Transformations.md | 27 +- .../Supporting-Multiple-Target-Frameworks.md | 30 +- docs/Create-Packages/Symbol-Packages.md | 29 +- docs/Guides/Create-Cross-Platform-Packages.md | 28 +- .../Create-NET-Standard-Packages-VS2015.md | 37 +- .../Create-NET-Standard-Packages-VS2017.md | 27 +- docs/Guides/Create-UWP-Controls.md | 90 ++--- docs/Guides/Create-UWP-Packages.md | 25 +- docs/Guides/Install-NuGet.md | 46 +-- .../api/query-for-all-published-packages.md | 132 ++----- docs/Hosting-Packages/Local-Feeds.md | 5 +- docs/Hosting-Packages/NuGet-Server.md | 3 +- docs/Hosting-Packages/Overview.md | 15 +- docs/Policies/Deleting-Packages.md | 17 +- docs/Policies/Dispute-Resolution.md | 46 +-- docs/Policies/Ecosystem.md | 74 ++-- docs/Policies/Governance.md | 30 +- docs/Policies/NuGet-FAQ.md | 14 - .../Create-and-Publish-a-Package.md | 24 +- docs/Quickstart/Use-a-Package.md | 1 - docs/Reference/Errors-and-Warnings.md | 9 +- docs/Reference/ID-Prefix-Reservation.md | 78 ++-- docs/Reference/NuGet-Client-SDK.md | 9 +- docs/Reference/Package-Versioning.md | 46 +-- ...-Credential-Providers-for-Visual-Studio.md | 3 +- .../nuget-exe-Credential-Providers.md | 1 - docs/Release-Notes/Index.md | 16 +- docs/Release-Notes/Known-Issues.md | 87 ++--- docs/Release-Notes/NuGet-1.1.md | 14 - docs/Release-Notes/NuGet-1.2.md | 15 - docs/Release-Notes/NuGet-1.3.md | 14 - docs/Release-Notes/NuGet-1.4.md | 15 - docs/Release-Notes/NuGet-1.5.md | 18 +- docs/Release-Notes/NuGet-1.6.md | 15 - docs/Release-Notes/NuGet-1.7.md | 15 - docs/Release-Notes/NuGet-1.8.md | 15 - docs/Release-Notes/NuGet-2.0.md | 15 - docs/Release-Notes/NuGet-2.1.md | 15 - docs/Release-Notes/NuGet-2.12-RC.md | 15 - docs/Release-Notes/NuGet-2.12.md | 15 - docs/Release-Notes/NuGet-2.2.1.md | 15 +- docs/Release-Notes/NuGet-2.2.md | 15 +- docs/Release-Notes/NuGet-2.5.md | 15 +- .../NuGet-2.6.1-for-WebMatrix.md | 14 +- docs/Release-Notes/NuGet-2.6.md | 15 +- docs/Release-Notes/NuGet-2.7.1.md | 15 +- docs/Release-Notes/NuGet-2.7.2.md | 15 +- docs/Release-Notes/NuGet-2.7.md | 15 +- docs/Release-Notes/NuGet-2.8.1.md | 15 +- docs/Release-Notes/NuGet-2.8.2.md | 15 +- docs/Release-Notes/NuGet-2.8.3.md | 15 +- docs/Release-Notes/NuGet-2.8.5.md | 15 +- docs/Release-Notes/NuGet-2.8.6.md | 14 +- docs/Release-Notes/NuGet-2.8.7.md | 15 +- docs/Release-Notes/NuGet-2.8.md | 15 +- docs/Release-Notes/NuGet-2.9-RC.md | 15 +- docs/Release-Notes/NuGet-3.0-Beta.md | 14 - docs/Release-Notes/NuGet-3.0-Preview.md | 15 +- docs/Release-Notes/NuGet-3.0-RC.md | 15 +- docs/Release-Notes/NuGet-3.0-RC2.md | 15 +- docs/Release-Notes/NuGet-3.0.0.md | 15 +- docs/Release-Notes/NuGet-3.1.1.md | 15 +- docs/Release-Notes/NuGet-3.1.md | 15 +- docs/Release-Notes/NuGet-3.2-RC.md | 14 - docs/Release-Notes/NuGet-3.2.1.md | 15 - docs/Release-Notes/NuGet-3.2.md | 14 - docs/Release-Notes/NuGet-3.3.md | 14 - docs/Release-Notes/NuGet-3.4-RC.md | 20 +- docs/Release-Notes/NuGet-3.4.1.md | 14 - docs/Release-Notes/NuGet-3.4.2.md | 16 +- docs/Release-Notes/NuGet-3.4.3.md | 14 - docs/Release-Notes/NuGet-3.4.4.md | 14 - docs/Release-Notes/NuGet-3.4.md | 14 - docs/Release-Notes/NuGet-3.5-Beta.md | 14 - docs/Release-Notes/NuGet-3.5-Beta2.md | 16 +- docs/Release-Notes/NuGet-3.5-RC.md | 16 +- docs/Release-Notes/NuGet-3.5-RTM.md | 9 +- docs/Release-Notes/NuGet-4.0-RC.md | 171 ++++----- docs/Release-Notes/NuGet-4.0-RTM.md | 347 +++++++++--------- docs/Release-Notes/NuGet-4.3-RTM.md | 98 +++-- docs/Release-Notes/NuGet-4.4-RTM.md | 159 ++++---- docs/Release-Notes/NuGet-4.5-RTM.md | 89 ++--- docs/Schema/Analyzers-Conventions.md | 16 +- docs/Schema/Target-Frameworks.md | 8 +- docs/Schema/msbuild-targets.md | 50 +-- docs/Schema/nuget-config-file.md | 10 +- docs/Schema/nuspec.md | 13 +- docs/Schema/packages-config.md | 1 - docs/TOC.md | 7 +- docs/Tools/Package-Manager-Console.md | 24 +- docs/Tools/Package-Manager-UI.md | 3 +- docs/Tools/PowerShell-Reference.md | 9 +- docs/Tools/cli-ref-add.md | 7 +- docs/Tools/cli-ref-config.md | 11 +- docs/Tools/cli-ref-delete.md | 11 +- docs/Tools/cli-ref-environment-variables.md | 3 +- docs/Tools/cli-ref-help.md | 17 +- docs/Tools/cli-ref-init.md | 19 +- docs/Tools/cli-ref-install.md | 19 +- docs/Tools/cli-ref-list.md | 18 +- docs/Tools/cli-ref-locals.md | 13 +- docs/Tools/cli-ref-mirror.md | 13 +- docs/Tools/cli-ref-pack.md | 11 +- docs/Tools/cli-ref-push.md | 19 +- docs/Tools/cli-ref-restore.md | 32 +- docs/Tools/cli-ref-setapikey.md | 17 +- docs/Tools/cli-ref-sources.md | 17 +- docs/Tools/cli-ref-spec.md | 15 +- docs/Tools/cli-ref-update.md | 17 +- docs/Tools/dotnet-Commands.md | 1 - docs/Tools/nuget-exe-CLI-Reference.md | 1 - docs/Tools/ps-ref-add-bindingredirect.md | 1 - docs/Tools/ps-ref-find-package.md | 2 - docs/Tools/ps-ref-get-package.md | 2 - docs/Tools/ps-ref-get-project.md | 3 - docs/Tools/ps-ref-install-package.md | 2 +- docs/Tools/ps-ref-open-packagepage.md | 2 - docs/Tools/ps-ref-register-tabexpansion.md | 1 - docs/Tools/ps-ref-sync-package.md | 1 - docs/Tools/ps-ref-uninstall-package.md | 4 +- docs/Tools/ps-ref-update-package.md | 1 - .../Project-System-Support.md | 35 +- .../Visual-Studio-Templates.md | 4 +- ...udio.md => nuget-apiI-in-visual-studio.md} | 15 +- docs/What-is-NuGet.md | 7 +- .../project-json-and-uwp.md} | 27 +- docs/archive/project-json-archive.md | 155 ++++++++ .../project-json-impact.md} | 31 +- docs/{Schema => archive}/project-json.md | 32 +- docs/includes/package-restore.md | 3 - docs/index.md | 4 - 160 files changed, 1228 insertions(+), 2729 deletions(-) rename docs/Visual-Studio-Extensibility/{NuGet-API-in-Visual-Studio.md => nuget-apiI-in-visual-studio.md} (99%) rename docs/{Create-Packages/project-json-and-UWP.md => archive/project-json-and-uwp.md} (96%) create mode 100644 docs/archive/project-json-archive.md rename docs/{Create-Packages/project-json-Impact.md => archive/project-json-impact.md} (90%) rename docs/{Schema => archive}/project-json.md (93%) delete mode 100644 docs/includes/package-restore.md diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index b1b5245f9..1d03a216e 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -25,6 +25,21 @@ "redirect_url": "/nuget/reference/package-versioning", "redirect_document_id": false }, + { + "source_path": "docs/Create-Packages/project-json-impact.md", + "redirect_url": "/nuget/archive/project-json-impact", + "redirect_document_id": false + }, + { + "source_path": "docs/Create-Packages/project-json-and-uwp.md", + "redirect_url": "/nuget/archive/project-json-and-uwp", + "redirect_document_id": false + }, + { + "source_path": "docs/Schema/project-json.md", + "redirect_url": "/nuget/archive/project-json", + "redirect_document_id": false + }, { "source_path": "docs/Quickstart/restore.md", "redirect_url": "/nuget/consume-packages/package-restore-troubleshooting", diff --git a/README.md b/README.md index 7f7ce415d..6e3eb81fb 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ NuGet follows the [.NET Foundation Contributors Code of Conduct](https://github. No contribution is too big or too small-- -1. Visit the page to edit on [docs.microsoft.com/nuget](/en-us/nuget/), then click the **Edit** button on the top right. This brings you to the appropriate markdown page in the repo. +1. Visit the page to edit on [docs.microsoft.com/nuget](/en-us/nuget/), then click the **Edit** button on the top right. This brings you to the appropriate markdown page in the repo. 1. Edit the markdown: 1. If you're including images (use PNGs, generally), place them in the media folder that's in the topic's folder. Links are then `media/.png`. 1. Relative links to other pages in this docset should be in the form `..//.md` including the training `.md`. If you're linking to another topic in the same folder, then `..//` can be omitted. When using anchors, always remember to include the `.md` before the `#`. @@ -59,7 +59,7 @@ Follow these naming conventions and capitalizations when referring to NuGet and - NuGet: refers to the technology. - NuGet Package Manager UI, NuGet Package Manager Console, etc.: refers to other components build on NuGet. - nuget.exe: refers to the command-line executable; you can use "nuget" by itself when followed by other arguments. When referring to the command by itself, as in "when you run nuget", include the .exe as in "when you run nuget.exe" so your meaning is clear. -- packages.config, project.json: refer to NuGet files in a project. +- packages.config (or the deprecated project.json): refer to NuGet files in a project. - NuGet.Config and NuGetDefaults.Config: these files appear with this capitalization so be sure to follow them. - .nuspec: refers to a NuGet specification for creating a package; generally, we speak of a .nuspec file with the period, because it's always used as a file extension. @@ -93,7 +93,7 @@ Always include a meaningful description of the image in the markdown alt-text be ### Inline code -Delineate inline code with grave accents (backticks), as in `nuget pack`. This inline formatting is used for the following: +Delineate inline code with grave accents (backticks), as in \`nuget pack\`. This inline formatting is used for the following: - Code - Identifiers @@ -113,9 +113,9 @@ Markdown and HTML are ignored within inline code. Code blocks on docs.microsoft.com are delineated by with three grave accents (backticks), ```, at the beginning and the end. You do not need to indent code blocks unless they are contained within a list. -The opening ``` should be followed by a language code for proper syntax coloring, such as "xml", "json", "csharp", etc. Use "bash" for command-line examples and "output" for command-line results. +The opening ``` should be followed by a language code for proper syntax coloring, such as "xml", "json", "csharp", etc. Use "cli" for command-line examples and "output" for command-line results. -The only case when you should use ``` without a language tag is when creating a block of fixed-point text that isn't related to any kind of code. In these cases you can also just indent the code block, which can be preferable because it visually separates the code in an editor. See [docs/create-packages/project-json-and-uwp.md](./docs/Create-Packages/project-json-and-UWP.md) for an example. +The only case when you should use ``` without a language tag is when creating a block of fixed-point text that isn't related to any kind of code. In these cases you can also just indent the code block, which can be preferable because it visually separates the code in an editor. ### Callouts @@ -125,12 +125,12 @@ Callout sections with ">" only will appear with a solid gray line to the left. S You can also use one of the following callout tags on the first line that will create a shaded callout in the indicated color: -| Tag | Shading color | Topic with examples | +| Tag | Callout use | Topic with examples | | --- | --- | --- | -| `> [!Note]` | Light blue, use for callouts without any special emphasis. | [Creating NuGet packages](/nuget/create-packages/creating-a-package) | -| `> [!Tip]` | Green, use for callouts that share special tips and tricks or other helpful knowledge. | [Package consumption overview](/nuget/consume-packages/overview-and-workflow) | -| `> [!Important]` | Yellow, use for callouts that describe cautions. | [NuGet.Server](/nuget/hosting-packages/nuget-server) | -| `> [!Warning]` | Red, use for callouts that warn readers about situations that could cause data loss or unexpected consequences. | [Dependency resolution](/nuget/consume-packages/dependency-resolution) | +| `> [!Note]` | Callouts without any special emphasis. | [Creating NuGet packages](/nuget/create-packages/creating-a-package) | +| `> [!Tip]` | Callouts that share special tips and tricks or other helpful knowledge. | [Package consumption overview](/nuget/consume-packages/overview-and-workflow) | +| `> [!Important]` | Callouts that describe cautions. | [NuGet.Server](/nuget/hosting-packages/nuget-server) | +| `> [!Warning]` | Callouts that warn readers about situations that could cause data loss or unexpected consequences. | [Dependency resolution](/nuget/consume-packages/dependency-resolution) | ### Links @@ -150,6 +150,6 @@ Use `<` and `>` for < and > characters outside a code block or inline code Block-level HTML elements have a few restrictions: -* They must be separated from surrounding text by blank lines. -* The begin and end tags of the outermost block element must not be indented. -* Markdown can't be used within HTML blocks. +- They must be separated from surrounding text by blank lines. +- The begin and end tags of the outermost block element must not be indented. +- Markdown can't be used within HTML blocks. diff --git a/docs/API/NuGet-Protocols.md b/docs/API/NuGet-Protocols.md index 754946c6f..7af9b6c87 100644 --- a/docs/API/NuGet-Protocols.md +++ b/docs/API/NuGet-Protocols.md @@ -1,6 +1,4 @@ --- -# required metadata  - title: nuget.org Protocols | Microsoft Docs author: anangaur ms.author: anangaur @@ -9,17 +7,13 @@ ms.date: 10/30/2017 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: ba1d9742-9f1c-42ff-8c30-8e953e23c501 - -# optional metadata - description: The evolving nuget.org protocols to interact with NuGet clients. ms.reviewer: - kraigb - karann-msft - --- -# nuget.org Protocols + +# nuget.org protocols To interact with nuget.org, clients need to follow certain protocols. Because these protocols keep evolving, clients must identify the protocol version they use when calling specific nuget.org APIs. This allows nuget.org to introduce diff --git a/docs/API/catalog-resource.md b/docs/API/catalog-resource.md index 12b7e06c5..90ef7832f 100644 --- a/docs/API/catalog-resource.md +++ b/docs/API/catalog-resource.md @@ -1,6 +1,4 @@ --- -# required metadata  - title: Catalog, NuGet V3 API | Microsoft Docs author: - joelverhagen @@ -13,16 +11,11 @@ ms.date: 10/30/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: cfd338b5-6253-48c0-88ba-17c6b98fc935 - -# optional metadata - description: The catalog is an index of all packages created and deleted on nuget.org. keywords: NuGet V3 API catalog, nuget.org transaction log, replicate NuGet.org, clone NuGet.org, append-only record of NuGet.org ms.reviewer: - karann - unniravindranathan - --- # Catalog diff --git a/docs/API/overview.md b/docs/API/overview.md index 3ef8512ac..2e67d8e58 100644 --- a/docs/API/overview.md +++ b/docs/API/overview.md @@ -1,6 +1,4 @@ --- -# required metadata  - title: Overview, NuGet API | Microsoft Docs author: - joelverhagen @@ -13,16 +11,11 @@ ms.date: 10/26/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 8c81f1ac-18c7-44d1-b2e3-584fe85dee6f - -# optional metadata - description: The NuGet API is a set of HTTP endpoints that can be used to download packages, fetch metadata, publish new packages, etc. keywords: NuGet V3 API, NuGet V2 API, NuGet JSON, NuGet registration API, NuGet API flat container, NuGet nupkg API, NuGet metadata API, NuGet search API, NuGet push API, NuGe publish API, NuGet delete API, NuGet unlist API, NuGet protocol ms.reviewer: - karann - unniravindranathan - --- # NuGet API diff --git a/docs/API/package-base-address-resource.md b/docs/API/package-base-address-resource.md index bec152006..9f4fbf55a 100644 --- a/docs/API/package-base-address-resource.md +++ b/docs/API/package-base-address-resource.md @@ -1,6 +1,4 @@ --- -# required metadata  - title: Package Content, NuGet API | Microsoft Docs author: - joelverhagen @@ -13,16 +11,11 @@ ms.date: 10/26/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: ec68b5d1-a684-4995-b1a6-6210dbb24875 - -# optional metadata - description: The package base address is a simple interface for fetching the package itself. keywords: NuGet flat container, NuGet package base address, NuGet nupkg API, NuGet API package versions, NuGet API unlisted packages, NuGet API download nuspec ms.reviewer: - karann - unniravindranathan - --- # Package Content diff --git a/docs/API/package-publish-resource.md b/docs/API/package-publish-resource.md index a05dc5e7d..9c36ba5f0 100644 --- a/docs/API/package-publish-resource.md +++ b/docs/API/package-publish-resource.md @@ -1,6 +1,4 @@ --- -# required metadata  - title: Push and Delete, NuGet API | Microsoft Docs author: - joelverhagen @@ -13,16 +11,11 @@ ms.date: 10/26/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 1eaa403a-5c13-4c05-9352-2f791b98aa7e - -# optional metadata - description: The publish service allows clients to publish new packages and unlist or delete existing packages. keywords: NuGet API push package, NuGet API delete package, NuGet API unlist package, NuGet API upload package, NuGet API create package ms.reviewer: - karann - unniravindranathan - --- # Push and Delete diff --git a/docs/API/registration-base-url-resource.md b/docs/API/registration-base-url-resource.md index b8d978fec..c399b6e52 100644 --- a/docs/API/registration-base-url-resource.md +++ b/docs/API/registration-base-url-resource.md @@ -1,6 +1,4 @@ --- -# required metadata  - title: Package Metadata, NuGet API | Microsoft Docs author: - joelverhagen @@ -13,19 +11,14 @@ ms.date: 10/26/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 96b07019-c2e1-4f40-9290-f65ad71af3b1 - -# optional metadata - description: The package registration base URL allows fetching metadata about packages. keywords: NuGet API package metadata, NuGet API registration, NuGet API unlisted packages ms.reviewer: - karann - unniravindranathan - --- -# Package Metadata +# Package metadata It is possible to fetch metadata about the packages available on a package source using the NuGet V3 API. This metadata can be fetched using the `RegistrationsBaseUrl` resource found in the [service index](service-index.md). diff --git a/docs/API/report-abuse-resource.md b/docs/API/report-abuse-resource.md index 37a0434dd..1321496ef 100644 --- a/docs/API/report-abuse-resource.md +++ b/docs/API/report-abuse-resource.md @@ -1,6 +1,4 @@ --- -# required metadata  - title: Report Abuse URL Template, NuGet API | Microsoft Docs author: - joelverhagen @@ -13,19 +11,14 @@ ms.date: 10/26/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 148d743a-09e5-4539-8454-675be11902db - -# optional metadata - description: The report abuse URL template allows clients to display a report abuse link in their UI. keywords: NuGet API report abuse, NuGet API file complaint, NuGet.org report URL template ms.reviewer: - karann - unniravindranathan - --- -# Report Abuse URL Template +# Report abuse URL template It is possible for a client to build a URL that can be used by the user to report abuse about a specific package. This is useful when a package source wants to enable all client experiences (even 3rd party) to delegate abuse reports to diff --git a/docs/API/search-autocomplete-service-resource.md b/docs/API/search-autocomplete-service-resource.md index a44fd55b7..211ca43d4 100644 --- a/docs/API/search-autocomplete-service-resource.md +++ b/docs/API/search-autocomplete-service-resource.md @@ -1,6 +1,4 @@ --- -# required metadata  - title: Autocomplete, NuGet API | Microsoft Docs author: - joelverhagen @@ -13,16 +11,11 @@ ms.date: 10/26/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: ead5cf7a-e51e-4cbb-8798-58226f4c853f - -# optional metadata - description: The search autocomplete service supports interactive discovery of package IDs and versions. keywords: NuGet autocomplete API, NuGet search package ID, substring package ID ms.reviewer: - karann - unniravindranathan - --- # Autocomplete diff --git a/docs/API/search-query-service-resource.md b/docs/API/search-query-service-resource.md index 91bd07a3d..932bd132f 100644 --- a/docs/API/search-query-service-resource.md +++ b/docs/API/search-query-service-resource.md @@ -1,6 +1,4 @@ --- -# required metadata  - title: Search, NuGet API | Microsoft Docs author: - joelverhagen @@ -13,16 +11,11 @@ ms.date: 10/26/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 11ca2092-67dc-41a9-a7af-afe610d8febb - -# optional metadata - description: The search service allows clients to query for packages by keyword and to filter results on certain package fields. keywords: NuGet search API, NuGet discover packages, API to query NuGet packages, API to browse NuGet packages ms.reviewer: - karann - unniravindranathan - --- # Search diff --git a/docs/API/service-index.md b/docs/API/service-index.md index 0968d8a3e..8f625b3cb 100644 --- a/docs/API/service-index.md +++ b/docs/API/service-index.md @@ -1,6 +1,4 @@ --- -# required metadata  - title: Service Index, NuGet API | Microsoft Docs author: - joelverhagen @@ -13,19 +11,14 @@ ms.date: 10/26/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 2f6d6cf2-53fb-417a-b1d8-e0ac591c1699 - -# optional metadata - description: The service index is the entry point of the NuGet HTTP API and enumerates the capabilities of the server. keywords: NuGet API entry point, NuGetA PI endpoint discovery ms.reviewer: - karann - unnir - --- -# Service Index +# Service index The service index is a JSON document that is the entry point for a NuGet package source and allows a client implementation to discover the package source's capabilities. The service index is a JSON object with two required @@ -33,6 +26,7 @@ properties: `version` (the schema version of the service index) and `resources` package source). nuget.org's service index is located here: + ``` https://api.nuget.org/v3/index.json ``` diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index ba4692f2c..b29c4cb9a 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -1,6 +1,4 @@ --- -# required metadata - title: Configuring the behavior of NuGet | Microsoft Docs author: kraigb ms.author: kraigb @@ -8,12 +6,7 @@ manager: ghogen ms.date: 10/25/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: c1e34826-d07d-4609-a0fd-123459ae89c5 - -# optional metadata - description: NuGet.Config files control NuGet's behavior both globally and on a per-project basis, and are modified with nuget config command. keywords: NuGet config files, NuGet configuration, NuGet behavior settings, NuGet settings, Nuget.Config, NuGetDefaults.Config, defaults ms.reviewer: diff --git a/docs/Consume-Packages/Dependency-Resolution.md b/docs/Consume-Packages/Dependency-Resolution.md index 8b6b7e233..a02e41361 100644 --- a/docs/Consume-Packages/Dependency-Resolution.md +++ b/docs/Consume-Packages/Dependency-Resolution.md @@ -1,31 +1,17 @@ --- -# required metadata - title: NuGet Package Dependency Resolution | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 8/14/2017 +ms.date: 08/14/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 1d530a72-3486-4a0d-b6fb-017524616f91 - -# optional metadata - description: Details on the process through which a NuGet package's dependencies are resolved and installed in both NuGet 2.x and NuGet 3.x+. keywords: NuGet package dependencies, NuGet versioning, dependency versions, version graph, version resolution, transitive restore -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # How NuGet resolves package dependencies @@ -37,19 +23,19 @@ Those immediate dependencies might then also have dependencies on their own, whi When multiple packages have the same dependency, then the same package ID can appear in the graph multiple times, potentially with different version constraints. However, only one version of a given package can be used in a project, so NuGet must choose which version is be used. The exact process depends on the package reference format being used. In this topic: -- [Dependency resolution with PackageReference and project.json](#dependency-resolution-with-packagereference-and-projectjson) +- [Dependency resolution with PackageReference](#dependency-resolution-with-packagereference) - [Dependency resolution with packages.config](#dependency-resolution-with-packagesconfig) - [Excluding references](#excluding-references), which is necessary when there's a conflict between a dependency specified in one project and an assembly that's produced by another. - [Dependency updates during package install](#dependency-updates-during-package-install) - [Resolving incompatible package errors](#resolving-incompatible-package-errors) -## Dependency resolution with PackageReference and project.json +## Dependency resolution with PackageReference -When installing packages into projects using the PackageReference or `project.json` formats, NuGet adds references to a flat package graph in the appropriate file and resolves conflicts ahead of time. This process is referred to as *transitive restore*. Reinstalling or restoring packages is then a process of downloading the packages listed in the graph, resulting in faster and more predictable builds. You can also take advantage of wildcard (floating) versions, such as 2.8.\*, avoiding expensive and error prone calls to `nuget update` on the client machines and build servers. +When installing packages into projects using the PackageReference format, NuGet adds references to a flat package graph in the appropriate file and resolves conflicts ahead of time. This process is referred to as *transitive restore*. Reinstalling or restoring packages is then a process of downloading the packages listed in the graph, resulting in faster and more predictable builds. You can also take advantage of wildcard (floating) versions, such as 2.8.\*, avoiding expensive and error prone calls to `nuget update` on the client machines and build servers. -When the NuGet restore process runs prior to a build, it resolves dependencies first in memory, then writes the resulting graph to a file called `project.assets.json` in the `obj` folder of a project using PackageReference, or in a file named `project.lock.json` alongside `project.json`. MSBuild then reads this file and translates it into a set of folders where potential references can be found, and then adds them to the project tree in memory. +When the NuGet restore process runs prior to a build, it resolves dependencies first in memory, then writes the resulting graph to a file called `project.assets.json` in the `obj` folder of a project using PackageReference. MSBuild then reads this file and translates it into a set of folders where potential references can be found, and then adds them to the project tree in memory. -The lock file is temporary and should not be added to source control. It's listed by default in both `.gitignore` and `.tfignore`. See [Packages and source control](Packages-and-Source-Control.md). +The lock file is temporary and should not be added to source control. It's listed by default in both `.gitignore` and `.tfignore`. See [Packages and source control](packages-and-source-control.md). ### Dependency resolution rules @@ -124,16 +110,15 @@ With `packages.config`, a project's dependencies are written to `packages.config With `packages.config`, NuGet attempts to resolve dependency conflicts during the installation of each individual package. That is, if Package A is being installed and depends on Package B, and Package B is already listed in `packages.config` as a dependency of something else, NuGet compares the versions of Package B being requested and attempts to find a version that satisfies all version constraints. Specifically, NuGet selects the lower *major.minor* version that satisfies dependencies. -By default, NuGet 2.7 and earlier resolves the highest *patch* version (using the *major.minor.patch.build* convention). [NuGet 2.8 and higher](../release-notes/nuget-2.8.md#patch-resolution-for-dependencies) changes this behavior to look for the lowest patch version by default. You can control this setting through the `DependencyVersion` attribute in `Nuget.Config` and the `-DependencyVersion` switch on the command line. +By default, NuGet 2.8 looks for the lowest patch version (see [NuGet 2.8 release notes](../release-notes/nuget-2.8.md#patch-resolution-for-dependencies)). You can control this setting through the `DependencyVersion` attribute in `Nuget.Config` and the `-DependencyVersion` switch on the command line. The `packages.config` process for resolving dependencies gets complicated for larger dependency graphs. Each new package installation requires a traversal of the whole graph and raises the chance for version conflicts. When a conflict occurs, installation is stopped, leaving the project in an indeterminate state, especially with potential modifications to the project file itself. This is not an issue when using other package reference formats. - ## Managing dependency assets -When using the `project.json` or PackageReference formats, you can control which assets from dependencies flow into the top-level project. For details, see [project.json](../Schema/project-json.md) and [Package references in project files](Package-References-in-Project-Files.md#controlling-dependency-assets). +When using the PackageReference format, you can control which assets from dependencies flow into the top-level project. For details, see [PackageReference](package-references-in-project-files.md#controlling-dependency-assets). -When the top-level project is itself a package, you also have control over this flow by using the `include` and `exclude` attributes with dependencies listed in the `.nuspec` file. See [.nuspec Reference - Dependencies](../Schema/nuspec.md#dependencies). +When the top-level project is itself a package, you also have control over this flow by using the `include` and `exclude` attributes with dependencies listed in the `.nuspec` file. See [.nuspec Reference - Dependencies](../schema/nuspec.md#dependencies). ## Excluding references @@ -149,28 +134,9 @@ To resolve this, you must directly reference the `C.dll` you want (or use anothe - `packages.config`: remove the reference to PackageC from the `.csproj` file so that it references only the version of `C.dll` that you want. -- `project.json`: add `"exclude" : "all"` in the dependency for PackageC: - - ```json - { - "dependencies": { - "PackageC": { - "version": "1.0.0", - "exclude": "all" - } - } - } - ``` - ## Dependency updates during package install -With NuGet 2.4.x and earlier, when a package is installed whose dependency already exists in the project, the dependency is updated to the latest version that satisfies the version constraints, even if the existing version also satisfies those constraints. - -For example, consider package A that depends on package B and specifies 1.0 for the version number. The source repository contains both versions 1.0, 1.1, and 1.2 of package B. If A is installed in a project that already contains B version 1.0, then B is updated to version 1.2. - -With NuGet 2.5 and later, if a dependency version is already satisfied, the dependency isn't updated during other package installations. - -In the same example above, installing package A into a project with NuGet 2.5 and later leaves package B 1.0 in the project, as it already satisfies the version constraint. However, if package A had requests version 1.1 or higher of B, then B 1.2 would be installed. +If a dependency version is already satisfied, the dependency isn't updated during other package installations. For example, consider package A that depends on package B and specifies 1.0 for the version number. The source repository contains versions 1.0, 1.1, and 1.2 of package B. If A is installed in a project that already contains B version 1.0, then B 1.0 remains in use because it satisfies the version constraint. However, if package A had requests version 1.1 or higher of B, then B 1.2 would be installed. ## Resolving incompatible package errors @@ -198,4 +164,4 @@ To resolve incompatibilities, do one of the following: - Retarget your project to a framework that is supported by the packages you want to use. - Contact the author of the packages and work with them to add support for your chosen framework. Each package listing page on [nuget.org](https://www.nuget.org/) has a **Contact Owners** link for this purpose. -- **Not recommended**: as a temporary solution while you work with the package author, projects targeting `netcore`, `netstandard`, and `netcoreapp` can denote other frameworks as being compatible, thereby allowing packages targeting those other frameworks to be used. See [project.json imports](../Schema/project-json.md#imports) and [MSBuild restore target PackageTargetFallback](../Schema/msbuild-targets.md#packagetargetfallback). This can cause unexpected behaviors, so again, it's best to resolve package incompatibilities by working with the package author on an update. + diff --git a/docs/Consume-Packages/Finding-and-Choosing-Packages.md b/docs/Consume-Packages/Finding-and-Choosing-Packages.md index 1f9b69ffe..8b2dd3630 100644 --- a/docs/Consume-Packages/Finding-and-Choosing-Packages.md +++ b/docs/Consume-Packages/Finding-and-Choosing-Packages.md @@ -1,5 +1,5 @@ --- -title: Finding and choosing NuGet Packages | Microsoft Docs +title: Finding and Choosing NuGet Packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen @@ -13,7 +13,6 @@ keywords: NuGet package consumption, NuGet package discovery, best NuGet package ms.reviewer: - karann-msft - unniravindranathan - --- # Finding and evaluating NuGet packages for your project diff --git a/docs/Consume-Packages/Managing-the-NuGet-Cache.md b/docs/Consume-Packages/Managing-the-NuGet-Cache.md index 2b5437b07..bdd36dde9 100644 --- a/docs/Consume-Packages/Managing-the-NuGet-Cache.md +++ b/docs/Consume-Packages/Managing-the-NuGet-Cache.md @@ -1,6 +1,4 @@ --- -# required metadata - title: How to manage package caching in NuGet | Microsoft Docs author: kraigb ms.author: kraigb @@ -8,24 +6,12 @@ manager: ghogen ms.date: 7/26/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 3932217d-780d-4bd1-ad15-767acd3e8870 - -# optional metadata - description: How to manage the different NuGet package caches that exist on a machine, which are used when installing or restoring packages. keywords: NuGet package cache, package caching, NuGet caches, managing caches, local NuGet cache, global NuGet cache, NuGet locals command, clearing a cache -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Managing the NuGet cache @@ -34,7 +20,7 @@ NuGet manages several local caches to avoid downloading packages that are alread Cache locations are available using the [locals command](../tools/cli-ref-locals.md): -``` +```cli nuget locals all -list ``` @@ -47,7 +33,7 @@ Typical output is as follows: 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: -``` +```cli nuget locals http-cache -clear #Clear the 3.x+ cache nuget locals packages-cache -clear #Clear the 2.x cache nuget locals global-packages -clear #Clear the global packages folder diff --git a/docs/Consume-Packages/Overview-and-Workflow.md b/docs/Consume-Packages/Overview-and-Workflow.md index 45f217ba2..9b5aa4868 100644 --- a/docs/Consume-Packages/Overview-and-Workflow.md +++ b/docs/Consume-Packages/Overview-and-Workflow.md @@ -7,7 +7,6 @@ ms.date: 06/06/2017 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: 3c60f920-457d-4f43-9efe-210c514e5242 description: An overview of the process of consuming NuGet packages in a project, with links to other specific parts of the process. keywords: NuGet package consumption, NuGet consumption overview, NuGet consumption workflow, package consumption workflow, package consumption overview ms.reviewer: @@ -23,7 +22,7 @@ Between nuget.org and private package galleries that your organization might est \* _Except with `nuget install` from the command-line, in which case it's necessary to edit the configuration files by hand. See the [install command reference](../tools/cli-ref-install.md)._ -NuGet remembers the identity and version number of each installed package, recording it in either `packages.config`, the project file, or a `project.json` file in your project root, depending on project type and your version of NuGet. With NuGet 4.0+, [storing dependencies in the project file](../consume-packages/package-references-in-project-files.md) is the default (except for UWP projects targeting Windows 10 RS1). In any case, you can look in the appropriate file at any time to see the full list of dependencies for your project. +NuGet remembers the identity and version number of each installed package, recording it in either `packages.config` or the project file, depending on project type and your version of NuGet. With NuGet 4.0+, [storing dependencies in the project file, or PackageReference](../consume-packages/package-references-in-project-files.md) is generally the default, although this is configurable in Visual Studio through the [Package Manager UI options](../tools/package-manager-ui.md). In any case, you can look in the appropriate file at any time to see the full list of dependencies for your project. > [!Tip] > It's prudent to always check the license for each package you intend to use in your software. On nuget.org, you'll find a **License Info** link on the right side of each package's description page. If a package does not specify license terms, contact the package owner directly using the **Contact owners** link on the package page. Microsoft does not license any intellectual property to you from third party package providers and is not responsible for information provided by third parties. @@ -36,7 +35,7 @@ When adding project code to a source repository, you typically don't include NuG ![Flow of restoring NuGet packages by cloning a repository and using either a restore command](media/Overview-02-RestoreFlow.png) -[Package Restore](../consume-packages/package-restore.md) uses the information in the project file, `packages.config`, `project.json` to reinstall all dependencies. Note that there are differences in the process involved, as described in [Dependency Resolution](../consume-packages/dependency-resolution.md). +[Package Restore](../consume-packages/package-restore.md) uses the information in the project file or `packages.config` to reinstall all dependencies. Note that there are differences in the process involved, as described in [Dependency Resolution](../consume-packages/dependency-resolution.md). Occasionally it's necessary to reinstall packages that are already included in a project, which may also reinstall dependencies. This is easy to do using the `reinstall` command via the NuGet command line or the NuGet Package Manager Console. For details, see [Reinstalling and Updating Packages](../consume-packages/reinstalling-and-updating-packages.md). diff --git a/docs/Consume-Packages/Package-References-in-Project-Files.md b/docs/Consume-Packages/Package-References-in-Project-Files.md index 5a2899b64..3fdd842dc 100644 --- a/docs/Consume-Packages/Package-References-in-Project-Files.md +++ b/docs/Consume-Packages/Package-References-in-Project-Files.md @@ -1,40 +1,27 @@ --- -# required metadata - -title: NuGet PackageReference in Visual Studio Project Files | Microsoft Docs +title: NuGet PackageReference format (package references in project files) | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/17/2017 +ms.date: 07/17/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 5a554e9d-1266-48c2-92e8-6dd00b1d6810 - -# optional metadata - -description: Details on NuGet PackageReference in project files as supported by NuGet 4.0+ and VS2017 -keywords: NuGet package dependencies, package references, project files, PackageReference, packages.config, project.json, VS2017, Visual Studio 2017, NuGet 4 -#ROBOTS: -#audience: -#ms.devlang: +description: Details on NuGet PackageReference in project files as supported by NuGet 4.0+ and VS2017 and .NET Core 2.0 +keywords: NuGet package dependencies, package references, project files, PackageReference, packages.config, VS2017, Visual Studio 2017, NuGet 4, .NET Core 2.0 ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # Package references (PackageReference) in project files -Package references, using the `PackageReference` node, allow you to manage NuGet dependencies directly within project files, rather than needing a separate `packages.config` or `project.json` file. This method doesn't affect other aspects of NuGet; for example, settings in `NuGet.Config` files (including package sources) are still applied as explained in [Configuring NuGet Behavior](Configuring-NuGet-Behavior.md). +Package references, using the `PackageReference` node, allow you to manage NuGet dependencies directly within project files, rather than needing a separate `packages.config` file. This method doesn't affect other aspects of NuGet; for example, settings in `NuGet.Config` files (including package sources) are still applied as explained in [Configuring NuGet Behavior](Configuring-NuGet-Behavior.md). > [!Important] > At present, package references are supported in Visual Studio 2017 only, for .NET Core projects, .NET Standard projects, and UWP projects targeting Windows 10 Build 15063 (Creators Update). -The `PackageReference` approach allows you to use MSBuild conditions to choose package references per target framework, configuration, platform, or other groupings. It also allows for fine-grained control over dependencies and content flow. In terms of behavior and [dependency resolution](Dependency-Resolution.md), it's the same as using `project.json`. +The `PackageReference` approach allows you to use MSBuild conditions to choose package references per target framework, configuration, platform, or other groupings. It also allows for fine-grained control over dependencies and content flow. For more details on the integration of MSBuild with package references in project files, see [NuGet pack and restore as MSBuild targets](../schema/msbuild-targets.md). @@ -45,14 +32,14 @@ Add a dependency in your project file using the following syntax: ```xml - + ``` ## Controlling dependency version -The convention for specifying the version of a package is the same as when using `packages.config` or `project.json`: +The convention for specifying the version of a package is the same as when using `packages.config`: ```xml @@ -98,10 +85,9 @@ 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 | +| 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: | Value | Description | @@ -142,7 +128,7 @@ For example, say you're targeting `netstandard1.4` as well as `net452` but have ```xml - + ``` diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/Consume-Packages/Package-Restore.md index db703e1a4..5d8d64bb8 100644 --- a/docs/Consume-Packages/Package-Restore.md +++ b/docs/Consume-Packages/Package-Restore.md @@ -1,83 +1,52 @@ --- -# required metadata - title: NuGet Package Restore | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 01/18/2018 ms.topic: article ms.prod: nuget ms.technology: null ms.assetid: a7bf21da-86ae-4c2d-8750-04ff53f41967 - -# optional metadata - description: A description of how NuGet restores packages upon which a project depends, including how to disable restore and constrain versions. keywords: NuGet package restore, NuGet package installation, installing package, restoring packages, dependency versions, disabling automatic restore, constraining package versions ms.reviewer: - karann-msft - unniravindranathan - --- # Package Restore -To promote a cleaner development environment and to reduce repository size, NuGet **Package Restore** installs all referenced packages before a project is built. This widely-used feature ensures that all dependencies are available in a project without requiring those packages to be stored in source control (see [Packages and Source Control](../consume-packages/packages-and-source-control.md) on how to configure your repository to exclude package binaries). - -In this topic: -- [Quick guide to package restore](#quick-guide-to-package-restore) -- [Package restore overview](#package-restore-overview) -- [Enabling and disabling package restore](#enabling-and-disabling-package-restore) -- [Constraining package versions with restore](#constraining-package-versions-with-restore) -- [Command-line restore](#command-line-restore), for all versions of NuGet -- [Automatic restore in Visual Studio](#automatic-restore-in-visual-studio), for NuGet 2.7 and later. -- [MSBuild-integrated restore in Visual Studio](#msbuild-integrated-restore), for NuGet 2.6 and earlier. -- [Package restore with Team Foundation Build](#package-restore-with-team-foundation-build) - -Restore behavior does vary by version; to check your NuGet version, simply run `nuget.exe` on the command line and look at the first line of output. +To promote a cleaner development environment and to reduce repository size, NuGet **Package Restore** installs all referenced packages before a project is built. This widely-used feature—available in Visual Studio, .NET Core 2.0+, and xbuild on Mono—ensures that all dependencies are available in a project without requiring those packages to be stored in source control (see [Packages and Source Control](../consume-packages/packages-and-source-control.md) on how to configure your repository to exclude package binaries). You can also manually restore packages at any time. For additional details on package restore on build servers, see [Package restore with TFBuild](../consume-packages/team-foundation-build.md). -> [!Note] -> Projects configured for package restore also work with xbuild on Mono. +## Package restore overview -## Quick guide to package restore +Restoring packages first installs the direct dependencies of a project as needed, then installing any dependencies of those packages throughout the entire dependency graph. -[!INCLUDE[package-restore](../includes/package-restore.md)] +If a package is not already installed, NuGet first attempts to retrieve it from the [cache](../consume-packages/managing-the-nuget-cache.md). If the package is not in the cache, NuGet then attempts to download the package from the enabled sources as listed in **Tools > Options > NuGet Package Manager > Package Sources**, in the order that the sources appear. Downloaded packages are stored in the cache. > [!Note] -> 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," turn on automatic restore by following the instructions under [Enabling and disabling package restore](#enabling-and-disabling-package-restore). +> NuGet does not indicate a failure to find the package until all the sources have been checked, at which time it reports the failure only for the last source in the list. By implication such an error also means that the package wasn't present on any of the other sources either, even though errors were not shown for those sources individually. -## Package restore overview +Package restore is triggered in the following ways: + +- **Package Manager UI (Visual Studio on Windows)**: Packages are restored automatically when creating a project from a template and when building a project (subject to the option described in [Enabling and disabling package restore](#enabling-and-disabling-package-restore)). In NuGet 4.0+, restore also happens automatically when changes are made to a .NET Core SDK-based project. -First, package references are maintained in one of the following package management formats, depending on project type and NuGet version. (Note that NuGet 4 and MSBuild 15.1 are installed with Visual Studio 2017.) + To restore manually, right-click the solution in Solution Explorer and select **Restore NuGet Packages**. If one or more individual packages are still not installed properly (meaning that Solution Explorer shows an error icon), then use the Package Manager UI to uninstall and reinstall the affected packages. See [Reinstalling and updating packages](../Consume-Packages/Reinstalling-and-Updating-Packages.md) -| Method | NuGet Version | Description | -| --- | --- | --- | -| `packages.config` | 2.x+ | Lists the complete deep set of dependencies. Packages added to `packages.config` must also be added to the project file, and Targets and Props must also be added to the project file. This is the baseline method for all versions of NuGet, but has slower performance compared with the other options. (See [packages.config schema](../schema/packages-config.md).) | -| `project.json` | 3.x+ | Used only by default with UWP projects, but projects can be converted from `packages.config`. `project.json` lists only top-level dependencies. References, Targets, and Props are added dynamically to the project during build, resulting in better performance compared with `packages.config`. (See [project.json schema](../schema/project-json.md).)| -| PackageReference | 4.x+ | Lists dependencies directly in the project file in the `` node, alongside `` and ``. Works similarly to `project.json`; see [Package references in project files](../Consume-Packages/Package-References-in-Project-Files.md). | + 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," turn on automatic restore by following the instructions under [Enabling and disabling package restore](#enabling-and-disabling-package-restore). -Second, you start a restore using the reference list in a variety of ways: +- **NuGet CLI**: use the [nuget restore](../tools/cli-ref-restore.md) command, which restores packages listed in the project file (see [PackageReference](../Consume-Packages/Package-References-in-Project-Files.md)) or in a [packages.config](../schema/packages-config.md) file. You can also specify a solution file. -From the command line or [Package Manager Console](../tools/Package-Manager-Console.md): +- **dotnet CLI**: use the [dotnet restore](/dotnet/core/tools/dotnet-restore.md?tabs=netcore2x) command, which restores packages listed in the project file (see [PackageReference](../Consume-Packages/Package-References-in-Project-Files.md)). With .NET Core 2.0 and later, restore is done automatically with `dotnet build` and `dotnet run`. -| Command | Applicable scenarios | -| --- | --- | -| `nuget restore` | All versions of NuGet and all reference types. See [Command-line restore](#command-line-restore) below. | -| `dotnet restore` | Same as `nuget restore` for .NET Core projects. See [dotnet restore](/dotnet/articles/core/tools/dotnet-restore). | -| `msbuild /t:restore` | Nuget 4.x+ and MSBuild 15.1+ with [package references in project files](../Consume-Packages/Package-References-in-Project-Files.md) only. `nuget restore` and `dotnet restore` both use this command for applicable projects. See [NuGet pack and restore as MSBuild targets- restore target](../schema/msbuild-targets.md#restore-target).| +- **MSBuild**: use the [msbuild /t:restore](../schema/msbuild-targets.md#restore-target) command, which restores packages packages listed in the project file (see [PackageReference](../Consume-Packages/Package-References-in-Project-Files.md)). Available only in NuGet 4.x+ and MSBuild 15.1+, which are included with Visual Studio 2017. `nuget restore` and `dotnet restore` both use this command for applicable projects. -Visual Studio itself also restores packages at different times: +- **Visual Studio Team Services**: When creating a build definition on Team Services, include the [NuGet restore](/vsts/build-release/tasks/package/nuget#restore-nuget-packages) or [.NET Core Restore](/vsts/build-release/tasks/build/dotnet-core#restore-nuget-packages) task in the definition before any build task. This task is included by default in a number of build templates. -| Type | When restore happens | -| --- | --- | -| Template restore | During creation of a new project, as some templates depend on external packages. | -| Build restore | As the first step of a build. | -| Solution restore | When user right-clicks a solution and selects **Restore NuGet Packages**. | -| Restore on project change | *(NuGet 4.x only)* When a .NET Core SDK-based project is used, including when project state changes. | +- **Team Foundation Server**: TFS 2013 and later automatically restores packages during build, provided that you're using a Team Build Template for TFS 2013 or later. For earlier version of TFS, you can include a build step to invoke one of the command-line restore options above. You can optionally migrate the build template to TFS 2013. For more information, see the [Walkthrough of package restore with Team Foundation Build](../consume-packages/team-foundation-build.md). ## Enabling and disabling package restore @@ -99,10 +68,9 @@ Package restore is primarily enabled through **Tools > Options > NuGet Package M
    > [!Note] > The `packageRestore/enabled` setting can be overridden globally by setting an environment variable called **EnableNuGetPackageRestore** with a value of TRUE or FALSE before launching Visual Studio or starting a build. - -- **Automatically check for missing packages during build in Visual Studio**: controls automatic restore for NuGet 2.7 and later by changing the `packageRestore/automatic` setting in the `%AppData%\NuGet\NuGet.Config` file as shown below. - +- **Automatically check for missing packages during build in Visual Studio**: controls automatic restore by changing the `packageRestore/automatic` setting in the `%AppData%\NuGet\NuGet.Config` file as shown below. + ```xml ... @@ -117,74 +85,26 @@ Package restore is primarily enabled through **Tools > Options > NuGet Package M For reference, see the [NuGet config file - packageRestore section](../Schema/nuget-config-file.md#packagerestore-section). -In some cases, a developer or company might want to enable or disable package restore on a machine by default for all users. This can be done by adding the same settings above to the global NuGet configuration file located in `%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}]]]`. Individual users can then selectively enable restore as needed on a project level. See [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md#how-settings-are-applied) for exact details on how NuGet prioritizes multiple config files. +In some cases, a developer or company might want to enable or disable package restore for all users on a computer. This is done by adding the same settings above to the global NuGet configuration file located in `%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}]]]`. Individual users can then selectively enable restore as needed on a project level. See [Configuring NuGet behavior](../consume-packages/configuring-nuget-behavior.md#how-settings-are-applied) for exact details on how NuGet prioritizes multiple config files. ## Constraining package versions with restore -When NuGet restores packages through any method, it will honor any constraints specified in `packages.config`, `project.json`, or the project file: +When restoring packages through any method, NuGet honors any constraints specified in `packages.config` or the project file: -- `packages.config`: Specify a version range in the `allowedVersion` property of the dependency. See [Reinstalling and Updating Packages](../consume-packages/reinstalling-and-updating-packages.md#constraining-upgrade-versions). For example: +- `packages.config`: Specify a version range in the `allowedVersion` property of the dependency. See [Reinstalling and updating packages](../consume-packages/reinstalling-and-updating-packages.md#constraining-upgrade-versions). For example: ```xml ``` -- `project.json`: Specify a version range directly with the dependency's version number. For example: +- PackageReference: Specify a version range directly with the dependency's version number. For example: - ```json - "Newtonsoft.json": "[6, 7)" - ``` - -- Package references in project files: Specify a version range directly with the dependency's version number. For example: - ```xml - + ``` In all cases, use the notation described in [Package versioning](../reference/package-versioning.md). -## Command-line restore - -For NuGet 2.7 and above, use the [Restore](../tools/cli-ref-restore.md) command to restore all packages in a solution (whether it uses `packages.config`, `project.json`, or package references in project files). For a given project folder such as `c:\proj\app`, the common variations below each restore the packages: - -``` -c:\proj\app\> nuget restore -c:\proj\app\> nuget.exe restore app.sln -c:\proj\> nuget restore app -``` - -For NuGet 4.0+ and MSBuild 15.1+, you can also use `MSBuild /t:restore` as described on [NuGet pack and restore as MSBuild targets](../schema/msbuild-targets.md). - -## Build-time restore in Visual Studio - -Visual Studio automatically restores missing packages by default at the beginning of a build. This behavior can be changed by clearing **Tools > Options > NuGet Package Manager > General > Automatically check for missing packages during build in Visual Studio**. - -When enabled, automatic restore works as follows: - -1. When a build begins, Visual Studio instructs NuGet to restore packages. -1. NuGet recursively looks for all `packages.config` files in the solution, looks for `project.json`, or looks in the project file. -1. For each packages listed in the reference files, NuGet checks if it already exists in the solution (the `packages` folder, `project.lock.json`, or `project.assets.json` depending on whether the project is using `packages.config`, `project.json`, or package references in project files). -1. If the package is not found, NuGet attempts to retrieve the package from its cache first (see [Managing the NuGet cache](../consume-packages/managing-the-nuget-cache.md). If the package is not in the cache, NuGet attempts to download the package from the enabled sources as listed in **Tools > Options > NuGet Package Manager > Package Sources**, in the order that the sources appear. In this case, NuGet does not indicate a failure to find the package until all the sources have been checked, at which time it reports the failure only for the last source in the list. By implication such an error also means that the package wasn't present on any of the other sources either, even though errors were not shown for those sources individually. -1. If the download is successful, NuGet caches the package and installs it into the solution (again, into either the `packages` folder, `project.lock.json`, or `project.assets.json`); otherwise NuGet fails and the build fails. - -During this process, you see a progress dialog with the option to cancel package restore. - -## Package Restore with Team Foundation Build - -Package restore is commonly used when building projects on build servers, as with Team Foundation Server (TFS) and Visual Studio Team Services (as well as other build systems, which are not covered here). - -### Visual Studio Team Services - -When creating a build definition on Team Services, simply include the Restore NuGet Packages task in the definition before any build task. This task is included by default in a number of build templates. - -![NuGet package restore task in a Visual Studio Team Service build definition](media/Restore-02-VSTSBuild.png) - -### Team Foundation Server - -With TFS 2013 and later, packages are automatically restored by default during build, provided that you're using a Team Build Template for Team Foundation Server 2013 or later. - -If you're using a previous version of build templates (such as in a project that's been migrated from earlier versions of TFS), you'll need to also migrate those build templates to TFS 2013. This essentially means recreating the custom parts of the Build Templates using the appropriate template for your source control (TFVC or Git). - -For earlier version of TFS, you can simply include a build step to invoke [command-line restore](#command-line-restore) as described earlier. +## Troubleshooting -For more details see then [Walkthrough of Package Restore with Team Foundation Build](../consume-packages/team-foundation-build.md). +See [Troubleshooting package restore](Package-restore-troubleshooting.md). \ No newline at end of file diff --git a/docs/Consume-Packages/Package-restore-troubleshooting.md b/docs/Consume-Packages/Package-restore-troubleshooting.md index ad527eb27..ea4517539 100644 --- a/docs/Consume-Packages/Package-restore-troubleshooting.md +++ b/docs/Consume-Packages/Package-restore-troubleshooting.md @@ -1,6 +1,4 @@ --- -# required metadata - title: Troubleshooting NuGet Package Restore in Visual Studio | Microsoft Docs author: kraigb ms.author: kraigb @@ -9,16 +7,11 @@ ms.date: 10/24/2017 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: b70326a0-5bfc-4b7c-881d-7a7d5ebeeed5 - -# optional metadata - description: A description of common NuGet restore errors in Visual Studio and how to troubleshoot them. keywords: NuGet package restore, restoring packages, troubleshooting, troubleshoot ms.reviewer: - karann-msft - unniravindranathan - --- # Troubleshooting package restore errors in Visual Studio @@ -28,12 +21,12 @@ ms.reviewer: By default, building a project in Visual Studio automatically restores NuGet packages referenced in the project. However, builds will fail if package restore is disabled in the **Tools > Options > NuGet Package Manager > Package Restore** settings and the necessary packages are not available on your computer. In these cases you may see the following errors: -``` +```output This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. The missing file is {name}. ``` -``` +```output One or more NuGet packages need to be restored but couldn't be because consent has not been granted. To give consent, open the Visual Studio Options dialog, click on the NuGet Package Manager node and check 'Allow NuGet to download missing packages @@ -44,4 +37,3 @@ during build.' You can also give consent by setting the environment variable To enable package restore, open **Tools > Options > NuGet Package Manager** and select the options for **Allow NuGet to download missing packages** and **Automatically check for missing packages during build in Visual Studio**: ![enable NuGet package restore in Tool/Options](../Consume-Packages/media/restore-01-autorestoreoptions.png) - diff --git a/docs/Consume-Packages/Packages-and-Source-Control.md b/docs/Consume-Packages/Packages-and-Source-Control.md index fa725ae09..a1caa0b95 100644 --- a/docs/Consume-Packages/Packages-and-Source-Control.md +++ b/docs/Consume-Packages/Packages-and-Source-Control.md @@ -1,31 +1,17 @@ --- -# required metadata - title: NuGet Packages and Source Control | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/17/2017 +ms.date: 07/17/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 2c874e6f-99eb-46dd-997f-f67d98d0237e - -# optional metadata - description: Considerations for how to treat NuGet packages within version control and source control systems, and how to omit packages with git and TFVC. keywords: NuGet source control, NuGet version control, NuGet and git, NuGet and TFS, NuGet and TFVC, omitting packages, source control repositories, version control repositories -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Omitting NuGet packages in source control systems @@ -47,7 +33,7 @@ Use the [.gitignore file](https://git-scm.com/docs/gitignore) to avoid including The important parts of the `.gitignore` file are: -``` +```gitignore # Ignore NuGet Packages *.nupkg @@ -94,9 +80,9 @@ To disable source control integration with TFVC for selected files: 1. On TFS 2012 or later, or with Visual Studio Team Services, create a `.tfignore` file as described on [AddFiles to the Server](https://www.visualstudio.com/en-us/docs/tfvc/add-files-server#tfignore). In that file, include the content below to explicitly ignore modifications to the `\packages` folder on the repository level and a few other intermediate files. (You can create the file in Windows Explorer using the name a `.tfignore.` with the trailing dot, but you might need to disable the "Hide known file extensions" option first.): - ``` + ```cli # Ignore NuGet Packages - *.nupkg + *.nupkg # Ignore the NuGet packages folder in the root of the repository. If needed, prefix 'packages' # with additional folder names if it's not in the same folder as .tfignore. diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index ddd638785..2f8c6abc3 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -21,7 +21,7 @@ There are a number of situations, described below under [When to Reinstall a Pac Updating and reinstalling packages is accomplished as follows: -| Method | Update | Reinstall | +| Method | Update | Reinstall | | --- | --- | --- | | Package Manager console (described in [Using Update-Package](#using-update-package)) | `Update-Package` command | `Update-Package -reinstall` command | | Package Manager UI | On the **Updates** tab, select one or more packages and select **Update** | On the **Installed** tab, select a package, record its name, then select **Uninstall**. Switch to the **Browse** tab, search for the package name, select it, then select **Install**). | @@ -81,6 +81,7 @@ By default, `Update-Package` affects all packages in a solution. To limit the ac # Reinstall the package in just MyProject Update-Package -ProjectName MyProject -reinstall ``` + To *update* all packages in a project (or reinstall using `-reinstall`), use `-ProjectName` without specifying any particular package: ```ps @@ -94,7 +95,7 @@ To update all packages in a solution, just use `Update-Package` by itself with n Update-Package ``` -Updating packages in a project or solution using `project.json` or [package references in project files](../Consume-Packages/Package-References-in-Project-Files.md) always updates to the latest version of the package (excluding pre-release packages). Projects that use `packages.config` can, if desired, limit update versions as described below in [Constraining upgrade versions](#constraining-upgrade-versions). +Updating packages in a project or solution using [PackageReference](../Consume-Packages/Package-References-in-Project-Files.md) always updates to the latest version of the package (excluding pre-release packages). Projects that use `packages.config` can, if desired, limit update versions as described below in [Constraining upgrade versions](#constraining-upgrade-versions). For full details on the command, see the [Update-Package](../Tools/ps-ref-update-package.md) reference. @@ -118,4 +119,3 @@ The following may be affected when reinstalling a package: 1. **Reinstalling packages when dependent versions are involved** - As explained above, reinstalling a package does not change versions of any other installed packages that depend on it. It's possible, then, that reinstalling a dependency could break the dependent package. - diff --git a/docs/Consume-Packages/Team-Foundation-Build.md b/docs/Consume-Packages/Team-Foundation-Build.md index 0a25d9cfb..790fe7116 100644 --- a/docs/Consume-Packages/Team-Foundation-Build.md +++ b/docs/Consume-Packages/Team-Foundation-Build.md @@ -1,47 +1,34 @@ --- -# required metadata - title: Walkthrough of NuGet Package Restore with Team Foundation Build | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 01/09/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 3113cccd-35f7-4980-8a6e-fc06556b5064 - -# optional metadata - description: A walkthrough of how NuGet package restore with with Team Foundation Build (both TFS and Visual Studio Team Services). keywords: NuGet package restore, NuGet and TFS, NuGet and VSTS, NuGet build systems, team foundation build, custom MSBuild projects, cloud build, continuous integration -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Setting up package restore with Team Foundation Build -> Applies To: -> - Custom MSBuild projects running on any version of TFS -> - Team Foundation Server 2012 or earlier -> - Custom Team Foundation Build Process Templates migrated to TFS 2013 or later -> - Build Process Templates With Nuget Restore functionality removed -> -> If you're using Visual Studio Team Services or on-premises Team Foundation Server 2013 with its build process templates, Automatic Package Restore happens as part of the build process. - -This section will provide a detailed walkthrough on how to restore packages as part of the [Team Services Build](/vsts/build-release/index) both, for both Git and Team Services Version Control. +This article provides a detailed walkthrough on how to restore packages as part of the [Team Services Build](/vsts/build-release/index) both, for both Git and Team Services Version Control. Although this walkthrough is specific for the scenario of using Visual Studio Team Services, the concepts also apply to other version control and build systems. +Applies To: + +- Custom MSBuild projects running on any version of TFS +- Team Foundation Server 2012 or earlier +- Custom Team Foundation Build Process Templates migrated to TFS 2013 or later +- Build Process Templates With Nuget Restore functionality removed + +If you're using Visual Studio Team Services or Team Foundation Server 2013 with its build process templates, automatic package restore happens as part of the build process. + ## The general approach An advantage of using NuGet is that you can use it to avoid checking in binaries to your version control system. @@ -52,7 +39,7 @@ NuGet has supported [restoring packages](../consume-packages/package-restore.md) The cure to this problem is making sure that packages are restored as the first step in the build process. NuGet 2.7+ makes this easy via a simplified command line: -``` +```cli nuget restore path\to\solution.sln ``` @@ -109,8 +96,7 @@ The source code is under the `src` folder. Although our demo only uses a single ``` - -In order to communicate to the version control that we don’t intent to check-in the **packages** folders, we've also added ignore files for both git (`.gitignore`) as well as TF version control (`.tfignore`). These files describes patterns of files you don't want to check-in. +To communicate to version control that we don’t intent to check-in the **packages** folders, we've also added ignore files for both git (`.gitignore`) as well as TF version control (`.tfignore`). These files describes patterns of files you don't want to check-in. The `.gitignore` file looks as follows: diff --git a/docs/Create-Packages/Creating-Localized-Packages.md b/docs/Create-Packages/Creating-Localized-Packages.md index 90af5c1fa..64be6f306 100644 --- a/docs/Create-Packages/Creating-Localized-Packages.md +++ b/docs/Create-Packages/Creating-Localized-Packages.md @@ -1,31 +1,17 @@ --- -# required metadata - title: How to Create a Localized NuGet Package | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 01/18/2018 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 824c3f45-c6c2-4c82-9d6d-62a19bfdc4a4 - -# optional metadata - description: Details on the two ways to create localized NuGet packages, either by including all assemblies in a single package or publishing separate assemblies. keywords: NuGet package localization, NuGet satellite assemblies, creating localized packages, NuGet localization conventions -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Creating localized NuGet packages @@ -33,7 +19,7 @@ ms.reviewer: There are two ways to create localized versions of a library: 1. Include all localized resources assemblies in a single package. -2. Create separate localized satellite packages (NuGet 1.8 and later), by following a strict set of conventions. +1. Create separate localized satellite packages (NuGet 1.8 and later), by following a strict set of conventions. Both methods have their advantages and disadvantages, as described in the following sections. @@ -89,19 +75,18 @@ With these folders in place, you'll then reference all the files in your `.nuspe One example package that uses this approach is [Microsoft.Data.OData 5.4.0](http://nuget.org/packages/Microsoft.Data.OData/5.4.0). -### Advantages and disadvantages +### Advantages and disadvantages (localized resource assemblies) Bundling all languages in a single package has a few disadvantages: 1. **Shared metadata**: Because a NuGet package can only contain a single `.nuspec` file, you can provide metadata for only a single language. That is, NuGet does not present support localized metadata. -2. **Package size**: Depending on the number of languages you support, the library can become considerably large, which slows installing and restoring the package. -3. **Simultaneous releases**: Bundling localized files into a single package requires that you release all assets in that package simultaneously, rather than being able to release each localization separately. Furthermore, any update to any one localization requires a new version of the entire package. +1. **Package size**: Depending on the number of languages you support, the library can become considerably large, which slows installing and restoring the package. +1. **Simultaneous releases**: Bundling localized files into a single package requires that you release all assets in that package simultaneously, rather than being able to release each localization separately. Furthermore, any update to any one localization requires a new version of the entire package. However, it also has a few benefits: 1. **Simplicity**: Consumers of the package get all supported languages in a single install, rather than having to install each language separately. A single package is also easier to find on nuget.org. -2. **Coupled versions**: Because all of the resource assemblies are in the same package as the primary assembly, they all share the same version number and don't run a risk of getting erroneously decoupled. - +1. **Coupled versions**: Because all of the resource assemblies are in the same package as the primary assembly, they all share the same version number and don't run a risk of getting erroneously decoupled. ## Localized satellite packages @@ -136,11 +121,11 @@ When all of these conventions are met, NuGet will recognize the package as a sat You would create additional satellite assemblies in the same way for each supported language. For an example, examine the set of ASP.NET MVC packages: -* [Microsoft.AspNet.Mvc](http://nuget.org/packages/Microsoft.AspNet.Mvc) (English primary) -* [Microsoft.AspNet.Mvc.de](http://nuget.org/packages/Microsoft.AspNet.Mvc.de) (German) -* [Microsoft.AspNet.Mvc.ja](http://nuget.org/packages/Microsoft.AspNet.Mvc.ja) (Japanese) -* [Microsoft.AspNet.Mvc.zh-Hans](http://nuget.org/packages/Microsoft.AspNet.Mvc.zh-Hans) (Chinese (Simplified)) -* [Microsoft.AspNet.Mvc.zh-Hant](http://nuget.org/packages/Microsoft.AspNet.Mvc.zh-Hant) (Chinese (Traditional)) +- [Microsoft.AspNet.Mvc](http://nuget.org/packages/Microsoft.AspNet.Mvc) (English primary) +- [Microsoft.AspNet.Mvc.de](http://nuget.org/packages/Microsoft.AspNet.Mvc.de) (German) +- [Microsoft.AspNet.Mvc.ja](http://nuget.org/packages/Microsoft.AspNet.Mvc.ja) (Japanese) +- [Microsoft.AspNet.Mvc.zh-Hans](http://nuget.org/packages/Microsoft.AspNet.Mvc.zh-Hans) (Chinese (Simplified)) +- [Microsoft.AspNet.Mvc.zh-Hant](http://nuget.org/packages/Microsoft.AspNet.Mvc.zh-Hant) (Chinese (Traditional)) ### Summary of required conventions @@ -150,16 +135,16 @@ You would create additional satellite assemblies in the same way for each suppor - A satellite package must declare a dependency on an exact version of the primary using the [] notation in its `.nuspec` file. Ranges are not supported. - A satellite package must place files in the `lib\[{framework}\]{language}` folder that exactly matches `{language}` in the filename. -### Advantages and disadvantages +### Advantages and disadvantages (satellite packages) Using satellite packages has a few benefits: 1. **Package size**: The overall footprint of the primary package is minimized, and consumers only incur the costs of each language they want to use. -2. **Separate metadata**: Each satellite package has its own `.nuspec` file and thus its own localized metadata because. This can allow some consumers to find packages more easily by searching nuget.org with localized terms. -3. **Decoupled releases**: Satellite assemblies can be released over time, rather than all at once, allowing you to spread out your localization efforts. +1. **Separate metadata**: Each satellite package has its own `.nuspec` file and thus its own localized metadata because. This can allow some consumers to find packages more easily by searching nuget.org with localized terms. +1. **Decoupled releases**: Satellite assemblies can be released over time, rather than all at once, allowing you to spread out your localization efforts. However, satellite packages have their own set of disadvantages: 1. **Clutter**: Instead of a single package, you have many packages that can lead to cluttered search results on nuget.org and a long list of references in a Visual Studio project. -2. **Strict conventions**. Satellite packages must follow the conventions exactly or the localized versions won't be picked up properly. -3. **Versioning**: Each satellite package must have an exact version dependency on the primary package. This means that updating the primary package may require updating all satellite packages as well, even if the resources didn't change. +1. **Strict conventions**. Satellite packages must follow the conventions exactly or the localized versions won't be picked up properly. +1. **Versioning**: Each satellite package must have an exact version dependency on the primary package. This means that updating the primary package may require updating all satellite packages as well, even if the resources didn't change. diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index d5dd25bf0..f1bf2a901 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -17,32 +17,14 @@ ms.reviewer: # Creating NuGet packages -No matter what your package does or what code it contains, you use `nuget.exe` to package that functionality into a component that can be shared with and used by any number of other developers. To install `nuget.exe`, see [Install NuGet CLI](../guides/Install-NuGet.md#nuget-cli). Note that Visual Studio does not automatically include `nuget.exe`. +No matter what your package does or what code it contains, you use `nuget.exe` to package that functionality into a component that can be shared with and used by any number of other developers. To install `nuget.exe`, see [Install NuGet CLI](../guides/install-nuget.md#nuget-cli). Note that Visual Studio does not automatically include `nuget.exe`. -Technically speaking, a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension and whose contents match certain conventions. This topic describes the detailed process of creating a package that meets those conventions. For a focused walkthrough, refer to [Create and Publish a Package Quickstart](../quickstart/create-and-publish-a-package.md). +Technically speaking, a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension and whose contents match certain conventions. This topic describes the detailed process of creating a package that meets those conventions. For a focused walkthrough, refer to [Quickstart: create and publish a package](../quickstart/create-and-publish-a-package.md). -Packaging begins with the compiled code (assemblies), symbols, and/or other files that you want to deliver as a package (see [Overview and workflow](Overview-and-Workflow.md)). This process is independent from compiling or otherwise generating the files that go into the package, although you can use draw from information in a project file to keep the compiled assemblines and packages in sync. - -In this topic: - -- [Deciding which assemblies to package](#deciding-which-assemblies-to-package) -- [The role and structure of the `.nuspec` file](#the-role-and-structure-of-the-nuspec-file) -- [Creating the `.nuspec` file](#creating-the-nuspec-file) from: - - [A convention-based working directory](#from-a-convention-based-working-directory) - - [An assembly DLL](#from-an-assembly-dll) - - [A Visual Studio project](#from-a-visual-studio-project) - - [New file with default values](#new-file-with-default-values) -- [Choosing a unique package identifier and setting the version number](#choosing-a-unique-package-identifier-and-setting-the-version-number) -- [Setting a package type](#setting-a-package-type) (NuGet 3.5 and later) -- [Adding a readme and other files](#adding-a-readme-and-other-files) -- [Including MSBuild props and targets in a package](#including-msbuild-props-and-targets-in-a-package) -- [Authoring packages that contain COM interop assemblies](#authoring-packages-with-com-interop-assemblies) -- [Running nuget pack to generate the .nupkg file](#running-nuget-pack-to-generate-the-nupkg-file) - -After these core steps, you can incorporate a variety of other features as described elsewhere in this documentation. See [Next steps](#next-steps) below. +Packaging begins with the compiled code (assemblies), symbols, and/or other files that you want to deliver as a package (see [Overview and workflow](overview-and-workflow.md)). This process is independent from compiling or otherwise generating the files that go into the package, although you can use draw from information in a project file to keep the compiled assemblies and packages in sync. > [!Note] -> This topic applies to project types other than .NET Core projects using Visual Studio 2017 and NuGet 4.0+. In those .NET Core projects, NuGet uses information in the `.csproj` file directly. For details, see [Create .NET Standard Packages with Visual Studio 2017](../guides/create-net-standard-packages-vs2017.md) and [NuGet pack and restore as MSBuild targets](../schema/msbuild-targets.md). +> This topic applies to project types other than .NET Core projects using Visual Studio 2017 and NuGet 4.0+. In those .NET Core projects, NuGet uses information in the project file directly. For details, see [Create .NET Standard Packages with Visual Studio 2017](../guides/create-net-standard-packages-vs2017.md) and [NuGet pack and restore as MSBuild targets](../schema/msbuild-targets.md). ## Deciding which assemblies to package @@ -51,7 +33,8 @@ Most general-purpose packages contain one or more assemblies that other develope - In general, it's best to have one assembly per NuGet package, provided that each assembly is independently useful. For example, if you have a `Utilities.dll` that depends on `Parser.dll`, and `Parser.dll` is useful on its own, then create one package for each. Doing so allows developers to use `Parser.dll` independently of `Utilities.dll`. - If your library is composed of multiple assemblies that aren't independently useful, then it's fine to combine them into one package. Using the previous example, if `Parser.dll` contains code that's used only by `Utilities.dll`, then it's fine to keep `Parser.dll` in the same package. - - Similarly, if `Utilities.dll` depends on `Utilities.resources.dll`, where again the latter is not useful on its own, then put both in the same package. + +- Similarly, if `Utilities.dll` depends on `Utilities.resources.dll`, where again the latter is not useful on its own, then put both in the same package. Resources are, in fact, a special case. When a package is installed into a project, NuGet automatically adds assembly references to the package's DLLs, *excluding* those that are named `.resources.dll` because they are assumed to be localized satellite assemblies (see [Creating localized packages](creating-localized-packages.md)). For this reason, avoid using `.resources.dll` for files that otherwise contain essential package code. @@ -142,11 +125,11 @@ The following is a typical (but fictitious) `.nuspec` file, with comments descri
    ``` -For details on declaring dependencies and specifying version numbers, see [Package versioning](../reference/package-versioning.md). It is also possible to surface assets from dependencies directly in the package by using the `include` and `exclude` attributes on the `dependency` element. See [.nuspec Reference - Dependencies](../Schema/nuspec.md#dependencies). +For details on declaring dependencies and specifying version numbers, see [Package versioning](../reference/package-versioning.md). It is also possible to surface assets from dependencies directly in the package by using the `include` and `exclude` attributes on the `dependency` element. See [.nuspec Reference - Dependencies](../schema/nuspec.md#dependencies). Because the manifest is included in the package created from it, you can find any number of additional examples by examining existing packages. A good source is the global package cache on your machine, the location of which is returned by the following command: -``` +```cli nuget locals -list global-packages ``` @@ -194,7 +177,7 @@ Because your folder structure can contain any number of assemblies for any numbe In any case, once you have the desired folder structure in place, run the following command in that folder to create the `.nuspec` file: -``` +```cli nuget spec ``` @@ -204,7 +187,7 @@ Again, the generated `.nuspec` contains no explicit references to files in the f In the simple case of creating a package from an assembly, you can generate a `.nuspec` file from the metadata in the assembly using the following command: -``` +```cli nuget spec .dll ``` @@ -214,7 +197,7 @@ Using this form replaces a few placeholders in the manifest with specific values Creating a `.nuspec` from a `.csproj` or `.vbproj` file is convenient because other packages that have been installed into those project are automatically referenced as dependencies. Simply use the following command in the same folder as the project file: -``` +```cli # Use in a folder containing a project file .csproj or .vbproj nuget spec ``` @@ -237,7 +220,7 @@ Note that there are several additional packaging options available when working *NuGet 2.x only. Not available in NuGet 3.0+.* -NuGet 2.x supported the notion of a solution-level package that installs tools or additional commands for the Package Manager Console (the contents of the `tools` folder), but does not add references, content, or build customizations to any projects in the solution. Such packages contain no files in its direct `lib`, `content`, or `build` folders, and none of its dependencies have files in their respective `lib`, `content`, or `build` folders. +NuGet 2.x supported the notion of a solution-level package that installs tools or additional commands for the Package Manager Console (the contents of the `tools` folder), but does not add references, content, or build customizations to any projects in the solution. Such packages contain no files in its direct `lib`, `content`, or `build` folders, and none of its dependencies have files in their respective `lib`, `content`, or `build` folders. NuGet tracks installed solution-level packages in a `packages.config` file in the `.nuget` folder, rather than the project's `packages.config` file. @@ -245,7 +228,7 @@ NuGet tracks installed solution-level packages in a `packages.config` file in th The following command creates a default manifest with placeholders, which ensures you start with the proper file structure: -``` +```cli nuget spec [] ``` @@ -282,11 +265,9 @@ With NuGet 3.5+, packages can be marked with a specific *package type* to indica - `DotnetCliTool` type packages are extensions to the [.NET CLI](/dotnet/articles/core/tools/index) and are invoked from the command line. Such packages can be installed only in .NET Core projects and have no effect on restore operations. More details about these per-project extensions are available in the [.NET Core extensibility](/dotnet/articles/core/tools/extensibility#per-project-based-extensibility) documentation. - When a DotnetCliTool package is installed, Visual Studio places the package in the `project.json` `tools` node instead of the `dependencies` node. - - Custom type packages use an arbitrary type identifier that conforms to the same format rules as package IDs. Any type other than `Dependency` and `DotnetCliTool`, however, are not recognized by the NuGet Package Manager in Visual Studio. -Package types are set either in the `.nuspec` file or in `project.json`. In both cases, it's best for backwards compatibility to *not* explicitly set the `Dependency` type and to instead rely on NuGet assuming this type when no type is specified. +Package types are set in the `.nuspec` file. It's best for backwards compatibility to *not* explicitly set the `Dependency` type and to instead rely on NuGet assuming this type when no type is specified. - `.nuspec`: Indicate the package type within a `packageTypes\packageType` node under the `` element: @@ -302,17 +283,6 @@ Package types are set either in the `.nuspec` file or in `project.json`. In both
    ``` -- `project.json`: Indicate the package type within a `packOptions.packageType` property json: - - ```json - { - // ... - "packOptions": { - "packageType": "DotnetCliTool" - } - } - ``` - ## Adding a readme and other files To directly specify files to include in the package, use the `` node in the `.nuspec` file, which *follows* the `` tag: @@ -383,7 +353,7 @@ With NuGet 3.x, targets are not added to the project but are instead made availa Packages that contain COM interop assemblies must include an appropriate [targets file](#including-msbuild-props-and-targets-in-a-package) so that the correct `EmbedInteropTypes` metadata is added to projects using the PackageReference format. By default, the `EmbedInteropTypes` metadata is always false for all assemblies when PackageReference is used, so the targets file adds this metadata explicitly. To avoid conflicts, the target name should be unique; ideally, use a combination of your package name and the assembly being embedded, replacing the `{InteropAssemblyName}` in the example below with that value. (Also see [NuGet.Samples.Interop](https://github.com/NuGet/Samples/tree/master/NuGet.Samples.Interop) for an example.) -```xml +```xml <_InteropAssemblyFileName>{InteropAssemblyName} @@ -398,7 +368,7 @@ Packages that contain COM interop assemblies must include an appropriate [target Note that when using the `packages.config` reference format, adding references to the assemblies from the packages causes NuGet and Visual Studio to check for COM interop assemblies and set the `EmbedInteropTypes` to true in the project file. In this case the targets are overriden. -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. +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. @@ -406,13 +376,13 @@ Additionally, by default the [build assets do not flow transitively](../consume- When using an assembly or the convention-based working directory, create a package by running `nuget pack` with your `.nuspec` file, replacing `` with your specific filename: -``` +```cli nuget pack .nuspec ``` When using a Visual Studio project, run `nuget pack` with your project file, which automatically loads the project's `.nuspec` file and replaces any tokens within it using values in the project file: -``` +```cli nuget pack .csproj ``` @@ -436,7 +406,7 @@ The following options are a few that are common with Visual Studio projects: - **Referenced projects**: If the project references other projects, you can add the referenced projects as part of the package, or as dependencies, by using the `-IncludeReferencedProjects` option: - ``` + ```cli nuget pack MyProject.csproj -IncludeReferencedProjects ``` @@ -446,13 +416,13 @@ The following options are a few that are common with Visual Studio projects: - **Build configuration**: By default, NuGet uses the default build configuration set in the project file, typically *Debug*. To pack files from a different build configuration, such as *Release*, use the `-properties` option with the configuration: - ``` + ```cli nuget pack MyProject.csproj -properties Configuration=Release ``` - **Symbols**: to include symbols that allow consumers to step through your package code in the debugger, use the `-Symbols` option: - ``` + ```cli nuget pack MyProject.csproj -symbols ``` diff --git a/docs/Create-Packages/Native-Packages.md b/docs/Create-Packages/Native-Packages.md index eb7d224e2..dbbbbdaab 100644 --- a/docs/Create-Packages/Native-Packages.md +++ b/docs/Create-Packages/Native-Packages.md @@ -1,30 +1,17 @@ --- -# required metadata - title: Creating Native NuGet Packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 01/09/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 7a70d748-efe2-4f8f-a3fd-67ddb0f6214e - -# optional metadata - description: Details on creating native NuGet packages that contains C++ code instead of managed code, for use in C++ projects. keywords: NuGet native packages, NuGet C++ packages, native code packages, targeting C++ projects -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- # Creating native packages diff --git a/docs/Create-Packages/Overview-and-Workflow.md b/docs/Create-Packages/Overview-and-Workflow.md index 74cd6de53..326c877eb 100644 --- a/docs/Create-Packages/Overview-and-Workflow.md +++ b/docs/Create-Packages/Overview-and-Workflow.md @@ -1,6 +1,4 @@ --- -# required metadata - title: Overview and workflow of creating NuGet packages | Microsoft Docs author: kraigb ms.author: kraigb @@ -9,17 +7,13 @@ ms.date: 07/26/2017 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: feb7918c-4709-48a4-a106-8d65c41014dc - -# optional metadata - description: An overview of the process of creating and publishing a NuGet package, with links to other specific parts of the process. keywords: NuGet package creation, NuGet creation overview, NuGet creation workflow, package creation workflow, package creation overview. ms.reviewer: - karann-msft - unniravindranathan - --- + # Package creation workflow Creating a package starts with the compiled code (typically .NET assemblies) that you want to package and share with others, either through the public nuget.org gallery or a private gallery within your organization. The package can also include additional files such as a readme that is displayed when the package is installed, and can include transformations to certain project files. @@ -31,22 +25,22 @@ A package can also serve to only pull in any number of other dependencies, witho Whatever the case, creating a package begins with deciding which assemblies and other files to package. You then create a manifest file, referred to as a `.nuspec` file, to describe the package's contents along with its identifer, version number, copyright information, MSBuild props and targets, and much more. -When you've prepared all the necessary files in the appropriate folders and have created the appropriate `.nuspec` file, you then use the `nuget pack` command (or the [MSBuild pack target](../Schema/msbuild-targets.md)) to put everything together into a `.nupkg` file. You're then ready to deploy the package to whatever host makes it available to other developers. +When you've prepared all the necessary files in the appropriate folders and have created the appropriate `.nuspec` file, you then use the `nuget pack` command (or the [MSBuild pack target](../schema/msbuild-targets.md)) to put everything together into a `.nupkg` file. You're then ready to deploy the package to whatever host makes it available to other developers. > [!Tip] > A NuGet package with the `.nupkg` extension is simply a ZIP file. To easily examine any package's contents, change the extension to `.zip` and expand its contents as usual. Just be sure to change the extension back to `.nupkg` before attempting to upload it to a host. -To learn and understand the creation process, start with [Creating a package](../create-packages/creating-a-package.md) which guides you through the core processes common to all packages. +To learn and understand the creation process, start with [Creating a package](../create-packages/creating-a-package.md) which guides you through the core processes common to all packages. From there, you can consider a number of other options for your package: -- [Supporting Multiple Target Frameworks](../create-packages/supporting-multiple-target-frameworks.md) describes how to create a package with multiple variants for different .NET Frameworks. -- [Creating Localized Packages](../create-packages/creating-localized-packages.md) describes how to structure a package with multiple language resources and how to use separate localized satellite packages. -- [Pre-release Packages](../create-packages/prerelease-packages.md) demonstrates how to release alpha, beta, and rc packages to those customers who are interested. -- [Source and Config File Transformations](../create-packages/source-and-config-file-transformations.md) describes how you can do both one-way token replacements in files that are added to a project, and modify `web.config` and `app.config` with settings that are also backed out when the package is uninstalled. -- [Symbol Packages](../create-packages/symbol-packages.md) offers guidance for supplying symbols for your library that allow consumers to step into your code while debugging. -- [Package versioning](../reference/package-versioning.md) discusses how to identify the exact versions that you allow for your dependencies (other packages that you consume from your package). -- [Native Packages](../create-packages/native-packages.md) describes the process for creating a package for C++ consumers. +- [Supporting Multiple Target Frameworks](../create-packages/supporting-multiple-target-frameworks.md) describes how to create a package with multiple variants for different .NET Frameworks. +- [Creating Localized Packages](../create-packages/creating-localized-packages.md) describes how to structure a package with multiple language resources and how to use separate localized satellite packages. +- [Pre-release Packages](../create-packages/prerelease-packages.md) demonstrates how to release alpha, beta, and rc packages to those customers who are interested. +- [Source and Config File Transformations](../create-packages/source-and-config-file-transformations.md) describes how you can do both one-way token replacements in files that are added to a project, and modify `web.config` and `app.config` with settings that are also backed out when the package is uninstalled. +- [Symbol Packages](../create-packages/symbol-packages.md) offers guidance for supplying symbols for your library that allow consumers to step into your code while debugging. +- [Package versioning](../reference/package-versioning.md) discusses how to identify the exact versions that you allow for your dependencies (other packages that you consume from your package). +- [Native Packages](../create-packages/native-packages.md) describes the process for creating a package for C++ consumers. When you're then ready to publish a package to nuget.org, follow the simple process in [Publish a package](../create-packages/publish-a-package.md). diff --git a/docs/Create-Packages/Prerelease-Packages.md b/docs/Create-Packages/Prerelease-Packages.md index b598724c8..4e9d5e8e2 100644 --- a/docs/Create-Packages/Prerelease-Packages.md +++ b/docs/Create-Packages/Prerelease-Packages.md @@ -3,11 +3,10 @@ title: Pre-release versions in NuGet packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 8/14/2017 +ms.date: 08/14/2017 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: df6a366a-22c1-47bb-8017-18231311ce88 description: Guidance for building pre-release packages keywords: versioning, NuGet package versioning, NuGet prerelease versions, NuGet prerelease packages, preview package versions, RC package versions, Beta package versions, NuGet semantic versioning ms.reviewer: @@ -43,7 +42,6 @@ You can specify such versions in two ways: When you’re ready to release a stable version, just remove the suffix and the package takes precedence over any pre-release versions. Again, see [Package versioning](../reference/package-versioning.md#pre-release-versions). - ## Installing and updating pre-release packages By default, NuGet does not include pre-release versions when working with packages, but you can change this behavior as follows: @@ -58,7 +56,6 @@ By default, NuGet does not include pre-release versions when working with packag - **NuGet CLI**: Use the `-prerelease` switch with the `install`, `update`, `delete`, and `mirror` commands. Refer to the [NuGet CLI reference](../tools/nuget-exe-cli-reference.md) - ## Semantic versioning The [Semantic Versioning or SemVer convention](http://semver.org/spec/v1.0.0.html) describes how to utilize strings in version numbers to convey they meaning of the underlying code. @@ -82,16 +79,14 @@ With this in mind, it's generally good to follow recognized naming conventions s Whatever suffixes you use, however, NuGet will give them precedence in reverse alphabetical order: -``` -1.0.1 -1.0.1-zzz -1.0.1-rc -1.0.1-open -1.0.1-beta12 -1.0.1-beta05 -1.0.1-beta -1.0.1-alpha2 -1.0.1-alpha -``` + 1.0.1 + 1.0.1-zzz + 1.0.1-rc + 1.0.1-open + 1.0.1-beta12 + 1.0.1-beta05 + 1.0.1-beta + 1.0.1-alpha2 + 1.0.1-alpha As shown, the version without any suffix will always take precedence over pre-release versions. Note also that if you use numerical suffixes with pre-release tags that might use double-digit numbers (or more), use leading zeroes as in beta01 and beta05 to ensure that they sort correctly when the numbers get larger. diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index eec9f1f05..ff123dbd5 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -1,33 +1,20 @@ --- -# required metadata - title: How to Publish a NuGet Package | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/5/2017 +ms.date: 10/05/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 2342aabd-983e-4db1-9230-57c84fa36969 - -# optional metadata - description: Detailed instructions for how to publish a NuGet package to nuget.org or private feeds, and how to manage package ownership on nuget.org. keywords: NuGet package publishing, publish NuGet package, NuGet package ownership, publish to nuget.org, private NuGet feeds -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - anangaur - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # Publishing packages Once you have [created a package](../create-packages/creating-a-package.md) with `nuget pack`, it's a simple process to make it available to other developers, either publicly or privately: @@ -43,42 +30,43 @@ For nuget.org, you must first [register for a free account](https://www.nuget.or ![NuGet registration and sign in location](media/publish_NuGetSignIn.png) -Next, you can either upload the package through the nuget.org web portal, push to nuget.org from the command line, or publish as part of a CI/CD process through Visual Studio Team Services, as described in the following sections. +Next, you can either upload the package through the nuget.org web portal, push to nuget.org from the command line (requires `nuget.exe` 4.1.0+) , or publish as part of a CI/CD process through Visual Studio Team Services, as described in the following sections. -### Web portal: use the Upload Package tab on nuget.org: +### Web portal: use the Upload Package tab on nuget.org ![Upload a package with the NuGet Package Manager](media/publish_UploadYourPackage.PNG) -### Command line: +### Command line + > [!Important] > To push packages to nuget.org you must use [nuget.exe v4.1.0 or above](https://www.nuget.org/downloads), which implements the required [NuGet protocols](../api/nuget-protocols.md). 1. Click on your user name to navigate to your account settings. -2. Under **API Key**, click **copy to clipboard** to retrieve the access key you'll need in the CLI: +1. Under **API Key**, click **copy to clipboard** to retrieve the access key you'll need in the CLI: ![Copying an API Key from account settings](media/publish_APIKey.png) -3. At a command prompt, run the following command: +1. At a command prompt, run the following command: - ``` + ```cli nuget setApiKey Your-API-Key ``` This stores your API key on the machine so that you need not do this step again on the same machine. -4. Push your package to NuGet Gallery using the command: +1. Push your package to NuGet Gallery using the command: - ``` + ```cli nuget push YourPackage.nupkg -Source https://api.nuget.org/v3/index.json ``` -5. Before being made public, all packages uploaded to nuget.org are scanned for viruses and rejected if any viruses are found. All packages listed on nuget.org are also scanned periodically. +1. Before being made public, all packages uploaded to nuget.org are scanned for viruses and rejected if any viruses are found. All packages listed on nuget.org are also scanned periodically. -6. In your account on nuget.org, click **Manage my packages** to see the one that you just published; you'll also receive a confirmation email. Note that it might take a while for your package to be indexed and appear in search results where others can find it, during which time you'll see the following message on your package page: +1. In your account on nuget.org, click **Manage my packages** to see the one that you just published; you'll also receive a confirmation email. Note that it might take a while for your package to be indexed and appear in search results where others can find it, during which time you'll see the following message on your package page: ![Message indicating a package is not yet indexed](media/publish_NotYetIndexed.png) -### Package Validation and Indexing +### Package validation and indexing Packages pushed to NuGet.org undergo several validations. When the package has passed all validation checks, it might take a while for it to be indexed and appear in search results. Once indexing is complete, you'll receive an email confirming that the package was successfully published. If the package fails a validation check, the package details page will update to display the associated error and you'll also receive an email notifying you about it. @@ -86,7 +74,7 @@ Package validation and indexing usually takes under 15 minutes. If the package p ### Visual Studio Team Services (CI/CD) -If you push packages to nuget.org using Visual Studio Team Services as part of your Continuous Integration/Deployment process, you must use nuget.exe 4.1 or above in the NuGet tasks. Details can be found on [Using the latest NuGet in your build](https://blogs.msdn.microsoft.com/devops/2017/09/29/using-the-latest-nuget-in-your-build/) (Microsoft DevOps blog). +If you push packages to nuget.org using Visual Studio Team Services as part of your Continuous Integration/Deployment process, you must use `nuget.exe` 4.1 or above in the NuGet tasks. Details can be found on [Using the latest NuGet in your build](https://blogs.msdn.microsoft.com/devops/2017/09/29/using-the-latest-nuget-in-your-build/) (Microsoft DevOps blog). ## Managing package owners on nuget.org diff --git a/docs/Create-Packages/Source-and-Config-File-Transformations.md b/docs/Create-Packages/Source-and-Config-File-Transformations.md index 9d31306b4..706cce593 100644 --- a/docs/Create-Packages/Source-and-Config-File-Transformations.md +++ b/docs/Create-Packages/Source-and-Config-File-Transformations.md @@ -1,42 +1,25 @@ --- -# required metadata - title: Source and config file transformations for NuGet packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 4/24/2017 +ms.date: 04/24/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 20991d69-9e2e-4881-bbf2-96ae634e1872 - -# optional metadata - description: Details on the ability for NuGet packages to transform source code and configuration (XML) files when installed. keywords: NuGet package installation, NuGet package transformations, modifying configuration files, modifying source code -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan - anangaur -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Transforming source code and configuration files -For projects using `packages.config` or `project.json`, NuGet supports the ability to make transformations to source code and configuration files at package install and uninstall times. - -> [!Note] -> Source and configuration file transformations are not applied when a package is installed in a project using [Package References in project files](../Consume-Packages/Package-References-in-Project-Files.md). +For projects using `packages.config`, NuGet supports the ability to make transformations to source code and configuration files at package install and uninstall times. Transformations are not applied when a package is installed in a project using [PackageReference](../Consume-Packages/Package-References-in-Project-Files.md). -A **source code transformation** applies one-way token replacement to files in the package's `content` folder when the package is installed, where tokens refer to Visual Studio [project properties](/dotnet/api/vslangproj.projectproperties?redirectedfrom=MSDN&view=visualstudiosdk-2017#properties_). This allows you to insert a file into the project's namespace, or to customize code that would typically go into `global.asax` in an ASP.NET project. +A **source code transformation** applies one-way token replacement to files in the package's `content` folder when the package is installed, where tokens refer to Visual Studio [project properties](/dotnet/api/vslangproj.projectproperties?view=visualstudiosdk-2017&viewFallbackFrom=netframework-4.7). This allows you to insert a file into the project's namespace, or to customize code that would typically go into `global.asax` in an ASP.NET project. A **config file transformation** allows you to modify files that already exist in a target project, such as `web.config` and `app.config`. For example, your package might need to add an item to the `modules` section in the config file. This transformation is done by including special files in the package that describe the sections to add to the configuration files. When a package is uninstalled, those same changes are then reversed, making this a two-way transformation. @@ -66,7 +49,7 @@ A **config file transformation** allows you to modify files that already exist i Upon installation, NuGet replaces `$rootnamespace$` with `Fabrikam` assuming the target project's whose root namespace is `Fabrikam`. -The `$rootnamespace$` token is the most commonly used project property; all others are listed in the [Project Properties](/dotnet/api/vslangproj.projectproperties?redirectedfrom=MSDN&view=visualstudiosdk-2017#properties_) documentation on MSDN. Be mindful, of course, that some properties might be specific to the project type. +The `$rootnamespace$` token is the most commonly used project property; all others are listed in [project properties](/dotnet/api/vslangproj.projectproperties?view=visualstudiosdk-2017&viewFallbackFrom=netframework-4.7). Be mindful, of course, that some properties might be specific to the project type. ## Specifying config file transformations @@ -133,7 +116,7 @@ To see the effect of installing and uninstalling the package, create a new ASP.N ### XDT transforms -With NuGet 2.6 and later, you can modify config files using [XDT syntax](https://msdn.microsoft.com/library/dd465326.aspx). You can also have NuGet replace tokens with [Project Properties](/dotnet/api/vslangproj.projectproperties?redirectedfrom=MSDN&view=visualstudiosdk-2017#properties_) by including the property name within `$` delimeters (case-insensitive). +With NuGet 2.6 and later, you can modify config files using [XDT syntax](https://msdn.microsoft.com/library/dd465326.aspx). You can also have NuGet replace tokens with [project properties](/dotnet/api/vslangproj.projectproperties?view=visualstudiosdk-2017&viewFallbackFrom=netframework-4.7) by including the property name within `$` delimeters (case-insensitive). For example, the following `app.config.install.xdt` file will insert an `appSettings` element into `app.config` containing the `FullPath`, `FileName`, and `ActiveConfigurationSettings` values from the project: diff --git a/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md b/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md index 720c04949..c6efc647b 100644 --- a/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md +++ b/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md @@ -1,32 +1,19 @@ --- -# required metadata - title: Multi-targeting for NuGet Packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 9/27/2017 +ms.date: 09/27/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 2646ffcd-83ae-4086-8915-a7fba3f53e45 - -# optional metadata - description: Description of the various methods to target multiple .NET Framework versions from within a single NuGet package. keywords: NuGet package targeting, .NET Framework versions, NuGet and .NET, targeting multiple frameworks, NuGet package creation -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # Supporting multiple .NET framework versions *For .NET Core projects using NuGet 4.0+, see [NuGet pack and restore as MSBuild targets](../schema/msbuild-targets.md) for details on cross-targeting.* @@ -35,15 +22,6 @@ Many libraries target a specific version of the .NET Framework. For example, you To accommodate this, NuGet supports putting multiple versions of the same library in a single package when using the convention-based working directory method described in [Creating a package](../create-packages/creating-a-package.md#from-a-convention-based-working-directory). -In this topic: - -- [Framework version folder structure](#framework-version-folder-structure) -- [Matching assembly versions and the target framework in a project](#matching-assembly-versions-and-the-target-framework-in-a-project) -- [Grouping assemblies by framework version](#grouping-assemblies-by-framework-version) -- [Determining which NuGet target to use](#determining-which-nuget-target-to-use) -- [Content files and PowerShell scripts](#content-files-and-powershell-scripts) - - ## Framework version folder structure When building a package that contains only one version of a library or target multiple frameworks, you always make subfolders under `lib` using different case-sensitive framework names with the following convention: @@ -91,7 +69,6 @@ If you have architecture-specific assemblies, that is, separate assemblies that See [Create UWP Packages](../Guides/Create-UWP-Packages.md) for an example of referencing these files in the `.nuspec` manifest. - ## Matching assembly versions and the target framework in a project When NuGet installs a package that has multiple assembly versions, it tries to match the framework name of the assembly with the target framework of the project. @@ -106,7 +83,6 @@ For example, consider the following folder structure in a package: \net461 \MyAssembly.dll - When installing this package in a project that targets .NET Framework 4.6, NuGet installs the assembly in the `net45` folder, because that's the highest available version that's less than or equal to 4.6. If the project targets .NET Framework 4.6.1, on the other hand, NuGet installs the assembly in the `net461` folder. @@ -152,7 +128,7 @@ When packaging libraries targeting the Portable Class Library it can be tricky t ## Content files and PowerShell scripts > [!Warning] -> Mutable content files and script execution are available with the `packages.config` format only; they are deprecated when using `project.json` and PackagesReference formats and should should not be used for any new packages. +> Mutable content files and script execution are available with the `packages.config` format only; they are deprecated with all other formats and should not be used for any new packages. With `packages.config`, content files and PowerShell scripts can be grouped by target framework using the same folder convention inside the `content` and `tools` folders. For example: diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/Create-Packages/Symbol-Packages.md index 8bbbc1f47..7caf90929 100644 --- a/docs/Create-Packages/Symbol-Packages.md +++ b/docs/Create-Packages/Symbol-Packages.md @@ -1,32 +1,18 @@ --- -# required metadata - title: How to create NuGet symbol packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 9/12/2017 +ms.date: 09/12/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 4667a70d-5a17-4f1e-b2f2-b8d0c6af3882 - -# optional metadata - description: How to create NuGet packages that contain only symbols to support debugging of other NuGet packages in Visual Studio. keywords: NuGet symbol packages, NuGet package debugging, supporting NuGet debugging, package symbols, symbol package conventions -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - anangaur - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Creating symbol packages @@ -35,7 +21,6 @@ In addition to building packages for nuget.org or other sources, NuGet also supp Package consumers can then add `http://srv.symbolsource.org/pdb/Public` to their symbol sources in Visual Studio, which allows stepping into package code in the Visual Studio debugger. See [Specify symbol (.pdb) and source files in the Visual Studio debugger](/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger) for details on that process. - ## Creating a symbol package To create a symbol package, follow these conventions: @@ -45,7 +30,7 @@ To create a symbol package, follow these conventions: You can create both packages with the `-Symbols` option, either from a `.nuspec` file or a project file: -``` +```cli nuget pack MyPackage.nuspec -Symbols nuget pack MyProject.csproj -Symbols @@ -117,13 +102,13 @@ A symbol package can be built by conventions, from a folder structure as describ 1. For convenience, first save your API key with NuGet (see [publish a package](../create-packages/publish-a-package.md), which will apply to both nuget.org and symbolsource.org, because symbolsource.org will check with nuget.org to verify that you are the package owner. - ``` + ```cli nuget SetApiKey Your-API-Key ``` 1. After publishing your primary package to nuget.org, push the symbol package as follows, which will automatically use symbolsource.org as the target because of the `.symbols` in the filename: - ``` + ```cli nuget push MyPackage.symbols.nupkg ``` > [!Note] @@ -131,13 +116,13 @@ A symbol package can be built by conventions, from a folder structure as describ 1. To publish to a different symbol repository, or to push a symbol package that doesn't follow the naming convention, use the `-Source` option: - ``` + ```cli nuget push MyPackage.symbols.nupkg -source https://nuget.smbsrc.net/ ``` 1. You can also push both primary and symbol packages to both repositories at the same time using the following: - ``` + ```cli nuget push MyPackage.nupkg ``` @@ -145,4 +130,4 @@ In this case, NuGet will publish `MyPackage.symbols.nupkg`, if present, to https ## See Also - - Using SymbolSource (symbolsource.org) +[Using SymbolSource](https://www.symbolsource.org/Public/Wiki/Using) (symbolsource.org) diff --git a/docs/Guides/Create-Cross-Platform-Packages.md b/docs/Guides/Create-Cross-Platform-Packages.md index c0aa1f559..d005a90f5 100644 --- a/docs/Guides/Create-Cross-Platform-Packages.md +++ b/docs/Guides/Create-Cross-Platform-Packages.md @@ -1,38 +1,24 @@ --- -# required metadata - title: Create Cross-Platform NuGet Packages (for iOS, Android, and Windows) | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 01/09/2017 ms.topic: get-started-article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: ae24824b-a138-4d12-a810-1f653ddffd32 - -# optional metadata - description: An end-to-end walkthrough of creating NuGet packages for Xamarin that use native APIs on iOS, Android, and Windows. keywords: create a package, packages for Xamarin, cross-platform packages -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Create cross-platform packages A cross-platform package contains code that uses native APIs on iOS, Android, and Windows, depending on the run-time operating system. Although this is straightforward to do, it's preferable to let developers consume the package from a PCL or .NET Standard libraries through a common API surface area. -In this walkthrough you'll create a cross-platform NuGet package that can be used in mobile projects on iOS, Android, and Windows. +In this walkthrough you create a cross-platform NuGet package that can be used in mobile projects on iOS, Android, and Windows. 1. [Pre-requisites](#pre-requisites) 1. [Create the project structure and abstraction code](#create-the-project-structure-and-abstraction-code) @@ -49,7 +35,6 @@ In this walkthrough you'll create a cross-platform NuGet package that can be use > [!Note] > nuget.exe is the CLI tool itself, not an installer, so be sure to save the downloaded file from your browser instead of running it. - ## Create the project structure and abstraction code 1. Download and run the [Plugin for Xamarin Templates extension](https://marketplace.visualstudio.com/items?itemName=vs-publisher-473885.PluginForXamarinTemplates) for Visual Studio. These templates will make it easy to create the necessary project structure for this walkthrough. @@ -119,12 +104,11 @@ To implement a platform-specific implementation of the `ILoggingLibrary` interfa > [!Note] > To build for iOS you need a networked Mac connected to Visual Studio as described on [Introduction to Xamarin.iOS for Visual Studio](https://developer.xamarin.com/guides/ios/getting_started/installation/windows/introduction_to_xamarin_ios_for_visual_studio/). If you don't have a Mac available, clear the iOS project in the configuration manager (step 3 above). - ## Create and update the .nuspec file 1. Open a command prompt, navigate to the `LoggingLibrary` folder that's one level below where the `.sln` file is, and run the NuGet `spec` command to create the initial `Package.nuspec` file: -``` +```cli nuget spec ``` @@ -148,7 +132,7 @@ nuget spec
    ``` - + > [!Tip] > You can suffix your package version with `-alpha`, `-beta` or `-rc` to mark your package as pre-release, check [Pre-release versions](../create-packages/prerelease-packages.md) for more information about pre-release versions. @@ -182,7 +166,6 @@ To include platform-specific reference assemblies, add the following to the ` [!Note] > To shorten the names of the DLL and XML files, right-click on any given project, select the **Library** tab, and change the assembly names. - ### Add dependencies If you have specific dependencies for native implementations, use the `` element with `` elements to specify them, for example: @@ -268,7 +251,7 @@ Your final `.nuspec` file should now look like the following, where again YOUR_N With the completed `.nuspec` referencing all the files you need to include in the package, you're ready to run the `pack` command: -``` +```cli nuget pack LoggingLibrary.nuspec ``` @@ -279,7 +262,6 @@ This will generate `LoggingLibrary.YOUR_NAME.1.0.0.nupkg`. Opening this file in > [!Tip] > A `.nupkg` file is just a ZIP file with a different extension. You can also examine package contents, then, by changing `.nupkg` to `.zip`, but remember to restore the extension before uploading a package to nuget.org. - To make your package available to other developers, follow the instructions on [Publish a package](../create-packages/publish-a-package.md). ## Related topics diff --git a/docs/Guides/Create-NET-Standard-Packages-VS2015.md b/docs/Guides/Create-NET-Standard-Packages-VS2015.md index 64920ebd3..e4acbb859 100644 --- a/docs/Guides/Create-NET-Standard-Packages-VS2015.md +++ b/docs/Guides/Create-NET-Standard-Packages-VS2015.md @@ -1,31 +1,17 @@ --- -# required metadata - title: Create .NET Standard NuGet Packages with Visual Studio 2015 | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 01/09/2017 ms.topic: get-started-article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 29b3bceb-0f35-4cdd-bbc3-a04eb823164c - -# optional metadata - description: An end-to-end walkthrough of creating .NET Standard NuGet packages using NuGet 3.x and Visual Studio 2015. keywords: create a package, .NET Standard packages, .NET Standard mapping table -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Create .NET Standard packages with Visual Studio 2015 @@ -44,7 +30,6 @@ This guide will walk you through creating a nuget package targeting .NET Standar 1. [.NET Standard mapping table](#net-standard-mapping-table) 1. [Related topics](#related-topics) - ## Pre-requisites 1. Visual Studio 2015. Install the Community edition for free from [visualstudio.com](https://www.visualstudio.com/); you can use the Professional and Enterprise editions as well, of course. @@ -54,8 +39,6 @@ This guide will walk you through creating a nuget package targeting .NET Standar > [!Note] > nuget.exe is the CLI tool itself, not an installer, so be sure to save the downloaded file from your browser instead of running it. - - ## Create the class library project 1. In Visual Studio, **File > New > Project**, expand the **Visual C# > Windows** node, select **Class Library (Portable)**, change the name to AppLogger, and click OK. @@ -63,11 +46,13 @@ This guide will walk you through creating a nuget package targeting .NET Standar ![Create new class library project](media/NetStandard-NewProject.png) 1. In the **Add Portable Class Library** dialog that appears, select the `.NET Framework 4.6` and `ASP.NET Core 1.0` options. + 1. Right-click the `AppLogger (Portable)` in Solution Explorer, select **Properties**, select the **Library** tab, then click **Target .NET Platform Standard** in the **Targeting** section. This will prompt for confirmation, after which you can select `.NET Standard 1.4` from the drop down: ![Setting the target to .NET Standard 1.4](media/NetStandard-ChangeTarget.png) 1. Click on the **Build** tab, change the **Configuration** to `Release`, and check the box for **XML documentation file**. + 1. Add your code to the component, for example: ```cs @@ -89,7 +74,7 @@ This guide will walk you through creating a nuget package targeting .NET Standar 1. Open a command prompt, navigate to the folder containing `AppLogg.csproj` folder (one level below where the `.sln` file is), and run the NuGet `spec` command to create the initial `AppLogger.nuspec` file: -``` +```cli nuget spec ``` @@ -125,12 +110,11 @@ nuget spec 1. Right-click the solution and select **Build Solution** to generate all the files for the package. - ## Package the component With the completed `.nuspec` referencing all the files you need to include in the package, you're ready to run the `pack` command: -``` +```cli nuget pack AppLogger.nuspec ``` @@ -214,11 +198,8 @@ For more details on using this technique, see [Supporting Multiple .NET Framewor In some cases you might want to add custom build targets or properties in projects that consume your package, such as running a custom tool or process during build. You do this by adding files in a `\build` folder as described in the steps below. When NuGet installs a package with \build files, it adds an MSBuild element in the project file pointing to the .targets and .props files. -> [!Note] -> When using `project.json`, targets are not added to the project but are made available through the `project.lock.json`. - - 1. In the project folder containing the your `.nuspec` file, create a folder named `build`. + 1. Inside `build`, create folders for each supported, and within those place your `.targets` and `.props` files: \build @@ -246,7 +227,6 @@ In some cases you might want to add custom build targets or properties in projec For additional details, refer to [Include MSBuild props and targets in a package](../create-packages/creating-a-package.md#including-msbuild-props-and-targets-in-a-package). - ### Creating localized packages To create localized versions of your library, you can either create separate packages for different locales, or include localized resource assemblies within a single package. Here's how to do the latter approach for German and Italian: @@ -292,7 +272,6 @@ To create localized versions of your library, you can either create separate pac 1. Create the package again using `nuget pack AppLogger.nuspec`. - ### Adding a readme When you include a `readme.txt` file in the root of the package, Visual Studio will display it when the package is installed directly. @@ -300,7 +279,6 @@ When you include a `readme.txt` file in the root of the package, Visual Studio w > [!Note] > Readme files are not shown for packages that are installed as a dependency, or for .NET Core projects. - To do this, create your `readme.txt` file, place it in the project root folder, and refer to it in the `.nuspec` file: ```xml @@ -314,7 +292,6 @@ To do this, create your `readme.txt` file, place it in the project root folder,
    ``` - ## .NET Standard mapping table |Platform Name |Alias| @@ -328,8 +305,6 @@ To do this, create your `readme.txt` file, place it in the project root folder, |Windows Phone| wpa| →| →|8.1| |Windows Phone Silverlight| wp| 8.0| - - ## Related topics - [Nuspec Reference](../schema/nuspec.md) diff --git a/docs/Guides/Create-NET-Standard-Packages-VS2017.md b/docs/Guides/Create-NET-Standard-Packages-VS2017.md index 0c3d7450d..084ce502e 100644 --- a/docs/Guides/Create-NET-Standard-Packages-VS2017.md +++ b/docs/Guides/Create-NET-Standard-Packages-VS2017.md @@ -1,46 +1,26 @@ --- -# required metadata - title: Create .NET Standard 2.0 NuGet Packages with Visual Studio 2017 | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 5/23/2017 +ms.date: 05/23/2017 ms.topic: get-started-article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 2c1de334-fdc9-4e1e-8ef6-a90b3e77ff0f - -# optional metadata - description: An end-to-end walkthrough of creating .NET Standard 2.0 NuGet packages using NuGet 4.x and Visual Studio 2017. keywords: create a package, .NET Standard packages, .NET Core -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Create .NET Standard 2.0 packages with Visual Studio 2017 -*Applies to NuGet 4.x+ and MSBuild 15.3+ as provided with Visual Studio 2017 Update 3. For earlier versions of Visual Studio 2017, these instructions apply to .NET Standard 1.4 to 1.6 by changing the \ property. Also see [Create .NET Standard Packages with Visual Studio 2015](../guides/create-net-standard-packages-vs2015.md) for working with NuGet 3.x+.* +*Applies to NuGet 4.x+ and MSBuild 15.3+ as provided with Visual Studio 2017 Update 3 and later. For earlier versions of Visual Studio 2017, these instructions apply to .NET Standard 1.4 to 1.6 by changing the \ property. Also see [Create .NET Standard Packages with Visual Studio 2015](../guides/create-net-standard-packages-vs2015.md) for working with NuGet 3.x+.* The [.NET Standard Library](/dotnet/articles/standard/library) is a formal specification of .NET APIs intended to be available on all .NET runtimes, thus establishing greater uniformity in the .NET ecosystem. The .NET Standard Library defines a uniform set of BCL (Base Class Library) APIs for all .NET platforms to implement, independent of workload. It enables developers to produce PCLs that are usable across all .NET runtimes, and reduces if not eliminates platform-specific conditional compilation directives in shared code. -This guide will walk you through creating a nuget package targeting .NET Standard Library 2.0 with Visual Studio 2017 Update 3 and NuGet 4.0. - -1. [Pre-requisites](#pre-requisites) -1. [Create the class library project](#create-the-netstandard-class-library-project) -1. [Edit metadata in the .csproj file](#edit-metadata-in-the-csproj-file) -1. [Package the component](#package-the-component) -1. [Related topics](#related-topics) +This guide walks you through creating a nuget package targeting .NET Standard Library 2.0 with Visual Studio 2017. ## Pre-requisites @@ -98,7 +78,6 @@ With NuGet 4.0 and .NET Core projects, package metadata is contained directly in 1. Save the project, then right-click the solution and select **Build Solution** to again generate all the files for the package, this time with the correct metadata. - ## Package the component NuGet 4.0 supports a pack target using MSBuild version 15.1+ (including MSBuild 15.3 as part of Visual Studio 2017 Update 3) when the project contains the necessary package metadata, as was added in the previous section. To invoke MSBuild in this way, simply specify the pack target on the command line in the same folder as the `.csproj` file: diff --git a/docs/Guides/Create-UWP-Controls.md b/docs/Guides/Create-UWP-Controls.md index df6c67014..235ccf04b 100644 --- a/docs/Guides/Create-UWP-Controls.md +++ b/docs/Guides/Create-UWP-Controls.md @@ -1,52 +1,36 @@ --- -# required metadata - title: How to package UWP controls with NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 3/21/2017 +ms.date: 03/21/2017 ms.topic: get-started-article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 1f9de20a-f394-4cf2-8e40-ba0f4239cd5e - -# optional metadata - description: How to create NuGet packages that contain UWP controls, including the necessary metadata and supporting files for the Visual Studio and Blend designers. keywords: NuGet UWP controls, Visual Studio XAML designer, Blend designer, custom controls -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Creating UWP controls as NuGet packages With Visual Studio 2017, you can take advantage of added capabilities for UWP controls that you deliver in NuGet packages. This guide walks you through these capabilities using the [ExtensionSDKasNuGetPackage sample](https://github.com/NuGet/Samples/tree/master/ExtensionSDKasNuGetPackage). -## Pre-requisites: +## Pre-requisites -1. Visual Studio 2017 -1. Understanding of how to [Create UWP Packages](create-uwp-packages.md) +1. Visual Studio 2017 +1. Understanding of how to [Create UWP Packages](create-uwp-packages.md) ## Add toolbox/assets pane support for XAML controls To have a XAML control appear in the XAML designer’s toolbox in Visual Studio and the Assets pane of Blend, create a `VisualStudioToolsManifest.xml` file in the root of the `tools` folder of your package project. This file is not required if you don’t need the control to appear in the toolbox or Assets pane. -``` -\build -\lib -\tools - \VisualStudioToolsManifest.xml -``` + \build + \lib + \tools + VisualStudioToolsManifest.xml The structure of the file is as follows: @@ -107,22 +91,18 @@ In the example below, the project contains an image file named “ManagedPackage UWP packages have a TargetPlatformVersion (TPV) and TargetPlatformMinVersion (TPMinV) that define the upper and lower bounds of the OS version where the app can be installed. TPV further specifies the version of the SDK against which the app is built. Be mindful of these properties when authoring a UWP package: using APIs outside the bounds of the platform versions defined in the app will cause either the build to fail or the app to fail at runtime. -For example, let’s say you’ve set the TPMinV for you controls package to Windows 10 Anniversary Edition (10.0; Build 14393), so you want to ensure that the package is consumed only by UWP projects that match that lower bound. To allow your package to be consumed by `project.json` based UWP projects, you must package your controls with the following folder names: +For example, let’s say you’ve set the TPMinV for you controls package to Windows 10 Anniversary Edition (10.0; Build 14393), so you want to ensure that the package is consumed only by UWP projects that match that lower bound. To allow your package to be consumed by UWP projects, you must package your controls with the following folder names: -``` -\lib\uap10.0\* -\ref\uap10.0\* -``` + \lib\uap10.0\* + \ref\uap10.0\* To enforce the appropriate TPMinV check, create an [MSBuild targets file](/visualstudio/msbuild/msbuild-targets) and package it under the build folder (replacing "your_assembly_name" with the name of your specific assembly): -``` -\build - \uap10.0 - your_assembly_name.targets -\lib -\tools -``` + \build + \uap10.0 + your_assembly_name.targets + \lib + \tools Here is an example of what the targets file should look like: @@ -144,23 +124,19 @@ Here is an example of what the targets file should look like: To configure where the control properties show up in the property inspector, add custom adorners, etc., place your `design.dll` file inside the `lib\\Design` folder as appropriate to the target platform. Also, to ensure that the **[Edit Template > Edit a Copy](/windows/uwp/controls-and-patterns/xaml-styles#modify-the-default-system-styles)** feature works, you must include the `Generic.xaml` and any resource dictionaries that it merges in the `\Themes` folder. (This file has no impact on the runtime behavior of a control.) - -``` -\build -\lib - \uap10.0.14393.0 - \Design - \MyControl.design.dll - \your_assembly_name - \Themes - Generic.xaml -\tools -``` + \build + \lib + \uap10.0.14393.0 + \Design + \MyControl.design.dll + \your_assembly_name + \Themes + Generic.xaml + \tools > [!Note] > By default, control properties will show up under the Miscellaneous category in the property inspector. - ## Use strings and resources You can embed string resources (`.resw`) in your package that can be used by your control or the consuming UWP project, set the **Build Action** property of the `.resw` file to **PRIResource**. @@ -171,15 +147,13 @@ For an example, refer to [MyCustomControl.cs](https://github.com/NuGet/Samples/b To package content such as images that can be used by your control or the consuming UWP project. add those files `lib\uap10.0.14393.0` folder as follows ("your_assembly_name" should again match your particular control): -``` -\build -\lib - \uap10.0.14393.0 - \Design - \your_assembly_name -\contosoSampleImage.jpg -\tools -``` + \build + \lib + \uap10.0.14393.0 + \Design + \your_assembly_name + \contosoSampleImage.jpg + \tools You may also author an[MSBuild targets file](/visualstudio/msbuild/msbuild-targets) to ensure the asset is copied to the consuming project’s output folder: diff --git a/docs/Guides/Create-UWP-Packages.md b/docs/Guides/Create-UWP-Packages.md index 3a28eff50..3aa8f8972 100644 --- a/docs/Guides/Create-UWP-Packages.md +++ b/docs/Guides/Create-UWP-Packages.md @@ -1,31 +1,17 @@ --- -# required metadata - title: Create NuGet Packages for the Universal Windows Platform | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/17/2017 +ms.date: 07/17/2017 ms.topic: get-started-article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: d98524b1-a674-4803-8ac5-3c6bce867f86 - -# optional metadata - description: An end-to-end walkthrough of creating NuGet packages using a Windows Runtime Component for the Universal Windows Platform. keywords: create a package, packages for UWP, Windows Runtime Components -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Create UWP packages @@ -48,7 +34,6 @@ In this walkthrough you'll create a NuGet package with a native UWP component (i > [!Note] > nuget.exe is the CLI tool itself, not an installer, so be sure to save the downloaded file from your browser instead of running it. - ## Create a UWP Windows Runtime Component 1. In Visual Studio, choose **File > New > Project**, expand the **Visual C++ > Windows > Universal** node, select the **Windows Runtime Component (Universal Windows)** template, change the name to ImageEnhancer, and click OK. Accept the default values for Target Version and Minimum Version when prompted. @@ -72,7 +57,6 @@ In this walkthrough you'll create a NuGet package with a native UWP component (i > [!Note] > In this walkthrough you'll use the Debug artifacts for the package. For non-debug package, check the Release options in the Batch Build dialog instead, and refer to the resulting Release folders in the steps that follow. - ## Create and update the .nuspec file To create the initial `.nuspec` file, do the three steps below. The sections that follow then guide you through other necessary updates. @@ -80,7 +64,7 @@ To create the initial `.nuspec` file, do the three steps below. The sections tha 1. Open a command prompt and navigate to the folder containing `ImageEnhancer.vcxproj` (this will be a subfolder below where the solution file is). 1. Run the NuGet `spec` command to generate `ImageEnhancer.nuspec` (the name of the file is taken from the name of the `.vcxproj` file): - ``` + ```cli nuget spec ``` @@ -107,8 +91,6 @@ To create the initial `.nuspec` file, do the three steps below. The sections tha > [!Note] > For packages built for public consumption, pay special attention to the `` element, as these tags help others find your package and understand what it does. - - ### Adding Windows metadata to the package A Windows Runtime Component requires metadata that describes all of its publicly available types, which makes it possible for other apps and libraries to consume the component. This metadata is contained in a .winmd file, which is created when you compile the project and must be included in your NuGet package. An XML file with IntelliSense data is also built at the same time, and should be included as well. @@ -256,12 +238,11 @@ Your final `.nuspec` file should now look like the following, where again YOUR_N
    ``` - ## Package the component With the completed `.nuspec` referencing all the files you need to include in the package, you're ready to run the `pack` command: -``` +```cli nuget pack ImageEnhancer.nuspec ``` diff --git a/docs/Guides/Install-NuGet.md b/docs/Guides/Install-NuGet.md index 27f8a9aea..ce8dd1457 100644 --- a/docs/Guides/Install-NuGet.md +++ b/docs/Guides/Install-NuGet.md @@ -1,6 +1,4 @@ ---- -# required metadata - +--- title: Installing NuGet client tools | Microsoft Docs author: kraigb ms.author: kraigb @@ -9,16 +7,11 @@ ms.date: 10/02/2017 ms.topic: get-started-article ms.prod: nuget ms.technology: null -ms.assetid: 683b8b34-a6f4-4d56-b9cd-2483bfbad1ad - -# optional metadata - description: Guidance on installing client tools, the command-line interface (CLI), and the Package Manager for Visual Studio. keywords: nuget.exe CLI, NuGet client tools, NuGet package manager, NuGet package manager console, NuGet for Visual Studio, NuGet beta channel ms.reviewer: - karann-msft - unniravindranathan - --- # Installing NuGet client tools @@ -67,8 +60,7 @@ The NuGet command-line interface provides access to all NuGet capabilities, and [!INCLUDE[install-cli](../includes/install-cli.md)] -> [!Note] -> With NuGet 1.4+, you can use `nuget update -self` to update your existing nuget.exe to the latest version. +You can also use `nuget update -self` to update your existing nuget.exe to the latest version. **Other methods:** @@ -93,23 +85,23 @@ On Mac OSX and Linux, there are two ways to run the NuGet CLI: - Install [Mono](http://www.mono-project.com/docs/getting-started/install/) and then use the `nuget.exe` command-line executable for Windows (version 3.2 and later) from [nuget.org/downloads](https://nuget.org/downloads). Running NuGet on Mono is subject to the following limitations: - - Commands tested to work: - - config - - delete - - help - - install - - list - - push - - setApiKey - - sources - - spec - - - Partially-working commands: - - pack: works with `.nuspec` files but not with project files. - - restore: works with `packages.config` and `project.json` files but not with solution (`.sln`) files. - - - Commands that do not work: - - update + - Commands tested to work: + - config + - delete + - help + - install + - list + - push + - setApiKey + - sources + - spec + + - Partially-working commands: + - pack: works with `.nuspec` files but not with project files. + - restore: works with `packages.config` files but not with solution (`.sln`) files. + + - Commands that don't work: + - update ### Related topics diff --git a/docs/Guides/api/query-for-all-published-packages.md b/docs/Guides/api/query-for-all-published-packages.md index 26c517584..df8f88287 100644 --- a/docs/Guides/api/query-for-all-published-packages.md +++ b/docs/Guides/api/query-for-all-published-packages.md @@ -1,6 +1,4 @@ --- -# required metadata  - title: Query for all packages published to nuget.org | Microsoft Docs author: - joelverhagen @@ -9,66 +7,47 @@ ms.author: - joelverhagen - kraigb manager: skofman -ms.date: 11/2/2017 +ms.date: 11/02/2017 ms.topic: get-started-article ms.prod: nuget ms.technology: null -ms.assetid: 5d017cd4-3d75-4341-ba90-3c57be093b7d - -# optional metadata - description: Using the NuGet API, you can query for all packages published to nuget.org and stay up-to-date over time. keywords: NuGet API enumerate all packages, NuGet API replicate packages, latest packages published to nuget.org ms.reviewer: - karann - unniravindranathan - --- # Query for all packages published to nuget.org -One common query pattern on the legacy OData V2 API was enumerating all packages published to nuget.org, ordered by when -the package was published. Scenarios requiring this kind of query against nuget.org vary widely: +One common query pattern on the legacy OData V2 API was enumerating all packages published to nuget.org, ordered by when the package was published. Scenarios requiring this kind of query against nuget.org vary widely: - Replicating nuget.org entirely - Detecting when packages have new versions released - Finding packages that depend on your package -The legacy way of doing this typically depended on sorting the OData package entity by a timestamp and paging across -the massive result set using `skip` and `top` (page size) parameters. Unfortunately, this approach has some drawbacks: +The legacy way of doing this typically depended on sorting the OData package entity by a timestamp and paging across the massive result set using `skip` and `top` (page size) parameters. Unfortunately, this approach has some drawbacks: - Possibility of missing packages, because the queries are being made on data that is often changing order -- Slow query response time, because the queries are not optimized (the most optimized queries are ones that support a - mainline scenario for the official NuGet client) +- Slow query response time, because the queries are not optimized (the most optimized queries are ones that support a mainline scenario for the official NuGet client) - Use of deprecated and undocumented API, meaning the support of such queries in the future is not guaranteed - Inability to replay history in the exact order that it transpired -For this reason, the following guide can be followed to address the aforementioned scenarios in a more reliable and -future-proof way. +For this reason, the following guide can be followed to address the aforementioned scenarios in a more reliable and future-proof way. ## Overview -At the center of this guide is resource in the [NuGet API](../../api/overview.md) called the **catalog**. The catalog -is an append-only API that allows the caller to see a full history of packages added to, modified, and deleted from -nuget.org. If you are interested in all or even a subset of packages published to nuget.org, the catalog is a great way -to stay up-to-date with the set of currently available packages as time goes on. +At the center of this guide is resource in the [NuGet API](../../api/overview.md) called the **catalog**. The catalog is an append-only API that allows the caller to see a full history of packages added to, modified, and deleted from nuget.org. If you are interested in all or even a subset of packages published to nuget.org, the catalog is a great way to stay up-to-date with the set of currently available packages as time goes on. -This guide is intended to be a high-level walk-through but if you are interested in the fine-grain details of the -catalog, see its [API reference document](../../api/catalog-resource.md). +This guide is intended to be a high-level walk-through but if you are interested in the fine-grain details of the catalog, see its [API reference document](../../api/catalog-resource.md). -The following steps can be implemented in any programming language of your choice. If you want a full running sample, -take a look at the [C# sample](#c-sample-code) mentioned below. +The following steps can be implemented in any programming language of your choice. If you want a full running sample, take a look at the [C# sample](#c-sample-code) mentioned below. Otherwise, follow the guide below to build a reliable catalog reader. ## Initialize a cursor -The first step in building a reliable catalog reader is implementing a cursor. For full details about the design of a -catalog cursor, see the [catalog reference document](../../api/catalog-resource.md#cursor). In short, cursor is a -point in time up to which you have processed events in the catalog. Events in the catalog represent package publishes -and other package changes. If you care about all packages ever published to NuGet (since the beginning of time), you -would initialize your cursor to a "minimum value" timestamp (e.g. `DateTime.MinValue` in .NET). If you care only about -packages published starting now, you would use the current timestamp as your initial cursor value. +The first step in building a reliable catalog reader is implementing a cursor. For full details about the design of a catalog cursor, see the [catalog reference document](../../api/catalog-resource.md#cursor). In short, cursor is a point in time up to which you have processed events in the catalog. Events in the catalog represent package publishes and other package changes. If you care about all packages ever published to NuGet (since the beginning of time), you would initialize your cursor to a "minimum value" timestamp (e.g. `DateTime.MinValue` in .NET). If you care only about packages published starting now, you would use the current timestamp as your initial cursor value. For this guide, we'll initialize our cursor to a timestamp one hour ago. For now, just save that timestamp in memory. @@ -78,111 +57,73 @@ DateTime cursor = DateTime.UtcNow.AddHours(-1); ## Determine catalog index URL -The location of every resource (endpoint) in the NuGet API should be discovered using the -[service index](../../api/service-index.md). Because this guide focuses on nuget.org, we'll be using nuget.org's service -index. +The location of every resource (endpoint) in the NuGet API should be discovered using the [service index](../../api/service-index.md). Because this guide focuses on nuget.org, we'll be using nuget.org's service index. -``` -GET https://api.nuget.org/v3/index.json -``` + GET https://api.nuget.org/v3/index.json -The service document is JSON document containing all of the resources on nuget.org. Look for the resource having the -`@type` property value of `Catalog/3.0.0`. The associated `@id` property value is the URL to the catalog index itself. +The service document is JSON document containing all of the resources on nuget.org. Look for the resource having the `@type` property value of `Catalog/3.0.0`. The associated `@id` property value is the URL to the catalog index itself. ## Find new catalog leaves Using the `@id` property value found in the previous step, download the catalog index: -``` -GET https://api.nuget.org/v3/catalog0/index.json -``` + GET https://api.nuget.org/v3/catalog0/index.json -Deserialize the [catalog index](../../api/catalog-resource.md#catalog-index). Filter out all -[catalog page objects](../../api/catalog-resource.md#catalog-page-object-in-the-index) with `commitTimeStamp` less than -or equal to your current cursor value. +Deserialize the [catalog index](../../api/catalog-resource.md#catalog-index). Filter out all [catalog page objects](../../api/catalog-resource.md#catalog-page-object-in-the-index) with `commitTimeStamp` less than or equal to your current cursor value. For each remaining catalog page, download the full document using the `@id` property. -``` -GET https://api.nuget.org/v3/catalog0/page2926.json -``` + GET https://api.nuget.org/v3/catalog0/page2926.json -Deserialize the [catalog page](../../api/catalog-resource.md#catalog-page). Filter out all -[catalog leaf objects](../../api/catalog-resource.md#catalog-item-object-in-a-page) with `commitTimeStamp` less than -or equal to your current cursor value. +Deserialize the [catalog page](../../api/catalog-resource.md#catalog-page). Filter out all [catalog leaf objects](../../api/catalog-resource.md#catalog-item-object-in-a-page) with `commitTimeStamp` less than or equal to your current cursor value. -After you have downloaded all of the catalog pages not filtered out, you will have a set of catalog leaf objects -representing packages that have been published, unlisted, listed, or deleted in the time between your cursor timestamp -and now. +After you have downloaded all of the catalog pages not filtered out, you will have a set of catalog leaf objects representing packages that have been published, unlisted, listed, or deleted in the time between your cursor timestamp and now. ## Process catalog leaves -At this point, you can perform any custom processing you'd like on the catalog items. If all you need is the ID and -version of the package, you can inspect the `nuget:id` and `nuget:version` properties on the catalog item objects found -in the pages. Make sure to look at the `@type` property to know if the catalog item concerns an existing package or a -deleted package. +At this point, you can perform any custom processing you'd like on the catalog items. If all you need is the ID and version of the package, you can inspect the `nuget:id` and `nuget:version` properties on the catalog item objects found in the pages. Make sure to look at the `@type` property to know if the catalog item concerns an existing package or a deleted package. -If you are interested in the metadata about the package (such at the description, dependencies, .nupkg size, etc), you -can fetch the [catalog leaf document](../../api/catalog-resource.md#catalog-leaf) using the `@id` property. +If you are interested in the metadata about the package (such at the description, dependencies, .nupkg size, etc), you can fetch the [catalog leaf document](../../api/catalog-resource.md#catalog-leaf) using the `@id` property. -``` -GET https://api.nuget.org/v3/catalog0/data/2015.02.01.11.18.40/windowsazure.storage.1.0.0.json -``` + GET https://api.nuget.org/v3/catalog0/data/2015.02.01.11.18.40/windowsazure.storage.1.0.0.json -This document has all of the metadata included in the -[package metadata resource](../../api/registration-base-url-resource.md), and more! +This document has all of the metadata included in the [package metadata resource](../../api/registration-base-url-resource.md), and more! -This step is where you implement your custom logic. The other steps in this guide are implemented in pretty much the -same way not matter what you are doing with the catalog leaves. +This step is where you implement your custom logic. The other steps in this guide are implemented in pretty much the same way not matter what you are doing with the catalog leaves. ### Downloading the .nupkg -If you are interested in downloading the .nupkg's for packages found in the catalog, you can use the -[package content resource](../../api/package-base-address-resource.md). However, note that there is a short delay -between when a package is found in catalog and when it's available in the package content resource. Therefore, if -you encounter `404 Not Found` when attempting to download a .nupkg for a package that you found in the catalog, simply -retry a short time later. Fixing this delay is tracked by GitHub issue -[NuGet/NuGetGallery#3455](https://github.com/NuGet/NuGetGallery/issues/3455). +If you are interested in downloading the .nupkg's for packages found in the catalog, you can use the [package content resource](../../api/package-base-address-resource.md). However, note that there is a short delay between when a package is found in catalog and when it's available in the package content resource. Therefore, if you encounter `404 Not Found` when attempting to download a .nupkg for a package that you found in the catalog, simply retry a short time later. Fixing this delay is tracked by GitHub issue [NuGet/NuGetGallery#3455](https://github.com/NuGet/NuGetGallery/issues/3455). ## Move the cursor forward -Once you have successfully processed the catalog items, you need to determine the new cursor value to save. To do this, -find the maximum (latest chronologically) `commitTimeStamp` of all catalog items that you processed. This is your new -cursor value. Save it to some persistent store, like a database, file system, or blob storage. When you want to get more -catalog items, simply start from the [first step](#initialize-a-cursor) by initializing your cursor value from this -persistent store. +Once you have successfully processed the catalog items, you need to determine the new cursor value to save. To do this, find the maximum (latest chronologically) `commitTimeStamp` of all catalog items that you processed. This is your new cursor value. Save it to some persistent store, like a database, file system, or blob storage. When you want to get more catalog items, simply start from the [first step](#initialize-a-cursor) by initializing your cursor value from this persistent store. -If your application throws an exception or faults, don't move the cursor forward. Moving the cursor forward has the -meaning that you never again need to process catalog items before your cursor. +If your application throws an exception or faults, don't move the cursor forward. Moving the cursor forward has the meaning that you never again need to process catalog items before your cursor. -If, for some reason, you have a bug in how you process catalog leaves, you can simply move your cursor backward in time -and allow your code to reprocess the old catalog items. +If, for some reason, you have a bug in how you process catalog leaves, you can simply move your cursor backward in time and allow your code to reprocess the old catalog items. ## C# sample code -Because the catalog is a set of JSON documents available over HTTP, it can be interacted with using any programming -language that has an HTTP client and JSON deserializer. +Because the catalog is a set of JSON documents available over HTTP, it can be interacted with using any programming language that has an HTTP client and JSON deserializer. C# samples are available in the [NuGet/Samples repository](https://github.com/NuGet/Samples/tree/master/CatalogReaderExample). -``` +```cli git clone https://github.com/NuGet/Samples.git ``` ### Catalog SDK -The easiest way to consume the catalog is to use the pre-release .NET catalog SDK package: -[NuGet.Protocol.Catalog](https://dotnet.myget.org/feed/nuget-build/package/nuget/NuGet.Protocol.Catalog). -This package is available on the `nuget-build` MyGet feed, for which you use the NuGet package source URL `https://dotnet.myget.org/F/nuget-build/api/v3/index.json`. +The easiest way to consume the catalog is to use the pre-release .NET catalog SDK package: [NuGet.Protocol.Catalog](https://dotnet.myget.org/feed/nuget-build/package/nuget/NuGet.Protocol.Catalog). This package is available on the `nuget-build` MyGet feed, for which you use the NuGet package source URL `https://dotnet.myget.org/F/nuget-build/api/v3/index.json`. You can install this package to a project compatible with `netstandard1.3` or greater (such as .NET Framework 4.6). -A sample using this package is available on GitHub in the -[NuGet.Protocol.Catalog.Sample project](https://github.com/NuGet/Samples/tree/master/CatalogReaderExample/NuGet.Protocol.Catalog.Sample). +A sample using this package is available on GitHub in the [NuGet.Protocol.Catalog.Sample project](https://github.com/NuGet/Samples/tree/master/CatalogReaderExample/NuGet.Protocol.Catalog.Sample). #### Sample output -``` +```output 2017-11-10T22:16:44.8689025+00:00: Found package details leaf for xSkrape.APIWrapper.REST 1.0.2. 2017-11-10T22:16:54.6972769+00:00: Found package details leaf for xSkrape.APIWrapper.REST 1.0.1. 2017-11-10T22:19:20.6385542+00:00: Found package details leaf for Platform.EnUnity 1.0.8. @@ -216,18 +157,13 @@ warn: NuGet.Protocol.Catalog.CatalogProcessor[0] ### Minimal sample -For an example with fewer dependencies that illustrates the interaction with the catalog in more detail, see the -[CatalogReaderExample sample project](https://github.com/NuGet/Samples/tree/master/CatalogReaderExample/CatalogReaderExample). -The project targets `netcoreapp2.0` and depends on the [NuGet.Protocol 4.4.0](https://www.nuget.org/packages/NuGet.Protocol/4.4.0) -(for resolving the service index) and -[Newtonsoft.Json 9.0.1](https://www.nuget.org/packages/Newtonsoft.Json/9.0.1) (for JSON deserialization). +For an example with fewer dependencies that illustrates the interaction with the catalog in more detail, see the [CatalogReaderExample sample project](https://github.com/NuGet/Samples/tree/master/CatalogReaderExample/CatalogReaderExample). The project targets `netcoreapp2.0` and depends on the [NuGet.Protocol 4.4.0](https://www.nuget.org/packages/NuGet.Protocol/4.4.0) (for resolving the service index) and [Newtonsoft.Json 9.0.1](https://www.nuget.org/packages/Newtonsoft.Json/9.0.1) (for JSON deserialization). -The main logic of the code is visible in the -[Program.cs file](https://github.com/NuGet/Samples/blob/master/CatalogReaderExample/CatalogReaderExample/Program.cs). +The main logic of the code is visible in the [Program.cs file](https://github.com/NuGet/Samples/blob/master/CatalogReaderExample/CatalogReaderExample/Program.cs). #### Sample output -``` +```output No cursor found. Defaulting to 11/2/2017 9:41:28 PM. Fetched catalog index https://api.nuget.org/v3/catalog0/index.json. Fetched catalog page https://api.nuget.org/v3/catalog0/page2935.json. diff --git a/docs/Hosting-Packages/Local-Feeds.md b/docs/Hosting-Packages/Local-Feeds.md index 632c4f556..34b135499 100644 --- a/docs/Hosting-Packages/Local-Feeds.md +++ b/docs/Hosting-Packages/Local-Feeds.md @@ -7,7 +7,6 @@ ms.date: 12/06/2017 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: 1354a527-d988-43d1-8dcf-6ce46ec5d3d4 description: How to create a local feed for NuGet packages using folders on your local network keywords: NuGet feed, NuGet gallery, local package feed ms.reviewer: @@ -36,7 +35,7 @@ The hierarchical versioned folder tree has the following general structure: NuGet creates this structure automatically when you use the [`nuget add`](../tools/cli-ref-add.md) command to copy a package to the feed: -``` +```cli nuget add new_package.1.0.0.nupkg -source \\myserver\packages ``` @@ -44,7 +43,7 @@ The `nuget add` command works with one package at a time, which can be inconveni In such cases, use the [`nuget init`](../tools/cli-ref-init.md) command to copy all packages in a folder to the feed as if you ran `nuget add` on each one individually. For example, the following command copies all packages from `c:\packages` to a hierarchical tree on `\\myserver\packages`: -``` +```cli nuget init c:\packages \\myserver\packages ``` diff --git a/docs/Hosting-Packages/NuGet-Server.md b/docs/Hosting-Packages/NuGet-Server.md index 153d80ac6..1c9b6ebd0 100644 --- a/docs/Hosting-Packages/NuGet-Server.md +++ b/docs/Hosting-Packages/NuGet-Server.md @@ -3,11 +3,10 @@ title: Using NuGet.Server to Host NuGet Feeds | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 8/25/2017 +ms.date: 08/25/2017 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: 45138f80-9717-42c2-8b34-9a1bc1fb3eab description: How to create and host a NuGet package feed on any server running IIS using NuGet.Server, making packages available through HTTP and OData. keywords: NuGet feed, NuGet gallery, remote package feed, NuGet.Server ms.reviewer: diff --git a/docs/Hosting-Packages/Overview.md b/docs/Hosting-Packages/Overview.md index da6854f07..a701bbfa8 100644 --- a/docs/Hosting-Packages/Overview.md +++ b/docs/Hosting-Packages/Overview.md @@ -1,6 +1,4 @@ --- -# required metadata - title: Overview of Hosting Your Own NuGet Feeds | Microsoft Docs author: kraigb ms.author: kraigb @@ -8,26 +6,15 @@ manager: ghogen ms.date: 08/25/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 97577ddd-c294-432d-81a7-b4aebe88bd1c - -# optional metadata - description: An overview of opens for hosting your own NuGet package feeds or galleries either locally or remotely. keywords: NuGet feed, NuGet gallery, custom package feed, NuGet.Server -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan - anangaur -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # Hosting your own NuGet feeds Instead of making packages publicly available, you might want to release packages to only a limited audience, such as your organization or workgroup. In addition, some companies may want to restrict which third-party libraries their developers may use, and thus direct those developers to draw from a limited package source rather than nuget.org. diff --git a/docs/Policies/Deleting-Packages.md b/docs/Policies/Deleting-Packages.md index 059448cdf..039448b58 100644 --- a/docs/Policies/Deleting-Packages.md +++ b/docs/Policies/Deleting-Packages.md @@ -1,32 +1,19 @@ --- -# required metadata - title: Deleting NuGet Packages from nuget.org | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 01/18/2018 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: a348ca2e-0a5d-40ad-ba33-9bb37e1d980b - -# optional metadata - description: Policies for unlisting packages from nuget.org; permanent deletion is not supported except when packages violate other policies. keywords: NuGet package deletion, NuGet package unlisting, prohibited uses of packages -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # Deleting packages nuget.org does not support permanent deletion of packages. Doing so would break every project depending on the availability of the package, especially with build workflows that involve package restore. diff --git a/docs/Policies/Dispute-Resolution.md b/docs/Policies/Dispute-Resolution.md index d90f86adf..7320c9069 100644 --- a/docs/Policies/Dispute-Resolution.md +++ b/docs/Policies/Dispute-Resolution.md @@ -1,35 +1,22 @@ ---- -# required metadata - -title: “NuGet Package Name Dispute Resolution | Microsoft Docs” -author: kraigb -ms.author: kraigb -manager: ghogen -ms.date: 1/9/2017 -ms.topic: article -ms.prod: nuget -#ms.service: -ms.technology: null -ms.assetid: 6d664378-3f7b-426e-aef3-2254d745fe60 - -# optional metadata - +--- +title: "NuGet Package Name Dispute Resolution | Microsoft Docs" +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 01/18/2018 +ms.topic: article +ms.prod: nuget +ms.technology: null description: The process for resolving disputes between NuGet package publishers related to branding, trademarks, and other conflict situations. keywords: NuGet package disputes, NuGet dispute resolution, dispute resolution process -#ROBOTS: -#audience: -#ms.devlang: -ms.reviewer: -- karann-msft -- unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - +ms.reviewer: +- karann-msft +- unniravindranathan --- + # Resolving disputes over NuGet package names -This document is a recommended resolution process for community members to resolve disputes with other NuGet publishers. +This article provides a recommended resolution process for community members to resolve disputes with other NuGet publishers. For example, suppose that Northwind Traders makes a CRM system for which they provide client drivers as a downloadable MSI from their website. Nancy, an independent developer, wants to make it easier to use Northwind's client library, and turns it into a NuGet package called `NorthwindTraders.Client`. Later, Northwind wants to produce an official NuGet package of their own for their client library, and would thus like to dispute Nancy's ownership of the package name. @@ -37,9 +24,8 @@ In this scenario, Nancy does not appear to be acting with bad intentions, but is By following the process below, Northwind and Nancy can work together to a suitable resolution, because both are interested in serving the developer community. It's typically not necessary for the NuGet team to become involved; collaboration usually works out best. In fact, every dispute brought to the NuGet team's attention to date has been worked out without the team needing to pass judgment. - ## Process 1. Contact the owners of the package you have the dispute with using the **Contact Owners** link on the package details page. Explain your issue in a kind and direct manner. -2. Send a copy of your message to [support@nuget.org](mailto:support@nuget.org) so that NuGet and the .NET Foundation are aware of your dispute. -3. Wait a maximum of 30 days for a resolution, after which notify [support@nuget.org](mailto:support@nuget.org) again. The nuget.org support team will get involved and try to work through the dispute with both parties. +1. Send a copy of your message to [support@nuget.org](mailto:support@nuget.org) so that NuGet and the .NET Foundation are aware of your dispute. +1. Wait a maximum of 30 days for a resolution, then notify [support@nuget.org](mailto:support@nuget.org) again. The nuget.org support team will get involved and try to work through the dispute with both parties. diff --git a/docs/Policies/Ecosystem.md b/docs/Policies/Ecosystem.md index 8007c3240..08e1af954 100644 --- a/docs/Policies/Ecosystem.md +++ b/docs/Policies/Ecosystem.md @@ -1,32 +1,19 @@ --- -# required metadata - title: Overview of the NuGet Ecosystem | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 01/18/2018 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 8971dcf5-1d05-46e1-adf2-ce0f55521a49 - -# optional metadata - description: Comprehensive resources in the NuGet ecosystem including NuGet sources, non-Microsoft NuGet projects, utilities, and training materials. keywords: NuGet ecosystem, non-Microsoft NuGet projects, NuGet open source, NuGet utilities, NuGet training materials -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # An overview of the NuGet ecosystem Since it's introduction in 2010, NuGet has presented a great opportunity to improve and automate different aspects of the development processes. @@ -49,38 +36,37 @@ Microsoft has contributed extensively to the development of NuGet. All contribut Many other individuals and companies have made significant contributions to the NuGet ecosystem. Each project listed here may have a different license than the core NuGet components, so confirm that the license terms are acceptable prior to use: -* [AppVeyor CI](https://www.appveyor.com/) -* [Artifactory](https://www.jfrog.com/artifactory/) -* [BoxStarter](http://boxstarter.org/) -* [Chocolatey](https://chocolatey.org/) -* [CoApp](http://coapp.org/) -* [JetBrains ReSharper](https://resharper-plugins.jetbrains.com/) -* [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) -* [Klondike](https://github.com/themotleyfool/Klondike) -* [MinimalNugetServer](https://github.com/TanukiSharp/MinimalNugetServer) -* [MyGet (or NuGet-as-a-service)](http://www.myget.org/) -* [NuGet Package Explorer](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer) -* [NuGet Server](http://nugetserver.net/) -* [OctopusDeploy](https://octopus.com/) -* [Paket](https://fsprojects.github.io/Paket/) -* [ProGet (Inedo)](http://inedo.com/proget) -* [scriptcs](http://scriptcs.net/) -* [SharpDevelop](http://community.sharpdevelop.net/blogs/mattward/archive/2011/01/23/NuGetSupportInSharpDevelop.aspx) -* [Sonatype Nexus](http://www.sonatype.com/nexus-repository-sonatype) -* [SymbolSource](http://www.symbolsource.org/Public) -* [Xamarin and MonoDevelop](https://github.com/mrward/monodevelop-nuget-addin) - +- [AppVeyor CI](https://www.appveyor.com/) +- [Artifactory](https://www.jfrog.com/artifactory/) +- [BoxStarter](http://boxstarter.org/) +- [Chocolatey](https://chocolatey.org/) +- [CoApp](http://coapp.org/) +- [JetBrains ReSharper](https://resharper-plugins.jetbrains.com/) +- [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) +- [Klondike](https://github.com/themotleyfool/Klondike) +- [MinimalNugetServer](https://github.com/TanukiSharp/MinimalNugetServer) +- [MyGet (or NuGet-as-a-service)](http://www.myget.org/) +- [NuGet Package Explorer](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer) +- [NuGet Server](http://nugetserver.net/) +- [OctopusDeploy](https://octopus.com/) +- [Paket](https://fsprojects.github.io/Paket/) +- [ProGet (Inedo)](http://inedo.com/proget) +- [scriptcs](http://scriptcs.net/) +- [SharpDevelop](http://community.sharpdevelop.net/blogs/mattward/archive/2011/01/23/NuGetSupportInSharpDevelop.aspx) +- [Sonatype Nexus](http://www.sonatype.com/nexus-repository-sonatype) +- [SymbolSource](http://www.symbolsource.org/Public) +- [Xamarin and MonoDevelop](https://github.com/mrward/monodevelop-nuget-addin) ## Other NuGet-based utilities These are tools and utilities built on NuGet: -* [Glimpse Extensions](http://getglimpse.com/Packages) (plug-ins are packages) -* [NuGetMustHaves.com](http://nugetmusthaves.com/) -* [Orchard](http://www.orchardproject.net/) (CMS modules are fetched from a v1 NuGet feed hosted in the Orchard Gallery) -* [Java implementation of NuGet Server](http://jonnyzzz.com/blog/2012/03/07/nuget-server-in-pure-java/) -* [NuGetLatest](https://twitter.com/NuGetLatest) (Twitter bot tweeting new package publications) -* [DefinitelyTyped](http://definitelytyped.org/) ([Automatic](https://github.com/DefinitelyTyped/NugetAutomation/) TypeScript Type [Definitions published to NuGet](http://www.nuget.org/packages?q=DefinitelyTyped)) +- [Glimpse Extensions](http://getglimpse.com/Packages) (plug-ins are packages) +- [NuGetMustHaves.com](http://nugetmusthaves.com/) +- [Orchard](http://www.orchardproject.net/) (CMS modules are fetched from a v1 NuGet feed hosted in the Orchard Gallery) +- [Java implementation of NuGet Server](http://jonnyzzz.com/blog/2012/03/07/nuget-server-in-pure-java/) +- [NuGetLatest](https://twitter.com/NuGetLatest) (Twitter bot tweeting new package publications) +- [DefinitelyTyped](http://definitelytyped.org/) ([Automatic](https://github.com/DefinitelyTyped/NugetAutomation/) TypeScript Type [Definitions published to NuGet](http://www.nuget.org/packages?q=DefinitelyTyped)) ## Training materials and references @@ -91,8 +77,8 @@ That said, authoring packages–and especially good packages–along with embra - [NuGet Blog](http://blog.nuget.org/) - [NuGet team on Twitter, @nuget](http://twitter.com/nuget) - Books: - * [Apress Pro NuGet](http://bit.ly/ProNuGet) - * [NuGet 2 Essentials](http://www.amazon.com/NuGet-2-Essentials-Damir-Arh-ebook/dp/B00GTQD5M4) + - [Apress Pro NuGet](http://bit.ly/ProNuGet) + - [NuGet 2 Essentials](http://www.amazon.com/NuGet-2-Essentials-Damir-Arh-ebook/dp/B00GTQD5M4) ## Documentation for individual packages diff --git a/docs/Policies/Governance.md b/docs/Policies/Governance.md index a8ab950be..ede989bf8 100644 --- a/docs/Policies/Governance.md +++ b/docs/Policies/Governance.md @@ -1,32 +1,19 @@ --- -# required metadata - title: NuGet Project Governance | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 01/18/2018 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 94c088ce-ec96-4876-a210-fbdae743942c - -# optional metadata - description: The governance model for NuGet, including roles and responsibilities for committers, contributors, and users. keywords: NuGet governance, NuGet benevolent dictator, committer responsibilities, contributor responsibilities, user responsibilities -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet governance > This document is based upon the [Benevolent Dictator Governance Model](http://www.oss-watch.ac.uk/resources/benevolentdictatorgovernancemodel) by the University of Oxford. It is licensed under a [Creative Commons Attribution-ShareAlike 2.0 UK: England & Wales License](http://creativecommons.org/licenses/by-sa/2.0/uk/). @@ -39,7 +26,7 @@ It is the benevolent dictator’s job to resolve disputes within the community a There are four roles described here: Benevolent Dictator, Committers, Contributors, and Users. -### Benevolent Dictator +### Benevolent dictator The NuGet core team is self-appointed as Benevolent Dictator or project lead. However, because the community always has the ability to fork, the team is fully answerable to the community. The project lead is expected to understand the community as a whole and strive to satisfy as many conflicting needs as possible, while ensuring that the project survives in the long term. @@ -89,21 +76,22 @@ Users should be encouraged to participate in the life of NuGet and the community Users who continue to engage with the project and its community will often find themselves becoming more and more involved. Such users may then go on to become contributors, as described above. ## Package succession under special circumstances + In the unfortunate situation where a NuGet account holder is incapacitated or deceased, we’ll work with the community to add appropriate owner/s to the package where the said account has sole ownership and the package is published under an [OSI approved license](https://opensource.org/licenses/alphabetical). To request ownership you must send us the following documents: -1. A photocopy of your government-issued photo ID. -2. One of the following documents proving the previous account holder’s status: +1. A photocopy of your government-issued photo ID. +1. One of the following documents proving the previous account holder’s status: - An official, government-issued death certificate if the previous account holder is deceased, or, - A certified document such as a certificate signed by a medical professional in charge of the care of an incapacitated account holder. -3. One of the following documents proving your right to ownership: +1. One of the following documents proving your right to ownership: - Marriage certificate showing that you are the surviving spouse of the account holder, - Signed power of attorney, - Copy of a will or trust document naming you as executor or beneficiary, - Birth certificate for the account holder, if you are their parent, or, - Guardianship paperwork if you are a legal guardian of the account holder. - + If you find yourself in need of invoking this policy, please send us an email at [support@nuget.org](mailto:support@nuget.org) with the ID and version of the package. - + ## Transparency Building community trust in the governance of an open-source project is vital to its success. To that end, decision making must be done in a transparent, open fashion. Discussion about the project’s direction must be done publicly. The community should never be caught off-guard by a decision by the Benevolent Dictator. Additionally, discussion about project decisions must be archived so that community members can understand the entire history of a decision and its context. diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index f5eebabed..12b327ea4 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -7,7 +7,6 @@ ms.date: 01/11/2018 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: 199a915d-9595-4ae2-a1fb-b15da6d7735a description: Common questions and answers for using NuGet on the command line and in Visual Studio, and working with the NuGet gallery. keywords: NuGet Q&A, questions and answers, common problems, NuGet versions, package versions ms.reviewer: @@ -17,19 +16,6 @@ ms.reviewer: # NuGet frequently-asked questions -In this topic: - -- [Getting started](#getting-started) -- [NuGet in Visual Studio](#nuget-in-visual-studio) -- [NuGet command line](#nuget-command-line) -- [NuGet Package Manager Console](#nuget-package-manager-console) -- [Creating and publishing packages](#creating-and-publishing-packages) -- [Working with packages](#working-with-packages) -- [Managing packages on nuget.org](#managing-packages-on-nugetorg) -- [nuget.org not accessible](#nugetorg-not-accessible) - -## Getting started - **What is required to run NuGet?** All the information around both UI and command-line tools is available in the [Install guide](../guides/install-nuget.md). diff --git a/docs/Quickstart/Create-and-Publish-a-Package.md b/docs/Quickstart/Create-and-Publish-a-Package.md index b9f06b066..46a97f9d9 100644 --- a/docs/Quickstart/Create-and-Publish-a-Package.md +++ b/docs/Quickstart/Create-and-Publish-a-Package.md @@ -1,34 +1,22 @@ --- -# required metadata - title: Introductory Guide to Creating and Publishing a NuGet Package | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/3/2017 +ms.date: 10/03/2017 ms.topic: get-started-article ms.prod: nuget ms.technology: null -ms.assetid: 91781ed6-da5c-49f0-b973-16dd8ad84229 - -# optional metadata - description: A walkthrough tutorial on creating and publishing a NuGet package using both the nuget.exe command-line interface and Visual Studio. keywords: NuGet package creation, NuGet package publishing, NuGet tutorial ms.reviewer: - karann-msft - unniravindranathan - --- # Create and publish a package -It's a simple process to create a NuGet package from a .NET Class Library and publish it to nuget.org. The following steps walk you through the process using the NuGet command-line interface (CLI) and Visual Studio: - -- [Pre-requisites](#install-pre-requisites) -- [Create the .nuspec package manifest file](#create-the-nuspec-package-manifest-file) -- [Run the pack command](#run-the-pack-command) -- [Publish the package](#publish-the-package) +It's a simple process to create a NuGet package from a .NET Class Library and publish it to nuget.org. This article walks you through the process using the NuGet command-line interface (CLI) and Visual Studio. ## Pre-requisites @@ -50,7 +38,7 @@ Every NuGet package needs a manifest—a `.nuspec` file—to describe it 1. Run the NuGet CLI `spec` command to generate the manifest, which is named after your project, such as `AppLogger.nuspec`: - ``` + ```cli nuget spec ``` @@ -104,7 +92,7 @@ Every NuGet package needs a manifest—a `.nuspec` file—to describe it To build a NuGet package (a `.nupkg` file) from a project, run the `pack` command: -``` +```cli nuget pack AppLogger.csproj ``` @@ -132,13 +120,13 @@ Once you have a `.nupkg` file, you publish it to nuget.org using the `push` comm 1. At a command prompt, run the following command, specifying your package name and replacing the key with the value copied in step 4: - ``` + ```cli nuget push AppLogger.1.0.0.0.nupkg 47be3377-c434-4c29-8576-af7f6993a54b -Source https://api.nuget.org/v3/index.json ``` 1. nuget.exe displays the results of the publishing process: - ``` + ```output Pushing AppLogger.1.0.0.0.nupkg to 'https://www.nuget.org/api/v2/package'... PUT https://www.nuget.org/api/v2/package/ Created https://www.nuget.org/api/v2/package/ 6829ms diff --git a/docs/Quickstart/Use-a-Package.md b/docs/Quickstart/Use-a-Package.md index 2937fde67..20c0174ac 100644 --- a/docs/Quickstart/Use-a-Package.md +++ b/docs/Quickstart/Use-a-Package.md @@ -7,7 +7,6 @@ ms.date: 10/04/2017 ms.topic: get-started-article ms.prod: nuget ms.technology: null -ms.assetid: f31f8259-20a8-4617-880e-5819299372d2 description: A walkthrough tutorial on the process of installing and using a NuGet package in a project. keywords: install NuGet, NuGet package consumption, installing NuGet packages, NuGet package references, using NuGet packages ms.reviewer: diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index 4a222aea0..5d25ede6e 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -7,9 +7,6 @@ ms.date: 12/13/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: b76b8a00-7155-4163-b533-894086d2ef78 - -# optional metadata description: Complete reference for warnings and errors issued from NuGet during package restore keywords: NuGet errors, NuGet warnings, diagnostics ms.reviewer: @@ -29,7 +26,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | Group | Error Numbers | | --- | --- | | [Invalid input errors](#invalid-input-errors) | [NU1001](#nu1001), [NU1002](#nu1002), [NU1003](#nu1003) | -| [Missing package and project errors](#missing-package-and-project-errors) | [NU1100](#nu1100), [NU1101](#nu1101), [NU1102](#nu1102), [NU1103](#nu1103), [NU1104](#nu1104), [NU1105](#nu1105), [NU1106](#nu1106), [NU1107](#nu1107) (previously NU1607), [NU1108](#nu1107) (previously NU1606) | +| [Missing package and project errors](#missing-package-and-project-errors) | [NU1100](#nu1100), [NU1101](#nu1101), [NU1102](#nu1102), [NU1103](#nu1103), [NU1104](#nu1104), [NU1105](#nu1105), [NU1106](#nu1106), [NU1107](#nu1107) (previously NU1607), [NU1108](#nu1108) (previously NU1606) | | [Compatibility errors](#compatibility-errors) | [NU1201](#nu1201), [NU1202](#nu1202), [NU1203](#nu1203), [NU1401](#nu1401) | **Warnings** @@ -131,7 +128,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | **Common causes** | Packages contain dependency on exact versions of a package instead of open-ended ranges. | | **Example message** | *Unable to satisfy conflicting requests for {id}: {conflict path} Framework: {target graph}* | - ### NU1107 (Previously NU1607) @@ -141,7 +138,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | **Common causes** | Packages with dependency constraints on exact versions do not allow other packages to increase the version if needed. | | **Example message** | *Version conflict detected for NuGet.Versioning. Reference the package directly from the project to resolve this issue.
    NuGet.Packaging 3.5.0 -> NuGet.Versioning (= 3.5.0)
    NuGet.Configuration 4.0.0 -> NuGet.Versioning (= 4.0.0)* | - ### NU1108 (Previously NU1606) diff --git a/docs/Reference/ID-Prefix-Reservation.md b/docs/Reference/ID-Prefix-Reservation.md index 69fc8f427..ec1135810 100644 --- a/docs/Reference/ID-Prefix-Reservation.md +++ b/docs/Reference/ID-Prefix-Reservation.md @@ -1,57 +1,60 @@ --- -# required metadata - title: ID Prefix Reservation Reference | Microsoft Docs author: diverdan92 ms.author: diverdan92 manager: unniravindranathan -ms.date: 10/9/2017 +ms.date: 10/09/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 76c0bb7f-9aaf-4c09-b3fd-f6802f9dd602 - -# optional metadata - description: Package ID Prefix Reservation feature description and author guide. keywords: NuGet package ID, prefix, reservation ms.reviewer: - ananguar - karann-msft - unniravindranathan - --- # Package ID prefix reservation + +Package owners are can reserve and protect their identity by reserving ID prefixes. Package consumers are provided with additional information when consuming packages that the package they are consuming are not deceptive in their identifying properties. + [nuget.org](https://www.nuget.org/) and Visual Studio 2017 version 15.4 or later show a visual indicator for packages that are submitted by owners with a reserved package ID prefix, as long as the package matches the reserved ID prefix naming pattern. The below reference explains what the ID prefix reservation entails, and how an owner can apply for an ID prefix. -## What is package ID prefix reservation? -Package owners are able to reserve and protect their identity by reserving ID prefixes. Package consumers are provided with additional information when consuming packages that the package they are consuming are not deceptive in their identifying properties. Read on to see how ID prefix reservation works in details. +## ID prefix reservation details -## ID prefix reservation details When a package ID prefix is reserved, several things happen on the [nuget.org](https://www.nuget.org/) gallery, as well as in Visual Studio. In addition, there are advanced scenarios that are supported by ID prefix reservations, such as setting a prefix as 'public', delegating prefix subsets to multiple owners. -The below section describes the feature in detail, as well as the more advanced functionality. - ### ID prefix reservation on nuget.org + When a prefix is reserved on [nuget.org](https://www.nuget.org/), the following will happen: -1. A prefix reservation is associated with an owner or set of owners on [nuget.org](https://www.nuget.org/). -2. Whenever a package is submitted to [nuget.org](https://www.nuget.org/) with an ID that matches the reserved ID prefix, the package is rejected unless it originates from the owner(s) that reserved the ID prefix. -3. Any package that matches the reserved ID prefix and originates from the owner(s) that reserved the ID prefix will have a visual indicator in Visual Studio 2017 version 15.4 or later, and on [nuget.org](https://www.nuget.org/) indicating that the package is under a reserved ID prefix. This is true for both new package submissions as well as existing packages under the owner(s). **Note:** The indicator in Visual Studio will only appear if a single feed is selected as the package source. -4. All previously existing packages that match the reserved ID prefix, but are *not* owned by the owner of the reserved prefix will remain unchanged (they will not be unlisted, but they will also not have the visual indicator). In addition, owners of these packages will still be able to submit new versions to the package. + +1. A prefix reservation is associated with an owner or set of owners on [nuget.org](https://www.nuget.org/). + +1. Whenever a package is submitted to [nuget.org](https://www.nuget.org/) with an ID that matches the reserved ID prefix, the package is rejected unless it originates from the owner(s) that reserved the ID prefix. + +1. Any package that matches the reserved ID prefix and originates from the owner(s) that reserved the ID prefix will have a visual indicator in Visual Studio 2017 version 15.4 or later, and on [nuget.org](https://www.nuget.org/) indicating that the package is under a reserved ID prefix. This is true for both new package submissions as well as existing packages under the owner(s). **Note:** The indicator in Visual Studio appears only if a single feed is selected as the package source. + +1. All previously existing packages that match the reserved ID prefix, but are *not* owned by the owner of the reserved prefix will remain unchanged (they will not be unlisted, but they will also not have the visual indicator). In addition, owners of these packages will still be able to submit new versions to the package. These changes are based on the following conditions and impose several additional restrictions: -* Only one owner of a package needs to have the reserved prefix for the visual indicator to appear (for packages with multiple-owners). -* If there is more than one owner of a package where one or more owners has the reserved prefix and one or more owners does not have the reserved prefix, then only the owner(s) with the reserved prefix can remove other owner(s) with a reserved prefix. The owners who do not have the prefix reserved cannot remove owners with the prefix reserved. They can still remove other owners that also do not have the prefix reserved. - * Once a package has the visual indicator, it should *always* have the visual indicator (guaranteeing that at least one owner with the reserved prefix will always remain an owner) + +- Only one owner of a package needs to have the reserved prefix for the visual indicator to appear (for packages with multiple-owners). + +- If there is more than one owner of a package where one or more owners has the reserved prefix and one or more owners does not have the reserved prefix, then only the owner(s) with the reserved prefix can remove other owner(s) with a reserved prefix. The owners who do not have the prefix reserved cannot remove owners with the prefix reserved. They can still remove other owners that also do not have the prefix reserved. + +- Once a package has the visual indicator, it should *always* have the visual indicator (guaranteeing that at least one owner with the reserved prefix will always remain an owner) ### Advanced prefix reservation scenarios + There are several more advanced prefix reservation scenarios described below, including subprefix delegation, and marking prefixes as public. Below are the more advanced prefix reservations that can be made. -* During prefix reservation, the owner can request delegation of prefix subsets (or the prefix) to other owners. For example, if '[Microsoft](https://www.nuget.org/profiles/microsoft)' owns 'Microsoft.\*', but '[aspnet](https://www.nuget.org/profiles/aspnet)' wants to reserve 'Microsoft.AspNet.\*', '[Microsoft](https://www.nuget.org/profiles/microsoft)' can choose to delegate 'Microsoft.AspNet.\*' to the [aspnet](https://www.nuget.org/profiles/aspnet) account. -* During prefix reservation, the owner can choose to make a prefix public. This will still give them the visual indicator showing that the package originates from a reserved prefix, but it will **not** block future package submissions on the prefix for any owner. This is useful for open source projects with many contributors - the top or core contributors can have the prefix reserved, but it can still be open to all contributors. +- During prefix reservation, the owner can request delegation of prefix subsets (or the prefix) to other owners. For example, if '[Microsoft](https://www.nuget.org/profiles/microsoft)' owns 'Microsoft.\*', but '[aspnet](https://www.nuget.org/profiles/aspnet)' wants to reserve 'Microsoft.AspNet.\*', '[Microsoft](https://www.nuget.org/profiles/microsoft)' can choose to delegate 'Microsoft.AspNet.\*' to the [aspnet](https://www.nuget.org/profiles/aspnet) account. + +- During prefix reservation, the owner can choose to make a prefix public. This will still give them the visual indicator showing that the package originates from a reserved prefix, but it will **not** block future package submissions on the prefix for any owner. This is useful for open source projects with many contributors - the top or core contributors can have the prefix reserved, but it can still be open to all contributors. ### Prefix reservation visual indicator + When a package comes from a reserved prefix, you will see the below visual indicators on the [nuget.org](https://www.nuget.org/) gallery and in Visual Studio 2017 version 15.4 or later: **nuget.org Gallery** @@ -61,22 +64,31 @@ When a package comes from a reserved prefix, you will see the below visual indic ![Visual Studio](media/visual-studio-reserved-prefix.png) ## ID prefix reservation application process -To apply for a prefix reservation, follow the below steps. + 1. Review the acceptance [criteria for prefix ID reservation](#id-prefix-reservation-criteria). -2. Determine the namespaces you want to reserve, in addition to any [advanced prefix reservation scenarios](#advanced-prefix-reservation-scenarios) you may require. -3. Send a mail to [account@nuget.org](mailto:account@nuget.org) with the owner display name on [nuget.org](https://www.nuget.org/), as well as any reserved prefixes you are requesting. If you are delegating prefix subsets to multiple owners, make sure you mention all owner display names and prefix subsets. -After the application is submitted, you will be notified of acceptance or rejection (with the criteria that caused rejection). We may need to ask additional identifying questions to confirm owner identity. +1. Determine the namespaces you want to reserve, in addition to any [advanced prefix reservation scenarios](#advanced-prefix-reservation-scenarios) you may require. + +1. Send a mail to [account@nuget.org](mailto:account@nuget.org) with the owner display name on [nuget.org](https://www.nuget.org/), as well as any reserved prefixes you are requesting. If you are delegating prefix subsets to multiple owners, make sure you mention all owner display names and prefix subsets. + +After the application is submitted, you will be notified of acceptance or rejection (with the criteria that caused rejection). We may need to ask additional identifying questions to confirm owner identity. ### ID prefix reservation criteria -When reviewing any application for ID prefix reservation, the [nuget.org](https://www.nuget.org/) team will evalaute the application against the below criteria. Not all criteria needs to be met for a prefix to be reserved, but the application may be denied if there is not substantial evidence of the criteria being met (with an explanation given): + +When reviewing any application for ID prefix reservation, the [nuget.org](https://www.nuget.org/) team will evaluate the application against the below criteria. Not all criteria needs to be met for a prefix to be reserved, but the application may be denied if there is not substantial evidence of the criteria being met (with an explanation given): + 1. Does the package ID prefix properly and clearly identify the package owner? -2. Are a significant number of the packages that have already been submitted by the owner under the package ID prefix? -3. Is the package ID prefix something common that should not belong to any individual owner or organization? -4. Would *not* reserving the package ID prefix cause ambiguity and confusion for the community? -5. Are the identifying properties of the packages that match the package ID prefix clear and consistent (especially the package author)? -## 3rd party feed provider scenarios -If a 3rd party feed provider is interested in implementing their own service to provide prefix reservations, you can do so by modifying the search service in the NuGet V3 feed providers. The addition in the feed search service is to add the *verified* property, with examples for the V3 feeds below. The NuGet client will not support the added property in the V2 feed. +1. Are a significant number of the packages that have already been submitted by the owner under the package ID prefix? + +1. Is the package ID prefix something common that should not belong to any individual owner or organization? + +1. Would *not* reserving the package ID prefix cause ambiguity and confusion for the community? + +1. Are the identifying properties of the packages that match the package ID prefix clear and consistent (especially the package author)? + +## Third party feed provider scenarios + +If a third party feed provider is interested in implementing their own service to provide prefix reservations, you can do so by modifying the search service in the NuGet V3 feed providers. The addition in the feed search service is to add the *verified* property, with examples for the V3 feeds below. The NuGet client will not support the added property in the V2 feed. For more information, see the [documentation about the API's search service](../api/search-query-service-resource.md). diff --git a/docs/Reference/NuGet-Client-SDK.md b/docs/Reference/NuGet-Client-SDK.md index 201ceb920..caccc4756 100644 --- a/docs/Reference/NuGet-Client-SDK.md +++ b/docs/Reference/NuGet-Client-SDK.md @@ -1,24 +1,17 @@ --- -# required metadata  - title: NuGet v3 Client and NuGetGallery APIs | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 01/09/2018 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: d1a393b7-51b1-4840-b1a8-fdd76455077d - -# optional metadata - description: The NuGet and NuGetGallery APIs are evolving and not yet documented, but examples are available on Dave Glick's blog. keywords: NuGet API, NuGetGallery API, NuGet v3 libraries ms.reviewer: - karann-msft - unniravindranathan - --- # NuGet Client SDK diff --git a/docs/Reference/Package-Versioning.md b/docs/Reference/Package-Versioning.md index 35d69e29c..87c8e3bcf 100644 --- a/docs/Reference/Package-Versioning.md +++ b/docs/Reference/Package-Versioning.md @@ -7,7 +7,6 @@ ms.date: 12/08/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 6ee3c826-dd3a-4fa9-863f-1fd80bc4230f description: Exact details on specifying version numbers and ranges for other packages upon which a NuGet package depends, and how dependencies are installed. keywords: versioning, NuGet package dependencies, NuGet dependency versions, NuGet version numbers, NuGet package version, version ranges, version specifications, normalized version numbers ms.reviewer: @@ -38,12 +37,11 @@ A specific version number is in the form *Major.Minor.Patch[-Suffix]*, where the - *-Suffix* (optional): a hyphen followed by a string denoting a pre-release version (following the [Semantic Versioning or SemVer 1.0 convention](http://semver.org/spec/v1.0.0.html)). **Examples:** -``` -1.0.1 -6.11.1231 -4.3.1-rc -2.2.44-beta1 -``` + + 1.0.1 + 6.11.1231 + 4.3.1-rc + 2.2.44-beta1 > [!Important] > nuget.org rejects any package upload that lacks an exact version number. The version must be specified in the `.nuspec` or project file used to create the package. @@ -63,16 +61,14 @@ That said, package developers generally follow recognized naming conventions: When resolving package references and multiple package versions differ only by suffix, NuGet chooses a version without a suffix first, then applies precedence to pre-release versions in reverse alphabetical order. For example, the following versions would be chosen in the exact order shown: -``` -1.0.1 -1.0.1-zzz -1.0.1-rc -1.0.1-open -1.0.1-beta -1.0.1-alpha2 -1.0.1-alpha -1.0.1-aaa -``` + 1.0.1 + 1.0.1-zzz + 1.0.1-rc + 1.0.1-open + 1.0.1-beta + 1.0.1-alpha2 + 1.0.1-alpha + 1.0.1-aaa ## Semantic Versioning 2.0.0 @@ -118,7 +114,7 @@ When referring to package dependencies, NuGet supports using interval notation f | [1.0,2.0) | 1.0 ≤ x < 2.0 | Mixed inclusive minimum and exclusive maximum version | | (1.0) | invalid | invalid | -When using the PackageReference or `project.json` package reference formats, NuGet also supports using a wildcard notation, \*, for Major, Minor, Patch, and pre-release suffix parts of the number. Wildcards are not supported with the `packages.config` format. +When using the PackageReference format, NuGet also supports using a wildcard notation, \*, for Major, Minor, Patch, and pre-release suffix parts of the number. Wildcards are not supported with the `packages.config` format. > [!Note] > Pre-release versions are not included when resolving version ranges. Pre-release versions *are* included when using a wildcard (\*). The version range *[1.0,2.0]*, for example, does not include 2.0-beta, but the wildcard notation _2.0-*_ does. See [issue 912](https://github.com/NuGet/Home/issues/912) for further discussion on pre-release wildcards. @@ -223,18 +219,14 @@ When obtaining packages from a repository during install, reinstall, or restore - Leading zeroes are removed from version numbers: - ``` - 1.00 is treated as 1.0 - 1.01.1 is treated as 1.1.1 - 1.00.0.1 is treated as 1.0.0.1 - ``` + 1.00 is treated as 1.0 + 1.01.1 is treated as 1.1.1 + 1.00.0.1 is treated as 1.0.0.1 - A zero in the fourth part of the version number will be omitted - ``` - 1.0.0.0 is treated as 1.0.0 - 1.0.01.0 is treated as 1.0.1 - ``` + 1.0.0.0 is treated as 1.0.0 + 1.0.01.0 is treated as 1.0.1 This normalization does not affect the version numbers in the packages themselves; it affects only how NuGet matches versions when resolving dependencies. 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 f500378f8..2c3ea5e00 100644 --- a/docs/Reference/extensibility/NuGet-Credential-Providers-for-Visual-Studio.md +++ b/docs/Reference/extensibility/NuGet-Credential-Providers-for-Visual-Studio.md @@ -3,11 +3,10 @@ title: NuGet credential providers for Visual Studio | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 01/09/2017 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: 9c7f6d16-f437-47c4-82d4-6c996e0b18ec description: NuGet credential providers authenticate with feeds by implementing the IVsCredentialProvider interface in a Visual Studio extension. keywords: NuGet credential providers, authenticate with feed, authenticate with gallery, NuGet visual studio extension ms.reviewer: diff --git a/docs/Reference/extensibility/nuget-exe-Credential-Providers.md b/docs/Reference/extensibility/nuget-exe-Credential-Providers.md index f588bb90c..d866bec07 100644 --- a/docs/Reference/extensibility/nuget-exe-Credential-Providers.md +++ b/docs/Reference/extensibility/nuget-exe-Credential-Providers.md @@ -7,7 +7,6 @@ ms.date: 12/12/2017 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: 3cf592de-39f2-4e7f-a597-62635fdcedfa description: nuget.exe credential providers authenticate with a feed, and are implemented as command-line executables that follow specific conventions. keywords: nuget.exe credential providers, credential provider API, authenticate with feed, authenticate with gallery ms.reviewer: diff --git a/docs/Release-Notes/Index.md b/docs/Release-Notes/Index.md index c36654a9b..0d19bd72d 100644 --- a/docs/Release-Notes/Index.md +++ b/docs/Release-Notes/Index.md @@ -1,31 +1,17 @@ --- - -# required metadata - title: NuGet Release Notes | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 8/14/2017 +ms.date: 08/14/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 96dc77d4-93f9-4628-bef9-551721fe3754 - -# optional metadata description: Index of NuGet release notes and known issues for all versions. keywords: NuGet release notes, NuGet known issues -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Release Notes diff --git a/docs/Release-Notes/Known-Issues.md b/docs/Release-Notes/Known-Issues.md index 0a6e53166..ae4664bb7 100644 --- a/docs/Release-Notes/Known-Issues.md +++ b/docs/Release-Notes/Known-Issues.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet Known Issues | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -10,22 +8,11 @@ ms.topic: article ms.prod: nuget #ms.service: ms.technology: null -ms.assetid: 42e7a619-1c69-454b-8243-16e2f9f950d0 - -# optional metadata - description: Known issues with NuGet including authentication, package installation, and tools. keywords: NuGet known issues, NuGet problems -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Known Issues with NuGet @@ -79,7 +66,6 @@ install-package log4net FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand ``` - This is caused by the type library for the `VSLangProj.dll` COM component being unregistered on your system. This can happen, for example, when you have two versions of Visual Studio installed side-by-side and you then uninstall the older version. Doing so may inadvertently unregister the above COM library. **Solution:**: @@ -93,20 +79,16 @@ If the command fails, check to see if the file exists in that location. For more information about this error, see this [work item](https://nuget.codeplex.com/workitem/3609 "Work item 3609"). ## Build failure after package update in VS 2012 -The problem: You are using VS 2012 RTM. When updating NuGet packages, you get this message: -"One or more packages could not be completed uninstalled." and you are prompted to restart -Visual Studio. After VS restart, you get weird build errors. -The cause is that certain files in the old packages are locked by a background MSBuild process. -Even after VS restart, the background MSBuild process still uses the files in the old packages, -causing the build failures. +The problem: You are using VS 2012 RTM. When updating NuGet packages, you get this message: "One or more packages could not be completed uninstalled." and you are prompted to restart Visual Studio. After VS restart, you get weird build errors. + +The cause is that certain files in the old packages are locked by a background MSBuild process. Even after VS restart, the background MSBuild process still uses the files in the old packages, causing the build failures. The fix is to install VS 2012 Update, e.g. [VS 2012 Update 2](http://www.microsoft.com/download/details.aspx?id=38188). ## Upgrading to latest NuGet from an older version causes a signature verification error -If you are running VS 2010 SP1, you might run into the following error message when attempting to upgrade -NuGet if you have an older version installed. +If you are running VS 2010 SP1, you might run into the following error message when attempting to upgrade NuGet if you have an older version installed. ![Visual Studio Extension Installer](./media/Visual-Studio-Extension-Installer.png) @@ -117,8 +99,7 @@ Alternatively, the workaround is to simply uninstall NuGet (while running Visual ## Package Manager Console throws an exception when the Reflector Visual Studio Add-In is also installed. -When running the Package Manager console, you may run into the following exception message -if you have the Reflector VS Add-in installed. +When running the Package Manager console, you may run into the following exception message if you have the Reflector VS Add-in installed. The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(2950) : @@ -173,17 +154,13 @@ You might see these errors when trying to open the Package Manager Console: If so, follow the solution [discussed on StackOverflow](http://stackoverflow.com/questions/12638289/embedding-powershell-v2-0-in-net-app-on-windows-8-rtm) to fix them. -## The Add Package Library Reference dialog throws an exception if the solution contains InstallShield Limited Edition Project. +## The Add Package Library Reference dialog throws an exception if the solution contains InstallShield Limited Edition Project -We have identified that if your solution contains one or more InstallShield Limited Edition project, the **Add Package Library -Reference** dialog will throw an exception when opened. There is currently no workaround yet except either removing -InstallShield projects or unloading them. +We have identified that if your solution contains one or more InstallShield Limited Edition project, the **Add Package Library Reference** dialog will throw an exception when opened. There is currently no workaround yet except either removing InstallShield projects or unloading them. ## Uninstall Button Greyed out? NuGet Requires Admin Privileges to Install/Uninstall -If you try to uninstall NuGet via the Visual Studio Extension Manager, you may notice that the Uninstall button is disabled. -NuGet requires admin access to install and uninstall. Relaunch Visual Studio as an administrator to uninstall the extension. -NuGet does not require admin access to use it. +If you try to uninstall NuGet via the Visual Studio Extension Manager, you may notice that the Uninstall button is disabled. NuGet requires admin access to install and uninstall. Relaunch Visual Studio as an administrator to uninstall the extension. NuGet does not require admin access to use it. ## The Package Manager Console crashes when I open it in Windows XP. What's wrong? @@ -191,36 +168,30 @@ NuGet requires Powershell 2.0 runtime. Windows XP, by default, doesn't have Powe ## Visual Studio 2010 SP1 Beta crashes on exit if the Package Manager Console is open. -If you have installed Visual Studio 2010 SP1 Beta, you may notice that if you leave the Package Manager Console open -and close Visual Studio, it will crash. This is a known issue of Visual Studio and will be fixed in SP1 RTM release. -For now, just ignore the crash or uninstall SP1 Beta if you can. +If you have installed Visual Studio 2010 SP1 Beta, you may notice that if you leave the Package Manager Console open and close Visual Studio, it will crash. This is a known issue of Visual Studio and will be fixed in SP1 RTM release. For now, just ignore the crash or uninstall SP1 Beta if you can. ## The element 'metadata' ... has invalid child element exception occurs -If you installed packages built with a pre-release version of NuGet, you might encounter an error message stating -"The element 'metadata' in namespace 'schemas.microsoft.com/packaging/2010/07/nuspec.xsd' has invalid child element" when -running the RTM version of NuGet with that project. You'll need to uninstall and then re-install each package -using the RTM version of NuGet. +If you installed packages built with a pre-release version of NuGet, you might encounter an error message stating "The element 'metadata' in namespace 'schemas.microsoft.com/packaging/2010/07/nuspec.xsd' has invalid child element" when running the RTM version of NuGet with that project. You'll need to uninstall and then re-install each package using the RTM version of NuGet. -## Attempting to install or uninstall results in the error "Cannot create a file when that file already exists.” +## Attempting to install or uninstall results in the error "Cannot create a file when that file already exists." For some reason, Visual Studio extensions can get in a weird state where you've uninstalled the VSIX extension, but some files were left behind. To work around this issue: 1. Exit Visual Studio -2. Open the following folder (it might be on a different drive on your machine) +1. Open the following folder (it might be on a different drive on your machine) C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft Corporation\NuGet Package Manager\\ -3. Delete all the files with the *.deleteme* extensions. -4. Re-open Visual Studio +1. Delete all the files with the *.deleteme* extensions. +1. Re-open Visual Studio After following these steps, you should be able to continue. ## In rare cases, compiling with Code Analysis turned on causes error. -You might get the following error if you installs FluentNHibernate with the Package Manager console and then compile your project -with "Code Analysis" turned on. +You might get the following error if you installs FluentNHibernate with the Package Manager console and then compile your project with "Code Analysis" turned on. Error 3 CA0058 : The referenced assembly 'NHibernate, Version=3.0.0.2001, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' @@ -241,29 +212,23 @@ This is a known issue. Instead of calling Write-Error, try calling throw. throw "My error message" ## Installing NuGet with restricted access on Windows 2003 can crash Visual Studio -When attempting to install NuGet using the Visual Studio Extension Manager and not running -as an administrator, the “Run As” dialog is displayed with the checkbox labeled -“Run this program with restricted access” checked by default. + +When attempting to install NuGet using the Visual Studio Extension Manager and not running as an administrator, the “Run As” dialog is displayed with the checkbox labeled “Run this program with restricted access” checked by default. ![Run As Restricted Dialog](./media/RunAsRestricted.png) -Clicking OK with that checked crashes Visual Studio. Make sure to uncheck that option before -installing NuGet. +Clicking OK with that checked crashes Visual Studio. Make sure to uncheck that option before installing NuGet. ## Cannot uninstall NuGet for Windows Phone Tools -Windows Phone Tools does not have support for the Visual Studio Extension Manager. In order to -uninstall NuGet, run the following command. + +Windows Phone Tools does not have support for the Visual Studio Extension Manager. In order to uninstall NuGet, run the following command. vsixinstaller.exe /uninstall:NuPackToolsVsix.Microsoft.67e54e40-0ae3-42c5-a949-fddf5739e7a5 ## Changing the capitalization of NuGet package IDs breaks package restore -As discussed at length on [this GitHub issue](https://github.com/Particular/NServiceBus/issues/1271#issuecomment-20865932), -changing the capitalization of NuGet packages can be done by NuGet support, but causes -complications during package restore for users who have existing, differently-cased, packages -in their local package cache. We recommend only requesting a case change when you have a way to -communicate with existing users of your package about the break that may occur to their -build-time package restore. - -## Reporting Issues -For reporting issues on NuGet Clients, please go [here](https://nuget.codeplex.com/WorkItem/Create). -For reporting issues on NuGet Gallery, please go [here](https://github.com/nuget/nugetgallery/issues). + +As discussed at length on [this GitHub issue](https://github.com/Particular/NServiceBus/issues/1271#issuecomment-20865932), changing the capitalization of NuGet packages can be done by NuGet support, but causes complications during package restore for users who have existing, differently-cased, packages in their local package cache. We recommend only requesting a case change when you have a way to communicate with existing users of your package about the break that may occur to their build-time package restore. + +## Reporting issues + +To report NuGet issues, visit [https://github.com/nuget/home/issues](https://github.com/nuget/home/issues). diff --git a/docs/Release-Notes/NuGet-1.1.md b/docs/Release-Notes/NuGet-1.1.md index 9be71c6b4..7dce39b61 100644 --- a/docs/Release-Notes/NuGet-1.1.md +++ b/docs/Release-Notes/NuGet-1.1.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 1.0 and 1.1 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,24 +6,12 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 0e7688f7-09d2-4477-9fdf-0e27f572a4de - -# optional metadata - description: Release notes for NuGet 1.1 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 1.1 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # NuGet 1.0 and 1.1 Release Notes diff --git a/docs/Release-Notes/NuGet-1.2.md b/docs/Release-Notes/NuGet-1.2.md index 3f83f5f36..cfadb6981 100644 --- a/docs/Release-Notes/NuGet-1.2.md +++ b/docs/Release-Notes/NuGet-1.2.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 1.2 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,27 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 48f23141-b2ad-4cdf-8d81-7bb6b9419aa6 - -# optional metadata - description: Release notes for NuGet 1.2 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 1.2 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- - # NuGet 1.2 Release Notes [NuGet 1.0 and 1.1 Release Notes](../release-notes/nuget-1.1.md) | [NuGet 1.3 Release Notes](../release-notes/nuget-1.3.md) diff --git a/docs/Release-Notes/NuGet-1.3.md b/docs/Release-Notes/NuGet-1.3.md index eb730f4ad..82d8d8a31 100644 --- a/docs/Release-Notes/NuGet-1.3.md +++ b/docs/Release-Notes/NuGet-1.3.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 1.3 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,24 +6,12 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 5d1c2191-783f-4faa-b72e-356a59323d39 - -# optional metadata - description: Release notes for NuGet 1.3 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 1.3 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # NuGet 1.3 Release Notes diff --git a/docs/Release-Notes/NuGet-1.4.md b/docs/Release-Notes/NuGet-1.4.md index ce1f4ff10..bed3915ac 100644 --- a/docs/Release-Notes/NuGet-1.4.md +++ b/docs/Release-Notes/NuGet-1.4.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 1.4 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,27 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: e4856d0a-b408-4c60-ac51-f80ea06d9f79 - -# optional metadata - description: Release notes for NuGet 1.4 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 1.4 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- - # NuGet 1.4 Release Notes [NuGet 1.3 Release Notes](../release-notes/nuget-1.3.md) | [NuGet 1.5 Release Notes](../release-notes/nuget-1.5.md) diff --git a/docs/Release-Notes/NuGet-1.5.md b/docs/Release-Notes/NuGet-1.5.md index c0a55aac7..6da7c07cb 100644 --- a/docs/Release-Notes/NuGet-1.5.md +++ b/docs/Release-Notes/NuGet-1.5.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 1.5 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,28 +6,15 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 3ec1ff28-18fc-4d53-bd43-208619a7270a - -# optional metadata - description: Release notes for NuGet 1.5 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 1.5 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- - - # NuGet 1.5 Release Notes +# NuGet 1.5 Release Notes [NuGet 1.4 Release Notes](../release-notes/nuget-1.4.md) | [NuGet 1.6 Release Notes](../release-notes/nuget-1.6.md) @@ -49,6 +34,7 @@ advantage of. For more details about this feature, read this [blog post by the developer of the feature](http://blogs.msdn.com/b/marcinon/archive/2011/07/08/project-templates-and-preinstalled-nuget-packages.aspx). ### Explicit Assembly References + Added a new `` element used to explicitly specify which assemblies within the the package should be referenced. diff --git a/docs/Release-Notes/NuGet-1.6.md b/docs/Release-Notes/NuGet-1.6.md index 3cc57ba2b..7843ceaac 100644 --- a/docs/Release-Notes/NuGet-1.6.md +++ b/docs/Release-Notes/NuGet-1.6.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 1.6 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,27 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: ed433790-99bf-4b71-92a8-17314bd49867 - -# optional metadata - description: Release notes for NuGet 1.6 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 1.6 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- - # NuGet 1.6 Release Notes [NuGet 1.5 Release Notes](../release-notes/nuget-1.5.md) | [NuGet 1.7 Release Notes](../release-notes/nuget-1.7.md) diff --git a/docs/Release-Notes/NuGet-1.7.md b/docs/Release-Notes/NuGet-1.7.md index d1da00441..5f80d2768 100644 --- a/docs/Release-Notes/NuGet-1.7.md +++ b/docs/Release-Notes/NuGet-1.7.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 1.7 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,27 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: df7becc6-993d-4d06-8495-a0c26748bdfa - -# optional metadata - description: Release notes for NuGet 1.7 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 1.7 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- - # NuGet 1.7 Release Notes [NuGet 1.6 Release Notes](../release-notes/nuget-1.6.md) | [NuGet 1.8 Release Notes](../release-notes/nuget-1.8.md) diff --git a/docs/Release-Notes/NuGet-1.8.md b/docs/Release-Notes/NuGet-1.8.md index c286866fe..7c1490fd4 100644 --- a/docs/Release-Notes/NuGet-1.8.md +++ b/docs/Release-Notes/NuGet-1.8.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 1.8 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,27 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: e694ee1a-fe4c-4397-8d0a-7336be4dfebe - -# optional metadata - description: Release notes for NuGet 1.8 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 1.8 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- - # NuGet 1.8 Release Notes [NuGet 1.7 Release Notes](../release-notes/nuget-1.7.md) | [NuGet 2.0 Release Notes](../release-notes/nuget-2.0.md) diff --git a/docs/Release-Notes/NuGet-2.0.md b/docs/Release-Notes/NuGet-2.0.md index f9ad8ce2a..47d498095 100644 --- a/docs/Release-Notes/NuGet-2.0.md +++ b/docs/Release-Notes/NuGet-2.0.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 2.0 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,27 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 51c7e94f-0084-4c62-bfba-7dfd81675361 - -# optional metadata - description: Release notes for NuGet 2.0 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.0 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- - # NuGet 2.0 Release Notes [NuGet 1.8 Release Notes](../release-notes/nuget-1.8.md) | [NuGet 2.1 Release Notes](../release-notes/nuget-2.1.md) diff --git a/docs/Release-Notes/NuGet-2.1.md b/docs/Release-Notes/NuGet-2.1.md index e5cbfbb1b..0b961d1c8 100644 --- a/docs/Release-Notes/NuGet-2.1.md +++ b/docs/Release-Notes/NuGet-2.1.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 2.1 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,27 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 6f972803-9e17-43f5-b77b-973c3accf695 - -# optional metadata - description: Release notes for NuGet 2.1 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.1 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- - # NuGet 2.1 Release Notes [NuGet 2.0 Release Notes](../release-notes/nuget-2.0.md) | [NuGet 2.2 Release Notes](../release-notes/nuget-2.2.md) diff --git a/docs/Release-Notes/NuGet-2.12-RC.md b/docs/Release-Notes/NuGet-2.12-RC.md index 6b81c5ec4..514a62126 100644 --- a/docs/Release-Notes/NuGet-2.12-RC.md +++ b/docs/Release-Notes/NuGet-2.12-RC.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 2.12-RC Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,27 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 6681e034-528d-47a6-ab01-6191c687d42b - -# optional metadata - description: Release notes for NuGet 2.12 RC including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.12 RC release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- - # NuGet 2.12-RC Release Notes NuGet 2.12-RC was released June 22, 2016 as an update to the 2.12.0-rc VSIX for Visual Studio 2013. diff --git a/docs/Release-Notes/NuGet-2.12.md b/docs/Release-Notes/NuGet-2.12.md index 283ba8860..355b84220 100644 --- a/docs/Release-Notes/NuGet-2.12.md +++ b/docs/Release-Notes/NuGet-2.12.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 2.12 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,27 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 5e6ff968-6946-4689-8250-30b07a0c756a - -# optional metadata - description: Release notes for NuGet 2.12 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.12 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- - # NuGet 2.12 Release Notes NuGet 2.12 RTM was released June 27, 2016 for Visual Studio 2013 diff --git a/docs/Release-Notes/NuGet-2.2.1.md b/docs/Release-Notes/NuGet-2.2.1.md index dc719652a..d71408d78 100644 --- a/docs/Release-Notes/NuGet-2.2.1.md +++ b/docs/Release-Notes/NuGet-2.2.1.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 2.2.1 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 39ceaeb3-2d33-4b1c-b195-eba36c6cbf9a - -# optional metadata - description: Release notes for NuGet 2.2.1 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.2.1 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 2.2.1 Release Notes [NuGet 2.2 Release Notes](../release-notes/nuget-2.2.md) | [NuGet 2.5 Release Notes](../release-notes/nuget-2.5.md) diff --git a/docs/Release-Notes/NuGet-2.2.md b/docs/Release-Notes/NuGet-2.2.md index 9170f8f03..519255783 100644 --- a/docs/Release-Notes/NuGet-2.2.md +++ b/docs/Release-Notes/NuGet-2.2.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 2.2 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 25389d8c-e7db-4920-ab5e-cff20cebee7e - -# optional metadata - description: Release notes for NuGet 2.2 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.2 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 2.2 Release Notes [NuGet 2.1 Release Notes](../release-notes/nuget-2.1.md) | [NuGet 2.2.1 Release Notes](../release-notes/nuget-2.2.1.md) diff --git a/docs/Release-Notes/NuGet-2.5.md b/docs/Release-Notes/NuGet-2.5.md index ddb613318..0ab4427b3 100644 --- a/docs/Release-Notes/NuGet-2.5.md +++ b/docs/Release-Notes/NuGet-2.5.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 2.5 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: c193f1e3-d114-427f-9425-9930cc8e4db3 - -# optional metadata - description: Release notes for NuGet 2.5 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.5 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 2.5 Release Notes [NuGet 2.2.1 Release Notes](../release-notes/nuget-2.2.1.md) | [NuGet 2.6 Release Notes](../release-notes/nuget-2.6.md) 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 a184c7e37..fa2473bb9 100644 --- a/docs/Release-Notes/NuGet-2.6.1-for-WebMatrix.md +++ b/docs/Release-Notes/NuGet-2.6.1-for-WebMatrix.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 2.6.1 for WebMatrix Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,15 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 119ea65b-b38b-4a8c-a4ed-6ea06f1aad09 - -# optional metadata - description: Release notes for NuGet 2.6.1 for WebMatrix including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.6.1 for WebMatrix release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 2.6.1 for WebMatrix Release Notes [NuGet 2.6 Release Notes](../release-notes/nuget-2.6.md) | [NuGet 2.7 Release Notes](../release-notes/nuget-2.7.md) diff --git a/docs/Release-Notes/NuGet-2.6.md b/docs/Release-Notes/NuGet-2.6.md index c98af745f..976986989 100644 --- a/docs/Release-Notes/NuGet-2.6.md +++ b/docs/Release-Notes/NuGet-2.6.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 2.6 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: d99bbf29-2b9a-4dc5-a823-5eb4f9e30f7f - -# optional metadata - description: Release notes for NuGet 2.6 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.6 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 2.6 Release Notes [NuGet 2.5 Release Notes](../release-notes/nuget-2.5.md) | [NuGet 2.6.1 for WebMatrix Release Notes](../release-notes/nuget-2.6.1-for-webmatrix.md) diff --git a/docs/Release-Notes/NuGet-2.7.1.md b/docs/Release-Notes/NuGet-2.7.1.md index 4fff6e1b7..909dada7f 100644 --- a/docs/Release-Notes/NuGet-2.7.1.md +++ b/docs/Release-Notes/NuGet-2.7.1.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 2.7.1 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: fbe05ada-c15e-4fa2-ad70-898c0296de9e - -# optional metadata - description: Release notes for NuGet 2.7.1 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.7.1 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 2.7.1 Release Notes [NuGet 2.7 Release Notes](../release-notes/nuget-2.7.md) | [NuGet 2.7.2 Release Notes](../release-notes/nuget-2.7.2.md) diff --git a/docs/Release-Notes/NuGet-2.7.2.md b/docs/Release-Notes/NuGet-2.7.2.md index 14f8c03de..5b6dc87ed 100644 --- a/docs/Release-Notes/NuGet-2.7.2.md +++ b/docs/Release-Notes/NuGet-2.7.2.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 2.7.2 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: c775d1d7-de26-476c-bf9e-0cf95986a22f - -# optional metadata - description: Release notes for NuGet 2.7.2 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.7.2 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 2.7.2 Release Notes [NuGet 2.7.1 Release Notes](../release-notes/nuget-2.7.1.md) | [NuGet 2.8 Release Notes](../release-notes/nuget-2.8.md) diff --git a/docs/Release-Notes/NuGet-2.7.md b/docs/Release-Notes/NuGet-2.7.md index ea3a1dbc2..cb8a30564 100644 --- a/docs/Release-Notes/NuGet-2.7.md +++ b/docs/Release-Notes/NuGet-2.7.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 2.7 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: ba2edaad-4795-47a0-a572-d0e1716bd540 - -# optional metadata - description: Release notes for NuGet 2.7 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.7 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 2.7 Release Notes [NuGet 2.6.1 for WebMatrix Release Notes](../release-notes/nuget-2.6.1-for-webmatrix.md) | [NuGet 2.7.1 Release Notes](../release-notes/nuget-2.7.1.md) diff --git a/docs/Release-Notes/NuGet-2.8.1.md b/docs/Release-Notes/NuGet-2.8.1.md index d8441102c..3c9b856dd 100644 --- a/docs/Release-Notes/NuGet-2.8.1.md +++ b/docs/Release-Notes/NuGet-2.8.1.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 2.8.1 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: eebbbae4-fc6a-4c05-9102-4ec66b4c64a4 - -# optional metadata - description: Release notes for NuGet 2.8.1 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.8.1 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 2.8.1 Release Notes [NuGet 2.8 Release Notes](../release-notes/nuget-2.8.md) | [NuGet 2.8.2 Release Notes](../release-notes/nuget-2.8.2.md) diff --git a/docs/Release-Notes/NuGet-2.8.2.md b/docs/Release-Notes/NuGet-2.8.2.md index 2ee0b0cbc..98749783f 100644 --- a/docs/Release-Notes/NuGet-2.8.2.md +++ b/docs/Release-Notes/NuGet-2.8.2.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 2.8.2 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: bb547f5d-3c0e-4721-b2c7-3fc7e09c34de - -# optional metadata - description: Release notes for NuGet 2.8.2 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.8.2 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 2.8.2 Release Notes [NuGet 2.8.1 Release Notes](../release-notes/nuget-2.8.1.md) | [NuGet 2.8.3 Release Notes](../release-notes/nuget-2.8.3.md) diff --git a/docs/Release-Notes/NuGet-2.8.3.md b/docs/Release-Notes/NuGet-2.8.3.md index 66889645e..419a5ca52 100644 --- a/docs/Release-Notes/NuGet-2.8.3.md +++ b/docs/Release-Notes/NuGet-2.8.3.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 2.8.3 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 2c573368-c9e7-4284-9715-e71d4bba85dd - -# optional metadata - description: Release notes for NuGet 2.8.3 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.8.3 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 2.8.3 Release Notes [NuGet 2.8.2 Release Notes](../release-notes/nuget-2.8.2.md) | [NuGet 2.8.5 Release Notes](../release-notes/nuget-2.8.5.md) diff --git a/docs/Release-Notes/NuGet-2.8.5.md b/docs/Release-Notes/NuGet-2.8.5.md index 7bcecde98..a3238382f 100644 --- a/docs/Release-Notes/NuGet-2.8.5.md +++ b/docs/Release-Notes/NuGet-2.8.5.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 2.8.5 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 60b96b2e-2a61-4f10-b5ad-3299f5a6d453 - -# optional metadata - description: Release notes for NuGet 2.8.5 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.8.5 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 2.8.5 Release Notes [NuGet 2.8.3 Release Notes](../release-notes/nuget-2.8.3.md) | [NuGet 2.8.6 Release Notes](../release-notes/nuget-2.8.6.md) diff --git a/docs/Release-Notes/NuGet-2.8.6.md b/docs/Release-Notes/NuGet-2.8.6.md index adcbc759d..fba44ac2e 100644 --- a/docs/Release-Notes/NuGet-2.8.6.md +++ b/docs/Release-Notes/NuGet-2.8.6.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 2.8.6 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,15 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null ms.assetid: 920c551c-18a7-40f4-a32b-ce84de6ea766 - -# optional metadata - description: Release notes for NuGet 2.8.6 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.8.6 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 2.8.6 Release Notes [NuGet 2.8.5 Release Notes](../release-notes/nuget-2.8.5.md) | [NuGet 2.8.7 Release Notes](../release-notes/nuget-2.8.7.md) diff --git a/docs/Release-Notes/NuGet-2.8.7.md b/docs/Release-Notes/NuGet-2.8.7.md index 04b15225f..f525eea2d 100644 --- a/docs/Release-Notes/NuGet-2.8.7.md +++ b/docs/Release-Notes/NuGet-2.8.7.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 2.8.7 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: ca7ec738-142a-40ab-a9e5-282a8a89281b - -# optional metadata - description: Release notes for NuGet 2.8.7 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.8.7 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 2.8.7 Release Notes [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) diff --git a/docs/Release-Notes/NuGet-2.8.md b/docs/Release-Notes/NuGet-2.8.md index 7365948c3..7e3463834 100644 --- a/docs/Release-Notes/NuGet-2.8.md +++ b/docs/Release-Notes/NuGet-2.8.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 2.8 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 77ba98d8-3d66-4126-b2b6-813ddd8ef192 - -# optional metadata - description: Release notes for NuGet 2.8 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.8 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 2.8 Release Notes [NuGet 2.7.2 Release Notes](../release-notes/nuget-2.7.2.md) | [NuGet 2.8.1 Release Notes](../release-notes/nuget-2.8.1.md) diff --git a/docs/Release-Notes/NuGet-2.9-RC.md b/docs/Release-Notes/NuGet-2.9-RC.md index cec0114c3..9c36c1006 100644 --- a/docs/Release-Notes/NuGet-2.9-RC.md +++ b/docs/Release-Notes/NuGet-2.9-RC.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 2.9-RC Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 04d76a22-63b0-41d1-9c27-799f4b35058f - -# optional metadata - description: Release notes for NuGet 2.9 RC including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.9 RC release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 2.9-RC Release Notes [NuGet 2.8.7 Release Notes](../release-notes/nuget-2.8.7.md) | [NuGet 3.0 Preview Release Notes](../release-notes/nuget-3.0-preview.md) diff --git a/docs/Release-Notes/NuGet-3.0-Beta.md b/docs/Release-Notes/NuGet-3.0-Beta.md index 37cdc1407..1e83508b7 100644 --- a/docs/Release-Notes/NuGet-3.0-Beta.md +++ b/docs/Release-Notes/NuGet-3.0-Beta.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 3.0 Beta Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,24 +6,12 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 4153ff3f-f97f-4e54-b638-e844f70edf22 - -# optional metadata - description: Release notes for NuGet 3.0 Beta including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.0 Beta release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # 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 badae0b68..de3587839 100644 --- a/docs/Release-Notes/NuGet-3.0-Preview.md +++ b/docs/Release-Notes/NuGet-3.0-Preview.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 3.0 Preview Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 6762b6f8-82b7-4bab-a1f0-cd25e5dc1fb4 - -# optional metadata - description: Release notes for NuGet 3.0 Preview including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.0 Preview release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 3.0 Preview Release Notes [NuGet 2.9 RC Release Notes](../release-notes/nuget-2.9-rc.md) | [NuGet 3.0 Beta Release Notes](../release-notes/nuget-3.0-beta.md) diff --git a/docs/Release-Notes/NuGet-3.0-RC.md b/docs/Release-Notes/NuGet-3.0-RC.md index f57d912ee..64548b703 100644 --- a/docs/Release-Notes/NuGet-3.0-RC.md +++ b/docs/Release-Notes/NuGet-3.0-RC.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 3.0 RC Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: cd0c102f-bc33-4aa2-a921-61fa21d42b28 - -# optional metadata - description: Release notes for NuGet 3.0 RC including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.0 RC release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 3.0 RC Release Notes [NuGet 3.0 Beta Release Notes](../release-notes/nuget-3.0-beta.md) | [NuGet 3.0 RC2 Release Notes](../release-notes/nuget-3.0-RC2.md) diff --git a/docs/Release-Notes/NuGet-3.0-RC2.md b/docs/Release-Notes/NuGet-3.0-RC2.md index fe8461dab..e87517a71 100644 --- a/docs/Release-Notes/NuGet-3.0-RC2.md +++ b/docs/Release-Notes/NuGet-3.0-RC2.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 3.0 RC2 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 20f9b360-2d78-4676-a803-e86996eb2f10 - -# optional metadata - description: Release notes for NuGet 3.0 RC2 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.0 RC2 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 3.0 RC2 Release Notes [NuGet 3.0 RC Release Notes](../release-notes/nuget-3.0-RC.md) | [NuGet 3.0 Release Notes](../release-notes/nuget-3.0.0.md) diff --git a/docs/Release-Notes/NuGet-3.0.0.md b/docs/Release-Notes/NuGet-3.0.0.md index ea0f32c5b..5b5033c11 100644 --- a/docs/Release-Notes/NuGet-3.0.0.md +++ b/docs/Release-Notes/NuGet-3.0.0.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 3.0 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 8ad13a67-9348-4f04-8f8b-b8f4a0b2c6df - -# optional metadata - description: Release notes for NuGet 3.0.0 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.0.0 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 3.0 Release Notes [NuGet 3.0 RC2 Release Notes](../release-notes/nuget-3.0-RC2.md) | [NuGet 3.1 Release Notes](../release-notes/nuget-3.1.md) diff --git a/docs/Release-Notes/NuGet-3.1.1.md b/docs/Release-Notes/NuGet-3.1.1.md index 39b0d9879..18ba8d62b 100644 --- a/docs/Release-Notes/NuGet-3.1.1.md +++ b/docs/Release-Notes/NuGet-3.1.1.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 3.1.1 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 18bef6a3-b794-4a93-85a4-76972c8ece1b - -# optional metadata - description: Release notes for NuGet 3.1.1 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.1.1 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 3.1.1 Release Notes [NuGet 3.1 Release Notes](../release-notes/nuget-3.1.md) | [NuGet 3.2-RC Release Notes](../release-notes/nuget-3.2-RC.md) diff --git a/docs/Release-Notes/NuGet-3.1.md b/docs/Release-Notes/NuGet-3.1.md index 17e878eb2..8d02398f6 100644 --- a/docs/Release-Notes/NuGet-3.1.md +++ b/docs/Release-Notes/NuGet-3.1.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 3.1 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,25 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 0fc4d89a-ccca-4d63-85bf-461cd9ced882 - -# optional metadata - description: Release notes for NuGet 3.1 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.1 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet 3.1 Release Notes [NuGet 3.0 Release Notes](../release-notes/nuget-3.0.0.md) | [NuGet 3.1.1 Release Notes](../release-notes/nuget-3.1.1.md) diff --git a/docs/Release-Notes/NuGet-3.2-RC.md b/docs/Release-Notes/NuGet-3.2-RC.md index db9e6d012..adbd5f38a 100644 --- a/docs/Release-Notes/NuGet-3.2-RC.md +++ b/docs/Release-Notes/NuGet-3.2-RC.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 3.2 RC Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,24 +6,12 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 330577fa-7965-4433-98ad-b4b4575e1452 - -# optional metadata - description: Release notes for NuGet 3.2 RC including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.2 RC release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # NuGet 3.2 RC Release Notes diff --git a/docs/Release-Notes/NuGet-3.2.1.md b/docs/Release-Notes/NuGet-3.2.1.md index 9baa58a49..c5553c019 100644 --- a/docs/Release-Notes/NuGet-3.2.1.md +++ b/docs/Release-Notes/NuGet-3.2.1.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 3.2.1 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,27 +6,14 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: d27c3bb9-8db1-439a-a134-54e20b7a7766 - -# optional metadata - description: Release notes for NuGet 3.2.1 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.2.1 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- - # NuGet 3.2.1 Release Notes [NuGet 3.2 Release Notes](../release-notes/nuget-3.2.md) | [NuGet 3.3 Release Notes](../release-notes/nuget-3.3.md) diff --git a/docs/Release-Notes/NuGet-3.2.md b/docs/Release-Notes/NuGet-3.2.md index 62918b4aa..802545b45 100644 --- a/docs/Release-Notes/NuGet-3.2.md +++ b/docs/Release-Notes/NuGet-3.2.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 3.2 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,24 +6,12 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 70316f35-f046-4f72-98e0-736de172e918 - -# optional metadata - description: Release notes for NuGet 3.2 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.2 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # NuGet 3.2 Release Notes diff --git a/docs/Release-Notes/NuGet-3.3.md b/docs/Release-Notes/NuGet-3.3.md index cbed7e809..0ff0148cb 100644 --- a/docs/Release-Notes/NuGet-3.3.md +++ b/docs/Release-Notes/NuGet-3.3.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 3.3 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,24 +6,12 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 4110a36a-cffe-4038-8da4-e841bce6e94b - -# optional metadata - description: Release notes for NuGet 3.3 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.3 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # NuGet 3.3 Release Notes diff --git a/docs/Release-Notes/NuGet-3.4-RC.md b/docs/Release-Notes/NuGet-3.4-RC.md index de85223aa..1335202d4 100644 --- a/docs/Release-Notes/NuGet-3.4-RC.md +++ b/docs/Release-Notes/NuGet-3.4-RC.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 3.4-RC Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,24 +6,12 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 239d3d95-5a72-4fac-8389-b6deac27884d - -# optional metadata - description: Release notes for NuGet 3.4 RC including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.4 RC release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # NuGet 3.4-RC Release Notes @@ -34,9 +20,9 @@ ms.reviewer: NuGet 3.4-RC was released March 3, 2016 alongside the Visual Studio 2015 Update 2 RC and was built with a few tenets in minds: -* Cross-Platform support -* Performance improvements -* Minor UI improvements +* Cross-Platform support +* Performance improvements +* Minor UI improvements The following features are available in this RC, with more planned for the 3.4 final release. diff --git a/docs/Release-Notes/NuGet-3.4.1.md b/docs/Release-Notes/NuGet-3.4.1.md index dba7e0978..e8028c040 100644 --- a/docs/Release-Notes/NuGet-3.4.1.md +++ b/docs/Release-Notes/NuGet-3.4.1.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 3.4.1 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,24 +6,12 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: b016587f-0203-46c7-983d-abb03766f162 - -# optional metadata - description: Release notes for NuGet 3.4.1 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.4.1 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # NuGet 3.4.1 Release Notes diff --git a/docs/Release-Notes/NuGet-3.4.2.md b/docs/Release-Notes/NuGet-3.4.2.md index 9ed03cfcd..4cfa5eed8 100644 --- a/docs/Release-Notes/NuGet-3.4.2.md +++ b/docs/Release-Notes/NuGet-3.4.2.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 3.4.2 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,24 +6,12 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: b514da09-da1f-416b-9bfc-692f08fb6957 - -# optional metadata - description: Release notes for NuGet 3.4.2 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.4.2 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # NuGet 3.4.2 Release Notes @@ -45,7 +31,7 @@ You can download the release candidate of nuget.exe 3.4.2 [here](https://dist.nu * In addition to this change, we have fixed an issue where we were hitting the network twice when fetching the update count in the VS UI. This was partially responsible for some timeout issues customers experienced in 3.4/3.4.1. * Added support for no_proxy setting -##Fixes +## Fixes * Fixed an issue where nuget.org source was missing in NuGet settings or config after updating to 3.4.1. * Fixed an issue where a casing change to FindPackagesById in 3.4.1 breaks Artifactory. diff --git a/docs/Release-Notes/NuGet-3.4.3.md b/docs/Release-Notes/NuGet-3.4.3.md index 93fbf10bb..93a5e5b12 100644 --- a/docs/Release-Notes/NuGet-3.4.3.md +++ b/docs/Release-Notes/NuGet-3.4.3.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 3.4.3 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,24 +6,12 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 60af25ad-e899-43ac-9236-8b8cb167bcde - -# optional metadata - description: Release notes for NuGet 3.4.3 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.4.3 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # NuGet 3.4.3 Release Notes diff --git a/docs/Release-Notes/NuGet-3.4.4.md b/docs/Release-Notes/NuGet-3.4.4.md index b22570cf4..e93423b26 100644 --- a/docs/Release-Notes/NuGet-3.4.4.md +++ b/docs/Release-Notes/NuGet-3.4.4.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 3.4.4 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,24 +6,12 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 6f0aa9bb-75e5-429d-9954-3cb41a909c14 - -# optional metadata - description: Release notes for NuGet 3.4.4 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.4.4 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # NuGet 3.4.4 Release Notes diff --git a/docs/Release-Notes/NuGet-3.4.md b/docs/Release-Notes/NuGet-3.4.md index d309e0cd2..a265dee1b 100644 --- a/docs/Release-Notes/NuGet-3.4.md +++ b/docs/Release-Notes/NuGet-3.4.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 3.4 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,24 +6,12 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 80a429f5-7569-4349-ad7f-4fe9218eac23 - -# optional metadata - description: Release notes for NuGet 3.4 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.4 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # NuGet 3.4 Release Notes diff --git a/docs/Release-Notes/NuGet-3.5-Beta.md b/docs/Release-Notes/NuGet-3.5-Beta.md index 5b97767c9..99e7d5cab 100644 --- a/docs/Release-Notes/NuGet-3.5-Beta.md +++ b/docs/Release-Notes/NuGet-3.5-Beta.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 3.5 Beta Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,24 +6,12 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 14fa0ed9-b82a-45d0-af7d-1d817d68df38 - -# optional metadata - description: Release notes for NuGet 3.5 Beta including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.5 Beta release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # NuGet 3.5 Beta Release Notes diff --git a/docs/Release-Notes/NuGet-3.5-Beta2.md b/docs/Release-Notes/NuGet-3.5-Beta2.md index 317f8ee40..43a10735b 100644 --- a/docs/Release-Notes/NuGet-3.5-Beta2.md +++ b/docs/Release-Notes/NuGet-3.5-Beta2.md @@ -1,6 +1,4 @@ --- -# required metadata - title: 3.5 Beta2 Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,27 +6,15 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 0b76064f-0607-438a-bbf8-dd862690f48e - -# optional metadata - description: Release notes for NuGet 3.5 Beta 2 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.5 Beta 2 release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- -# 3.5 Beta2 Release Notes +# NuGet 3.5 Beta2 Release Notes [NuGet 3.5-Beta Release Notes](../release-notes/nuget-3.5-Beta.md) | [NuGet 3.5-RC Release Notes](../release-notes/nuget-3.5-RC.md) diff --git a/docs/Release-Notes/NuGet-3.5-RC.md b/docs/Release-Notes/NuGet-3.5-RC.md index 3bb2724e2..b6e1c42b5 100644 --- a/docs/Release-Notes/NuGet-3.5-RC.md +++ b/docs/Release-Notes/NuGet-3.5-RC.md @@ -1,6 +1,4 @@ --- -# required metadata - title: 3.5 RC Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,27 +6,15 @@ manager: ghogen ms.date: 11/11/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 75a9b496-5762-48b6-922f-fdddf1369c45 - -# optional metadata - description: Release notes for NuGet 3.5 RC including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.5 RC release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- -#3.5 RC Release Notes +# NuGet 3.5 RC Release Notes [NuGet 3.5-Beta2 Release Notes](../release-notes/nuget-3.5-Beta2.md) | [NuGet 3.5-RTM Release Notes](../release-notes/nuget-3.5-RTM.md) diff --git a/docs/Release-Notes/NuGet-3.5-RTM.md b/docs/Release-Notes/NuGet-3.5-RTM.md index 770ab6e37..ec0e5c46e 100644 --- a/docs/Release-Notes/NuGet-3.5-RTM.md +++ b/docs/Release-Notes/NuGet-3.5-RTM.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 3.5 Beta Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -9,19 +7,14 @@ ms.date: 11/11/2016 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: 082a96b9-607b-4225-864d-e1cea537f591 - -# optional metadata - description: Release notes for NuGet 3.5 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 3.5 release notes, bug fixes, known issues, added features, DCRs ms.reviewer: - karann-msft - unniravindranathan - --- -#NuGet 3.5 Release Notes +# NuGet 3.5 Release Notes [NuGet 3.5-RC Release Notes](../release-notes/nuget-3.5-RC.md) | [NuGet 4.0 RC Release Notes](../release-notes/nuget-4.0-RC.md) diff --git a/docs/Release-Notes/NuGet-4.0-RC.md b/docs/Release-Notes/NuGet-4.0-RC.md index f308f2bc2..358341838 100644 --- a/docs/Release-Notes/NuGet-4.0-RC.md +++ b/docs/Release-Notes/NuGet-4.0-RC.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 4.0 RC Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,26 +6,14 @@ manager: ghogen ms.date: 11/17/2016 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: fa64825d-5908-4abe-9792-d70766d6e2ff - -# optional metadata - description: Release notes for NuGet 4.0 RC including known issues, bug fixes, added features, and DCRs. keywords: NuGet 4.0 RC release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - kraigb -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- -# 4.0 RC Release Notes +# NuGet 4.0 RC Release Notes [NuGet 3.5 RTM Release Notes](../release-notes/nuget-3.5-RTM.md) @@ -35,161 +21,160 @@ ms.reviewer: ## Bug Fixes -* Behavioral changes in `dotnet pack --version-suffix foo` - [#3838](https://github.com/NuGet/Home/issues/3838) - -* nuget.exe restore on vs "15" machine only fails - [#3834](https://github.com/NuGet/Home/issues/3834) +- Behavioral changes in `dotnet pack --version-suffix foo` - [#3838](https://github.com/NuGet/Home/issues/3838) -* .NETCore file new project should block the build during restore - [#3780](https://github.com/NuGet/Home/issues/3780) +- nuget.exe restore on vs "15" machine only fails - [#3834](https://github.com/NuGet/Home/issues/3834) -* ASP.NET Core web app, migrated from VS2015 to VS "15", unable to restore. - [#3773](https://github.com/NuGet/Home/issues/3773) +- .NETCore file new project should block the build during restore - [#3780](https://github.com/NuGet/Home/issues/3780) -* [Test Failure]Package ‘jQuery Validation’ can’t be uninstalled by PM UI - [#3755](https://github.com/NuGet/Home/issues/3755) +- ASP.NET Core web app, migrated from VS2015 to VS "15", unable to restore. - [#3773](https://github.com/NuGet/Home/issues/3773) -* When a package is installed to UWP `project.json`, parent projects should also be restored - [#3731](https://github.com/NuGet/Home/issues/3731) +- [Test Failure]Package ‘jQuery Validation’ can’t be uninstalled by PM UI - [#3755](https://github.com/NuGet/Home/issues/3755) -* Modify the NuGet targets to log the package sources as High verbosity instead of Normal - [#3719](https://github.com/NuGet/Home/issues/3719) +- When a package is installed to UWP `project.json`, parent projects should also be restored - [#3731](https://github.com/NuGet/Home/issues/3731) -* dotnet pack3 should include XML documentation by default - [#3698](https://github.com/NuGet/Home/issues/3698) +- Modify the NuGet targets to log the package sources as High verbosity instead of Normal - [#3719](https://github.com/NuGet/Home/issues/3719) -* Batch update fails from UI when source without the package is first and All source is selected - [#3696](https://github.com/NuGet/Home/issues/3696) +- dotnet pack3 should include XML documentation by default - [#3698](https://github.com/NuGet/Home/issues/3698) -* Nuget pack command does not include all files - [#3678](https://github.com/NuGet/Home/issues/3678) +- Batch update fails from UI when source without the package is first and All source is selected - [#3696](https://github.com/NuGet/Home/issues/3696) -* OOM issue - [#3661](https://github.com/NuGet/Home/issues/3661) +- Nuget pack command does not include all files - [#3678](https://github.com/NuGet/Home/issues/3678) -* ProjectFileDependencyGroups section of the assets file should use library names for projects - [#3611](https://github.com/NuGet/Home/issues/3611) +- OOM issue - [#3661](https://github.com/NuGet/Home/issues/3661) -* "dotnet restore" and recursing directories - [#3517](https://github.com/NuGet/Home/issues/3517) +- ProjectFileDependencyGroups section of the assets file should use library names for projects - [#3611](https://github.com/NuGet/Home/issues/3611) -* Restore3 failures are logged as warnings instead of errors - [#3503](https://github.com/NuGet/Home/issues/3503) +- "dotnet restore" and recursing directories - [#3517](https://github.com/NuGet/Home/issues/3517) -* TFS issue: "[file]not be found in your workspace, or you do not have permission to access it" - [#2805](https://github.com/NuGet/Home/issues/2805) +- Restore3 failures are logged as warnings instead of errors - [#3503](https://github.com/NuGet/Home/issues/3503) -* Typing "nuget " in vs quicklaunch search box keeps "nuget " prefix - [#2719](https://github.com/NuGet/Home/issues/2719) +- TFS issue: "[file]not be found in your workspace, or you do not have permission to access it" - [#2805](https://github.com/NuGet/Home/issues/2805) -* System.Xml.XmlException: Unrecognized root element in Core Properties part. Line 2, position 2. - [#2718](https://github.com/NuGet/Home/issues/2718) +- Typing "nuget " in vs quicklaunch search box keeps "nuget " prefix - [#2719](https://github.com/NuGet/Home/issues/2719) -* `.nuspec` with escaped < or > in text fields no longer builds - [#2651](https://github.com/NuGet/Home/issues/2651) +- System.Xml.XmlException: Unrecognized root element in Core Properties part. Line 2, position 2. - [#2718](https://github.com/NuGet/Home/issues/2718) -* nuget.exe delete won't prompt for credentials (it's in non-interactive mode) - [#2626](https://github.com/NuGet/Home/issues/2626) +- `.nuspec` with escaped < or > in text fields no longer builds - [#2651](https://github.com/NuGet/Home/issues/2651) -* nuget.exe delete warns about API Key for local sources, even though it makes no sense - [#2625](https://github.com/NuGet/Home/issues/2625) +- nuget.exe delete won't prompt for credentials (it's in non-interactive mode) - [#2626](https://github.com/NuGet/Home/issues/2626) -* Error experience poor when installing EF -pre package - [#2566](https://github.com/NuGet/Home/issues/2566) +- nuget.exe delete warns about API Key for local sources, even though it makes no sense - [#2625](https://github.com/NuGet/Home/issues/2625) -* Visual Studio crashed attempting after changing selection in Package Manager - [#2551](https://github.com/NuGet/Home/issues/2551) +- Error experience poor when installing EF -pre package - [#2566](https://github.com/NuGet/Home/issues/2566) -* Dotnet restore performs case sensitive Id lookups on flat-list local repositories when floating versions are used - [#2516](https://github.com/NuGet/Home/issues/2516) +- Visual Studio crashed attempting after changing selection in Package Manager - [#2551](https://github.com/NuGet/Home/issues/2551) -* nuget.exe delete is broken for V2 feed - [#2509](https://github.com/NuGet/Home/issues/2509) +- Dotnet restore performs case sensitive Id lookups on flat-list local repositories when floating versions are used - [#2516](https://github.com/NuGet/Home/issues/2516) -* nuget.exe push timeout needs a better error message - [#2503](https://github.com/NuGet/Home/issues/2503) +- nuget.exe delete is broken for V2 feed - [#2509](https://github.com/NuGet/Home/issues/2509) -* Tool restore without proper imports silently fails. - [#2462](https://github.com/NuGet/Home/issues/2462) +- nuget.exe push timeout needs a better error message - [#2503](https://github.com/NuGet/Home/issues/2503) -* NuGet prompts to enter credentials when there is a private feed even when installing from nuget.org - [#2346](https://github.com/NuGet/Home/issues/2346) +- Tool restore without proper imports silently fails. - [#2462](https://github.com/NuGet/Home/issues/2462) -* ApplicationInsights 2.0 package is listed but doesn't exist yet - [#2317](https://github.com/NuGet/Home/issues/2317) +- NuGet prompts to enter credentials when there is a private feed even when installing from nuget.org - [#2346](https://github.com/NuGet/Home/issues/2346) -* UIDelay in VS "15" preview 5 branch - [#3500](https://github.com/NuGet/Home/issues/3500) +- ApplicationInsights 2.0 package is listed but doesn't exist yet - [#2317](https://github.com/NuGet/Home/issues/2317) -* First OnBuild event is missed for Restore during Build for UWP - [#3489](https://github.com/NuGet/Home/issues/3489) +- UIDelay in VS "15" preview 5 branch - [#3500](https://github.com/NuGet/Home/issues/3500) -* PowerShell5 breaks EntityFramework install? - [#3312](https://github.com/NuGet/Home/issues/3312) +- First OnBuild event is missed for Restore during Build for UWP - [#3489](https://github.com/NuGet/Home/issues/3489) -* Add source to detailed logging (consider for 3.5) - [#3294](https://github.com/NuGet/Home/issues/3294) +- PowerShell5 breaks EntityFramework install? - [#3312](https://github.com/NuGet/Home/issues/3312) -* NoCache parameter not honored in nuget client version 3.4+ - [#3074](https://github.com/NuGet/Home/issues/3074) +- Add source to detailed logging (consider for 3.5) - [#3294](https://github.com/NuGet/Home/issues/3294) -* When a credential provider fails to load in VS, don't break NuGet - [#2422](https://github.com/NuGet/Home/issues/2422) +- NoCache parameter not honored in nuget client version 3.4+ - [#3074](https://github.com/NuGet/Home/issues/3074) +- When a credential provider fails to load in VS, don't break NuGet - [#2422](https://github.com/NuGet/Home/issues/2422) ## Features -* Set up CI to run x86 - [#3868](https://github.com/NuGet/Home/issues/3868) +- Set up CI to run x86 - [#3868](https://github.com/NuGet/Home/issues/3868) -* Auto Restore 3/3: non blocking UI - [#3658](https://github.com/NuGet/Home/issues/3658) +- Auto Restore 3/3: non blocking UI - [#3658](https://github.com/NuGet/Home/issues/3658) -* Auto Restore 2/3: background restore on nomination - [#3657](https://github.com/NuGet/Home/issues/3657) +- Auto Restore 2/3: background restore on nomination - [#3657](https://github.com/NuGet/Home/issues/3657) -* Restore project refs to match build behavior (recurse) - [#3615](https://github.com/NuGet/Home/issues/3615) +- Restore project refs to match build behavior (recurse) - [#3615](https://github.com/NuGet/Home/issues/3615) -* DPL support in VS "15" - minbar - [#3614](https://github.com/NuGet/Home/issues/3614) +- DPL support in VS "15" - minbar - [#3614](https://github.com/NuGet/Home/issues/3614) -* Move settings file to Program Files - [#3613](https://github.com/NuGet/Home/issues/3613) +- Move settings file to Program Files - [#3613](https://github.com/NuGet/Home/issues/3613) -* Generated restore props and targets need cross-targeting participation support - [#3496](https://github.com/NuGet/Home/issues/3496) +- Generated restore props and targets need cross-targeting participation support - [#3496](https://github.com/NuGet/Home/issues/3496) -* NuGet Restore support for PackageTargetFallback (f.k.a Imports) - [#3494](https://github.com/NuGet/Home/issues/3494) +- NuGet Restore support for PackageTargetFallback (f.k.a Imports) - [#3494](https://github.com/NuGet/Home/issues/3494) -* ToolsRef implementation - [#3472](https://github.com/NuGet/Home/issues/3472) +- ToolsRef implementation - [#3472](https://github.com/NuGet/Home/issues/3472) -* Restore3 for a RID - [#3465](https://github.com/NuGet/Home/issues/3465) +- Restore3 for a RID - [#3465](https://github.com/NuGet/Home/issues/3465) -* NuGet UI to support Add/Remove/Update of PackageRefs - [#3457](https://github.com/NuGet/Home/issues/3457) +- NuGet UI to support Add/Remove/Update of PackageRefs - [#3457](https://github.com/NuGet/Home/issues/3457) -* Auto Restore 1/3: Implemenation of Nomination API via Caching Project Restore Info - [#3456](https://github.com/NuGet/Home/issues/3456) +- Auto Restore 1/3: Implemenation of Nomination API via Caching Project Restore Info - [#3456](https://github.com/NuGet/Home/issues/3456) -* [0] NuGet Restore Task & Targets - [#2994](https://github.com/NuGet/Home/issues/2994) +- [0] NuGet Restore Task & Targets - [#2994](https://github.com/NuGet/Home/issues/2994) -* [1] Enable Solution level restore in MSBuild - [#2993](https://github.com/NuGet/Home/issues/2993) +- [1] Enable Solution level restore in MSBuild - [#2993](https://github.com/NuGet/Home/issues/2993) -* Support credential provider public extensibility in Visual Studio - [#2909](https://github.com/NuGet/Home/issues/2909) +- Support credential provider public extensibility in Visual Studio - [#2909](https://github.com/NuGet/Home/issues/2909) -* Recursive nuget restore - [#2533](https://github.com/NuGet/Home/issues/2533) +- Recursive nuget restore - [#2533](https://github.com/NuGet/Home/issues/2533) -* Can't load Microsoft.TeamFoundation.Client on dev15, need to update Microsoft.TeamFoundation.Client version to 15.0 for VS "15" Preview - [#2392](https://github.com/NuGet/Home/issues/2392) +- Can't load Microsoft.TeamFoundation.Client on dev15, need to update Microsoft.TeamFoundation.Client version to 15.0 for VS "15" Preview - [#2392](https://github.com/NuGet/Home/issues/2392) -* Unable to install C++ package to C++ UWP project in VS "15" Preview - [#2369](https://github.com/NuGet/Home/issues/2369) +- Unable to install C++ package to C++ UWP project in VS "15" Preview - [#2369](https://github.com/NuGet/Home/issues/2369) -* Nupkg needs to support \buildCrossTargeting\ folder - and import `.targets` / `.props` for "crosstargeting" MSBuild scope. - [#3499](https://github.com/NuGet/Home/issues/3499) +- Nupkg needs to support \buildCrossTargeting\ folder - and import `.targets` / `.props` for "crosstargeting" MSBuild scope. - [#3499](https://github.com/NuGet/Home/issues/3499) -* ToolsReference Design - [#3462](https://github.com/NuGet/Home/issues/3462) +- ToolsReference Design - [#3462](https://github.com/NuGet/Home/issues/3462) -* Fix NuGet UI to support restore w/ PackageReferences in `.csproj` - [#3455](https://github.com/NuGet/Home/issues/3455) +- Fix NuGet UI to support restore w/ PackageReferences in `.csproj` - [#3455](https://github.com/NuGet/Home/issues/3455) -* Adding clear cache button to VS package manager settings - [#3289](https://github.com/NuGet/Home/issues/3289) +- Adding clear cache button to VS package manager settings - [#3289](https://github.com/NuGet/Home/issues/3289) ## DCRs -* Solution Restore should be blocked while auto restore is happening. - [#3797](https://github.com/NuGet/Home/issues/3797) +- Solution Restore should be blocked while auto restore is happening. - [#3797](https://github.com/NuGet/Home/issues/3797) -* NetCore install from NuGet Package Manager UI installs to every TFM , instead of ones that the package supports - [#3721](https://github.com/NuGet/Home/issues/3721) +- NetCore install from NuGet Package Manager UI installs to every TFM , instead of ones that the package supports - [#3721](https://github.com/NuGet/Home/issues/3721) -* Restore nominator API needs to support DotNetCliToolsReferences too. - [#3702](https://github.com/NuGet/Home/issues/3702) +- Restore nominator API needs to support DotNetCliToolsReferences too. - [#3702](https://github.com/NuGet/Home/issues/3702) -* Mark our VS "15" vsix as a systemcomponent - [#3700](https://github.com/NuGet/Home/issues/3700) +- Mark our VS "15" vsix as a systemcomponent - [#3700](https://github.com/NuGet/Home/issues/3700) -* Migrate from referencing MS.VS.Services.Client to MS.VS.Services.Client.Interactive - [#3670](https://github.com/NuGet/Home/issues/3670) +- Migrate from referencing MS.VS.Services.Client to MS.VS.Services.Client.Interactive - [#3670](https://github.com/NuGet/Home/issues/3670) -* $(RestoreLegacyPackagesDirectory) should be respected at a project level by restore - [#3618](https://github.com/NuGet/Home/issues/3618) +- $(RestoreLegacyPackagesDirectory) should be respected at a project level by restore - [#3618](https://github.com/NuGet/Home/issues/3618) -* Restore to project with single TargetFramework must not condition props - [#3588](https://github.com/NuGet/Home/issues/3588) +- Restore to project with single TargetFramework must not condition props - [#3588](https://github.com/NuGet/Home/issues/3588) -* dotnet restore3 foo.csproj should follow projectref dependencies, and restore those too. Like build. - [#3577](https://github.com/NuGet/Home/issues/3577) +- dotnet restore3 foo.csproj should follow projectref dependencies, and restore those too. Like build. - [#3577](https://github.com/NuGet/Home/issues/3577) -* "type": "platform" Dependencies represented as "type":"package" in lock file - [#2695](https://github.com/NuGet/Home/issues/2695) +- "type": "platform" Dependencies represented as "type":"package" in lock file - [#2695](https://github.com/NuGet/Home/issues/2695) -* nuget.exe Verbose mode should show the download url - [#2629](https://github.com/NuGet/Home/issues/2629) +- nuget.exe Verbose mode should show the download url - [#2629](https://github.com/NuGet/Home/issues/2629) -* Move NuGet xplat to Microsoft.NetCore.App and netcoreapp1.0 - [#2483](https://github.com/NuGet/Home/issues/2483) +- Move NuGet xplat to Microsoft.NetCore.App and netcoreapp1.0 - [#2483](https://github.com/NuGet/Home/issues/2483) -* Push - It should be possible to override the symbol server when pushing from the command line - [#2348](https://github.com/NuGet/Home/issues/2348) +- Push - It should be possible to override the symbol server when pushing from the command line - [#2348](https://github.com/NuGet/Home/issues/2348) -* Consolidate code for finding the global packages path - [#2296](https://github.com/NuGet/Home/issues/2296) +- Consolidate code for finding the global packages path - [#2296](https://github.com/NuGet/Home/issues/2296) -* Need a better name than suppressParent - [#2196](https://github.com/NuGet/Home/issues/2196) +- Need a better name than suppressParent - [#2196](https://github.com/NuGet/Home/issues/2196) -* Determine `project.json` dependency name to use for MSBuild projects - [#1914](https://github.com/NuGet/Home/issues/1914) +- Determine `project.json` dependency name to use for MSBuild projects - [#1914](https://github.com/NuGet/Home/issues/1914) -* Add SemVer 2.0.0 support to NuGet.Core - [#3383](https://github.com/NuGet/Home/issues/3383) +- Add SemVer 2.0.0 support to NuGet.Core - [#3383](https://github.com/NuGet/Home/issues/3383) -* Allow transitive dependency NuPkgs with `.targets` to be available in MSBuild - [#3342](https://github.com/NuGet/Home/issues/3342) +- Allow transitive dependency NuPkgs with `.targets` to be available in MSBuild - [#3342](https://github.com/NuGet/Home/issues/3342) -* NuGet restore from the commandline is significantly slower than VS - [#3330](https://github.com/NuGet/Home/issues/3330) +- NuGet restore from the commandline is significantly slower than VS - [#3330](https://github.com/NuGet/Home/issues/3330) -* Make package ID and version comparison case insensitive - [#2522](https://github.com/NuGet/Home/issues/2522) +- Make package ID and version comparison case insensitive - [#2522](https://github.com/NuGet/Home/issues/2522) -* NoCache option does not work for `packages.config` based restore/install (GlobalPackagesFolder) - [#1406](https://github.com/NuGet/Home/issues/1406) +- NoCache option does not work for `packages.config` based restore/install (GlobalPackagesFolder) - [#1406](https://github.com/NuGet/Home/issues/1406) -* FindPackageByIdResource resources needs a default cache context and logger - [#1357](https://github.com/NuGet/Home/issues/1357) +- FindPackageByIdResource resources needs a default cache context and logger - [#1357](https://github.com/NuGet/Home/issues/1357) diff --git a/docs/Release-Notes/NuGet-4.0-RTM.md b/docs/Release-Notes/NuGet-4.0-RTM.md index 58a3ab01f..ffef941da 100644 --- a/docs/Release-Notes/NuGet-4.0-RTM.md +++ b/docs/Release-Notes/NuGet-4.0-RTM.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 4.0 RC Release Notes | Microsoft Docs author: anangaur ms.author: anangaur @@ -8,27 +6,15 @@ manager: unniravindranathan ms.date: 03/03/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 906cc4dd-7948-4e86-a093-21df830ce8c3 - -# optional metadata - description: Release notes for NuGet 4.0 RTM including known issues, bug fixes, added features, and DCRs. keywords: NuGet 4.0 RTM release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- -# 4.0 RTM Release Notes +# NuGet 4.0 RTM Release Notes [Visual Studio 2017](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.0 which adds support for .NET Core, has a bunch of quality fixes and improves performance. This release also brings several improvements like support for PackageReference, NuGet commands as MSBuild targets, background package restores, and more. @@ -36,337 +22,361 @@ ms.reviewer: ### NuGet restore may fail when you have multiple projects referencing another project in a solution -#### Issue: +#### Issue + NuGet restore may not work if, in a solution, you have project references to the same project with different casing or with different relative paths. [NuGet#4574](https://github.com/NuGet/Home/issues/4574) -#### Workaround: +#### Workaround + Fix the casings or relative paths to be the same for all project references. ### While using Package Manager Console, 'Enter' key may not work -#### Issue: + +#### Issue + Occasionally, the enter key does not work in the Package Manager Console. If you see this, please check out the progress on the fix, and provide any additional helpful information about your repro steps. [NuGet#4204](https://github.com/NuGet/Home/issues/4204) [NuGet#4570](https://github.com/NuGet/Home/issues/4570) -#### Workaround: +#### Workaround + Restart Visual Studio and open the PMC before opening the solution. Alternatively, try deleting the `project.lock.json` and restoring again. ### In .NET Core projects, you may end up in infinite restore loop when you use a package containing an assembly with an invalid signature -#### Issue: + +#### Issue + Occassionally, when you use a package containing an assembly with an invalid signature or when the package version is set with 'DateTime' ticker, it causes package auto-restore to run in infinite loop. [NuGet#4542](https://github.com/NuGet/Home/issues/4542) -#### Workaround: +#### Workaround + There is no workaround at this time. ### You will be unable to view, add, or update DotNetCLITools, using Nuget Package Manager -#### Issue: + +#### Issue + NuGet Package Manager does not display and does not allow add/update of DotNetCLITools. [NuGet#4256](https://github.com/NuGet/Home/issues/4256) -* #### Workaround: +#### Workaround + DotNetCLIToolReferences must be manually edited in your project file. ### NuGet restore will fail when you set PackageId property for projects -#### Issue: + +#### Issue + For .NET Core projects, NuGet restore in Visual Studio does not respect PackageId property of projects. [NuGet#4586](https://github.com/NuGet/Home/issues/4586) -#### Workaround: +#### Workaround + Run restore using the command-line. ### When your project does not have 'obj' folder, package restore may fail -#### Issue: + +#### Issue + Visual Studio fails to restore PackageReferences when 'obj' folder has been deleted. [NuGet#4528](https://github.com/NuGet/Home/issues/4528) -#### Workaround: -Create 'obj' folder manually and the restore should work. +#### Workaround + +Create 'obj' folder manually and the restore should work. ### Manually updating packages using Update-Package in console may fail -#### Issue: + +#### Issue + Using Update-Package manually in the console only works once for PackageReferences projects that were just converted. [NuGet#4431](https://github.com/NuGet/Home/issues/4431) -#### Workaround: +#### Workaround + There is no workaround at this time. ### Retargeting target framework version may lead to incomplete Intellisense -#### Issue: + +#### Issue + Retargeting target framework version may lead to incomplete Intellisense, in Visual Studio. This happens when you are using PackageReferences as the package manager format. [NuGet#4216](https://github.com/NuGet/Home/issues/4216) -#### Workaround: +#### Workaround + Do a manual restore. -### `msbuild /t:restore` fails when a project targeting .NET461 references another project targeting .NETStandard +### msbuild /t:restore fails when a project targeting .NET461 references another project targeting .NETStandard + +#### Issue -#### Issue: msbuild /t:restore fails when a PackageReferenece based project targeting .NET461 references another PackageReference based project targeting .NETStandard. [NuGet#4532](https://github.com/NuGet/Home/issues/4532) -#### Workaround: +#### Workaround + There is no workaround at this time. ## Issues fixed in NuGet 4.0 RTM timeframe [NuGet 4.0 RC Release Notes](../release-notes/nuget-4.0-RC.md) - Lists all the issues fixed for NuGet 4.0 RC -**Bug:** - -* NuGet restore in Visual Studio does not respect PackageId property of projects - [#4586](https://github.com/NuGet/Home/issues/4586) +### Features -* NuGet ProjectSystemCache error when adding package in vsix package - [#4545](https://github.com/NuGet/Home/issues/4545) +- Localize strings in NuGet.Core.sln - [#2041](https://github.com/NuGet/Home/issues/2041) -* Pack throws exception if IncludeSource is used in a project with multiple TFMs - [#4536](https://github.com/NuGet/Home/issues/4536) +- Nuget forces to load web application projects in LSL mode - [#4258](https://github.com/NuGet/Home/issues/4258) -* VS 2017 RC3 crashes on using update from Solution-wide package management - [#4474](https://github.com/NuGet/Home/issues/4474) +- AutoReferenced PackageReference support to block version changes in UI for "sdk installed" packages - [#4044](https://github.com/NuGet/Home/issues/4044) -* Cannot uninstall newly installed package - [#4435](https://github.com/NuGet/Home/issues/4435) +- Correctly communicate PackageSpec.Version for any project dependencies (PackageRef) - [#3902](https://github.com/NuGet/Home/issues/3902) -* When migrating to PackageRef, hybrid solutions have strange restore behavior - [#4433](https://github.com/NuGet/Home/issues/4433) +- support for removing references into `.csproj` from commandline(s) - [#4101](https://github.com/NuGet/Home/issues/4101) -* Building soon after starting NuGet operation (install, update, restore), can cause VS to Hang - [#4420](https://github.com/NuGet/Home/issues/4420) +- Support restore for PackageReference projects (normal and xplat) and Lightweight Solution Load - [#4003](https://github.com/NuGet/Home/issues/4003) -* UI Hang - Deadlock initializing NuGet.SolutionRestoreManager.RestoreManagerPackage [#4371](https://github.com/NuGet/Home/issues/4371) +- support for adding references into `.csproj` from commandline(s) - [#3751](https://github.com/NuGet/Home/issues/3751) -* add package command should add version as attribute instead of element - [#4325](https://github.com/NuGet/Home/issues/4325) +- Support NuGet restore for Lightweight Solution Load for `packages.config` or `project.json` - [#3711](https://github.com/NuGet/Home/issues/3711) -* Dotnet Restore foo.sln -- fails when configurations in SLN cause duplicate (but diff config) projects in restore graph - [#4316](https://github.com/NuGet/Home/issues/4316) +- contentFiles support in nuget generated targets file - [#3683](https://github.com/NuGet/Home/issues/3683) -* Content only packages - [#3668](https://github.com/NuGet/Home/issues/3668) +- Establish a Mono CI for nuget.exe validation on Mac using MSBuild - [#3646](https://github.com/NuGet/Home/issues/3646) -* By default opt out of package format selector option - [#4468](https://github.com/NuGet/Home/issues/4468) +- Move NuGet off of v2 NuGet.Core dependencies - [#3645](https://github.com/NuGet/Home/issues/3645) -* Perf: CreateUAP_CSharp_VS.01.1.Create project regressed Duration_TotalElapsedTime by 3,153.570 ms (149.1%). Baseline 26129.02 - [#4452](https://github.com/NuGet/Home/issues/4452) +### Bugs -* Perf: ManagedLangs_CS_DDRIT.0300.Rebuild Solution regressed Duration_TotalElapsedTime by 1.5sec. Baseline 26105 - [#4441](https://github.com/NuGet/Home/issues/4441) +- NuGet restore in Visual Studio does not respect PackageId property of projects - [#4586](https://github.com/NuGet/Home/issues/4586) -* Nomination fails in multi-TFM projects - [#4419](https://github.com/NuGet/Home/issues/4419) +- NuGet ProjectSystemCache error when adding package in vsix package - [#4545](https://github.com/NuGet/Home/issues/4545) -* Perf: WebForms_DDRIT.1200.Close Solution regressed VM_ImagesInMemory_Total_devenv by 3.000 Count (0.5%). Baseline 26123.04 - [#4408](https://github.com/NuGet/Home/issues/4408) +- Pack throws exception if IncludeSource is used in a project with multiple TFMs - [#4536](https://github.com/NuGet/Home/issues/4536) -* vsfeedback - Pack warnings when targeting netcoreapp1.1 - [#4397](https://github.com/NuGet/Home/issues/4397) +- VS 2017 RC3 crashes on using update from Solution-wide package management - [#4474](https://github.com/NuGet/Home/issues/4474) -* PathTooLongException when trying to add a NuGet package to empty ASP.NET Core web application - [#4391](https://github.com/NuGet/Home/issues/4391) +- Cannot uninstall newly installed package - [#4435](https://github.com/NuGet/Home/issues/4435) -* Pack runs too often -- dotnet pack fails with There is a circular dependency in the target dependency graph involving target "Pack" - [#4381](https://github.com/NuGet/Home/issues/4381) +- When migrating to PackageRef, hybrid solutions have strange restore behavior - [#4433](https://github.com/NuGet/Home/issues/4433) -* Pack runs too often -- Generate NuGet package doesn't include all the configurations - [#4380](https://github.com/NuGet/Home/issues/4380) +- Building soon after starting NuGet operation (install, update, restore), can cause VS to Hang - [#4420](https://github.com/NuGet/Home/issues/4420) -* NullReferenceException adding nuget with packageref in C++ project - [#4378](https://github.com/NuGet/Home/issues/4378) +- UI Hang - Deadlock initializing NuGet.SolutionRestoreManager.RestoreManagerPackage [#4371](https://github.com/NuGet/Home/issues/4371) -* Accessibility : Narrator does not narrate the checkbox to select the projects to install the package to - [#4366](https://github.com/NuGet/Home/issues/4366) +- add package command should add version as attribute instead of element - [#4325](https://github.com/NuGet/Home/issues/4325) -* NuGet VS17 sporadically fails connecting to VSO/VSTS feeds - VS Bug 365798 - [#4365](https://github.com/NuGet/Home/issues/4365) +- Dotnet Restore foo.sln -- fails when configurations in SLN cause duplicate (but diff config) projects in restore graph - [#4316](https://github.com/NuGet/Home/issues/4316) -* contentFiles get output to wrong location if PackagePath specifies path as "contentFiles" - [#4348](https://github.com/NuGet/Home/issues/4348) +- Content only packages - [#3668](https://github.com/NuGet/Home/issues/3668) -* Pack target appends PackageVersion property with VersionSuffix - [#4324](https://github.com/NuGet/Home/issues/4324) +- By default opt out of package format selector option - [#4468](https://github.com/NuGet/Home/issues/4468) -* Specifying package path doesn't work with dotnet pack - [#4321](https://github.com/NuGet/Home/issues/4321) +- Perf: CreateUAP_CSharp_VS.01.1.Create project regressed Duration_TotalElapsedTime by 3,153.570 ms (149.1%). Baseline 26129.02 - [#4452](https://github.com/NuGet/Home/issues/4452) -* NuGet outputs a bunch of warnings about duplicate imports during restore - [#4304](https://github.com/NuGet/Home/issues/4304) +- Perf: ManagedLangs_CS_DDRIT.0300.Rebuild Solution regressed Duration_TotalElapsedTime by 1.5sec. Baseline 26105 - [#4441](https://github.com/NuGet/Home/issues/4441) -* Choose "NuGet Package Manager Format" dialog looks bad under dark theme - [#4300](https://github.com/NuGet/Home/issues/4300) +- Nomination fails in multi-TFM projects - [#4419](https://github.com/NuGet/Home/issues/4419) -* VS crash on build restore - [#4298](https://github.com/NuGet/Home/issues/4298) +- Perf: WebForms_DDRIT.1200.Close Solution regressed VM_ImagesInMemory_Total_devenv by 3.000 Count (0.5%). Baseline 26123.04 - [#4408](https://github.com/NuGet/Home/issues/4408) -* Visual Studio deadlocks if you add TFM in targetframeworks, save, then build. 10% of time - [#4295](https://github.com/NuGet/Home/issues/4295) +- vsfeedback - Pack warnings when targeting netcoreapp1.1 - [#4397](https://github.com/NuGet/Home/issues/4397) -* nuget pack does not output success message on packing a project successfully - [#4294](https://github.com/NuGet/Home/issues/4294) +- PathTooLongException when trying to add a NuGet package to empty ASP.NET Core web application - [#4391](https://github.com/NuGet/Home/issues/4391) -* PackTask fails due to System.IO.Compression 4.1 not being found - [#4290](https://github.com/NuGet/Home/issues/4290) +- Pack runs too often -- dotnet pack fails with There is a circular dependency in the target dependency graph involving target "Pack" - [#4381](https://github.com/NuGet/Home/issues/4381) -* Pack runs too often -- PackTask frequently fails with file access conflict - [#4289](https://github.com/NuGet/Home/issues/4289) +- Pack runs too often -- Generate NuGet package doesn't include all the configurations - [#4380](https://github.com/NuGet/Home/issues/4380) -* NuGet opens the output window during background restore - [#4274](https://github.com/NuGet/Home/issues/4274) +- NullReferenceException adding nuget with packageref in C++ project - [#4378](https://github.com/NuGet/Home/issues/4378) -* Eliminate ServiceProvider as dangerous coding pattern (which can cause hangs) - [#4268](https://github.com/NuGet/Home/issues/4268) +- Accessibility : Narrator does not narrate the checkbox to select the projects to install the package to - [#4366](https://github.com/NuGet/Home/issues/4366) -* Perf/UIHang - Improve DownloadTimeoutStream reads - [#4266](https://github.com/NuGet/Home/issues/4266) +- NuGet VS17 sporadically fails connecting to VSO/VSTS feeds - VS Bug 365798 - [#4365](https://github.com/NuGet/Home/issues/4365) -* Visual Studio deadlocks if you attempt to close a project before NuGet restore has finished - [#4257](https://github.com/NuGet/Home/issues/4257) +- contentFiles get output to wrong location if PackagePath specifies path as "contentFiles" - [#4348](https://github.com/NuGet/Home/issues/4348) -* Issues with PackTask and packing `.nuspec` - [#4250](https://github.com/NuGet/Home/issues/4250) +- Pack target appends PackageVersion property with VersionSuffix - [#4324](https://github.com/NuGet/Home/issues/4324) -* [vsfeedback] Cannot resolve nuget packages on new project (needs to restart visual studio) - [#4217](https://github.com/NuGet/Home/issues/4217) +- Specifying package path doesn't work with dotnet pack - [#4321](https://github.com/NuGet/Home/issues/4321) -* [vsfeedback] The "Version" drop down that shows available package versions, struggles to stay in-sync with the selected nuGet package... - [#4198](https://github.com/NuGet/Home/issues/4198) +- NuGet outputs a bunch of warnings about duplicate imports during restore - [#4304](https://github.com/NuGet/Home/issues/4304) -* Nuget.Client should use CPS JoinableTaskFactory when interacting with CPS to prevent deadlocks - [#4185](https://github.com/NuGet/Home/issues/4185) +- Choose "NuGet Package Manager Format" dialog looks bad under dark theme - [#4300](https://github.com/NuGet/Home/issues/4300) -* NuGet 3.5.0 not unpacking `.targets` from package - [#4171](https://github.com/NuGet/Home/issues/4171) +- VS crash on build restore - [#4298](https://github.com/NuGet/Home/issues/4298) -* dotnet pack does not support title in `.csproj` - [#4150](https://github.com/NuGet/Home/issues/4150) +- Visual Studio deadlocks if you add TFM in targetframeworks, save, then build. 10% of time - [#4295](https://github.com/NuGet/Home/issues/4295) -* Install-Package results in error dialog in VS2017 RC - [#4127](https://github.com/NuGet/Home/issues/4127) +- nuget pack does not output success message on packing a project successfully - [#4294](https://github.com/NuGet/Home/issues/4294) -* Updating a package for .net core project appears to not work, as the UI doesn't get the CPS update from the nominate. - [#4035](https://github.com/NuGet/Home/issues/4035) +- PackTask fails due to System.IO.Compression 4.1 not being found - [#4290](https://github.com/NuGet/Home/issues/4290) -* Improve unresolved reference warning - [#3955](https://github.com/NuGet/Home/issues/3955) +- Pack runs too often -- PackTask frequently fails with file access conflict - [#4289](https://github.com/NuGet/Home/issues/4289) -* dotnet pack - ProjectReference loses version information - [#3953](https://github.com/NuGet/Home/issues/3953) +- NuGet opens the output window during background restore - [#4274](https://github.com/NuGet/Home/issues/4274) -* Create UWP app create project & rebuild total elapsed time regressions - [#3873](https://github.com/NuGet/Home/issues/3873) +- Eliminate ServiceProvider as dangerous coding pattern (which can cause hangs) - [#4268](https://github.com/NuGet/Home/issues/4268) -* Successful restore message is displayed even after error during restore. - [#3799](https://github.com/NuGet/Home/issues/3799) +- Perf/UIHang - Improve DownloadTimeoutStream reads - [#4266](https://github.com/NuGet/Home/issues/4266) -* re-Publish Nuget.CommandLine 3.4.4 to Nuget.org - [#2931](https://github.com/NuGet/Home/issues/2931) +- Visual Studio deadlocks if you attempt to close a project before NuGet restore has finished - [#4257](https://github.com/NuGet/Home/issues/4257) -* On Migrate, projects change from `project.json` to `.csproj` --- restore fails - [#4297](https://github.com/NuGet/Home/issues/4297) +- Issues with PackTask and packing `.nuspec` - [#4250](https://github.com/NuGet/Home/issues/4250) -* Restore failing on newly created xunit Test project - [#4296](https://github.com/NuGet/Home/issues/4296) +- [vsfeedback] Cannot resolve nuget packages on new project (needs to restart visual studio) - [#4217](https://github.com/NuGet/Home/issues/4217) -* Core projects can hang, lock up UI on open - [#4269](https://github.com/NuGet/Home/issues/4269) +- [vsfeedback] The "Version" drop down that shows available package versions, struggles to stay in-sync with the selected nuGet package... - [#4198](https://github.com/NuGet/Home/issues/4198) -* fix targets file for build tasks - [#4267](https://github.com/NuGet/Home/issues/4267) +- Nuget.Client should use CPS JoinableTaskFactory when interacting with CPS to prevent deadlocks - [#4185](https://github.com/NuGet/Home/issues/4185) -* Error list has error after build solution which unload the referenced project - [#4208](https://github.com/NuGet/Home/issues/4208) +- NuGet 3.5.0 not unpacking `.targets` from package - [#4171](https://github.com/NuGet/Home/issues/4171) -* MSB4057: The target "_GenerateRestoreGraphProjectEntry" does not exist in the project. - [#4194](https://github.com/NuGet/Home/issues/4194) +- dotnet pack does not support title in `.csproj` - [#4150](https://github.com/NuGet/Home/issues/4150) -* vsfeedback: nuget manager ui for solution crashes when you select all projects - [#4191](https://github.com/NuGet/Home/issues/4191) +- Install-Package results in error dialog in VS2017 RC - [#4127](https://github.com/NuGet/Home/issues/4127) -* nuget.exe msbuildpath fails when there is a trailing slash - [#4180](https://github.com/NuGet/Home/issues/4180) +- Updating a package for .net core project appears to not work, as the UI doesn't get the CPS update from the nominate. - [#4035](https://github.com/NuGet/Home/issues/4035) -* vsfeedback: NuGet restore give several project reference warnings for LinqToTwitter project - [#4156](https://github.com/NuGet/Home/issues/4156) +- Improve unresolved reference warning - [#3955](https://github.com/NuGet/Home/issues/3955) -* Pack from `.csproj` does not include the minClientVersion attribute - [#4135](https://github.com/NuGet/Home/issues/4135) +- dotnet pack - ProjectReference loses version information - [#3953](https://github.com/NuGet/Home/issues/3953) -* NuGet.Build.Tasks.Pack.dll shipped delay signed in VS2017 (d15rel 26014.00) - [#4122](https://github.com/NuGet/Home/issues/4122) +- Create UWP app create project & rebuild total elapsed time regressions - [#3873](https://github.com/NuGet/Home/issues/3873) -* VSFeedback: Restore fails for a VS 2015 project generated with CMake 3.7.1 - [#4114](https://github.com/NuGet/Home/issues/4114) +- Successful restore message is displayed even after error during restore. - [#3799](https://github.com/NuGet/Home/issues/3799) -* VSFeedback: Restore errors can obscure more complete error messages that build could give - [#4113](https://github.com/NuGet/Home/issues/4113) +- re-Publish Nuget.CommandLine 3.4.4 to Nuget.org - [#2931](https://github.com/NuGet/Home/issues/2931) -* [VSFeedback] Error occurred while restoring NuGet packages for website project: Value cannot be null. - [#4092](https://github.com/NuGet/Home/issues/4092) +- On Migrate, projects change from `project.json` to `.csproj` --- restore fails - [#4297](https://github.com/NuGet/Home/issues/4297) -* Migration Throws "Object reference Exception" in NuGet.PackageManagement.VisualStudio.SolutionRestoreWorker - [#4067](https://github.com/NuGet/Home/issues/4067) +- Restore failing on newly created xunit Test project - [#4296](https://github.com/NuGet/Home/issues/4296) -* dotnet pack should pack tools with the versions that the package was built against - [#4063](https://github.com/NuGet/Home/issues/4063) +- Core projects can hang, lock up UI on open - [#4269](https://github.com/NuGet/Home/issues/4269) -* New background restore writes milliseconds to status bar when it takes seconds to restore - [#4036](https://github.com/NuGet/Home/issues/4036) +- fix targets file for build tasks - [#4267](https://github.com/NuGet/Home/issues/4267) -* Typo on failed to resolve all project references - [#4018](https://github.com/NuGet/Home/issues/4018) +- Error list has error after build solution which unload the referenced project - [#4208](https://github.com/NuGet/Home/issues/4208) -* Enable PCM workflows in package reference scenarios - [#4016](https://github.com/NuGet/Home/issues/4016) +- MSB4057: The target "_GenerateRestoreGraphProjectEntry" does not exist in the project. - [#4194](https://github.com/NuGet/Home/issues/4194) -* Can not find installed packages in package manager UI - [#4015](https://github.com/NuGet/Home/issues/4015) +- vsfeedback: nuget manager ui for solution crashes when you select all projects - [#4191](https://github.com/NuGet/Home/issues/4191) -* dotnet pack fails when PackagePath is empty - [#3993](https://github.com/NuGet/Home/issues/3993) +- nuget.exe msbuildpath fails when there is a trailing slash - [#4180](https://github.com/NuGet/Home/issues/4180) -* Restore task fails in an multi user scenario - [#3897](https://github.com/NuGet/Home/issues/3897) +- vsfeedback: NuGet restore give several project reference warnings for LinqToTwitter project - [#4156](https://github.com/NuGet/Home/issues/4156) -* Cannot change Content type when packing using NuGet Pack Task - [#3895](https://github.com/NuGet/Home/issues/3895) +- Pack from `.csproj` does not include the minClientVersion attribute - [#4135](https://github.com/NuGet/Home/issues/4135) -* Default Copy of ContentFiles are incorrect for MsBuild /t:pack - [#3894](https://github.com/NuGet/Home/issues/3894) +- NuGet.Build.Tasks.Pack.dll shipped delay signed in VS2017 (d15rel 26014.00) - [#4122](https://github.com/NuGet/Home/issues/4122) -* Install package restore double logs the restoring packages message - [#3785](https://github.com/NuGet/Home/issues/3785) +- VSFeedback: Restore fails for a VS 2015 project generated with CMake 3.7.1 - [#4114](https://github.com/NuGet/Home/issues/4114) -* Remove Guardrails - Restore of "runtimes" section should only apply to the current project - [#3768](https://github.com/NuGet/Home/issues/3768) +- VSFeedback: Restore errors can obscure more complete error messages that build could give - [#4113](https://github.com/NuGet/Home/issues/4113) -* Pack task puts content files in both 'content/' and 'contentFiles/' - [#3718](https://github.com/NuGet/Home/issues/3718) +- [VSFeedback] Error occurred while restoring NuGet packages for website project: Value cannot be null. - [#4092](https://github.com/NuGet/Home/issues/4092) -* dotnet pack3 does extra tag splitting - [#3701](https://github.com/NuGet/Home/issues/3701) +- Migration Throws "Object reference Exception" in NuGet.PackageManagement.VisualStudio.SolutionRestoreWorker - [#4067](https://github.com/NuGet/Home/issues/4067) -* dotnet pack: packing projects with package references results in duplicate import warning - [#3665](https://github.com/NuGet/Home/issues/3665) +- dotnet pack should pack tools with the versions that the package was built against - [#4063](https://github.com/NuGet/Home/issues/4063) -* Restore logging in VS doesn't always show - [#3633](https://github.com/NuGet/Home/issues/3633) +- New background restore writes milliseconds to status bar when it takes seconds to restore - [#4036](https://github.com/NuGet/Home/issues/4036) -* nuget locals help text still mentioned packages cache - [#3592](https://github.com/NuGet/Home/issues/3592) +- Typo on failed to resolve all project references - [#4018](https://github.com/NuGet/Home/issues/4018) -* Restore3 couples PackageReferences with TargetFrameworks. - [#3504](https://github.com/NuGet/Home/issues/3504) +- Enable PCM workflows in package reference scenarios - [#4016](https://github.com/NuGet/Home/issues/4016) -* Nuget picks unexpected version of MSBuild in VS "15" Preview 4 dev. command prompt - [#3408](https://github.com/NuGet/Home/issues/3408) +- Can not find installed packages in package manager UI - [#4015](https://github.com/NuGet/Home/issues/4015) -* Write out targets/props files on failed restore - [#3399](https://github.com/NuGet/Home/issues/3399) +- dotnet pack fails when PackagePath is empty - [#3993](https://github.com/NuGet/Home/issues/3993) -* NuGet during restore doesn't respect the same compat shims as MSBuild when running in VS 15 command prompt - [#3387](https://github.com/NuGet/Home/issues/3387) +- Restore task fails in an multi user scenario - [#3897](https://github.com/NuGet/Home/issues/3897) -* Re-enable PackFromProjectWithDevelopmentDependencySet for VS15 - [#3272](https://github.com/NuGet/Home/issues/3272) +- Cannot change Content type when packing using NuGet Pack Task - [#3895](https://github.com/NuGet/Home/issues/3895) -* Blend problems with NuGet - [#4043](https://github.com/NuGet/Home/issues/4043) +- Default Copy of ContentFiles are incorrect for MsBuild /t:pack - [#3894](https://github.com/NuGet/Home/issues/3894) -* Integrate 4.0.0.2067 into CLI and SDK repos to ship with RC2 - [#4029](https://github.com/NuGet/Home/issues/4029) +- Install package restore double logs the restoring packages message - [#3785](https://github.com/NuGet/Home/issues/3785) -* VS Hangs when you Create new Core Console App, Close Solution, Open Solution and Close Solution - [#4008](https://github.com/NuGet/Home/issues/4008) +- Remove Guardrails - Restore of "runtimes" section should only apply to the current project - [#3768](https://github.com/NuGet/Home/issues/3768) -* Hitting hang opening project against d15prerel.25916.01 - [#3982](https://github.com/NuGet/Home/issues/3982) +- Pack task puts content files in both 'content/' and 'contentFiles/' - [#3718](https://github.com/NuGet/Home/issues/3718) -* Fix dotnet/nuget.exe locals doc/help message - [#3919](https://github.com/NuGet/Home/issues/3919) +- dotnet pack3 does extra tag splitting - [#3701](https://github.com/NuGet/Home/issues/3701) -* Inspect PackTask for issues with trailing or leading whitespace - [#3906](https://github.com/NuGet/Home/issues/3906) +- dotnet pack: packing projects with package references results in duplicate import warning - [#3665](https://github.com/NuGet/Home/issues/3665) -* dotnet pack is packing from obj not bin - [#3880](https://github.com/NuGet/Home/issues/3880) +- Restore logging in VS doesn't always show - [#3633](https://github.com/NuGet/Home/issues/3633) -* dotnet pack always seems to set ProjectReference version to 1.0.0 - [#3874](https://github.com/NuGet/Home/issues/3874) +- nuget locals help text still mentioned packages cache - [#3592](https://github.com/NuGet/Home/issues/3592) -* dotnet pack fails with project references and - [#3865](https://github.com/NuGet/Home/issues/3865) +- Restore3 couples PackageReferences with TargetFrameworks. - [#3504](https://github.com/NuGet/Home/issues/3504) -* LockRecursionException in ProjectSystemCache.TryGetProjectNameByShortName - [#3861](https://github.com/NuGet/Home/issues/3861) +- Nuget picks unexpected version of MSBuild in VS "15" Preview 4 dev. command prompt - [#3408](https://github.com/NuGet/Home/issues/3408) -* Trim whitespace from MSBuild properties - [#3819](https://github.com/NuGet/Home/issues/3819) +- Write out targets/props files on failed restore - [#3399](https://github.com/NuGet/Home/issues/3399) -* Consolidate the two project events raised on project load - [#3759](https://github.com/NuGet/Home/issues/3759) +- NuGet during restore doesn't respect the same compat shims as MSBuild when running in VS 15 command prompt - [#3387](https://github.com/NuGet/Home/issues/3387) -* P2P libraries in `project.assets.json` file have incorrect Version - [#3748](https://github.com/NuGet/Home/issues/3748) +- Re-enable PackFromProjectWithDevelopmentDependencySet for VS15 - [#3272](https://github.com/NuGet/Home/issues/3272) -* Restore crash due to unresponsive feed and unavailable package - [#3672](https://github.com/NuGet/Home/issues/3672) +- Blend problems with NuGet - [#4043](https://github.com/NuGet/Home/issues/4043) -* nuget.exe could hang on a large amount of MSBuild error output - [#3572](https://github.com/NuGet/Home/issues/3572) +- Integrate 4.0.0.2067 into CLI and SDK repos to ship with RC2 - [#4029](https://github.com/NuGet/Home/issues/4029) -* Restore-on-build for Blend fails first time, succeeds second time (VS scenario fixed) - [#2121](https://github.com/NuGet/Home/issues/2121) +- VS Hangs when you Create new Core Console App, Close Solution, Open Solution and Close Solution - [#4008](https://github.com/NuGet/Home/issues/4008) -**DCR:** +- Hitting hang opening project against d15prerel.25916.01 - [#3982](https://github.com/NuGet/Home/issues/3982) -* migrate vsix from v2 vsix to v3 vsix - [#4196](https://github.com/NuGet/Home/issues/4196) +- Fix dotnet/nuget.exe locals doc/help message - [#3919](https://github.com/NuGet/Home/issues/3919) -* NuGet should have a mechanism for getting the path to the lock file in MSBuild - [#3351](https://github.com/NuGet/Home/issues/3351) +- Inspect PackTask for issues with trailing or leading whitespace - [#3906](https://github.com/NuGet/Home/issues/3906) -* Add build assets to the TFM compatibility check and assets file - [#3296](https://github.com/NuGet/Home/issues/3296) +- dotnet pack is packing from obj not bin - [#3880](https://github.com/NuGet/Home/issues/3880) -* Define a new ProjectCapability "Pack" in Pack targets for enabling Package related capabilities - [#4146](https://github.com/NuGet/Home/issues/4146) +- dotnet pack always seems to set ProjectReference version to 1.0.0 - [#3874](https://github.com/NuGet/Home/issues/3874) -* Run Pack as a post build target conditioned on "GeneratePackageOnBuild" MSBuild property - [#4145](https://github.com/NuGet/Home/issues/4145) +- dotnet pack fails with project references and - [#3865](https://github.com/NuGet/Home/issues/3865) -* Use NuGet property RestoreProjectStyle to create specific NuGet project - [#4134](https://github.com/NuGet/Home/issues/4134) +- LockRecursionException in ProjectSystemCache.TryGetProjectNameByShortName - [#3861](https://github.com/NuGet/Home/issues/3861) -* Adapt Restore for Transitive Project References change - [#4076](https://github.com/NuGet/Home/issues/4076) +- Trim whitespace from MSBuild properties - [#3819](https://github.com/NuGet/Home/issues/3819) -* Add NuGet properties in target file for non-UWP projects - [#4030](https://github.com/NuGet/Home/issues/4030) +- Consolidate the two project events raised on project load - [#3759](https://github.com/NuGet/Home/issues/3759) -* UWP TargetPlatformVersion support - [#3923](https://github.com/NuGet/Home/issues/3923) +- P2P libraries in `project.assets.json` file have incorrect Version - [#3748](https://github.com/NuGet/Home/issues/3748) -* Communicate project reference metadata to NuGet project system - [#3922](https://github.com/NuGet/Home/issues/3922) +- Restore crash due to unresponsive feed and unavailable package - [#3672](https://github.com/NuGet/Home/issues/3672) -* Add UI for packaging mode - [#3921](https://github.com/NuGet/Home/issues/3921) +- nuget.exe could hang on a large amount of MSBuild error output - [#3572](https://github.com/NuGet/Home/issues/3572) -* Legacy `.csproj` needs NugetTargetMoniker and RuntimeIdentifiers set in proj/targets - [#3854](https://github.com/NuGet/Home/issues/3854) +- Restore-on-build for Blend fails first time, succeeds second time (VS scenario fixed) - [#2121](https://github.com/NuGet/Home/issues/2121) -* Install package may overlap with auto-restore - [#3836](https://github.com/NuGet/Home/issues/3836) +### DCRs -* Context menu QueryStatus doesn't happen when VSPackage is not loaded - [#3835](https://github.com/NuGet/Home/issues/3835) +- migrate vsix from v2 vsix to v3 vsix - [#4196](https://github.com/NuGet/Home/issues/4196) -* Solution Restore and Build Restore still show dialogs - [#3789](https://github.com/NuGet/Home/issues/3789) +- NuGet should have a mechanism for getting the path to the lock file in MSBuild - [#3351](https://github.com/NuGet/Home/issues/3351) -* Isolate VSSDK version in NuGet.Clients solution build - [#3890](https://github.com/NuGet/Home/issues/3890) +- Add build assets to the TFM compatibility check and assets file - [#3296](https://github.com/NuGet/Home/issues/3296) -**Feature:** +- Define a new ProjectCapability "Pack" in Pack targets for enabling Package related capabilities - [#4146](https://github.com/NuGet/Home/issues/4146) -* Localize strings in NuGet.Core.sln - [#2041](https://github.com/NuGet/Home/issues/2041) +- Run Pack as a post build target conditioned on "GeneratePackageOnBuild" MSBuild property - [#4145](https://github.com/NuGet/Home/issues/4145) -* Nuget forces to load web application projects in LSL mode - [#4258](https://github.com/NuGet/Home/issues/4258) +- Use NuGet property RestoreProjectStyle to create specific NuGet project - [#4134](https://github.com/NuGet/Home/issues/4134) -* AutoReferenced PackageReference support to block version changes in UI for "sdk installed" packages - [#4044](https://github.com/NuGet/Home/issues/4044) +- Adapt Restore for Transitive Project References change - [#4076](https://github.com/NuGet/Home/issues/4076) -* Correctly communicate PackageSpec.Version for any project dependencies (PackageRef) - [#3902](https://github.com/NuGet/Home/issues/3902) +- Add NuGet properties in target file for non-UWP projects - [#4030](https://github.com/NuGet/Home/issues/4030) -* support for removing references into `.csproj` from commandline(s) - [#4101](https://github.com/NuGet/Home/issues/4101) +- UWP TargetPlatformVersion support - [#3923](https://github.com/NuGet/Home/issues/3923) -* Support restore for PackageReference projects (normal and xplat) and Lightweight Solution Load - [#4003](https://github.com/NuGet/Home/issues/4003) +- Communicate project reference metadata to NuGet project system - [#3922](https://github.com/NuGet/Home/issues/3922) -* support for adding references into `.csproj` from commandline(s) - [#3751](https://github.com/NuGet/Home/issues/3751) +- Add UI for packaging mode - [#3921](https://github.com/NuGet/Home/issues/3921) -* Support NuGet restore for Lightweight Solution Load for `packages.config` or `project.json` - [#3711](https://github.com/NuGet/Home/issues/3711) +- Legacy `.csproj` needs NugetTargetMoniker and RuntimeIdentifiers set in proj/targets - [#3854](https://github.com/NuGet/Home/issues/3854) -* contentFiles support in nuget generated targets file - [#3683](https://github.com/NuGet/Home/issues/3683) +- Install package may overlap with auto-restore - [#3836](https://github.com/NuGet/Home/issues/3836) -* Establish a Mono CI for nuget.exe validation on Mac using MSBuild - [#3646](https://github.com/NuGet/Home/issues/3646) +- Context menu QueryStatus doesn't happen when VSPackage is not loaded - [#3835](https://github.com/NuGet/Home/issues/3835) -* Move NuGet off of v2 NuGet.Core dependencies - [#3645](https://github.com/NuGet/Home/issues/3645) +- Solution Restore and Build Restore still show dialogs - [#3789](https://github.com/NuGet/Home/issues/3789) +- Isolate VSSDK version in NuGet.Clients solution build - [#3890](https://github.com/NuGet/Home/issues/3890) ## Links to GitHub issues fixed in RTM [Issues list 1](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.0 RTM") @@ -374,4 +384,3 @@ There is no workaround at this time. [Issues list 3](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.0 RC3") [Issues list 4](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.0 RC2") [Issues list 5](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.0 RC") - diff --git a/docs/Release-Notes/NuGet-4.3-RTM.md b/docs/Release-Notes/NuGet-4.3-RTM.md index ff96899fa..3b978543b 100644 --- a/docs/Release-Notes/NuGet-4.3-RTM.md +++ b/docs/Release-Notes/NuGet-4.3-RTM.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 4.3 RTM Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,28 +6,16 @@ manager: unniravindranathan ms.date: 08/14/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: da3bf363-4d9d-446c-b91d-41c4cf6e16a1 - -# optional metadata - description: Release notes for NuGet 4.3 RTM including known issues, bug fixes, added features, and DCRs. keywords: NuGet 4.3 RTM release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan - anangaur -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- -# 4.3 RTM Release Notes +# NuGet 4.3 RTM Release Notes [Visual Studio 2017 15.3 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.3 RTM which adds support for new scenarios such as .NET Standard 2.0/.NET Core 2.0, contains many quality fixes, and improves performance. This release also brings several improvements like support for Semantic Versioning 2.0.0, MSBuild integration of NuGet warnings and errors, and more. @@ -37,100 +23,106 @@ ms.reviewer: ### NuGet restore may treat disabled package sources as enabled in some cases -#### Issue: +#### Issue + The following restore command-line techniques treat disabled packages sources as enabled. [NuGet#5704](https://github.com/NuGet/Home/issues/5704) - `msbuild /t:restore` - `dotnet restore` (either with dotnet.exe that ships with VS, or the one that comes with NetCore SDK 2.0.0) -#### Workaround: +#### Workaround + 1. Use Visual Studio (2017 15.3 or later) or NuGet.exe (v4.3.0 or later) 1. Delete your disabled source and continue to use msbuild or dotnet.exe. 1. For your solution, you could use "Clear" in NuGet.config and then define the sources necessary for that solution. ### While using Package Manager Console, 'Enter' key may not work -#### Issue: +#### Issue + Occasionally, the enter key does not work in the Package Manager Console. If you see this, please check out the progress on the fix, and provide any additional helpful information about your repro steps. [NuGet#4204](https://github.com/NuGet/Home/issues/4204) [NuGet#4570](https://github.com/NuGet/Home/issues/4570) -#### Workaround: +#### Workaround + Restart Visual Studio and open the PMC before opening the solution. Alternatively, try deleting the `project.lock.json` and restoring again. ### You will be unable to view, add, or update DotNetCLITools, using Nuget Package Manager -#### Issue: +#### Issue + NuGet Package Manager does not display and does not allow add/update of DotNetCLITools. [NuGet#4256](https://github.com/NuGet/Home/issues/4256) -#### Workaround: +#### Workaround + DotNetCLIToolReferences must be manually edited in your project file. ### Retargeting target framework version may lead to incomplete Intellisense -#### Issue: +#### Issue + Retargeting target framework version may lead to incomplete Intellisense, in Visual Studio. This happens when you are using PackageReferences as the package manager format. [NuGet#4216](https://github.com/NuGet/Home/issues/4216) -#### Workaround: -Do a manual restore. +#### Workaround +Do a manual restore. ## Issues fixed in NuGet 4.3 RTM timeframe [NuGet 4.0 RTM Release Notes](../release-notes/nuget-4.0-RTM.md) - Lists all the issues fixed for NuGet 4.0 RTM -**Feature:** - -* Improve NuGet Restore Perf - Implement smarter NoOp for command line restores and VS - [#5080](https://github.com/NuGet/Home/issues/5080) +### Features -* NET Core 2.0: VS/Dotnet CLI should start using existing NuGet functionality: FallBack folders - [#4939](https://github.com/NuGet/Home/issues/4939) +- Improve NuGet Restore Perf - Implement smarter NoOp for command line restores and VS - [#5080](https://github.com/NuGet/Home/issues/5080) -* NET Core 2.0: Enable users to ignore specific restore warnings (or elevate to error) - [#4898](https://github.com/NuGet/Home/issues/4898) +- NET Core 2.0: VS/Dotnet CLI should start using existing NuGet functionality: FallBack folders - [#4939](https://github.com/NuGet/Home/issues/4939) -* NET Core 2.0: CLI localized assemblies - [#4896](https://github.com/NuGet/Home/issues/4896) +- NET Core 2.0: Enable users to ignore specific restore warnings (or elevate to error) - [#4898](https://github.com/NuGet/Home/issues/4898) -* NET Core 2.0: register all warnings/errors to assets file (including PackageTargetFallback) - [#4895](https://github.com/NuGet/Home/issues/4895) +- NET Core 2.0: CLI localized assemblies - [#4896](https://github.com/NuGet/Home/issues/4896) -* Enable TFM support: NetStandard2.0, Tizen - [#4892](https://github.com/NuGet/Home/issues/4892) +- NET Core 2.0: register all warnings/errors to assets file (including PackageTargetFallback) - [#4895](https://github.com/NuGet/Home/issues/4895) -* Reduce the number of NuGet.Core and NuGet.Client projects (and thus DLLs) - [#2446](https://github.com/NuGet/Home/issues/2446) +- Enable TFM support: NetStandard2.0, Tizen - [#4892](https://github.com/NuGet/Home/issues/4892) -* Add ability to mark nuget warnings as errors - [#2395](https://github.com/NuGet/Home/issues/2395) +- Reduce the number of NuGet.Core and NuGet.Client projects (and thus DLLs) - [#2446](https://github.com/NuGet/Home/issues/2446) +- Add ability to mark nuget warnings as errors - [#2395](https://github.com/NuGet/Home/issues/2395) -**Bug:** +### Bugs -* msbuild /t:pack fails with The "DevelopmentDependency" parameter is not supported by the "PackTask" task - [#5584](https://github.com/NuGet/Home/issues/5584) +- msbuild /t:pack fails with The "DevelopmentDependency" parameter is not supported by the "PackTask" task - [#5584](https://github.com/NuGet/Home/issues/5584) -* Directory structure for content files flattened if not adding Windows directory separator at the end of PackagePath - [#4795](https://github.com/NuGet/Home/issues/4795) +- Directory structure for content files flattened if not adding Windows directory separator at the end of PackagePath - [#4795](https://github.com/NuGet/Home/issues/4795) -* netcore projects don't support setting as developmentDependency - [#4694](https://github.com/NuGet/Home/issues/4694) +- netcore projects don't support setting as developmentDependency - [#4694](https://github.com/NuGet/Home/issues/4694) -* RestoreManagerPackage being loaded synchronously which blocked UI thread and deadlocked VS - [#4679](https://github.com/NuGet/Home/issues/4679) +- RestoreManagerPackage being loaded synchronously which blocked UI thread and deadlocked VS - [#4679](https://github.com/NuGet/Home/issues/4679) -* dotnet Restore (& therefore msbuild /t:restore) skips projects with an explicit solution project dependency [#4578](https://github.com/NuGet/Home/issues/4578) +- dotnet Restore (& therefore msbuild /t:restore) skips projects with an explicit solution project dependency [#4578](https://github.com/NuGet/Home/issues/4578) -* If your solution has projectreferences that refer to the same project, with different casing, restore may not work. This also affects different relative paths, without a difference in casing - [#4574](https://github.com/NuGet/Home/issues/4574) +- If your solution has projectreferences that refer to the same project, with different casing, restore may not work. This also affects different relative paths, without a difference in casing - [#4574](https://github.com/NuGet/Home/issues/4574) -* Executables restored from NuGet packages are no longer executable with .NET Core 2.0 - [#4424](https://github.com/NuGet/Home/issues/4424) +- Executables restored from NuGet packages are no longer executable with .NET Core 2.0 - [#4424](https://github.com/NuGet/Home/issues/4424) -* NuGet.exe swallows details of exception when parsing solution file - [#4411](https://github.com/NuGet/Home/issues/4411) +- NuGet.exe swallows details of exception when parsing solution file - [#4411](https://github.com/NuGet/Home/issues/4411) -* Pack puts content files in wrong location if ContentTargetFolders contains a path that ends with '/' on Windows - [#4407](https://github.com/NuGet/Home/issues/4407) +- Pack puts content files in wrong location if ContentTargetFolders contains a path that ends with '/' on Windows - [#4407](https://github.com/NuGet/Home/issues/4407) -* Can't restore a DotNetCliToolReference for a tools package that targets netcoreapp1.1 - [#4396](https://github.com/NuGet/Home/issues/4396) +- Can't restore a DotNetCliToolReference for a tools package that targets netcoreapp1.1 - [#4396](https://github.com/NuGet/Home/issues/4396) -* Nuget update CLI leaves the old package version condition in project file (C++) - [#2449](https://github.com/NuGet/Home/issues/2449) +- Nuget update CLI leaves the old package version condition in project file (C++) - [#2449](https://github.com/NuGet/Home/issues/2449) -**DCR:** +### DCRs -* Read DotnetCliToolTargetFramework from CPS nomation - [#5397](https://github.com/NuGet/Home/issues/5397) +- Read DotnetCliToolTargetFramework from CPS nomation - [#5397](https://github.com/NuGet/Home/issues/5397) -* TPMinV check should work for pj style UWP - [#4763](https://github.com/NuGet/Home/issues/4763) +- TPMinV check should work for pj style UWP - [#4763](https://github.com/NuGet/Home/issues/4763) -* Improve UI description for AutoReferenced packages - [#4471](https://github.com/NuGet/Home/issues/4471) +- Improve UI description for AutoReferenced packages - [#4471](https://github.com/NuGet/Home/issues/4471) -* NuGet restore is selecting compile assets from runtime section. - [#4207](https://github.com/NuGet/Home/issues/4207) +- NuGet restore is selecting compile assets from runtime section. - [#4207](https://github.com/NuGet/Home/issues/4207) -* Put dependency diagnostics in the lock file - [#1599](https://github.com/NuGet/Home/issues/1599) +- Put dependency diagnostics in the lock file - [#1599](https://github.com/NuGet/Home/issues/1599) -## Link to GitHub issues fixed in 4.3 RTM +## Links to GitHub issues fixed in 4.3 RTM [Issues List](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.3") diff --git a/docs/Release-Notes/NuGet-4.4-RTM.md b/docs/Release-Notes/NuGet-4.4-RTM.md index 841b13eff..b77557df0 100644 --- a/docs/Release-Notes/NuGet-4.4-RTM.md +++ b/docs/Release-Notes/NuGet-4.4-RTM.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 4.4 RTM Release Notes | Microsoft Docs author: karann-msft ms.author: karann-msft @@ -8,189 +6,184 @@ manager: unniravindranathan ms.date: 08/14/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 5ffca6f6-a126-4407-b22f-1323e7dc44a3 - -# optional metadata - description: Release notes for NuGet 4.3 RTM including known issues, bug fixes, added features, and DCRs. keywords: NuGet 4.3 RTM release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan - anangaur -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- -# 4.4 RTM Release Notes +# NuGet 4.4 RTM Release Notes [Visual Studio 2017 15.4 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.4 RTM. ## Known issues ### Issues with .NET Standard 2.0 with .NET Framework & NuGet + .NET Standard & its tooling was designed such that projects targeting .NET Framework 4.6.1 can consume NuGet packages & projects targeting .NET Standard 2.0 or earlier. [This document](https://github.com/dotnet/standard/issues/481) summarizes the issues around that scenario, the plan for addressing them, and workarounds you can deploy with today's state of the tooling. ### While using Package Manager Console, 'Enter' key may not work -#### Issue: +#### Issue + Occasionally, the enter key does not work in the Package Manager Console. If you see this, please check out the progress on the fix, and provide any additional helpful information about your repro steps. [NuGet#4204](https://github.com/NuGet/Home/issues/4204) [NuGet#4570](https://github.com/NuGet/Home/issues/4570) -#### Workaround: +#### Workaround + Restart Visual Studio and open the PMC before opening the solution. Alternatively, try deleting the `project.lock.json` and restoring again. ### You will be unable to view, add, or update DotNetCLITools, using Nuget Package Manager -#### Issue: +#### Issue + NuGet Package Manager does not display and does not allow add/update of DotNetCLITools. [NuGet#4256](https://github.com/NuGet/Home/issues/4256) -#### Workaround: +#### Workaround + DotNetCLIToolReferences must be manually edited in your project file. ### Retargeting target framework version may lead to incomplete Intellisense -#### Issue: +#### Issue + Retargeting target framework version may lead to incomplete Intellisense, in Visual Studio. This happens when you are using PackageReferences as the package manager format. [NuGet#4216](https://github.com/NuGet/Home/issues/4216) -#### Workaround: -Do a manual restore. +#### Workaround +Do a manual restore. ### A package in a .NET Core project that contains an assembly with an invalid signature, can trigger an infinite restore loop -#### Issue: +#### Issue + Occasionally, when you use a package that contains an assembly with an invalid signature or when the package version is set with 'DateTime' ticker, it causes the package auto-restore to run in an infinite loop (dotnet/project-system#1457). -#### Workaround: -There is no workaround at this time. +#### Workaround +There is no workaround at this time. ## Issues fixed in NuGet 4.4 RTM timeframe [NuGet 4.3 RTM Release Notes](../release-notes/nuget-4.3-RTM.md) - Lists all the issues fixed for NuGet 4.3 RTM -**Feature:** +### Features -* Support for Lightweight Solution Load in PMC and NuGet PM UI scenarios - [#5180](https://github.com/NuGet/Home/issues/5180) +- Support for Lightweight Solution Load in PMC and NuGet PM UI scenarios - [#5180](https://github.com/NuGet/Home/issues/5180) -* The msbuild pack target should have a public hook for running user targets before itself - [#5143](https://github.com/NuGet/Home/issues/5143) +- The msbuild pack target should have a public hook for running user targets before itself - [#5143](https://github.com/NuGet/Home/issues/5143) -* Feature: Add dependencyVersion switch to nuget install - [#1806](https://github.com/NuGet/Home/issues/1806) +- Feature: Add dependencyVersion switch to nuget install - [#1806](https://github.com/NuGet/Home/issues/1806) -* uap10.0.TODO.0 should map to .NET Standard 2.0 for NuGet - [#5684](https://github.com/NuGet/Home/issues/5684) +- uap10.0.TODO.0 should map to .NET Standard 2.0 for NuGet - [#5684](https://github.com/NuGet/Home/issues/5684) -* Support Visual Studio Build Tools SKU with msbuild /t:restore - [#5562](https://github.com/NuGet/Home/issues/5562) +- Support Visual Studio Build Tools SKU with msbuild /t:restore - [#5562](https://github.com/NuGet/Home/issues/5562) -* During restore, generate an error if .NET 4.6.1 support for .NET Standard 2.0 is required but not installed - [#5325](https://github.com/NuGet/Home/issues/5325) +- During restore, generate an error if .NET 4.6.1 support for .NET Standard 2.0 is required but not installed - [#5325](https://github.com/NuGet/Home/issues/5325) -* Package ID prefix reservation client UI - [#5572](https://github.com/NuGet/Home/issues/5572) +- Package ID prefix reservation client UI - [#5572](https://github.com/NuGet/Home/issues/5572) -* deliver localized nuget components to support dotnet.exe localization - [#4336](https://github.com/NuGet/Home/issues/4336) +- deliver localized nuget components to support dotnet.exe localization - [#4336](https://github.com/NuGet/Home/issues/4336) -**Bug:** +### Bugs -* Different project path casings can cause restore to lose PackageReferences - [#5855](https://github.com/NuGet/Home/issues/5855) +- Different project path casings can cause restore to lose PackageReferences - [#5855](https://github.com/NuGet/Home/issues/5855) -* Move error codes with warning numbers to error range - [#5824](https://github.com/NuGet/Home/issues/5824) +- Move error codes with warning numbers to error range - [#5824](https://github.com/NuGet/Home/issues/5824) -* Misleading error when .NET Standard version is not known to be compatible with target framework - [#5818](https://github.com/NuGet/Home/issues/5818) +- Misleading error when .NET Standard version is not known to be compatible with target framework - [#5818](https://github.com/NuGet/Home/issues/5818) -* Test files with confusing licenses - [#5776](https://github.com/NuGet/Home/issues/5776) +- Test files with confusing licenses - [#5776](https://github.com/NuGet/Home/issues/5776) -* Missing license headers in EndToEnd test templates - [#5774](https://github.com/NuGet/Home/issues/5774) +- Missing license headers in EndToEnd test templates - [#5774](https://github.com/NuGet/Home/issues/5774) -* packages.config restore shows errors as NU1000 - [#5743](https://github.com/NuGet/Home/issues/5743) +- packages.config restore shows errors as NU1000 - [#5743](https://github.com/NuGet/Home/issues/5743) -* nuget.exe install should have DisableParallelProcessing on mono - [#5741](https://github.com/NuGet/Home/issues/5741) +- nuget.exe install should have DisableParallelProcessing on mono - [#5741](https://github.com/NuGet/Home/issues/5741) -* nuget.exe install incorrectly disables caching - [#5737](https://github.com/NuGet/Home/issues/5737) +- nuget.exe install incorrectly disables caching - [#5737](https://github.com/NuGet/Home/issues/5737) -* VS Running the restore command for packages.config when Restore is disabled displays incorrect message - [#5718](https://github.com/NuGet/Home/issues/5718) +- VS Running the restore command for packages.config when Restore is disabled displays incorrect message - [#5718](https://github.com/NuGet/Home/issues/5718) -* VS; Running the restore command when Restore is disabled displays a confusing message - [#5659](https://github.com/NuGet/Home/issues/5659) +- VS; Running the restore command when Restore is disabled displays a confusing message - [#5659](https://github.com/NuGet/Home/issues/5659) -* GetRestoreDotnetCliToolsTask fails when missing version metadata - [#5716](https://github.com/NuGet/Home/issues/5716) +- GetRestoreDotnetCliToolsTask fails when missing version metadata - [#5716](https://github.com/NuGet/Home/issues/5716) -* dotnet add package can clear empty lines from a csproj - [#5697](https://github.com/NuGet/Home/issues/5697) +- dotnet add package can clear empty lines from a csproj - [#5697](https://github.com/NuGet/Home/issues/5697) -* Source names of credential settings in NuGet.Config are case sensitive - [#5695](https://github.com/NuGet/Home/issues/5695) +- Source names of credential settings in NuGet.Config are case sensitive - [#5695](https://github.com/NuGet/Home/issues/5695) -* Enabling GeneratePackageOnBuild deleted my entire history of packages - [#5676](https://github.com/NuGet/Home/issues/5676) +- Enabling GeneratePackageOnBuild deleted my entire history of packages - [#5676](https://github.com/NuGet/Home/issues/5676) -* Restore will not restore mono.cecil or semver packages, but all other packages get restored. - [#5649](https://github.com/NuGet/Home/issues/5649) +- Restore will not restore mono.cecil or semver packages, but all other packages get restored. - [#5649](https://github.com/NuGet/Home/issues/5649) -* Errors and Warnings - bad error when a source in unavailable. - [#5644](https://github.com/NuGet/Home/issues/5644) +- Errors and Warnings - bad error when a source in unavailable. - [#5644](https://github.com/NuGet/Home/issues/5644) -* [DesignConsistency] NuGet Installation status text doesn’t look correct on dark theme currently. - [#5642](https://github.com/NuGet/Home/issues/5642) +- [DesignConsistency] NuGet Installation status text doesn’t look correct on dark theme currently. - [#5642](https://github.com/NuGet/Home/issues/5642) -* Update packages at solution updates/installs for all the projects - [#5508](https://github.com/NuGet/Home/issues/5508) +- Update packages at solution updates/installs for all the projects - [#5508](https://github.com/NuGet/Home/issues/5508) -* dotnet pack behaves differently depending on TargetFramework vs TargetFrameworks - [#5281](https://github.com/NuGet/Home/issues/5281) +- dotnet pack behaves differently depending on TargetFramework vs TargetFrameworks - [#5281](https://github.com/NuGet/Home/issues/5281) -* Included DLLs inside Tools folder throw warnings - [#5020](https://github.com/NuGet/Home/issues/5020) +- Included DLLs inside Tools folder throw warnings - [#5020](https://github.com/NuGet/Home/issues/5020) -* NuGet.ContentModel consumes too much memory for string operations - [#4714](https://github.com/NuGet/Home/issues/4714) +- NuGet.ContentModel consumes too much memory for string operations - [#4714](https://github.com/NuGet/Home/issues/4714) -* RuntimeEnvironmentHelper.IsLinux returns true for OSX - [#4648](https://github.com/NuGet/Home/issues/4648) +- RuntimeEnvironmentHelper.IsLinux returns true for OSX - [#4648](https://github.com/NuGet/Home/issues/4648) -* 'dotnet pack' puts nuspec under obj instead of obj\Debug - [#4644](https://github.com/NuGet/Home/issues/4644) +- 'dotnet pack' puts nuspec under obj instead of obj\Debug - [#4644](https://github.com/NuGet/Home/issues/4644) -* Nuget extremely slow package upgrade - [#4534](https://github.com/NuGet/Home/issues/4534) +- Nuget extremely slow package upgrade - [#4534](https://github.com/NuGet/Home/issues/4534) -* CPS out of sync with Restore with larger solutions that haven't turned on LSL (lightweight solution restore) - [#4307](https://github.com/NuGet/Home/issues/4307) +- CPS out of sync with Restore with larger solutions that haven't turned on LSL (lightweight solution restore) - [#4307](https://github.com/NuGet/Home/issues/4307) -* SemVer 2.0 - nuget pack with provided version ignores metadata (3.5.0-rtm-1938) - [#3643](https://github.com/NuGet/Home/issues/3643) +- SemVer 2.0 - nuget pack with provided version ignores metadata (3.5.0-rtm-1938) - [#3643](https://github.com/NuGet/Home/issues/3643) -* Nuget.exe (3.+) install package with Version number and ExcludeVersion flag doesn't update package to newer version - [#2405](https://github.com/NuGet/Home/issues/2405) +- Nuget.exe (3.+) install package with Version number and ExcludeVersion flag doesn't update package to newer version - [#2405](https://github.com/NuGet/Home/issues/2405) -* Project.json restore should warn when top-level packages violate constraints - [#2358](https://github.com/NuGet/Home/issues/2358) +- Project.json restore should warn when top-level packages violate constraints - [#2358](https://github.com/NuGet/Home/issues/2358) -* -ConfigFile is not setting custom config on install command - [#1646](https://github.com/NuGet/Home/issues/1646) +- -ConfigFile is not setting custom config on install command - [#1646](https://github.com/NuGet/Home/issues/1646) -* nuget.exe install does not honor '-DisableParallelProcessing' switch - [#1556](https://github.com/NuGet/Home/issues/1556) +- nuget.exe install does not honor '-DisableParallelProcessing' switch - [#1556](https://github.com/NuGet/Home/issues/1556) -* Disabled sources still used by DotNet.exe or msbuild.exe - [#5704](https://github.com/NuGet/Home/issues/5704) +- Disabled sources still used by DotNet.exe or msbuild.exe - [#5704](https://github.com/NuGet/Home/issues/5704) -* Fix hangs in LSL scenario - [#5685](https://github.com/NuGet/Home/issues/5685) +- Fix hangs in LSL scenario - [#5685](https://github.com/NuGet/Home/issues/5685) -**DCR:** +### DCRs -* nuget.exe install TargetFramework support - [#5736](https://github.com/NuGet/Home/issues/5736) +- nuget.exe install TargetFramework support - [#5736](https://github.com/NuGet/Home/issues/5736) -* Add different msbuild task UserAgent strings (netcore vs desktop msbuild) - [#5709](https://github.com/NuGet/Home/issues/5709) +- Add different msbuild task UserAgent strings (netcore vs desktop msbuild) - [#5709](https://github.com/NuGet/Home/issues/5709) -* PackagePathResolver.GetPackageDirectoryName should be virtual - [#5700](https://github.com/NuGet/Home/issues/5700) +- PackagePathResolver.GetPackageDirectoryName should be virtual - [#5700](https://github.com/NuGet/Home/issues/5700) -* [DesignConsistency] Confusing message when adding a NuGet package - [#5641](https://github.com/NuGet/Home/issues/5641) +- [DesignConsistency] Confusing message when adding a NuGet package - [#5641](https://github.com/NuGet/Home/issues/5641) -* [Warnings and errors] NoWarn does not flow transitively through P2P references - [#5501](https://github.com/NuGet/Home/issues/5501) +- [Warnings and errors] NoWarn does not flow transitively through P2P references - [#5501](https://github.com/NuGet/Home/issues/5501) -* Lightweight Solution Load: Common Core for PM UI, PMC, and IVs* - [#5057](https://github.com/NuGet/Home/issues/5057) +- Lightweight Solution Load: Common Core for PM UI, PMC, and IVs- - [#5057](https://github.com/NuGet/Home/issues/5057) -* Lightweight Solution Load: Support - PMC - [#5053](https://github.com/NuGet/Home/issues/5053) +- Lightweight Solution Load: Support - PMC - [#5053](https://github.com/NuGet/Home/issues/5053) -* Add support for pre-restore MSBuild target that Visual Studio triggers - [#4781](https://github.com/NuGet/Home/issues/4781) +- Add support for pre-restore MSBuild target that Visual Studio triggers - [#4781](https://github.com/NuGet/Home/issues/4781) -* Add a public target to NuGet.targets that can be referenced using BeforeTargets - [#4634](https://github.com/NuGet/Home/issues/4634) +- Add a public target to NuGet.targets that can be referenced using BeforeTargets - [#4634](https://github.com/NuGet/Home/issues/4634) -* Pack target can't create contentFiles with build actions correctly - [#4166](https://github.com/NuGet/Home/issues/4166) +- Pack target can't create contentFiles with build actions correctly - [#4166](https://github.com/NuGet/Home/issues/4166) -* RestoreOperationLogger.Do blocks thread pool threads - [#5663](https://github.com/NuGet/Home/issues/5663) +- RestoreOperationLogger.Do blocks thread pool threads - [#5663](https://github.com/NuGet/Home/issues/5663) -**Docs:** +### Docs -* Docs for Install command DependencyVersion and Framework flags - [#5858](https://github.com/NuGet/Home/issues/5858) +- Docs for Install command DependencyVersion and Framework flags - [#5858](https://github.com/NuGet/Home/issues/5858) -* Update to docs on NuGet warnings and errors - [#5857](https://github.com/NuGet/Home/issues/5857) +- Update to docs on NuGet warnings and errors - [#5857](https://github.com/NuGet/Home/issues/5857) -## Link to GitHub issues fixed in 4.4 RTM +## Links to GitHub issues fixed in 4.4 RTM [Issues List 1](https://github.com/NuGet/Home/issues?q=is:issue+is:closed+milestone:"4.4") diff --git a/docs/Release-Notes/NuGet-4.5-RTM.md b/docs/Release-Notes/NuGet-4.5-RTM.md index 98fa5d606..cf801b0c0 100644 --- a/docs/Release-Notes/NuGet-4.5-RTM.md +++ b/docs/Release-Notes/NuGet-4.5-RTM.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet 4.5 RTM Release Notes | Microsoft Docs author: anangaur ms.author: anangaur @@ -8,79 +6,82 @@ manager: unniravindranathan ms.date: 12/4/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 68751bde-8814-4da3-89fd-7976a2a96762 - -# optional metadata - description: Release notes for NuGet 4.5 RTM including known issues, bug fixes, added features, and DCRs. keywords: NuGet 4.5 RTM release notes, bug fixes, known issues, added features, DCRs -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan - anangaur -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- -# 4.5 RTM Release Notes +# NuGet 4.5 RTM Release Notes [Visual Studio 2017 15.5 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with [NuGet 4.5 RTM](https://dist.nuget.org/win-x86-commandline/v4.5.0/nuget.exe). ## Known issues ### Issues with .NET Standard 2.0 with .NET Framework & NuGet + .NET Standard & its tooling was designed such that projects targeting .NET Framework 4.6.1 can consume NuGet packages & projects targeting .NET Standard 2.0 or earlier. [This document](https://github.com/dotnet/standard/issues/481) summarizes the issues around that scenario, the plan for addressing them, and workarounds you can deploy with today's state of the tooling. ### You will be unable to view, add, or update DotNetCLITools, using Nuget Package Manager -#### Issue: + +#### Issue + NuGet Package Manager does not display and does not allow add/update of DotNetCLITools. [NuGet#4256](https://github.com/NuGet/Home/issues/4256) -#### Workaround: + +#### Workaround + DotNetCLIToolReferences must be manually edited in your project file. ### Retargeting target framework version may lead to incomplete Intellisense -#### Issue: + +#### Issue + Retargeting target framework version may lead to incomplete Intellisense, in Visual Studio. This happens when you are using PackageReferences as the package manager format. [NuGet#4216](https://github.com/NuGet/Home/issues/4216) -#### Workaround: + +#### Workaround + Do a manual restore. ### A package in a .NET Core project that contains an assembly with an invalid signature, can trigger an infinite restore loop -#### Issue: + +#### Issue + Occasionally, when you use a package that contains an assembly with an invalid signature or when the package version is set with 'DateTime' ticker, it causes the package auto-restore to run in an infinite loop [dotnet/project-system#1457](https://github.com/dotnet/project-system/issues/1457). -#### Workaround: + +#### Workaround + There is no workaround at this time. ## Issues fixed in NuGet 4.5 RTM timeframe + For issues fixed in NuGet 4.4 RTM, please refer to [NuGet 4.4 RTM Release Notes](../release-notes/nuget-4.4-RTM.md) -### Feature: -* Disable auto-push of symbols package - [#6113](https://github.com/NuGet/Home/issues/6113) - -### Bug: -* [Regression] in 15.5p1: Portable0.0 is skipped - [#6105](https://github.com/NuGet/Home/issues/6105) -* Assets from packages are missing after restore - [#5995](https://github.com/NuGet/Home/issues/5995) -* Plugin credential providers do not work with URIs containing spaces - [#5982](https://github.com/NuGet/Home/issues/5982) -* If package failed to restore, error should be printed i the output even with Minimal verbosity ON - [#5658](https://github.com/NuGet/Home/issues/5658) -* dotnet restore at solution-level doesn't follow ProjectReference with ReferenceOutputAssembly of false leading to random build failures - [#5490](https://github.com/NuGet/Home/issues/5490) -* Auto-complete in PMC works incorrectly with object methods - [#4800](https://github.com/NuGet/Home/issues/4800) -* nuget.exe restore fails with Visual Studio 2015 toolset - [#4713](https://github.com/NuGet/Home/issues/4713) -* perf - pmc is expensive to instantiate in vs2017 - [#4205](https://github.com/NuGet/Home/issues/4205) -* Slow to get dependency information on slow connection - [#4089](https://github.com/NuGet/Home/issues/4089) -* uninstall-package w/ -RemoveDependencies will fail if multiple packages share a common dependency - [#4026](https://github.com/NuGet/Home/issues/4026) -* Finalize NuGet.Core.nupkg for publishing - [#3581](https://github.com/NuGet/Home/issues/3581) -* NuGet pack resolves dependency ID from directory name when -IncludeProjectReferences is used for csproj + project.json - [#3566](https://github.com/NuGet/Home/issues/3566) -* The type initializer for 'NuGet.ProxyCache' threw an exception - [#3144](https://github.com/NuGet/Home/issues/3144) -* nuget restore performance issue with kudu - [#3087](https://github.com/NuGet/Home/issues/3087) -* UI Client fails to show any error or warning when search is ahead of registration blobs - [#2149](https://github.com/NuGet/Home/issues/2149) -* Get-Packages -Updates generates an incorrect query - [#2135](https://github.com/NuGet/Home/issues/2135) - - -## Link to GitHub issues fixed in 4.5 RTM +### Features + +- Disable auto-push of symbols package - [#6113](https://github.com/NuGet/Home/issues/6113) + +### Bugs + +- [Regression] in 15.5p1: Portable0.0 is skipped - [#6105](https://github.com/NuGet/Home/issues/6105) +- Assets from packages are missing after restore - [#5995](https://github.com/NuGet/Home/issues/5995) +- Plugin credential providers do not work with URIs containing spaces - [#5982](https://github.com/NuGet/Home/issues/5982) +- If package failed to restore, error should be printed i the output even with Minimal verbosity ON - [#5658](https://github.com/NuGet/Home/issues/5658) +- dotnet restore at solution-level doesn't follow ProjectReference with ReferenceOutputAssembly of false leading to random build failures - [#5490](https://github.com/NuGet/Home/issues/5490) +- Auto-complete in PMC works incorrectly with object methods - [#4800](https://github.com/NuGet/Home/issues/4800) +- nuget.exe restore fails with Visual Studio 2015 toolset - [#4713](https://github.com/NuGet/Home/issues/4713) +- perf - pmc is expensive to instantiate in vs2017 - [#4205](https://github.com/NuGet/Home/issues/4205) +- Slow to get dependency information on slow connection - [#4089](https://github.com/NuGet/Home/issues/4089) +- uninstall-package w/ -RemoveDependencies will fail if multiple packages share a common dependency - [#4026](https://github.com/NuGet/Home/issues/4026) +- Finalize NuGet.Core.nupkg for publishing - [#3581](https://github.com/NuGet/Home/issues/3581) +- NuGet pack resolves dependency ID from directory name when -IncludeProjectReferences is used for csproj + project.json - [#3566](https://github.com/NuGet/Home/issues/3566) +- The type initializer for 'NuGet.ProxyCache' threw an exception - [#3144](https://github.com/NuGet/Home/issues/3144) +- nuget restore performance issue with kudu - [#3087](https://github.com/NuGet/Home/issues/3087) +- UI Client fails to show any error or warning when search is ahead of registration blobs - [#2149](https://github.com/NuGet/Home/issues/2149) +- Get-Packages -Updates generates an incorrect query - [#2135](https://github.com/NuGet/Home/issues/2135) + +## Links to GitHub issues fixed in 4.5 RTM [Issues list](https://github.com/NuGet/Home/issues?q=is%3Aissue+milestone%3A4.5+is%3Aclosed) diff --git a/docs/Schema/Analyzers-Conventions.md b/docs/Schema/Analyzers-Conventions.md index 9dc7d4a65..bee77bce0 100644 --- a/docs/Schema/Analyzers-Conventions.md +++ b/docs/Schema/Analyzers-Conventions.md @@ -1,31 +1,17 @@ --- -# required metadata - title: .NET Compiler Platform Analyzer Formats for NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 01/09/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: a86e2080-93dd-4081-ac9b-d3bd66ba3799 - -# optional metadata - description: Conventions for .NET analyzers that are packaged and distributed with NuGet packages that implement an API or library. keywords: NuGet analyzer conventions, .NET analyzers, NuGet and .NET Compiler Platform, NuGet and Roslyn -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Analyzer NuGet formats diff --git a/docs/Schema/Target-Frameworks.md b/docs/Schema/Target-Frameworks.md index ed3a8128a..4af2bbb5d 100644 --- a/docs/Schema/Target-Frameworks.md +++ b/docs/Schema/Target-Frameworks.md @@ -7,7 +7,6 @@ ms.date: 12/11/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 4343a48e-f6df-4a44-9d66-4616c3caacf5 description: NuGet target framework references identify and isolate framework-dependent components of a package. keywords: NuGet package targeting, .NET framework targets, .NET framework versions ms.reviewer: @@ -22,13 +21,12 @@ NuGet uses target framework references in a variety of places to specifically id - [.nuspec manifest](../schema/nuspec.md): A package can indicate distinct packages to be included in a project depending on the project's target framework. - [.nupkg folder name](../create-packages/creating-a-package.md#from-a-convention-based-working-directory): The folders inside a package's `lib` folder can be named according to the target framework, each of which contains the DLLs and other content appropriate to that framework. -- [packages.config](../Schema/packages-config.md): The `targetframework` attribute of a dependency specifies the variant of a package to install. -- [project.json](../Schema/project-json.md): The `frameworks` node specifies the framework versions that the project can be compiled against. +- [packages.config](../schema/packages-config.md): The `targetframework` attribute of a dependency specifies the variant of a package to install. > [!Note] > The NuGet client source code that calculates the tables below is found in the following locations: -> - Supported framework names: [FrameworkConstants.cs](https://github.com/NuGet/NuGet.Client/blob/dev/src/NuGet.Core/NuGet.Frameworks/FrameworkConstants.cs) -> - Framework precedence and mapping: [DefaultFrameworkMappings.cs](https://github.com/NuGet/NuGet.Client/blob/dev/src/NuGet.Core/NuGet.Frameworks/DefaultFrameworkMappings.cs) +> - Supported framework names: [FrameworkConstants.cs](https://github.com/NuGet/NuGet.Client/blob/dev/src/NuGet.Core/NuGet.Frameworks/FrameworkConstants.cs) +> - Framework precedence and mapping: [DefaultFrameworkMappings.cs](https://github.com/NuGet/NuGet.Client/blob/dev/src/NuGet.Core/NuGet.Frameworks/DefaultFrameworkMappings.cs) ## Supported frameworks diff --git a/docs/Schema/msbuild-targets.md b/docs/Schema/msbuild-targets.md index 4037a6203..6bcd71015 100644 --- a/docs/Schema/msbuild-targets.md +++ b/docs/Schema/msbuild-targets.md @@ -1,48 +1,26 @@ --- -# required metadata - title: NuGet pack and restore as MSBuild targets | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 4/3/2017 +ms.date: 04/03/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 86f7e724-2509-4d7d-aa8d-4a3fb913ded6 - -# optional metadata - description: NuGet pack and restore can work directly as MSBuild targets with NuGet 4.0+. keywords: NuGet and MSBuild, NuGet pack target, NuGet restore target -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # NuGet pack and restore as MSBuild targets *NuGet 4.0+* -NuGet 4.0+ can work directly with the information in a `.csproj` file without requiring a separate `.nuspec` or `project.json` file. All the metadata that was previously stored in those configuration files can be instead stored in the `.csproj` file directly, as described here. +With the PackageReference format, NuGet 4.0+ can store all manifest metadata directly within a project file rather than using a separate `.nuspec` file. With MSBuild 15.1+, NuGet is also a first-class MSBuild citizen with the `pack` and `restore` targets as described below. These targets allow you to work with NuGet as you would with any other MSBuild task or target. (For NuGet 3.x and earlier, you use the [pack](../tools/cli-ref-pack.md) and [restore](../tools/cli-ref-restore.md) commands through the NuGet CLI instead.) -In this topic: - -- [Target build order](#target-build-order) -- [pack target](#pack-target) -- [pack scenarios](#pack-scenarios) -- [restore target](#restore-target) -- [PackageTargetFallback](#packagetargetfallback) - ## Target build order Because `pack` and `restore` are MSBuild targets, you can access them to enhance your workflow. For example, let’s say you want to copy your package to a network share after packing it. You can do that by adding the following in your project file: @@ -60,11 +38,10 @@ Similarly, you can write an MSBuild task, write your own target and consume NuGe ## pack target -When using the pack target, that is, `msbuild /t:pack`, MSBuild draws its inputs from the `.csproj` file rather than `project.json` or `.nuspec` files. The table below describes the MSBuild properties that can be added to a `.csproj` 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](../schema/nuspec.md). +When using the pack target, that is, `msbuild /t:pack`, MSBuild draws its inputs from the project file. The table below 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](../schema/nuspec.md). Note that the `Owners` and `Summary` properties from `.nuspec` are not supported with MSBuild. - | Attribute/NuSpec Value | MSBuild Property | Default | Notes | |--------|--------|--------|--------| | Id | PackageId | AssemblyName | $(AssemblyName) from MSBuild | @@ -87,7 +64,6 @@ Note that the `Owners` and `Summary` properties from `.nuspec` are not supported | PackageType | `DotNetCliTool, 1.0.0.0;Dependency, 2.0.0.0` | | | | Summary | Not supported | | | - ### pack target inputs - IsPackable @@ -168,7 +144,7 @@ To include content, add extra metadata to the existing `` item. By defa By default, everything gets added to the root of the `content` and `contentFiles\any\` folder within a package and preserves the relative folder structure, unless you specify a package path: ```xml - + true content\myfiles\ @@ -189,9 +165,8 @@ There is also an MSBuild property `$(IncludeContentInPack)`, which defaults to ` Other pack specific metadata that you can set on any of the above items includes `````` and `````` which sets ```CopyToOutput``` and ```Flatten``` values on the ```contentFiles``` entry in the output nuspec. - > [!Note] -> Apart from Content items, the `` and `` metadata can also be set on files with a build action of Compile, EmbeddedResource, ApplicationDefinition, Page, Resource, SplashScreen, DesignData, DesignDataWithDesignTimeCreatableTypes, CodeAnalysisDictionary, AndroidAsset, AndroidResource, BundleResource or None. +> Apart from Content items, the `` and `` metadata can also be set on files with a build action of Compile, EmbeddedResource, ApplicationDefinition, Page, Resource, SplashScreen, DesignData, DesignDataWithDesignTimeCreateableTypes, CodeAnalysisDictionary, AndroidAsset, AndroidResource, BundleResource or None. > > For pack to append the filename to your package path when using globbing patterns, your package path must end with the folder separator character, otherwise the package path is treated as the full path including the file name. @@ -219,13 +194,13 @@ You can use a `.nuspec` file to pack your project provided that you have a proje If using `dotnet.exe` to pack your project, use a command like the following: -``` +```cli dotnet pack /p:NuspecFile= /p:NuspecProperties=<> /p:NuspecBasePath= ``` If using MSBuild to pack your project, use a command like the following: -``` +```cli msbuild /t:pack /p:NuspecFile= /p:NuspecProperties=<> /p:NuspecBasePath= ``` @@ -240,7 +215,6 @@ msbuild /t:pack /p:NuspecFile= /p:Nu 1. Download packages 1. Write assets file, targets, and props - ### Restore properties Additional restore settings may come from MSBuild properties in the project file. Values can also be set from the command line using the `/p:` switch (see Examples below). @@ -257,11 +231,11 @@ Additional restore settings may come from MSBuild properties in the project file | RestoreGraphProjectInput | Semicolon-delimited list of projects to restore, which should contain absolute paths. | | RestoreOutputPath | Output folder, defaulting to the `obj` folder. | -**Examples** +#### Examples Command line: -``` +```cli msbuild /t:restore /p:RestoreConfigFile= ``` @@ -283,10 +257,9 @@ Restore creates the following files in the build `obj` folder: | `{projectName}.projectFileExtension.nuget.g.props` | References to MSBuild props contained in packages | | `{projectName}.projectFileExtension.nuget.g.targets` | References to MSBuild targets contained in packages | +### PackageTargetFallback -### PackageTargetFallback - -The `PackageTargetFallback` element allows you to specify a set of compatible targets to be used when restoring packages (the equivalent of [`imports` in `project.json`](../schema/project-json.md#imports)). It's designed to allow packages that use a dotnet [TxM](../schema/target-frameworks.md) to work with compatible packages that don't declare a dotnet TxM. That is, if your project uses the dotnet TxM, then all the packages it depends on must also have a dotnet TxM, unless you add the `` to your project in order to allow non-dotnet platforms to be compatible with dotnet. +The `PackageTargetFallback` element allows you to specify a set of compatible targets to be used when restoring packages. It's designed to allow packages that use a dotnet [TxM](../schema/target-frameworks.md) to work with compatible packages that don't declare a dotnet TxM. That is, if your project uses the dotnet TxM, then all the packages it depends on must also have a dotnet TxM, unless you add the `` to your project in order to allow non-dotnet platforms to be compatible with dotnet. For example, if the project is using the `netstandard1.6` TxM, and a dependent package contains only `lib/net45/a.dll` and `lib/portable-net45+win81/a.dll`, then the project will fail to build. If what you want to bring in is the latter DLL, then you can add a `PackageTargetFallback` as follows to say that the `portable-net45+win81` DLL is compatible: @@ -304,7 +277,6 @@ To declare a fallback for all targets in your project, leave off the `Condition` ``` - ### Replacing one library from a restore graph If a restore is bringing the wrong assembly, it's possible to exclude that packages default choice, and replace it with your own choice. First with a top level `PackageReference`, exclude all assets: diff --git a/docs/Schema/nuget-config-file.md b/docs/Schema/nuget-config-file.md index aeaad28ad..836bd5928 100644 --- a/docs/Schema/nuget-config-file.md +++ b/docs/Schema/nuget-config-file.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet.Config File Reference | Microsoft Docs author: kraigb ms.author: kraigb @@ -8,18 +6,12 @@ manager: ghogen ms.date: 10/25/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: fbf31530-3bf4-478c-b26c-c2b24dd3406d - -# optional metadata - description: NuGet.Config file reference including the config, bindingRedirects, packageRestore, solution, and packageSource sections. keywords: NuGet.Config file, NuGet configuration reference, NuGet configuration options ms.reviewer: - karann-msft - unniravindranathan - --- # NuGet.Config reference @@ -52,7 +44,7 @@ In this topic: Contains miscellaneous configuration settings, which can be set using the [`nuget config` command](../tools/cli-ref-config.md). -Note: `dependencyVersion` and `repositoryPath` apply only to projects using `packages.config`. `globalPackagesFolder` applies only to projects using `project.json` and PackageReference formats. +Note: `dependencyVersion` and `repositoryPath` apply only to projects using `packages.config`. `globalPackagesFolder` applies only to projects using the PackageReference format. | Key | Value | | --- | --- | diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index be78f85dc..2e25018ce 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -3,11 +3,10 @@ title: .nuspec File Reference for NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 8/29/2017 +ms.date: 08/29/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: d4a4db9b-5c2d-46aa-9107-d2b01733df7c description: The .nuspec file contains package metadata used when building a package and to provide information to package consumers. keywords: nuspec reference, NuGet package metadata, NuGet package manifest, nuspec schema ms.reviewer: @@ -64,7 +63,7 @@ The `` element supports the attributes described in the following tabl | Attribute | Required | Description | | --- | --- | --- | -| **minClientVersion** | No | *(2.5+)* Specifies the minimum version of the NuGet client that can install this package, enforced by nuget.exe and the Visual Studio Package Manager. This is used whenever the package depends on specific features of the `.nuspec` file that were added in a particular version of the NuGet client. For example, a package using the `developmentDependency` attribute should specify "2.8" for `minClientVersion`. Similarly, a package using the `contentFiles` element (see the next section) should set `minClientVersion` to "3.3". Note also that because NuGet clients prior to 2.5 do not recognize this flag, they *always* refuse to install the package no matter what `minClientVersion` contains. | +| **minClientVersion** | No | Specifies the minimum version of the NuGet client that can install this package, enforced by nuget.exe and the Visual Studio Package Manager. This is used whenever the package depends on specific features of the `.nuspec` file that were added in a particular version of the NuGet client. For example, a package using the `developmentDependency` attribute should specify "2.8" for `minClientVersion`. Similarly, a package using the `contentFiles` element (see the next section) should set `minClientVersion` to "3.3". Note also that because NuGet clients prior to 2.5 do not recognize this flag, they *always* refuse to install the package no matter what `minClientVersion` contains. | ### Required metadata elements @@ -256,8 +255,6 @@ Similarly, explicit references can be used for unit test frameworks, such as XUn ### Reference groups -*Version 2.5+* - As an alternative to a single flat list, references can be specified according to the framework profile of the target project using `` elements within ``. Each group has an attribute named `targetFramework` and contains zero or more `` elements. Those references are added to a project when the target framework is compatible with the project's framework profile. @@ -327,7 +324,7 @@ To bypass this automatic behavior and explicitly control which files are include
    ``` -With NuGet 2.x and earlier, and projects using `packages.config`, the `` element is also used to include immutable content files when a package is installed. With NuGet 3.3+ and projects using `project.json` pr PackageReference, the `` element is used instead. See [Including content files](#including-content-files) below for details. +With NuGet 2.x and earlier, and projects using `packages.config`, the `` element is also used to include immutable content files when a package is installed. With NuGet 3.3+ and projects PackageReference, the `` element is used instead. See [Including content files](#including-content-files) below for details. ### File element attributes @@ -412,7 +409,7 @@ Content files are immutable files that a package needs to include in a project. - Scripts that need to be included with the build output of the project - Configuration files for the package that need to be included in the project but don't need any project-specific changes -Content files are included in a package using the `` element, specifying the `content` folder in the `target` attribute. However, such files are ignored when the package is installed in a project using the `project.json` system in NuGet 3.3+ or PackageReference in NuGet 4+, which instead uses the `` element. +Content files are included in a package using the `` element, specifying the `content` folder in the `target` attribute. However, such files are ignored when the package is installed in a project using PackageReference, which instead uses the `` element. For maximum compatibility with consuming projects, a package ideally specifies the content files in both elements. @@ -529,7 +526,7 @@ In this case, because the file extensions of the source and target match, NuGet ### Using the contentFiles element for content files -*Version 3.3+ with project.json and 4.0+ with PackageReference* +*NuGet 4.0+ with PackageReference* By default, a package places content in a `contentFiles` folder (see below) and `nuget pack` included all files in that folder using default attributes. In this case it's not necessary to include a `contentFiles` node in the `.nuspec` at all. diff --git a/docs/Schema/packages-config.md b/docs/Schema/packages-config.md index d183267ab..d5fd70277 100644 --- a/docs/Schema/packages-config.md +++ b/docs/Schema/packages-config.md @@ -7,7 +7,6 @@ ms.date: 12/07/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 207b9547-4558-41dc-9f3f-4bbdfb1d74e3 description: In some project types, packages.config maintains the list of NuGet packages used in the project. keywords: NuGet packages.config file, NuGet package references, NuGet dependencies ms.reviewer: diff --git a/docs/TOC.md b/docs/TOC.md index cbb94dd43..87ed872ba 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -19,8 +19,6 @@ ## [Native Packages](Create-Packages/Native-Packages.md) ## [Symbol Packages](Create-Packages/Symbol-Packages.md) ## [Publish a Package](Create-Packages/Publish-a-package.md) -## [project.json and UWP](Create-Packages/project-json-and-UWP.md) -## [project.json Impact](Create-Packages/project-json-Impact.md) # Consume Packages ## [Overview and Workflow](Consume-Packages/Overview-and-Workflow.md) ## [Finding and Choosing Packages](Consume-Packages/Finding-and-Choosing-Packages.md) @@ -71,7 +69,6 @@ # Reference ## [.nuspec](Schema/nuspec.md) ## [packages.config](Schema/packages-config.md) -## [project.json](Schema/project-json.md) ## [Package Versioning](reference/package-versioning.md) ## [Nuget.Config file](Schema/nuget-config-file.md) ## [MSBuild Targets](Schema/msbuild-targets.md) @@ -80,6 +77,10 @@ ## [Errors and warnings](Reference/Errors-and-Warnings.md) ## [ID Prefix Reservation](Reference/ID-Prefix-Reservation.md) ## [NuGet Client SDK](Reference/nuget-client-sdk.md) +## Archived content +### [project.json reference format](archive/project-json.md) +### [project.json and UWP](archive/project-json-and-UWP.md) +### [project.json impact](archive/project-json-impact.md) ## Extensibility ### [NuGet Credential Providers for Visual Studio](Reference/extensibility/Nuget-Credential-Providers-for-Visual-Studio.md) ### [nuget.exe Credential Providers](Reference/extensibility/nuget-exe-Credential-Providers.md) diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index 043f9efc1..647a1c941 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -9,16 +9,11 @@ ms.date: 10/24/2017 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: 2b92b119-6861-406c-82af-9d739af230e4 - -# optional metadata - description: Instructions for using the NuGet Package Manager Console in Visual Studio for working with packages. keywords: NuGet package manager console, NuGet powershell, managing NuGet packages ms.reviewer: - karann-msft - unniravindranathan - --- # Package Manager Console @@ -45,17 +40,6 @@ For example, finding and installing a package is done with three easy steps: Install-Package Elmah -ProjectName MyProject ``` -In this topic: - -- [Opening the console](#opening-the-console-and-console-controls) -- [Installing a package](#installing-a-package) -- [Uninstalling a package](#uninstalling-a-package) -- [Finding a package](#finding-a-package) -- [Updating a package](#updating-a-package) -- [Availability of the console](#availability-of-the-console) -- [Extending the Package Manager Console](#extending-the-package-manager-console) -- [Setting up a NuGet PowerShell profile](#setting-up-a-nuget-powershell-profile) - > [!Important] > All operations that are available in the console can also be done with the [NuGet CLI](../tools/nuget-exe-cli-reference.md). However, console commands operate within the context of Visual Studio and a saved project/solution and often accomplish more than their equivalent CLI commands. For example, installing a package through the console adds a reference to the project whereas the CLI command does not. For this reason, developers working in Visual Studio typically prefer using the console to the CLI. @@ -97,8 +81,8 @@ Installing a package performs the following actions: - Displays applicable license terms in the console window with implied agreement. If you do not agree to the terms, you should uninstall the package immediately. - Adds a reference to the project in whatever reference format is in use. References subsequently appear in Solution Explorer and the applicable reference format file. Note, however, that with PackageReference, you need to save the project to see the changes in the project file directly. - Caches the package: - - PackageReference: package is cached at `%USERPROFILE%\.nuget\packages` and the lock file i.e. `project.assets.json` is updated. - - `packages.config`: creates a `packages` folder at the solution root and copies the package files into a subfolder within it. The `package.config` file is updated. + - PackageReference: package is cached at `%USERPROFILE%\.nuget\packages` and the lock file i.e. `project.assets.json` is updated. + - `packages.config`: creates a `packages` folder at the solution root and copies the package files into a subfolder within it. The `package.config` file is updated. - Updates `app.config` and/or `web.config` if the package uses [source and config file transformations](../create-packages/source-and-config-file-transformations.md). - Installs any dependencies if not already present in the project. This might update package versions in the process, as described in [Dependency Resolution](../consume-packages/dependency-resolution.md). - Displays the package's readme file, if available, in a Visual Studio window. @@ -187,9 +171,7 @@ Some packages install new commands for the console. For example, `MvcScaffolding A PowerShell profile lets you make commonly-used commands available wherever you use PowerShell. NuGet supports a NuGet-specific profile typically found at the following location: -``` -%UserProfile%\Documents\WindowsPowerShell\NuGet_profile.ps1 -``` + %UserProfile%\Documents\WindowsPowerShell\NuGet_profile.ps1 To find the profile, type `$profile` in the console: diff --git a/docs/Tools/Package-Manager-UI.md b/docs/Tools/Package-Manager-UI.md index dc13dc986..531598892 100644 --- a/docs/Tools/Package-Manager-UI.md +++ b/docs/Tools/Package-Manager-UI.md @@ -7,7 +7,6 @@ ms.date: 12/08/2017 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: 62f6962b-7b84-4452-ae0d-a9e1ef1fc6f0 f1_keywords: - "vs.toolsoptionspages.nuget_package_manager" - "vs.toolsoptionspages.nuget_package_manager.general" @@ -132,7 +131,7 @@ To manage package sources: ## Package manager Options control -When a package is selected, the Package Manager UI displays a small, expandable **Options** control below the version selector (shown here both collapsed and expanded). Note that for some project types, such as .NET Core and those using the `project.json` reference format, only the **Show preview window** option is provided. +When a package is selected, the Package Manager UI displays a small, expandable **Options** control below the version selector (shown here both collapsed and expanded). Note that for some project types, only the **Show preview window** option is provided. ![Package manager options](media/PackageManagerUIOptions.png) diff --git a/docs/Tools/PowerShell-Reference.md b/docs/Tools/PowerShell-Reference.md index ed113e866..82894801c 100644 --- a/docs/Tools/PowerShell-Reference.md +++ b/docs/Tools/PowerShell-Reference.md @@ -1,24 +1,17 @@ --- -# required metadata - title: NuGet PowerShell Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/2/2017 +ms.date: 10/02/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: cd08b869-44c6-480e-90f7-494a6d08e6d0 - -# optional metadata - description: The complete reference to PowerShell commands available in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference ms.reviewer: - karann-msft - unniravindranathan - --- # PowerShell reference diff --git a/docs/Tools/cli-ref-add.md b/docs/Tools/cli-ref-add.md index 8e5fd8f03..af82ae168 100644 --- a/docs/Tools/cli-ref-add.md +++ b/docs/Tools/cli-ref-add.md @@ -3,11 +3,10 @@ title: NuGet CLI add command | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 01/18/2018 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 4f68a016-ad4e-41fc-b869-88910fc5121e description: Reference for the nuget.exe add command keywords: nuget add reference, add package command ms.reviewer: @@ -34,7 +33,7 @@ To expand all the files in the package to the destination package source, use th ## Usage -``` +```cli nuget add -Source [options] ``` @@ -55,7 +54,7 @@ Also see [Environment variables](cli-ref-environment-variables.md) ## Examples -``` +```cli nuget add foo.nupkg -Source c:\bar\ nuget add foo.nupkg -Source \\bar\packages\ diff --git a/docs/Tools/cli-ref-config.md b/docs/Tools/cli-ref-config.md index 9a109ab38..fcb6f8ff6 100644 --- a/docs/Tools/cli-ref-config.md +++ b/docs/Tools/cli-ref-config.md @@ -3,11 +3,10 @@ title: NuGet CLI config command | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 01/18/2018 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: a50295ff-8be9-47d9-a260-822e899334cb description: Reference for the nuget.exe config command keywords: nuget config reference, config command ms.reviewer: @@ -23,7 +22,7 @@ Gets or sets NuGet configuration values. For additional usage, see [Configuring ## Usage -``` +```cli nuget config -Set =[] [= ...] [options] nuget config -AsPath [options] ``` @@ -39,17 +38,17 @@ In NuGet 3.4+, `` can use [environment variables](cli-ref-environment-var | Option | Description | | --- | --- | | AsPath | Returns the config value as a path, ignored when `-Set` is used. | -| ConfigFile | *(2.5+)* The NuGet configuration file to modify. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | The NuGet configuration file to modify. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | | NonInteractive | Suppresses prompts for user input or confirmations. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | Also see [Environment variables](cli-ref-environment-variables.md) ### Examples -``` +```cli nuget config -Set repositoryPath=c:\packages -configfile c:\my.config nuget config -Set repositoryPath= diff --git a/docs/Tools/cli-ref-delete.md b/docs/Tools/cli-ref-delete.md index b9a830ff7..29f7be8ba 100644 --- a/docs/Tools/cli-ref-delete.md +++ b/docs/Tools/cli-ref-delete.md @@ -3,11 +3,10 @@ title: NuGet CLI delete command | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 01/18/2018 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: c213a07a-711d-47e0-9ee6-1d582e6cdb69 description: Reference for the nuget.exe delete command keywords: nuget delete reference, delete package command ms.reviewer: @@ -23,7 +22,7 @@ Deletes or unlists a package from a package source. For nuget.org, the delete co ## Usage -``` +```cli nuget delete [options] ``` @@ -34,18 +33,18 @@ where `` and `` identify the exact package to delete | Option | Description | | --- | --- | | ApiKey | The API key for the target repository. If not present, the one specified in *%AppData%\NuGet\NuGet.Config* is used. | -| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | | NonInteractive | Suppresses prompts for user input or confirmations. | | Source | Specifies the server URL. The URL for nuget.org is `https://api.nuget.org/v3/index.json`. For private feeds, substitute the host name, for example, *%hostname%/api/v3*. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | Also see [Environment variables](cli-ref-environment-variables.md) ## Examples -``` +```cli nuget delete MyPackage 1.0 nuget delete MyPackage 1.0 -Source http://package.contoso.com/source -apikey A1B2C3 diff --git a/docs/Tools/cli-ref-environment-variables.md b/docs/Tools/cli-ref-environment-variables.md index 446189381..743ee7469 100644 --- a/docs/Tools/cli-ref-environment-variables.md +++ b/docs/Tools/cli-ref-environment-variables.md @@ -3,11 +3,10 @@ title: NuGet CLI environment variables | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 01/18/2018 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 1f5c31ca-fa0a-4798-a906-110f2c73d00b description: Reference for the nuget.exe environment variables keywords: nuget environment variables ms.reviewer: diff --git a/docs/Tools/cli-ref-help.md b/docs/Tools/cli-ref-help.md index 215b5ff47..70d7e4b16 100644 --- a/docs/Tools/cli-ref-help.md +++ b/docs/Tools/cli-ref-help.md @@ -1,24 +1,17 @@ --- -# required metadata - title: NuGet CLI help command | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 01/18/2018 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 780d7f52-d6c6-45cd-8a62-218ff8c0b270 - -# optional metadata - description: Reference for the nuget.exe help command keywords: nuget help reference, help command ms.reviewer: - karann-msft - unniravindranathan - --- # help or ? command (NuGet CLI) @@ -29,7 +22,7 @@ Displays general help information and help information about specific commands. ## Usage -``` +```cli nuget help [command] [options] nuget ? [command] [options] ``` @@ -44,18 +37,18 @@ where [command] identifies a specific command for which to display help. | Option | Description | | --- | --- | | All | Print detailed help for all available commands; ignored if a specific command is given. | -| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the help command itself. | | Markdown | Print detailed help in markdown format when used with `-All`. Ignored otherwise. | | NonInteractive | Suppresses prompts for user input or confirmations. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | Also see [Environment variables](cli-ref-environment-variables.md) ## Examples -``` +```cli nuget help nuget help push nuget ? diff --git a/docs/Tools/cli-ref-init.md b/docs/Tools/cli-ref-init.md index 96fd62e6c..0d5317056 100644 --- a/docs/Tools/cli-ref-init.md +++ b/docs/Tools/cli-ref-init.md @@ -1,41 +1,34 @@ --- -# required metadata - title: NuGet CLI init command | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 01/18/2018 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: d413e4f3-1b41-4a92-8df8-87d21b542bd3 - -# optional metadata - description: Reference for the nuget.exe init command keywords: nuget init reference, init command ms.reviewer: - karann-msft - unniravindranathan - --- # init command (NuGet CLI) **Applies to:** package creation • **Supported versions:** 3.3+ -Copies all the packages from a flat folder to a destination folder using a hierarchical layout as described for the [add command](#add) above. That is, using `init` is equivalent to using the `add` command on each package in the folder. +Copies all the packages from a flat folder to a destination folder using a hierarchical layout as described for the [add command](cli-ref-add.md). That is, using `init` is equivalent to using the `add` command on each package in the folder. As with `add`, the destination must be either a local folder or a UNC path; HTTP package repositories such as nuget.org or private servers are not supported. ## Usage -``` +```cli nuget init [options] ``` -where `` is the folder containing packages and `` is the local folder or UNC pathname to which the packages will be copied. +where `` is the folder containing packages and `` is the local folder or UNC pathname to which the packages are copied. ## Options @@ -46,13 +39,13 @@ where `` is the folder containing packages and `` is the lo | Expand | Adds all files in each package that's added to the package source; same as `-Expand` with the `add` command. | | Help | Displays help information for the command. | | NonInteractive | Suppresses prompts for user input or confirmations. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | Also see [Environment variables](cli-ref-environment-variables.md) ## Examples -``` +```cli nuget init c:\foo c:\bar nuget init \\foo\packages \\bar\packages -Expand ``` diff --git a/docs/Tools/cli-ref-install.md b/docs/Tools/cli-ref-install.md index 88a4d2f19..bbf481093 100644 --- a/docs/Tools/cli-ref-install.md +++ b/docs/Tools/cli-ref-install.md @@ -3,11 +3,10 @@ title: NuGet CLI install command | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 12/07/2017 +ms.date: 01/18/2018 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 59ac622f-837c-4545-bc93-a56330e02d71 description: Reference for the nuget.exe install command keywords: nuget install reference, install package command ms.reviewer: @@ -22,19 +21,19 @@ ms.reviewer: Downloads and installs a package into a project, defaulting to the current folder, using specified package sources. > [!Tip] -> To download a package directly outside the context of a project, visit the package's page on [nuget.org](https://www.nuget.org) and select the **Download** link. +> To download a package directly outside the context of a project, visit the package's page on [nuget.org](https://www.nuget.org) and select the **Download** link. -If no sources are specified, those listed in the global configuration file, `%APPDATA%\NuGet\NuGet.Config`, are used. See [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md) for additional details. +If no sources are specified, those listed in the global configuration file, `%APPDATA%\NuGet\NuGet.Config`, are used. See [Configuring NuGet behavior](../consume-packages/configuring-nuget-behavior.md) for additional details. -If no specific packages are specified, `install` installs all packages listed in the project's `packages.config` file, making it similar to [`restore`](#restore). (The `install` command does not work with `project.json`.) +If no specific packages are specified, `install` installs all packages listed in the project's `packages.config` file, making it similar to [`restore`](cli-ref-restore.md). The `install` command does not modify a project file or `packages.config`; in this way it's similar to `restore` in that it only adds packages to disk but does not change a project's dependencies. -To add a dependency, either add a project through the Package Manager UI or Console in Visual Studio, or modify `packages.config` and then run either `install` or `restore`. For projects using `project.json`, you can modify that file and then run `restore`. +To add a dependency, either add a project through the Package Manager UI or Console in Visual Studio, or modify `packages.config` and then run either `install` or `restore`. ## Usage -``` +```cli nuget install [options] ``` @@ -44,7 +43,7 @@ where `` names the package to install (using the latest version), or | Option | Description | | --- | --- | -| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | | DisableParallelProcessing | Disables installing multiple packages in parallel. | | ExcludeVersion | Installs the package to a folder named with only the package name and not the version number. | | FallbackSource | *(3.2+)* A list of package sources to use as fallbacks in case the package isn't found in the primary or default source. | @@ -59,14 +58,14 @@ where `` names the package to install (using the latest version), or | RequireConsent | Verifies that restoring packages is enabled before downloading and installing the packages. For details, see [Package Restore](../consume-packages/package-restore.md). | | SolutionDirectory | Specifies root folder of the solution for which to restore packages. | | Source | Specifies the list of package sources (as URLs) to use. If omitted, the command uses the sources provided in configuration files, see [Configuring NuGet behavior](../Consume-Packages/Configuring-NuGet-Behavior.md). | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | | Version | Specifies the version of the package to install. | Also see [Environment variables](cli-ref-environment-variables.md) ## Examples -``` +```cli nuget install elmah nuget install packages.config diff --git a/docs/Tools/cli-ref-list.md b/docs/Tools/cli-ref-list.md index 7ee159038..f908ed1bd 100644 --- a/docs/Tools/cli-ref-list.md +++ b/docs/Tools/cli-ref-list.md @@ -1,24 +1,17 @@ --- -# required metadata - title: NuGet CLI list command | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 01/18/2018 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 728c8452-0457-4bb8-bfdc-de77fe1570bd - -# optional metadata - description: Reference for the nuget.exe list command keywords: nuget list reference, list packages command ms.reviewer: - karann-msft - unniravindranathan - --- # list command (NuGet CLI) @@ -29,30 +22,31 @@ Displays a list of packages from a given source. If no sources are specified, al ## Usage -``` +```cli nuget list [search terms] [options] ``` where the optional search terms will filter the displayed list. Search terms are applied to the names of packages, tags, and package descriptions. ## Options + | Option | Description | | --- | --- | | AllVersions | List all versions of a package. By default, only the latest package version is displayed. | -| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | | IncludeDelisted | *(3.2+)* Display unlisted packages. | | NonInteractive | Suppresses prompts for user input or confirmations. | | PreRelease | Includes prerelease packages in the list. | | Source | Specifies a list of packages sources to search. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | Also see [Environment variables](cli-ref-environment-variables.md) ## Examples -``` +```cli nuget list nuget list -Verbosity detailed -AllVersions diff --git a/docs/Tools/cli-ref-locals.md b/docs/Tools/cli-ref-locals.md index afb1a7946..844b9a424 100644 --- a/docs/Tools/cli-ref-locals.md +++ b/docs/Tools/cli-ref-locals.md @@ -1,24 +1,17 @@ --- -# required metadata - title: NuGet CLI locals command | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 01/18/2018 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 7f672c7c-74c9-4296-bc27-4d47882b541c - -# optional metadata - description: Reference for the nuget.exe locals command keywords: nuget locals reference, locals command ms.reviewer: - karann-msft - unniravindranathan - --- ## locals command (NuGet CLI) @@ -29,7 +22,7 @@ Clears or lists local NuGet resources such as the http-request cache, packages c ## Usage -``` +```cli nuget locals [options] ``` @@ -51,7 +44,7 @@ Also see [Environment variables](cli-ref-environment-variables.md) ## Examples -``` +```cli nuget locals all -list nuget locals http-cache -clear ``` diff --git a/docs/Tools/cli-ref-mirror.md b/docs/Tools/cli-ref-mirror.md index 23118b7c7..36144b423 100644 --- a/docs/Tools/cli-ref-mirror.md +++ b/docs/Tools/cli-ref-mirror.md @@ -1,24 +1,17 @@ --- -# required metadata - title: NuGet CLI mirror command | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 01/18/2018 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 190d7010-172e-44b8-8a32-94a2a63be4f3 - -# optional metadata - description: Reference for the nuget.exe mirror command keywords: nuget mirror reference, mirror command ms.reviewer: - karann-msft - unniravindranathan - --- # mirror command (NuGet CLI) @@ -32,7 +25,7 @@ Mirrors a package and its dependencies from the specified source repositories to ## Usage -``` +```cli nuget mirror [options] ``` @@ -59,7 +52,7 @@ Also see [Environment variables](cli-ref-environment-variables.md) ## Examples -``` +```cli nuget mirror packages.config https://MyRepo/nuget https://MyRepo/api/v2/package -source https://nuget.org/api/v2 -apikey myApiKey -nocache nuget mirror Microsoft.AspNet.Mvc https://MyRepo/nuget https://MyRepo/api/v2/package -version 4.0.20505.0 diff --git a/docs/Tools/cli-ref-pack.md b/docs/Tools/cli-ref-pack.md index 339c2dd8c..e6b303b99 100644 --- a/docs/Tools/cli-ref-pack.md +++ b/docs/Tools/cli-ref-pack.md @@ -3,11 +3,10 @@ title: NuGet CLI pack command | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 12/08/2017 +ms.date: 01/18/2018 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 55e9e4d2-8039-4e9b-bdd9-c8b3eb0e894b description: Reference for the nuget.exe pack command keywords: nuget pack reference, pack command ms.reviewer: @@ -26,7 +25,7 @@ Creates a NuGet package based on the specified `.nuspec` or project file. The `d ## Usage -``` +```cli nuget pack [options] ``` @@ -53,7 +52,7 @@ where `` and `` specify the `.nuspec` or project file, | Suffix | *(3.4.4+)* Appends a suffix to the internally generated version number, typically used for appending build or other pre-release identifiers. For example, using `-suffix nightly` will create a package with a version number like `1.2.3-nightly`. Suffixes must start with a letter to avoid warnings, errors, and potential incompatibilities with different versions of NuGet and the NuGet Package Manager. | | Symbols | Specifies that the package contains sources and symbols. When used with a `.nuspec` file, this creates a regular NuGet package file and the corresponding symbols package. | | Tool | Specifies that the output files of the project should be placed in the `tool` folder. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | | Version | Overrides the version number from the `.nuspec` file. | Also see [Environment variables](cli-ref-environment-variables.md) @@ -79,7 +78,7 @@ For this project, the package created by `nuget pack` will have a dependency on ## Examples -``` +```cli nuget pack nuget pack foo.nuspec @@ -95,5 +94,5 @@ nuget pack foo.csproj -Build -Symbols -Properties owners=janedoe,xiaop;version=" nuget pack foo.nuspec -Version 2.1.0 -nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5 +nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 3.2 ``` diff --git a/docs/Tools/cli-ref-push.md b/docs/Tools/cli-ref-push.md index fd5989487..a41809dd5 100644 --- a/docs/Tools/cli-ref-push.md +++ b/docs/Tools/cli-ref-push.md @@ -1,24 +1,17 @@ --- -# required metadata - title: NuGet CLI push command | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 01/18/2018 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: a9709eee-add2-47fb-98e6-eec0697087f6 - -# optional metadata - description: Reference for the nuget.exe push command keywords: nuget push reference, push command ms.reviewer: - karann-msft - unniravindranathan - --- # push command (NuGet CLI) @@ -34,7 +27,7 @@ NuGet's default configuration is obtained by loading `%AppData%\NuGet\NuGet.Conf ## Usage -``` +```cli nuget push [options] ``` @@ -45,23 +38,23 @@ where `` identifies the package to push to the server. | Option | Description | | --- | --- | | ApiKey | The API key for the target repository. If not present, the one specified in *%AppData%\NuGet\NuGet.Config* is used. | -| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | | DisableBuffering | Disables buffering when pushing to an HTTP(s) server to decrease memory usages. Caution: when this option is used, integrated Windows authentication might not work. | | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | | NonInteractive | Suppresses prompts for user input or confirmations. | | NoSymbols | *(3.5+)* If a symbols package exists, it will not be pushed to a symbol server. | -| Source | Specifies the server URL. With NuGet 2.5+, NuGet will identify a UNC or local folder source and simply copy the file there instead of pushing it using HTTP. Also, starting with NuGet 3.4.2, this is a mandatory parameter unless the `NuGet.Config` file specifies a *DefaultPushSource* value (see [Configuring NuGet behavior](../Consume-Packages/Configuring-NuGet-Behavior.md)). | +| Source | Specifies the server URL. NuGet identifies a UNC or local folder source and simply copies the file there instead of pushing it using HTTP. Also, starting with NuGet 3.4.2, this is a mandatory parameter unless the `NuGet.Config` file specifies a *DefaultPushSource* value (see [Configuring NuGet behavior](../Consume-Packages/Configuring-NuGet-Behavior.md)). | | SymbolSource | *(3.5+)* Specifies the symbol server URL; nuget.smbsrc.net is used when pushing to nuget.org | | SymbolApiKey | *(3.5+)* Specifies the API key for the URL specified in `-SymbolSource`. | | Timeout | Specifies the timeout, in seconds, for pushing to a server. The default is 300 seconds (5 minutes). | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | Also see [Environment variables](cli-ref-environment-variables.md) ## Examples -``` +```cli nuget push foo.nupkg nuget push foo.symbols.nupkg diff --git a/docs/Tools/cli-ref-restore.md b/docs/Tools/cli-ref-restore.md index 5c70b8120..a9c482a8f 100644 --- a/docs/Tools/cli-ref-restore.md +++ b/docs/Tools/cli-ref-restore.md @@ -1,45 +1,34 @@ --- -# required metadata - title: NuGet CLI restore command | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 01/18/2018 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 6ee41020-e548-4e61-b8cd-c82b77ac6af7 - -# optional metadata - description: Reference for the nuget.exe restore command keywords: nuget restore reference, restore packages command ms.reviewer: - karann-msft - unniravindranathan - --- # restore command (NuGet CLI) **Applies to:** package consumption • **Supported versions:** 2.7+ -NuGet 2.7+: Downloads and installs any packages missing from the `packages` folder. +Downloads and installs any packages missing from the `packages` folder. When used with NuGet 4.0+ and the PackageReference format, generates a `.nuget.props` file, if needed, in the `obj` folder. (The file can be omitted from source control.) -NuGet 3.3+ with projects using `project.json`: Generates a `project.lock.json` file and a `.nuget.props` file, if needed. (Both files can be omitted from source control.) - -NuGet 4.0+ with project in which package references are included in the project file directly: Generates a `.nuget.props` file, if needed, in the `obj` folder. (The file can be omitted from source control.) - -On Mac OSX and Linux with the CLI on Mono, restoring packages is not supported with the PackageReference format. +On Mac OSX and Linux with the CLI on Mono, restoring packages is not supported with PackageReference. ## Usage -``` +```cli nuget restore [options] ``` -where `` specifies the location of a solution, a `packages.config` file, or a `project.json` file. See [Remarks](#remarks) below for behavioral details. +where `` specifies the location of a solution or a `packages.config` file. See [Remarks](#remarks) below for behavioral details. ## Options @@ -63,7 +52,7 @@ where `` specifies the location of a solution, a `packages.config` | RequireConsent | Verifies that restoring packages is enabled before downloading and installing the packages. For details, see [Package Restore](../consume-packages/package-restore.md). | | SolutionDirectory | Specifies the solution folder. Not valid when restoring packages for a solution. | | Source | Specifies the list of package sources (as URLs) to use for the restore. If omitted, the command uses the sources provided in configuration files, see [Configuring NuGet behavior](../Consume-Packages/Configuring-NuGet-Behavior.md). | -| Verbosity |>Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | +| Verbosity |>Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | Also see [Environment variables](cli-ref-environment-variables.md) @@ -76,15 +65,14 @@ The restore command performs the following steps: | --- | --- | Solution (folder) | NuGet looks for a `.sln` file and uses that if found; otherwise gives an error. `(SolutionDir)\.nuget` is used as the starting folder. `.sln` file | Restore packages identified by the solution; gives an error if `-SolutionDirectory` is used. `$(SolutionDir)\.nuget` is used as the starting folder. - `packages.config`, `project.json`, or project file | Restore packages listed in the file, resolving and installing dependencies. + `packages.config` or project file | Restore packages listed in the file, resolving and installing dependencies. Other file type | File is assumed to be a `.sln` file as above; if it's not a solution, NuGet gives an error. (projectPath not specified) | - NuGet looks for solution files in the current folder. If a single file is found, that one is used to restore packages; if multiple solutions are found, NuGet gives an error. - |- If there are no solution files, NuGet looks for a `packages.config` or `project.json` and uses that to restore packages. - |- If no solution file, `packages.config`, or `project.json` is found, NuGet gives an error. + |- If there are no solution files, NuGet looks for a `packages.config` and uses that to restore packages. + |- If no solution or `packages.config` file is found, NuGet gives an error. 1. Determine the packages folder using the following priority order (NuGet gives an error if none of these folders are found): - - The `%userprofile%\.nuget\packages` value in `project.json`. - The folder specified with `-PackagesDirectory`. - The `repositoryPath` vale in `Nuget.Config` - The folder specified with `-SolutionDirectory` @@ -97,7 +85,7 @@ The restore command performs the following steps: ## Examples -``` +```cli # Restore packages for a solution file nuget restore a.sln diff --git a/docs/Tools/cli-ref-setapikey.md b/docs/Tools/cli-ref-setapikey.md index c26060a4f..0c0fc531d 100644 --- a/docs/Tools/cli-ref-setapikey.md +++ b/docs/Tools/cli-ref-setapikey.md @@ -1,24 +1,17 @@ --- -# required metadata - title: NuGet CLI setapikey command | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 01/18/2018 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: a64c0462-973d-4100-ba3f-8902a2b127f7 - -# optional metadata - description: Reference for the nuget.exe setapikey command keywords: nuget setapikey reference, setapikey command ms.reviewer: - karann-msft - unniravindranathan - --- ## setapikey command (NuGet CLI) @@ -29,7 +22,7 @@ Saves an API key for a given server URL into `NuGet.Config` so that it doesn't n ## Usage -``` +```cli nuget setapikey -Source [options] ``` @@ -39,17 +32,17 @@ where `` identifies the server and `` is the key or password to sav | Option | Description | | --- | --- | -| ConfigFile | *(2.5+)* The NuGet configuration file to modify. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | The NuGet configuration file to modify. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | | NonInteractive | Suppresses prompts for user input or confirmations. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | Also see [Environment variables](cli-ref-environment-variables.md) ## Examples -``` +```cli nuget setapikey 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a nuget setapikey 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -source https://example.com/nugetfeed diff --git a/docs/Tools/cli-ref-sources.md b/docs/Tools/cli-ref-sources.md index b4068be80..31fea4fdd 100644 --- a/docs/Tools/cli-ref-sources.md +++ b/docs/Tools/cli-ref-sources.md @@ -1,24 +1,17 @@ --- -# required metadata - title: NuGet CLI sources command | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 01/18/2018 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 997ce736-91ba-4cd2-88c9-b4b168e3130a - -# optional metadata - description: Reference for the nuget.exe sources command keywords: nuget sources reference, sources command ms.reviewer: - karann-msft - unniravindranathan - --- # sources command (NuGet CLI) @@ -31,7 +24,7 @@ Note that the source URL for nuget.org is `https://api.nuget.org/v3/index.json`. ## Usage -``` +```cli nuget sources -Name -Source ``` @@ -41,7 +34,7 @@ where `` is one of *List, Add, Remove, Enable, Disable,* or *Update*, | Option | Description | | --- | --- | -| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Format | Applies to the `list` action and can be `Detailed` (the default) or `Short`. | | Help | Displays help information for the command. | @@ -49,7 +42,7 @@ where `` is one of *List, Add, Remove, Enable, Disable,* or *Update*, | Password | Specifies the password for authenticating with the source. | | StorePasswordInClearText | Indicates to store the password in unencrypted text instead of the default behavior of storing an encrypted form. | | UserName | Specifies the user name for authenticating with the source. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | > [!Note] > Make sure to add the sources' password under the same user context as the nuget.exe is later used to access the package source. The password will be stored encrypted in the config file and can only be decrypted in the same user context as it was encrypted. So for example when you use a build server to restore NuGet packages the password must be encrypted with the same Windows user under which the build server task will run. @@ -58,7 +51,7 @@ Also see [Environment variables](cli-ref-environment-variables.md) ## Examples -``` +```cli nuget sources Add -Name "MyServer" -Source \\myserver\packages nuget sources Disable -Name "MyServer" diff --git a/docs/Tools/cli-ref-spec.md b/docs/Tools/cli-ref-spec.md index 02bfd408b..4761f43d2 100644 --- a/docs/Tools/cli-ref-spec.md +++ b/docs/Tools/cli-ref-spec.md @@ -1,24 +1,17 @@ --- -# required metadata - title: NuGet CLI spec command | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 01/18/2018 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 85611449-87e6-489b-8c6c-fe1d7be76c13 - -# optional metadata - description: Reference for the nuget.exe spec command keywords: nuget spec reference, spec command ms.reviewer: - karann-msft - unniravindranathan - --- # spec command (NuGet CLI) @@ -29,7 +22,7 @@ Generates a `.nuspec` file for a new package. If run in the same folder as a pro ## Usage -``` +```cli nuget spec [] [options] ``` @@ -44,13 +37,13 @@ where `` is an optional package identifier to save in the `.nuspec` f | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | | NonInteractive | Suppresses prompts for user input or confirmations. | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | Also see [Environment variables](cli-ref-environment-variables.md) ## Examples -``` +```cli nuget spec nuget spec MyPackage diff --git a/docs/Tools/cli-ref-update.md b/docs/Tools/cli-ref-update.md index fe1475422..dfb5e37a9 100644 --- a/docs/Tools/cli-ref-update.md +++ b/docs/Tools/cli-ref-update.md @@ -7,7 +7,6 @@ ms.date: 12/07/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 61fde945-6983-46a5-8636-da0fada4e641 description: Reference for the nuget.exe update command keywords: nuget update reference, update package command ms.reviewer: @@ -19,9 +18,9 @@ ms.reviewer: **Applies to:** package consumption • **Supported versions:** all -Updates all packages in a project (using `packages.config`) to their latest available versions. It is recommended to run ['restore'](#restore) before running the `update`. (To update an individual package, use [`nuget install`](cli-ref-install.md) without specifying a version number, in which case NuGet installs the latest version.) +Updates all packages in a project (using `packages.config`) to their latest available versions. It is recommended to run ['restore'](cli-ref-restore.md) before running the `update`. (To update an individual package, use [`nuget install`](cli-ref-install.md) without specifying a version number, in which case NuGet installs the latest version.) -Note: `update` does not work with the CLI running under Mono (Mac OSX or Linux). The command also does not work with projects using `project.json` or PackageReference management formats. +Note: `update` does not work with the CLI running under Mono (Mac OSX or Linux) or when using the PackageReference format. The `update` command also updates assembly references in the project file, provided those references already exist. If an updated package has an added assembly, a new reference is *not* added. New package dependencies also don't have their assembly references added. To include these operations as part of an update, update the package in Visual Studio using the Package Manager UI or the Package Manager Console. @@ -29,7 +28,7 @@ This command can also be used to update nuget.exe itself using the *-self* flag. ## Usage -``` +```cli nuget update [options] ``` @@ -39,8 +38,8 @@ where `` identifies either a `packages.config` or solution file that | Option | Description | | --- | --- | -| ConfigFile | *(2.5+)* The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | -| FileConflictAction | *(2.5+)* Specifies the action to take when asked to overwrite or ignore existing files referenced by the project. Values are *overwrite, ignore, none*. | +| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| FileConflictAction | Specifies the action to take when asked to overwrite or ignore existing files referenced by the project. Values are *overwrite, ignore, none*. | | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | | Id | Specifies a list of package IDs to update. | @@ -50,16 +49,16 @@ where `` identifies either a `packages.config` or solution file that | PreRelease | Allows updating to prerelease versions. This flag is not required when updating prerelease packages that are already installed. | | RepositoryPath | Specifies the local folder where packages are installed. | | Safe | Specifies that only updates with the highest version available within the same major and minor version as the installed package will be installed. | -| Self | *(1.4+)* Updates nuget.exe to the latest version; all other arguments are ignored. | +| Self | Updates nuget.exe to the latest version; all other arguments are ignored. | | Source | Specifies the list of package sources (as URLs) to use for the updates. If omitted, the command uses the sources provided in configuration files, see [Configuring NuGet behavior](../Consume-Packages/Configuring-NuGet-Behavior.md). | -| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed (2.5+)*. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | | Version | When used with one package ID, specifies the version of the package to update. | Also see [Environment variables](cli-ref-environment-variables.md) ## Examples -``` +```cli nuget update # update packages installed in solution.sln, using MSBuild version 14.0 to load the solution and its project(s). diff --git a/docs/Tools/dotnet-Commands.md b/docs/Tools/dotnet-Commands.md index 5169c3351..f2b0162e0 100644 --- a/docs/Tools/dotnet-Commands.md +++ b/docs/Tools/dotnet-Commands.md @@ -7,7 +7,6 @@ ms.date: 12/08/2017 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: 0c81dbc4-2c14-4ec8-b87a-b802a899c3ea description: A short reference for NuGet-related commands using the dotnet command-line interface. keywords: dotnet NuGet commands, dotnet pack, dotnet restore, dotnet nuget locals, dotnet nuget push, dotnet nuget delete ms.reviewer: diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 253ec914c..f94640cb7 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -7,7 +7,6 @@ ms.date: 10/24/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: d777c424-0cf3-4bc0-8abd-7ca16c22192b description: Command-line reference index for the nuget.exe CLI keywords: nuget.exe reference index, nuget.exe command-line interface, nuget.exe CLI, nuget command ms.reviewer: diff --git a/docs/Tools/ps-ref-add-bindingredirect.md b/docs/Tools/ps-ref-add-bindingredirect.md index b82838896..27a3d283e 100644 --- a/docs/Tools/ps-ref-add-bindingredirect.md +++ b/docs/Tools/ps-ref-add-bindingredirect.md @@ -7,7 +7,6 @@ ms.date: 12/07/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 90f4dcb0-6e5a-4948-8ea9-62e0d061d95a description: Reference for Add-BindingRedirect PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Add-BindingRedirect ms.reviewer: diff --git a/docs/Tools/ps-ref-find-package.md b/docs/Tools/ps-ref-find-package.md index 06a3e569b..588338b8c 100644 --- a/docs/Tools/ps-ref-find-package.md +++ b/docs/Tools/ps-ref-find-package.md @@ -7,13 +7,11 @@ ms.date: 6/1/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 2f7b8847-8259-4366-98c0-13cab88d6e1b description: Reference for Find-Package PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Find-Package ms.reviewer: - karann-msft - unniravindranathan - --- # Find-Package (Package Manager Console in Visual Studio) diff --git a/docs/Tools/ps-ref-get-package.md b/docs/Tools/ps-ref-get-package.md index 22d8b8731..8127dbb83 100644 --- a/docs/Tools/ps-ref-get-package.md +++ b/docs/Tools/ps-ref-get-package.md @@ -7,7 +7,6 @@ ms.date: 12/07/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 42476008-64b3-480e-a966-98b2fa38b681 description: Reference for Get-Package PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Get-Package ms.reviewer: @@ -79,4 +78,3 @@ Get-Package -Updates # Lists packages installed in a specific project that have available updates Get-Package -Updates -ProjectName MyProject ``` - diff --git a/docs/Tools/ps-ref-get-project.md b/docs/Tools/ps-ref-get-project.md index 215363cd4..3606b37cb 100644 --- a/docs/Tools/ps-ref-get-project.md +++ b/docs/Tools/ps-ref-get-project.md @@ -6,15 +6,12 @@ manager: ghogen ms.date: 12/07/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 09c10ea3-ba26-4bfa-999e-de5350e6e920 description: Reference for GetProject PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Get-Project ms.reviewer: - karann-msft - unniravindranathan - --- # Get-Project (Package Manager Console in Visual Studio) diff --git a/docs/Tools/ps-ref-install-package.md b/docs/Tools/ps-ref-install-package.md index b76a30629..9cf4c16d9 100644 --- a/docs/Tools/ps-ref-install-package.md +++ b/docs/Tools/ps-ref-install-package.md @@ -3,7 +3,7 @@ title: NuGet Install-Package PowerShell Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 6/1/2017 +ms.date: 06/01/2017 ms.topic: reference ms.prod: nuget ms.technology: null diff --git a/docs/Tools/ps-ref-open-packagepage.md b/docs/Tools/ps-ref-open-packagepage.md index 5f4e78314..079f56ee6 100644 --- a/docs/Tools/ps-ref-open-packagepage.md +++ b/docs/Tools/ps-ref-open-packagepage.md @@ -7,13 +7,11 @@ ms.date: 12/07/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: e9f84530-6b3d-43b0-a832-0acb2997f6fc description: Reference for Open-PackagePage PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Open-PackagePage ms.reviewer: - karann-msft - unniravindranathan - --- # Open-PackagePage (Package Manager Console in Visual Studio) diff --git a/docs/Tools/ps-ref-register-tabexpansion.md b/docs/Tools/ps-ref-register-tabexpansion.md index 2fa1147f7..b73b4ff47 100644 --- a/docs/Tools/ps-ref-register-tabexpansion.md +++ b/docs/Tools/ps-ref-register-tabexpansion.md @@ -7,7 +7,6 @@ ms.date: 12/07/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 8314ec69-ee8c-4933-84ef-e6d8a412d268 description: Reference for Register-TabExpansion PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Register-TabExpansion ms.reviewer: diff --git a/docs/Tools/ps-ref-sync-package.md b/docs/Tools/ps-ref-sync-package.md index dfb79ccb7..250dc5c52 100644 --- a/docs/Tools/ps-ref-sync-package.md +++ b/docs/Tools/ps-ref-sync-package.md @@ -7,7 +7,6 @@ ms.date: 12/07/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 1b980b93-fa58-430c-b663-78ce069b1603 description: Reference for Sync-Package PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Sync-Package ms.reviewer: diff --git a/docs/Tools/ps-ref-uninstall-package.md b/docs/Tools/ps-ref-uninstall-package.md index 48faa2796..d1a478ce4 100644 --- a/docs/Tools/ps-ref-uninstall-package.md +++ b/docs/Tools/ps-ref-uninstall-package.md @@ -3,17 +3,15 @@ title: NuGet Uninstall-Package PowerShell Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 6/1/2017 +ms.date: 06/01/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: f4f5dc79-8e8e-4012-8986-873a5d9283d9 description: Reference for Uninstall-Package PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Uninstall-Package ms.reviewer: - karann-msft - unniravindranathan - --- # Uninstall-Package (Package Manager Console in Visual Studio) diff --git a/docs/Tools/ps-ref-update-package.md b/docs/Tools/ps-ref-update-package.md index a622a3edc..29f2dc466 100644 --- a/docs/Tools/ps-ref-update-package.md +++ b/docs/Tools/ps-ref-update-package.md @@ -7,7 +7,6 @@ ms.date: 12/07/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: b4aa92a9-ce47-4d23-ae51-d5683e08a9d5 description: Reference for Update-Package PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Update-Package ms.reviewer: diff --git a/docs/Visual-Studio-Extensibility/Project-System-Support.md b/docs/Visual-Studio-Extensibility/Project-System-Support.md index 5f7079c96..4bccc8ed9 100644 --- a/docs/Visual-Studio-Extensibility/Project-System-Support.md +++ b/docs/Visual-Studio-Extensibility/Project-System-Support.md @@ -1,31 +1,17 @@ --- -# required metadata - title: NuGet Support for the Visual Studio Project System | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 01/09/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 9d7fa7f6-82ed-4df6-9734-f43a3d8e3b98 - -# optional metadata - description: Integration of NuGet into the Visual Studio project system for third-party project types. keywords: NuGet in Visual Studio, custom project types, Visual Studio projects -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # NuGet support for the Visual Studio project system @@ -34,20 +20,18 @@ To support third-party project types in Visual Studio, NuGet 3.x+ supports the [ To integrate with NuGet, a project system must advertise its own support for all the project capabilities described in this topic. - -> [!NOTE] -> Do not declare capabilities that your project does not actually have for the sake of enabling packages to install in your project. Many features of Visual Studio and other extensions depend on project capabilities besides the NuGet client. Falsely advertising capabilities of your project can lead these components to malfunction and your users' experience to degrade. +> [!Note] +> Don't declare capabilities that your project does not actually have for the sake of enabling packages to install in your project. Many features of Visual Studio and other extensions depend on project capabilities besides the NuGet client. Falsely advertising capabilities of your project can lead these components to malfunction and your users' experience to degrade. ## Advertise project capabilities The NuGet client determines which packages are compatible with your project type based on the [project's capabilities](https://github.com/Microsoft/VSProjectSystem/blob/master/doc/overview/about_project_capabilities.md), as described in the following table. - -|Capability|Description| -|----------------|-----------| -|AssemblyReferences|Indicates that the project supports assembly references (distinct from WinRTReferences)| -|DeclaredSourceItems|Indicates that the project is a typical MSBuild project (not DNX) in that it declares source items in the project itself (rather than a `project.json` file that assumes all files in the folder are part of a compilation).| -|UserSourceItems|Indicates that the user is allowed to add arbitrary files to their project.| +| Capability | Description | +| --- | --- | +| AssemblyReferences | Indicates that the project supports assembly references (distinct from WinRTReferences). | +| DeclaredSourceItems | Indicates that the project is a typical MSBuild project (not DNX) in that it declares source items in the project itself. | +| UserSourceItems|Indicates that the user is allowed to add arbitrary files to their project. | For CPS-based project systems, the implementation details for project capabilities described in the rest of this section have been done for you. See [declaring project capabilities in CPS projects](https://github.com/Microsoft/VSProjectSystem/blob/master/doc/overview/about_project_capabilities.md#how-to-declare-project-capabilities-in-your-project). @@ -85,9 +69,8 @@ public interface IVsBooleanSymbolPresenceChecker } ``` - A sample implementation of this interface would then be: - + ```cs class VsProjectCapabilitiesPresenceChecker : IVsBooleanSymbolPresenceChecker { diff --git a/docs/Visual-Studio-Extensibility/Visual-Studio-Templates.md b/docs/Visual-Studio-Extensibility/Visual-Studio-Templates.md index 177064d24..963aa39b5 100644 --- a/docs/Visual-Studio-Extensibility/Visual-Studio-Templates.md +++ b/docs/Visual-Studio-Extensibility/Visual-Studio-Templates.md @@ -3,7 +3,7 @@ title: NuGet Packages in Visual Studio templates | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/3/2018 +ms.date: 01/03/2018 ms.topic: article ms.prod: nuget ms.technology: null @@ -145,4 +145,4 @@ SDKs that are installed using an MSI can install NuGet packages directly on the 1. Require project/item templates to be saved on creation by including [`true`](/visualstudio/extensibility/promptforsaveoncreation-element-visual-studio-templates) in the `.vstemplate` file. -1. Templates do not include a `packages.config` or `project.json` file, and do not include or any references or content that would be added when NuGet packages are installed. +1. Templates do not include a `packages.config` file, and do not include or any references or content that would be added when NuGet packages are installed. diff --git a/docs/Visual-Studio-Extensibility/NuGet-API-in-Visual-Studio.md b/docs/Visual-Studio-Extensibility/nuget-apiI-in-visual-studio.md similarity index 99% rename from docs/Visual-Studio-Extensibility/NuGet-API-in-Visual-Studio.md rename to docs/Visual-Studio-Extensibility/nuget-apiI-in-visual-studio.md index 3b131b742..353183d49 100644 --- a/docs/Visual-Studio-Extensibility/NuGet-API-in-Visual-Studio.md +++ b/docs/Visual-Studio-Extensibility/nuget-apiI-in-visual-studio.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet API in Visual Studio | Microsoft Docs author: kraigb ms.author: kraigb @@ -8,25 +6,14 @@ manager: ghogen ms.date: 01/09/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 31f88cf0-d40a-42ee-974e-07910bb0771c - -# optional metadata - description: Interface reference for the API that NuGet exports through the Managed Extensibility Framework in Visual Studio keywords: NuGet API, NuGet in Visual Studio, NuGet programming interfaces -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- + # NuGet API in Visual Studio In addition to the Package Manager UI and Console in Visual Studio, NuGet also exports some useful services through the [Managed Extensibility Framework (MEF)](/dotnet/framework/mef/index). This interface allows other components in Visual Studio to interact with NuGet, which can be used to install and uninstall packages, and to obtain information about installed packages. diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index 5335e075f..e290c185f 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -82,15 +82,12 @@ With only the reference list, NuGet can then reinstall—that is, *restore*& The computer that receives a project, such as a build server obtaining a copy of the project as part of an automated deployment system, simply asks NuGet to restore dependencies whenever they're needed. Build systems like Visual Studio Team Services provide "NuGet restore" steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository), they can invoke a command like `nuget restore` (NuGet CLI), `dotnet restore` (dotnet CLI), or `Install-Package` (Package Manager Console) to obtain all the necessary a packages. Visual Studio, for its part, automatically restores packages when building a project. -Clearly, then, NuGet's primary role where developers are concerned is maintaining that reference list on behalf of your project and providing the means to efficiently restore (and update) those referenced packages. - -How this exactly happens has evolved over the different versions of NuGet, resulting in several *package management formats*, as they're called: +Clearly, then, NuGet's primary role where developers are concerned is maintaining that reference list on behalf of your project and providing the means to efficiently restore (and update) those referenced packages. This list is maintained in one of two *package management formats*, as they're called: - [`packages.config`](Schema/packages-config.md): *(NuGet 1.0+)* An XML file that maintains a flat list of all dependencies in the project, including the dependencies of other installed packages. - [PackageReference](Consume-Packages/Package-References-in-Project-Files.md) (or "package references in project files") | *(NuGet 4.0+)* Maintains a list of a project's top-level dependencies directly within the project file, so no separate file is needed. An associated file, `project.assets.json`, is dynamically generated to manage the overall dependency graph. -- [`project.json`](Schema/project-json.md): *(deprecated)* A JSON file that maintains a list of the project's dependencies with an overall package graph in an associated file, `project.lock.json`. This format is deprecated in favor of PackageReference. -Which package management format is employed in any given project depends on the project type, and the available version of NuGet (and/or Visual Studio). To check what format is being used, simply look for `packages.config` or `project.json` in the project root after installing your first package. If you don't see either file, look in the project file directly for a <PackageReference>element. +Which package management format is employed in any given project depends on the project type, and the available version of NuGet (and/or Visual Studio). To check what format is being used, simply look for `packages.config` in the project root after installing your first package. If you don't that file, look in the project file directly for a <PackageReference>element. ## What else does NuGet do? diff --git a/docs/Create-Packages/project-json-and-UWP.md b/docs/archive/project-json-and-uwp.md similarity index 96% rename from docs/Create-Packages/project-json-and-UWP.md rename to docs/archive/project-json-and-uwp.md index 03b03f9f1..caf9e4865 100644 --- a/docs/Create-Packages/project-json-and-UWP.md +++ b/docs/archive/project-json-and-uwp.md @@ -1,6 +1,4 @@ --- -# required metadata - title: NuGet project.json file with UWP projects | Microsoft Docs author: kraigb ms.author: kraigb @@ -8,27 +6,19 @@ manager: ghogen ms.date: 7/17/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 37caf4d7-dabd-4a78-aad2-7d445f818457 - -# optional metadata - description: Description of how the project.json file is used to track NuGet dependencies in Universal Windows Platform (UWP) projects. keywords: NuGet dependencies, NuGet and UWP, UWP and project.json, NuGet project.json file -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: --- # project.json and UWP +> [!Important] +> This content is deprecated. Projects should use either the `packages.config` or PackageReference formats. + 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. ## Adding UWP support to an existing package @@ -52,14 +42,14 @@ In this case you would add the `dotnet` TxM to your package. Unlike other TxMs, There are two ways to figure out which dependencies to list: 1. Use the [NuSpec Dependency Generator](https://github.com/onovotny/ReferenceGenerator) **3rd party** tool. The tool automates the process and updates your `.nuspec` file with the dependant packages on build. It is available via a NuGet package, [NuSpec.ReferenceGenerator](https://www.nuget.org/packages/NuSpec.ReferenceGenerator/). -2. (The hard way) Use `ILDasm` to look at your `.dll` to see what assemblies are actually needed at runtime. Then determine which NuGet package they each come from. -See the [`project.json`](../Schema/project-json.md) topic for details on features that help in the creation of a package that supports the `dotnet` TxM. +1. (The hard way) Use `ILDasm` to look at your `.dll` to see what assemblies are actually needed at runtime. Then determine which NuGet package they each come from. + +See the [`project.json`](project-json.md) topic for details on features that help in the creation of a package that supports the `dotnet` TxM. > [!Important] > If your package is intended to work with PCL projects, we highly recommend to create a `dotnet` folder, to avoid warnings and potential compatibility issues. - ## Directory structure NuGet packages using this format have the following well-known folder and behaviors: @@ -73,14 +63,12 @@ NuGet packages using this format have the following well-known folder and behavi | Ref | `ref` is an optional folder that contains .NET assemblies defining the public surface (public types and methods) for an application to compile against. The assemblies in this folder may have no implementation, they are purely used to define surface area for the compiler. If the package has no `ref` folder, then the `lib` is both the reference assembly and the implementation assembly. | | Runtimes | `runtimes` is an optional folder that contains OS specific code, such as CPU architecture and OS specific or otherwise platform-dependent binaries. | - ## MSBuild targets and props files in packages NuGet packages can contain `.targets` and `.props` files which are imported into any MSBuild project that the package is installed into. In NuGet 2.x, this was done by injecting `` statements into the `.csproj` file, in NuGet 3.0 there is no specific "installation to project" action. Instead the package restore process writes two files `[projectname].nuget.props` and `[projectname].NuGet.targets`. MSBuild knows to look for these two files and automatically imports them near the beginning and near the end of the project build process. This provides very similar behavior to NuGet 2.x, but with one major difference: *there is no guaranteed order of targets/props files in this case*. However, MSBuild does provide ways to order targets through the `BeforeTargets` and `AfterTargets` attributes of the `` definition (see [Target Element (MSBuild)](/visualstudio/msbuild/target-element-msbuild). - ## Lib and Ref The behavior of the `lib` folder hasn't changed significantly in NuGet v3. However, all assemblies must be within sub-folders named after a TxM, and can no longer be placed directly under the `lib` folder. A TxM is the name of a platform that a given asset in a package is supposed to work for. Logically these are an extension of the Target Framework Monikers (TFM) e.g. `net45`, `net46`, `netcore50`, and `dnxcore50` are all examples of TxMs (see [Target Frameworks](../Schema/Target-Frameworks.md). TxM can refer to a framework (TFM) as well as other platform-specific surface areas. For example the UWP TxM (`uap10.0`) represents the .NET surface area as well as the Windows surface area for UWP applications. @@ -123,10 +111,8 @@ The structure of the `ref` folder is the same as `lib`, for example: └───portable-net451-win81 MyImageProcessingLibrary.dll - In this example the assemblies in the `ref` directories would all be identical. - ## Runtimes The runtimes folder contains assemblies and native libraries required to run on specific "runtimes", which are generally defined by Operating System and CPU architecture. These runtimes are identified using [Runtime Identifiers (RIDs)](/dotnet/core/rid-catalog) such as `win`, `win-x86`, `win7-x86`, `win8-64`, etc. @@ -191,7 +177,6 @@ Another way to use runtimes is to ship a package that is purely a managed wrappe In this case there is no top-level `lib` folder as that folder as there is no implementation of this package that doesn't rely on the corresponding native assembly. If the managed assembly, `MyLibrary.dll`, was exactly the same in both of these cases then we could put it in a top level `lib` folder, but because the lack of a native assembly doesn't cause the package to fail installing if it was installed on a platform that wasn't win-x86 or win-x64 then the top level lib would be used but no native assembly would be copied. - ## Authoring packages for NuGet 2 and NuGet 3 If you want to create a package that can be consumed by projects using `packages.config` as well as packages using `project.json` then the following apply: diff --git a/docs/archive/project-json-archive.md b/docs/archive/project-json-archive.md new file mode 100644 index 000000000..9154fa9e1 --- /dev/null +++ b/docs/archive/project-json-archive.md @@ -0,0 +1,155 @@ +--- +title: NuGet project.json archive content | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 01/18/2018 +ms.topic: article +ms.prod: nuget +ms.technology: null +description: Miscellaneous bits of project.json content removed from other areas of the NuGet documentation. +keywords: NuGet project.json file +ms.reviewer: +- karann-msft +- unniravindranathan +--- + +# project.json archive + +The `project.json` reference format was introduced with NuGet 3.x and used for certain project types. It was deprecated with the introduction of the PackageReference format, in which dependencies are listed directly in a project file. + +Also see: + +- [project.json schema](project-json.md) +- [project.json impact on package authors](project-json-impact.md) +- [project.json and UWP](project-json-and-uwp.md) + +## project.json reference format + +*Originally in [Package restore](../what-is-nuget.md).* + +In the list of reference formats: + +- [`project.json`](Schema/project-json.md): *(deprecated)* A JSON file that maintains a list of the project's dependencies with an overall package graph in an associated file, `project.lock.json`. This format is deprecated in favor of PackageReference. + +## nuget restore on Mono + +*Originally in [Install NuGet client tools](../guides/install-nuget.md).* + +Works with `project.json`. + +## Constraining package versions with restore + +*Originally in [Package restore](consume-packages/package-restore.md#constraining-package-versions-with-restore).* + +- `project.json`: Specify a version range directly with the dependency's version number. For example: + + ```json + "Newtonsoft.json": "[6, 7)" + ``` + +## NuGet CLI commands + +- `nuget install` does not work with `project.json`. +- `nuget restore`: with projects using `project.json`, generates a `project.lock.json` file and a `.nuget.props` file, if needed. (Both files can be omitted from source control.) The `` argument can point a `project.json` file and has the same behavior as pointing to a `packages.config` or project file. In the priority order for package folders, `%userprofile%\.nuget\packages` is searched first when using `project.json`. +- `nuget update`: On Mono, this command does not work with projects using `project.json`. + +## Dependency resolution with PackageReference + +*Originally in [Dependency resolution](../Consume-Packages/dependency-resolution.md#dependency-resolution-with-packagereference).* + +The behavior of PackageReference applies also to `project.json`. NuGet restore writes the dependency graph into a file named `project.lock.json` alongside `project.json`. + +## Managing dependency assets + +*Originally in [Dependency resolution](../Consume-Packages/dependency-resolution.md#managing-dependency-assets).* + +When using the `project.json` format, you can control which assets from dependencies flow into the top-level project. For details, see [project.json](project-json.md). + +## Excluding references + +*Originally in [Dependency resolution](../Consume-Packages/dependency-resolution.md#excluding-references).* + +- `project.json`: add `"exclude" : "all"` in the dependency for PackageC: + + ```json + { + "dependencies": { + "PackageC": { + "version": "1.0.0", + "exclude": "all" + } + } + } + ``` + +## Resolving incompatible package errors + +*Originally in [Dependency resolution](../Consume-Packages/dependency-resolution.md#resolving-incompatible-package-errors).* + +An added means of resolving errors: + +- **Not recommended**: as a temporary solution while you work with the package author, projects targeting `netcore`, `netstandard`, and `netcoreapp` can denote other frameworks as being compatible, thereby allowing packages targeting those other frameworks to be used. See [project.json imports](project-json.md#imports) and [MSBuild restore target PackageTargetFallback](../schema/msbuild-targets.md#packagetargetfallback). This can cause unexpected behaviors, so again, it's best to resolve package incompatibilities by working with the package author on an update. + +## Target frameworks + +*Originally in [Target frameworks](../schema/target-frameworks.md).* + +- [project.json](project-json.md): The `frameworks` node specifies the framework versions that the project can be compiled against. + +## Creating a package + +*Originally in [Creating a package](../Create-Packages/creating-a-package.md)* + +### Setting a package type + +With .NET Core 1.x, when a DotnetCliTool package is installed, Visual Studio places the package in the `project.json` `tools` node instead of the `dependencies` node. + +Package types are set in `project.json`. + +- `project.json`: Indicate the package type within a `packOptions.packageType` property json: + + ```json + { + // ... + "packOptions": { + "packageType": "DotnetCliTool" + } + } + ``` + +### Adding targets and props for MSBuild + +*Originally in [Create .NET Standard NuGet Packages with Visual Studio 2015](../guides/create-net-standard-packages-vs2015.md).* + +When using `project.json`, targets are not added to the project but are made available through the `project.lock.json`. + +### Package versioning + +*Originally in [Package versioning](../reference/package-versioning.md).* + +When using the `project.json` format, NuGet also supports using a wildcard notation, \*, for Major, Minor, Patch, and pre-release suffix parts of the number. + +### NuGet.Config reference + +*Originally in [NuGet.Config reference](../schema/nuget-config-file.md).* + +`globalPackagesFolder` applies only to `project.json`. + +### nuspec file reference + +*Originally in [nuspec reference](../schema/nuspec.md).* + +The `` element is used instead of `` with `project.json`. + +### Package manager options control + +*Originally in [Package Manager UI reference](../tools/Package-Manager-UI.md).* + +Projects using `project.json` reference format show only the **Show preview window** option. + +### Visual Studio Templates + +*Originally in [NuGet Packages in Visual Studio templates](../Visual-Studio-Extensibility/visual-studio-templates.md).* + +Best practices: templates do not include a `project.json` file, and do not include or any references or content that would be added when NuGet packages are installed. \ No newline at end of file diff --git a/docs/Create-Packages/project-json-Impact.md b/docs/archive/project-json-impact.md similarity index 90% rename from docs/Create-Packages/project-json-Impact.md rename to docs/archive/project-json-impact.md index 24817e500..0637c1d06 100644 --- a/docs/Create-Packages/project-json-Impact.md +++ b/docs/archive/project-json-impact.md @@ -1,6 +1,4 @@ --- -# required metadata - title: project.json impact on NuGet package authors | Microsoft Docs author: kraigb ms.author: kraigb @@ -8,28 +6,19 @@ manager: ghogen ms.date: 1/9/2017 ms.topic: article ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: 983485df-9375-4827-b58b-70065320ee37 - -# optional metadata - description: Details on how the implementation of project.json in NuGet 3.x affects package authors, such as unsupported features, content, and package format. keywords: NuGet and project.json, project.json impact, package authoring considerations, project.json features -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # Impact of project.json when creating packages +> [!Important] +> This content is deprecated. Projects should use either the `packages.config` or PackageReference formats. + The `project.json` system used in NuGet 3+ affects package authors in several ways as described in the following sections. ## Changes affecting existing packages usage @@ -42,18 +31,17 @@ The transitive restore model, described in [Dependency resolution](../consume-pa Also, install scripts were supported only in Visual Studio. Other IDEs had to mock the Visual Studio extensibility API to attempt to support such scripts, and no support was available in common editors and command-line tools. -### Content transforms are not supported. +### Content transforms are not supported Similar to install scripts, transforms run on package install and are typically not idempotent. Since there is no install time anymore, XDT Transform and similar features are not supported, and are ignored if such a package is used in a transitive scenario. - ### Content Traditional NuGet packages are shipping content files such as source code and configuration files. There are used typically in two scenarios: 1. Initial files dropped into the project so the user can edit them at a later time. The common example is default configuration files. -2. Content files used as companions to the assemblies installed in the project. The example here would be a logo image used by an assembly. +1. Content files used as companions to the assemblies installed in the project. The example here would be a logo image used by an assembly. Support for content is currently disabled for similar reasons for scripts and transforms, but we are in the process of designing support for content. @@ -75,15 +63,14 @@ In summary if the functionality above is not absolutely necessary, we recommend It would be possible to build packages to work for both `packages.config` and `project.json` scenarios through shimming, however it's often simpler to just structure the packages the traditional way, without the deprecated features mentioned above. - -## 3.x package format ## +## 3.x package format The 3.x package format allows for several additional features beyond NuGet 2.x: 1. Defining a reference assembly used for compilation and a set of implementation assemblies used for runtime on different platforms/devices. Which allows you to take advantage of platform specific APIs while providing a common surface area for your consumers. Specifically this makes writing intermediate portable libraries easier. -2. Allows packages to pivot on platforms e.g. operating systems or CPU architecture. +1. Allows packages to pivot on platforms e.g. operating systems or CPU architecture. -3. Allows for separation of platform specific implementations to companion packages. +1. Allows for separation of platform specific implementations to companion packages. -4. Support Native dependencies as a first class citizen. \ No newline at end of file +1. Support Native dependencies as a first class citizen. \ No newline at end of file diff --git a/docs/Schema/project-json.md b/docs/archive/project-json.md similarity index 93% rename from docs/Schema/project-json.md rename to docs/archive/project-json.md index e7dff18ab..8418660d9 100644 --- a/docs/Schema/project-json.md +++ b/docs/archive/project-json.md @@ -1,38 +1,24 @@ --- -# required metadata - title: project.json File Reference for NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/26/2017 +ms.date: 07/26/2017 ms.topic: reference ms.prod: nuget -#ms.service: ms.technology: null -ms.assetid: d64fa6d8-a3f7-4c72-95d3-1a964375ccb8 - -# optional metadata - description: In some project types, project.json maintains the list of NuGet packages used in the project. keywords: NuGet project.json, NuGet package references, NuGet dependencies, project.lock.json -#ROBOTS: -#audience: -#ms.devlang: ms.reviewer: - karann-msft - unniravindranathan -#ms.suite: -#ms.tgt_pltfrm: -#ms.custom: - --- # project.json reference *NuGet 3.x+* -The `project.json` file maintains a list of packages used in a project, known as a package reference format. It supersedes `packages.config` but is in turn superseded by [PackageReference](../Consume-Packages/Package-References-in-Project-Files.md) with NuGet 4.0+. +The `project.json` file maintains a list of packages used in a project, known as a package reference format. It supersedes `packages.config` but is in turn superseded by [PackageReference](../consume-packages/package-references-in-project-files.md) with NuGet 4.0+. The [`project.lock.json`](#projectlockjson) file (described below) is also used in projects employing `project.json`. @@ -51,10 +37,10 @@ The [`project.lock.json`](#projectlockjson) file (described below) is also used }, "supports" : { "CompatibilityProfile" : {} - } + } } ``` - + ## Dependencies Lists the NuGet package dependencies of your project in the following form: @@ -62,13 +48,13 @@ Lists the NuGet package dependencies of your project in the following form: ```json "PackageID" : "version_constraint" ``` - + For example: ```json -"dependencies": { +"dependencies": { "Microsoft.NETCore": "5.0.0", - "System.Runtime.Serialization.Primitives": "4.0.10" + "System.Runtime.Serialization.Primitives": "4.0.10" } ``` @@ -187,11 +173,11 @@ The `project.json` file used by NuGet is a subset of that found in ASP.NET Core - Compilation is handled by MSBuild so compilation options, preprocessor defines, etc. are all part of the MSBuild project file and not `project.json`. -In NuGet 3+, developers are not expected to manually edit the `project.json`, as the Package Manager UI in Visual Studio manipulates the content. That said, you can certainly edit the file, but you must build the project to start a package restore or invoke restore in another way. See [Package restore](../Consume-Packages/Package-Restore.md). +In NuGet 3+, developers are not expected to manually edit the `project.json`, as the Package Manager UI in Visual Studio manipulates the content. That said, you can certainly edit the file, but you must build the project to start a package restore or invoke restore in another way. See [Package restore](../consume-packages/package-restore.md). ## project.lock.json The `project.lock.json` file is generated in the process of restoring the NuGet packages in projects that use `project.json`. It holds a snapshot of all the information that is generated as NuGet walks the graph of packages and includes the version, contents, and dependencies of all the packages in your project. The build system uses this to choose packages from a global location that are relevant when building the project instead of depending on a local packages folder in the project itself. This results in faster build performance because it's necessary to read only `project.lock.json` instead of many separate `.nuspec` files. -`project.lock.json` is automatically generated on package restore, so it can be omitted from source control by adding it to `.gitignore` and `.tfignore` files (see [Packages and source control](../Consume-Packages/Packages-and-Source-Control.md). However, if you include it in source control, the change history shows changes in dependencies resolved over time. +`project.lock.json` is automatically generated on package restore, so it can be omitted from source control by adding it to `.gitignore` and `.tfignore` files (see [Packages and source control](../consume-packages/packages-and-source-control.md). However, if you include it in source control, the change history shows changes in dependencies resolved over time. diff --git a/docs/includes/package-restore.md b/docs/includes/package-restore.md deleted file mode 100644 index 350efd09f..000000000 --- a/docs/includes/package-restore.md +++ /dev/null @@ -1,3 +0,0 @@ -- **Package Manager UI** (Visual Studio): right-click the solution in Solution Explorer and select **Restore NuGet Packages**. If one or more individual packages are still not installed properly (meaning that Solution Explorer shows an error icon), then use the Package Manager UI to uninstall the affected packages and reinstall them. See [Reinstalling and updating packages](../Consume-Packages/Reinstalling-and-Updating-Packages.md) - -- **Command line**: use the [nuget restore](../tools/cli-ref-restore.md) command. Simply running `nuget restore` in the project folder attempts to restore the project's dependencies. diff --git a/docs/index.md b/docs/index.md index dd44cbcfe..a90d92f01 100644 --- a/docs/index.md +++ b/docs/index.md @@ -19,13 +19,9 @@ manager: ghogen ms.date: 08/15/2017 ms.topic: hub-page ms.prod: nuget -#ms.service: ms.technology: null -#ms.suite: -ms.assetid: 49f63ee9-86a9-41de-baba-e3d66f3d5966 ms.reviewer: - karann-msft - ---

    From 7980bcdec9b84c5d8179e79c82a45c53d7526777 Mon Sep 17 00:00:00 2001 From: Ankit Mishra Date: Thu, 18 Jan 2018 19:03:23 -0800 Subject: [PATCH 0459/2943] Adding F1-reference keywords for NU codes --- docs/Reference/Errors-and-Warnings.md | 31 +++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index 4a222aea0..e51be7bcb 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -16,6 +16,37 @@ ms.reviewer: - anangaur - karann-msft - unniravindranathan + +f1_keywords: + - "NU1000" + - "NU1001" + - "NU1002" + - "NU1003" + - "NU1100" + - "NU1101" + - "NU1102" + - "NU1103" + - "NU1104" + - "NU1105" + - "NU1106" + - "NU1107" + - "NU1108" + - "NU1201" + - "NU1202" + - "NU1203" + - "NU1401" + - "NU1500" + - "NU1501" + - "NU1502" + - "NU1503" + - "NU1601" + - "NU1602" + - "NU1603" + - "NU1604" + - "NU1605" + - "NU1608" + - "NU1701" + - "NU1801" --- # Errors and warnings From 98b606e05cd7cb8af87f1b28820eca159b672d61 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 18 Jan 2018 19:11:46 -0800 Subject: [PATCH 0460/2943] Fix links --- ...t-apiI-in-visual-studio.md => nuget-api-in-visual-studio.md} | 0 docs/archive/project-json-and-uwp.md | 2 +- docs/archive/project-json-archive.md | 2 +- docs/archive/project-json-impact.md | 2 +- docs/archive/project-json.md | 2 +- 5 files changed, 4 insertions(+), 4 deletions(-) rename docs/Visual-Studio-Extensibility/{nuget-apiI-in-visual-studio.md => nuget-api-in-visual-studio.md} (100%) diff --git a/docs/Visual-Studio-Extensibility/nuget-apiI-in-visual-studio.md b/docs/Visual-Studio-Extensibility/nuget-api-in-visual-studio.md similarity index 100% rename from docs/Visual-Studio-Extensibility/nuget-apiI-in-visual-studio.md rename to docs/Visual-Studio-Extensibility/nuget-api-in-visual-studio.md diff --git a/docs/archive/project-json-and-uwp.md b/docs/archive/project-json-and-uwp.md index caf9e4865..5aa275dfa 100644 --- a/docs/archive/project-json-and-uwp.md +++ b/docs/archive/project-json-and-uwp.md @@ -3,7 +3,7 @@ title: NuGet project.json file with UWP projects | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 7/17/2017 +ms.date: 07/17/2017 ms.topic: article ms.prod: nuget ms.technology: null diff --git a/docs/archive/project-json-archive.md b/docs/archive/project-json-archive.md index 9154fa9e1..1e4b5e25a 100644 --- a/docs/archive/project-json-archive.md +++ b/docs/archive/project-json-archive.md @@ -3,7 +3,7 @@ title: NuGet project.json archive content | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 01/18/2018 +ms.date: 01/17/2018 ms.topic: article ms.prod: nuget ms.technology: null diff --git a/docs/archive/project-json-impact.md b/docs/archive/project-json-impact.md index 0637c1d06..aac1fc30a 100644 --- a/docs/archive/project-json-impact.md +++ b/docs/archive/project-json-impact.md @@ -3,7 +3,7 @@ title: project.json impact on NuGet package authors | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 1/9/2017 +ms.date: 01/18/2018 ms.topic: article ms.prod: nuget ms.technology: null diff --git a/docs/archive/project-json.md b/docs/archive/project-json.md index 8418660d9..bb9131635 100644 --- a/docs/archive/project-json.md +++ b/docs/archive/project-json.md @@ -3,7 +3,7 @@ title: project.json File Reference for NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 07/26/2017 +ms.date: 07/27/2017 ms.topic: reference ms.prod: nuget ms.technology: null From 047581996800bf890802f3f3e731e444495e98bb Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 18 Jan 2018 20:18:27 -0800 Subject: [PATCH 0461/2943] Move archives lower --- docs/TOC.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index 87ed872ba..a088fe691 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -77,13 +77,13 @@ ## [Errors and warnings](Reference/Errors-and-Warnings.md) ## [ID Prefix Reservation](Reference/ID-Prefix-Reservation.md) ## [NuGet Client SDK](Reference/nuget-client-sdk.md) +## Extensibility +### [NuGet Credential Providers for Visual Studio](Reference/extensibility/Nuget-Credential-Providers-for-Visual-Studio.md) +### [nuget.exe Credential Providers](Reference/extensibility/nuget-exe-Credential-Providers.md) ## Archived content ### [project.json reference format](archive/project-json.md) ### [project.json and UWP](archive/project-json-and-UWP.md) ### [project.json impact](archive/project-json-impact.md) -## Extensibility -### [NuGet Credential Providers for Visual Studio](Reference/extensibility/Nuget-Credential-Providers-for-Visual-Studio.md) -### [nuget.exe Credential Providers](Reference/extensibility/nuget-exe-Credential-Providers.md) # API ## [Overview](API/overview.md) ## [How-to: query for all packages using the API](Guides/api/query-for-all-published-packages.md) From 18eebb5f75e83fb24310e9ced7a308370eeabf5a Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 18 Jan 2018 20:41:37 -0800 Subject: [PATCH 0462/2943] More cleanup from content validation --- docs/API/NuGet-Protocols.md | 14 ++----- docs/API/catalog-resource.md | 39 +++++-------------- docs/API/package-base-address-resource.md | 24 +++--------- docs/API/package-publish-resource.md | 12 ++---- docs/API/registration-base-url-resource.md | 18 +++------ docs/API/report-abuse-resource.md | 8 +--- .../search-autocomplete-service-resource.md | 14 ++----- docs/API/search-query-service-resource.md | 8 +--- docs/API/service-index.md | 12 +----- .../Configuring-NuGet-Behavior.md | 17 ++------ .../Consume-Packages/Dependency-Resolution.md | 7 ---- .../Finding-and-Choosing-Packages.md | 6 --- .../Managing-the-NuGet-Cache.md | 16 ++++---- docs/Create-Packages/Creating-a-Package.md | 2 +- docs/Release-Notes/Known-Issues.md | 2 +- docs/Release-Notes/NuGet-1.4.md | 4 +- docs/Release-Notes/NuGet-2.5.md | 24 ++++++------ docs/Release-Notes/NuGet-3.5-Beta2.md | 2 - docs/Schema/msbuild-targets.md | 4 +- docs/Tools/cli-ref-locals.md | 2 +- docs/Tools/cli-ref-setapikey.md | 2 +- 21 files changed, 69 insertions(+), 168 deletions(-) diff --git a/docs/API/NuGet-Protocols.md b/docs/API/NuGet-Protocols.md index 7af9b6c87..c085db9f3 100644 --- a/docs/API/NuGet-Protocols.md +++ b/docs/API/NuGet-Protocols.md @@ -42,9 +42,7 @@ be used to validate that the package belongs to a particular user (account) on n Clients are required to pass the following header when they make API calls to **push** packages to nuget.org: -``` -X-NuGet-Protocol-Version: 4.1.0 -``` + X-NuGet-Protocol-Version: 4.1.0 Note that the `X-NuGet-Client-Version` header has similar semantics but is reserved to only be used by the official NuGet client. Third party clients should use the `X-NuGet-Protocol-Version` header and value. @@ -59,9 +57,7 @@ If a client interacts with external services and needs to validate whether a pac This API is used to get a verify-scope key for a nuget.org author to validate a package owned by him/her. -``` -POST api/v2/package/create-verification-key/{ID}/{VERSION} -``` + POST api/v2/package/create-verification-key/{ID}/{VERSION} #### Request parameters @@ -73,7 +69,7 @@ X-NuGet-ApiKey | Header | string | yes | For example, `X-NuGet-ApiKey: {USE #### Response -``` +```json { "Key": "{Verify scope key from nuget.org}", "Expires": "{Date}" @@ -84,9 +80,7 @@ X-NuGet-ApiKey | Header | string | yes | For example, `X-NuGet-ApiKey: {USE This API is used to validate a verify-scope key for package owned by the nuget.org author. -``` -GET api/v2/verifykey/{ID}/{VERSION} -``` + GET api/v2/verifykey/{ID}/{VERSION} #### Request parameters diff --git a/docs/API/catalog-resource.md b/docs/API/catalog-resource.md index 90ef7832f..e7beabc3f 100644 --- a/docs/API/catalog-resource.md +++ b/docs/API/catalog-resource.md @@ -47,13 +47,9 @@ All URLs found in the catalog resource support only the HTTP methods `GET` and ` ## Catalog index -The catalog index is a document in a well-known location that has a list of catalog items, ordered cronologically. It -is the entry point of the catalog resource. +The catalog index is a document in a well-known location that has a list of catalog items, ordered cronologically. It is the entry point of the catalog resource. -The index is comprised of catalog pages. Each catalog page contains catalog items. Each catalog item represents an -event concerning a single package at a point in time. A catalog item can represent a package that was created, -unlisted, relisted, or deleted from the package source. By processing the catalog items in chronological order, the -client can build an up-to-date view of every package that exists on the V3 package source. +The index is comprised of catalog pages. Each catalog page contains catalog items. Each catalog item represents an event concerning a single package at a point in time. A catalog item can represent a package that was created, unlisted, relisted, or deleted from the package source. By processing the catalog items in chronological order, the client can build an up-to-date view of every package that exists on the V3 package source. In short, catalog blobs have the following hierarchical structure: @@ -61,28 +57,19 @@ In short, catalog blobs have the following hierarchical structure: - **Page**: a grouping of catalog items. - **Leaf**: a document representing a catalog item, which is a snapshot of a single package's state. -Each catalog object has a property called the `commitTimeStamp` representing when the item was added to the -catalog. Catalog items are added to a catalog page in batches called commits. All catalog items in the same commit -have the same commit timestamp (`commitTimeStamp`) and commit ID (`commitId`). Catalog items placed in the same commit -represent events that happened around the same point in time on the package source. There is no ordering within a -catalog commit. +Each catalog object has a property called the `commitTimeStamp` representing when the item was added to the catalog. Catalog items are added to a catalog page in batches called commits. All catalog items in the same commit have the same commit timestamp (`commitTimeStamp`) and commit ID (`commitId`). Catalog items placed in the same commit represent events that happened around the same point in time on the package source. There is no ordering within a catalog commit. Because each package ID and version is unique, there will never be more than one catalog item in a commit. This ensures that catalog items for a single package can always be unambiguously ordered with respect to commit timestamp. -There is never be more than one commit to the catalog per `commitTimeStamp`. In other words, the `commitId` is -redundant with the `commitTimeStamp`. +There is never be more than one commit to the catalog per `commitTimeStamp`. In other words, the `commitId` is redundant with the `commitTimeStamp`. -In contrast to the [package metadata resource](registration-base-url-resource.md), which is indexed by package ID, the -catalog is indexed (and queryable) only by time. +In contrast to the [package metadata resource](registration-base-url-resource.md), which is indexed by package ID, the catalog is indexed (and queryable) only by time. -Catalog items are always added to the catalog in a monotonically increasing, chronological order. This means that if a -catalog commit is added at time X then no catalog commit will ever be added with a time less than or equal to X. +Catalog items are always added to the catalog in a monotonically increasing, chronological order. This means that if a catalog commit is added at time X then no catalog commit will ever be added with a time less than or equal to X. The following request fetches the catalog index. -``` -GET {@id} -``` + GET {@id} The catalog index is a JSON document that contains an object with the following properties: @@ -119,9 +106,7 @@ URL. ### Sample request -``` -GET https://api.nuget.org/v3/catalog0/index.json -``` + GET https://api.nuget.org/v3/catalog0/index.json ### Sample response @@ -183,9 +168,7 @@ For more details about what each type means, see the [corresponding items type]( ### Sample request -``` -GET https://api.nuget.org/v3/catalog0/page2926.json -``` + GET https://api.nuget.org/v3/catalog0/page2926.json ### Sample response @@ -277,9 +260,7 @@ The `published` timestamp is the time when the package was last listed. #### Sample request -``` GET https://api.nuget.org/v3/catalog0/data/2015.02.01.11.18.40/windowsazure.storage.1.0.0.json -``` #### Sample response @@ -307,9 +288,7 @@ item's commit timestamp. #### Sample request -``` GET https://api.nuget.org/v3/catalog0/data/2017.11.02.00.40.00/netstandard1.4_lib.1.0.0-test.json -``` #### Sample response diff --git a/docs/API/package-base-address-resource.md b/docs/API/package-base-address-resource.md index 9f4fbf55a..918466ccc 100644 --- a/docs/API/package-base-address-resource.md +++ b/docs/API/package-base-address-resource.md @@ -53,9 +53,7 @@ listing" for the package content API mentioned below. > [!Note] > This list contains both listed and unlisted package versions. -``` -GET {@id}/{LOWER_ID}/index.json -``` + GET {@id}/{LOWER_ID}/index.json ### Request parameters @@ -86,9 +84,7 @@ in the following endpoints. ### Sample request -``` -GET https://api.nuget.org/v3-flatcontainer/owin/index.json -``` + GET https://api.nuget.org/v3-flatcontainer/owin/index.json ### Sample response @@ -99,9 +95,7 @@ GET https://api.nuget.org/v3-flatcontainer/owin/index.json If the client knows a package ID and version and wants to download the package content, they only need to construct the following URL: -``` -GET {@id}/{LOWER_ID}/{LOWER_VERSION}/{LOWER_ID}.{LOWER_VERSION}.nupkg -``` + GET {@id}/{LOWER_ID}/{LOWER_VERSION}/{LOWER_ID}.{LOWER_VERSION}.nupkg ### Request parameters @@ -127,9 +121,7 @@ If the package does not exist on the package source, a 404 status code is return ### Sample request -``` -GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/9.0.1/newtonsoft.json.9.0.1.nupkg -``` + GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/9.0.1/newtonsoft.json.9.0.1.nupkg ### Sample response @@ -140,9 +132,7 @@ The binary stream that is the .nupkg for Newtonsoft.Json 9.0.1. If the client knows a package ID and version and wants to download the package manifest, they only need to construct the following URL: -``` -GET {@id}/{LOWER_ID}/{LOWER_VERSION}/{LOWER_ID}.nuspec -``` + GET {@id}/{LOWER_ID}/{LOWER_VERSION}/{LOWER_ID}.nuspec ### Request parameters @@ -167,9 +157,7 @@ If the package does not exist on the package source, a 404 status code is return ### Sample request -``` -GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/6.0.4/newtonsoft.json.nuspec -``` + GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/6.0.4/newtonsoft.json.nuspec ### Sample response diff --git a/docs/API/package-publish-resource.md b/docs/API/package-publish-resource.md index 9c36ba5f0..56fd9ea80 100644 --- a/docs/API/package-publish-resource.md +++ b/docs/API/package-publish-resource.md @@ -52,9 +52,7 @@ endpoint, see below. nuget.org supports pushing new packages using the following API. If the package with the provided ID and version already exists, nuget.org will reject the push. Other package sources may support replacing an existing package. -``` -PUT https://www.nuget.org/api/v2/package -``` + PUT https://www.nuget.org/api/v2/package ### Request parameters @@ -96,9 +94,7 @@ implementations are free to interpret this signal as a hard delete, soft delete, [NuGet.Server](https://www.nuget.org/packages/NuGet.Server) (a server implementation only supporting the older V2 API) supports handling this request as either an unlist or a hard delete based on a configuration option. -``` -DELETE https://www.nuget.org/api/v2/package/{ID}/{VERSION} -``` + DELETE https://www.nuget.org/api/v2/package/{ID}/{VERSION} ### Request parameters @@ -123,9 +119,7 @@ HTTP method instead of the `DELETE` method. If the package is already listed, the request still succeeds. -``` -POST https://www.nuget.org/api/v2/package/{ID}/{VERSION} -``` + POST https://www.nuget.org/api/v2/package/{ID}/{VERSION} ### Request parameters diff --git a/docs/API/registration-base-url-resource.md b/docs/API/registration-base-url-resource.md index c399b6e52..7fd6fa064 100644 --- a/docs/API/registration-base-url-resource.md +++ b/docs/API/registration-base-url-resource.md @@ -97,9 +97,7 @@ must perform more HTTP requests to get the information it needs. The heuristic that nuget.org uses is as follows: if there are 128 or more versions of a package, break the leaves into pages of size 64. If there are less than 128 versions, inline all leaves into the registration index. -``` -GET {@id}/{LOWER_ID}/index.json -``` + GET {@id}/{LOWER_ID}/index.json ### Request parameters @@ -223,11 +221,9 @@ any version of the dependency is allowed. ### Sample request -``` -GET https://api.nuget.org/v3/registration3/nuget.server.core/index.json -``` + GET https://api.nuget.org/v3/registration3/nuget.server.core/index.json -### Sample response +### Sample response [!code-JSON [package-registration-index.json](./_data/package-registration-index.json)] @@ -256,9 +252,7 @@ The shape of the registration leaf objects is the same as in the registration in ## Sample request -``` -GET https://api.nuget.org/v3/registration3/ravendb.client/page/1.0.531/1.0.729-unstable.json -``` + GET https://api.nuget.org/v3/registration3/ravendb.client/page/1.0.531/1.0.729-unstable.json ## Sample response @@ -290,9 +284,7 @@ registration | string | no | The URL to the registration index ### Sample request -``` -GET https://api.nuget.org/v3/registration3/nuget.versioning/4.3.0.json -``` + GET https://api.nuget.org/v3/registration3/nuget.versioning/4.3.0.json ### Sample response diff --git a/docs/API/report-abuse-resource.md b/docs/API/report-abuse-resource.md index 1321496ef..044665033 100644 --- a/docs/API/report-abuse-resource.md +++ b/docs/API/report-abuse-resource.md @@ -67,13 +67,9 @@ whether the version is normalized. For example, nuget.org's report abuse template looks like this: -``` -https://www.nuget.org/packages/{id}/{version}/ReportAbuse -``` + https://www.nuget.org/packages/{id}/{version}/ReportAbuse If the client implementation needs to display a link to the report abuse form for NuGet.Versioning 4.3.0, it would produce the following URL and provide it to the user: -``` -https://www.nuget.org/packages/NuGet.Versioning/4.3.0/ReportAbuse -``` \ No newline at end of file + https://www.nuget.org/packages/NuGet.Versioning/4.3.0/ReportAbuse diff --git a/docs/API/search-autocomplete-service-resource.md b/docs/API/search-autocomplete-service-resource.md index 211ca43d4..e2644a8f9 100644 --- a/docs/API/search-autocomplete-service-resource.md +++ b/docs/API/search-autocomplete-service-resource.md @@ -49,9 +49,7 @@ a package typeahead feature in a user interface integrated with a NuGet package A package with only unlisted versions will not appear in the results. -``` -GET {@id}?q={QUERY}&skip={SKIP}&take={TAKE}&prerelease={PRERELEASE}&semVerLevel={SEMVERLEVEL} -``` + GET {@id}?q={QUERY}&skip={SKIP}&take={TAKE}&prerelease={PRERELEASE}&semVerLevel={SEMVERLEVEL} ### Request parameters @@ -94,9 +92,7 @@ data | array of strings | yes | The package IDs matched by the request ### Sample request -``` GET https://api-v2v3search-0.nuget.org/autocomplete?q=storage&prerelease=true -``` ### Sample response @@ -109,9 +105,7 @@ versions for a provided package ID. A package version that is unlisted will not appear in the results. -``` -GET {@id}?id={ID}&prerelease={PRERELEASE}&semVerLevel={SEMVERLEVEL} -``` + GET {@id}?id={ID}&prerelease={PRERELEASE}&semVerLevel={SEMVERLEVEL} ### Request parameters @@ -144,9 +138,7 @@ The package versions in the `data` array could contain SemVer 2.0.0 build metada ### Sample request -``` -GET https://api-v2v3search-0.nuget.org/autocomplete?id=nuget.protocol&prerelease=true -``` + GET https://api-v2v3search-0.nuget.org/autocomplete?id=nuget.protocol&prerelease=true ### Sample response diff --git a/docs/API/search-query-service-resource.md b/docs/API/search-query-service-resource.md index 932bd132f..e5a7039c0 100644 --- a/docs/API/search-query-service-resource.md +++ b/docs/API/search-query-service-resource.md @@ -51,9 +51,7 @@ package metadata fields may also be considered. An unlisted package should never appear in search results. -``` -GET {@id}?q={QUERY}&skip={SKIP}&take={TAKE}&prerelease={PRERELEASE}&semVerLevel={SEMVERLEVEL} -``` + GET {@id}?q={QUERY}&skip={SKIP}&take={TAKE}&prerelease={PRERELEASE}&semVerLevel={SEMVERLEVEL} ### Request parameters @@ -133,9 +131,7 @@ downloads | integer | yes | The number of downloads for this specific packa ### Sample request -``` -GET https://api-v2v3search-0.nuget.org/query?q=NuGet.Versioning&prerelease=false -``` + GET https://api-v2v3search-0.nuget.org/query?q=NuGet.Versioning&prerelease=false ### Sample response diff --git a/docs/API/service-index.md b/docs/API/service-index.md index 8f625b3cb..bd1d415aa 100644 --- a/docs/API/service-index.md +++ b/docs/API/service-index.md @@ -25,11 +25,7 @@ implementation to discover the package source's capabilities. The service index properties: `version` (the schema version of the service index) and `resources` (the endpoints or capabilities of the package source). -nuget.org's service index is located here: - -``` -https://api.nuget.org/v3/index.json -``` +nuget.org's service index is located at `https://api.nuget.org/v3/index.json`. ## Versioning @@ -65,9 +61,7 @@ The `@id` is a URL that must be absolute and must either have the HTTP or HTTPS The `@type` is used to identify the specific protocol to use when interacting with resource. The type of the resource is an opaque string but generally has the format: -``` -{RESOURCE_NAME}/{RESOURCE_VERSION} -``` + {RESOURCE_NAME}/{RESOURCE_VERSION} Clients are expected to hard code the `@type` values that they understand and look them up in a package source's service index. The exact `@type` values in use today are enumerated on the individual resource reference documents @@ -82,9 +76,7 @@ compatible `@type` can be used in a round-robin fashion in case of connection fa ### Sample request -``` GET https://api.nuget.org/v3/index.json -``` ### Sample response diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/Consume-Packages/Configuring-NuGet-Behavior.md index b29c4cb9a..9d0eba91f 100644 --- a/docs/Consume-Packages/Configuring-NuGet-Behavior.md +++ b/docs/Consume-Packages/Configuring-NuGet-Behavior.md @@ -18,13 +18,6 @@ ms.reviewer: NuGet's behavior is driven by the accumulated settings in one or more `NuGet.Config` (XML) files that can exist at project-, user-, and computer-wide levels. A global `NuGetDefaults.Config` file (2.7+) also specifically configures package sources. Settings apply to all commands issued in the CLI, the Package Manager Console, and the Package Manager UI. -In this topic: - -- [NuGet.Config file locations and uses](#config-file-locations-and-uses) -- [Changing settings](#changing-config-settings) -- [How settings are applied](#how-settings-are-applied) -- [NuGetDefaults.Config file](#nuget-defaults-file) - ## Config file locations and uses | Scope | NuGet.Config file location | Description | @@ -54,7 +47,7 @@ Settings are managed using the NuGet CLI [config command](../tools/cli-ref-confi Windows: -``` +```cli # Set repositoryPath in the user-level config file nuget config -set repositoryPath=c:\packages @@ -68,7 +61,7 @@ nuget config -set repositoryPath=c:\packages -configfile %ProgramFiles(x86)%\NuG Mac/Linux: -``` +```cli # Set repositoryPath in the user-level config file nuget config -set repositoryPath=/home/packages @@ -87,7 +80,7 @@ nuget config -set repositoryPath=/home/packages -configfile $XDG_DATA_HOME/NuGet To remove a value, specify a key with an empty value. -``` +```cli # Windows nuget config -set repositoryPath= -configfile c:\my.Config @@ -105,8 +98,6 @@ Copy the template below into the new file and then use `nuget config --configFil ``` -
    - ## How settings are applied Multiple `NuGet.Config` files allow you to store settings in different locations so that they apply to a single project, a group of projects, or all projects. These settings collectively apply to any NuGet operation invoked from the command line or from Visual Studio, with settings that exist "closest" to a project or the current folder taking precedence. @@ -158,7 +149,7 @@ File B. disk_drive_2/NuGet.Config: ```xml - + diff --git a/docs/Consume-Packages/Dependency-Resolution.md b/docs/Consume-Packages/Dependency-Resolution.md index a02e41361..182bde01d 100644 --- a/docs/Consume-Packages/Dependency-Resolution.md +++ b/docs/Consume-Packages/Dependency-Resolution.md @@ -22,13 +22,6 @@ Those immediate dependencies might then also have dependencies on their own, whi When multiple packages have the same dependency, then the same package ID can appear in the graph multiple times, potentially with different version constraints. However, only one version of a given package can be used in a project, so NuGet must choose which version is be used. The exact process depends on the package reference format being used. -In this topic: -- [Dependency resolution with PackageReference](#dependency-resolution-with-packagereference) -- [Dependency resolution with packages.config](#dependency-resolution-with-packagesconfig) -- [Excluding references](#excluding-references), which is necessary when there's a conflict between a dependency specified in one project and an assembly that's produced by another. -- [Dependency updates during package install](#dependency-updates-during-package-install) -- [Resolving incompatible package errors](#resolving-incompatible-package-errors) - ## Dependency resolution with PackageReference When installing packages into projects using the PackageReference format, NuGet adds references to a flat package graph in the appropriate file and resolves conflicts ahead of time. This process is referred to as *transitive restore*. Reinstalling or restoring packages is then a process of downloading the packages listed in the graph, resulting in faster and more predictable builds. You can also take advantage of wildcard (floating) versions, such as 2.8.\*, avoiding expensive and error prone calls to `nuget update` on the client machines and build servers. diff --git a/docs/Consume-Packages/Finding-and-Choosing-Packages.md b/docs/Consume-Packages/Finding-and-Choosing-Packages.md index 8b2dd3630..c27ad5682 100644 --- a/docs/Consume-Packages/Finding-and-Choosing-Packages.md +++ b/docs/Consume-Packages/Finding-and-Choosing-Packages.md @@ -19,12 +19,6 @@ ms.reviewer: When starting any .NET project, or whenever you identify a functional need for your app or service, you can save yourself lots of time and trouble by using existing NuGet packages that fulfill that need. These packages can come from the public collection on [nuget.org](http://www.nuget.org/packages/), or a private source that's provided by your organization or another third party. -On this page: - -- [Finding packages](#finding-packages) -- [Evaluating packages](#evaluating-packages) -- [Search syntax](#search-syntax) - ## Finding packages When you visit nuget.org or open the Package Manager UI in Visual Studio, you'll see a list of packages sorted by total downloads. This immediately shows you the most widely-used packages across the millions of .NET projects. There's a good chance, then, that at least some of the packages listed on the first few pages will be useful in your projects. diff --git a/docs/Consume-Packages/Managing-the-NuGet-Cache.md b/docs/Consume-Packages/Managing-the-NuGet-Cache.md index bdd36dde9..da0d0a82d 100644 --- a/docs/Consume-Packages/Managing-the-NuGet-Cache.md +++ b/docs/Consume-Packages/Managing-the-NuGet-Cache.md @@ -16,7 +16,7 @@ ms.reviewer: # Managing the NuGet cache -NuGet manages several local caches to avoid downloading packages that are already on the computer, and to provide offline support. NuGet 2.8+ automatically falls back to the cache when installing or reinstalling packages without a network connection. +NuGet manages several local caches to avoid downloading packages that are already on the computer, and to provide offline support. NuGet automatically falls back to the cache when installing or reinstalling packages without a network connection. Cache locations are available using the [locals command](../tools/cli-ref-locals.md): @@ -26,10 +26,12 @@ nuget locals all -list Typical output is as follows: - http-cache: C:\Users\user\AppData\Local\NuGet\v3-cache #NuGet 3.x+ cache - packages-cache: C:\Users\user\AppData\Local\NuGet\Cache #NuGet 2.x cache - global-packages: C:\Users\user\.nuget\packages\ #Global packages folder - temp: C:\Users\user\AppData\Local\Temp\NuGetScratch #Temp folder +```output +http-cache: C:\Users\user\AppData\Local\NuGet\v3-cache #NuGet 3.x+ cache +packages-cache: C:\Users\user\AppData\Local\NuGet\Cache #NuGet 2.x cache +global-packages: C:\Users\user\.nuget\packages\ #Global packages folder +temp: C:\Users\user\AppData\Local\Temp\NuGetScratch #Temp folder +``` 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: @@ -45,7 +47,7 @@ Note that managing the cache is presently supported only from the NuGet command The following errors can occur when using `nuget locals`: -* **Clearing local resources failed: Unable to delete one or more files** -* **The directory is not empty** +- **Clearing local resources failed: Unable to delete one or more files** +- **The directory is not empty** These indicate that you either do not have permission to delete files in the cache, or that one or more files in the cache are in use by another process, which must be closed before the those files can be removed. diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index f1bf2a901..ceb633d3c 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -33,7 +33,7 @@ Most general-purpose packages contain one or more assemblies that other develope - In general, it's best to have one assembly per NuGet package, provided that each assembly is independently useful. For example, if you have a `Utilities.dll` that depends on `Parser.dll`, and `Parser.dll` is useful on its own, then create one package for each. Doing so allows developers to use `Parser.dll` independently of `Utilities.dll`. - If your library is composed of multiple assemblies that aren't independently useful, then it's fine to combine them into one package. Using the previous example, if `Parser.dll` contains code that's used only by `Utilities.dll`, then it's fine to keep `Parser.dll` in the same package. - + - Similarly, if `Utilities.dll` depends on `Utilities.resources.dll`, where again the latter is not useful on its own, then put both in the same package. Resources are, in fact, a special case. When a package is installed into a project, NuGet automatically adds assembly references to the package's DLLs, *excluding* those that are named `.resources.dll` because they are assumed to be localized satellite assemblies (see [Creating localized packages](creating-localized-packages.md)). For this reason, avoid using `.resources.dll` for files that otherwise contain essential package code. diff --git a/docs/Release-Notes/Known-Issues.md b/docs/Release-Notes/Known-Issues.md index ae4664bb7..56170f582 100644 --- a/docs/Release-Notes/Known-Issues.md +++ b/docs/Release-Notes/Known-Issues.md @@ -84,7 +84,7 @@ The problem: You are using VS 2012 RTM. When updating NuGet packages, you get th The cause is that certain files in the old packages are locked by a background MSBuild process. Even after VS restart, the background MSBuild process still uses the files in the old packages, causing the build failures. -The fix is to install VS 2012 Update, e.g. [VS 2012 Update 2](http://www.microsoft.com/download/details.aspx?id=38188). +The fix is to install VS 2012 Update, e.g. VS 2012 Update 2. ## Upgrading to latest NuGet from an older version causes a signature verification error diff --git a/docs/Release-Notes/NuGet-1.4.md b/docs/Release-Notes/NuGet-1.4.md index bed3915ac..78caa3e5f 100644 --- a/docs/Release-Notes/NuGet-1.4.md +++ b/docs/Release-Notes/NuGet-1.4.md @@ -173,10 +173,10 @@ correctly when specifying a specific package source. * [Issue 1036](http://nuget.codeplex.com/workitem/1036): Adding `NuGet Pack SomeProject.csproj` to post-build event no longer causes an infinite loop. * [Issue 961](http://nuget.codeplex.com/workitem/961): `-Source` flag supports relative paths. -# NuGet 1.4 Update +## NuGet 1.4 Update Shortly after the release of NuGet 1.4, we found a couple of issues that were important to fix. The specific version number of this update to 1.4 is 1.4.20615.9020. -## Bug Fixes +### Bug Fixes * [Issue 1220](http://nuget.codeplex.com/workitem/1220): Update-Package doesnt execute `install.ps1`/`uninstall.ps1` in all projects when there is more than one project * [Issue 1156](http://nuget.codeplex.com/workitem/1156): Package Manager Consol stuck on W2K3/XP (when Powershell 2 is not installed) diff --git a/docs/Release-Notes/NuGet-2.5.md b/docs/Release-Notes/NuGet-2.5.md index 0ab4427b3..e442bd699 100644 --- a/docs/Release-Notes/NuGet-2.5.md +++ b/docs/Release-Notes/NuGet-2.5.md @@ -54,9 +54,9 @@ We also appreciate the following individuals for finding bugs with NuGet 2.5 Bet 1. [Tony Wall](https://www.codeplex.com/site/users/view/CodeChief) ([@CodeChief](https://twitter.com/codechief)) - [#3200](https://nuget.codeplex.com/workitem/3200) - MSTest broken with lastest NuGet 2.4 and 2.5 builds -# Notable features in the release +## Notable features in the release -## Allow users to overwrite content files that already exist +### Allow users to overwrite content files that already exist One of the most requested features of all time has been the ability to overwrite content files that already exist on disk when included in a NuGet package. Starting with NuGet 2.5, these conflicts are identified and you will be prompted to overwrite the files, whereas previously these files were always skipped. @@ -66,13 +66,13 @@ One of the most requested features of all time has been the ability to overwrite Set a default action when a file from a package already exists in the target project. Set to 'Overwrite' to always overwrite files. Set to 'Ignore' to skip files. If not specified, it will prompt for each conflicting file. -## Automatic import of MSBuild targets and props files +### Automatic import of MSBuild targets and props files A new conventional folder has been created at the top level of the NuGet package. As a peer to `\lib`, `\content`, and `\tools`, you can now include a `\build` folder in your package. Under this folder, you can place two files with fixed names, `{packageid}.targets` or `{packageid}.props`. These two files can be either directly under `build` or under framework-specific folders just like the other folders. The rule for picking the best-matched framework folder is exactly the same as in those. When NuGet installs a package with \build files, it will add an MSBuild `` element in the project file pointing to the `.targets` and `.props` files. The `.props` file is added at the top, whereas the `.targets` file is added to the bottom. -## Specify different references per platform using `` element +### Specify different references per platform using `` element Before 2.5, in `.nuspec` file, user can only specify the reference files, to be added for all framework. Now with this new feature in 2.5, user can author the `` element for each of the supported platform, for example: @@ -100,7 +100,7 @@ This new feature will allow package authors to use the References feature to app Note: you must presently use nuget.exe pack to use this feature; NuGet Package Explorer does not yet support it. -## Update All button to allow updating all packages at once +### Update All button to allow updating all packages at once Many of you know about the "Update-Package" PowerShell cmdlet to update all of your packages; now there's an easy way to do this through the UI as well. @@ -113,7 +113,7 @@ To try this feature out: ![Update All button in the dialog](./media/NuGet-2.5/update-all.png) -## Improved project reference support for nuget.exe Pack +### Improved project reference support for nuget.exe Pack Now nuget.exe pack command processes referenced projects with the following rules: @@ -128,7 +128,7 @@ This allows a referenced project to be treated as a dependency if there is a `.n More details here: [http://nuget.codeplex.com/workitem/936](http://nuget.codeplex.com/workitem/936) -## Add a 'Minimum NuGet Version' property to packages +### Add a 'Minimum NuGet Version' property to packages A new metadata attribute called 'minClientVersion' can now indicate the minimum NuGet client version required to consume a package. @@ -142,7 +142,7 @@ If the user has NuGet 2.5 installed and a package is identified as requiring 2.6 This will improve upon the existing experience where packages begin to install but then fail indicating an unrecognized schema version was identified. -## Dependencies are no longer unnecessarily updated during package installation +### Dependencies are no longer unnecessarily updated during package installation Before NuGet 2.5, when a package was installed that depended on a package already installed in the project, the dependency would be updated as part of the new installation, even if the existing version satisfied the dependency. @@ -163,13 +163,13 @@ Starting with NuGet 2.5, if a dependency version is already satisfied, the depen For more background on this change, read the detailed [work item](http://nuget.codeplex.com/workitem/1681) as well as the related [discussion thread](http://nuget.codeplex.com/discussions/436712). -## nuget.exe outputs http requests with detailed verbosity +### nuget.exe outputs http requests with detailed verbosity If you are troubleshooting nuget.exe or just curious what HTTP requests are made during operations, the '-verbosity detailed' switch will now output all HTTP requests made. ![HTTP output from nuget.exe](./media/NuGet-2.5/verbosity.png) -## nuget.exe push now supports UNC and folder sources +### nuget.exe push now supports UNC and folder sources Before NuGet 2.5, if you attempted to run 'nuget.exe push' to a package source based on a UNC path or local folder, the push would fail. With the recently added hierarchical configuration feature, it had become common for nuget.exe to need to target either a UNC/folder source, or an HTTP-based NuGet Gallery. @@ -181,7 +181,7 @@ The following command will now work: nuget push -source \\mycompany\repo\ mypackage.1.0.0.nupkg ``` -## nuget.exe supports explicitly-specified Config files +### nuget.exe supports explicitly-specified Config files nuget.exe commands that access configuration (all except 'spec' and 'pack') now support a new '-ConfigFile' option, which forces a specific config file to be used in place of the default config file at %AppData%\nuget\Nuget.Config. @@ -191,7 +191,7 @@ Example: nuget sources add -name test -source http://test -ConfigFile C:\test\.nuget\Nuget.Config ``` -## Support for Native projects +### Support for Native projects With NuGet 2.5, the NuGet tooling is now available for Native projects in Visual Studio. We expect most native packages will utilize the MSBuild imports feature above, using a tool created by the [CoApp project](http://coapp.org). For more information, read [the details about the tool](http://coapp.org/news/2013-03-27-The-Long-Awaited-post.html) on the coapp.org website. diff --git a/docs/Release-Notes/NuGet-3.5-Beta2.md b/docs/Release-Notes/NuGet-3.5-Beta2.md index 43a10735b..13ff8d984 100644 --- a/docs/Release-Notes/NuGet-3.5-Beta2.md +++ b/docs/Release-Notes/NuGet-3.5-Beta2.md @@ -24,8 +24,6 @@ NuGet 3.5 Beta 2 RTM was released June 27, 2016 for Visual Studio 2013 and nuget [Issues List](https://github.com/Nuget/Home/issues?q=is%3Aissue+milestone%3A%223.5+Beta2%22+is%3Aclosed) -# Notable Changes - ## Bug Fixes * Updated error message to lack of support for password decrpytion in .NET Core for authenticated feeds - [#2942](https://github.com/NuGet/Home/issues/2942) diff --git a/docs/Schema/msbuild-targets.md b/docs/Schema/msbuild-targets.md index 6bcd71015..90a8d7c41 100644 --- a/docs/Schema/msbuild-targets.md +++ b/docs/Schema/msbuild-targets.md @@ -46,8 +46,8 @@ Note that the `Owners` and `Summary` properties from `.nuspec` are not supported |--------|--------|--------|--------| | Id | PackageId | AssemblyName | $(AssemblyName) from MSBuild | | Version | PackageVersion | Version | This is semver compatible, for example “1.0.0”, “1.0.0-beta”, or “1.0.0-beta-00345” | -| VersionPrefix | PackageVersionPrefix | empty | Setting PackageVersion will overwrite PackageVersionPrefix | -| VersionSuffix | PackageVersionSuffix | empty | $(VersionSuffix) from MSBuild. Setting PackageVersion will overwrite PackageVersionSuffix | +| VersionPrefix | PackageVersionPrefix | empty | Setting PackageVersion overwrites PackageVersionPrefix | +| VersionSuffix | PackageVersionSuffix | empty | $(VersionSuffix) from MSBuild. Setting PackageVersion overwrites PackageVersionSuffix | | Authors | Authors | Username of the current user | | | Owners | N/A | Not present in NuSpec | | | Title | Title | The PackageId| | diff --git a/docs/Tools/cli-ref-locals.md b/docs/Tools/cli-ref-locals.md index 844b9a424..2f095e822 100644 --- a/docs/Tools/cli-ref-locals.md +++ b/docs/Tools/cli-ref-locals.md @@ -14,7 +14,7 @@ ms.reviewer: - unniravindranathan --- -## locals command (NuGet CLI) +# locals command (NuGet CLI) **Applies to:** package consumption • **Supported versions:** 3.3+ diff --git a/docs/Tools/cli-ref-setapikey.md b/docs/Tools/cli-ref-setapikey.md index 0c0fc531d..b3c675665 100644 --- a/docs/Tools/cli-ref-setapikey.md +++ b/docs/Tools/cli-ref-setapikey.md @@ -14,7 +14,7 @@ ms.reviewer: - unniravindranathan --- -## setapikey command (NuGet CLI) +# setapikey command (NuGet CLI) **Applies to:** package consumption, publishing • **Supported versions:** all From cde8fdf0d2108f6847c63719a74c45adcffdca18 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 18 Jan 2018 20:45:04 -0800 Subject: [PATCH 0463/2943] Add archive folder back to build --- docs/docfx.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/docfx.json b/docs/docfx.json index 6e95c50f8..f0fea6231 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -10,7 +10,8 @@ "**/obj/**", "nuget/**", "**/includes/**", - "archive/**" + "archive/config-priority-order.md", + "archive/readme.md" ] } ], From 9b0e523fca6f98783ba019787a6ac62ddb578925 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 18 Jan 2018 20:50:46 -0800 Subject: [PATCH 0464/2943] Fixing a few links --- docs/archive/project-json-archive.md | 4 ++-- docs/archive/project-json-impact.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/archive/project-json-archive.md b/docs/archive/project-json-archive.md index 1e4b5e25a..9afde25be 100644 --- a/docs/archive/project-json-archive.md +++ b/docs/archive/project-json-archive.md @@ -30,7 +30,7 @@ Also see: In the list of reference formats: -- [`project.json`](Schema/project-json.md): *(deprecated)* A JSON file that maintains a list of the project's dependencies with an overall package graph in an associated file, `project.lock.json`. This format is deprecated in favor of PackageReference. +- [`project.json`](project-json.md): *(deprecated)* A JSON file that maintains a list of the project's dependencies with an overall package graph in an associated file, `project.lock.json`. This format is deprecated in favor of PackageReference. ## nuget restore on Mono @@ -40,7 +40,7 @@ Works with `project.json`. ## Constraining package versions with restore -*Originally in [Package restore](consume-packages/package-restore.md#constraining-package-versions-with-restore).* +*Originally in [Package restore](../consume-packages/package-restore.md#constraining-package-versions-with-restore).* - `project.json`: Specify a version range directly with the dependency's version number. For example: diff --git a/docs/archive/project-json-impact.md b/docs/archive/project-json-impact.md index aac1fc30a..129ee9e1e 100644 --- a/docs/archive/project-json-impact.md +++ b/docs/archive/project-json-impact.md @@ -27,7 +27,7 @@ Traditional NuGet packages support a set of features that are not carried over t ### Install and uninstall scripts are ignored -The transitive restore model, described in [Dependency resolution](../consume-packages/dependency-resolution.md#dependency-resolution-with-packagereference-and-projectjson), does not have a concept of "package install time". A package is either present or not present, but there is no consistent process that occurs when a package is installed. +The transitive restore model, described in [Dependency resolution](../consume-packages/dependency-resolution.md#dependency-resolution-with-packagereference), does not have a concept of "package install time". A package is either present or not present, but there is no consistent process that occurs when a package is installed. Also, install scripts were supported only in Visual Studio. Other IDEs had to mock the Visual Studio extensibility API to attempt to support such scripts, and no support was available in common editors and command-line tools. From d217c91dd2caf6bfeb1a8f7b9629a9938ae6a71b Mon Sep 17 00:00:00 2001 From: Florian Bauer Date: Fri, 19 Jan 2018 09:21:40 +0100 Subject: [PATCH 0465/2943] Update Dependency-Resolution.md Fix two typos. --- docs/Consume-Packages/Dependency-Resolution.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Consume-Packages/Dependency-Resolution.md b/docs/Consume-Packages/Dependency-Resolution.md index e336ad8c2..622fa9444 100644 --- a/docs/Consume-Packages/Dependency-Resolution.md +++ b/docs/Consume-Packages/Dependency-Resolution.md @@ -32,9 +32,9 @@ ms.reviewer: Any time a package is installed or reinstalled, which includes being installed as part of a [restore](../consume-packages/package-restore.md) process, NuGet also installs any additional packages on which that first package depends. -Those immediate dependencies might then also have dependencies on their own, which can continue to an arbitrary depth. This produces what's called a *dependency graph* that describes the relationships between packages are all levels. +Those immediate dependencies might then also have dependencies on their own, which can continue to an arbitrary depth. This produces what's called a *dependency graph* that describes the relationships between packages at all levels. -When multiple packages have the same dependency, then the same package ID can appear in the graph multiple times, potentially with different version constraints. However, only one version of a given package can be used in a project, so NuGet must choose which version is be used. The exact process depends on the package reference format being used. +When multiple packages have the same dependency, then the same package ID can appear in the graph multiple times, potentially with different version constraints. However, only one version of a given package can be used in a project, so NuGet must choose which version is used. The exact process depends on the package reference format being used. In this topic: - [Dependency resolution with PackageReference and project.json](#dependency-resolution-with-packagereference-and-projectjson) From 5ab4f838a3bfb57e53c026aca4426ff6cb834d50 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 19 Jan 2018 13:30:16 -0800 Subject: [PATCH 0466/2943] Overhaul of install client tools topic Including moving topic in the repo and in the TOC --- .openpublishing.redirection.json | 5 + docs/Guides/Install-NuGet.md | 153 ----------------------------- docs/TOC.md | 4 +- docs/includes/install-cli.md | 4 +- docs/install-nuget-client-tools.md | 108 ++++++++++++++++++++ 5 files changed, 117 insertions(+), 157 deletions(-) delete mode 100644 docs/Guides/Install-NuGet.md create mode 100644 docs/install-nuget-client-tools.md diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index 1d03a216e..e6bf9f0ea 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -35,6 +35,11 @@ "redirect_url": "/nuget/archive/project-json-and-uwp", "redirect_document_id": false }, + { + "source_path": "docs/guides/install-nuget.md", + "redirect_url": "/nuget/install-nuget-client-tools", + "redirect_document_id": false + }, { "source_path": "docs/Schema/project-json.md", "redirect_url": "/nuget/archive/project-json", diff --git a/docs/Guides/Install-NuGet.md b/docs/Guides/Install-NuGet.md deleted file mode 100644 index ce8dd1457..000000000 --- a/docs/Guides/Install-NuGet.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: Installing NuGet client tools | Microsoft Docs -author: kraigb -ms.author: kraigb -manager: ghogen -ms.date: 10/02/2017 -ms.topic: get-started-article -ms.prod: nuget -ms.technology: null -description: Guidance on installing client tools, the command-line interface (CLI), and the Package Manager for Visual Studio. -keywords: nuget.exe CLI, NuGet client tools, NuGet package manager, NuGet package manager console, NuGet for Visual Studio, NuGet beta channel -ms.reviewer: -- karann-msft -- unniravindranathan ---- - -# Installing NuGet client tools - -> [!Tip] -> **Looking to install a package? See [Quickstart - Use a package](../Quickstart/Use-a-Package.md).** - -There are two primary tools available to help you build, publish and consume NuGet packages: - -1. The [**NuGet CLI**](#nuget-cli) is the command-line utility for Windows that provides all NuGet capabilities; it can also be run on Mac OSX and Linux using Mono, or through the .NET Core CLI (`dotnet`). -1. The [**NuGet Package Manager in Visual Studio**](#nuget-package-manager-in-visual-studio) (Windows only) is a GUI tool for managing packages and includes a PowerShell console through which you can use certain NuGet commands directly within Visual Studio. The Package Manager UI and Console are both included with Visual Studio (on Windows) 2012 and later and can be installed manually for earlier versions. - - With Visual Studio for Mac, NuGet capabilities are built in directly. See [Including a NuGet package in your project](/visualstudio/mac/nuget-walkthrough) for a walkthrough. - - Visual Studio Code at present does not have any built-in NuGet support. Use the NuGet CLI or the [dotnet CLI](../Tools/dotnet-Commands.md). - -The NuGet CLI and Package Manager both support the following operations: - -- Search packages -- Install packages -- Update packages -- Uninstall packages -- Restore packages (UI only in the Package Manager) -- Manage NuGet sources - -The following capabilities are supported only in the NuGet CLI: - -- Manage packages (nuget.org or private feed) -- Create packages -- Publish packages -- Manage Nuget.Config -- Manage the NuGet cache -- Replicating a package - -> [!Note] -> Another good tool is the [NuGet Package Explorer](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer), an open-source, stand-alone tool to visually explore, create, and edit NuGet packages. It's very helpful, for example, to make experimental changes to a package structure without having to rebuild the package each time. -> The cross-platform [.NET Core CLI](/dotnet/articles/core/tools/index#installation) toolchain, used for developing .NET Core applications, supports several NuGet commands, such as delete, locals, push, pack, and restore. - -## NuGet CLI - -The NuGet command-line interface provides access to all NuGet capabilities, and can be run on Windows, Mac OSX, and Linux as described in the following sections. - -### Windows - -**Direct download:** - -[!INCLUDE[install-cli](../includes/install-cli.md)] - -You can also use `nuget update -self` to update your existing nuget.exe to the latest version. - -**Other methods:** - -- **Chocolatey**: Install the [NuGet.CommandLine](http://chocolatey.org/packages/NuGet.CommandLine) Chocolatey package using the [Chocolatey](http://chocolatey.org) client. - - ```ps - choco install nuget.commandline - ``` - -- **Visual Studio**: Install the [NuGet.CommandLine](http://www.nuget.org/packages/NuGet.CommandLine/) package from the Package Manager Console in Visual Studio. - - > [!Note] - > **For NuGet 2.x users**: Because of breaking changes introduced in NuGet 3.2, [https://nuget.org/nuget.exe](https://nuget.org/nuget.exe) points to the latest stable NuGet 2.x release to prevent continuous integration systems from potentially breaking. - - - -## Mac OSX and Linux - -On Mac OSX and Linux, there are two ways to run the NuGet CLI: - -- Install the [.NET Core SDK](https://www.microsoft.com/net/download/core), which includes the core NuGet capabilities. Downloads are also listed on [github.com/dotnet/cli](https://github.com/dotnet/cli). If you need fuller capabilities, then use the second option below to use `nuget.exe` with Mono. - -- Install [Mono](http://www.mono-project.com/docs/getting-started/install/) and then use the `nuget.exe` command-line executable for Windows (version 3.2 and later) from [nuget.org/downloads](https://nuget.org/downloads). Running NuGet on Mono is subject to the following limitations: - - - Commands tested to work: - - config - - delete - - help - - install - - list - - push - - setApiKey - - sources - - spec - - - Partially-working commands: - - pack: works with `.nuspec` files but not with project files. - - restore: works with `packages.config` files but not with solution (`.sln`) files. - - - Commands that don't work: - - update - -### Related topics - -- [NuGet CLI reference](../tools/nuget-exe-cli-reference.md) -- [Creating a package](../create-packages/creating-a-package.md) -- [Publishing a Package](../create-packages/publish-a-package.md) - -## NuGet Package Manager in Visual Studio - -The NuGet Package Manager is included in every edition of Visual Studio on Windows, 2012 and later. It includes the Package Manager UI ([reference](../tools/package-manager-ui.md)), and the Package Manager Console through which you can access tools that come with certain packages ([reference](../tools/package-manager-console.md)). - -The Visual Studio 2017 installer includes the NuGet Package Manager with any workload that employs .NET. To install separately, or to verify that the Package Manager is installed, run the Visual Studio 2017 installer and check the option under **Individual Components > Code tools > NuGet package manager**. - -> [!Note] -> The console requires [PowerShell 2.0](http://support.microsoft.com/kb/968929), which will already be installed on Windows 7 or higher and Windows Server 2008 R2 or higher. -> -> Package Manager Console commands also work only within Visual Studio on Windows. Use the NuGet CLI outside of that environment, including with Visual Studio for Mac and Visual Studio Code. - -### Package Manager installation for Visual Studio 2010 and earlier - -*These steps are not necessary for Visual Studio 2012 and later, which already include the Package Manager.* - -1. In Visual Studio 2010 and earlier, click **Tools > Extension and Updates**. -1. Navigate to **Online**, then search for "NuGet Package Manager for Visual Studio" and click **Download**. -1. In the Installer dialog box, click **Install**. -1. When installation is complete, restart Visual Studio. - -> [!Tip] -> If you're unable to use the **Extensions and Updates** dialog in Visual Studio (for example, its blocked by a proxy), you can download extensions for Visual Studio 2013 and 2015 directly at [https://dist.nuget.org/index.html](https://dist.nuget.org/index.html). - -### Updating the Package Manager - -For Visual Studio 2015 Update 2 and later, the Package Manager is automatically updated to the latest stable release. - -For Visual Studio 2015 Update 1 and earlier, select the **Tools > Extensions and Updates** command and click on the **Updates** tab to see if a new version of the Package Manager is available. - -### NuGet previews - -If you'd like to preview upcoming NuGet features, install the [Visual Studio 2017 Preview](https://www.visualstudio.com/vs/preview/), which works side-by-side with stable releases of Visual Studio. - -Note that the previous NuGet Beta Channel (`https://dotnet.myget.org/F/nuget-beta/vsix/`) for Visual Studio 2015 is no longer used. - -To report problems with any release of NuGet or to share ideas, open an issue on the [NuGet GitHub repository](https://github.com/Nuget/Home). - -### Related topics - -- [Package Manager UI reference](../tools/package-manager-ui.md) -- [Package Manager Console reference](../tools/package-manager-console.md) -- [Package Manager Console PowerShell reference](../tools/powershell-reference.md) \ No newline at end of file diff --git a/docs/TOC.md b/docs/TOC.md index a088fe691..88de03742 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -1,9 +1,9 @@ -# [What is NuGet?](What-is-NuGet.md) +# [What is NuGet?](what-is-nuget.md) +## [Install NuGet client tools](install-nuget-client-tools.md) # Quickstart ## [Create and Publish a Package](Quickstart/Create-and-Publish-a-Package.md) ## [Use a Package](Quickstart/Use-a-Package.md) # Guides -## [Install NuGet client tools](Guides/Install-NuGet.md) ## [Create NET Standard Packages (Visual Studio 2017)](Guides/Create-NET-Standard-Packages-VS2017.md) ## [Create NET Standard Packages (Visual Studio 2015)](Guides/Create-NET-Standard-Packages-VS2015.md) ## [Create UWP Packages](Guides/Create-UWP-Packages.md) diff --git a/docs/includes/install-cli.md b/docs/includes/install-cli.md index 101181dc2..ef84e0b9b 100644 --- a/docs/includes/install-cli.md +++ b/docs/includes/install-cli.md @@ -1,4 +1,4 @@ 1. On Mac and Linux, install [Mono 4.4.2 or later](http://www.mono-project.com/docs/getting-started/install/). -2. Visit [nuget.org/downloads](https://nuget.org/downloads) and select the version of NuGet you want. -3. Each download is the `nuget.exe` file directly. Instruct your browser to save the file to a folder of your choice. The file is *not* an installer; running it from the browser won't show anything. +2. Visit [nuget.org/downloads](https://nuget.org/downloads) and select NuGet 3.3 or higher (2.8.6 is not compatible with Mono). The latest version is always recommended, and 4.1.0+ is required to publish packages to nuget.org. +3. Each download is the `nuget.exe` file directly. Instruct your browser to save the file to a folder of your choice. The file is *not* an installer; you won't see anything if you run it directly from the browser. 4. Add the folder where you placed `nuget.exe` to your PATH environment variable to use the CLI tool from anywhere. \ No newline at end of file diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md new file mode 100644 index 000000000..f7d5ab5ab --- /dev/null +++ b/docs/install-nuget-client-tools.md @@ -0,0 +1,108 @@ +--- +title: Installing NuGet client tools | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 01/19/2018 +ms.topic: get-started-article +ms.prod: nuget +ms.technology: null +description: Guidance on installing client tools, the dotnet and nuget command-line interfaces (CLI), and the Package Manager for Visual Studio. +keywords: dotnet.exe CLI, nuget.exe CLI, NuGet client tools, NuGet package manager, NuGet package manager console, NuGet for Visual Studio, NuGet beta channel +ms.reviewer: +- karann-msft +- unniravindranathan +--- + +# Installing NuGet client tools + +> [!Tip] +> **Looking to install a package? See [Quickstart - Use a package](../Quickstart/Use-a-Package.md).** + +To work with NuGet, as a package consumer or creator, you can use cross-platform command-line interface (CLI) tools as well as NuGet features in Visual Studio. This article briefly outlines the capabilities of the different tools and how to install them. + +> [!Tip] +> Developers working on Windows can also explore the [NuGet Package Explorer](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer), an open-source, stand-alone tool to visually explore, create, and edit NuGet packages. It's very helpful, for example, to make experimental changes to a package structure without rebuilding the package. + +## CLI tools + +The two NuGet CLI tools are `dotnet.exe` and `nuget.exe`. `dotnet` works on all platforms; `nuget.exe` works on Windows and on Mac and Linux under Mono, with some limitations. + +### dotnet.exe CLI (recommended) + +The .NET Core 2.0 CLI, `dotnet.exe`, works on all platforms (Windows, Mac, and Linux) and provides the most important NuGet features, such as installing, restoring, and publishing packages. Unlike the `nuget.exe` CLI, 'dotnet' provides direct integration with .NET Core project files, which is helpful in most scenarios. `dotnet` is also built directly for each platform and does not require you to install Mono. + +For these reasons, it's recommended that .NET Core developers typically use `dotnet` and rely on `nuget.exe` only when necessary. + +Installation: + +- On developer computers, install the [.NET Core SDK](https://aka.ms/dotnetcoregs). +- For build servers, follow the instructions on [Using .NET Core SDK and tools in Continuous Integration](/dotnet/core/tools/using-ci-with-cli). + +For more information, see [.NET Core command-line interface tools](/dotnet/core/tools/index?tabs=netcore2x#tabpanel_fXL5YCOYDa_netcore2x) + +### nuget.exe CLI + +The NuGet CLI, `nuget.exe`, is the command-line utility for Windows that provides all NuGet capabilities; it can also be run on Mac OSX and Linux using Mono with some limitations. + +Installation: + +[!INCLUDE[install-cli](../includes/install-cli.md)] + +> [!Tip] +> Use `nuget update -self` to update an existing nuget.exe to the latest version. + +Other ways to install the NuGet CLI: +- **Chocolatey**: Install the [NuGet.CommandLine](http://chocolatey.org/packages/NuGet.CommandLine) Chocolatey package using the [Chocolatey](http://chocolatey.org) client: `choco install nuget.commandline`. +- **Visual Studio**: Install the [NuGet.CommandLine](http://www.nuget.org/packages/NuGet.CommandLine/) package from the Package Manager Console in Visual Studio. + +> [!Note] +> The latest recommended NuGet CLI is always available at `https://dist.nuget.org/win-x86-commandline/latest/nuget.exe`. For compatibility purposes with older continuous integration systems, a previous URL, `https://nuget.org/nuget.exe` always provides the 2.8.6 CLI tool. + +## Visual Studio + +- Visual Studio for Mac: certain NuGet capabilities are built in directly. See [Including a NuGet package in your project](/visualstudio/mac/nuget-walkthrough) for a walkthrough. For other capabilities, use the `dotnet.exe` or `nuget.exe` CLI tools. + +- Visual Studio Code: NuGet capabilities are available through marketplace extensions, or use the `dotnet.exe` or `nuget.exe` CLI tools. + +- Visual Studio on Windows: The **NuGet Package Manager** is included with Visual Studio 2012 and later. The Package Manager provides the [Package Manager UI](../tools/package-manager-ui.md) and the [Package Manager Console](../tools/package-manager-console.md), through which you can run most NuGet operations. + - The Package Manager UI and Console are unique to Visual Studio on Windows. They are not available on Visual Studio for Mac at present. + - Visual Studio does not automatically include the `nuget.exe` CLI, which must be installed separately. + - Package Manager Console commands work only within Visual Studio on Windows and not within other PowerShell environments. + - The Visual Studio 2017 installer includes the NuGet Package Manager with any workload that employs .NET. To install separately, or to verify that the Package Manager is installed, run the Visual Studio 2017 installer and check the option under **Individual Components > Code tools > NuGet package manager**. + - For Visual Studio 2010 and earlier, install the "NuGet Package Manager for Visual Studio" extension. + - NuGet Extensions for Visual Studio 2013 and 2015 can also be downloaded from [https://dist.nuget.org/index.html](https://dist.nuget.org/index.html). + - If you'd like to preview upcoming NuGet features, install the [Visual Studio 2017 Preview](https://www.visualstudio.com/vs/preview/), which works side-by-side with stable releases of Visual Studio. To report problems or share ideas for previews, open an issue on the [NuGet GitHub repository](https://github.com/Nuget/Home/issues). + +## Feature availability + +| Feature | dotnet CLI | nuget CLI (Windows) | nuget CLI (Mono) | Visual Studio (Windows) | Visual Studio Mac | +| --- | --- | --- | --- | --- | --- | +| Search packages | | ✔ | ✔ | ✔ | ✔ | +| Install/uninstall packages | ✔(1) | ✔(2) | ✔ | ✔ | ✔ | +| Update packages | ✔ | ✔ | | ✔ | ✔ | +| Restore packages | ✔ | ✔ | ✔(3) | ✔ | ✔ | +| Manage package feeds (sources) | | ✔ | ✔ | ✔ | ✔ | +| Manage packages on a feed | ✔(1) | ✔ | ✔ | | | +| Set API keys for feeds | | ✔ | ✔ | | | +| Create packages(4) | ✔ | ✔ | ✔(5) | ✔ | | +| Publish packages | ✔(1) | ✔ | ✔ | ✔ | | +| Replicating a package | | ✔ | ✔ | | | +| Manage the NuGet cache | ✔ | ✔ | ✔ | | | +| Manage NuGet configuration | | ✔ | ✔ | | | + +(1) Packages on nuget.org only +(2) Does not affect project files; use `dotnet.exe` instead. +(3) Works only with `packages.config` file and not with solution (`.sln`) files. +(4) Various advanced package features are available through the CLI only as they aren't represented in the Visual Studio UI tools. +(5) Works with `.nuspec` files but not with project files. + +### Related topics + +- [dotnet commands](tools/dotnet-commands.md) +- [NuGet CLI reference](tools/nuget-exe-cli-reference.md) +- [Package Manager UI reference](tools/package-manager-ui.md) +- [Package Manager Console reference](tools/package-manager-console.md) +- [Package Manager Console PowerShell reference](tools/powershell-reference.md) +- [Creating a package](create-packages/creating-a-package.md) +- [Publishing a Package](create-packages/publish-a-package.md) From b4beed6d89c92492adf881589c41352730326321 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 19 Jan 2018 13:36:33 -0800 Subject: [PATCH 0467/2943] Add DependencyVersion to nuget install Issue #448 --- docs/Tools/cli-ref-install.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Tools/cli-ref-install.md b/docs/Tools/cli-ref-install.md index bbf481093..ccf14578d 100644 --- a/docs/Tools/cli-ref-install.md +++ b/docs/Tools/cli-ref-install.md @@ -44,6 +44,7 @@ where `` names the package to install (using the latest version), or | Option | Description | | --- | --- | | ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| DependencyVersion | *(4.4+)* Specifies a specific version, overriding the default dependency resolution behavior. | | DisableParallelProcessing | Disables installing multiple packages in parallel. | | ExcludeVersion | Installs the package to a folder named with only the package name and not the version number. | | FallbackSource | *(3.2+)* A list of package sources to use as fallbacks in case the package isn't found in the primary or default source. | From 84642be01f1da139957f6661ef2d017852033aae Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 19 Jan 2018 13:37:30 -0800 Subject: [PATCH 0468/2943] Fix links --- docs/install-nuget-client-tools.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index f7d5ab5ab..974368108 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -17,7 +17,7 @@ ms.reviewer: # Installing NuGet client tools > [!Tip] -> **Looking to install a package? See [Quickstart - Use a package](../Quickstart/Use-a-Package.md).** +> **Looking to install a package? See [Quickstart - Use a package](quickstart/use-a-package.md).** To work with NuGet, as a package consumer or creator, you can use cross-platform command-line interface (CLI) tools as well as NuGet features in Visual Studio. This article briefly outlines the capabilities of the different tools and how to install them. @@ -47,7 +47,7 @@ The NuGet CLI, `nuget.exe`, is the command-line utility for Windows that provide Installation: -[!INCLUDE[install-cli](../includes/install-cli.md)] +[!INCLUDE[install-cli](includes/install-cli.md)] > [!Tip] > Use `nuget update -self` to update an existing nuget.exe to the latest version. @@ -65,7 +65,7 @@ Other ways to install the NuGet CLI: - Visual Studio Code: NuGet capabilities are available through marketplace extensions, or use the `dotnet.exe` or `nuget.exe` CLI tools. -- Visual Studio on Windows: The **NuGet Package Manager** is included with Visual Studio 2012 and later. The Package Manager provides the [Package Manager UI](../tools/package-manager-ui.md) and the [Package Manager Console](../tools/package-manager-console.md), through which you can run most NuGet operations. +- Visual Studio on Windows: The **NuGet Package Manager** is included with Visual Studio 2012 and later. The Package Manager provides the [Package Manager UI](tools/package-manager-ui.md) and the [Package Manager Console](tools/package-manager-console.md), through which you can run most NuGet operations. - The Package Manager UI and Console are unique to Visual Studio on Windows. They are not available on Visual Studio for Mac at present. - Visual Studio does not automatically include the `nuget.exe` CLI, which must be installed separately. - Package Manager Console commands work only within Visual Studio on Windows and not within other PowerShell environments. From 202bbf65d7bc0ee283d5d6a91de232d08715cd83 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 19 Jan 2018 13:55:03 -0800 Subject: [PATCH 0469/2943] Tweaks --- docs/TOC.md | 2 +- docs/install-nuget-client-tools.md | 27 ++++++++++++++++----------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index 88de03742..07a33ff4b 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -1,5 +1,5 @@ # [What is NuGet?](what-is-nuget.md) -## [Install NuGet client tools](install-nuget-client-tools.md) +# [Install NuGet client tools](install-nuget-client-tools.md) # Quickstart ## [Create and Publish a Package](Quickstart/Create-and-Publish-a-Package.md) ## [Use a Package](Quickstart/Use-a-Package.md) diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index 974368108..03be5138a 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -16,17 +16,18 @@ ms.reviewer: # Installing NuGet client tools -> [!Tip] -> **Looking to install a package? See [Quickstart - Use a package](quickstart/use-a-package.md).** - To work with NuGet, as a package consumer or creator, you can use cross-platform command-line interface (CLI) tools as well as NuGet features in Visual Studio. This article briefly outlines the capabilities of the different tools and how to install them. +**Looking to install a package? See [Quickstart - Use a package](quickstart/use-a-package.md).** + > [!Tip] > Developers working on Windows can also explore the [NuGet Package Explorer](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer), an open-source, stand-alone tool to visually explore, create, and edit NuGet packages. It's very helpful, for example, to make experimental changes to a package structure without rebuilding the package. ## CLI tools -The two NuGet CLI tools are `dotnet.exe` and `nuget.exe`. `dotnet` works on all platforms; `nuget.exe` works on Windows and on Mac and Linux under Mono, with some limitations. +The two NuGet CLI tools are `dotnet.exe` and `nuget.exe`. + +`dotnet.exe` works on all platforms; `nuget.exe` works on Windows and on Mac and Linux under Mono, with some limitations. ### dotnet.exe CLI (recommended) @@ -39,7 +40,7 @@ Installation: - On developer computers, install the [.NET Core SDK](https://aka.ms/dotnetcoregs). - For build servers, follow the instructions on [Using .NET Core SDK and tools in Continuous Integration](/dotnet/core/tools/using-ci-with-cli). -For more information, see [.NET Core command-line interface tools](/dotnet/core/tools/index?tabs=netcore2x#tabpanel_fXL5YCOYDa_netcore2x) +For more information, see [.NET Core command-line interface tools](/dotnet/core/tools/index?tabs=netcore2x#tabpanel_fXL5YCOYDa_netcore2x). ### nuget.exe CLI @@ -53,21 +54,21 @@ Installation: > Use `nuget update -self` to update an existing nuget.exe to the latest version. Other ways to install the NuGet CLI: -- **Chocolatey**: Install the [NuGet.CommandLine](http://chocolatey.org/packages/NuGet.CommandLine) Chocolatey package using the [Chocolatey](http://chocolatey.org) client: `choco install nuget.commandline`. - **Visual Studio**: Install the [NuGet.CommandLine](http://www.nuget.org/packages/NuGet.CommandLine/) package from the Package Manager Console in Visual Studio. +- **Chocolatey**: Install the [NuGet.CommandLine](http://chocolatey.org/packages/NuGet.CommandLine) Chocolatey package using the [Chocolatey](http://chocolatey.org) client: `choco install nuget.commandline`. > [!Note] > The latest recommended NuGet CLI is always available at `https://dist.nuget.org/win-x86-commandline/latest/nuget.exe`. For compatibility purposes with older continuous integration systems, a previous URL, `https://nuget.org/nuget.exe` always provides the 2.8.6 CLI tool. ## Visual Studio -- Visual Studio for Mac: certain NuGet capabilities are built in directly. See [Including a NuGet package in your project](/visualstudio/mac/nuget-walkthrough) for a walkthrough. For other capabilities, use the `dotnet.exe` or `nuget.exe` CLI tools. - - Visual Studio Code: NuGet capabilities are available through marketplace extensions, or use the `dotnet.exe` or `nuget.exe` CLI tools. +- +- Visual Studio for Mac: certain NuGet capabilities are built in directly. See [Including a NuGet package in your project](/visualstudio/mac/nuget-walkthrough) for a walkthrough. For other capabilities, use the `dotnet.exe` or `nuget.exe` CLI tools. - Visual Studio on Windows: The **NuGet Package Manager** is included with Visual Studio 2012 and later. The Package Manager provides the [Package Manager UI](tools/package-manager-ui.md) and the [Package Manager Console](tools/package-manager-console.md), through which you can run most NuGet operations. - The Package Manager UI and Console are unique to Visual Studio on Windows. They are not available on Visual Studio for Mac at present. - - Visual Studio does not automatically include the `nuget.exe` CLI, which must be installed separately. + - Visual Studio does not automatically include the `nuget.exe` CLI, which must be installed separately as described earlier. - Package Manager Console commands work only within Visual Studio on Windows and not within other PowerShell environments. - The Visual Studio 2017 installer includes the NuGet Package Manager with any workload that employs .NET. To install separately, or to verify that the Package Manager is installed, run the Visual Studio 2017 installer and check the option under **Individual Components > Code tools > NuGet package manager**. - For Visual Studio 2010 and earlier, install the "NuGet Package Manager for Visual Studio" extension. @@ -76,7 +77,7 @@ Other ways to install the NuGet CLI: ## Feature availability -| Feature | dotnet CLI | nuget CLI (Windows) | nuget CLI (Mono) | Visual Studio (Windows) | Visual Studio Mac | +| Feature | dotnet CLI | nuget CLI (Windows) | nuget CLI (Mono) | Visual Studio (Windows) | Visual Studio for Mac | | --- | --- | --- | --- | --- | --- | | Search packages | | ✔ | ✔ | ✔ | ✔ | | Install/uninstall packages | ✔(1) | ✔(2) | ✔ | ✔ | ✔ | @@ -87,14 +88,18 @@ Other ways to install the NuGet CLI: | Set API keys for feeds | | ✔ | ✔ | | | | Create packages(4) | ✔ | ✔ | ✔(5) | ✔ | | | Publish packages | ✔(1) | ✔ | ✔ | ✔ | | -| Replicating a package | | ✔ | ✔ | | | +| Replicate packages | | ✔ | ✔ | | | | Manage the NuGet cache | ✔ | ✔ | ✔ | | | | Manage NuGet configuration | | ✔ | ✔ | | | (1) Packages on nuget.org only + (2) Does not affect project files; use `dotnet.exe` instead. + (3) Works only with `packages.config` file and not with solution (`.sln`) files. + (4) Various advanced package features are available through the CLI only as they aren't represented in the Visual Studio UI tools. + (5) Works with `.nuspec` files but not with project files. ### Related topics From bbf65432ff070dada9e17bbcc6f56402dcdd687f Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 22 Jan 2018 10:15:44 -0800 Subject: [PATCH 0470/2943] Fix case --- docs/Quickstart/Create-and-Publish-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Quickstart/Create-and-Publish-a-Package.md b/docs/Quickstart/Create-and-Publish-a-Package.md index 51c1e6180..6071b5691 100644 --- a/docs/Quickstart/Create-and-Publish-a-Package.md +++ b/docs/Quickstart/Create-and-Publish-a-Package.md @@ -121,7 +121,7 @@ Once you have a `.nupkg` file, you publish it to nuget.org using the `push` comm 1. Once logged in, select your user name (on the upper right), then select **API Keys**. -1. Select **Create**, provide a name for your key, select **Select Scopes > Push** Under **API Key**, enter * for **Glob pattern**, then select **Create**. +1. Select **Create**, provide a name for your key, select **Select Scopes > Push** under **API Key**, enter * for **Glob pattern**, then select **Create**. 1. Once the key is created, select **Copy** to retrieve the access key you'll need in the CLI: From a8e41c50caab2c660f7a6e21ecb33b4c0dc70027 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 22 Jan 2018 10:17:55 -0800 Subject: [PATCH 0471/2943] Shortening further --- docs/Quickstart/Use-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Quickstart/Use-a-Package.md b/docs/Quickstart/Use-a-Package.md index 758b55be2..dec949b46 100644 --- a/docs/Quickstart/Use-a-Package.md +++ b/docs/Quickstart/Use-a-Package.md @@ -23,7 +23,7 @@ NuGet packages are units of reusable code that other developers make available t Once installed, refer to the package in code with `using ` where \ is specific to the package you're using. Once the reference is made, you can call the package through its API. -The remainder of this topic walks through the process of using the Package Manager UI to install the popular [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) package in a Universal Windows Platform (UWP) project. It then shows an example of using the package. You can use a similar workflow for other NuGet packages as well. +The remainder of this topic walks through the process of using the Package Manager UI to install the popular [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) package in a Universal Windows Platform (UWP) project. It then shows an example of using the package. You use a similar workflow for other NuGet packages. - [Install pre-requisites](#install-pre-requisites) - [Create a project](#create-a-project) From ce462fdf3a5a6533f619ccf2cdde4bafbf44e300 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 22 Jan 2018 10:21:07 -0800 Subject: [PATCH 0472/2943] Fixing another anchor --- docs/Reference/Errors-and-Warnings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index 4ed055400..d002076c2 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -141,7 +141,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | **Common causes** | Packages with dependency constraints on exact versions do not allow other packages to increase the version if needed. | | **Example message** | *Version conflict detected for NuGet.Versioning. Reference the package directly from the project to resolve this issue.
    NuGet.Packaging 3.5.0 -> NuGet.Versioning (= 3.5.0)
    NuGet.Configuration 4.0.0 -> NuGet.Versioning (= 4.0.0)* | - ### NU1108 (Previously NU1606) From cb583cb227b285b1bb02a1db7f4c9f9630662783 Mon Sep 17 00:00:00 2001 From: Maira Wenzel Date: Mon, 22 Jan 2018 11:10:32 -0800 Subject: [PATCH 0473/2943] fix broken anchor --- docs/Reference/Errors-and-Warnings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index d002076c2..dc5432a7d 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -29,7 +29,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | Group | Error Numbers | | --- | --- | | [Invalid input errors](#invalid-input-errors) | [NU1001](#nu1001), [NU1002](#nu1002), [NU1003](#nu1003) | -| [Missing package and project errors](#missing-package-and-project-errors) | [NU1100](#nu1100), [NU1101](#nu1101), [NU1102](#nu1102), [NU1103](#nu1103), [NU1104](#nu1104), [NU1105](#nu1105), [NU1106](#nu1106), [NU1107](#nu1107) (previously NU1607), [NU1108](#nu1107) (previously NU1606) | +| [Missing package and project errors](#missing-package-and-project-errors) | [NU1100](#nu1100), [NU1101](#nu1101), [NU1102](#nu1102), [NU1103](#nu1103), [NU1104](#nu1104), [NU1105](#nu1105), [NU1106](#nu1106), [NU1107](#nu1107) (previously NU1607), [NU1108](#nu1108) (previously NU1606) | | [Compatibility errors](#compatibility-errors) | [NU1201](#nu1201), [NU1202](#nu1202), [NU1203](#nu1203), [NU1401](#nu1401) | **Warnings** From 10fb2d72fc2a199a3645b589b94f8b9ac0228825 Mon Sep 17 00:00:00 2001 From: Maira Wenzel Date: Mon, 22 Jan 2018 11:12:47 -0800 Subject: [PATCH 0474/2943] fix anchors --- docs/Reference/Errors-and-Warnings.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/Reference/Errors-and-Warnings.md index dc5432a7d..442ab1395 100644 --- a/docs/Reference/Errors-and-Warnings.md +++ b/docs/Reference/Errors-and-Warnings.md @@ -131,7 +131,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | **Common causes** | Packages contain dependency on exact versions of a package instead of open-ended ranges. | | **Example message** | *Unable to satisfy conflicting requests for {id}: {conflict path} Framework: {target graph}* | - + ### NU1107 (Previously NU1607) @@ -141,7 +141,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | **Common causes** | Packages with dependency constraints on exact versions do not allow other packages to increase the version if needed. | | **Example message** | *Version conflict detected for NuGet.Versioning. Reference the package directly from the project to resolve this issue.
    NuGet.Packaging 3.5.0 -> NuGet.Versioning (= 3.5.0)
    NuGet.Configuration 4.0.0 -> NuGet.Versioning (= 4.0.0)* | - + ### NU1108 (Previously NU1606) From 878f407d2b3d26d7e89097cbeb2f41c8142cded9 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 23 Jan 2018 10:35:06 -0800 Subject: [PATCH 0475/2943] Edits from feedback on install topic, and links --- docs/Create-Packages/Creating-a-Package.md | 2 +- docs/Policies/NuGet-FAQ.md | 6 +++--- docs/Release-Notes/NuGet-2.6.md | 4 +--- docs/Tools/Package-Manager-Console.md | 15 +++++++++++--- docs/Tools/nuget-exe-CLI-Reference.md | 8 +++++--- docs/archive/project-json-archive.md | 2 +- docs/index.md | 2 +- docs/install-nuget-client-tools.md | 24 +++++++--------------- 8 files changed, 31 insertions(+), 32 deletions(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index ceb633d3c..f162eea66 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -17,7 +17,7 @@ ms.reviewer: # Creating NuGet packages -No matter what your package does or what code it contains, you use `nuget.exe` to package that functionality into a component that can be shared with and used by any number of other developers. To install `nuget.exe`, see [Install NuGet CLI](../guides/install-nuget.md#nuget-cli). Note that Visual Studio does not automatically include `nuget.exe`. +No matter what your package does or what code it contains, you use `nuget.exe` to package that functionality into a component that can be shared with and used by any number of other developers. To install `nuget.exe`, see [Install NuGet CLI](../install-nuget-client-tools.md#nuget-cli). Note that Visual Studio does not automatically include `nuget.exe`. Technically speaking, a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension and whose contents match certain conventions. This topic describes the detailed process of creating a package that meets those conventions. For a focused walkthrough, refer to [Quickstart: create and publish a package](../quickstart/create-and-publish-a-package.md). diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index 12b327ea4..971481cf3 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -18,7 +18,7 @@ ms.reviewer: **What is required to run NuGet?** -All the information around both UI and command-line tools is available in the [Install guide](../guides/install-nuget.md). +All the information around both UI and command-line tools is available in the [Install guide](../install-nuget-client-tools.md). **Does NuGet support Mono?** @@ -67,13 +67,13 @@ To update the template itself, you need to manually update the template reposito **Can I use NuGet outside of Visual Studio?** -Yes, NuGet works directly from the command line. See the [Install guide](../guides/install-nuget.md) and the [CLI reference](../tools/nuget-exe-CLI-Reference.md). +Yes, NuGet works directly from the command line. See the [Install guide](../install-nuget-client-tools.md) and the [CLI reference](../tools/nuget-exe-CLI-Reference.md). ## NuGet command line **How do I get the latest version of NuGet command line tool?** -See the [Install guide](../guides/install-nuget.md). +See the [Install guide](../install-nuget-client-tools.md). **What is the license for nuget.exe?** diff --git a/docs/Release-Notes/NuGet-2.6.md b/docs/Release-Notes/NuGet-2.6.md index 976986989..ab825b8f3 100644 --- a/docs/Release-Notes/NuGet-2.6.md +++ b/docs/Release-Notes/NuGet-2.6.md @@ -38,9 +38,7 @@ Starting with NuGet 2.6, we will publish two extensions as below: 1. [NuGet Package Manager](https://marketplace.visualstudio.com/items?itemName=NuGetTeam.NuGetPackageManager) (applies to Visual Studio 2010 and 2012) 1. [NuGet Package Manager for Visual Studio 2013](https://marketplace.visualstudio.com/items?itemName=NuGetTeam.NuGetPackageManagerforVisualStudio2013) -With this split, the [nuget.org](https://nuget.org) home page's "Install NuGet" button -will now take you to the [installing NuGet](../guides/install-nuget.md) -page, where you can find more information about installing the different NuGet clients. +With this split, the [nuget.org](https://nuget.org) home page's "Install NuGet" button takes you to the [installing NuGet](../install-nuget-client-tools.md) page, where you can find more information about installing the different NuGet clients. diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index 647a1c941..238ddd8fb 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -5,7 +5,7 @@ title: NuGet Package Manager Console Guide | Microsoft Docs author: kraigb hms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 01/23/2018 ms.topic: article ms.prod: nuget ms.technology: null @@ -20,7 +20,7 @@ ms.reviewer: The NuGet Package Manager Console is built into Visual Studio on Windows version 2012 and later. (It is not included with Visual Studio for Mac or Visual Studio Code.) -The console lets you use [NuGet PowerShell commands](../tools/powershell-reference.md) to find, install, uninstall, and update NuGet packages. Using the console is necessary in cases where the Package Manager UI does not provide a way to perform an operation. +The console lets you use [NuGet PowerShell commands](../tools/powershell-reference.md) to find, install, uninstall, and update NuGet packages. Using the console is necessary in cases where the Package Manager UI does not provide a way to perform an operation. To use `nuget.exe` commands in the console, see [Using the nuget.exe CLI in the console](#using-the-nuget-exe-cli-in-the-console). For example, finding and installing a package is done with three easy steps: @@ -167,7 +167,7 @@ Some packages install new commands for the console. For example, `MvcScaffolding ![Installing and using MvcScaffold](media/PackageManagerConsoleInstall.png) -## Setting up a NuGet PowerShell Profile +## Setting up a NuGet PowerShell profile A PowerShell profile lets you make commonly-used commands available wherever you use PowerShell. NuGet supports a NuGet-specific profile typically found at the following location: @@ -181,3 +181,12 @@ C:\Users\\Documents\WindowsPowerShell\NuGet_profile.ps1 ``` For more details, refer to [Windows PowerShell Profiles](https://technet.microsoft.com/library/bb613488.aspx). + +## Using the nuget.exe CLI in the console + +To make the [`nuget.exe` CLI](nuget-exe-CLI-Reference.md) available in the Package Manager Console, install the [NuGet.CommandLine](http://www.nuget.org/packages/NuGet.CommandLine/) package from the console: + +```ps +# Other versions are available, see http://www.nuget.org/packages/NuGet.CommandLine/ +Install-Package NuGet.CommandLine -Version 4.4.1 +``` diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index f94640cb7..0d93da4de 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -3,7 +3,7 @@ title: NuGet Command-Line Interface (CLI) Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 01/23/2018 ms.topic: reference ms.prod: nuget ms.technology: null @@ -26,10 +26,13 @@ This documentation reflects the latest version of the NuGet CLI. For exact detai [!INCLUDE[install-cli](../includes/install-cli.md)] +> [!Tip] +> To make the NuGet CLI available within the Package Manager Console in Visual Studio, see [Using the nuget.exe CLI in the console](package-manager-console.md#using-the-nuget-exe-cli-in-the-console). + ## Availability - All commands are available on Windows. -- All commands work with [nuget.exe running on Mono](../guides/install-nuget.md#mac-osx-and-linux) except where indicated for `pack`, `restore`, and `update`. +- All commands work with [nuget.exe running on Mono](../install-nuget-client-tools.md#mac-osx-and-linux) except where indicated for `pack`, `restore`, and `update`. - The `pack`, `restore`, `delete`, `locals`, and `push` commands are also available on Mac and Linux through the [dotnet CLI](dotnet-Commands.md). ## Commands and applicability @@ -47,7 +50,6 @@ Available commands and applicability to package creation, package consumption, a | [setapikey](cli-ref-setapikey.md) | Publishing, Consumption | All | Saves an API key for a given package source when that package source requires a key for access. | | [spec](cli-ref-spec.md) | Creation | All | Generates a `.nuspec` file, using tokens if generating the file from a Visual Studio project. | - | Secondary Commands | Applicable Roles | NuGet Version | Description | | --- | --- | --- | --- | | [add](cli-ref-add.md) | Publishing | 3.3+ | Adds a package to a non-HTTP package source using hierarchical layout. For HTTP sources, use *push*. | diff --git a/docs/archive/project-json-archive.md b/docs/archive/project-json-archive.md index 9afde25be..6387bcd1c 100644 --- a/docs/archive/project-json-archive.md +++ b/docs/archive/project-json-archive.md @@ -34,7 +34,7 @@ In the list of reference formats: ## nuget restore on Mono -*Originally in [Install NuGet client tools](../guides/install-nuget.md).* +*Originally in [Install NuGet client tools](../install-nuget-client-tools.md).* Works with `project.json`. diff --git a/docs/index.md b/docs/index.md index a90d92f01..3b051a6da 100644 --- a/docs/index.md +++ b/docs/index.md @@ -72,7 +72,7 @@ ms.reviewer:
  • - +
    diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index 03be5138a..9ff161e0c 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -16,24 +16,17 @@ ms.reviewer: # Installing NuGet client tools -To work with NuGet, as a package consumer or creator, you can use cross-platform command-line interface (CLI) tools as well as NuGet features in Visual Studio. This article briefly outlines the capabilities of the different tools and how to install them. +To work with NuGet, as a package consumer or creator, you can use cross-platform command-line interface (CLI) tools as well as NuGet features in Visual Studio. This article briefly outlines the capabilities of the different tools and how to install them. The [Feature availability](#feature-availability) section provides a comparison between the tools. **Looking to install a package? See [Quickstart - Use a package](quickstart/use-a-package.md).** -> [!Tip] -> Developers working on Windows can also explore the [NuGet Package Explorer](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer), an open-source, stand-alone tool to visually explore, create, and edit NuGet packages. It's very helpful, for example, to make experimental changes to a package structure without rebuilding the package. - ## CLI tools -The two NuGet CLI tools are `dotnet.exe` and `nuget.exe`. - -`dotnet.exe` works on all platforms; `nuget.exe` works on Windows and on Mac and Linux under Mono, with some limitations. +The two NuGet CLI tools are `dotnet.exe` and `nuget.exe`. See [Feature availability](#feature-availability) for a thorough comparison. -### dotnet.exe CLI (recommended) +### dotnet.exe CLI -The .NET Core 2.0 CLI, `dotnet.exe`, works on all platforms (Windows, Mac, and Linux) and provides the most important NuGet features, such as installing, restoring, and publishing packages. Unlike the `nuget.exe` CLI, 'dotnet' provides direct integration with .NET Core project files, which is helpful in most scenarios. `dotnet` is also built directly for each platform and does not require you to install Mono. - -For these reasons, it's recommended that .NET Core developers typically use `dotnet` and rely on `nuget.exe` only when necessary. +The .NET Core 2.0 CLI, `dotnet.exe`, works on all platforms (Windows, Mac, and Linux) and provides core NuGet features, such as installing, restoring, and publishing packages. 'dotnet' provides direct integration with .NET Core project files (such as `.csproj`), which is helpful in most scenarios. `dotnet` is also built directly for each platform and does not require you to install Mono. Installation: @@ -44,7 +37,7 @@ For more information, see [.NET Core command-line interface tools](/dotnet/core/ ### nuget.exe CLI -The NuGet CLI, `nuget.exe`, is the command-line utility for Windows that provides all NuGet capabilities; it can also be run on Mac OSX and Linux using Mono with some limitations. +The NuGet CLI, `nuget.exe`, is the command-line utility for Windows that provides all NuGet capabilities; it can also be run on Mac OSX and Linux using Mono with some limitations. Unlike `dotnet`, the `nuget.exe` CLI does not affect project files. Installation: @@ -53,17 +46,12 @@ Installation: > [!Tip] > Use `nuget update -self` to update an existing nuget.exe to the latest version. -Other ways to install the NuGet CLI: -- **Visual Studio**: Install the [NuGet.CommandLine](http://www.nuget.org/packages/NuGet.CommandLine/) package from the Package Manager Console in Visual Studio. -- **Chocolatey**: Install the [NuGet.CommandLine](http://chocolatey.org/packages/NuGet.CommandLine) Chocolatey package using the [Chocolatey](http://chocolatey.org) client: `choco install nuget.commandline`. - > [!Note] > The latest recommended NuGet CLI is always available at `https://dist.nuget.org/win-x86-commandline/latest/nuget.exe`. For compatibility purposes with older continuous integration systems, a previous URL, `https://nuget.org/nuget.exe` always provides the 2.8.6 CLI tool. ## Visual Studio - Visual Studio Code: NuGet capabilities are available through marketplace extensions, or use the `dotnet.exe` or `nuget.exe` CLI tools. -- - Visual Studio for Mac: certain NuGet capabilities are built in directly. See [Including a NuGet package in your project](/visualstudio/mac/nuget-walkthrough) for a walkthrough. For other capabilities, use the `dotnet.exe` or `nuget.exe` CLI tools. - Visual Studio on Windows: The **NuGet Package Manager** is included with Visual Studio 2012 and later. The Package Manager provides the [Package Manager UI](tools/package-manager-ui.md) and the [Package Manager Console](tools/package-manager-console.md), through which you can run most NuGet operations. @@ -111,3 +99,5 @@ Other ways to install the NuGet CLI: - [Package Manager Console PowerShell reference](tools/powershell-reference.md) - [Creating a package](create-packages/creating-a-package.md) - [Publishing a Package](create-packages/publish-a-package.md) + +Developers working on Windows can also explore the [NuGet Package Explorer](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer), an open-source, stand-alone tool to visually explore, create, and edit NuGet packages. It's very helpful, for example, to make experimental changes to a package structure without rebuilding the package. From 08f7bf1688a245a7833a23dfe245f77a95df93bd Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 23 Jan 2018 10:37:37 -0800 Subject: [PATCH 0476/2943] Small edits --- docs/install-nuget-client-tools.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index 9ff161e0c..980e61d73 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -16,13 +16,13 @@ ms.reviewer: # Installing NuGet client tools -To work with NuGet, as a package consumer or creator, you can use cross-platform command-line interface (CLI) tools as well as NuGet features in Visual Studio. This article briefly outlines the capabilities of the different tools and how to install them. The [Feature availability](#feature-availability) section provides a comparison between the tools. +To work with NuGet, as a package consumer or creator, you can use [cross-platform command-line interface (CLI) tools](#cli-tools) as well as [NuGet features in Visual Studio](#visual-studio). This article briefly outlines the capabilities of the different tools, how to install them, and their comparative [feature availability](#feature-availability). **Looking to install a package? See [Quickstart - Use a package](quickstart/use-a-package.md).** ## CLI tools -The two NuGet CLI tools are `dotnet.exe` and `nuget.exe`. See [Feature availability](#feature-availability) for a thorough comparison. +The two NuGet CLI tools are `dotnet.exe` and `nuget.exe`. See [feature availability](#feature-availability) for a comparison. ### dotnet.exe CLI From d3a86fec394201e6089cd87154bea5a0b4d93ab4 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 23 Jan 2018 10:48:06 -0800 Subject: [PATCH 0477/2943] Correct anchor --- docs/Tools/Package-Manager-Console.md | 2 +- docs/Tools/nuget-exe-CLI-Reference.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Tools/Package-Manager-Console.md b/docs/Tools/Package-Manager-Console.md index 238ddd8fb..2b5875155 100644 --- a/docs/Tools/Package-Manager-Console.md +++ b/docs/Tools/Package-Manager-Console.md @@ -20,7 +20,7 @@ ms.reviewer: The NuGet Package Manager Console is built into Visual Studio on Windows version 2012 and later. (It is not included with Visual Studio for Mac or Visual Studio Code.) -The console lets you use [NuGet PowerShell commands](../tools/powershell-reference.md) to find, install, uninstall, and update NuGet packages. Using the console is necessary in cases where the Package Manager UI does not provide a way to perform an operation. To use `nuget.exe` commands in the console, see [Using the nuget.exe CLI in the console](#using-the-nuget-exe-cli-in-the-console). +The console lets you use [NuGet PowerShell commands](../tools/powershell-reference.md) to find, install, uninstall, and update NuGet packages. Using the console is necessary in cases where the Package Manager UI does not provide a way to perform an operation. To use `nuget.exe` commands in the console, see [Using the nuget.exe CLI in the console](#using-the-nugetexe-cli-in-the-console). For example, finding and installing a package is done with three easy steps: diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index 0d93da4de..b530464f9 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -27,7 +27,7 @@ This documentation reflects the latest version of the NuGet CLI. For exact detai [!INCLUDE[install-cli](../includes/install-cli.md)] > [!Tip] -> To make the NuGet CLI available within the Package Manager Console in Visual Studio, see [Using the nuget.exe CLI in the console](package-manager-console.md#using-the-nuget-exe-cli-in-the-console). +> To make the NuGet CLI available within the Package Manager Console in Visual Studio, see [Using the nuget.exe CLI in the console](package-manager-console.md#using-the-nugetexe-cli-in-the-console). ## Availability From bc094ae72c5a2db75686c592012f803ad094fb4d Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Tue, 23 Jan 2018 11:20:51 -0800 Subject: [PATCH 0478/2943] Update install-nuget-client-tools.md --- docs/install-nuget-client-tools.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index 980e61d73..158d8ac3d 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -14,11 +14,17 @@ ms.reviewer: - unniravindranathan --- +**Looking to install a package? See [Quickstart - Use a package](quickstart/use-a-package.md).** + # Installing NuGet client tools To work with NuGet, as a package consumer or creator, you can use [cross-platform command-line interface (CLI) tools](#cli-tools) as well as [NuGet features in Visual Studio](#visual-studio). This article briefly outlines the capabilities of the different tools, how to install them, and their comparative [feature availability](#feature-availability). -**Looking to install a package? See [Quickstart - Use a package](quickstart/use-a-package.md).** +| Tool | Description | Download link | +|:------------- |:-------------|:-----| +| [dotnet.exe](#dotnetexe-cli) | Works on all platforms (Windows, Mac, and Linux) and provides core NuGet features, such as installing, restoring, and publishing packages. You would need to install .NET Core SDK to get the dotnet.exe | [Download .NET SDK](https://www.microsoft.com/net/download/windows) | +| [nuget.exe](#nugetexe-cli) | command-line utility for Windows that provides all NuGet capabilities | [Download nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) | +| [Visual Studio](#visual-studio) | NuGet functionalities are on Visual Studio through NuGet Package Manager. [Learn more](#visual-studio) | [Download Visual Studio 2017](https://www.visualstudio.com/downloads/) | ## CLI tools From 9c472433824f139937c6d65d93ea758d77b32a00 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 23 Jan 2018 11:56:43 -0800 Subject: [PATCH 0479/2943] Edits to Anand's proposal --- docs/install-nuget-client-tools.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index 158d8ac3d..a86011205 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -14,17 +14,17 @@ ms.reviewer: - unniravindranathan --- -**Looking to install a package? See [Quickstart - Use a package](quickstart/use-a-package.md).** - # Installing NuGet client tools +> **Looking to install a package? See [Quickstart - Use a package](quickstart/use-a-package.md).** + To work with NuGet, as a package consumer or creator, you can use [cross-platform command-line interface (CLI) tools](#cli-tools) as well as [NuGet features in Visual Studio](#visual-studio). This article briefly outlines the capabilities of the different tools, how to install them, and their comparative [feature availability](#feature-availability). -| Tool | Description | Download link | +| Tool                | Description | Download link | |:------------- |:-------------|:-----| -| [dotnet.exe](#dotnetexe-cli) | Works on all platforms (Windows, Mac, and Linux) and provides core NuGet features, such as installing, restoring, and publishing packages. You would need to install .NET Core SDK to get the dotnet.exe | [Download .NET SDK](https://www.microsoft.com/net/download/windows) | -| [nuget.exe](#nugetexe-cli) | command-line utility for Windows that provides all NuGet capabilities | [Download nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) | -| [Visual Studio](#visual-studio) | NuGet functionalities are on Visual Studio through NuGet Package Manager. [Learn more](#visual-studio) | [Download Visual Studio 2017](https://www.visualstudio.com/downloads/) | +| [dotnet.exe](#dotnetexe-cli) | Included with the .NET Core SDK and provides core NuGet features on all platforms. | [.NET Core SDK](https://www.microsoft.com/net/download/) | +| [nuget.exe](#nugetexe-cli) | Provides all NuGet capabilities on Windows and Mac/Linux under Mono. | [nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) | +| [Visual Studio](#visual-studio) | Provides NuGet capabilites through the Package Manager UI and Package Manager Console. | [Visual Studio 2017](https://www.visualstudio.com/downloads/) | ## CLI tools From f375b096aaad77f8966f1dab235d5cd1a463cc0e Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 23 Jan 2018 12:01:09 -0800 Subject: [PATCH 0480/2943] Tweaks --- docs/install-nuget-client-tools.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index a86011205..4f785d07b 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -20,11 +20,11 @@ ms.reviewer: To work with NuGet, as a package consumer or creator, you can use [cross-platform command-line interface (CLI) tools](#cli-tools) as well as [NuGet features in Visual Studio](#visual-studio). This article briefly outlines the capabilities of the different tools, how to install them, and their comparative [feature availability](#feature-availability). -| Tool                | Description | Download link | +| Tool                | Description | Download link          | |:------------- |:-------------|:-----| | [dotnet.exe](#dotnetexe-cli) | Included with the .NET Core SDK and provides core NuGet features on all platforms. | [.NET Core SDK](https://www.microsoft.com/net/download/) | -| [nuget.exe](#nugetexe-cli) | Provides all NuGet capabilities on Windows and Mac/Linux under Mono. | [nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) | -| [Visual Studio](#visual-studio) | Provides NuGet capabilites through the Package Manager UI and Package Manager Console. | [Visual Studio 2017](https://www.visualstudio.com/downloads/) | +| [nuget.exe](#nugetexe-cli) | Provides all NuGet capabilities on Windows and most features running under Mono on Mac and Linux. | [nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) | +| [Visual Studio](#visual-studio) | Provides NuGet capabilities through the Package Manager UI and Package Manager Console. | [Visual Studio 2017](https://www.visualstudio.com/downloads/) | ## CLI tools From c6babc2addbdc9e2982b8bc0bf38a5923bfae85a Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 23 Jan 2018 12:02:36 -0800 Subject: [PATCH 0481/2943] Add mono link --- docs/install-nuget-client-tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index 4f785d07b..9fef3d9a5 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -23,7 +23,7 @@ To work with NuGet, as a package consumer or creator, you can use [cross-platfor | Tool                | Description | Download link          | |:------------- |:-------------|:-----| | [dotnet.exe](#dotnetexe-cli) | Included with the .NET Core SDK and provides core NuGet features on all platforms. | [.NET Core SDK](https://www.microsoft.com/net/download/) | -| [nuget.exe](#nugetexe-cli) | Provides all NuGet capabilities on Windows and most features running under Mono on Mac and Linux. | [nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) | +| [nuget.exe](#nugetexe-cli) | Provides all NuGet capabilities on Windows and most features running under [Mono](http://www.mono-project.com/docs/getting-started/install/) on Mac and Linux. | [nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) | | [Visual Studio](#visual-studio) | Provides NuGet capabilities through the Package Manager UI and Package Manager Console. | [Visual Studio 2017](https://www.visualstudio.com/downloads/) | ## CLI tools From 7acf34eea83292fd6f07abab28f775e45c3aa277 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 23 Jan 2018 12:03:55 -0800 Subject: [PATCH 0482/2943] Tweak --- docs/install-nuget-client-tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index 9fef3d9a5..2dc0e2e16 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -20,7 +20,7 @@ ms.reviewer: To work with NuGet, as a package consumer or creator, you can use [cross-platform command-line interface (CLI) tools](#cli-tools) as well as [NuGet features in Visual Studio](#visual-studio). This article briefly outlines the capabilities of the different tools, how to install them, and their comparative [feature availability](#feature-availability). -| Tool                | Description | Download link          | +| Tool                | Description | Download          | |:------------- |:-------------|:-----| | [dotnet.exe](#dotnetexe-cli) | Included with the .NET Core SDK and provides core NuGet features on all platforms. | [.NET Core SDK](https://www.microsoft.com/net/download/) | | [nuget.exe](#nugetexe-cli) | Provides all NuGet capabilities on Windows and most features running under [Mono](http://www.mono-project.com/docs/getting-started/install/) on Mac and Linux. | [nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) | From e5e69f3bc86c0d134f8b6d5997d872543c1b2a95 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 24 Jan 2018 10:22:13 -0800 Subject: [PATCH 0483/2943] Fix link --- docs/Create-Packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index cefaab139..24e58a94d 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -17,7 +17,7 @@ ms.reviewer: # Creating NuGet packages -No matter what your package does or what code it contains, you use `nuget.exe` to package that functionality into a component that can be shared with and used by any number of other developers. To install `nuget.exe`, see [Install NuGet CLI](../install-nuget-client-tools.md#nuget-cli). Note that Visual Studio does not automatically include `nuget.exe`. +No matter what your package does or what code it contains, you use `nuget.exe` to package that functionality into a component that can be shared with and used by any number of other developers. To install `nuget.exe`, see [Install NuGet CLI](install-nuget-client-tools.md#nuget-cli). Note that Visual Studio does not automatically include `nuget.exe`. Technically speaking, a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension and whose contents match certain conventions. This topic describes the detailed process of creating a package that meets those conventions. For a focused walkthrough, refer to [Quickstart: create and publish a package](../quickstart/create-and-publish-a-package.md). From 49f6a20951f61d9e87f0d395c90672bd8bdf8cfd Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 24 Jan 2018 10:24:52 -0800 Subject: [PATCH 0484/2943] Fix links to install --- docs/Tools/nuget-exe-CLI-Reference.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index b530464f9..eda751993 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -31,9 +31,11 @@ This documentation reflects the latest version of the NuGet CLI. For exact detai ## Availability +See [feature availability](install-nuget-client-tools.md#feature-availability) for exact details. + - All commands are available on Windows. -- All commands work with [nuget.exe running on Mono](../install-nuget-client-tools.md#mac-osx-and-linux) except where indicated for `pack`, `restore`, and `update`. -- The `pack`, `restore`, `delete`, `locals`, and `push` commands are also available on Mac and Linux through the [dotnet CLI](dotnet-Commands.md). +- All commands work with nuget.exe running on Mono except where indicated for `pack`, `restore`, and `update`. +- The `pack`, `restore`, `delete`, `locals`, and `push` commands are also available on Mac and Linux through the dotnet CLI. ## Commands and applicability From 51cb6f3b20e46c8846e9bf528074d4b1ef27efae Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 24 Jan 2018 10:44:27 -0800 Subject: [PATCH 0485/2943] Fix link --- docs/Create-Packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index 24e58a94d..cefaab139 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -17,7 +17,7 @@ ms.reviewer: # Creating NuGet packages -No matter what your package does or what code it contains, you use `nuget.exe` to package that functionality into a component that can be shared with and used by any number of other developers. To install `nuget.exe`, see [Install NuGet CLI](install-nuget-client-tools.md#nuget-cli). Note that Visual Studio does not automatically include `nuget.exe`. +No matter what your package does or what code it contains, you use `nuget.exe` to package that functionality into a component that can be shared with and used by any number of other developers. To install `nuget.exe`, see [Install NuGet CLI](../install-nuget-client-tools.md#nuget-cli). Note that Visual Studio does not automatically include `nuget.exe`. Technically speaking, a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension and whose contents match certain conventions. This topic describes the detailed process of creating a package that meets those conventions. For a focused walkthrough, refer to [Quickstart: create and publish a package](../quickstart/create-and-publish-a-package.md). From 133f52e8a0e009c365e3d5a335c0e9fd88aec0a6 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 24 Jan 2018 10:45:23 -0800 Subject: [PATCH 0486/2943] Link --- docs/Tools/nuget-exe-CLI-Reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/Tools/nuget-exe-CLI-Reference.md index eda751993..78172a69a 100644 --- a/docs/Tools/nuget-exe-CLI-Reference.md +++ b/docs/Tools/nuget-exe-CLI-Reference.md @@ -31,7 +31,7 @@ This documentation reflects the latest version of the NuGet CLI. For exact detai ## Availability -See [feature availability](install-nuget-client-tools.md#feature-availability) for exact details. +See [feature availability](../install-nuget-client-tools.md#feature-availability) for exact details. - All commands are available on Windows. - All commands work with nuget.exe running on Mono except where indicated for `pack`, `restore`, and `update`. From 3ad62be0224c5d0df94d7444c4b9939a52fd027f Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 24 Jan 2018 11:00:08 -0800 Subject: [PATCH 0487/2943] Bookmark --- docs/Create-Packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/Create-Packages/Creating-a-Package.md index cefaab139..f6e964247 100644 --- a/docs/Create-Packages/Creating-a-Package.md +++ b/docs/Create-Packages/Creating-a-Package.md @@ -17,7 +17,7 @@ ms.reviewer: # Creating NuGet packages -No matter what your package does or what code it contains, you use `nuget.exe` to package that functionality into a component that can be shared with and used by any number of other developers. To install `nuget.exe`, see [Install NuGet CLI](../install-nuget-client-tools.md#nuget-cli). Note that Visual Studio does not automatically include `nuget.exe`. +No matter what your package does or what code it contains, you use `nuget.exe` to package that functionality into a component that can be shared with and used by any number of other developers. To install `nuget.exe`, see [Install NuGet CLI](../install-nuget-client-tools.md#nugetexe-cli). Note that Visual Studio does not automatically include `nuget.exe`. Technically speaking, a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension and whose contents match certain conventions. This topic describes the detailed process of creating a package that meets those conventions. For a focused walkthrough, refer to [Quickstart: create and publish a package](../quickstart/create-and-publish-a-package.md). From 8800836585daf7359f5086485f2b683a35d8ba7e Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 24 Jan 2018 13:20:52 -0800 Subject: [PATCH 0488/2943] Add note about msbuild --- docs/install-nuget-client-tools.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index 2dc0e2e16..99b29b589 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -3,7 +3,7 @@ title: Installing NuGet client tools | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 01/19/2018 +ms.date: 01/24/2018 ms.topic: get-started-article ms.prod: nuget ms.technology: null @@ -26,6 +26,8 @@ To work with NuGet, as a package consumer or creator, you can use [cross-platfor | [nuget.exe](#nugetexe-cli) | Provides all NuGet capabilities on Windows and most features running under [Mono](http://www.mono-project.com/docs/getting-started/install/) on Mac and Linux. | [nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) | | [Visual Studio](#visual-studio) | Provides NuGet capabilities through the Package Manager UI and Package Manager Console. | [Visual Studio 2017](https://www.visualstudio.com/downloads/) | +The [MSBuild CLI](../schema/msbuild-targets.md) also provides the ability to restore and create packages, which is primarily useful on build servers. MSBuild is not otherwise a general-purpose tool for working with NuGet. + ## CLI tools The two NuGet CLI tools are `dotnet.exe` and `nuget.exe`. See [feature availability](#feature-availability) for a comparison. From 4760f7bfd871d9d449f32d1f3ad01329f72de773 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 24 Jan 2018 13:23:28 -0800 Subject: [PATCH 0489/2943] Update install-nuget-client-tools.md --- docs/install-nuget-client-tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index 99b29b589..0bd3f2adf 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -26,7 +26,7 @@ To work with NuGet, as a package consumer or creator, you can use [cross-platfor | [nuget.exe](#nugetexe-cli) | Provides all NuGet capabilities on Windows and most features running under [Mono](http://www.mono-project.com/docs/getting-started/install/) on Mac and Linux. | [nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) | | [Visual Studio](#visual-studio) | Provides NuGet capabilities through the Package Manager UI and Package Manager Console. | [Visual Studio 2017](https://www.visualstudio.com/downloads/) | -The [MSBuild CLI](../schema/msbuild-targets.md) also provides the ability to restore and create packages, which is primarily useful on build servers. MSBuild is not otherwise a general-purpose tool for working with NuGet. +The [MSBuild CLI](schema/msbuild-targets.md) also provides the ability to restore and create packages, which is primarily useful on build servers. MSBuild is not otherwise a general-purpose tool for working with NuGet. ## CLI tools From 1072486ea41e4c7d8b2ec664eb319e2789feac81 Mon Sep 17 00:00:00 2001 From: Chris Maddock Date: Wed, 24 Jan 2018 22:46:41 +0000 Subject: [PATCH 0490/2943] Fix typo --- docs/Schema/nuspec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Schema/nuspec.md b/docs/Schema/nuspec.md index eb3793808..798034082 100644 --- a/docs/Schema/nuspec.md +++ b/docs/Schema/nuspec.md @@ -327,7 +327,7 @@ To bypass this automatic behavior and explicitly control which files are include ``` -With NuGet 2.x and earlier, and projects using `packages.config`, the `` element is also used to include immutable content files when a package is installed. With NuGet 3.3+ and projects using `project.json` pr PackageReference, the `` element is used instead. See [Including content files](#including-content-files) below for details. +With NuGet 2.x and earlier, and projects using `packages.config`, the `` element is also used to include immutable content files when a package is installed. With NuGet 3.3+ and projects using `project.json` or PackageReference, the `` element is used instead. See [Including content files](#including-content-files) below for details. ### File element attributes From 1001d7e73b93728a23d0afdf218e6bd40a3c04b9 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 24 Jan 2018 16:41:46 -0800 Subject: [PATCH 0491/2943] Quickstart overhauls Updating VS quickstarts to use VS UI for manifest properties and packing. Add dotnet quickstarts for consume and create Clean up a lot of mixed-case filenames and folders Includes renaming files out of the schema folder --- .openpublishing.redirection.json | 9 +++++++++ docs/Create-Packages/Publish-a-package.md | 2 +- docs/TOC.md | 6 ++++-- docs/Tools/dotnet-Commands.md | 21 +++++++++++++++------ docs/includes/install-methods.md | 3 ++- 5 files changed, 31 insertions(+), 10 deletions(-) diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index e6bf9f0ea..4a9b9c4af 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -49,6 +49,15 @@ "source_path": "docs/Quickstart/restore.md", "redirect_url": "/nuget/consume-packages/package-restore-troubleshooting", "redirect_document_id": false + }, + { + "source_path": "docs/Quickstart/Create-and-Publish-a-Package.md", + "redirect_url": "/nuget/quickstart/create-and-publish-a-package-using-visual-studio", + "redirect_document_id": false + }, { + "source_path": "docs/Quickstart/Use-a-Package.md", + "redirect_url": "/nuget/quickstart/install-and-use-a-package-in-visual-studio", + "redirect_document_id": false } ] } \ No newline at end of file diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/Create-Packages/Publish-a-package.md index ff123dbd5..45f02aba7 100644 --- a/docs/Create-Packages/Publish-a-package.md +++ b/docs/Create-Packages/Publish-a-package.md @@ -17,7 +17,7 @@ ms.reviewer: # Publishing packages -Once you have [created a package](../create-packages/creating-a-package.md) with `nuget pack`, it's a simple process to make it available to other developers, either publicly or privately: +Once you have created a package and have your `.nukpg` file in hand, it's a simple process to make it available to other developers, either publicly or privately: - Public packages are made available to all developers globally through [nuget.org](https://www.nuget.org/packages/manage/upload) as described in this topic. - Private packages are available to only a team or organization, by hosting them either a file share, a private NuGet server, [Visual Studio Team Services Package Management](https://www.visualstudio.com/docs/package/nuget/publish), or a third-party repository such as myget, ProGet, Nexus Repository, and Artifactory. For additional details, see [Hosting Packages Overview](../hosting-packages/overview.md). diff --git a/docs/TOC.md b/docs/TOC.md index 07a33ff4b..9122a1935 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -1,8 +1,10 @@ # [What is NuGet?](what-is-nuget.md) # [Install NuGet client tools](install-nuget-client-tools.md) # Quickstart -## [Create and Publish a Package](Quickstart/Create-and-Publish-a-Package.md) -## [Use a Package](Quickstart/Use-a-Package.md) +## [Create and publish a package (Visual Studio)](quickstart/create-and-publish-a-package-using-visual-studio.md) +## [Create and publish a package (dotnet CLI)](quickstart/create-and-publish-a-package-using-the-dotnet-cli.md) +## [Install and use a package (Visual Studio)](quickstart/install-and-use-a-package-in-visual-studio.md) +## [Install and use a package (dotnet CLI)](quickstart/install-and-use-a-package-using-the-dotnet-cli.md) # Guides ## [Create NET Standard Packages (Visual Studio 2017)](Guides/Create-NET-Standard-Packages-VS2017.md) ## [Create NET Standard Packages (Visual Studio 2015)](Guides/Create-NET-Standard-Packages-VS2015.md) diff --git a/docs/Tools/dotnet-Commands.md b/docs/Tools/dotnet-Commands.md index f2b0162e0..45b1ddfb0 100644 --- a/docs/Tools/dotnet-Commands.md +++ b/docs/Tools/dotnet-Commands.md @@ -3,7 +3,7 @@ title: dotNet NuGet commands | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 12/08/2017 +ms.date: 01/23/2018 ms.topic: article ms.prod: nuget ms.technology: null @@ -16,10 +16,19 @@ ms.reviewer: # dotNet commands -The DotNet command-line interface, which runs on Windows, Mac OS X, and Linux, provides a number of essential nuget.exe commands as listed below. Where dotnet provides the desired commands, it's not necessary to download nuget.exe. +The `dotnet` command-line interface, which runs on Windows, Mac OS X, and Linux, provides a number of essential nuget.exe commands as listed below. If dotnet satisfies your needs, it's not necessary to use `nuget.exe`. -- [**dotnet pack**](/dotnet/core/tools/dotnet-pack?tabs=netcore2x): Packs the code into a NuGet package. As of NuGet 4.0, this runs the same code as `nuget pack`. +For complete information on `dotnet`, see [.NET Core command-line interface (CLI) tools](/dotnet/core/tools/?tabs=netcore2x). + +## Package consumption + +- [**dotnet add package**](/dotnet/core/tools/dotnet-add-package): Adds a package reference to the project file, then runs `dotnet restore` to install the package. +- [**dotnet remove package**](/dotnet/core/tools/dotnet-remove-package): Removes a package reference from the project file. - [**dotnet restore**](/dotnet/core/tools/dotnet-restore?tabs=netcore2x): Restores the dependencies and tools of a project. As of NuGet 4.0, this runs the same code as `nuget restore`. -- [**dotnet nuget locals**](/dotnet/core/tools/dotnet-nuget-locals): Clears or lists local NuGet resources such as http the -request cache, temporary cache, or machine-wide global packages folder. -- [**dotnet nuget push**](/dotnet/core/tools/dotnet-nuget-push): Pushes a package to a server and publishes it, applicable to nuget.org, Visual Studio Team Services, or any third-party NuGet servers. -- [**dotnet nuget delete**](/dotnet/core/tools/dotnet-nuget-delete): Deletes or unlists a package from a server, applicable to nuget.org, Visual Studio Team Services, or any third-party NuGet servers. +- [**dotnet nuget locals**](/dotnet/core/tools/dotnet-nuget-locals): Clears or lists local NuGet resources such as the http-request cache, the temporary cache, and the machine-wide global packages folder. + +## Package creation + +- [**dotnet pack**](/dotnet/core/tools/dotnet-pack?tabs=netcore2x): Packs the code into a NuGet package. As of NuGet 4.0, this runs the same code as `nuget pack`. +- [**dotnet nuget push**](/dotnet/core/tools/dotnet-nuget-push): Pushes a package to a server and publishes it, applicable to nuget.org, Visual Studio Team Services, and third-party NuGet servers. +- [**dotnet nuget delete**](/dotnet/core/tools/dotnet-nuget-delete): Deletes or unlists a package from a host, applicable to nuget.org, Visual Studio Team Services, and third-party NuGet servers. diff --git a/docs/includes/install-methods.md b/docs/includes/install-methods.md index 5b3296cb0..73871e395 100644 --- a/docs/includes/install-methods.md +++ b/docs/includes/install-methods.md @@ -1,7 +1,8 @@ -You can install a NuGet package in three different ways: +To install a package, use one of the following methods: | Method | Description | Reference | | --- | --- | --- | +| dotnet.exe CLI: `dotnet install ` | Downloads the package identified by \, expands its contents into a folder in the current directory, and add a reference to the project files. Dependencies are also downloaded and expanded. | [CLI reference](../tools/nuget-exe-CLI-Reference.md) | | nuget.exe CLI: `nuget install ` | Downloads the package identified by \ and expands its contents into a folder in the current directory. If no packages are specified, installs all packages listed in the project's `packages.config` file. No changes are made to any project files. Dependencies are also downloaded and expanded. | [CLI reference](../tools/nuget-exe-CLI-Reference.md) | | Package Manager Console (Visual Studio): `Install-Package ` | Downloads and installs the package into the current project, then update the project file to list the package as a dependency. | [Package Manager Console Guide](../tools/Package-Manager-Console.md) | | Package Manager UI (Visual Studio) | Provides a UI through which you can browse, select, and install packages into a project. Updates the project file to list the package as a dependency. | [Package Manager UI Reference](../tools/Package-Manager-UI.md) | From 5cfa9b9f891af4505eb894f50699fe6ac9f0f82f Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 24 Jan 2018 16:42:07 -0800 Subject: [PATCH 0492/2943] More that missed the last commit --- .openpublishing.redirection.json | 42 ++++-- docs/Consume-Packages/Package-Restore.md | 8 +- .../Package-restore-troubleshooting.md | 4 +- .../Reinstalling-and-Updating-Packages.md | 2 +- .../Source-and-Config-File-Transformations.md | 2 +- .../Supporting-Multiple-Target-Frameworks.md | 2 +- docs/Guides/Create-UWP-Packages.md | 22 +-- docs/Policies/NuGet-FAQ.md | 2 +- ...-publish-a-package-using-the-dotnet-cli.md | 105 ++++++++++++++ ...d-publish-a-package-using-visual-studio.md | 129 +++++++++++++++++ docs/Quickstart/includes/publish-api-key.md | 11 ++ docs/Quickstart/includes/publish-dotnet.md | 18 +++ docs/Quickstart/includes/publish-errors.md | 9 ++ docs/Quickstart/includes/publish-manage.md | 17 +++ docs/Quickstart/includes/publish-notes.md | 4 + ...tall-and-use-a-package-in-visual-studio.md | 113 +++++++++++++++ ...-and-use-a-package-using-the-dotnet-cli.md | 110 +++++++++++++++ .../qs_create-vs-01-package-properties.png | Bin 0 -> 15875 bytes .../media/qs_create-vs-02-pack-command.png | Bin 0 -> 9794 bytes .../media/qs_create-vs-03-trash-can.png | Bin 0 -> 11166 bytes .../media/qs_create-vs-04-unlist.png | Bin 0 -> 4780 bytes docs/Reference/Errors-and-Warnings.md | 2 +- docs/Release-Notes/NuGet-3.3.md | 2 +- docs/TOC.md | 130 +++++++++--------- docs/Tools/Package-Manager-UI.md | 4 +- docs/Tools/cli-ref-install.md | 2 +- docs/Tools/cli-ref-push.md | 2 +- docs/Tools/cli-ref-restore.md | 2 +- docs/Tools/cli-ref-update.md | 2 +- docs/What-is-NuGet.md | 18 +-- docs/archive/project-json-archive.md | 10 +- .../analyzers-conventions.md} | 0 .../media/SchemaExplorer.png | Bin docs/{Schema => reference}/msbuild-targets.md | 0 .../nuget-config-file.md | 0 docs/{Schema => reference}/nuspec.md | 2 +- docs/{Schema => reference}/packages-config.md | 0 .../target-frameworks.md} | 0 38 files changed, 655 insertions(+), 121 deletions(-) create mode 100644 docs/Quickstart/create-and-publish-a-package-using-the-dotnet-cli.md create mode 100644 docs/Quickstart/create-and-publish-a-package-using-visual-studio.md create mode 100644 docs/Quickstart/includes/publish-api-key.md create mode 100644 docs/Quickstart/includes/publish-dotnet.md create mode 100644 docs/Quickstart/includes/publish-errors.md create mode 100644 docs/Quickstart/includes/publish-manage.md create mode 100644 docs/Quickstart/includes/publish-notes.md create mode 100644 docs/Quickstart/install-and-use-a-package-in-visual-studio.md create mode 100644 docs/Quickstart/install-and-use-a-package-using-the-dotnet-cli.md create mode 100644 docs/Quickstart/media/qs_create-vs-01-package-properties.png create mode 100644 docs/Quickstart/media/qs_create-vs-02-pack-command.png create mode 100644 docs/Quickstart/media/qs_create-vs-03-trash-can.png create mode 100644 docs/Quickstart/media/qs_create-vs-04-unlist.png rename docs/{Schema/Analyzers-Conventions.md => reference/analyzers-conventions.md} (100%) rename docs/{Schema => reference}/media/SchemaExplorer.png (100%) rename docs/{Schema => reference}/msbuild-targets.md (100%) rename docs/{Schema => reference}/nuget-config-file.md (100%) rename docs/{Schema => reference}/nuspec.md (99%) rename docs/{Schema => reference}/packages-config.md (100%) rename docs/{Schema/Target-Frameworks.md => reference/target-frameworks.md} (100%) diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index 4a9b9c4af..733fdf5ce 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -1,37 +1,37 @@ { "redirections": [ { - "source_path": "docs/API/introduction.md", + "source_path": "docs/api/introduction.md", "redirect_url": "/nuget/api/overview", "redirect_document_id": false }, { - "source_path": "docs/API/NuGet-API-V3.md", + "source_path": "docs/api/NuGet-API-V3.md", "redirect_url": "/nuget/reference/nuget-client-sdk", "redirect_document_id": false }, { - "source_path": "docs/API/NuGet-Credential-Providers-for-Visual-Studio.md", + "source_path": "docs/api/NuGet-Credential-Providers-for-Visual-Studio.md", "redirect_url": "/nuget/reference/extensibility/nuget-credential-providers-for-visual-studio", "redirect_document_id": false }, { - "source_path": "docs/API/nuget-exe-Credential-Providers.md", + "source_path": "docs/api/nuget-exe-Credential-Providers.md", "redirect_url": "/nuget/reference/extensibility/nuget-exe-credential-providers", "redirect_document_id": false }, { - "source_path": "docs/Create-Packages/Dependency-Versions.md", + "source_path": "docs/create-packages/Dependency-Versions.md", "redirect_url": "/nuget/reference/package-versioning", "redirect_document_id": false }, { - "source_path": "docs/Create-Packages/project-json-impact.md", + "source_path": "docs/create-packages/project-json-impact.md", "redirect_url": "/nuget/archive/project-json-impact", "redirect_document_id": false }, { - "source_path": "docs/Create-Packages/project-json-and-uwp.md", + "source_path": "docs/create-packages/project-json-and-uwp.md", "redirect_url": "/nuget/archive/project-json-and-uwp", "redirect_document_id": false }, @@ -45,6 +45,31 @@ "redirect_url": "/nuget/archive/project-json", "redirect_document_id": false }, + { + "source_path": "docs/Schema/Analyzers-Conventions.md", + "redirect_url": "/nuget/reference/analyzers-conventions", + "redirect_document_id": false + }, + { + "source_path": "docs/Schema/msbuild-targets.md", + "redirect_url": "/nuget/reference/msbuild-targets", + "redirect_document_id": false + }, + { + "source_path": "docs/Schema/nuget-config-file.md", + "redirect_url": "/nuget/reference/nuget-config-file", + "redirect_document_id": false + }, + { + "source_path": "docs/Schema/nuspec.md", + "redirect_url": "/nuget/reference/nuspec", + "redirect_document_id": false + }, + { + "source_path": "docs/Schema/Target-Frameworks.md", + "redirect_url": "/nuget/reference/target-frameworks", + "redirect_document_id": false + }, { "source_path": "docs/Quickstart/restore.md", "redirect_url": "/nuget/consume-packages/package-restore-troubleshooting", @@ -54,7 +79,8 @@ "source_path": "docs/Quickstart/Create-and-Publish-a-Package.md", "redirect_url": "/nuget/quickstart/create-and-publish-a-package-using-visual-studio", "redirect_document_id": false - }, { + }, + { "source_path": "docs/Quickstart/Use-a-Package.md", "redirect_url": "/nuget/quickstart/install-and-use-a-package-in-visual-studio", "redirect_document_id": false diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/Consume-Packages/Package-Restore.md index 5d8d64bb8..d28c96f16 100644 --- a/docs/Consume-Packages/Package-Restore.md +++ b/docs/Consume-Packages/Package-Restore.md @@ -34,15 +34,15 @@ Package restore is triggered in the following ways: - **Package Manager UI (Visual Studio on Windows)**: Packages are restored automatically when creating a project from a template and when building a project (subject to the option described in [Enabling and disabling package restore](#enabling-and-disabling-package-restore)). In NuGet 4.0+, restore also happens automatically when changes are made to a .NET Core SDK-based project. - To restore manually, right-click the solution in Solution Explorer and select **Restore NuGet Packages**. If one or more individual packages are still not installed properly (meaning that Solution Explorer shows an error icon), then use the Package Manager UI to uninstall and reinstall the affected packages. See [Reinstalling and updating packages](../Consume-Packages/Reinstalling-and-Updating-Packages.md) + To restore manually, right-click the solution in Solution Explorer and select **Restore NuGet Packages**. If one or more individual packages are still not installed properly (meaning that Solution Explorer shows an error icon), then use the Package Manager UI to uninstall and reinstall the affected packages. See [Reinstalling and updating packages](../consume-packages/Reinstalling-and-Updating-Packages.md) 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," turn on automatic restore by following the instructions under [Enabling and disabling package restore](#enabling-and-disabling-package-restore). -- **NuGet CLI**: use the [nuget restore](../tools/cli-ref-restore.md) command, which restores packages listed in the project file (see [PackageReference](../Consume-Packages/Package-References-in-Project-Files.md)) or in a [packages.config](../schema/packages-config.md) file. You can also specify a solution file. +- **NuGet CLI**: use the [nuget restore](../tools/cli-ref-restore.md) command, which restores packages listed in the project file (see [PackageReference](../consume-packages/Package-References-in-Project-Files.md)) or in a [packages.config](../schema/packages-config.md) file. You can also specify a solution file. -- **dotnet CLI**: use the [dotnet restore](/dotnet/core/tools/dotnet-restore.md?tabs=netcore2x) command, which restores packages listed in the project file (see [PackageReference](../Consume-Packages/Package-References-in-Project-Files.md)). With .NET Core 2.0 and later, restore is done automatically with `dotnet build` and `dotnet run`. +- **dotnet CLI**: use the [dotnet restore](/dotnet/core/tools/dotnet-restore.md?tabs=netcore2x) command, which restores packages listed in the project file (see [PackageReference](../consume-packages/Package-References-in-Project-Files.md)). With .NET Core 2.0 and later, restore is done automatically with `dotnet build` and `dotnet run`. -- **MSBuild**: use the [msbuild /t:restore](../schema/msbuild-targets.md#restore-target) command, which restores packages packages listed in the project file (see [PackageReference](../Consume-Packages/Package-References-in-Project-Files.md)). Available only in NuGet 4.x+ and MSBuild 15.1+, which are included with Visual Studio 2017. `nuget restore` and `dotnet restore` both use this command for applicable projects. +- **MSBuild**: use the [msbuild /t:restore](../schema/msbuild-targets.md#restore-target) command, which restores packages packages listed in the project file (see [PackageReference](../consume-packages/Package-References-in-Project-Files.md)). Available only in NuGet 4.x+ and MSBuild 15.1+, which are included with Visual Studio 2017. `nuget restore` and `dotnet restore` both use this command for applicable projects. - **Visual Studio Team Services**: When creating a build definition on Team Services, include the [NuGet restore](/vsts/build-release/tasks/package/nuget#restore-nuget-packages) or [.NET Core Restore](/vsts/build-release/tasks/build/dotnet-core#restore-nuget-packages) task in the definition before any build task. This task is included by default in a number of build templates. diff --git a/docs/Consume-Packages/Package-restore-troubleshooting.md b/docs/Consume-Packages/Package-restore-troubleshooting.md index ea4517539..3fc73a64c 100644 --- a/docs/Consume-Packages/Package-restore-troubleshooting.md +++ b/docs/Consume-Packages/Package-restore-troubleshooting.md @@ -17,7 +17,7 @@ ms.reviewer: # Troubleshooting package restore errors in Visual Studio > [!Note] -> This page focuses on common errors when restoring packages in Visual Studio and steps to resolve them. For how-to restore packages, see [Package restore](../Consume-Packages/Package-Restore.md#enabling-and-disabling-package-restore). +> This page focuses on common errors when restoring packages in Visual Studio and steps to resolve them. For how-to restore packages, see [Package restore](../consume-packages/Package-Restore.md#enabling-and-disabling-package-restore). By default, building a project in Visual Studio automatically restores NuGet packages referenced in the project. However, builds will fail if package restore is disabled in the **Tools > Options > NuGet Package Manager > Package Restore** settings and the necessary packages are not available on your computer. In these cases you may see the following errors: @@ -36,4 +36,4 @@ during build.' You can also give consent by setting the environment variable To enable package restore, open **Tools > Options > NuGet Package Manager** and select the options for **Allow NuGet to download missing packages** and **Automatically check for missing packages during build in Visual Studio**: -![enable NuGet package restore in Tool/Options](../Consume-Packages/media/restore-01-autorestoreoptions.png) +![enable NuGet package restore in Tool/Options](../consume-packages/media/restore-01-autorestoreoptions.png) diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index 2f8c6abc3..3d6edbdd8 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -95,7 +95,7 @@ To update all packages in a solution, just use `Update-Package` by itself with n Update-Package ``` -Updating packages in a project or solution using [PackageReference](../Consume-Packages/Package-References-in-Project-Files.md) always updates to the latest version of the package (excluding pre-release packages). Projects that use `packages.config` can, if desired, limit update versions as described below in [Constraining upgrade versions](#constraining-upgrade-versions). +Updating packages in a project or solution using [PackageReference](../consume-packages/Package-References-in-Project-Files.md) always updates to the latest version of the package (excluding pre-release packages). Projects that use `packages.config` can, if desired, limit update versions as described below in [Constraining upgrade versions](#constraining-upgrade-versions). For full details on the command, see the [Update-Package](../Tools/ps-ref-update-package.md) reference. diff --git a/docs/Create-Packages/Source-and-Config-File-Transformations.md b/docs/Create-Packages/Source-and-Config-File-Transformations.md index 706cce593..3c3a8beae 100644 --- a/docs/Create-Packages/Source-and-Config-File-Transformations.md +++ b/docs/Create-Packages/Source-and-Config-File-Transformations.md @@ -17,7 +17,7 @@ ms.reviewer: # Transforming source code and configuration files -For projects using `packages.config`, NuGet supports the ability to make transformations to source code and configuration files at package install and uninstall times. Transformations are not applied when a package is installed in a project using [PackageReference](../Consume-Packages/Package-References-in-Project-Files.md). +For projects using `packages.config`, NuGet supports the ability to make transformations to source code and configuration files at package install and uninstall times. Transformations are not applied when a package is installed in a project using [PackageReference](../consume-packages/Package-References-in-Project-Files.md). A **source code transformation** applies one-way token replacement to files in the package's `content` folder when the package is installed, where tokens refer to Visual Studio [project properties](/dotnet/api/vslangproj.projectproperties?view=visualstudiosdk-2017&viewFallbackFrom=netframework-4.7). This allows you to insert a file into the project's namespace, or to customize code that would typically go into `global.asax` in an ASP.NET project. diff --git a/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md b/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md index c6efc647b..d3e28156c 100644 --- a/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md +++ b/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md @@ -67,7 +67,7 @@ If you have architecture-specific assemblies, that is, separate assemblies that \native \lib\uap10.0 -See [Create UWP Packages](../Guides/Create-UWP-Packages.md) for an example of referencing these files in the `.nuspec` manifest. +See [Create UWP Packages](../guides/Create-UWP-Packages.md) for an example of referencing these files in the `.nuspec` manifest. ## Matching assembly versions and the target framework in a project diff --git a/docs/Guides/Create-UWP-Packages.md b/docs/Guides/Create-UWP-Packages.md index 3aa8f8972..c3d4a4f8a 100644 --- a/docs/Guides/Create-UWP-Packages.md +++ b/docs/Guides/Create-UWP-Packages.md @@ -3,7 +3,7 @@ title: Create NuGet Packages for the Universal Windows Platform | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 07/17/2017 +ms.date: 03/21/2017 ms.topic: get-started-article ms.prod: nuget ms.technology: null @@ -18,23 +18,15 @@ ms.reviewer: The [Universal Windows Platform (UWP)](https://developer.microsoft.com/windows) provides a common app platform for every device that runs Windows 10. Within this model, UWP apps can call both the WinRT APIs that are common to all devices, and also APIs (including Win32 and .NET) that are specific to the device family on which the app is running. -In this walkthrough you'll create a NuGet package with a native UWP component (including a XAML control) that can be used in both Managed and Native projects. - -1. [Pre-requisites](#pre-requisites) -1. [Create a UWP Windows Runtime Component](#create-a-uwp-windows-runtime-component) -1. [Create and update the .nuspec file](#create-and-update-the-nuspec-file) -1. [Package the component](#package-the-component) -1. [Related topics](#related-topics) +In this walkthrough you create a NuGet package with a native UWP component (including a XAML control) that can be used in both Managed and Native projects. ## Pre-requisites -1. Visual Studio 2017 or Visual Studio 2015. Install the Community edition for free from [visualstudio.com](https://www.visualstudio.com/); you can use the Professional and Enterprise editions as well. -1. NuGet CLI. Download the latest version of nuget.exe from [nuget.org/downloads](https://nuget.org/downloads), saving it to a location of your choice. Then add that location to your PATH environment variable if it isn't already. +1. Visual Studio 2017 or Visual Studio 2015. Install the 2017 Community edition for free from [visualstudio.com](https://www.visualstudio.com/); you can use the Professional and Enterprise editions as well. -> [!Note] -> nuget.exe is the CLI tool itself, not an installer, so be sure to save the downloaded file from your browser instead of running it. +1. NuGet CLI. Download the latest version of `nuget.exe` from [nuget.org/downloads](https://nuget.org/downloads), saving it to a location of your choice (the download is the `.exe` directly). Then add that location to your PATH environment variable if it isn't already. -## Create a UWP Windows Runtime Component +## Create a UWP Windows Runtime component 1. In Visual Studio, choose **File > New > Project**, expand the **Visual C++ > Windows > Universal** node, select the **Windows Runtime Component (Universal Windows)** template, change the name to ImageEnhancer, and click OK. Accept the default values for Target Version and Minimum Version when prompted. @@ -55,7 +47,7 @@ In this walkthrough you'll create a NuGet package with a native UWP component (i 1. In the Batch Build dialog, and click **Build** to verify the project and create the output files that you'll need for the NuGet package. > [!Note] -> In this walkthrough you'll use the Debug artifacts for the package. For non-debug package, check the Release options in the Batch Build dialog instead, and refer to the resulting Release folders in the steps that follow. +> In this walkthrough you use the Debug artifacts for the package. For non-debug package, check the Release options in the Batch Build dialog instead, and refer to the resulting Release folders in the steps that follow. ## Create and update the .nuspec file @@ -246,7 +238,7 @@ With the completed `.nuspec` referencing all the files you need to include in th nuget pack ImageEnhancer.nuspec ``` -This will generate `ImageEnhancer.YOUR_NAME.1.0.0.nupkg`. Opening this file in a tool like the [NuGet Package Explorer](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer) and expanding all the nodes, you'll see the following contents: +This generates `ImageEnhancer.YOUR_NAME.1.0.0.nupkg`. Opening this file in a tool like the [NuGet Package Explorer](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer) and expanding all the nodes, you'll see the following contents: ![NuGet Package Explorer showing the ImageEnhancer package](media/UWP-PackageExplorer.png) diff --git a/docs/Policies/NuGet-FAQ.md b/docs/Policies/NuGet-FAQ.md index 7ca129f40..8e515e2a1 100644 --- a/docs/Policies/NuGet-FAQ.md +++ b/docs/Policies/NuGet-FAQ.md @@ -32,7 +32,7 @@ A [graphical client](https://github.com/mrward/monodevelop-nuget-addin) is avail The primary source for learning about a package is its listing page on nuget.org (or another private feed). Each package page on nuget.org includes a description of the package, its version history, and usage statistics. The **Info** section on the package page also contains a link to the project's web site where you typically find many examples and other documentation to help you learn how the package is used. -For more information, see [Finding and choosing packages](../Consume-Packages/Finding-and-Choosing-Packages.md). +For more information, see [Finding and choosing packages](../consume-packages/Finding-and-Choosing-Packages.md). ## NuGet in Visual Studio 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 new file mode 100644 index 000000000..1dcf96468 --- /dev/null +++ b/docs/Quickstart/create-and-publish-a-package-using-the-dotnet-cli.md @@ -0,0 +1,105 @@ +--- +title: Introductory Guide to Creating and Publishing a NuGet Package using the dotnet CLI | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 01/24/2018 +ms.topic: get-started-article +ms.prod: nuget +ms.technology: null +description: A walkthrough tutorial on creating and publishing a NuGet package using the .NET Core CLI, dotnet. +keywords: NuGet package creation, NuGet package publishing, NuGet tutorial, dotnet publish NuGet package +ms.reviewer: +- karann-msft +- unniravindranathan +--- + +# Create and publish a package + +It's a simple process to create a NuGet package from a .NET Class Library and publish it to nuget.org using the `dotnet` command-line interface (CLI). + +## Pre-requisites + +1. Install the [.NET Core SDK](https://www.microsoft.com/net/download/), which includes the `dotnet` CLI. + +1. [Register for a free account on nuget.org](https://www.nuget.org/users/account/LogOn?returnUrl=%2F) if you don't have one already. Creating a new account sends a confirmation email. You must confirm the account before you can upload a package. + +## Create a class library project + +You can use an existing .NET Class Library project for the code you want to package, or create a simple one as follows: + +1. Create a folder called `AppLogger` and change into it. + +1. Create the project using `dotnet new classlib`, which uses the name of the current folder for the project. + +## Add package metadata to the project file + +Every NuGet package needs a manifest that describes the package's contents and dependencies. In a final package, the manifest is a `.nuspec` file that is generated from the NuGet metadata properties that you include in the project file. + +1. Open your project file (`.csproj`) and add the following minimal properties inside the exiting `` tag, changing the values as appropriate: + + ```xml + AppLogger + 1.0.0 + your_name + your_company + ``` + + > [!Important] + > Give the package an identifier that's unique across nuget.org or whatever host you're using. For this walkthrough we recommend including "Sample" or "Test" in the name as the later publishing step does make the package publicly visible (though it's unlikely anyone will actually use it). + +1. Add any optional properties described on [NuGet metadata properties](/dotnet/core/tools/csproj#nuget-metadata-properties). + + > [!Note] + > For packages built for public consumption, pay special attention to the **PackageTags** property, as tags help others find your package and understand what it does. + +## Run the pack command + +To build a NuGet package (a `.nupkg` file) from the project, run the `dotnet pack` command: + +```cli +# Uses the project file in the current folder by default +dotnet pack +``` + +The output will show the path to the `.nupkg` file: + +```output +Microsoft (R) Build Engine version 15.5.180.51428 for .NET Core +Copyright (C) Microsoft Corporation. All rights reserved. + + Restore completed in 29.91 ms for D:\proj\AppLoggerNet\AppLogger\AppLogger.csproj. + AppLogger -> D:\proj\AppLoggerNet\AppLogger\bin\Debug\netstandard2.0\AppLogger.dll + Successfully created package 'D:\proj\AppLoggerNet\AppLogger\bin\Debug\AppLogger.1.0.0.nupkg'. +``` + +## Publish the package + +Once you have a `.nupkg` file, you publish it to nuget.org using the `dotnet nuget push` command along with an API key acquired from nuget.org. + +[!INCLUDE[publish-notes](includes/publish-notes.md)] + +### Acquire your API key + +[!INCLUDE[publish-api-key](includes/publish-api-key.md)] + +### Publish with dotnet nuget push + +[!INCLUDE[publish-dotnet](includes/publish-dotnet.md)] + +### Publish errors + +[!INCLUDE[publish-errors](includes/publish-errors.md)] + + +### Manage the published package + +[!INCLUDE[publish-manage](includes/publish-manage.md)] + +## Related topics + +- [Create a Package](../create-packages/creating-a-package.md) +- [Publish a Package](../create-packages/publish-a-package.md) +- [Support multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) +- [Package versioning](../reference/package-versioning.md) +- [Creating localized packages](../create-packages/creating-localized-packages.md) diff --git a/docs/Quickstart/create-and-publish-a-package-using-visual-studio.md b/docs/Quickstart/create-and-publish-a-package-using-visual-studio.md new file mode 100644 index 000000000..2e54ca129 --- /dev/null +++ b/docs/Quickstart/create-and-publish-a-package-using-visual-studio.md @@ -0,0 +1,129 @@ +--- +title: Introductory Guide to Creating and Publishing a NuGet Package using Visual Studio | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 01/24/2018 +ms.topic: get-started-article +ms.prod: nuget +ms.technology: null +description: A walkthrough tutorial on creating and publishing a NuGet package using Visual Studio 2017. +keywords: NuGet package creation, NuGet package publishing, NuGet tutorial, Visual Studio create NuGet package +ms.reviewer: +- karann-msft +- unniravindranathan +--- + +# Create and publish a package using Visual Studio + +It's a simple process to create a NuGet package from a .NET Class Library in Visual Studio, and then publish it to nuget.org using a CLI tool. + +## Pre-requisites + +1. Install any edition of Visual Studio 2017 from [visualstudio.com](https://www.visualstudio.com/) with any .NET-related workload. Visual Studio 2017 automatically includes NuGet capabilities when a .NET workload is installed. + +1. Install the `nuget.exe` CLI by downloading it from [nuget.org](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe), saving that `.exe` file to a suitable folder, and adding that folder to your PATH environment variable. + + Alternately, if you have the [.NET Core SDK](https://www.microsoft.com/net/download/) installed, you can use the `dotnet` CLI. + +1. [Register for a free account on nuget.org](https://www.nuget.org/users/account/LogOn?returnUrl=%2F) if you don't have one already. Creating a new account sends a confirmation email. You must confirm the account before you can upload a package. + +## Create a class library project + +You can use an existing .NET Class Library project for the code you want to package, or create a simple one as follows: + +1. In Visual Studio, choose **File > New > Project**, expand the **Visual C# > .NET Standard** node, select the "Class Library (.NET Standard)" template, name the project AppLogger, and click **OK**. + +1. Right-click on the resulting project file and select **Build** to make sure the project was created properly. The DLL is found within the Debug folder (or Release if you build that configuration instead). + +Within a real NuGet package, of course, you implement many useful features with which others can build applications. For this walkthrough, however, you won't write any additional code because a class library from the template is sufficient to create a package. + +> [!Tip] +> Unless you have a reason to choose otherwise, .NET Standard is the preferred target for NuGet packages, as it provides compatibility with the widest range of consuming projects. + +## Configure package properties + +1. Select the **Project > Properties** menu command, then select the **Package** tab: + + ![NuGet package properties in a Visual Studio project](media/qs_create-vs-01-package-properties.png) + + > [!Note] + > For packages built for public consumption, pay special attention to the **Tags** property, as tags help others find your package and understand what it does. + +1. Give your package a unique identifier and fill out any other desired properties. For a description of the different properties, see [.nuspec file reference](../schema/nuspec.md). All of the properties here go into the `.nuspec` manifest that Visual Studio creates for the project. + + > [!Important] + > You must give the package an identifier that's unique across nuget.org or whatever host you're using. For this walkthrough we recommend including "Sample" or "Test" in the name as the later publishing step does make the package publicly visible (though it's unlikely anyone will actually use it). + > + > If you attempt to publish a package with a name that already exists, you'll see an error. + + +## Run the pack command + +1. Right click the project in **Solution Explorer** and select the **Pack** command: + + ![NuGet pack command on the Visual Studio project context menu](media/qs_create-vs-02-pack-command.png) + +1. Visual Studio builds the project and creates the `.nupkg` file. Examine the **Output** window for details (similar to the following), which contains the path to the package file: + + ```output + 1>------ Build started: Project: AppLogger, Configuration: Debug Any CPU ------ + 1>AppLogger -> d:\proj\AppLogger\AppLogger\bin\Debug\netstandard2.0\AppLogger.dll + 1>Successfully created package 'd:\proj\AppLogger\AppLogger\bin\Debug\AppLogger.1.0.0.nupkg'. + ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== + ``` + +## Publish the package + +Once you have a `.nupkg` file, you publish it to nuget.org using either the `nuget.exe` CLI or the `dotnet.exe` CLI along with an API key acquired from nuget.org. + +[!INCLUDE[publish-notes](includes/publish-notes.md)] + +### Acquire your API key + +[!INCLUDE[publish-api-key](includes/publish-api-key.md)] + +### Publish with nuget push + +This step is an alternative to using `dotnet.exe`. + +1. Change to the folder containing the `.nupkg` file.. + +1. Run the following command, specifying your package name and replacing the key value with your API key: + + ```cli + nuget push AppLogger.1.0.0.nupkg qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 -Source https://api.nuget.org/v3/index.json + ``` + +1. nuget.exe displays the results of the publishing process: + + ```output + Pushing AppLogger.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'... + PUT https://www.nuget.org/api/v2/package/ + Created https://www.nuget.org/api/v2/package/ 6829ms + Your package was pushed. + ``` + +See [nuget push](../tools/cli-ref-push.md). + +### Publish with dotnet nuget push + +This step is an alternative to using `nuget.exe`. + +[!INCLUDE[publish-dotnet](includes/publish-dotnet.md)] + +### Publish errors + +[!INCLUDE[publish-errors](includes/publish-errors.md)] + +### Manage the published package + +[!INCLUDE[publish-manage](includes/publish-manage.md)] + +## Related topics + +- [Create a Package](../create-packages/creating-a-package.md) +- [Publish a Package](../create-packages/publish-a-package.md) +- [Support multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) +- [Package versioning](../reference/package-versioning.md) +- [Creating localized packages](../create-packages/creating-localized-packages.md) diff --git a/docs/Quickstart/includes/publish-api-key.md b/docs/Quickstart/includes/publish-api-key.md new file mode 100644 index 000000000..6bb780965 --- /dev/null +++ b/docs/Quickstart/includes/publish-api-key.md @@ -0,0 +1,11 @@ +1. [Sign into your nuget.org account](https://www.nuget.org/users/account/LogOn?returnUrl=%2F) or create an account if you don't have one already. + +1. Select your user name (on the upper right), then select **API Keys**. + +1. Select **Create**, provide a name for your key, select **Select Scopes > Push**Under **API Key**, enter * for **Glob pattern**, then select **Create**. + +1. Once the key is created, select **Copy** to retrieve the access key you'll need in the CLI: + + ![Copying the API key to the clipboard](../media/QS_Create-02-APIKey.png) + +1. **Important**: Save your key in a secure location because you cannot copy the key again later on. If you return to the API key page, you'll need to regenerate the key to copy it. You can also remove the API key if you no longer want to push packages via the CLI. \ No newline at end of file diff --git a/docs/Quickstart/includes/publish-dotnet.md b/docs/Quickstart/includes/publish-dotnet.md new file mode 100644 index 000000000..060737375 --- /dev/null +++ b/docs/Quickstart/includes/publish-dotnet.md @@ -0,0 +1,18 @@ +1. Change to the folder containing the `.nupkg` file. + +1. Run the following command, specifying your package name and replacing the key value with your API key: + + ```cli + dotnet nuget push AppLogger.1.0.0.nupkg qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 -s https://api.nuget.org/v3/index.json + ``` + +1. dotnet displays the results of the publishing process: + + ```output + info : Pushing AppLogger.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'... + info : PUT https://www.nuget.org/api/v2/package/ + info : Created https://www.nuget.org/api/v2/package/ 12620ms + info : Your package was pushed. + ``` + +See [dotnet nuget push](/dotnet/core/tools/dotnet-nuget-push). \ No newline at end of file diff --git a/docs/Quickstart/includes/publish-errors.md b/docs/Quickstart/includes/publish-errors.md new file mode 100644 index 000000000..91275e7f1 --- /dev/null +++ b/docs/Quickstart/includes/publish-errors.md @@ -0,0 +1,9 @@ +Errors from the `push` command typically indicate the problem. For example, you may have forgotten to update the version number in your project and are therefore trying to publish a package that already exists. + +You'll also see errors when trying to publish a package using an identifier that already exists on the host. The name "AppLogger", for example, already exists. In such a case, the `push` command gives the following error: + +```output +Response status code does not indicate success: 403 (The specified API key is invalid, has expired, or does not have permission to access the specified package.). +``` + +If you're using a valid API key that you just created, then this message indicates a naming conflict, which isn't entirely clear from the "permission" part of the error. Change the package identifier, rebuild the project, recreate the `.nupkg` file, and retry the `push` command. \ No newline at end of file diff --git a/docs/Quickstart/includes/publish-manage.md b/docs/Quickstart/includes/publish-manage.md new file mode 100644 index 000000000..513759d14 --- /dev/null +++ b/docs/Quickstart/includes/publish-manage.md @@ -0,0 +1,17 @@ +From your profile on nuget.org, select **Manage Packages** to see the one you just published. You also receive a confirmation email. Note that it might take a while for your package to be indexed and appear in search results where others can find it. During that time your package page shows the message below: + + ![This package has not been indexed yet. It will appear in search results and will be available for install/restore after indexing is complete.](../media/QS_Create-03-NotIndexed.png) + +And that's it! You've just published your first NuGet package to nuget.org that other developers can use in their own projects. + +If in this walkthrough you created a package that isn't actually useful (such as a package created with an empty class library), you should *unlist* the package to hide it from search results: + +1. On nuget.org, select your user name (upper right of the page), then select **Manage Packages**. + +1. Locate the package you want to unlist under **Published** and select the trash can icon on the right: + + ![Trash can icon shown for a package listing on nuget.org](../media/qs_create-vs-03-trash-can.png) + +1. On the subsequent page, clear the box labeled **List (package-name) in search results** and select **Save**: + + ![Clearing the List checkbox for a package on nuget.org](../media/qs_create-vs-04-unlist.png) \ No newline at end of file diff --git a/docs/Quickstart/includes/publish-notes.md b/docs/Quickstart/includes/publish-notes.md new file mode 100644 index 000000000..383e4df4b --- /dev/null +++ b/docs/Quickstart/includes/publish-notes.md @@ -0,0 +1,4 @@ +> [!Note] +> **Virus scanning**: All packages uploaded to nuget.org are scanned for viruses and rejected if any viruses are found. All packages listed on nuget.org are also scanned periodically. +> +> Packages published to nuget.org are also publicly visible to other developers unless you unlist them. To host packages privately, see [Hosting packages](../../hosting-packages/overview.md). \ No newline at end of file diff --git a/docs/Quickstart/install-and-use-a-package-in-visual-studio.md b/docs/Quickstart/install-and-use-a-package-in-visual-studio.md new file mode 100644 index 000000000..6eef07d6c --- /dev/null +++ b/docs/Quickstart/install-and-use-a-package-in-visual-studio.md @@ -0,0 +1,113 @@ +--- +title: Introductory Guide to Using NuGet Packages from within Visual Studio | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 01/23/2018 +ms.topic: get-started-article +ms.prod: nuget +ms.technology: null +description: A walkthrough tutorial on the process of installing and using a NuGet package in a Visual Studio project. +keywords: install NuGet, NuGet package consumption, installing NuGet packages, NuGet package references, using NuGet packages +ms.reviewer: +- karann-msft +- unniravindranathan +--- + +# Install and use a package in Visual Studio + +NuGet packages contain reusable code that other developers make available to you for use in your projects. See [What is NuGet?](../What-is-NuGet.md) for background. Packages are installed into a Visual Studio project using the Package Manager UI, as described in this article for the popular [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) package and a Universal Windows Platform (UWP) project. You can also use `Install-Package ` in the [Package Manager Console](../tools/Package-Manager-Console.md). + +Once installed, refer to the package in code with `using ` where \ is specific to the package you're using. Once the reference is made, you can call the package through its API. + +> [!Tip] +> **Start with nuget.org**: Browsing nuget.org is how .NET developers typically find components they can reuse in their own applications. You can search nuget.org directly or find and install packages within Visual Studio as shown in this article. + +## Pre-requisites + +- Visual Studio 2017 with the Universal Windows Platform development workload, or +- Visual Studio 2015 Update 3 with Tools for Universal Windows Apps. + +You can install the 2017 Community edition for free from [visualstudio.com](https://www.visualstudio.com/) or use the Professional or Enterprise editions. + +## Create a project + +NuGet packages can be installed into a .NET project of some kind. For this walkthrough, you use a simple Universal Windows (UWP) app. Create a project in Visual Studio using **File > New Project...** and selecting the **Windows Universal > Blank App (Universal Windows)**. Accept the default values for Target Version and Minimum Version when prompted. + +## Add the Newtonsoft.Json NuGet package + +1. In Solution Explorer, right-click **References** and choose **Manage NuGet Packages**. + + ![Manage NuGet Packages command for project References](media/QS_Use-02-ManageNuGetPackages.png) + +1. Choose "nuget.org" as the **Package source**, select the **Browse** tab, search for **Newtonsoft.Json**, select that package in the list, and select **Install**: + + ![Locating Newtonsoft.Json package](media/QS_Use-03-NewtonsoftJson.png) + +1. Accept any license prompts. + +1. (Visual Studio 2017) If prompted to select a package management format, select **PackageReference in project file**: + + ![Selecting a package reference format](media/QS_Use-03b-SelectFormat.png) + +1. If prompted to review changes, select **OK**. + +1. Right-click the solution in Solution Explorer and select **Build Solution**. This command restores any NuGet packages listed under **References**. For more details, see [Package Restore](../consume-packages/package-restore.md). + +## Use the Newtonsoft.Json API in the app + +With the Newtonsoft.Json package in the project, you can call its `JsonConvert.SerializeObject` method to convert an object to a human-readable string. + +1. Open `MainPage.xaml` and replace the existing `Grid` element with the following: + + ```xaml + + +
  • - +
    diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index 0bd3f2adf..4e247fd1e 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -26,7 +26,7 @@ To work with NuGet, as a package consumer or creator, you can use [cross-platfor | [nuget.exe](#nugetexe-cli) | Provides all NuGet capabilities on Windows and most features running under [Mono](http://www.mono-project.com/docs/getting-started/install/) on Mac and Linux. | [nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) | | [Visual Studio](#visual-studio) | Provides NuGet capabilities through the Package Manager UI and Package Manager Console. | [Visual Studio 2017](https://www.visualstudio.com/downloads/) | -The [MSBuild CLI](schema/msbuild-targets.md) also provides the ability to restore and create packages, which is primarily useful on build servers. MSBuild is not otherwise a general-purpose tool for working with NuGet. +The [MSBuild CLI](reference/msbuild-targets.md) also provides the ability to restore and create packages, which is primarily useful on build servers. MSBuild is not otherwise a general-purpose tool for working with NuGet. ## CLI tools From 88bf1045d56eeaff14cb722a2c82501228252b7e Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 30 Jan 2018 11:39:14 -0800 Subject: [PATCH 0503/2943] Fix links, breadcrumbs, and update readme --- README.md | 2 ++ docs/Tools/cli-ref-config.md | 4 ++-- docs/_breadcrumb/toc.yml | 14 +++++++------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 407eda42a..359528822 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,8 @@ NuGet follows the [.NET Foundation Contributors Code of Conduct](https://github. - The docs/index.md file defines the landing (hub) page as it appears on docs.microsoft.com/nuget. - The docs/TOC.md file defines the left-hand navigation panel that appears when you navigate to any page other than the hub page. - Images are contained within media folders within each subfolder. +- The docs/.openpublishing.redirection.json file contains redirects for old filenames; if you rename a file, create an entry here that maps the old to the new. +- The docs/_breadcrumb/toc.yml file defines the breadcrumbs that appear on the site and their target pages. Be mindful of this if you make changes to filenames or placement of articles. ## Contribution workflow diff --git a/docs/Tools/cli-ref-config.md b/docs/Tools/cli-ref-config.md index ea05684f9..fea8d85a1 100644 --- a/docs/Tools/cli-ref-config.md +++ b/docs/Tools/cli-ref-config.md @@ -18,7 +18,7 @@ ms.reviewer: **Applies to:** all • **Supported versions**: all -Gets or sets NuGet configuration values. For additional usage, see [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md). For details on allowable key names, refer to the [NuGet config file reference](../refrence/nuget-config-file.md). +Gets or sets NuGet configuration values. For additional usage, see [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md). For details on allowable key names, refer to the [NuGet config file reference](../reference/nuget-config-file.md). ## Usage @@ -29,7 +29,7 @@ nuget config -AsPath [options] where `` and `` specify a key-value pair to be set in the configuration. You can specify as many pairs as desired. To remove a value, specify the name and the `=` sign but no value. -For allowable key names, see the [NuGet config file reference](../refrence/nuget-config-file.md). +For allowable key names, see the [NuGet config file reference](../reference/nuget-config-file.md). In NuGet 3.4+, `` can use [environment variables](cli-ref-environment-variables.md). diff --git a/docs/_breadcrumb/toc.yml b/docs/_breadcrumb/toc.yml index e9617e45e..b6992a03e 100644 --- a/docs/_breadcrumb/toc.yml +++ b/docs/_breadcrumb/toc.yml @@ -8,17 +8,17 @@ items: - name: Quickstart tocHref: /nuget/quickstart/ - topicHref: /nuget/quickstart/create-and-publish-a-package + topicHref: /nuget/quickstart/install-and-use-a-package-using-the-dotnet-cli - name: Guides tocHref: /nuget/guides/ - topicHref: /nuget/guides/install-nuget - - name: Create Packages + topicHref: /nuget/guides/create-net-standard-packages-vs2017 + - name: Create packages tocHref: /nuget/create-packages/ topicHref: /nuget/create-packages/overview-and-workflow - - name: Consume Packages + - name: Consume packages tocHref: /nuget/consume-packages/ topicHref: /nuget/consume-packages/overview-and-workflow - - name: Hosting Packages + - name: Hosting packages tocHref: /nuget/hosting-packages/ topicHref: /nuget/hosting-packages/overview - name: Tools @@ -30,12 +30,12 @@ - name: API tocHref: /nuget/api/ topicHref: /nuget/api/overview - - name: Visual Studio Extensibility + - name: Visual Studio extensibility tocHref: /nuget/visual-studio-extensibility/ topicHref: /nuget/visual-studio-extensibility/nuget-api-in-visual-studio - name: Policies tocHref: /nuget/policies/ topicHref: /nuget/policies/nuget-faq - - name: Release Notes + - name: Release notes tocHref: /nuget/release-notes/ topicHref: /nuget/release-notes/index \ No newline at end of file From 2f95bbe1ba009b2409b0614ae527a644ec0b90ac Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 30 Jan 2018 11:42:13 -0800 Subject: [PATCH 0504/2943] Force column widths --- docs/consume-packages/ways-to-install-a-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/consume-packages/ways-to-install-a-package.md b/docs/consume-packages/ways-to-install-a-package.md index e7bc48d2a..4bebcddc2 100644 --- a/docs/consume-packages/ways-to-install-a-package.md +++ b/docs/consume-packages/ways-to-install-a-package.md @@ -18,7 +18,7 @@ ms.reviewer: NuGet packages are downloaded and installed using any of the following methods (see [Install NuGet client tools](../install-nuget-client-tools.md) if you don't have these installed already): -| Method | Description | References | +| Method                     | Description | References                     | | --- | --- | --- | | dotnet.exe CLI: `dotnet install ` | Downloads the package identified by \, expands its contents into a folder in the current directory, and adds a reference to the project file. Dependencies are also downloaded and expanded. | [Install and use a package (dotnet CLI)](../quickstart/install-and-use-a-package-using-the-dotnet-cli.md)
    [dotnet commands](../tools/dotnet-commands.md) | | Package Manager UI (Visual Studio) | Provides a UI through which you can browse, select, and install packages into a project. Adds references to installed packages to the project file. | [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)
    [Package Manager UI reference](../tools/package-manager-ui.md) | From fb2b7ac4f51f6e88a78c96b7843be4452e7e57b3 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 30 Jan 2018 11:46:47 -0800 Subject: [PATCH 0505/2943] Remove unneeded line --- docs/Quickstart/install-and-use-a-package-in-visual-studio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Quickstart/install-and-use-a-package-in-visual-studio.md b/docs/Quickstart/install-and-use-a-package-in-visual-studio.md index 081f18aa0..a49b74ed4 100644 --- a/docs/Quickstart/install-and-use-a-package-in-visual-studio.md +++ b/docs/Quickstart/install-and-use-a-package-in-visual-studio.md @@ -16,7 +16,7 @@ ms.reviewer: # Install and use a package in Visual Studio -NuGet packages contain reusable code that other developers make available to you for use in your projects. See [What is NuGet?](../What-is-NuGet.md) for background. Packages are installed into a Visual Studio project using the Package Manager UI or the Package Manager Console, as described in this article for the popular [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) package and a Universal Windows Platform (UWP) project. You can also use `Install-Package ` in the [Package Manager Console](../tools/package-manager-console.md). +NuGet packages contain reusable code that other developers make available to you for use in your projects. See [What is NuGet?](../What-is-NuGet.md) for background. Packages are installed into a Visual Studio project using the Package Manager UI or the Package Manager Console, as described in this article for the popular [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) package and a Universal Windows Platform (UWP) project. Once installed, refer to the package in code with `using ` where \ is specific to the package you're using. Once the reference is made, you can call the package through its API. From a5743b799ad475a1bbd628f4a92b9eb7acbc3da4 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 30 Jan 2018 11:52:50 -0800 Subject: [PATCH 0506/2943] Columm widths --- docs/consume-packages/ways-to-install-a-package.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/consume-packages/ways-to-install-a-package.md b/docs/consume-packages/ways-to-install-a-package.md index 4bebcddc2..fe95beb8d 100644 --- a/docs/consume-packages/ways-to-install-a-package.md +++ b/docs/consume-packages/ways-to-install-a-package.md @@ -18,11 +18,11 @@ ms.reviewer: NuGet packages are downloaded and installed using any of the following methods (see [Install NuGet client tools](../install-nuget-client-tools.md) if you don't have these installed already): -| Method                     | Description | References                     | +| Method                                       | Description | References                                       | | --- | --- | --- | -| dotnet.exe CLI: `dotnet install ` | Downloads the package identified by \, expands its contents into a folder in the current directory, and adds a reference to the project file. Dependencies are also downloaded and expanded. | [Install and use a package (dotnet CLI)](../quickstart/install-and-use-a-package-using-the-dotnet-cli.md)
    [dotnet commands](../tools/dotnet-commands.md) | -| Package Manager UI (Visual Studio) | Provides a UI through which you can browse, select, and install packages into a project. Adds references to installed packages to the project file. | [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)
    [Package Manager UI reference](../tools/package-manager-ui.md) | -| Package Manager Console (Visual Studio): `Install-Package ` | Downloads and installs the package identified by \ into a specified project in the solution, then add a reference to the project file. | [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)
    [Package Manager Console Guide](../tools/package-manager-console.md) | +| dotnet.exe CLI: `dotnet install ` | Downloads the package identified by \, expands its contents into a folder in the current directory, and adds a reference to the project file. Dependencies are also downloaded and expanded. | [Install and use a package (dotnet CLI)](../quickstart/install-and-use-a-package-using-the-dotnet-cli.md)

    [dotnet commands](../tools/dotnet-commands.md) | +| Package Manager UI (Visual Studio) | Provides a UI through which you can browse, select, and install packages into a project. Adds references to installed packages to the project file. | [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)

    [Package Manager UI reference](../tools/package-manager-ui.md) | +| Package Manager Console (Visual Studio): `Install-Package ` | Downloads and installs the package identified by \ into a specified project in the solution, then add a reference to the project file. | [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)

    [Package Manager Console guide](../tools/package-manager-console.md) | | nuget.exe CLI: `nuget install ` | Downloads the package identified by \ and expands its contents into a folder in the current directory; can also download all packages listed in a `packages.config` file. Makes no changes to project files. Dependencies are also downloaded and expanded. | [install command](../tools/cli-ref-install.md) | ## General install process From cd2d0488fdc0c8f0aead70d64bc091693865badd Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 30 Jan 2018 11:59:18 -0800 Subject: [PATCH 0507/2943] Columns width tweak --- docs/consume-packages/ways-to-install-a-package.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/consume-packages/ways-to-install-a-package.md b/docs/consume-packages/ways-to-install-a-package.md index fe95beb8d..4fba79596 100644 --- a/docs/consume-packages/ways-to-install-a-package.md +++ b/docs/consume-packages/ways-to-install-a-package.md @@ -18,12 +18,12 @@ ms.reviewer: NuGet packages are downloaded and installed using any of the following methods (see [Install NuGet client tools](../install-nuget-client-tools.md) if you don't have these installed already): -| Method                                       | Description | References                                       | +| Method                                       | Description | References                                                  | | --- | --- | --- | -| dotnet.exe CLI: `dotnet install ` | Downloads the package identified by \, expands its contents into a folder in the current directory, and adds a reference to the project file. Dependencies are also downloaded and expanded. | [Install and use a package (dotnet CLI)](../quickstart/install-and-use-a-package-using-the-dotnet-cli.md)

    [dotnet commands](../tools/dotnet-commands.md) | +| dotnet.exe CLI
    `dotnet install ` | Downloads the package identified by \, expands its contents into a folder in the current directory, and adds a reference to the project file. Dependencies are also downloaded and expanded. | [Install and use a package (dotnet CLI)](../quickstart/install-and-use-a-package-using-the-dotnet-cli.md)

    [dotnet commands](../tools/dotnet-commands.md) | | Package Manager UI (Visual Studio) | Provides a UI through which you can browse, select, and install packages into a project. Adds references to installed packages to the project file. | [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)

    [Package Manager UI reference](../tools/package-manager-ui.md) | -| Package Manager Console (Visual Studio): `Install-Package ` | Downloads and installs the package identified by \ into a specified project in the solution, then add a reference to the project file. | [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)

    [Package Manager Console guide](../tools/package-manager-console.md) | -| nuget.exe CLI: `nuget install ` | Downloads the package identified by \ and expands its contents into a folder in the current directory; can also download all packages listed in a `packages.config` file. Makes no changes to project files. Dependencies are also downloaded and expanded. | [install command](../tools/cli-ref-install.md) | +| Package Manager Console (Visual Studio)
    `Install-Package ` | Downloads and installs the package identified by \ into a specified project in the solution, then add a reference to the project file. | [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)

    [Package Manager Console guide](../tools/package-manager-console.md) | +| nuget.exe CLI
    `nuget install ` | Downloads the package identified by \ and expands its contents into a folder in the current directory; can also download all packages listed in a `packages.config` file. Makes no changes to project files. Dependencies are also downloaded and expanded. | [install command](../tools/cli-ref-install.md) | ## General install process From 28074b80aa1daf8f4421630016dbf260e7fb61cb Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 30 Jan 2018 12:07:16 -0800 Subject: [PATCH 0508/2943] Tweak --- docs/consume-packages/ways-to-install-a-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/consume-packages/ways-to-install-a-package.md b/docs/consume-packages/ways-to-install-a-package.md index 4fba79596..72e8065ad 100644 --- a/docs/consume-packages/ways-to-install-a-package.md +++ b/docs/consume-packages/ways-to-install-a-package.md @@ -18,7 +18,7 @@ ms.reviewer: NuGet packages are downloaded and installed using any of the following methods (see [Install NuGet client tools](../install-nuget-client-tools.md) if you don't have these installed already): -| Method                                       | Description | References                                                  | +| Method                                             | Description | References                                                  | | --- | --- | --- | | dotnet.exe CLI
    `dotnet install ` | Downloads the package identified by \, expands its contents into a folder in the current directory, and adds a reference to the project file. Dependencies are also downloaded and expanded. | [Install and use a package (dotnet CLI)](../quickstart/install-and-use-a-package-using-the-dotnet-cli.md)

    [dotnet commands](../tools/dotnet-commands.md) | | Package Manager UI (Visual Studio) | Provides a UI through which you can browse, select, and install packages into a project. Adds references to installed packages to the project file. | [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)

    [Package Manager UI reference](../tools/package-manager-ui.md) | From 52aba78b4f29894b67af2e1c453ecc071c5e8cdd Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 30 Jan 2018 12:10:25 -0800 Subject: [PATCH 0509/2943] Simplify table --- docs/consume-packages/ways-to-install-a-package.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/consume-packages/ways-to-install-a-package.md b/docs/consume-packages/ways-to-install-a-package.md index 72e8065ad..6d9e63468 100644 --- a/docs/consume-packages/ways-to-install-a-package.md +++ b/docs/consume-packages/ways-to-install-a-package.md @@ -18,12 +18,12 @@ ms.reviewer: NuGet packages are downloaded and installed using any of the following methods (see [Install NuGet client tools](../install-nuget-client-tools.md) if you don't have these installed already): -| Method                                             | Description | References                                                  | -| --- | --- | --- | -| dotnet.exe CLI
    `dotnet install ` | Downloads the package identified by \, expands its contents into a folder in the current directory, and adds a reference to the project file. Dependencies are also downloaded and expanded. | [Install and use a package (dotnet CLI)](../quickstart/install-and-use-a-package-using-the-dotnet-cli.md)

    [dotnet commands](../tools/dotnet-commands.md) | +| Method | Description | +| --- | --- | +| dotnet.exe CLI
    `dotnet install ` | Downloads the package identified by \, expands its contents into a folder in the current directory, and adds a reference to the project file. Dependencies are also downloaded and expanded.

    References:
    • [Install and use a package (dotnet CLI)](../quickstart/install-and-use-a-package-using-the-dotnet-cli.md)
    • [dotnet commands](../tools/dotnet-commands.md)
    | | Package Manager UI (Visual Studio) | Provides a UI through which you can browse, select, and install packages into a project. Adds references to installed packages to the project file. | [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)

    [Package Manager UI reference](../tools/package-manager-ui.md) | -| Package Manager Console (Visual Studio)
    `Install-Package ` | Downloads and installs the package identified by \ into a specified project in the solution, then add a reference to the project file. | [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)

    [Package Manager Console guide](../tools/package-manager-console.md) | -| nuget.exe CLI
    `nuget install ` | Downloads the package identified by \ and expands its contents into a folder in the current directory; can also download all packages listed in a `packages.config` file. Makes no changes to project files. Dependencies are also downloaded and expanded. | [install command](../tools/cli-ref-install.md) | +| Package Manager Console (Visual Studio)
    `Install-Package ` | Downloads and installs the package identified by \ into a specified project in the solution, then add a reference to the project file.

    • [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)
    • [Package Manager Console guide](../tools/package-manager-console.md)
    | +| nuget.exe CLI
    `nuget install ` | Downloads the package identified by \ and expands its contents into a folder in the current directory; can also download all packages listed in a `packages.config` file. Makes no changes to project files. Dependencies are also downloaded and expanded.

    See [install command](../tools/cli-ref-install.md).| ## General install process From 60d4c5c894a5a64671be48a120d2a33c166d9a58 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 30 Jan 2018 12:14:55 -0800 Subject: [PATCH 0510/2943] More on the table --- docs/consume-packages/ways-to-install-a-package.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/consume-packages/ways-to-install-a-package.md b/docs/consume-packages/ways-to-install-a-package.md index 6d9e63468..77415ddc9 100644 --- a/docs/consume-packages/ways-to-install-a-package.md +++ b/docs/consume-packages/ways-to-install-a-package.md @@ -18,12 +18,12 @@ ms.reviewer: NuGet packages are downloaded and installed using any of the following methods (see [Install NuGet client tools](../install-nuget-client-tools.md) if you don't have these installed already): -| Method | Description | +| Method                          | Description | | --- | --- | -| dotnet.exe CLI
    `dotnet install ` | Downloads the package identified by \, expands its contents into a folder in the current directory, and adds a reference to the project file. Dependencies are also downloaded and expanded.

    References:
    • [Install and use a package (dotnet CLI)](../quickstart/install-and-use-a-package-using-the-dotnet-cli.md)
    • [dotnet commands](../tools/dotnet-commands.md)
    | +| dotnet.exe CLI
    `dotnet install ` | Downloads the package identified by \, expands its contents into a folder in the current directory, and adds a reference to the project file. Dependencies are also downloaded and expanded.
    • [Install and use a package (dotnet CLI)](../quickstart/install-and-use-a-package-using-the-dotnet-cli.md)
    • [dotnet commands](../tools/dotnet-commands.md)
    | | Package Manager UI (Visual Studio) | Provides a UI through which you can browse, select, and install packages into a project. Adds references to installed packages to the project file. | [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)

    [Package Manager UI reference](../tools/package-manager-ui.md) | -| Package Manager Console (Visual Studio)
    `Install-Package ` | Downloads and installs the package identified by \ into a specified project in the solution, then add a reference to the project file.

    • [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)
    • [Package Manager Console guide](../tools/package-manager-console.md)
    | -| nuget.exe CLI
    `nuget install ` | Downloads the package identified by \ and expands its contents into a folder in the current directory; can also download all packages listed in a `packages.config` file. Makes no changes to project files. Dependencies are also downloaded and expanded.

    See [install command](../tools/cli-ref-install.md).| +| Package Manager Console (Visual Studio)
    `Install-Package ` | Downloads and installs the package identified by \ into a specified project in the solution, then add a reference to the project file.
    • [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)
    • [Package Manager Console guide](../tools/package-manager-console.md)
    | +| nuget.exe CLI
    `nuget install ` | Downloads the package identified by \ and expands its contents into a folder in the current directory; can also download all packages listed in a `packages.config` file. Makes no changes to project files. Dependencies are also downloaded and expanded.
    • See [install command](../tools/cli-ref-install.md)
    | ## General install process From adc25dbe2916ee747494999411c304e9e89cbb6b Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 30 Jan 2018 14:14:19 -0800 Subject: [PATCH 0511/2943] Fix VS UI in table --- docs/TOC.md | 20 +++++++++---------- docs/What-is-NuGet.md | 2 +- .../ways-to-install-a-package.md | 10 +++++----- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index b03ed71b5..4458c1a79 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -11,16 +11,6 @@ ## [Create UWP packages](guides/create-uwp-packages.md) ## [Creating UWP controls as NuGet packages](guides/create-uwp-controls.md) ## [Create packages for Xamarin](guides/create-packages-for-xamarin.md) -# Create packages -## [Overview and workflow](create-packages/overview-and-workflow.md) -## [Creating a package](create-packages/creating-a-package.md) -## [Supporting multiple target frameworks](create-packages/supporting-multiple-target-frameworks.md) -## [Source and config file transformations](create-packages/source-and-config-file-transformations.md) -## [Creating localized packages](create-packages/creating-localized-packages.md) -## [Prerelease packages](create-packages/prerelease-packages.md) -## [Native packages](create-packages/native-packages.md) -## [Symbol packages](create-packages/symbol-packages.md) -## [Publish a package](create-packages/publish-a-package.md) # Consume packages ## [Overview and workflow](consume-packages/overview-and-workflow.md) ## [Finding and choosing packages](consume-packages/finding-and-choosing-packages.md) @@ -33,6 +23,16 @@ ## [Configuring NuGet behavior](consume-packages/configuring-nuget-behavior.md) ## [Dependency resolution](consume-packages/dependency-resolution.md) ## [Package references in project files](consume-packages/package-references-in-project-files.md) +# Create packages +## [Overview and workflow](create-packages/overview-and-workflow.md) +## [Creating a package](create-packages/creating-a-package.md) +## [Supporting multiple target frameworks](create-packages/supporting-multiple-target-frameworks.md) +## [Source and config file transformations](create-packages/source-and-config-file-transformations.md) +## [Creating localized packages](create-packages/creating-localized-packages.md) +## [Prerelease packages](create-packages/prerelease-packages.md) +## [Native packages](create-packages/native-packages.md) +## [Symbol packages](create-packages/symbol-packages.md) +## [Publish a package](create-packages/publish-a-package.md) # Host packages ## [Overview](hosting-packages/overview.md) ## [Local feeds](hosting-packages/local-feeds.md) diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index c120789de..7af8dd937 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -80,7 +80,7 @@ NuGet instead maintains a simple reference list of the packages upon which a pro With only the reference list, NuGet can then reinstall—that is, *restore*—all of those packages from public and/or private hosts at any later time. When committing a project to source control, or sharing it in some other way, you include only the reference list and exclude any package binaries (see [Packages and source control](consume-packages/packages-and-source-control.md).) -The computer that receives a project, such as a build server obtaining a copy of the project as part of an automated deployment system, simply asks NuGet to restore dependencies whenever they're needed. Build systems like Visual Studio Team Services provide "NuGet restore" steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository), they can invoke a command like `nuget restore` (NuGet CLI), `dotnet restore` (dotnet CLI), or `Install-Package` (Package Manager Console) to obtain all the necessary a packages. Visual Studio, for its part, automatically restores packages when building a project. +The computer that receives a project, such as a build server obtaining a copy of the project as part of an automated deployment system, simply asks NuGet to restore dependencies whenever they're needed. Build systems like Visual Studio Team Services provide "NuGet restore" steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository), they can invoke a command like `nuget restore` (NuGet CLI), `dotnet restore` (dotnet CLI), or `Install-Package` (Package Manager Console) to obtain all the necessary packages. Visual Studio, for its part, automatically restores packages when building a project. Clearly, then, NuGet's primary role where developers are concerned is maintaining that reference list on behalf of your project and providing the means to efficiently restore (and update) those referenced packages. This list is maintained in one of two *package management formats*, as they're called: diff --git a/docs/consume-packages/ways-to-install-a-package.md b/docs/consume-packages/ways-to-install-a-package.md index 77415ddc9..e06dea271 100644 --- a/docs/consume-packages/ways-to-install-a-package.md +++ b/docs/consume-packages/ways-to-install-a-package.md @@ -18,12 +18,12 @@ ms.reviewer: NuGet packages are downloaded and installed using any of the following methods (see [Install NuGet client tools](../install-nuget-client-tools.md) if you don't have these installed already): -| Method                          | Description | +| Method                                 | Description | | --- | --- | -| dotnet.exe CLI
    `dotnet install ` | Downloads the package identified by \, expands its contents into a folder in the current directory, and adds a reference to the project file. Dependencies are also downloaded and expanded.
    • [Install and use a package (dotnet CLI)](../quickstart/install-and-use-a-package-using-the-dotnet-cli.md)
    • [dotnet commands](../tools/dotnet-commands.md)
    | -| Package Manager UI (Visual Studio) | Provides a UI through which you can browse, select, and install packages into a project. Adds references to installed packages to the project file. | [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)

    [Package Manager UI reference](../tools/package-manager-ui.md) | -| Package Manager Console (Visual Studio)
    `Install-Package ` | Downloads and installs the package identified by \ into a specified project in the solution, then add a reference to the project file.
    • [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)
    • [Package Manager Console guide](../tools/package-manager-console.md)
    | -| nuget.exe CLI
    `nuget install ` | Downloads the package identified by \ and expands its contents into a folder in the current directory; can also download all packages listed in a `packages.config` file. Makes no changes to project files. Dependencies are also downloaded and expanded.
    • See [install command](../tools/cli-ref-install.md)
    | +| dotnet.exe CLI
    `dotnet install ` | (All platforms) Downloads the package identified by \, expands its contents into a folder in the current directory, and adds a reference to the project file. Dependencies are also downloaded and expanded.
    • [Install and use a package (dotnet CLI)](../quickstart/install-and-use-a-package-using-the-dotnet-cli.md)
    • [dotnet commands](../tools/dotnet-commands.md)
    | +| Package Manager UI (Visual Studio) | (Windows and Mac) Provides a UI through which you can browse, select, and install packages into a project. Adds references to installed packages to the project file.
    • [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)
    • [Package Manager UI reference (Windows)](../tools/package-manager-ui.md)
    • [Including a NuGet package in your project (Mac)](/visualstudio/mac/nuget-walkthrough)
    | +| Package Manager Console (Visual Studio)
    `Install-Package ` | (Windows only) Downloads and installs the package identified by \ into a specified project in the solution, then add a reference to the project file.
    • [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)
    • [Package Manager Console guide](../tools/package-manager-console.md)
    | +| nuget.exe CLI
    `nuget install ` | (All platforms) Downloads the package identified by \ and expands its contents into a folder in the current directory; can also download all packages listed in a `packages.config` file. Makes no changes to project files. Dependencies are also downloaded and expanded.
    • See [install command](../tools/cli-ref-install.md)
    | ## General install process From f2c6615738227cf6f3b16867c9f33587b7aa96d7 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 30 Jan 2018 14:22:35 -0800 Subject: [PATCH 0512/2943] Once more with feeling --- docs/consume-packages/ways-to-install-a-package.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/consume-packages/ways-to-install-a-package.md b/docs/consume-packages/ways-to-install-a-package.md index e06dea271..ffb5a97a9 100644 --- a/docs/consume-packages/ways-to-install-a-package.md +++ b/docs/consume-packages/ways-to-install-a-package.md @@ -18,12 +18,12 @@ ms.reviewer: NuGet packages are downloaded and installed using any of the following methods (see [Install NuGet client tools](../install-nuget-client-tools.md) if you don't have these installed already): -| Method                                 | Description | +| Method | Description | | --- | --- | -| dotnet.exe CLI
    `dotnet install ` | (All platforms) Downloads the package identified by \, expands its contents into a folder in the current directory, and adds a reference to the project file. Dependencies are also downloaded and expanded.
    • [Install and use a package (dotnet CLI)](../quickstart/install-and-use-a-package-using-the-dotnet-cli.md)
    • [dotnet commands](../tools/dotnet-commands.md)
    | -| Package Manager UI (Visual Studio) | (Windows and Mac) Provides a UI through which you can browse, select, and install packages into a project. Adds references to installed packages to the project file.
    • [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)
    • [Package Manager UI reference (Windows)](../tools/package-manager-ui.md)
    • [Including a NuGet package in your project (Mac)](/visualstudio/mac/nuget-walkthrough)
    | -| Package Manager Console (Visual Studio)
    `Install-Package ` | (Windows only) Downloads and installs the package identified by \ into a specified project in the solution, then add a reference to the project file.
    • [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)
    • [Package Manager Console guide](../tools/package-manager-console.md)
    | -| nuget.exe CLI
    `nuget install ` | (All platforms) Downloads the package identified by \ and expands its contents into a folder in the current directory; can also download all packages listed in a `packages.config` file. Makes no changes to project files. Dependencies are also downloaded and expanded.
    • See [install command](../tools/cli-ref-install.md)
    | +| dotnet.exe CLI
    `dotnet install ` | (All platforms) Downloads the package identified by \, expands its contents into a folder in the current directory, and adds a reference to the project file. Also downloads and installs dependencies.
    • [Install and use a package (dotnet CLI)](../quickstart/install-and-use-a-package-using-the-dotnet-cli.md)
    • [dotnet commands](../tools/dotnet-commands.md)
    | +| Package Manager UI (Visual Studio) | (Windows and Mac) Provides a UI through which you can browse, select, and install packages and their dependencies into a project. Adds references to installed packages to the project file.
    • [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)
    • [Package Manager UI reference (Windows)](../tools/package-manager-ui.md)
    • [Including a NuGet package in your project (Mac)](/visualstudio/mac/nuget-walkthrough)
    | +| Package Manager Console (Visual Studio)
    `Install-Package ` | (Windows only) Downloads and installs the package identified by \ into a specified project in the solution, then adds a reference to the project file. Also downloads and installs dependencies.
    • [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)
    • [Package Manager Console guide](../tools/package-manager-console.md)
    | +| nuget.exe CLI
    `nuget install ` | (All platforms) Downloads the package identified by \ and expands its contents into a folder in the current directory; can also download all packages listed in a `packages.config` file. Also downloads and installs dependencies, but makes no changes to project files.
    • [install command](../tools/cli-ref-install.md)
    | ## General install process From 09452faf7cf886aa2eb93e517c2c687d3fffcff9 Mon Sep 17 00:00:00 2001 From: Johannes Ebner Date: Wed, 31 Jan 2018 01:26:48 +0100 Subject: [PATCH 0513/2943] Fixed typing errors --- docs/What-is-NuGet.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/What-is-NuGet.md b/docs/What-is-NuGet.md index e290c185f..dbba1b457 100644 --- a/docs/What-is-NuGet.md +++ b/docs/What-is-NuGet.md @@ -80,14 +80,14 @@ NuGet instead maintains a simple reference list of the packages upon which a pro With only the reference list, NuGet can then reinstall—that is, *restore*—all of those packages from public and/or private hosts at any later time. When committing a project to source control, or sharing it in some other way, you include only the reference list and exclude any package binaries (see [Packages and source control](Consume-Packages/Packages-and-Source-Control.md).) -The computer that receives a project, such as a build server obtaining a copy of the project as part of an automated deployment system, simply asks NuGet to restore dependencies whenever they're needed. Build systems like Visual Studio Team Services provide "NuGet restore" steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository), they can invoke a command like `nuget restore` (NuGet CLI), `dotnet restore` (dotnet CLI), or `Install-Package` (Package Manager Console) to obtain all the necessary a packages. Visual Studio, for its part, automatically restores packages when building a project. +The computer that receives a project, such as a build server obtaining a copy of the project as part of an automated deployment system, simply asks NuGet to restore dependencies whenever they're needed. Build systems like Visual Studio Team Services provide "NuGet restore" steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository), they can invoke a command like `nuget restore` (NuGet CLI), `dotnet restore` (dotnet CLI), or `Install-Package` (Package Manager Console) to obtain all the necessary packages. Visual Studio, for its part, automatically restores packages when building a project. Clearly, then, NuGet's primary role where developers are concerned is maintaining that reference list on behalf of your project and providing the means to efficiently restore (and update) those referenced packages. This list is maintained in one of two *package management formats*, as they're called: - [`packages.config`](Schema/packages-config.md): *(NuGet 1.0+)* An XML file that maintains a flat list of all dependencies in the project, including the dependencies of other installed packages. - [PackageReference](Consume-Packages/Package-References-in-Project-Files.md) (or "package references in project files") | *(NuGet 4.0+)* Maintains a list of a project's top-level dependencies directly within the project file, so no separate file is needed. An associated file, `project.assets.json`, is dynamically generated to manage the overall dependency graph. -Which package management format is employed in any given project depends on the project type, and the available version of NuGet (and/or Visual Studio). To check what format is being used, simply look for `packages.config` in the project root after installing your first package. If you don't that file, look in the project file directly for a <PackageReference>element. +Which package management format is employed in any given project depends on the project type, and the available version of NuGet (and/or Visual Studio). To check what format is being used, simply look for `packages.config` in the project root after installing your first package. If you don't have that file, look in the project file directly for a <PackageReference>element. ## What else does NuGet do? From 61215348e027d68e56930b85d7bb0901dc4ca7ed Mon Sep 17 00:00:00 2001 From: Jeremy Burman Date: Wed, 31 Jan 2018 11:55:30 -0500 Subject: [PATCH 0514/2943] Fixed closing system.webServer tags. --- .../Source-and-Config-File-Transformations.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/Create-Packages/Source-and-Config-File-Transformations.md b/docs/Create-Packages/Source-and-Config-File-Transformations.md index 706cce593..df744dd70 100644 --- a/docs/Create-Packages/Source-and-Config-File-Transformations.md +++ b/docs/Create-Packages/Source-and-Config-File-Transformations.md @@ -75,7 +75,7 @@ As an example, suppose the project initially contains the following content in ` - + ``` @@ -87,7 +87,7 @@ To add a `MyNuModule` element to the `modules` section during package install, c - + ``` @@ -100,7 +100,7 @@ After NuGet installs the package, `web.config` will appear as follows: - + ``` @@ -139,7 +139,7 @@ For another example, suppose the project initially contains the following conten - + ``` @@ -165,7 +165,7 @@ After installing the package, `web.config` will look like this: - + ``` From 29631e329fd7809f2aa48aacfadcd5f90182cee5 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 31 Jan 2018 11:51:58 -0800 Subject: [PATCH 0515/2943] Moving Guides underneath Create Packages Also pulling the VS 2017 one from the list for now --- docs/TOC.md | 11 +++++------ docs/install-nuget-client-tools.md | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index 4458c1a79..826d8c1af 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -5,12 +5,6 @@ ## [Install and use a package (Visual Studio)](quickstart/install-and-use-a-package-in-visual-studio.md) ## [Create and publish a package (dotnet CLI)](quickstart/create-and-publish-a-package-using-the-dotnet-cli.md) ## [Create and publish a package (Visual Studio)](quickstart/create-and-publish-a-package-using-visual-studio.md) -# Guides -## [Create NET Standard packages (Visual Studio 2017)](guides/create-net-standard-packages-vs2017.md) -## [Create NET Standard packages (Visual Studio 2015)](guides/create-net-standard-packages-vs2015.md) -## [Create UWP packages](guides/create-uwp-packages.md) -## [Creating UWP controls as NuGet packages](guides/create-uwp-controls.md) -## [Create packages for Xamarin](guides/create-packages-for-xamarin.md) # Consume packages ## [Overview and workflow](consume-packages/overview-and-workflow.md) ## [Finding and choosing packages](consume-packages/finding-and-choosing-packages.md) @@ -25,6 +19,11 @@ ## [Package references in project files](consume-packages/package-references-in-project-files.md) # Create packages ## [Overview and workflow](create-packages/overview-and-workflow.md) +## Guides +### [Create UWP packages](guides/create-uwp-packages.md) +### [Creating UWP controls as NuGet packages](guides/create-uwp-controls.md) +### [Create NET Standard packages (Visual Studio 2015)](guides/create-net-standard-packages-vs2015.md) +## [Create packages for Xamarin](guides/create-packages-for-xamarin.md) ## [Creating a package](create-packages/creating-a-package.md) ## [Supporting multiple target frameworks](create-packages/supporting-multiple-target-frameworks.md) ## [Source and config file transformations](create-packages/source-and-config-file-transformations.md) diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index 4e247fd1e..65699ba12 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -16,7 +16,7 @@ ms.reviewer: # Installing NuGet client tools -> **Looking to install a package? See [Quickstart - Use a package](quickstart/use-a-package.md).** +> **Looking to install a package? See [Ways to install NuGet packages](consume-packages/ways-to-install-a-package.md).** To work with NuGet, as a package consumer or creator, you can use [cross-platform command-line interface (CLI) tools](#cli-tools) as well as [NuGet features in Visual Studio](#visual-studio). This article briefly outlines the capabilities of the different tools, how to install them, and their comparative [feature availability](#feature-availability). From 677599cee4c9f562953a21c90d6c0f2467b38bc0 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 31 Jan 2018 11:52:51 -0800 Subject: [PATCH 0516/2943] Move Guides and fix one node --- docs/TOC.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index 826d8c1af..b8c91388f 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -19,11 +19,6 @@ ## [Package references in project files](consume-packages/package-references-in-project-files.md) # Create packages ## [Overview and workflow](create-packages/overview-and-workflow.md) -## Guides -### [Create UWP packages](guides/create-uwp-packages.md) -### [Creating UWP controls as NuGet packages](guides/create-uwp-controls.md) -### [Create NET Standard packages (Visual Studio 2015)](guides/create-net-standard-packages-vs2015.md) -## [Create packages for Xamarin](guides/create-packages-for-xamarin.md) ## [Creating a package](create-packages/creating-a-package.md) ## [Supporting multiple target frameworks](create-packages/supporting-multiple-target-frameworks.md) ## [Source and config file transformations](create-packages/source-and-config-file-transformations.md) @@ -32,6 +27,11 @@ ## [Native packages](create-packages/native-packages.md) ## [Symbol packages](create-packages/symbol-packages.md) ## [Publish a package](create-packages/publish-a-package.md) +## Guides +### [Create UWP packages](guides/create-uwp-packages.md) +### [Creating UWP controls as NuGet packages](guides/create-uwp-controls.md) +### [Create NET Standard packages (Visual Studio 2015)](guides/create-net-standard-packages-vs2015.md) +### [Create packages for Xamarin](guides/create-packages-for-xamarin.md) # Host packages ## [Overview](hosting-packages/overview.md) ## [Local feeds](hosting-packages/local-feeds.md) From b9e4712c78d8ebb0fb7f49362f53999686e691ff Mon Sep 17 00:00:00 2001 From: Alfred Myers Date: Wed, 31 Jan 2018 18:42:43 -0200 Subject: [PATCH 0517/2943] Fixed minor typo --- .../Reinstalling-and-Updating-Packages.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md index 0292a91ad..cd25bd352 100644 --- a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md +++ b/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md @@ -36,7 +36,7 @@ In this article: 1. **Broken references after package restore**: If you've opened a project and restored NuGet packages, but still see broken references, try reinstalling each of those packages. 1. **Project is broken due to deleted files**: NuGet does not prevent you from removing items added from packages, so it's easy to inadvertently modify contents installed from a package and break your project. To restore the project, reinstall the affected packages. -1. **Package update broke the project**: If an update to a package breaks a project, the failure is generally caused by a dependency package which may have also been updates. To restore the state of the dependency, reinstall that specific package. +1. **Package update broke the project**: If an update to a package breaks a project, the failure is generally caused by a dependency package which may have also been updated. To restore the state of the dependency, reinstall that specific package. 1. **Project retargeting or upgrade**: This can be useful when a project has been retargeted or upgraded and if the package requires reinstallation due to the change in target framework. NuGet 2.7 and later shows a build error in such cases immediately after project retargeting, and subsequent build warnings let you know that the package may need to be reinstalled. For project upgrade, NuGet shows an error in the Project Upgrade Log. 1. **Reinstalling a package during its development**: Package authors often need to reinstall the same version of package they're developing to test the behavior. The `Install-Package` command does not provide an option to force a reinstall, so use `Update-Package -reinstall` instead. @@ -61,7 +61,7 @@ In all cases, use the notation described in [Package versioning](../reference/pa ## Using Update-Package -Being mindful of the [Considerations](#considerations) described below, you can easily reinstall any package using the [Update-Package command](../tools/ps-ref-update-package.md) in the Visual Studio Package Manager Console (**Tools** > **NuGet Package Manager** > **Package Manager Console**): +Being mindful of the [Considerations](#considerations) described below, you can easily reinstall any package using the [Update-Package command](../Tools/ps-ref-update-package.md) in the Visual Studio Package Manager Console (**Tools** > **NuGet Package Manager** > **Package Manager Console**): ```ps Update-Package -Id –reinstall @@ -95,9 +95,9 @@ To update all packages in a solution, just use `Update-Package` by itself with n Update-Package ``` -Updating packages in a project or solution using [PackageReference](../consume-packages/package-references-in-project-files.md) always updates to the latest version of the package (excluding pre-release packages). Projects that use `packages.config` can, if desired, limit update versions as described below in [Constraining upgrade versions](#constraining-upgrade-versions). +Updating packages in a project or solution using [PackageReference](../Consume-Packages/Package-References-in-Project-Files.md) always updates to the latest version of the package (excluding pre-release packages). Projects that use `packages.config` can, if desired, limit update versions as described below in [Constraining upgrade versions](#constraining-upgrade-versions). -For full details on the command, see the [Update-Package](../tools/ps-ref-update-package.md) reference. +For full details on the command, see the [Update-Package](../Tools/ps-ref-update-package.md) reference. ### Considerations From 1e91dad26ebaffedfb11841bd458e4993a84a899 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Thu, 1 Feb 2018 15:40:47 -0800 Subject: [PATCH 0518/2943] Update Native-Packages.md --- docs/Create-Packages/Native-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Create-Packages/Native-Packages.md b/docs/Create-Packages/Native-Packages.md index dbbbbdaab..e058e96d2 100644 --- a/docs/Create-Packages/Native-Packages.md +++ b/docs/Create-Packages/Native-Packages.md @@ -16,7 +16,7 @@ ms.reviewer: --- # Creating native packages -A native package contains native C++ code instead of managed code, allowing it to be used within C++ projects. (See [Native C++ Packages](../consume-packages/finding-and-choosing-packages.md#native-cpp-packages) in the Consume section.) +A native package contains native C++ code instead of managed code, allowing it to be used within C++ projects. (See [Native C++ Packages](../consume-packages/finding-and-choosing-packages.md#native-c-packages) in the Consume section.) To be consumable in a C++ project, a package must target the `native` framework. At present there are not any version numbers associated with this framework as NuGet treats all C++ projects the same. From 4f40dae6bfcf6230ae7a8f2eed0bb4d7a058faf7 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Thu, 1 Feb 2018 15:45:39 -0800 Subject: [PATCH 0519/2943] Update install-nuget-client-tools.md --- docs/install-nuget-client-tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index 65699ba12..ab9f428a7 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -55,7 +55,7 @@ Installation: > Use `nuget update -self` to update an existing nuget.exe to the latest version. > [!Note] -> The latest recommended NuGet CLI is always available at `https://dist.nuget.org/win-x86-commandline/latest/nuget.exe`. For compatibility purposes with older continuous integration systems, a previous URL, `https://nuget.org/nuget.exe` always provides the 2.8.6 CLI tool. +> The latest recommended NuGet CLI is always available at `https://dist.nuget.org/win-x86-commandline/latest/nuget.exe`. For compatibility purposes with older continuous integration systems, a previous URL, `https://nuget.org/nuget.exe` currently provides the 2.8.6 CLI tool. This is deprecated. ## Visual Studio From b4a1617c566893ab34787fe82ab63c75974dba49 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Thu, 1 Feb 2018 16:15:08 -0800 Subject: [PATCH 0520/2943] Update install-nuget-client-tools.md --- docs/install-nuget-client-tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index ab9f428a7..6a1ddc554 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -55,7 +55,7 @@ Installation: > Use `nuget update -self` to update an existing nuget.exe to the latest version. > [!Note] -> The latest recommended NuGet CLI is always available at `https://dist.nuget.org/win-x86-commandline/latest/nuget.exe`. For compatibility purposes with older continuous integration systems, a previous URL, `https://nuget.org/nuget.exe` currently provides the 2.8.6 CLI tool. This is deprecated. +> The latest recommended NuGet CLI is always available at `https://dist.nuget.org/win-x86-commandline/latest/nuget.exe`. For compatibility purposes with older continuous integration systems, a previous URL, `https://nuget.org/nuget.exe` currently provides the 2.8.6 CLI tool. [This is deprecated](https://github.com/NuGet/NuGetGallery/issues/5381). ## Visual Studio From 12ba3d0f9ca9c25914e259e0322e42d5325bb63c Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 2 Feb 2018 09:51:16 -0800 Subject: [PATCH 0521/2943] test rename --- docs/{Policies => policies}/Deleting-Packages.md | 0 docs/{Policies => policies}/Dispute-Resolution.md | 0 docs/{Policies => policies}/Ecosystem.md | 0 docs/{Policies => policies}/Governance.md | 0 docs/{Policies => policies}/NuGet-FAQ.md | 0 docs/{Policies => policies}/media/mtr.png | Bin 6 files changed, 0 insertions(+), 0 deletions(-) rename docs/{Policies => policies}/Deleting-Packages.md (100%) rename docs/{Policies => policies}/Dispute-Resolution.md (100%) rename docs/{Policies => policies}/Ecosystem.md (100%) rename docs/{Policies => policies}/Governance.md (100%) rename docs/{Policies => policies}/NuGet-FAQ.md (100%) rename docs/{Policies => policies}/media/mtr.png (100%) diff --git a/docs/Policies/Deleting-Packages.md b/docs/policies/Deleting-Packages.md similarity index 100% rename from docs/Policies/Deleting-Packages.md rename to docs/policies/Deleting-Packages.md diff --git a/docs/Policies/Dispute-Resolution.md b/docs/policies/Dispute-Resolution.md similarity index 100% rename from docs/Policies/Dispute-Resolution.md rename to docs/policies/Dispute-Resolution.md diff --git a/docs/Policies/Ecosystem.md b/docs/policies/Ecosystem.md similarity index 100% rename from docs/Policies/Ecosystem.md rename to docs/policies/Ecosystem.md diff --git a/docs/Policies/Governance.md b/docs/policies/Governance.md similarity index 100% rename from docs/Policies/Governance.md rename to docs/policies/Governance.md diff --git a/docs/Policies/NuGet-FAQ.md b/docs/policies/NuGet-FAQ.md similarity index 100% rename from docs/Policies/NuGet-FAQ.md rename to docs/policies/NuGet-FAQ.md diff --git a/docs/Policies/media/mtr.png b/docs/policies/media/mtr.png similarity index 100% rename from docs/Policies/media/mtr.png rename to docs/policies/media/mtr.png From effe61cd2ef2cfdb85b21fa4d787a32a1d6bbbad Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 2 Feb 2018 09:52:24 -0800 Subject: [PATCH 0522/2943] renames --- .../Create-NET-Standard-Packages-VS2015.md | 0 .../Create-NET-Standard-Packages-VS2017.md | 0 docs/{Guides => guides}/Create-UWP-Controls.md | 0 docs/{Guides => guides}/Create-UWP-Packages.md | 0 .../api/query-for-all-published-packages.md | 0 .../media/BetaChannel-ExtensionUpdate.png | Bin .../media/BetaChannel-ToolsSettings.png | Bin .../media/Cross-Platform-PackageExplorer.png | Bin .../media/CrossPlatform-NewProject.png | Bin .../media/NetStandard-ChangeTarget.png | Bin .../media/NetStandard-NewProject.png | Bin .../media/NetStandard-PackageExplorer.png | Bin .../{Guides => guides}/media/NuGet4-01-Workload.png | Bin .../media/NuGet4-02-NewProject.png | Bin .../media/NuGet4-03-PackageExplorer.png | Bin docs/{Guides => guides}/media/UWP-BatchBuild.png | Bin .../media/UWP-GenerateXMLDocFiles.png | Bin docs/{Guides => guides}/media/UWP-NewProject.png | Bin .../{Guides => guides}/media/UWP-NewXAMLControl.png | Bin .../media/UWP-PackageExplorer.png | Bin .../media/UWP-control-blend-assets.png | Bin .../media/UWP-control-custom-icon.png | Bin .../media/UWP-control-vs-toolbox.png | Bin 23 files changed, 0 insertions(+), 0 deletions(-) rename docs/{Guides => guides}/Create-NET-Standard-Packages-VS2015.md (100%) rename docs/{Guides => guides}/Create-NET-Standard-Packages-VS2017.md (100%) rename docs/{Guides => guides}/Create-UWP-Controls.md (100%) rename docs/{Guides => guides}/Create-UWP-Packages.md (100%) rename docs/{Guides => guides}/api/query-for-all-published-packages.md (100%) rename docs/{Guides => guides}/media/BetaChannel-ExtensionUpdate.png (100%) rename docs/{Guides => guides}/media/BetaChannel-ToolsSettings.png (100%) rename docs/{Guides => guides}/media/Cross-Platform-PackageExplorer.png (100%) rename docs/{Guides => guides}/media/CrossPlatform-NewProject.png (100%) rename docs/{Guides => guides}/media/NetStandard-ChangeTarget.png (100%) rename docs/{Guides => guides}/media/NetStandard-NewProject.png (100%) rename docs/{Guides => guides}/media/NetStandard-PackageExplorer.png (100%) rename docs/{Guides => guides}/media/NuGet4-01-Workload.png (100%) rename docs/{Guides => guides}/media/NuGet4-02-NewProject.png (100%) rename docs/{Guides => guides}/media/NuGet4-03-PackageExplorer.png (100%) rename docs/{Guides => guides}/media/UWP-BatchBuild.png (100%) rename docs/{Guides => guides}/media/UWP-GenerateXMLDocFiles.png (100%) rename docs/{Guides => guides}/media/UWP-NewProject.png (100%) rename docs/{Guides => guides}/media/UWP-NewXAMLControl.png (100%) rename docs/{Guides => guides}/media/UWP-PackageExplorer.png (100%) rename docs/{Guides => guides}/media/UWP-control-blend-assets.png (100%) rename docs/{Guides => guides}/media/UWP-control-custom-icon.png (100%) rename docs/{Guides => guides}/media/UWP-control-vs-toolbox.png (100%) diff --git a/docs/Guides/Create-NET-Standard-Packages-VS2015.md b/docs/guides/Create-NET-Standard-Packages-VS2015.md similarity index 100% rename from docs/Guides/Create-NET-Standard-Packages-VS2015.md rename to docs/guides/Create-NET-Standard-Packages-VS2015.md diff --git a/docs/Guides/Create-NET-Standard-Packages-VS2017.md b/docs/guides/Create-NET-Standard-Packages-VS2017.md similarity index 100% rename from docs/Guides/Create-NET-Standard-Packages-VS2017.md rename to docs/guides/Create-NET-Standard-Packages-VS2017.md diff --git a/docs/Guides/Create-UWP-Controls.md b/docs/guides/Create-UWP-Controls.md similarity index 100% rename from docs/Guides/Create-UWP-Controls.md rename to docs/guides/Create-UWP-Controls.md diff --git a/docs/Guides/Create-UWP-Packages.md b/docs/guides/Create-UWP-Packages.md similarity index 100% rename from docs/Guides/Create-UWP-Packages.md rename to docs/guides/Create-UWP-Packages.md diff --git a/docs/Guides/api/query-for-all-published-packages.md b/docs/guides/api/query-for-all-published-packages.md similarity index 100% rename from docs/Guides/api/query-for-all-published-packages.md rename to docs/guides/api/query-for-all-published-packages.md diff --git a/docs/Guides/media/BetaChannel-ExtensionUpdate.png b/docs/guides/media/BetaChannel-ExtensionUpdate.png similarity index 100% rename from docs/Guides/media/BetaChannel-ExtensionUpdate.png rename to docs/guides/media/BetaChannel-ExtensionUpdate.png diff --git a/docs/Guides/media/BetaChannel-ToolsSettings.png b/docs/guides/media/BetaChannel-ToolsSettings.png similarity index 100% rename from docs/Guides/media/BetaChannel-ToolsSettings.png rename to docs/guides/media/BetaChannel-ToolsSettings.png diff --git a/docs/Guides/media/Cross-Platform-PackageExplorer.png b/docs/guides/media/Cross-Platform-PackageExplorer.png similarity index 100% rename from docs/Guides/media/Cross-Platform-PackageExplorer.png rename to docs/guides/media/Cross-Platform-PackageExplorer.png diff --git a/docs/Guides/media/CrossPlatform-NewProject.png b/docs/guides/media/CrossPlatform-NewProject.png similarity index 100% rename from docs/Guides/media/CrossPlatform-NewProject.png rename to docs/guides/media/CrossPlatform-NewProject.png diff --git a/docs/Guides/media/NetStandard-ChangeTarget.png b/docs/guides/media/NetStandard-ChangeTarget.png similarity index 100% rename from docs/Guides/media/NetStandard-ChangeTarget.png rename to docs/guides/media/NetStandard-ChangeTarget.png diff --git a/docs/Guides/media/NetStandard-NewProject.png b/docs/guides/media/NetStandard-NewProject.png similarity index 100% rename from docs/Guides/media/NetStandard-NewProject.png rename to docs/guides/media/NetStandard-NewProject.png diff --git a/docs/Guides/media/NetStandard-PackageExplorer.png b/docs/guides/media/NetStandard-PackageExplorer.png similarity index 100% rename from docs/Guides/media/NetStandard-PackageExplorer.png rename to docs/guides/media/NetStandard-PackageExplorer.png diff --git a/docs/Guides/media/NuGet4-01-Workload.png b/docs/guides/media/NuGet4-01-Workload.png similarity index 100% rename from docs/Guides/media/NuGet4-01-Workload.png rename to docs/guides/media/NuGet4-01-Workload.png diff --git a/docs/Guides/media/NuGet4-02-NewProject.png b/docs/guides/media/NuGet4-02-NewProject.png similarity index 100% rename from docs/Guides/media/NuGet4-02-NewProject.png rename to docs/guides/media/NuGet4-02-NewProject.png diff --git a/docs/Guides/media/NuGet4-03-PackageExplorer.png b/docs/guides/media/NuGet4-03-PackageExplorer.png similarity index 100% rename from docs/Guides/media/NuGet4-03-PackageExplorer.png rename to docs/guides/media/NuGet4-03-PackageExplorer.png diff --git a/docs/Guides/media/UWP-BatchBuild.png b/docs/guides/media/UWP-BatchBuild.png similarity index 100% rename from docs/Guides/media/UWP-BatchBuild.png rename to docs/guides/media/UWP-BatchBuild.png diff --git a/docs/Guides/media/UWP-GenerateXMLDocFiles.png b/docs/guides/media/UWP-GenerateXMLDocFiles.png similarity index 100% rename from docs/Guides/media/UWP-GenerateXMLDocFiles.png rename to docs/guides/media/UWP-GenerateXMLDocFiles.png diff --git a/docs/Guides/media/UWP-NewProject.png b/docs/guides/media/UWP-NewProject.png similarity index 100% rename from docs/Guides/media/UWP-NewProject.png rename to docs/guides/media/UWP-NewProject.png diff --git a/docs/Guides/media/UWP-NewXAMLControl.png b/docs/guides/media/UWP-NewXAMLControl.png similarity index 100% rename from docs/Guides/media/UWP-NewXAMLControl.png rename to docs/guides/media/UWP-NewXAMLControl.png diff --git a/docs/Guides/media/UWP-PackageExplorer.png b/docs/guides/media/UWP-PackageExplorer.png similarity index 100% rename from docs/Guides/media/UWP-PackageExplorer.png rename to docs/guides/media/UWP-PackageExplorer.png diff --git a/docs/Guides/media/UWP-control-blend-assets.png b/docs/guides/media/UWP-control-blend-assets.png similarity index 100% rename from docs/Guides/media/UWP-control-blend-assets.png rename to docs/guides/media/UWP-control-blend-assets.png diff --git a/docs/Guides/media/UWP-control-custom-icon.png b/docs/guides/media/UWP-control-custom-icon.png similarity index 100% rename from docs/Guides/media/UWP-control-custom-icon.png rename to docs/guides/media/UWP-control-custom-icon.png diff --git a/docs/Guides/media/UWP-control-vs-toolbox.png b/docs/guides/media/UWP-control-vs-toolbox.png similarity index 100% rename from docs/Guides/media/UWP-control-vs-toolbox.png rename to docs/guides/media/UWP-control-vs-toolbox.png From 89ccaeed068b32fff26288aff9a91702167e7712 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 2 Feb 2018 09:53:16 -0800 Subject: [PATCH 0523/2943] renames --- .../{Reference => reference}/Errors-and-Warnings.md | 0 .../ID-Prefix-Reservation.md | 0 docs/{Reference => reference}/NuGet-Client-SDK.md | 0 docs/{Reference => reference}/Package-Versioning.md | 0 .../NuGet-Credential-Providers-for-Visual-Studio.md | 0 .../extensibility/nuget-exe-Credential-Providers.md | 0 .../media/nuget-gallery-reserved-prefix.png | Bin .../media/visual-studio-reserved-prefix.png | Bin 8 files changed, 0 insertions(+), 0 deletions(-) rename docs/{Reference => reference}/Errors-and-Warnings.md (100%) rename docs/{Reference => reference}/ID-Prefix-Reservation.md (100%) rename docs/{Reference => reference}/NuGet-Client-SDK.md (100%) rename docs/{Reference => reference}/Package-Versioning.md (100%) rename docs/{Reference => reference}/extensibility/NuGet-Credential-Providers-for-Visual-Studio.md (100%) rename docs/{Reference => reference}/extensibility/nuget-exe-Credential-Providers.md (100%) rename docs/{Reference => reference}/media/nuget-gallery-reserved-prefix.png (100%) rename docs/{Reference => reference}/media/visual-studio-reserved-prefix.png (100%) diff --git a/docs/Reference/Errors-and-Warnings.md b/docs/reference/Errors-and-Warnings.md similarity index 100% rename from docs/Reference/Errors-and-Warnings.md rename to docs/reference/Errors-and-Warnings.md diff --git a/docs/Reference/ID-Prefix-Reservation.md b/docs/reference/ID-Prefix-Reservation.md similarity index 100% rename from docs/Reference/ID-Prefix-Reservation.md rename to docs/reference/ID-Prefix-Reservation.md diff --git a/docs/Reference/NuGet-Client-SDK.md b/docs/reference/NuGet-Client-SDK.md similarity index 100% rename from docs/Reference/NuGet-Client-SDK.md rename to docs/reference/NuGet-Client-SDK.md diff --git a/docs/Reference/Package-Versioning.md b/docs/reference/Package-Versioning.md similarity index 100% rename from docs/Reference/Package-Versioning.md rename to docs/reference/Package-Versioning.md diff --git a/docs/Reference/extensibility/NuGet-Credential-Providers-for-Visual-Studio.md b/docs/reference/extensibility/NuGet-Credential-Providers-for-Visual-Studio.md similarity index 100% rename from docs/Reference/extensibility/NuGet-Credential-Providers-for-Visual-Studio.md rename to docs/reference/extensibility/NuGet-Credential-Providers-for-Visual-Studio.md diff --git a/docs/Reference/extensibility/nuget-exe-Credential-Providers.md b/docs/reference/extensibility/nuget-exe-Credential-Providers.md similarity index 100% rename from docs/Reference/extensibility/nuget-exe-Credential-Providers.md rename to docs/reference/extensibility/nuget-exe-Credential-Providers.md diff --git a/docs/Reference/media/nuget-gallery-reserved-prefix.png b/docs/reference/media/nuget-gallery-reserved-prefix.png similarity index 100% rename from docs/Reference/media/nuget-gallery-reserved-prefix.png rename to docs/reference/media/nuget-gallery-reserved-prefix.png diff --git a/docs/Reference/media/visual-studio-reserved-prefix.png b/docs/reference/media/visual-studio-reserved-prefix.png similarity index 100% rename from docs/Reference/media/visual-studio-reserved-prefix.png rename to docs/reference/media/visual-studio-reserved-prefix.png From c15a987ef0eaa0e4c33e32ab8aa466be2c744c32 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 2 Feb 2018 09:56:38 -0800 Subject: [PATCH 0524/2943] renaming --- docs/{API => api}/NuGet-Protocols.md | 0 docs/{API => api}/_data/autocomplete-id-result.json | 0 .../_data/autocomplete-version-result.json | 0 docs/{API => api}/_data/catalog-index.json | 0 docs/{API => api}/_data/catalog-package-delete.json | 0 .../{API => api}/_data/catalog-package-details.json | 0 docs/{API => api}/_data/catalog-page.json | 0 docs/{API => api}/_data/newtonsoft.json.6.0.4.xml | 0 .../_data/package-base-address-index.json | 0 .../_data/package-registration-index.json | 0 .../_data/package-registration-leaf.json | 0 .../_data/package-registration-page.json | 0 docs/{API => api}/_data/search-result.json | 0 docs/{API => api}/_data/service-index.json | 0 docs/{API => api}/catalog-resource.md | 0 docs/{API => api}/overview.md | 0 docs/{API => api}/package-base-address-resource.md | 0 docs/{API => api}/package-publish-resource.md | 0 docs/{API => api}/registration-base-url-resource.md | 0 docs/{API => api}/report-abuse-resource.md | 0 .../search-autocomplete-service-resource.md | 0 docs/{API => api}/search-query-service-resource.md | 0 docs/{API => api}/service-index.md | 0 .../Configuring-NuGet-Behavior.md | 0 .../Dependency-Resolution.md | 0 .../Finding-and-Choosing-Packages.md | 0 .../Managing-the-NuGet-Cache.md | 0 .../Overview-and-Workflow.md | 0 .../Package-References-in-Project-Files.md | 0 .../Package-Restore.md | 0 .../Package-restore-troubleshooting.md | 0 .../Packages-and-Source-Control.md | 0 .../Reinstalling-and-Updating-Packages.md | 0 .../Team-Foundation-Build.md | 0 .../media/Finding-01-Popularity.png | Bin .../media/Finding-02-SearchResults.png | Bin .../media/Finding-03-Downloads.png | Bin .../media/Finding-04-VersionHistory.png | Bin .../media/Finding-05-OperationChart.png | Bin .../media/Finding-06-include-prerelease.png | Bin .../media/Overview-01-GeneralFlow.png | Bin .../media/Overview-02-RestoreFlow.png | Bin .../media/PackageReference-Condition.png | Bin .../media/PackageRestoreTeamBuildGit.png | Bin .../media/PackageRestoreTeamBuildTFVC.png | Bin .../media/Prerelease_02-CheckPrerelease.png | Bin .../media/Restore-01-AutoRestoreOptions.png | Bin .../media/Restore-02-VSTSBuild.png | Bin .../media/Symbols_01-AddingSource.png | Bin .../media/projectJson-dependency-1.png | Bin .../media/projectJson-dependency-2.png | Bin .../media/projectJson-dependency-3.png | Bin .../media/projectJson-dependency-4.png | Bin .../media/projectJson-dependency-5.png | Bin .../media/projectJson-dependency-6.png | Bin .../media/projectJson-dependency-7.png | Bin .../media/projectJson-dependency-8.png | Bin .../Creating-Localized-Packages.md | 0 .../Creating-a-Package.md | 0 .../Native-Packages.md | 0 .../Overview-and-Workflow.md | 0 .../Prerelease-Packages.md | 0 .../Publish-a-package.md | 0 .../Source-and-Config-File-Transformations.md | 0 .../Supporting-Multiple-Target-Frameworks.md | 0 .../Symbol-Packages.md | 0 .../media/Create_01-ShowReadme.png | Bin .../media/Prerelease_01-LatestStable.png | Bin .../media/Prerelease_02-CheckPrerelease.png | Bin .../media/publish_APIKey.png | Bin .../media/publish_NotYetIndexed.png | Bin .../media/publish_NuGetSignIn.PNG | Bin .../media/publish_UploadYourPackage.PNG | Bin .../Local-Feeds.md | 0 .../NuGet-Server.md | 0 .../Overview.md | 0 .../media/Hosting_01-NuGet.Server-Set4.6.png | Bin .../media/Hosting_02-NuGet.Server-Package.png | Bin .../Hosting_03-NuGet.Server-Package-Folder.png | Bin .../media/Hosting_04-NuGet.Server-FeedHomePage.png | Bin ...te-and-publish-a-package-using-the-dotnet-cli.md | 0 ...ate-and-publish-a-package-using-visual-studio.md | 0 .../includes/publish-api-key.md | 0 .../includes/publish-dotnet.md | 0 .../includes/publish-errors.md | 0 .../includes/publish-manage.md | 0 .../includes/publish-notes.md | 0 .../install-and-use-a-package-in-visual-studio.md | 0 ...nstall-and-use-a-package-using-the-dotnet-cli.md | 0 .../media/QS_Create-01-NewProject.png | Bin .../media/QS_Create-02-APIKey.png | Bin .../media/QS_Create-03-NotIndexed.png | Bin .../media/QS_Restore-01-ToolsOptions.png | Bin .../media/QS_Use-01-NewProject.png | Bin .../media/QS_Use-02-ManageNuGetPackages.png | Bin .../media/QS_Use-03-NewtonsoftJson.png | Bin .../media/QS_Use-03b-SelectFormat.png | Bin .../media/QS_Use-04-ShowPotentialFixes.png | Bin .../media/QS_Use-05-AddUsing.png | Bin .../media/QS_Use-06-AppStart.png | Bin .../media/QS_Use-07-AppEnd.png | Bin .../media/QS_Use-08-Console1.png | Bin .../media/qs_create-vs-01-package-properties.png | Bin .../media/qs_create-vs-02-pack-command.png | Bin .../media/qs_create-vs-03-trash-can.png | Bin .../media/qs_create-vs-04-unlist.png | Bin docs/{Release-Notes => release-notes}/Index.md | 0 .../Known-Issues.md | 0 docs/{Release-Notes => release-notes}/NuGet-1.1.md | 0 docs/{Release-Notes => release-notes}/NuGet-1.2.md | 0 docs/{Release-Notes => release-notes}/NuGet-1.3.md | 0 docs/{Release-Notes => release-notes}/NuGet-1.4.md | 0 docs/{Release-Notes => release-notes}/NuGet-1.5.md | 0 docs/{Release-Notes => release-notes}/NuGet-1.6.md | 0 docs/{Release-Notes => release-notes}/NuGet-1.7.md | 0 docs/{Release-Notes => release-notes}/NuGet-1.8.md | 0 docs/{Release-Notes => release-notes}/NuGet-2.0.md | 0 docs/{Release-Notes => release-notes}/NuGet-2.1.md | 0 .../NuGet-2.12-RC.md | 0 docs/{Release-Notes => release-notes}/NuGet-2.12.md | 0 .../{Release-Notes => release-notes}/NuGet-2.2.1.md | 0 docs/{Release-Notes => release-notes}/NuGet-2.2.md | 0 docs/{Release-Notes => release-notes}/NuGet-2.5.md | 0 .../NuGet-2.6.1-for-WebMatrix.md | 0 docs/{Release-Notes => release-notes}/NuGet-2.6.md | 0 .../{Release-Notes => release-notes}/NuGet-2.7.1.md | 0 .../{Release-Notes => release-notes}/NuGet-2.7.2.md | 0 docs/{Release-Notes => release-notes}/NuGet-2.7.md | 0 .../{Release-Notes => release-notes}/NuGet-2.8.1.md | 0 .../{Release-Notes => release-notes}/NuGet-2.8.2.md | 0 .../{Release-Notes => release-notes}/NuGet-2.8.3.md | 0 .../{Release-Notes => release-notes}/NuGet-2.8.5.md | 0 .../{Release-Notes => release-notes}/NuGet-2.8.6.md | 0 .../{Release-Notes => release-notes}/NuGet-2.8.7.md | 0 docs/{Release-Notes => release-notes}/NuGet-2.8.md | 0 .../NuGet-2.9-RC.md | 0 .../NuGet-3.0-Beta.md | 0 .../NuGet-3.0-Preview.md | 0 .../NuGet-3.0-RC.md | 0 .../NuGet-3.0-RC2.md | 0 .../{Release-Notes => release-notes}/NuGet-3.0.0.md | 0 .../{Release-Notes => release-notes}/NuGet-3.1.1.md | 0 docs/{Release-Notes => release-notes}/NuGet-3.1.md | 0 .../NuGet-3.2-RC.md | 0 .../{Release-Notes => release-notes}/NuGet-3.2.1.md | 0 docs/{Release-Notes => release-notes}/NuGet-3.2.md | 0 docs/{Release-Notes => release-notes}/NuGet-3.3.md | 0 .../NuGet-3.4-RC.md | 0 .../{Release-Notes => release-notes}/NuGet-3.4.1.md | 0 .../{Release-Notes => release-notes}/NuGet-3.4.2.md | 0 .../{Release-Notes => release-notes}/NuGet-3.4.3.md | 0 .../{Release-Notes => release-notes}/NuGet-3.4.4.md | 0 docs/{Release-Notes => release-notes}/NuGet-3.4.md | 0 .../NuGet-3.5-Beta.md | 0 .../NuGet-3.5-Beta2.md | 0 .../NuGet-3.5-RC.md | 0 .../NuGet-3.5-RTM.md | 0 .../NuGet-4.0-RC.md | 0 .../NuGet-4.0-RTM.md | 0 .../NuGet-4.3-RTM.md | 0 .../NuGet-4.4-RTM.md | 0 .../NuGet-4.5-RTM.md | 0 .../media/NuGet-2.5/overwrite-file.png | Bin .../media/NuGet-2.5/update-all.png | Bin .../media/NuGet-2.5/verbosity.png | Bin .../media/NuGet-2.7/package-manager-settings.png | Bin .../media/NuGet-2.8/dependencyversion.png | Bin .../media/NuGet-2.8/multiple-packageconfigs.png | Bin .../media/NuGet-2.8/webmatrix-overwrite-file.png | Bin .../media/NuGet-2.8/webmatrix-schema-version.png | Bin .../media/NuGet-2.8/webmatrix-update-all.png | Bin .../media/NuGet-3.0-Beta/updated-ui.png | Bin .../media/NuGet-3.0-Preview/consolidate.png | Bin .../media/NuGet-3.0-Preview/dependency-behavior.png | Bin .../NuGet-3.0-Preview/file-conflict-action.png | Bin .../media/NuGet-3.0-Preview/infinite-scrolling.png | Bin .../media/NuGet-3.0-Preview/new-ui.png | Bin .../media/NuGet-3.0-Preview/preview.png | Bin .../media/NuGet-3.0-Preview/uninstall-package.png | Bin .../media/NuGet-3.0-Preview/update-package.png | Bin .../media/NuGet-3.0-Preview/version-selection.png | Bin .../media/NuGet-3.2/newContextMenu.png | Bin .../media/NuGet-Config-File-Machine-Wide.png | Bin .../media/RunAsRestricted.png | Bin .../media/Visual-Studio-Extension-Installer.png | Bin .../media/dlg-w-loc-packs.png | Bin .../media/fldr-copied-loc.png | Bin .../media/fldr-loc-packs.png | Bin .../media/framework-profile-support.png | Bin .../media/knownIssue-34-NoSources.PNG | Bin .../manage-nuget-packages-project-selection.png | Bin .../media/manage-nuget-packages-release-notes.png | Bin .../media/manage-nuget-packages-solution-dialog.png | Bin .../manage-nuget-packages-update-notification.png | Bin .../media/nuget-Options.png | Bin .../media/nuget-settings.png | Bin .../media/package-source-with-disabled-source.png | Bin .../media/package-visualizer.png | Bin .../media/packagerestore-console.PNG | Bin .../media/packagerestore-dialog.PNG | Bin .../media/pkg-mgr-search-from-quick-launch.png | Bin .../media/pr-consent-configdlg.png | Bin .../media/prerelease-dropdown.PNG | Bin .../media/quick-launch.png | Bin .../media/releasenotes-21-cfg-hierarchy.png | Bin .../media/releasenotes-21-edit-pkg-source.png | Bin .../media/releasenotes-21-plib-layout.png | Bin .../media/releasenotes-21-plib.png | Bin .../media/releasenotes-21-vsdlg-search.png | Bin .../media/remove-dependent-packages.png | Bin docs/{Tools => tools}/Package-Manager-Console.md | 0 docs/{Tools => tools}/Package-Manager-UI.md | 0 docs/{Tools => tools}/PowerShell-Reference.md | 0 docs/{Tools => tools}/cli-ref-add.md | 0 docs/{Tools => tools}/cli-ref-config.md | 0 docs/{Tools => tools}/cli-ref-delete.md | 0 .../cli-ref-environment-variables.md | 0 docs/{Tools => tools}/cli-ref-help.md | 0 docs/{Tools => tools}/cli-ref-init.md | 0 docs/{Tools => tools}/cli-ref-install.md | 0 docs/{Tools => tools}/cli-ref-list.md | 0 docs/{Tools => tools}/cli-ref-locals.md | 0 docs/{Tools => tools}/cli-ref-mirror.md | 0 docs/{Tools => tools}/cli-ref-pack.md | 0 docs/{Tools => tools}/cli-ref-push.md | 0 docs/{Tools => tools}/cli-ref-restore.md | 0 docs/{Tools => tools}/cli-ref-setapikey.md | 0 docs/{Tools => tools}/cli-ref-sources.md | 0 docs/{Tools => tools}/cli-ref-spec.md | 0 docs/{Tools => tools}/cli-ref-update.md | 0 docs/{Tools => tools}/dotnet-Commands.md | 0 docs/{Tools => tools}/media/ConsolidateTab.png | Bin .../{Tools => tools}/media/InstallPreviewDialog.png | Bin .../media/ManagePackagesSolutionUICommand.png | Bin .../media/ManagePackagesUICommand.png | Bin docs/{Tools => tools}/media/Options.png | Bin .../media/PackageManagerConsoleControls.png | Bin .../media/PackageManagerConsoleControls1.png | Bin .../media/PackageManagerConsoleControls2.png | Bin .../media/PackageManagerConsoleControls3.png | Bin .../media/PackageManagerConsoleInstall.png | Bin .../media/PackageManagerUIAutoReferenced.png | Bin .../media/PackageManagerUIOptions.png | Bin .../media/PackageSourceDropDown.png | Bin .../media/PackageSourceSettings.png | Bin docs/{Tools => tools}/media/References.png | Bin .../media/Register-TabExpansion-Example.png | Bin docs/{Tools => tools}/media/Search.png | Bin docs/{Tools => tools}/media/SolutionPackagesUI.png | Bin docs/{Tools => tools}/media/UninstallPackage.png | Bin docs/{Tools => tools}/media/UpdatePackages.png | Bin docs/{Tools => tools}/nuget-exe-CLI-Reference.md | 0 docs/{Tools => tools}/ps-ref-add-bindingredirect.md | 0 docs/{Tools => tools}/ps-ref-find-package.md | 0 docs/{Tools => tools}/ps-ref-get-package.md | 0 docs/{Tools => tools}/ps-ref-get-project.md | 0 docs/{Tools => tools}/ps-ref-install-package.md | 0 docs/{Tools => tools}/ps-ref-open-packagepage.md | 0 .../ps-ref-register-tabexpansion.md | 0 docs/{Tools => tools}/ps-ref-sync-package.md | 0 docs/{Tools => tools}/ps-ref-uninstall-package.md | 0 docs/{Tools => tools}/ps-ref-update-package.md | 0 .../Project-System-Support.md | 0 .../Visual-Studio-Templates.md | 0 .../nuget-api-in-visual-studio.md | 0 265 files changed, 0 insertions(+), 0 deletions(-) rename docs/{API => api}/NuGet-Protocols.md (100%) rename docs/{API => api}/_data/autocomplete-id-result.json (100%) rename docs/{API => api}/_data/autocomplete-version-result.json (100%) rename docs/{API => api}/_data/catalog-index.json (100%) rename docs/{API => api}/_data/catalog-package-delete.json (100%) rename docs/{API => api}/_data/catalog-package-details.json (100%) rename docs/{API => api}/_data/catalog-page.json (100%) rename docs/{API => api}/_data/newtonsoft.json.6.0.4.xml (100%) rename docs/{API => api}/_data/package-base-address-index.json (100%) rename docs/{API => api}/_data/package-registration-index.json (100%) rename docs/{API => api}/_data/package-registration-leaf.json (100%) rename docs/{API => api}/_data/package-registration-page.json (100%) rename docs/{API => api}/_data/search-result.json (100%) rename docs/{API => api}/_data/service-index.json (100%) rename docs/{API => api}/catalog-resource.md (100%) rename docs/{API => api}/overview.md (100%) rename docs/{API => api}/package-base-address-resource.md (100%) rename docs/{API => api}/package-publish-resource.md (100%) rename docs/{API => api}/registration-base-url-resource.md (100%) rename docs/{API => api}/report-abuse-resource.md (100%) rename docs/{API => api}/search-autocomplete-service-resource.md (100%) rename docs/{API => api}/search-query-service-resource.md (100%) rename docs/{API => api}/service-index.md (100%) rename docs/{Consume-Packages => consume-packages}/Configuring-NuGet-Behavior.md (100%) rename docs/{Consume-Packages => consume-packages}/Dependency-Resolution.md (100%) rename docs/{Consume-Packages => consume-packages}/Finding-and-Choosing-Packages.md (100%) rename docs/{Consume-Packages => consume-packages}/Managing-the-NuGet-Cache.md (100%) rename docs/{Consume-Packages => consume-packages}/Overview-and-Workflow.md (100%) rename docs/{Consume-Packages => consume-packages}/Package-References-in-Project-Files.md (100%) rename docs/{Consume-Packages => consume-packages}/Package-Restore.md (100%) rename docs/{Consume-Packages => consume-packages}/Package-restore-troubleshooting.md (100%) rename docs/{Consume-Packages => consume-packages}/Packages-and-Source-Control.md (100%) rename docs/{Consume-Packages => consume-packages}/Reinstalling-and-Updating-Packages.md (100%) rename docs/{Consume-Packages => consume-packages}/Team-Foundation-Build.md (100%) rename docs/{Consume-Packages => consume-packages}/media/Finding-01-Popularity.png (100%) rename docs/{Consume-Packages => consume-packages}/media/Finding-02-SearchResults.png (100%) rename docs/{Consume-Packages => consume-packages}/media/Finding-03-Downloads.png (100%) rename docs/{Consume-Packages => consume-packages}/media/Finding-04-VersionHistory.png (100%) rename docs/{Consume-Packages => consume-packages}/media/Finding-05-OperationChart.png (100%) rename docs/{Consume-Packages => consume-packages}/media/Finding-06-include-prerelease.png (100%) rename docs/{Consume-Packages => consume-packages}/media/Overview-01-GeneralFlow.png (100%) rename docs/{Consume-Packages => consume-packages}/media/Overview-02-RestoreFlow.png (100%) rename docs/{Consume-Packages => consume-packages}/media/PackageReference-Condition.png (100%) rename docs/{Consume-Packages => consume-packages}/media/PackageRestoreTeamBuildGit.png (100%) rename docs/{Consume-Packages => consume-packages}/media/PackageRestoreTeamBuildTFVC.png (100%) rename docs/{Consume-Packages => consume-packages}/media/Prerelease_02-CheckPrerelease.png (100%) rename docs/{Consume-Packages => consume-packages}/media/Restore-01-AutoRestoreOptions.png (100%) rename docs/{Consume-Packages => consume-packages}/media/Restore-02-VSTSBuild.png (100%) rename docs/{Consume-Packages => consume-packages}/media/Symbols_01-AddingSource.png (100%) rename docs/{Consume-Packages => consume-packages}/media/projectJson-dependency-1.png (100%) rename docs/{Consume-Packages => consume-packages}/media/projectJson-dependency-2.png (100%) rename docs/{Consume-Packages => consume-packages}/media/projectJson-dependency-3.png (100%) rename docs/{Consume-Packages => consume-packages}/media/projectJson-dependency-4.png (100%) rename docs/{Consume-Packages => consume-packages}/media/projectJson-dependency-5.png (100%) rename docs/{Consume-Packages => consume-packages}/media/projectJson-dependency-6.png (100%) rename docs/{Consume-Packages => consume-packages}/media/projectJson-dependency-7.png (100%) rename docs/{Consume-Packages => consume-packages}/media/projectJson-dependency-8.png (100%) rename docs/{Create-Packages => create-packages}/Creating-Localized-Packages.md (100%) rename docs/{Create-Packages => create-packages}/Creating-a-Package.md (100%) rename docs/{Create-Packages => create-packages}/Native-Packages.md (100%) rename docs/{Create-Packages => create-packages}/Overview-and-Workflow.md (100%) rename docs/{Create-Packages => create-packages}/Prerelease-Packages.md (100%) rename docs/{Create-Packages => create-packages}/Publish-a-package.md (100%) rename docs/{Create-Packages => create-packages}/Source-and-Config-File-Transformations.md (100%) rename docs/{Create-Packages => create-packages}/Supporting-Multiple-Target-Frameworks.md (100%) rename docs/{Create-Packages => create-packages}/Symbol-Packages.md (100%) rename docs/{Create-Packages => create-packages}/media/Create_01-ShowReadme.png (100%) rename docs/{Create-Packages => create-packages}/media/Prerelease_01-LatestStable.png (100%) rename docs/{Create-Packages => create-packages}/media/Prerelease_02-CheckPrerelease.png (100%) rename docs/{Create-Packages => create-packages}/media/publish_APIKey.png (100%) rename docs/{Create-Packages => create-packages}/media/publish_NotYetIndexed.png (100%) rename docs/{Create-Packages => create-packages}/media/publish_NuGetSignIn.PNG (100%) rename docs/{Create-Packages => create-packages}/media/publish_UploadYourPackage.PNG (100%) rename docs/{Hosting-Packages => hosting-packages}/Local-Feeds.md (100%) rename docs/{Hosting-Packages => hosting-packages}/NuGet-Server.md (100%) rename docs/{Hosting-Packages => hosting-packages}/Overview.md (100%) rename docs/{Hosting-Packages => hosting-packages}/media/Hosting_01-NuGet.Server-Set4.6.png (100%) rename docs/{Hosting-Packages => hosting-packages}/media/Hosting_02-NuGet.Server-Package.png (100%) rename docs/{Hosting-Packages => hosting-packages}/media/Hosting_03-NuGet.Server-Package-Folder.png (100%) rename docs/{Hosting-Packages => hosting-packages}/media/Hosting_04-NuGet.Server-FeedHomePage.png (100%) rename docs/{Quickstart => quickstart}/create-and-publish-a-package-using-the-dotnet-cli.md (100%) rename docs/{Quickstart => quickstart}/create-and-publish-a-package-using-visual-studio.md (100%) rename docs/{Quickstart => quickstart}/includes/publish-api-key.md (100%) rename docs/{Quickstart => quickstart}/includes/publish-dotnet.md (100%) rename docs/{Quickstart => quickstart}/includes/publish-errors.md (100%) rename docs/{Quickstart => quickstart}/includes/publish-manage.md (100%) rename docs/{Quickstart => quickstart}/includes/publish-notes.md (100%) rename docs/{Quickstart => quickstart}/install-and-use-a-package-in-visual-studio.md (100%) rename docs/{Quickstart => quickstart}/install-and-use-a-package-using-the-dotnet-cli.md (100%) rename docs/{Quickstart => quickstart}/media/QS_Create-01-NewProject.png (100%) rename docs/{Quickstart => quickstart}/media/QS_Create-02-APIKey.png (100%) rename docs/{Quickstart => quickstart}/media/QS_Create-03-NotIndexed.png (100%) rename docs/{Quickstart => quickstart}/media/QS_Restore-01-ToolsOptions.png (100%) rename docs/{Quickstart => quickstart}/media/QS_Use-01-NewProject.png (100%) rename docs/{Quickstart => quickstart}/media/QS_Use-02-ManageNuGetPackages.png (100%) rename docs/{Quickstart => quickstart}/media/QS_Use-03-NewtonsoftJson.png (100%) rename docs/{Quickstart => quickstart}/media/QS_Use-03b-SelectFormat.png (100%) rename docs/{Quickstart => quickstart}/media/QS_Use-04-ShowPotentialFixes.png (100%) rename docs/{Quickstart => quickstart}/media/QS_Use-05-AddUsing.png (100%) rename docs/{Quickstart => quickstart}/media/QS_Use-06-AppStart.png (100%) rename docs/{Quickstart => quickstart}/media/QS_Use-07-AppEnd.png (100%) rename docs/{Quickstart => quickstart}/media/QS_Use-08-Console1.png (100%) rename docs/{Quickstart => quickstart}/media/qs_create-vs-01-package-properties.png (100%) rename docs/{Quickstart => quickstart}/media/qs_create-vs-02-pack-command.png (100%) rename docs/{Quickstart => quickstart}/media/qs_create-vs-03-trash-can.png (100%) rename docs/{Quickstart => quickstart}/media/qs_create-vs-04-unlist.png (100%) rename docs/{Release-Notes => release-notes}/Index.md (100%) rename docs/{Release-Notes => release-notes}/Known-Issues.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-1.1.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-1.2.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-1.3.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-1.4.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-1.5.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-1.6.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-1.7.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-1.8.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-2.0.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-2.1.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-2.12-RC.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-2.12.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-2.2.1.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-2.2.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-2.5.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-2.6.1-for-WebMatrix.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-2.6.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-2.7.1.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-2.7.2.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-2.7.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-2.8.1.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-2.8.2.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-2.8.3.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-2.8.5.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-2.8.6.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-2.8.7.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-2.8.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-2.9-RC.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.0-Beta.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.0-Preview.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.0-RC.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.0-RC2.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.0.0.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.1.1.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.1.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.2-RC.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.2.1.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.2.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.3.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.4-RC.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.4.1.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.4.2.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.4.3.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.4.4.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.4.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.5-Beta.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.5-Beta2.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.5-RC.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-3.5-RTM.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-4.0-RC.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-4.0-RTM.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-4.3-RTM.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-4.4-RTM.md (100%) rename docs/{Release-Notes => release-notes}/NuGet-4.5-RTM.md (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-2.5/overwrite-file.png (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-2.5/update-all.png (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-2.5/verbosity.png (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-2.7/package-manager-settings.png (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-2.8/dependencyversion.png (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-2.8/multiple-packageconfigs.png (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-2.8/webmatrix-overwrite-file.png (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-2.8/webmatrix-schema-version.png (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-2.8/webmatrix-update-all.png (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-3.0-Beta/updated-ui.png (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-3.0-Preview/consolidate.png (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-3.0-Preview/dependency-behavior.png (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-3.0-Preview/file-conflict-action.png (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-3.0-Preview/infinite-scrolling.png (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-3.0-Preview/new-ui.png (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-3.0-Preview/preview.png (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-3.0-Preview/uninstall-package.png (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-3.0-Preview/update-package.png (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-3.0-Preview/version-selection.png (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-3.2/newContextMenu.png (100%) rename docs/{Release-Notes => release-notes}/media/NuGet-Config-File-Machine-Wide.png (100%) rename docs/{Release-Notes => release-notes}/media/RunAsRestricted.png (100%) rename docs/{Release-Notes => release-notes}/media/Visual-Studio-Extension-Installer.png (100%) rename docs/{Release-Notes => release-notes}/media/dlg-w-loc-packs.png (100%) rename docs/{Release-Notes => release-notes}/media/fldr-copied-loc.png (100%) rename docs/{Release-Notes => release-notes}/media/fldr-loc-packs.png (100%) rename docs/{Release-Notes => release-notes}/media/framework-profile-support.png (100%) rename docs/{Release-Notes => release-notes}/media/knownIssue-34-NoSources.PNG (100%) rename docs/{Release-Notes => release-notes}/media/manage-nuget-packages-project-selection.png (100%) rename docs/{Release-Notes => release-notes}/media/manage-nuget-packages-release-notes.png (100%) rename docs/{Release-Notes => release-notes}/media/manage-nuget-packages-solution-dialog.png (100%) rename docs/{Release-Notes => release-notes}/media/manage-nuget-packages-update-notification.png (100%) rename docs/{Release-Notes => release-notes}/media/nuget-Options.png (100%) rename docs/{Release-Notes => release-notes}/media/nuget-settings.png (100%) rename docs/{Release-Notes => release-notes}/media/package-source-with-disabled-source.png (100%) rename docs/{Release-Notes => release-notes}/media/package-visualizer.png (100%) rename docs/{Release-Notes => release-notes}/media/packagerestore-console.PNG (100%) rename docs/{Release-Notes => release-notes}/media/packagerestore-dialog.PNG (100%) rename docs/{Release-Notes => release-notes}/media/pkg-mgr-search-from-quick-launch.png (100%) rename docs/{Release-Notes => release-notes}/media/pr-consent-configdlg.png (100%) rename docs/{Release-Notes => release-notes}/media/prerelease-dropdown.PNG (100%) rename docs/{Release-Notes => release-notes}/media/quick-launch.png (100%) rename docs/{Release-Notes => release-notes}/media/releasenotes-21-cfg-hierarchy.png (100%) rename docs/{Release-Notes => release-notes}/media/releasenotes-21-edit-pkg-source.png (100%) rename docs/{Release-Notes => release-notes}/media/releasenotes-21-plib-layout.png (100%) rename docs/{Release-Notes => release-notes}/media/releasenotes-21-plib.png (100%) rename docs/{Release-Notes => release-notes}/media/releasenotes-21-vsdlg-search.png (100%) rename docs/{Release-Notes => release-notes}/media/remove-dependent-packages.png (100%) rename docs/{Tools => tools}/Package-Manager-Console.md (100%) rename docs/{Tools => tools}/Package-Manager-UI.md (100%) rename docs/{Tools => tools}/PowerShell-Reference.md (100%) rename docs/{Tools => tools}/cli-ref-add.md (100%) rename docs/{Tools => tools}/cli-ref-config.md (100%) rename docs/{Tools => tools}/cli-ref-delete.md (100%) rename docs/{Tools => tools}/cli-ref-environment-variables.md (100%) rename docs/{Tools => tools}/cli-ref-help.md (100%) rename docs/{Tools => tools}/cli-ref-init.md (100%) rename docs/{Tools => tools}/cli-ref-install.md (100%) rename docs/{Tools => tools}/cli-ref-list.md (100%) rename docs/{Tools => tools}/cli-ref-locals.md (100%) rename docs/{Tools => tools}/cli-ref-mirror.md (100%) rename docs/{Tools => tools}/cli-ref-pack.md (100%) rename docs/{Tools => tools}/cli-ref-push.md (100%) rename docs/{Tools => tools}/cli-ref-restore.md (100%) rename docs/{Tools => tools}/cli-ref-setapikey.md (100%) rename docs/{Tools => tools}/cli-ref-sources.md (100%) rename docs/{Tools => tools}/cli-ref-spec.md (100%) rename docs/{Tools => tools}/cli-ref-update.md (100%) rename docs/{Tools => tools}/dotnet-Commands.md (100%) rename docs/{Tools => tools}/media/ConsolidateTab.png (100%) rename docs/{Tools => tools}/media/InstallPreviewDialog.png (100%) rename docs/{Tools => tools}/media/ManagePackagesSolutionUICommand.png (100%) rename docs/{Tools => tools}/media/ManagePackagesUICommand.png (100%) rename docs/{Tools => tools}/media/Options.png (100%) rename docs/{Tools => tools}/media/PackageManagerConsoleControls.png (100%) rename docs/{Tools => tools}/media/PackageManagerConsoleControls1.png (100%) rename docs/{Tools => tools}/media/PackageManagerConsoleControls2.png (100%) rename docs/{Tools => tools}/media/PackageManagerConsoleControls3.png (100%) rename docs/{Tools => tools}/media/PackageManagerConsoleInstall.png (100%) rename docs/{Tools => tools}/media/PackageManagerUIAutoReferenced.png (100%) rename docs/{Tools => tools}/media/PackageManagerUIOptions.png (100%) rename docs/{Tools => tools}/media/PackageSourceDropDown.png (100%) rename docs/{Tools => tools}/media/PackageSourceSettings.png (100%) rename docs/{Tools => tools}/media/References.png (100%) rename docs/{Tools => tools}/media/Register-TabExpansion-Example.png (100%) rename docs/{Tools => tools}/media/Search.png (100%) rename docs/{Tools => tools}/media/SolutionPackagesUI.png (100%) rename docs/{Tools => tools}/media/UninstallPackage.png (100%) rename docs/{Tools => tools}/media/UpdatePackages.png (100%) rename docs/{Tools => tools}/nuget-exe-CLI-Reference.md (100%) rename docs/{Tools => tools}/ps-ref-add-bindingredirect.md (100%) rename docs/{Tools => tools}/ps-ref-find-package.md (100%) rename docs/{Tools => tools}/ps-ref-get-package.md (100%) rename docs/{Tools => tools}/ps-ref-get-project.md (100%) rename docs/{Tools => tools}/ps-ref-install-package.md (100%) rename docs/{Tools => tools}/ps-ref-open-packagepage.md (100%) rename docs/{Tools => tools}/ps-ref-register-tabexpansion.md (100%) rename docs/{Tools => tools}/ps-ref-sync-package.md (100%) rename docs/{Tools => tools}/ps-ref-uninstall-package.md (100%) rename docs/{Tools => tools}/ps-ref-update-package.md (100%) rename docs/{Visual-Studio-Extensibility => visual-studio-extensibility}/Project-System-Support.md (100%) rename docs/{Visual-Studio-Extensibility => visual-studio-extensibility}/Visual-Studio-Templates.md (100%) rename docs/{Visual-Studio-Extensibility => visual-studio-extensibility}/nuget-api-in-visual-studio.md (100%) diff --git a/docs/API/NuGet-Protocols.md b/docs/api/NuGet-Protocols.md similarity index 100% rename from docs/API/NuGet-Protocols.md rename to docs/api/NuGet-Protocols.md diff --git a/docs/API/_data/autocomplete-id-result.json b/docs/api/_data/autocomplete-id-result.json similarity index 100% rename from docs/API/_data/autocomplete-id-result.json rename to docs/api/_data/autocomplete-id-result.json diff --git a/docs/API/_data/autocomplete-version-result.json b/docs/api/_data/autocomplete-version-result.json similarity index 100% rename from docs/API/_data/autocomplete-version-result.json rename to docs/api/_data/autocomplete-version-result.json diff --git a/docs/API/_data/catalog-index.json b/docs/api/_data/catalog-index.json similarity index 100% rename from docs/API/_data/catalog-index.json rename to docs/api/_data/catalog-index.json diff --git a/docs/API/_data/catalog-package-delete.json b/docs/api/_data/catalog-package-delete.json similarity index 100% rename from docs/API/_data/catalog-package-delete.json rename to docs/api/_data/catalog-package-delete.json diff --git a/docs/API/_data/catalog-package-details.json b/docs/api/_data/catalog-package-details.json similarity index 100% rename from docs/API/_data/catalog-package-details.json rename to docs/api/_data/catalog-package-details.json diff --git a/docs/API/_data/catalog-page.json b/docs/api/_data/catalog-page.json similarity index 100% rename from docs/API/_data/catalog-page.json rename to docs/api/_data/catalog-page.json diff --git a/docs/API/_data/newtonsoft.json.6.0.4.xml b/docs/api/_data/newtonsoft.json.6.0.4.xml similarity index 100% rename from docs/API/_data/newtonsoft.json.6.0.4.xml rename to docs/api/_data/newtonsoft.json.6.0.4.xml diff --git a/docs/API/_data/package-base-address-index.json b/docs/api/_data/package-base-address-index.json similarity index 100% rename from docs/API/_data/package-base-address-index.json rename to docs/api/_data/package-base-address-index.json diff --git a/docs/API/_data/package-registration-index.json b/docs/api/_data/package-registration-index.json similarity index 100% rename from docs/API/_data/package-registration-index.json rename to docs/api/_data/package-registration-index.json diff --git a/docs/API/_data/package-registration-leaf.json b/docs/api/_data/package-registration-leaf.json similarity index 100% rename from docs/API/_data/package-registration-leaf.json rename to docs/api/_data/package-registration-leaf.json diff --git a/docs/API/_data/package-registration-page.json b/docs/api/_data/package-registration-page.json similarity index 100% rename from docs/API/_data/package-registration-page.json rename to docs/api/_data/package-registration-page.json diff --git a/docs/API/_data/search-result.json b/docs/api/_data/search-result.json similarity index 100% rename from docs/API/_data/search-result.json rename to docs/api/_data/search-result.json diff --git a/docs/API/_data/service-index.json b/docs/api/_data/service-index.json similarity index 100% rename from docs/API/_data/service-index.json rename to docs/api/_data/service-index.json diff --git a/docs/API/catalog-resource.md b/docs/api/catalog-resource.md similarity index 100% rename from docs/API/catalog-resource.md rename to docs/api/catalog-resource.md diff --git a/docs/API/overview.md b/docs/api/overview.md similarity index 100% rename from docs/API/overview.md rename to docs/api/overview.md diff --git a/docs/API/package-base-address-resource.md b/docs/api/package-base-address-resource.md similarity index 100% rename from docs/API/package-base-address-resource.md rename to docs/api/package-base-address-resource.md diff --git a/docs/API/package-publish-resource.md b/docs/api/package-publish-resource.md similarity index 100% rename from docs/API/package-publish-resource.md rename to docs/api/package-publish-resource.md diff --git a/docs/API/registration-base-url-resource.md b/docs/api/registration-base-url-resource.md similarity index 100% rename from docs/API/registration-base-url-resource.md rename to docs/api/registration-base-url-resource.md diff --git a/docs/API/report-abuse-resource.md b/docs/api/report-abuse-resource.md similarity index 100% rename from docs/API/report-abuse-resource.md rename to docs/api/report-abuse-resource.md diff --git a/docs/API/search-autocomplete-service-resource.md b/docs/api/search-autocomplete-service-resource.md similarity index 100% rename from docs/API/search-autocomplete-service-resource.md rename to docs/api/search-autocomplete-service-resource.md diff --git a/docs/API/search-query-service-resource.md b/docs/api/search-query-service-resource.md similarity index 100% rename from docs/API/search-query-service-resource.md rename to docs/api/search-query-service-resource.md diff --git a/docs/API/service-index.md b/docs/api/service-index.md similarity index 100% rename from docs/API/service-index.md rename to docs/api/service-index.md diff --git a/docs/Consume-Packages/Configuring-NuGet-Behavior.md b/docs/consume-packages/Configuring-NuGet-Behavior.md similarity index 100% rename from docs/Consume-Packages/Configuring-NuGet-Behavior.md rename to docs/consume-packages/Configuring-NuGet-Behavior.md diff --git a/docs/Consume-Packages/Dependency-Resolution.md b/docs/consume-packages/Dependency-Resolution.md similarity index 100% rename from docs/Consume-Packages/Dependency-Resolution.md rename to docs/consume-packages/Dependency-Resolution.md diff --git a/docs/Consume-Packages/Finding-and-Choosing-Packages.md b/docs/consume-packages/Finding-and-Choosing-Packages.md similarity index 100% rename from docs/Consume-Packages/Finding-and-Choosing-Packages.md rename to docs/consume-packages/Finding-and-Choosing-Packages.md diff --git a/docs/Consume-Packages/Managing-the-NuGet-Cache.md b/docs/consume-packages/Managing-the-NuGet-Cache.md similarity index 100% rename from docs/Consume-Packages/Managing-the-NuGet-Cache.md rename to docs/consume-packages/Managing-the-NuGet-Cache.md diff --git a/docs/Consume-Packages/Overview-and-Workflow.md b/docs/consume-packages/Overview-and-Workflow.md similarity index 100% rename from docs/Consume-Packages/Overview-and-Workflow.md rename to docs/consume-packages/Overview-and-Workflow.md diff --git a/docs/Consume-Packages/Package-References-in-Project-Files.md b/docs/consume-packages/Package-References-in-Project-Files.md similarity index 100% rename from docs/Consume-Packages/Package-References-in-Project-Files.md rename to docs/consume-packages/Package-References-in-Project-Files.md diff --git a/docs/Consume-Packages/Package-Restore.md b/docs/consume-packages/Package-Restore.md similarity index 100% rename from docs/Consume-Packages/Package-Restore.md rename to docs/consume-packages/Package-Restore.md diff --git a/docs/Consume-Packages/Package-restore-troubleshooting.md b/docs/consume-packages/Package-restore-troubleshooting.md similarity index 100% rename from docs/Consume-Packages/Package-restore-troubleshooting.md rename to docs/consume-packages/Package-restore-troubleshooting.md diff --git a/docs/Consume-Packages/Packages-and-Source-Control.md b/docs/consume-packages/Packages-and-Source-Control.md similarity index 100% rename from docs/Consume-Packages/Packages-and-Source-Control.md rename to docs/consume-packages/Packages-and-Source-Control.md diff --git a/docs/Consume-Packages/Reinstalling-and-Updating-Packages.md b/docs/consume-packages/Reinstalling-and-Updating-Packages.md similarity index 100% rename from docs/Consume-Packages/Reinstalling-and-Updating-Packages.md rename to docs/consume-packages/Reinstalling-and-Updating-Packages.md diff --git a/docs/Consume-Packages/Team-Foundation-Build.md b/docs/consume-packages/Team-Foundation-Build.md similarity index 100% rename from docs/Consume-Packages/Team-Foundation-Build.md rename to docs/consume-packages/Team-Foundation-Build.md diff --git a/docs/Consume-Packages/media/Finding-01-Popularity.png b/docs/consume-packages/media/Finding-01-Popularity.png similarity index 100% rename from docs/Consume-Packages/media/Finding-01-Popularity.png rename to docs/consume-packages/media/Finding-01-Popularity.png diff --git a/docs/Consume-Packages/media/Finding-02-SearchResults.png b/docs/consume-packages/media/Finding-02-SearchResults.png similarity index 100% rename from docs/Consume-Packages/media/Finding-02-SearchResults.png rename to docs/consume-packages/media/Finding-02-SearchResults.png diff --git a/docs/Consume-Packages/media/Finding-03-Downloads.png b/docs/consume-packages/media/Finding-03-Downloads.png similarity index 100% rename from docs/Consume-Packages/media/Finding-03-Downloads.png rename to docs/consume-packages/media/Finding-03-Downloads.png diff --git a/docs/Consume-Packages/media/Finding-04-VersionHistory.png b/docs/consume-packages/media/Finding-04-VersionHistory.png similarity index 100% rename from docs/Consume-Packages/media/Finding-04-VersionHistory.png rename to docs/consume-packages/media/Finding-04-VersionHistory.png diff --git a/docs/Consume-Packages/media/Finding-05-OperationChart.png b/docs/consume-packages/media/Finding-05-OperationChart.png similarity index 100% rename from docs/Consume-Packages/media/Finding-05-OperationChart.png rename to docs/consume-packages/media/Finding-05-OperationChart.png diff --git a/docs/Consume-Packages/media/Finding-06-include-prerelease.png b/docs/consume-packages/media/Finding-06-include-prerelease.png similarity index 100% rename from docs/Consume-Packages/media/Finding-06-include-prerelease.png rename to docs/consume-packages/media/Finding-06-include-prerelease.png diff --git a/docs/Consume-Packages/media/Overview-01-GeneralFlow.png b/docs/consume-packages/media/Overview-01-GeneralFlow.png similarity index 100% rename from docs/Consume-Packages/media/Overview-01-GeneralFlow.png rename to docs/consume-packages/media/Overview-01-GeneralFlow.png diff --git a/docs/Consume-Packages/media/Overview-02-RestoreFlow.png b/docs/consume-packages/media/Overview-02-RestoreFlow.png similarity index 100% rename from docs/Consume-Packages/media/Overview-02-RestoreFlow.png rename to docs/consume-packages/media/Overview-02-RestoreFlow.png diff --git a/docs/Consume-Packages/media/PackageReference-Condition.png b/docs/consume-packages/media/PackageReference-Condition.png similarity index 100% rename from docs/Consume-Packages/media/PackageReference-Condition.png rename to docs/consume-packages/media/PackageReference-Condition.png diff --git a/docs/Consume-Packages/media/PackageRestoreTeamBuildGit.png b/docs/consume-packages/media/PackageRestoreTeamBuildGit.png similarity index 100% rename from docs/Consume-Packages/media/PackageRestoreTeamBuildGit.png rename to docs/consume-packages/media/PackageRestoreTeamBuildGit.png diff --git a/docs/Consume-Packages/media/PackageRestoreTeamBuildTFVC.png b/docs/consume-packages/media/PackageRestoreTeamBuildTFVC.png similarity index 100% rename from docs/Consume-Packages/media/PackageRestoreTeamBuildTFVC.png rename to docs/consume-packages/media/PackageRestoreTeamBuildTFVC.png diff --git a/docs/Consume-Packages/media/Prerelease_02-CheckPrerelease.png b/docs/consume-packages/media/Prerelease_02-CheckPrerelease.png similarity index 100% rename from docs/Consume-Packages/media/Prerelease_02-CheckPrerelease.png rename to docs/consume-packages/media/Prerelease_02-CheckPrerelease.png diff --git a/docs/Consume-Packages/media/Restore-01-AutoRestoreOptions.png b/docs/consume-packages/media/Restore-01-AutoRestoreOptions.png similarity index 100% rename from docs/Consume-Packages/media/Restore-01-AutoRestoreOptions.png rename to docs/consume-packages/media/Restore-01-AutoRestoreOptions.png diff --git a/docs/Consume-Packages/media/Restore-02-VSTSBuild.png b/docs/consume-packages/media/Restore-02-VSTSBuild.png similarity index 100% rename from docs/Consume-Packages/media/Restore-02-VSTSBuild.png rename to docs/consume-packages/media/Restore-02-VSTSBuild.png diff --git a/docs/Consume-Packages/media/Symbols_01-AddingSource.png b/docs/consume-packages/media/Symbols_01-AddingSource.png similarity index 100% rename from docs/Consume-Packages/media/Symbols_01-AddingSource.png rename to docs/consume-packages/media/Symbols_01-AddingSource.png diff --git a/docs/Consume-Packages/media/projectJson-dependency-1.png b/docs/consume-packages/media/projectJson-dependency-1.png similarity index 100% rename from docs/Consume-Packages/media/projectJson-dependency-1.png rename to docs/consume-packages/media/projectJson-dependency-1.png diff --git a/docs/Consume-Packages/media/projectJson-dependency-2.png b/docs/consume-packages/media/projectJson-dependency-2.png similarity index 100% rename from docs/Consume-Packages/media/projectJson-dependency-2.png rename to docs/consume-packages/media/projectJson-dependency-2.png diff --git a/docs/Consume-Packages/media/projectJson-dependency-3.png b/docs/consume-packages/media/projectJson-dependency-3.png similarity index 100% rename from docs/Consume-Packages/media/projectJson-dependency-3.png rename to docs/consume-packages/media/projectJson-dependency-3.png diff --git a/docs/Consume-Packages/media/projectJson-dependency-4.png b/docs/consume-packages/media/projectJson-dependency-4.png similarity index 100% rename from docs/Consume-Packages/media/projectJson-dependency-4.png rename to docs/consume-packages/media/projectJson-dependency-4.png diff --git a/docs/Consume-Packages/media/projectJson-dependency-5.png b/docs/consume-packages/media/projectJson-dependency-5.png similarity index 100% rename from docs/Consume-Packages/media/projectJson-dependency-5.png rename to docs/consume-packages/media/projectJson-dependency-5.png diff --git a/docs/Consume-Packages/media/projectJson-dependency-6.png b/docs/consume-packages/media/projectJson-dependency-6.png similarity index 100% rename from docs/Consume-Packages/media/projectJson-dependency-6.png rename to docs/consume-packages/media/projectJson-dependency-6.png diff --git a/docs/Consume-Packages/media/projectJson-dependency-7.png b/docs/consume-packages/media/projectJson-dependency-7.png similarity index 100% rename from docs/Consume-Packages/media/projectJson-dependency-7.png rename to docs/consume-packages/media/projectJson-dependency-7.png diff --git a/docs/Consume-Packages/media/projectJson-dependency-8.png b/docs/consume-packages/media/projectJson-dependency-8.png similarity index 100% rename from docs/Consume-Packages/media/projectJson-dependency-8.png rename to docs/consume-packages/media/projectJson-dependency-8.png diff --git a/docs/Create-Packages/Creating-Localized-Packages.md b/docs/create-packages/Creating-Localized-Packages.md similarity index 100% rename from docs/Create-Packages/Creating-Localized-Packages.md rename to docs/create-packages/Creating-Localized-Packages.md diff --git a/docs/Create-Packages/Creating-a-Package.md b/docs/create-packages/Creating-a-Package.md similarity index 100% rename from docs/Create-Packages/Creating-a-Package.md rename to docs/create-packages/Creating-a-Package.md diff --git a/docs/Create-Packages/Native-Packages.md b/docs/create-packages/Native-Packages.md similarity index 100% rename from docs/Create-Packages/Native-Packages.md rename to docs/create-packages/Native-Packages.md diff --git a/docs/Create-Packages/Overview-and-Workflow.md b/docs/create-packages/Overview-and-Workflow.md similarity index 100% rename from docs/Create-Packages/Overview-and-Workflow.md rename to docs/create-packages/Overview-and-Workflow.md diff --git a/docs/Create-Packages/Prerelease-Packages.md b/docs/create-packages/Prerelease-Packages.md similarity index 100% rename from docs/Create-Packages/Prerelease-Packages.md rename to docs/create-packages/Prerelease-Packages.md diff --git a/docs/Create-Packages/Publish-a-package.md b/docs/create-packages/Publish-a-package.md similarity index 100% rename from docs/Create-Packages/Publish-a-package.md rename to docs/create-packages/Publish-a-package.md diff --git a/docs/Create-Packages/Source-and-Config-File-Transformations.md b/docs/create-packages/Source-and-Config-File-Transformations.md similarity index 100% rename from docs/Create-Packages/Source-and-Config-File-Transformations.md rename to docs/create-packages/Source-and-Config-File-Transformations.md diff --git a/docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md b/docs/create-packages/Supporting-Multiple-Target-Frameworks.md similarity index 100% rename from docs/Create-Packages/Supporting-Multiple-Target-Frameworks.md rename to docs/create-packages/Supporting-Multiple-Target-Frameworks.md diff --git a/docs/Create-Packages/Symbol-Packages.md b/docs/create-packages/Symbol-Packages.md similarity index 100% rename from docs/Create-Packages/Symbol-Packages.md rename to docs/create-packages/Symbol-Packages.md diff --git a/docs/Create-Packages/media/Create_01-ShowReadme.png b/docs/create-packages/media/Create_01-ShowReadme.png similarity index 100% rename from docs/Create-Packages/media/Create_01-ShowReadme.png rename to docs/create-packages/media/Create_01-ShowReadme.png diff --git a/docs/Create-Packages/media/Prerelease_01-LatestStable.png b/docs/create-packages/media/Prerelease_01-LatestStable.png similarity index 100% rename from docs/Create-Packages/media/Prerelease_01-LatestStable.png rename to docs/create-packages/media/Prerelease_01-LatestStable.png diff --git a/docs/Create-Packages/media/Prerelease_02-CheckPrerelease.png b/docs/create-packages/media/Prerelease_02-CheckPrerelease.png similarity index 100% rename from docs/Create-Packages/media/Prerelease_02-CheckPrerelease.png rename to docs/create-packages/media/Prerelease_02-CheckPrerelease.png diff --git a/docs/Create-Packages/media/publish_APIKey.png b/docs/create-packages/media/publish_APIKey.png similarity index 100% rename from docs/Create-Packages/media/publish_APIKey.png rename to docs/create-packages/media/publish_APIKey.png diff --git a/docs/Create-Packages/media/publish_NotYetIndexed.png b/docs/create-packages/media/publish_NotYetIndexed.png similarity index 100% rename from docs/Create-Packages/media/publish_NotYetIndexed.png rename to docs/create-packages/media/publish_NotYetIndexed.png diff --git a/docs/Create-Packages/media/publish_NuGetSignIn.PNG b/docs/create-packages/media/publish_NuGetSignIn.PNG similarity index 100% rename from docs/Create-Packages/media/publish_NuGetSignIn.PNG rename to docs/create-packages/media/publish_NuGetSignIn.PNG diff --git a/docs/Create-Packages/media/publish_UploadYourPackage.PNG b/docs/create-packages/media/publish_UploadYourPackage.PNG similarity index 100% rename from docs/Create-Packages/media/publish_UploadYourPackage.PNG rename to docs/create-packages/media/publish_UploadYourPackage.PNG diff --git a/docs/Hosting-Packages/Local-Feeds.md b/docs/hosting-packages/Local-Feeds.md similarity index 100% rename from docs/Hosting-Packages/Local-Feeds.md rename to docs/hosting-packages/Local-Feeds.md diff --git a/docs/Hosting-Packages/NuGet-Server.md b/docs/hosting-packages/NuGet-Server.md similarity index 100% rename from docs/Hosting-Packages/NuGet-Server.md rename to docs/hosting-packages/NuGet-Server.md diff --git a/docs/Hosting-Packages/Overview.md b/docs/hosting-packages/Overview.md similarity index 100% rename from docs/Hosting-Packages/Overview.md rename to docs/hosting-packages/Overview.md diff --git a/docs/Hosting-Packages/media/Hosting_01-NuGet.Server-Set4.6.png b/docs/hosting-packages/media/Hosting_01-NuGet.Server-Set4.6.png similarity index 100% rename from docs/Hosting-Packages/media/Hosting_01-NuGet.Server-Set4.6.png rename to docs/hosting-packages/media/Hosting_01-NuGet.Server-Set4.6.png diff --git a/docs/Hosting-Packages/media/Hosting_02-NuGet.Server-Package.png b/docs/hosting-packages/media/Hosting_02-NuGet.Server-Package.png similarity index 100% rename from docs/Hosting-Packages/media/Hosting_02-NuGet.Server-Package.png rename to docs/hosting-packages/media/Hosting_02-NuGet.Server-Package.png diff --git a/docs/Hosting-Packages/media/Hosting_03-NuGet.Server-Package-Folder.png b/docs/hosting-packages/media/Hosting_03-NuGet.Server-Package-Folder.png similarity index 100% rename from docs/Hosting-Packages/media/Hosting_03-NuGet.Server-Package-Folder.png rename to docs/hosting-packages/media/Hosting_03-NuGet.Server-Package-Folder.png diff --git a/docs/Hosting-Packages/media/Hosting_04-NuGet.Server-FeedHomePage.png b/docs/hosting-packages/media/Hosting_04-NuGet.Server-FeedHomePage.png similarity index 100% rename from docs/Hosting-Packages/media/Hosting_04-NuGet.Server-FeedHomePage.png rename to docs/hosting-packages/media/Hosting_04-NuGet.Server-FeedHomePage.png 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 similarity index 100% rename from docs/Quickstart/create-and-publish-a-package-using-the-dotnet-cli.md rename to docs/quickstart/create-and-publish-a-package-using-the-dotnet-cli.md diff --git a/docs/Quickstart/create-and-publish-a-package-using-visual-studio.md b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md similarity index 100% rename from docs/Quickstart/create-and-publish-a-package-using-visual-studio.md rename to docs/quickstart/create-and-publish-a-package-using-visual-studio.md diff --git a/docs/Quickstart/includes/publish-api-key.md b/docs/quickstart/includes/publish-api-key.md similarity index 100% rename from docs/Quickstart/includes/publish-api-key.md rename to docs/quickstart/includes/publish-api-key.md diff --git a/docs/Quickstart/includes/publish-dotnet.md b/docs/quickstart/includes/publish-dotnet.md similarity index 100% rename from docs/Quickstart/includes/publish-dotnet.md rename to docs/quickstart/includes/publish-dotnet.md diff --git a/docs/Quickstart/includes/publish-errors.md b/docs/quickstart/includes/publish-errors.md similarity index 100% rename from docs/Quickstart/includes/publish-errors.md rename to docs/quickstart/includes/publish-errors.md diff --git a/docs/Quickstart/includes/publish-manage.md b/docs/quickstart/includes/publish-manage.md similarity index 100% rename from docs/Quickstart/includes/publish-manage.md rename to docs/quickstart/includes/publish-manage.md diff --git a/docs/Quickstart/includes/publish-notes.md b/docs/quickstart/includes/publish-notes.md similarity index 100% rename from docs/Quickstart/includes/publish-notes.md rename to docs/quickstart/includes/publish-notes.md diff --git a/docs/Quickstart/install-and-use-a-package-in-visual-studio.md b/docs/quickstart/install-and-use-a-package-in-visual-studio.md similarity index 100% rename from docs/Quickstart/install-and-use-a-package-in-visual-studio.md rename to docs/quickstart/install-and-use-a-package-in-visual-studio.md 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 similarity index 100% rename from docs/Quickstart/install-and-use-a-package-using-the-dotnet-cli.md rename to docs/quickstart/install-and-use-a-package-using-the-dotnet-cli.md diff --git a/docs/Quickstart/media/QS_Create-01-NewProject.png b/docs/quickstart/media/QS_Create-01-NewProject.png similarity index 100% rename from docs/Quickstart/media/QS_Create-01-NewProject.png rename to docs/quickstart/media/QS_Create-01-NewProject.png diff --git a/docs/Quickstart/media/QS_Create-02-APIKey.png b/docs/quickstart/media/QS_Create-02-APIKey.png similarity index 100% rename from docs/Quickstart/media/QS_Create-02-APIKey.png rename to docs/quickstart/media/QS_Create-02-APIKey.png diff --git a/docs/Quickstart/media/QS_Create-03-NotIndexed.png b/docs/quickstart/media/QS_Create-03-NotIndexed.png similarity index 100% rename from docs/Quickstart/media/QS_Create-03-NotIndexed.png rename to docs/quickstart/media/QS_Create-03-NotIndexed.png diff --git a/docs/Quickstart/media/QS_Restore-01-ToolsOptions.png b/docs/quickstart/media/QS_Restore-01-ToolsOptions.png similarity index 100% rename from docs/Quickstart/media/QS_Restore-01-ToolsOptions.png rename to docs/quickstart/media/QS_Restore-01-ToolsOptions.png diff --git a/docs/Quickstart/media/QS_Use-01-NewProject.png b/docs/quickstart/media/QS_Use-01-NewProject.png similarity index 100% rename from docs/Quickstart/media/QS_Use-01-NewProject.png rename to docs/quickstart/media/QS_Use-01-NewProject.png diff --git a/docs/Quickstart/media/QS_Use-02-ManageNuGetPackages.png b/docs/quickstart/media/QS_Use-02-ManageNuGetPackages.png similarity index 100% rename from docs/Quickstart/media/QS_Use-02-ManageNuGetPackages.png rename to docs/quickstart/media/QS_Use-02-ManageNuGetPackages.png diff --git a/docs/Quickstart/media/QS_Use-03-NewtonsoftJson.png b/docs/quickstart/media/QS_Use-03-NewtonsoftJson.png similarity index 100% rename from docs/Quickstart/media/QS_Use-03-NewtonsoftJson.png rename to docs/quickstart/media/QS_Use-03-NewtonsoftJson.png diff --git a/docs/Quickstart/media/QS_Use-03b-SelectFormat.png b/docs/quickstart/media/QS_Use-03b-SelectFormat.png similarity index 100% rename from docs/Quickstart/media/QS_Use-03b-SelectFormat.png rename to docs/quickstart/media/QS_Use-03b-SelectFormat.png diff --git a/docs/Quickstart/media/QS_Use-04-ShowPotentialFixes.png b/docs/quickstart/media/QS_Use-04-ShowPotentialFixes.png similarity index 100% rename from docs/Quickstart/media/QS_Use-04-ShowPotentialFixes.png rename to docs/quickstart/media/QS_Use-04-ShowPotentialFixes.png diff --git a/docs/Quickstart/media/QS_Use-05-AddUsing.png b/docs/quickstart/media/QS_Use-05-AddUsing.png similarity index 100% rename from docs/Quickstart/media/QS_Use-05-AddUsing.png rename to docs/quickstart/media/QS_Use-05-AddUsing.png diff --git a/docs/Quickstart/media/QS_Use-06-AppStart.png b/docs/quickstart/media/QS_Use-06-AppStart.png similarity index 100% rename from docs/Quickstart/media/QS_Use-06-AppStart.png rename to docs/quickstart/media/QS_Use-06-AppStart.png diff --git a/docs/Quickstart/media/QS_Use-07-AppEnd.png b/docs/quickstart/media/QS_Use-07-AppEnd.png similarity index 100% rename from docs/Quickstart/media/QS_Use-07-AppEnd.png rename to docs/quickstart/media/QS_Use-07-AppEnd.png diff --git a/docs/Quickstart/media/QS_Use-08-Console1.png b/docs/quickstart/media/QS_Use-08-Console1.png similarity index 100% rename from docs/Quickstart/media/QS_Use-08-Console1.png rename to docs/quickstart/media/QS_Use-08-Console1.png diff --git a/docs/Quickstart/media/qs_create-vs-01-package-properties.png b/docs/quickstart/media/qs_create-vs-01-package-properties.png similarity index 100% rename from docs/Quickstart/media/qs_create-vs-01-package-properties.png rename to docs/quickstart/media/qs_create-vs-01-package-properties.png diff --git a/docs/Quickstart/media/qs_create-vs-02-pack-command.png b/docs/quickstart/media/qs_create-vs-02-pack-command.png similarity index 100% rename from docs/Quickstart/media/qs_create-vs-02-pack-command.png rename to docs/quickstart/media/qs_create-vs-02-pack-command.png diff --git a/docs/Quickstart/media/qs_create-vs-03-trash-can.png b/docs/quickstart/media/qs_create-vs-03-trash-can.png similarity index 100% rename from docs/Quickstart/media/qs_create-vs-03-trash-can.png rename to docs/quickstart/media/qs_create-vs-03-trash-can.png diff --git a/docs/Quickstart/media/qs_create-vs-04-unlist.png b/docs/quickstart/media/qs_create-vs-04-unlist.png similarity index 100% rename from docs/Quickstart/media/qs_create-vs-04-unlist.png rename to docs/quickstart/media/qs_create-vs-04-unlist.png diff --git a/docs/Release-Notes/Index.md b/docs/release-notes/Index.md similarity index 100% rename from docs/Release-Notes/Index.md rename to docs/release-notes/Index.md diff --git a/docs/Release-Notes/Known-Issues.md b/docs/release-notes/Known-Issues.md similarity index 100% rename from docs/Release-Notes/Known-Issues.md rename to docs/release-notes/Known-Issues.md diff --git a/docs/Release-Notes/NuGet-1.1.md b/docs/release-notes/NuGet-1.1.md similarity index 100% rename from docs/Release-Notes/NuGet-1.1.md rename to docs/release-notes/NuGet-1.1.md diff --git a/docs/Release-Notes/NuGet-1.2.md b/docs/release-notes/NuGet-1.2.md similarity index 100% rename from docs/Release-Notes/NuGet-1.2.md rename to docs/release-notes/NuGet-1.2.md diff --git a/docs/Release-Notes/NuGet-1.3.md b/docs/release-notes/NuGet-1.3.md similarity index 100% rename from docs/Release-Notes/NuGet-1.3.md rename to docs/release-notes/NuGet-1.3.md diff --git a/docs/Release-Notes/NuGet-1.4.md b/docs/release-notes/NuGet-1.4.md similarity index 100% rename from docs/Release-Notes/NuGet-1.4.md rename to docs/release-notes/NuGet-1.4.md diff --git a/docs/Release-Notes/NuGet-1.5.md b/docs/release-notes/NuGet-1.5.md similarity index 100% rename from docs/Release-Notes/NuGet-1.5.md rename to docs/release-notes/NuGet-1.5.md diff --git a/docs/Release-Notes/NuGet-1.6.md b/docs/release-notes/NuGet-1.6.md similarity index 100% rename from docs/Release-Notes/NuGet-1.6.md rename to docs/release-notes/NuGet-1.6.md diff --git a/docs/Release-Notes/NuGet-1.7.md b/docs/release-notes/NuGet-1.7.md similarity index 100% rename from docs/Release-Notes/NuGet-1.7.md rename to docs/release-notes/NuGet-1.7.md diff --git a/docs/Release-Notes/NuGet-1.8.md b/docs/release-notes/NuGet-1.8.md similarity index 100% rename from docs/Release-Notes/NuGet-1.8.md rename to docs/release-notes/NuGet-1.8.md diff --git a/docs/Release-Notes/NuGet-2.0.md b/docs/release-notes/NuGet-2.0.md similarity index 100% rename from docs/Release-Notes/NuGet-2.0.md rename to docs/release-notes/NuGet-2.0.md diff --git a/docs/Release-Notes/NuGet-2.1.md b/docs/release-notes/NuGet-2.1.md similarity index 100% rename from docs/Release-Notes/NuGet-2.1.md rename to docs/release-notes/NuGet-2.1.md diff --git a/docs/Release-Notes/NuGet-2.12-RC.md b/docs/release-notes/NuGet-2.12-RC.md similarity index 100% rename from docs/Release-Notes/NuGet-2.12-RC.md rename to docs/release-notes/NuGet-2.12-RC.md diff --git a/docs/Release-Notes/NuGet-2.12.md b/docs/release-notes/NuGet-2.12.md similarity index 100% rename from docs/Release-Notes/NuGet-2.12.md rename to docs/release-notes/NuGet-2.12.md diff --git a/docs/Release-Notes/NuGet-2.2.1.md b/docs/release-notes/NuGet-2.2.1.md similarity index 100% rename from docs/Release-Notes/NuGet-2.2.1.md rename to docs/release-notes/NuGet-2.2.1.md diff --git a/docs/Release-Notes/NuGet-2.2.md b/docs/release-notes/NuGet-2.2.md similarity index 100% rename from docs/Release-Notes/NuGet-2.2.md rename to docs/release-notes/NuGet-2.2.md diff --git a/docs/Release-Notes/NuGet-2.5.md b/docs/release-notes/NuGet-2.5.md similarity index 100% rename from docs/Release-Notes/NuGet-2.5.md rename to docs/release-notes/NuGet-2.5.md diff --git a/docs/Release-Notes/NuGet-2.6.1-for-WebMatrix.md b/docs/release-notes/NuGet-2.6.1-for-WebMatrix.md similarity index 100% rename from docs/Release-Notes/NuGet-2.6.1-for-WebMatrix.md rename to docs/release-notes/NuGet-2.6.1-for-WebMatrix.md diff --git a/docs/Release-Notes/NuGet-2.6.md b/docs/release-notes/NuGet-2.6.md similarity index 100% rename from docs/Release-Notes/NuGet-2.6.md rename to docs/release-notes/NuGet-2.6.md diff --git a/docs/Release-Notes/NuGet-2.7.1.md b/docs/release-notes/NuGet-2.7.1.md similarity index 100% rename from docs/Release-Notes/NuGet-2.7.1.md rename to docs/release-notes/NuGet-2.7.1.md diff --git a/docs/Release-Notes/NuGet-2.7.2.md b/docs/release-notes/NuGet-2.7.2.md similarity index 100% rename from docs/Release-Notes/NuGet-2.7.2.md rename to docs/release-notes/NuGet-2.7.2.md diff --git a/docs/Release-Notes/NuGet-2.7.md b/docs/release-notes/NuGet-2.7.md similarity index 100% rename from docs/Release-Notes/NuGet-2.7.md rename to docs/release-notes/NuGet-2.7.md diff --git a/docs/Release-Notes/NuGet-2.8.1.md b/docs/release-notes/NuGet-2.8.1.md similarity index 100% rename from docs/Release-Notes/NuGet-2.8.1.md rename to docs/release-notes/NuGet-2.8.1.md diff --git a/docs/Release-Notes/NuGet-2.8.2.md b/docs/release-notes/NuGet-2.8.2.md similarity index 100% rename from docs/Release-Notes/NuGet-2.8.2.md rename to docs/release-notes/NuGet-2.8.2.md diff --git a/docs/Release-Notes/NuGet-2.8.3.md b/docs/release-notes/NuGet-2.8.3.md similarity index 100% rename from docs/Release-Notes/NuGet-2.8.3.md rename to docs/release-notes/NuGet-2.8.3.md diff --git a/docs/Release-Notes/NuGet-2.8.5.md b/docs/release-notes/NuGet-2.8.5.md similarity index 100% rename from docs/Release-Notes/NuGet-2.8.5.md rename to docs/release-notes/NuGet-2.8.5.md diff --git a/docs/Release-Notes/NuGet-2.8.6.md b/docs/release-notes/NuGet-2.8.6.md similarity index 100% rename from docs/Release-Notes/NuGet-2.8.6.md rename to docs/release-notes/NuGet-2.8.6.md diff --git a/docs/Release-Notes/NuGet-2.8.7.md b/docs/release-notes/NuGet-2.8.7.md similarity index 100% rename from docs/Release-Notes/NuGet-2.8.7.md rename to docs/release-notes/NuGet-2.8.7.md diff --git a/docs/Release-Notes/NuGet-2.8.md b/docs/release-notes/NuGet-2.8.md similarity index 100% rename from docs/Release-Notes/NuGet-2.8.md rename to docs/release-notes/NuGet-2.8.md diff --git a/docs/Release-Notes/NuGet-2.9-RC.md b/docs/release-notes/NuGet-2.9-RC.md similarity index 100% rename from docs/Release-Notes/NuGet-2.9-RC.md rename to docs/release-notes/NuGet-2.9-RC.md diff --git a/docs/Release-Notes/NuGet-3.0-Beta.md b/docs/release-notes/NuGet-3.0-Beta.md similarity index 100% rename from docs/Release-Notes/NuGet-3.0-Beta.md rename to docs/release-notes/NuGet-3.0-Beta.md diff --git a/docs/Release-Notes/NuGet-3.0-Preview.md b/docs/release-notes/NuGet-3.0-Preview.md similarity index 100% rename from docs/Release-Notes/NuGet-3.0-Preview.md rename to docs/release-notes/NuGet-3.0-Preview.md diff --git a/docs/Release-Notes/NuGet-3.0-RC.md b/docs/release-notes/NuGet-3.0-RC.md similarity index 100% rename from docs/Release-Notes/NuGet-3.0-RC.md rename to docs/release-notes/NuGet-3.0-RC.md diff --git a/docs/Release-Notes/NuGet-3.0-RC2.md b/docs/release-notes/NuGet-3.0-RC2.md similarity index 100% rename from docs/Release-Notes/NuGet-3.0-RC2.md rename to docs/release-notes/NuGet-3.0-RC2.md diff --git a/docs/Release-Notes/NuGet-3.0.0.md b/docs/release-notes/NuGet-3.0.0.md similarity index 100% rename from docs/Release-Notes/NuGet-3.0.0.md rename to docs/release-notes/NuGet-3.0.0.md diff --git a/docs/Release-Notes/NuGet-3.1.1.md b/docs/release-notes/NuGet-3.1.1.md similarity index 100% rename from docs/Release-Notes/NuGet-3.1.1.md rename to docs/release-notes/NuGet-3.1.1.md diff --git a/docs/Release-Notes/NuGet-3.1.md b/docs/release-notes/NuGet-3.1.md similarity index 100% rename from docs/Release-Notes/NuGet-3.1.md rename to docs/release-notes/NuGet-3.1.md diff --git a/docs/Release-Notes/NuGet-3.2-RC.md b/docs/release-notes/NuGet-3.2-RC.md similarity index 100% rename from docs/Release-Notes/NuGet-3.2-RC.md rename to docs/release-notes/NuGet-3.2-RC.md diff --git a/docs/Release-Notes/NuGet-3.2.1.md b/docs/release-notes/NuGet-3.2.1.md similarity index 100% rename from docs/Release-Notes/NuGet-3.2.1.md rename to docs/release-notes/NuGet-3.2.1.md diff --git a/docs/Release-Notes/NuGet-3.2.md b/docs/release-notes/NuGet-3.2.md similarity index 100% rename from docs/Release-Notes/NuGet-3.2.md rename to docs/release-notes/NuGet-3.2.md diff --git a/docs/Release-Notes/NuGet-3.3.md b/docs/release-notes/NuGet-3.3.md similarity index 100% rename from docs/Release-Notes/NuGet-3.3.md rename to docs/release-notes/NuGet-3.3.md diff --git a/docs/Release-Notes/NuGet-3.4-RC.md b/docs/release-notes/NuGet-3.4-RC.md similarity index 100% rename from docs/Release-Notes/NuGet-3.4-RC.md rename to docs/release-notes/NuGet-3.4-RC.md diff --git a/docs/Release-Notes/NuGet-3.4.1.md b/docs/release-notes/NuGet-3.4.1.md similarity index 100% rename from docs/Release-Notes/NuGet-3.4.1.md rename to docs/release-notes/NuGet-3.4.1.md diff --git a/docs/Release-Notes/NuGet-3.4.2.md b/docs/release-notes/NuGet-3.4.2.md similarity index 100% rename from docs/Release-Notes/NuGet-3.4.2.md rename to docs/release-notes/NuGet-3.4.2.md diff --git a/docs/Release-Notes/NuGet-3.4.3.md b/docs/release-notes/NuGet-3.4.3.md similarity index 100% rename from docs/Release-Notes/NuGet-3.4.3.md rename to docs/release-notes/NuGet-3.4.3.md diff --git a/docs/Release-Notes/NuGet-3.4.4.md b/docs/release-notes/NuGet-3.4.4.md similarity index 100% rename from docs/Release-Notes/NuGet-3.4.4.md rename to docs/release-notes/NuGet-3.4.4.md diff --git a/docs/Release-Notes/NuGet-3.4.md b/docs/release-notes/NuGet-3.4.md similarity index 100% rename from docs/Release-Notes/NuGet-3.4.md rename to docs/release-notes/NuGet-3.4.md diff --git a/docs/Release-Notes/NuGet-3.5-Beta.md b/docs/release-notes/NuGet-3.5-Beta.md similarity index 100% rename from docs/Release-Notes/NuGet-3.5-Beta.md rename to docs/release-notes/NuGet-3.5-Beta.md diff --git a/docs/Release-Notes/NuGet-3.5-Beta2.md b/docs/release-notes/NuGet-3.5-Beta2.md similarity index 100% rename from docs/Release-Notes/NuGet-3.5-Beta2.md rename to docs/release-notes/NuGet-3.5-Beta2.md diff --git a/docs/Release-Notes/NuGet-3.5-RC.md b/docs/release-notes/NuGet-3.5-RC.md similarity index 100% rename from docs/Release-Notes/NuGet-3.5-RC.md rename to docs/release-notes/NuGet-3.5-RC.md diff --git a/docs/Release-Notes/NuGet-3.5-RTM.md b/docs/release-notes/NuGet-3.5-RTM.md similarity index 100% rename from docs/Release-Notes/NuGet-3.5-RTM.md rename to docs/release-notes/NuGet-3.5-RTM.md diff --git a/docs/Release-Notes/NuGet-4.0-RC.md b/docs/release-notes/NuGet-4.0-RC.md similarity index 100% rename from docs/Release-Notes/NuGet-4.0-RC.md rename to docs/release-notes/NuGet-4.0-RC.md diff --git a/docs/Release-Notes/NuGet-4.0-RTM.md b/docs/release-notes/NuGet-4.0-RTM.md similarity index 100% rename from docs/Release-Notes/NuGet-4.0-RTM.md rename to docs/release-notes/NuGet-4.0-RTM.md diff --git a/docs/Release-Notes/NuGet-4.3-RTM.md b/docs/release-notes/NuGet-4.3-RTM.md similarity index 100% rename from docs/Release-Notes/NuGet-4.3-RTM.md rename to docs/release-notes/NuGet-4.3-RTM.md diff --git a/docs/Release-Notes/NuGet-4.4-RTM.md b/docs/release-notes/NuGet-4.4-RTM.md similarity index 100% rename from docs/Release-Notes/NuGet-4.4-RTM.md rename to docs/release-notes/NuGet-4.4-RTM.md diff --git a/docs/Release-Notes/NuGet-4.5-RTM.md b/docs/release-notes/NuGet-4.5-RTM.md similarity index 100% rename from docs/Release-Notes/NuGet-4.5-RTM.md rename to docs/release-notes/NuGet-4.5-RTM.md diff --git a/docs/Release-Notes/media/NuGet-2.5/overwrite-file.png b/docs/release-notes/media/NuGet-2.5/overwrite-file.png similarity index 100% rename from docs/Release-Notes/media/NuGet-2.5/overwrite-file.png rename to docs/release-notes/media/NuGet-2.5/overwrite-file.png diff --git a/docs/Release-Notes/media/NuGet-2.5/update-all.png b/docs/release-notes/media/NuGet-2.5/update-all.png similarity index 100% rename from docs/Release-Notes/media/NuGet-2.5/update-all.png rename to docs/release-notes/media/NuGet-2.5/update-all.png diff --git a/docs/Release-Notes/media/NuGet-2.5/verbosity.png b/docs/release-notes/media/NuGet-2.5/verbosity.png similarity index 100% rename from docs/Release-Notes/media/NuGet-2.5/verbosity.png rename to docs/release-notes/media/NuGet-2.5/verbosity.png diff --git a/docs/Release-Notes/media/NuGet-2.7/package-manager-settings.png b/docs/release-notes/media/NuGet-2.7/package-manager-settings.png similarity index 100% rename from docs/Release-Notes/media/NuGet-2.7/package-manager-settings.png rename to docs/release-notes/media/NuGet-2.7/package-manager-settings.png diff --git a/docs/Release-Notes/media/NuGet-2.8/dependencyversion.png b/docs/release-notes/media/NuGet-2.8/dependencyversion.png similarity index 100% rename from docs/Release-Notes/media/NuGet-2.8/dependencyversion.png rename to docs/release-notes/media/NuGet-2.8/dependencyversion.png diff --git a/docs/Release-Notes/media/NuGet-2.8/multiple-packageconfigs.png b/docs/release-notes/media/NuGet-2.8/multiple-packageconfigs.png similarity index 100% rename from docs/Release-Notes/media/NuGet-2.8/multiple-packageconfigs.png rename to docs/release-notes/media/NuGet-2.8/multiple-packageconfigs.png diff --git a/docs/Release-Notes/media/NuGet-2.8/webmatrix-overwrite-file.png b/docs/release-notes/media/NuGet-2.8/webmatrix-overwrite-file.png similarity index 100% rename from docs/Release-Notes/media/NuGet-2.8/webmatrix-overwrite-file.png rename to docs/release-notes/media/NuGet-2.8/webmatrix-overwrite-file.png diff --git a/docs/Release-Notes/media/NuGet-2.8/webmatrix-schema-version.png b/docs/release-notes/media/NuGet-2.8/webmatrix-schema-version.png similarity index 100% rename from docs/Release-Notes/media/NuGet-2.8/webmatrix-schema-version.png rename to docs/release-notes/media/NuGet-2.8/webmatrix-schema-version.png diff --git a/docs/Release-Notes/media/NuGet-2.8/webmatrix-update-all.png b/docs/release-notes/media/NuGet-2.8/webmatrix-update-all.png similarity index 100% rename from docs/Release-Notes/media/NuGet-2.8/webmatrix-update-all.png rename to docs/release-notes/media/NuGet-2.8/webmatrix-update-all.png diff --git a/docs/Release-Notes/media/NuGet-3.0-Beta/updated-ui.png b/docs/release-notes/media/NuGet-3.0-Beta/updated-ui.png similarity index 100% rename from docs/Release-Notes/media/NuGet-3.0-Beta/updated-ui.png rename to docs/release-notes/media/NuGet-3.0-Beta/updated-ui.png diff --git a/docs/Release-Notes/media/NuGet-3.0-Preview/consolidate.png b/docs/release-notes/media/NuGet-3.0-Preview/consolidate.png similarity index 100% rename from docs/Release-Notes/media/NuGet-3.0-Preview/consolidate.png rename to docs/release-notes/media/NuGet-3.0-Preview/consolidate.png diff --git a/docs/Release-Notes/media/NuGet-3.0-Preview/dependency-behavior.png b/docs/release-notes/media/NuGet-3.0-Preview/dependency-behavior.png similarity index 100% rename from docs/Release-Notes/media/NuGet-3.0-Preview/dependency-behavior.png rename to docs/release-notes/media/NuGet-3.0-Preview/dependency-behavior.png diff --git a/docs/Release-Notes/media/NuGet-3.0-Preview/file-conflict-action.png b/docs/release-notes/media/NuGet-3.0-Preview/file-conflict-action.png similarity index 100% rename from docs/Release-Notes/media/NuGet-3.0-Preview/file-conflict-action.png rename to docs/release-notes/media/NuGet-3.0-Preview/file-conflict-action.png diff --git a/docs/Release-Notes/media/NuGet-3.0-Preview/infinite-scrolling.png b/docs/release-notes/media/NuGet-3.0-Preview/infinite-scrolling.png similarity index 100% rename from docs/Release-Notes/media/NuGet-3.0-Preview/infinite-scrolling.png rename to docs/release-notes/media/NuGet-3.0-Preview/infinite-scrolling.png diff --git a/docs/Release-Notes/media/NuGet-3.0-Preview/new-ui.png b/docs/release-notes/media/NuGet-3.0-Preview/new-ui.png similarity index 100% rename from docs/Release-Notes/media/NuGet-3.0-Preview/new-ui.png rename to docs/release-notes/media/NuGet-3.0-Preview/new-ui.png diff --git a/docs/Release-Notes/media/NuGet-3.0-Preview/preview.png b/docs/release-notes/media/NuGet-3.0-Preview/preview.png similarity index 100% rename from docs/Release-Notes/media/NuGet-3.0-Preview/preview.png rename to docs/release-notes/media/NuGet-3.0-Preview/preview.png diff --git a/docs/Release-Notes/media/NuGet-3.0-Preview/uninstall-package.png b/docs/release-notes/media/NuGet-3.0-Preview/uninstall-package.png similarity index 100% rename from docs/Release-Notes/media/NuGet-3.0-Preview/uninstall-package.png rename to docs/release-notes/media/NuGet-3.0-Preview/uninstall-package.png diff --git a/docs/Release-Notes/media/NuGet-3.0-Preview/update-package.png b/docs/release-notes/media/NuGet-3.0-Preview/update-package.png similarity index 100% rename from docs/Release-Notes/media/NuGet-3.0-Preview/update-package.png rename to docs/release-notes/media/NuGet-3.0-Preview/update-package.png diff --git a/docs/Release-Notes/media/NuGet-3.0-Preview/version-selection.png b/docs/release-notes/media/NuGet-3.0-Preview/version-selection.png similarity index 100% rename from docs/Release-Notes/media/NuGet-3.0-Preview/version-selection.png rename to docs/release-notes/media/NuGet-3.0-Preview/version-selection.png diff --git a/docs/Release-Notes/media/NuGet-3.2/newContextMenu.png b/docs/release-notes/media/NuGet-3.2/newContextMenu.png similarity index 100% rename from docs/Release-Notes/media/NuGet-3.2/newContextMenu.png rename to docs/release-notes/media/NuGet-3.2/newContextMenu.png diff --git a/docs/Release-Notes/media/NuGet-Config-File-Machine-Wide.png b/docs/release-notes/media/NuGet-Config-File-Machine-Wide.png similarity index 100% rename from docs/Release-Notes/media/NuGet-Config-File-Machine-Wide.png rename to docs/release-notes/media/NuGet-Config-File-Machine-Wide.png diff --git a/docs/Release-Notes/media/RunAsRestricted.png b/docs/release-notes/media/RunAsRestricted.png similarity index 100% rename from docs/Release-Notes/media/RunAsRestricted.png rename to docs/release-notes/media/RunAsRestricted.png diff --git a/docs/Release-Notes/media/Visual-Studio-Extension-Installer.png b/docs/release-notes/media/Visual-Studio-Extension-Installer.png similarity index 100% rename from docs/Release-Notes/media/Visual-Studio-Extension-Installer.png rename to docs/release-notes/media/Visual-Studio-Extension-Installer.png diff --git a/docs/Release-Notes/media/dlg-w-loc-packs.png b/docs/release-notes/media/dlg-w-loc-packs.png similarity index 100% rename from docs/Release-Notes/media/dlg-w-loc-packs.png rename to docs/release-notes/media/dlg-w-loc-packs.png diff --git a/docs/Release-Notes/media/fldr-copied-loc.png b/docs/release-notes/media/fldr-copied-loc.png similarity index 100% rename from docs/Release-Notes/media/fldr-copied-loc.png rename to docs/release-notes/media/fldr-copied-loc.png diff --git a/docs/Release-Notes/media/fldr-loc-packs.png b/docs/release-notes/media/fldr-loc-packs.png similarity index 100% rename from docs/Release-Notes/media/fldr-loc-packs.png rename to docs/release-notes/media/fldr-loc-packs.png diff --git a/docs/Release-Notes/media/framework-profile-support.png b/docs/release-notes/media/framework-profile-support.png similarity index 100% rename from docs/Release-Notes/media/framework-profile-support.png rename to docs/release-notes/media/framework-profile-support.png diff --git a/docs/Release-Notes/media/knownIssue-34-NoSources.PNG b/docs/release-notes/media/knownIssue-34-NoSources.PNG similarity index 100% rename from docs/Release-Notes/media/knownIssue-34-NoSources.PNG rename to docs/release-notes/media/knownIssue-34-NoSources.PNG diff --git a/docs/Release-Notes/media/manage-nuget-packages-project-selection.png b/docs/release-notes/media/manage-nuget-packages-project-selection.png similarity index 100% rename from docs/Release-Notes/media/manage-nuget-packages-project-selection.png rename to docs/release-notes/media/manage-nuget-packages-project-selection.png diff --git a/docs/Release-Notes/media/manage-nuget-packages-release-notes.png b/docs/release-notes/media/manage-nuget-packages-release-notes.png similarity index 100% rename from docs/Release-Notes/media/manage-nuget-packages-release-notes.png rename to docs/release-notes/media/manage-nuget-packages-release-notes.png diff --git a/docs/Release-Notes/media/manage-nuget-packages-solution-dialog.png b/docs/release-notes/media/manage-nuget-packages-solution-dialog.png similarity index 100% rename from docs/Release-Notes/media/manage-nuget-packages-solution-dialog.png rename to docs/release-notes/media/manage-nuget-packages-solution-dialog.png diff --git a/docs/Release-Notes/media/manage-nuget-packages-update-notification.png b/docs/release-notes/media/manage-nuget-packages-update-notification.png similarity index 100% rename from docs/Release-Notes/media/manage-nuget-packages-update-notification.png rename to docs/release-notes/media/manage-nuget-packages-update-notification.png diff --git a/docs/Release-Notes/media/nuget-Options.png b/docs/release-notes/media/nuget-Options.png similarity index 100% rename from docs/Release-Notes/media/nuget-Options.png rename to docs/release-notes/media/nuget-Options.png diff --git a/docs/Release-Notes/media/nuget-settings.png b/docs/release-notes/media/nuget-settings.png similarity index 100% rename from docs/Release-Notes/media/nuget-settings.png rename to docs/release-notes/media/nuget-settings.png diff --git a/docs/Release-Notes/media/package-source-with-disabled-source.png b/docs/release-notes/media/package-source-with-disabled-source.png similarity index 100% rename from docs/Release-Notes/media/package-source-with-disabled-source.png rename to docs/release-notes/media/package-source-with-disabled-source.png diff --git a/docs/Release-Notes/media/package-visualizer.png b/docs/release-notes/media/package-visualizer.png similarity index 100% rename from docs/Release-Notes/media/package-visualizer.png rename to docs/release-notes/media/package-visualizer.png diff --git a/docs/Release-Notes/media/packagerestore-console.PNG b/docs/release-notes/media/packagerestore-console.PNG similarity index 100% rename from docs/Release-Notes/media/packagerestore-console.PNG rename to docs/release-notes/media/packagerestore-console.PNG diff --git a/docs/Release-Notes/media/packagerestore-dialog.PNG b/docs/release-notes/media/packagerestore-dialog.PNG similarity index 100% rename from docs/Release-Notes/media/packagerestore-dialog.PNG rename to docs/release-notes/media/packagerestore-dialog.PNG diff --git a/docs/Release-Notes/media/pkg-mgr-search-from-quick-launch.png b/docs/release-notes/media/pkg-mgr-search-from-quick-launch.png similarity index 100% rename from docs/Release-Notes/media/pkg-mgr-search-from-quick-launch.png rename to docs/release-notes/media/pkg-mgr-search-from-quick-launch.png diff --git a/docs/Release-Notes/media/pr-consent-configdlg.png b/docs/release-notes/media/pr-consent-configdlg.png similarity index 100% rename from docs/Release-Notes/media/pr-consent-configdlg.png rename to docs/release-notes/media/pr-consent-configdlg.png diff --git a/docs/Release-Notes/media/prerelease-dropdown.PNG b/docs/release-notes/media/prerelease-dropdown.PNG similarity index 100% rename from docs/Release-Notes/media/prerelease-dropdown.PNG rename to docs/release-notes/media/prerelease-dropdown.PNG diff --git a/docs/Release-Notes/media/quick-launch.png b/docs/release-notes/media/quick-launch.png similarity index 100% rename from docs/Release-Notes/media/quick-launch.png rename to docs/release-notes/media/quick-launch.png diff --git a/docs/Release-Notes/media/releasenotes-21-cfg-hierarchy.png b/docs/release-notes/media/releasenotes-21-cfg-hierarchy.png similarity index 100% rename from docs/Release-Notes/media/releasenotes-21-cfg-hierarchy.png rename to docs/release-notes/media/releasenotes-21-cfg-hierarchy.png diff --git a/docs/Release-Notes/media/releasenotes-21-edit-pkg-source.png b/docs/release-notes/media/releasenotes-21-edit-pkg-source.png similarity index 100% rename from docs/Release-Notes/media/releasenotes-21-edit-pkg-source.png rename to docs/release-notes/media/releasenotes-21-edit-pkg-source.png diff --git a/docs/Release-Notes/media/releasenotes-21-plib-layout.png b/docs/release-notes/media/releasenotes-21-plib-layout.png similarity index 100% rename from docs/Release-Notes/media/releasenotes-21-plib-layout.png rename to docs/release-notes/media/releasenotes-21-plib-layout.png diff --git a/docs/Release-Notes/media/releasenotes-21-plib.png b/docs/release-notes/media/releasenotes-21-plib.png similarity index 100% rename from docs/Release-Notes/media/releasenotes-21-plib.png rename to docs/release-notes/media/releasenotes-21-plib.png diff --git a/docs/Release-Notes/media/releasenotes-21-vsdlg-search.png b/docs/release-notes/media/releasenotes-21-vsdlg-search.png similarity index 100% rename from docs/Release-Notes/media/releasenotes-21-vsdlg-search.png rename to docs/release-notes/media/releasenotes-21-vsdlg-search.png diff --git a/docs/Release-Notes/media/remove-dependent-packages.png b/docs/release-notes/media/remove-dependent-packages.png similarity index 100% rename from docs/Release-Notes/media/remove-dependent-packages.png rename to docs/release-notes/media/remove-dependent-packages.png diff --git a/docs/Tools/Package-Manager-Console.md b/docs/tools/Package-Manager-Console.md similarity index 100% rename from docs/Tools/Package-Manager-Console.md rename to docs/tools/Package-Manager-Console.md diff --git a/docs/Tools/Package-Manager-UI.md b/docs/tools/Package-Manager-UI.md similarity index 100% rename from docs/Tools/Package-Manager-UI.md rename to docs/tools/Package-Manager-UI.md diff --git a/docs/Tools/PowerShell-Reference.md b/docs/tools/PowerShell-Reference.md similarity index 100% rename from docs/Tools/PowerShell-Reference.md rename to docs/tools/PowerShell-Reference.md diff --git a/docs/Tools/cli-ref-add.md b/docs/tools/cli-ref-add.md similarity index 100% rename from docs/Tools/cli-ref-add.md rename to docs/tools/cli-ref-add.md diff --git a/docs/Tools/cli-ref-config.md b/docs/tools/cli-ref-config.md similarity index 100% rename from docs/Tools/cli-ref-config.md rename to docs/tools/cli-ref-config.md diff --git a/docs/Tools/cli-ref-delete.md b/docs/tools/cli-ref-delete.md similarity index 100% rename from docs/Tools/cli-ref-delete.md rename to docs/tools/cli-ref-delete.md diff --git a/docs/Tools/cli-ref-environment-variables.md b/docs/tools/cli-ref-environment-variables.md similarity index 100% rename from docs/Tools/cli-ref-environment-variables.md rename to docs/tools/cli-ref-environment-variables.md diff --git a/docs/Tools/cli-ref-help.md b/docs/tools/cli-ref-help.md similarity index 100% rename from docs/Tools/cli-ref-help.md rename to docs/tools/cli-ref-help.md diff --git a/docs/Tools/cli-ref-init.md b/docs/tools/cli-ref-init.md similarity index 100% rename from docs/Tools/cli-ref-init.md rename to docs/tools/cli-ref-init.md diff --git a/docs/Tools/cli-ref-install.md b/docs/tools/cli-ref-install.md similarity index 100% rename from docs/Tools/cli-ref-install.md rename to docs/tools/cli-ref-install.md diff --git a/docs/Tools/cli-ref-list.md b/docs/tools/cli-ref-list.md similarity index 100% rename from docs/Tools/cli-ref-list.md rename to docs/tools/cli-ref-list.md diff --git a/docs/Tools/cli-ref-locals.md b/docs/tools/cli-ref-locals.md similarity index 100% rename from docs/Tools/cli-ref-locals.md rename to docs/tools/cli-ref-locals.md diff --git a/docs/Tools/cli-ref-mirror.md b/docs/tools/cli-ref-mirror.md similarity index 100% rename from docs/Tools/cli-ref-mirror.md rename to docs/tools/cli-ref-mirror.md diff --git a/docs/Tools/cli-ref-pack.md b/docs/tools/cli-ref-pack.md similarity index 100% rename from docs/Tools/cli-ref-pack.md rename to docs/tools/cli-ref-pack.md diff --git a/docs/Tools/cli-ref-push.md b/docs/tools/cli-ref-push.md similarity index 100% rename from docs/Tools/cli-ref-push.md rename to docs/tools/cli-ref-push.md diff --git a/docs/Tools/cli-ref-restore.md b/docs/tools/cli-ref-restore.md similarity index 100% rename from docs/Tools/cli-ref-restore.md rename to docs/tools/cli-ref-restore.md diff --git a/docs/Tools/cli-ref-setapikey.md b/docs/tools/cli-ref-setapikey.md similarity index 100% rename from docs/Tools/cli-ref-setapikey.md rename to docs/tools/cli-ref-setapikey.md diff --git a/docs/Tools/cli-ref-sources.md b/docs/tools/cli-ref-sources.md similarity index 100% rename from docs/Tools/cli-ref-sources.md rename to docs/tools/cli-ref-sources.md diff --git a/docs/Tools/cli-ref-spec.md b/docs/tools/cli-ref-spec.md similarity index 100% rename from docs/Tools/cli-ref-spec.md rename to docs/tools/cli-ref-spec.md diff --git a/docs/Tools/cli-ref-update.md b/docs/tools/cli-ref-update.md similarity index 100% rename from docs/Tools/cli-ref-update.md rename to docs/tools/cli-ref-update.md diff --git a/docs/Tools/dotnet-Commands.md b/docs/tools/dotnet-Commands.md similarity index 100% rename from docs/Tools/dotnet-Commands.md rename to docs/tools/dotnet-Commands.md diff --git a/docs/Tools/media/ConsolidateTab.png b/docs/tools/media/ConsolidateTab.png similarity index 100% rename from docs/Tools/media/ConsolidateTab.png rename to docs/tools/media/ConsolidateTab.png diff --git a/docs/Tools/media/InstallPreviewDialog.png b/docs/tools/media/InstallPreviewDialog.png similarity index 100% rename from docs/Tools/media/InstallPreviewDialog.png rename to docs/tools/media/InstallPreviewDialog.png diff --git a/docs/Tools/media/ManagePackagesSolutionUICommand.png b/docs/tools/media/ManagePackagesSolutionUICommand.png similarity index 100% rename from docs/Tools/media/ManagePackagesSolutionUICommand.png rename to docs/tools/media/ManagePackagesSolutionUICommand.png diff --git a/docs/Tools/media/ManagePackagesUICommand.png b/docs/tools/media/ManagePackagesUICommand.png similarity index 100% rename from docs/Tools/media/ManagePackagesUICommand.png rename to docs/tools/media/ManagePackagesUICommand.png diff --git a/docs/Tools/media/Options.png b/docs/tools/media/Options.png similarity index 100% rename from docs/Tools/media/Options.png rename to docs/tools/media/Options.png diff --git a/docs/Tools/media/PackageManagerConsoleControls.png b/docs/tools/media/PackageManagerConsoleControls.png similarity index 100% rename from docs/Tools/media/PackageManagerConsoleControls.png rename to docs/tools/media/PackageManagerConsoleControls.png diff --git a/docs/Tools/media/PackageManagerConsoleControls1.png b/docs/tools/media/PackageManagerConsoleControls1.png similarity index 100% rename from docs/Tools/media/PackageManagerConsoleControls1.png rename to docs/tools/media/PackageManagerConsoleControls1.png diff --git a/docs/Tools/media/PackageManagerConsoleControls2.png b/docs/tools/media/PackageManagerConsoleControls2.png similarity index 100% rename from docs/Tools/media/PackageManagerConsoleControls2.png rename to docs/tools/media/PackageManagerConsoleControls2.png diff --git a/docs/Tools/media/PackageManagerConsoleControls3.png b/docs/tools/media/PackageManagerConsoleControls3.png similarity index 100% rename from docs/Tools/media/PackageManagerConsoleControls3.png rename to docs/tools/media/PackageManagerConsoleControls3.png diff --git a/docs/Tools/media/PackageManagerConsoleInstall.png b/docs/tools/media/PackageManagerConsoleInstall.png similarity index 100% rename from docs/Tools/media/PackageManagerConsoleInstall.png rename to docs/tools/media/PackageManagerConsoleInstall.png diff --git a/docs/Tools/media/PackageManagerUIAutoReferenced.png b/docs/tools/media/PackageManagerUIAutoReferenced.png similarity index 100% rename from docs/Tools/media/PackageManagerUIAutoReferenced.png rename to docs/tools/media/PackageManagerUIAutoReferenced.png diff --git a/docs/Tools/media/PackageManagerUIOptions.png b/docs/tools/media/PackageManagerUIOptions.png similarity index 100% rename from docs/Tools/media/PackageManagerUIOptions.png rename to docs/tools/media/PackageManagerUIOptions.png diff --git a/docs/Tools/media/PackageSourceDropDown.png b/docs/tools/media/PackageSourceDropDown.png similarity index 100% rename from docs/Tools/media/PackageSourceDropDown.png rename to docs/tools/media/PackageSourceDropDown.png diff --git a/docs/Tools/media/PackageSourceSettings.png b/docs/tools/media/PackageSourceSettings.png similarity index 100% rename from docs/Tools/media/PackageSourceSettings.png rename to docs/tools/media/PackageSourceSettings.png diff --git a/docs/Tools/media/References.png b/docs/tools/media/References.png similarity index 100% rename from docs/Tools/media/References.png rename to docs/tools/media/References.png diff --git a/docs/Tools/media/Register-TabExpansion-Example.png b/docs/tools/media/Register-TabExpansion-Example.png similarity index 100% rename from docs/Tools/media/Register-TabExpansion-Example.png rename to docs/tools/media/Register-TabExpansion-Example.png diff --git a/docs/Tools/media/Search.png b/docs/tools/media/Search.png similarity index 100% rename from docs/Tools/media/Search.png rename to docs/tools/media/Search.png diff --git a/docs/Tools/media/SolutionPackagesUI.png b/docs/tools/media/SolutionPackagesUI.png similarity index 100% rename from docs/Tools/media/SolutionPackagesUI.png rename to docs/tools/media/SolutionPackagesUI.png diff --git a/docs/Tools/media/UninstallPackage.png b/docs/tools/media/UninstallPackage.png similarity index 100% rename from docs/Tools/media/UninstallPackage.png rename to docs/tools/media/UninstallPackage.png diff --git a/docs/Tools/media/UpdatePackages.png b/docs/tools/media/UpdatePackages.png similarity index 100% rename from docs/Tools/media/UpdatePackages.png rename to docs/tools/media/UpdatePackages.png diff --git a/docs/Tools/nuget-exe-CLI-Reference.md b/docs/tools/nuget-exe-CLI-Reference.md similarity index 100% rename from docs/Tools/nuget-exe-CLI-Reference.md rename to docs/tools/nuget-exe-CLI-Reference.md diff --git a/docs/Tools/ps-ref-add-bindingredirect.md b/docs/tools/ps-ref-add-bindingredirect.md similarity index 100% rename from docs/Tools/ps-ref-add-bindingredirect.md rename to docs/tools/ps-ref-add-bindingredirect.md diff --git a/docs/Tools/ps-ref-find-package.md b/docs/tools/ps-ref-find-package.md similarity index 100% rename from docs/Tools/ps-ref-find-package.md rename to docs/tools/ps-ref-find-package.md diff --git a/docs/Tools/ps-ref-get-package.md b/docs/tools/ps-ref-get-package.md similarity index 100% rename from docs/Tools/ps-ref-get-package.md rename to docs/tools/ps-ref-get-package.md diff --git a/docs/Tools/ps-ref-get-project.md b/docs/tools/ps-ref-get-project.md similarity index 100% rename from docs/Tools/ps-ref-get-project.md rename to docs/tools/ps-ref-get-project.md diff --git a/docs/Tools/ps-ref-install-package.md b/docs/tools/ps-ref-install-package.md similarity index 100% rename from docs/Tools/ps-ref-install-package.md rename to docs/tools/ps-ref-install-package.md diff --git a/docs/Tools/ps-ref-open-packagepage.md b/docs/tools/ps-ref-open-packagepage.md similarity index 100% rename from docs/Tools/ps-ref-open-packagepage.md rename to docs/tools/ps-ref-open-packagepage.md diff --git a/docs/Tools/ps-ref-register-tabexpansion.md b/docs/tools/ps-ref-register-tabexpansion.md similarity index 100% rename from docs/Tools/ps-ref-register-tabexpansion.md rename to docs/tools/ps-ref-register-tabexpansion.md diff --git a/docs/Tools/ps-ref-sync-package.md b/docs/tools/ps-ref-sync-package.md similarity index 100% rename from docs/Tools/ps-ref-sync-package.md rename to docs/tools/ps-ref-sync-package.md diff --git a/docs/Tools/ps-ref-uninstall-package.md b/docs/tools/ps-ref-uninstall-package.md similarity index 100% rename from docs/Tools/ps-ref-uninstall-package.md rename to docs/tools/ps-ref-uninstall-package.md diff --git a/docs/Tools/ps-ref-update-package.md b/docs/tools/ps-ref-update-package.md similarity index 100% rename from docs/Tools/ps-ref-update-package.md rename to docs/tools/ps-ref-update-package.md diff --git a/docs/Visual-Studio-Extensibility/Project-System-Support.md b/docs/visual-studio-extensibility/Project-System-Support.md similarity index 100% rename from docs/Visual-Studio-Extensibility/Project-System-Support.md rename to docs/visual-studio-extensibility/Project-System-Support.md diff --git a/docs/Visual-Studio-Extensibility/Visual-Studio-Templates.md b/docs/visual-studio-extensibility/Visual-Studio-Templates.md similarity index 100% rename from docs/Visual-Studio-Extensibility/Visual-Studio-Templates.md rename to docs/visual-studio-extensibility/Visual-Studio-Templates.md diff --git a/docs/Visual-Studio-Extensibility/nuget-api-in-visual-studio.md b/docs/visual-studio-extensibility/nuget-api-in-visual-studio.md similarity index 100% rename from docs/Visual-Studio-Extensibility/nuget-api-in-visual-studio.md rename to docs/visual-studio-extensibility/nuget-api-in-visual-studio.md From d7f1d5c6666243df1761c103d7d495b193b73e5c Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Fri, 2 Feb 2018 10:53:57 -0800 Subject: [PATCH 0525/2943] Update quickstarts for VS Remove old VS2017 guide and redirect to quickstart Simplify VS 2015 guide Small change to PackageReference --- .openpublishing.redirection.json | 5 + .../Package-References-in-Project-Files.md | 9 +- .../Supporting-Multiple-Target-Frameworks.md | 2 +- .../Create-NET-Standard-Packages-VS2015.md | 237 ++++-------------- .../Create-NET-Standard-Packages-VS2017.md | 105 -------- ...d-publish-a-package-using-visual-studio.md | 46 +++- docs/{What-is-NuGet.md => what-is-nuget.md} | 0 7 files changed, 96 insertions(+), 308 deletions(-) delete mode 100644 docs/guides/Create-NET-Standard-Packages-VS2017.md rename docs/{What-is-NuGet.md => what-is-nuget.md} (100%) diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index 1ce21110c..1ee1beab1 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -45,6 +45,11 @@ "redirect_url": "/nuget/install-nuget-client-tools", "redirect_document_id": false }, + { + "source_path": "docs/guides/create-net-standard-packages-vs2017.md", + "redirect_url": "/nuget/quickstart/create-and-publish-a-package-using-visual-studio", + "redirect_document_id": false + }, { "source_path": "docs/Schema/project-json.md", "redirect_url": "/nuget/archive/project-json", diff --git a/docs/consume-packages/Package-References-in-Project-Files.md b/docs/consume-packages/Package-References-in-Project-Files.md index 9f8d4f87a..5e59530b4 100644 --- a/docs/consume-packages/Package-References-in-Project-Files.md +++ b/docs/consume-packages/Package-References-in-Project-Files.md @@ -16,14 +16,11 @@ ms.reviewer: # Package references (PackageReference) in project files -Package references, using the `PackageReference` node, allow you to manage NuGet dependencies directly within project files, rather than needing a separate `packages.config` file. This method doesn't affect other aspects of NuGet; for example, settings in `NuGet.Config` files (including package sources) are still applied as explained in [Configuring NuGet Behavior](configuring-nuget-behavior.md). +Package references, using the `PackageReference` node, manage NuGet dependencies directly within project files (as opposed to a separate `packages.config` file). Using PackageReference, as it's called, doesn't affect other aspects of NuGet; for example, settings in `NuGet.Config` files (including package sources) are still applied as explained in [Configuring NuGet Behavior](configuring-nuget-behavior.md). -> [!Important] -> At present, package references are supported in Visual Studio 2017 only, for .NET Core projects, .NET Standard projects, and UWP projects targeting Windows 10 Build 15063 (Creators Update). +With PackageReference, you can also use MSBuild conditions to choose package references per target framework, configuration, platform, 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).) -The `PackageReference` approach allows you to use MSBuild conditions to choose package references per target framework, configuration, platform, or other groupings. It also allows for fine-grained control over dependencies and content flow. - -For more details on the integration of MSBuild with package references in project files, see [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md). +By default, PackageReference is used for .NET Core projects, .NET Standard projects, and UWP projects targeting Windows 10 Build 15063 (Creators Update) and later. .NET full framework projects support PackageReference, but currently default to `packages.config`. To use PackageReference, migrate the dependencies from `packages.config` into your project file, then remove packages.config. ## Adding a PackageReference diff --git a/docs/create-packages/Supporting-Multiple-Target-Frameworks.md b/docs/create-packages/Supporting-Multiple-Target-Frameworks.md index 14924a921..63464d8e7 100644 --- a/docs/create-packages/Supporting-Multiple-Target-Frameworks.md +++ b/docs/create-packages/Supporting-Multiple-Target-Frameworks.md @@ -52,7 +52,7 @@ To easily include all these files when building the package, use a recursive `** ``` -### Architecture-specific folders +### Architecture-specific folders If you have architecture-specific assemblies, that is, separate assemblies that target ARM, x86, and x64, you must place them in a folder named `runtimes` within sub-folders named `{platform}-{architecture}\lib\{framework}` or `{platform}-{architecture}\native`. For example, the following folder structure would accommodate both native and managed DLLs targeting Windows 10 and the `uap10.0` framework: diff --git a/docs/guides/Create-NET-Standard-Packages-VS2015.md b/docs/guides/Create-NET-Standard-Packages-VS2015.md index ab57afe75..9dbf836a8 100644 --- a/docs/guides/Create-NET-Standard-Packages-VS2015.md +++ b/docs/guides/Create-NET-Standard-Packages-VS2015.md @@ -3,7 +3,7 @@ title: Create .NET Standard NuGet Packages with Visual Studio 2015 | Microsoft D author: kraigb ms.author: kraigb manager: ghogen -ms.date: 01/09/2017 +ms.date: 02/02/2018 ms.topic: get-started-article ms.prod: nuget ms.technology: null @@ -16,28 +16,20 @@ ms.reviewer: # Create .NET Standard packages with Visual Studio 2015 -*Applies to NuGet 3.x. See [Create .NET Standard Packages with Visual Studio 2017](../guides/create-net-standard-packages-vs2017.md) for working with NuGet 4.x+.* +*Applies to NuGet 3.x. See [Create and publish a package with Visual Studio 2017](../quickstart/create-and-publish-a-package-using-visual-studio.md) for working with NuGet 4.x+.* -The [.NET Standard Library](/dotnet/articles/standard/library) is a formal specification of .NET APIs intended to be available on all .NET runtimes, thus establishing greater uniformity in the .NET ecosystem. The .NET Standard Library defines a uniform set of BCL (Base Class Library) APIs for all .NET platforms to implement, independent of workload. It enables developers to produce PCLs that are usable across all .NET runtimes, and reduces if not eliminates platform-specific conditional compilation directives in shared code. +The [.NET Standard Library](/dotnet/articles/standard/library) is a formal specification of .NET APIs intended to be available on all .NET runtimes, thus establishing greater uniformity in the .NET ecosystem. The .NET Standard Library defines a uniform set of BCL (Base Class Library) APIs for all .NET platforms to implement, independent of workload. It enables developers to produce code that is usable across all .NET runtimes, and reduces if not eliminates platform-specific conditional compilation directives in shared code. -This guide will walk you through creating a nuget package targeting .NET Standard Library 1.4. This will work across .NET Framework 4.6.1, Universal Windows Platform 10, .NET Core, and Mono/Xamarin. For details, see the [.NET Standard mapping table](#net-standard-mapping-table) later in this topic. - -1. [Pre-requisites](#pre-requisites) -1. [Create the class library project](#create-the-class-library-project) -1. [Create and update the .nuspec file](#create-and-update-the-nuspec-file) -1. [Package the component](#package-the-component) -1. [Additional options](#additional-options) -1. [.NET Standard mapping table](#net-standard-mapping-table) -1. [Related topics](#related-topics) +This guide walks you through creating a NuGet package targeting .NET Standard Library 1.4. Such a library works across .NET Framework 4.6.1, Universal Windows Platform 10, .NET Core, and Mono/Xamarin. For details, see the [.NET Standard mapping table](#net-standard-mapping-table) later in this topic. ## Pre-requisites -1. Visual Studio 2015. Install the Community edition for free from [visualstudio.com](https://www.visualstudio.com/); you can use the Professional and Enterprise editions as well, of course. -1. .NET Core: Install .NET Core along with templates and other tools for Visual Studio 2015 from [https://go.microsoft.com/fwlink/?LinkId=824849](https://go.microsoft.com/fwlink/?LinkId=824849). +1. Visual Studio 2015 Update 3 +1. [.NET Core SDK](https://www.microsoft.com/net/download/) 1. NuGet CLI. Download the latest version of nuget.exe from [nuget.org/downloads](https://nuget.org/downloads), saving it to a location of your choice. Then add that location to your PATH environment variable if it isn't already. -> [!Note] -> nuget.exe is the CLI tool itself, not an installer, so be sure to save the downloaded file from your browser instead of running it. + > [!Note] + > nuget.exe is the CLI tool itself, not an installer, so be sure to save the downloaded file from your browser instead of running it. ## Create the class library project @@ -62,17 +54,17 @@ This guide will walk you through creating a nuget package targeting .NET Standar { public void Log(string text) { - throw new NotImplementedException("Called Log"); + Console.WriteLine(text); } } } ``` -1. Build the project (with the Release configuration) and check that DLL and XML files are produced within the bin\Release folder. +1. Set the configuration to Release, build the project, and check that DLL and XML files are produced within the `bin\Release` folder. ## Create and update the .nuspec file -1. Open a command prompt, navigate to the folder containing `AppLogg.csproj` folder (one level below where the `.sln` file is), and run the NuGet `spec` command to create the initial `AppLogger.nuspec` file: +1. Open a command prompt, navigate to the folder containing `AppLogger.csproj` folder (one level below where the `.sln` file is), and run the NuGet `spec` command to create the initial `AppLogger.nuspec` file: ```cli nuget spec @@ -92,7 +84,7 @@ nuget spec false Awesome application logging utility First release - Copyright 2016 (c) Contoso Corporation. All rights reserved. + Copyright 2018 (c) Contoso Corporation. All rights reserved. logger logging logs @@ -110,38 +102,9 @@ nuget spec 1. Right-click the solution and select **Build Solution** to generate all the files for the package. -## Package the component - -With the completed `.nuspec` referencing all the files you need to include in the package, you're ready to run the `pack` command: - -```cli -nuget pack AppLogger.nuspec -``` - -This will generate `AppLogger.YOUR_NAME.1.0.0.nupkg`. Opening this file in a tool like the [NuGet Package Explorer](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer) and expanding all the nodes, you see the following contents: - -![NuGet Package Explorer showing the AppLogger package](media/NetStandard-PackageExplorer.png) - -> [!Tip] -> A `.nupkg` file is just a ZIP file with a different extension. You can also examine package contents, then, by changing `.nupkg` to `.zip`, but remember to restore the extension before uploading a package to nuget.org. - -To make your package available to other developers, follow the instructions on [Publish a package](../create-packages/publish-a-package.md). - -Note that `pack` requires Mono 4.4.2 on Mac OS X and does not work on Linux systems. On a Mac, you must also convert Windows pathnames in the `.nuspec` file to Unix-style paths. - -## Additional options - -The following sections go into additional options for NuGet package creation: - -- [Declaring dependencies](#declaring-dependencies) -- [Supporting multiple target frameworks](#supporting-multiple-target-frameworks) -- [Adding targets and props for MSBuild](#adding-targets-and-props-for-msbuild) -- [Creating localized packages](#creating-localized-packages) -- [Adding a readme](#adding-a-readme) - ### Declaring dependencies -If you have any dependencies on other NuGet packages, list those in the `` element with `` elements. For example, to declare a dependency on NewtonSoft.Json 8.0.3 or above, add the following: +If you have any dependencies on other NuGet packages, list those in the manifest's `` element with `` elements. For example, to declare a dependency on NewtonSoft.Json 8.0.3 or above, add the following: ```xml @@ -154,132 +117,9 @@ If you have any dependencies on other NuGet packages, list those in the ` - - - AppLogger.YOUR_NAME - 1.0.0.0 - AppLogger - YOUR_NAME - YOUR_NAME - false - Awesome application logging utility - First release. - Copyright 2016 - logger logging logs - - - - - - ``` - -1. Create the package again using `nuget pack AppLogger.spec`. - -For more details on using this technique, see [Supporting Multiple .NET Framework Versions](../create-packages/supporting-multiple-target-frameworks.md) - -### Adding targets and props for MSBuild - -In some cases you might want to add custom build targets or properties in projects that consume your package, such as running a custom tool or process during build. You do this by adding files in a `\build` folder as described in the steps below. When NuGet installs a package with \build files, it adds an MSBuild element in the project file pointing to the .targets and .props files. - -1. In the project folder containing the your `.nuspec` file, create a folder named `build`. - -1. Inside `build`, create folders for each supported, and within those place your `.targets` and `.props` files: - - \build - \netstandard1.4 - \AppLogger.props - \AppLogger.targets - \net462 - \AppLogger.props - \AppLogger.targets - -1. In the `.nuspec` file, add a `files` node under the `package` node and refer to the files in `build` using wildcards. - - ```xml - - - ... - - - - - - ``` - -1. Create the package again using `nuget pack AppLogger.nuspec`. - -For additional details, refer to [Include MSBuild props and targets in a package](../create-packages/creating-a-package.md#including-msbuild-props-and-targets-in-a-package). - -### Creating localized packages - -To create localized versions of your library, you can either create separate packages for different locales, or include localized resource assemblies within a single package. Here's how to do the latter approach for German and Italian: - -1. Within each target framework folder under `lib`, create folders for each supported language other than the English default. In these folders you can place resource assemblies and localized IntelliSense XML files. For example: - - lib - ├───netstandard1.4 - │ │ AppLogger.dll - │ │ AppLogger.xml - │ │ - │ ├───de - │ │ AppLogger.resources.dll - │ │ AppLogger.xml - │ │ - │ └───it - │ AppLogger.resources.dll - │ AppLogger.xml - └───net462 - │ AppLogger.dll - │ AppLogger.xml - │ - ├───de - │ AppLogger.resources.dll - │ AppLogger.xml - │ - └───it - AppLogger.resources.dll - AppLogger.xml - -1. In the `.nuspec` file, reference these files in the `` node: - - ```xml - - - ... - - - - - - ``` - -1. Create the package again using `nuget pack AppLogger.nuspec`. - ### Adding a readme -When you include a `readme.txt` file in the root of the package, Visual Studio will display it when the package is installed directly. - -> [!Note] -> Readme files are not shown for packages that are installed as a dependency, or for .NET Core projects. - -To do this, create your `readme.txt` file, place it in the project root folder, and refer to it in the `.nuspec` file: +Create your `readme.txt` file, place it in the project root folder, and refer to it in the `.nuspec` file: ```xml @@ -292,26 +132,47 @@ To do this, create your `readme.txt` file, place it in the project root folder, ``` +Visual Studio display `readme.txt` when the package is installed into a project. The file is not shown when installed into .NET Core projects, or for packages that are installed as a dependency. + +## Package the component + +With the completed `.nuspec` referencing all the files you need to include in the package, you're ready to run the `pack` command: + +```cli +nuget pack AppLogger.nuspec +``` + +This will generate `AppLogger.YOUR_NAME.1.0.0.nupkg`. Opening this file in a tool like the [NuGet Package Explorer](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer) and expanding all the nodes, you see the following contents: + +![NuGet Package Explorer showing the AppLogger package](media/NetStandard-PackageExplorer.png) + +> [!Tip] +> A `.nupkg` file is just a ZIP file with a different extension. You can also examine package contents, then, by changing `.nupkg` to `.zip`, but remember to restore the extension before uploading a package to nuget.org. + +To make your package available to other developers, follow the instructions on [Publish a package](../create-packages/publish-a-package.md). + +Note that `pack` requires Mono 4.4.2 on Mac OS X and does not work on Linux systems. On a Mac, you must also convert Windows pathnames in the `.nuspec` file to Unix-style paths. + ## .NET Standard mapping table -|Platform Name |Alias| -|--------------|-----| -|.NET Standard | netstandard| 1.0| 1.1| 1.2| 1.3| 1.4| 1.5| 1.6| -|.NET Core | netcoreapp| →| →| →| →| →| →| 1.0| -|.NET Framework| net| 4.5| 4.5.1| 4.6| 4.6.1| 4.6.2| 4.6.3| -|Mono/Xamarin Platforms| →| →| →| →| →| →| -|Universal Windows Platform| uap| →| →| →| →|10.0| -|Windows| win| →| 8.0| 8.1| -|Windows Phone| wpa| →| →|8.1| -|Windows Phone Silverlight| wp| 8.0| +| Platform Name | Alias | +| --- | --- | +| .NET Standard | netstandard | 1.0 | 1.1 | 1.2 | 1.3 | 1.4 | 1.5 | 1.6 | +| .NET Core | netcoreapp | → | → | → | → | → | → | 1.0 | +| .NET Framework | net | 4.5 | 4.5.1 | 4.6 | 4.6.1 | 4.6.2 | 4.6.3 | +| Mono/Xamarin Platforms | → | → | → | → | → | → | +| Universal Windows Platform | uap | → | → | → | → |10.0 | +| Windows | win| → | 8.0 | 8.1 | +| Windows Phone | wpa| →| → | 8.1 | +| Windows Phone Silverlight | wp | 8.0 | ## Related topics -- [Nuspec Reference](../reference/nuspec.md) +- [.nuspec reference](../reference/nuspec.md) +- [Supporting multiple .NET framework versions](../create-packages/supporting-multiple-target-frameworks.md) +- [Include MSBuild props and targets in a package](../create-packages/creating-a-package.md#including-msbuild-props-and-targets-in-a-package) +- [Creating localized packages](../create-packages/creating-localized-packages.md) - [Symbol packages](../create-packages/symbol-packages.md) - [Package versioning](../reference/package-versioning.md) -- [Supporting Multiple .NET Framework Versions](../create-packages/supporting-multiple-target-frameworks.md) -- [Include MSBuild props and targets in a package](../create-packages/creating-a-package.md#including-msbuild-props-and-targets-in-a-package) -- [Creating Localized Packages](../create-packages/creating-localized-packages.md) - [.NET Standard Library documentation](/dotnet/articles/standard/library) - [Porting to .NET Core from .NET Framework](/dotnet/articles/core/porting/index) diff --git a/docs/guides/Create-NET-Standard-Packages-VS2017.md b/docs/guides/Create-NET-Standard-Packages-VS2017.md deleted file mode 100644 index 12fe5c9f3..000000000 --- a/docs/guides/Create-NET-Standard-Packages-VS2017.md +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: Create .NET Standard 2.0 NuGet Packages with Visual Studio 2017 | Microsoft Docs -author: kraigb -ms.author: kraigb -manager: ghogen -ms.date: 05/23/2017 -ms.topic: get-started-article -ms.prod: nuget -ms.technology: null -description: An end-to-end walkthrough of creating .NET Standard 2.0 NuGet packages using NuGet 4.x and Visual Studio 2017. -keywords: create a package, .NET Standard packages, .NET Core -ms.reviewer: -- karann-msft -- unniravindranathan ---- - -# Create .NET Standard 2.0 packages with Visual Studio 2017 - -*Applies to NuGet 4.x+ and MSBuild 15.3+ as provided with Visual Studio 2017 Update 3 and later. For earlier versions of Visual Studio 2017, these instructions apply to .NET Standard 1.4 to 1.6 by changing the \ property. Also see [Create .NET Standard Packages with Visual Studio 2015](../guides/create-net-standard-packages-vs2015.md) for working with NuGet 3.x+.* - -The [.NET Standard Library](/dotnet/articles/standard/library) is a formal specification of .NET APIs intended to be available on all .NET runtimes, thus establishing greater uniformity in the .NET ecosystem. The .NET Standard Library defines a uniform set of BCL (Base Class Library) APIs for all .NET platforms to implement, independent of workload. It enables developers to produce PCLs that are usable across all .NET runtimes, and reduces if not eliminates platform-specific conditional compilation directives in shared code. - -This guide walks you through creating a nuget package targeting .NET Standard Library 2.0 with Visual Studio 2017. - -## Pre-requisites - -This walkthrough requires Visual Studio 2017 Update 3 with the **.NET Core cross-platform development** workload. You can install the Community edition for free from [visualstudio.com](https://www.visualstudio.com/), or use the Professional and Enterprise editions. - -The require workload appears as follows in the Visual Studio installer: - -![.NET Core cross-platform development workload in the Visual Studio Installer](media/NuGet4-01-Workload.png) - -## Create the .NET Standard class library project - -1. In Visual Studio, **File > New > Project**, expand the **Visual C# > .NET Standard** node, select **Class Library (Net Standard)**, change the name to AppLogger, and click OK. - - ![Create new class library project](media/NuGet4-02-NewProject.png) - -1. Change the build configuration to **Release**. -1. Right-click the `AppLogger` project in Solution Explorer, select **Properties**, select the **Build** tab, check the box for **XML documentation file**, and set the filename to just `AppLogger.xml`. Then save the project. - -1. Add your code to the component, such as the following (which clearly just outputs messages to the console): - - ```cs - namespace AppLogger - { - public class Logger - { - public void Log(string text) - { - Console.WriteLine(text); - } - } - } - ``` - -1. Build the project (with the Release configuration) and check that DLL and XML files are produced within the `bin\Release\netstandard2.0` folder. - -## Edit metadata in the .csproj file - -With NuGet 4.0 and .NET Core projects, package metadata is contained directly in the `.csproj` file instead of external files such as a `.nuspec`. A full description of that metadata is found in [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md#pack-target). - -1. Right-click the project in Solution Explorer, select **Edit AppLogger.csproj**, and then edit the first property group to include package information such as the following: - - ```xml - - netstandard2.0 - AppLogger.YOUR_NAME - 1.0.0 - YOUR_NAME - Awesome application logging utility - false - First release - Copyright 2017 (c) Contoso Corporation. All rights reserved. - logger logging logs - - ``` - -1. Save the project, then right-click the solution and select **Build Solution** to again generate all the files for the package, this time with the correct metadata. - -## Package the component - -NuGet 4.0 supports a pack target using MSBuild version 15.1+ (including MSBuild 15.3 as part of Visual Studio 2017 Update 3) when the project contains the necessary package metadata, as was added in the previous section. To invoke MSBuild in this way, simply specify the pack target on the command line in the same folder as the `.csproj` file: - - msbuild /t:pack /p:Configuration=Release - -For additional options with `msbuild /t:pack`, such as including content files, symbols, and source code, see [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md#pack-target). - -In any case, the command above generates `AppLogger.YOUR_NAME.1.0.0.nupkg` in the `bin\Release` folder by default, as it builds that configuration. If you omit the `/p` switch, the default configuration will be `Debug`. - -Opening this file in a tool like the [NuGet Package Explorer](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer) and expanding all the nodes, you see the following contents: - -![NuGet Package Explorer showing the AppLogger package](media/NuGet4-03-PackageExplorer.png) - -> [!Tip] -> A `.nupkg` file is just a ZIP file with a different extension. You can also examine package contents, then, by changing `.nupkg` to `.zip`, but remember to restore the extension before uploading a package to nuget.org. - -To make your package available to other developers, follow the instructions on [Publish a package](../create-packages/publish-a-package.md). - -## Related topics - -- [Package References in Project Files](../consume-packages/package-references-in-project-files.md) describes all the details of describing your package directly in the project file. -- [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md) describes all the options for using `msbuild /t:pack` to create the package. -- [.NET Standard Library documentation](/dotnet/articles/standard/library) -- [Porting to .NET Core from .NET Framework](/dotnet/articles/core/porting/index) diff --git a/docs/quickstart/create-and-publish-a-package-using-visual-studio.md b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md index 16f189810..ed5d75f61 100644 --- a/docs/quickstart/create-and-publish-a-package-using-visual-studio.md +++ b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md @@ -3,12 +3,12 @@ title: Introductory Guide to Creating and Publishing a NuGet Package using Visua author: kraigb ms.author: kraigb manager: ghogen -ms.date: 01/24/2018 +ms.date: 02/02/2018 ms.topic: get-started-article ms.prod: nuget ms.technology: null description: A walkthrough tutorial on creating and publishing a NuGet package using Visual Studio 2017. -keywords: NuGet package creation, NuGet package publishing, NuGet tutorial, Visual Studio create NuGet package +keywords: NuGet package creation, NuGet package publishing, NuGet tutorial, Visual Studio create NuGet package, msbuild pack ms.reviewer: - karann-msft - unniravindranathan @@ -36,7 +36,20 @@ You can use an existing .NET Class Library project for the code you want to pack 1. Right-click on the resulting project file and select **Build** to make sure the project was created properly. The DLL is found within the Debug folder (or Release if you build that configuration instead). -Within a real NuGet package, of course, you implement many useful features with which others can build applications. For this walkthrough, however, you won't write any additional code because a class library from the template is sufficient to create a package. +Within a real NuGet package, of course, you implement many useful features with which others can build applications. For this walkthrough, however, you won't write any additional code because a class library from the template is sufficient to create a package. Still, if you'd like some functional code for the package, use the following: + +```cs +namespace AppLogger +{ + public class Logger + { + public void Log(string text) + { + Console.WriteLine(text); + } + } +} +``` > [!Tip] > Unless you have a reason to choose otherwise, .NET Standard is the preferred target for NuGet packages, as it provides compatibility with the widest range of consuming projects. @@ -55,24 +68,39 @@ Within a real NuGet package, of course, you implement many useful features with > [!Important] > You must give the package an identifier that's unique across nuget.org or whatever host you're using. For this walkthrough we recommend including "Sample" or "Test" in the name as the later publishing step does make the package publicly visible (though it's unlikely anyone will actually use it). > - > If you attempt to publish a package with a name that already exists, you see an error. + > If you attempt to publish a package with a name that already exists, you see an error. +1. Optional: to see the properties directly in the project file, right-click the project in Solution Explorer and select **Edit AppLogger.csproj**. ## Run the pack command +1. Set the configuration to **Release**. + 1. Right click the project in **Solution Explorer** and select the **Pack** command: ![NuGet pack command on the Visual Studio project context menu](media/qs_create-vs-02-pack-command.png) -1. Visual Studio builds the project and creates the `.nupkg` file. Examine the **Output** window for details (similar to the following), which contains the path to the package file: +1. Visual Studio builds the project and creates the `.nupkg` file. Examine the **Output** window for details (similar to the following), which contains the path to the package file. Note also that the built assembly is in `bin\Release\netstandard2.0` as befits the .NET Standard 2.0 target. ```output - 1>------ Build started: Project: AppLogger, Configuration: Debug Any CPU ------ - 1>AppLogger -> d:\proj\AppLogger\AppLogger\bin\Debug\netstandard2.0\AppLogger.dll - 1>Successfully created package 'd:\proj\AppLogger\AppLogger\bin\Debug\AppLogger.1.0.0.nupkg'. + 1>------ Build started: Project: AppLogger, Configuration: Release Any CPU ------ + 1>AppLogger -> d:\proj\AppLogger\AppLogger\bin\Release\netstandard2.0\AppLogger.dll + 1>Successfully created package 'd:\proj\AppLogger\AppLogger\bin\Release\AppLogger.1.0.0.nupkg'. ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== ``` +### Alternate option: pack with MSBuild + +As an alternate to using the **Pack** menu command, NuGet 4.x+ and MSBuild 15.1+ supports a `pack` target when the project contains the necessary package data: + +```cli +msbuild /t:pack /p:Configuration=Release +``` + +The package can then be found in the `bin\Release` folder. + +For additional options with `msbuild /t:pack`, see [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md#pack-target). + ## Publish the package Once you have a `.nupkg` file, you publish it to nuget.org using either the `nuget.exe` CLI or the `dotnet.exe` CLI along with an API key acquired from nuget.org. @@ -127,3 +155,5 @@ This step is an alternative to using `nuget.exe`. - [Support multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) - [Package versioning](../reference/package-versioning.md) - [Creating localized packages](../create-packages/creating-localized-packages.md) +- [.NET Standard Library documentation](/dotnet/articles/standard/library) +- [Porting to .NET Core from .NET Framework](/dotnet/articles/core/porting/index) \ No newline at end of file diff --git a/docs/What-is-NuGet.md b/docs/what-is-nuget.md similarity index 100% rename from docs/What-is-NuGet.md rename to docs/what-is-nuget.md From c22f8783ab6883fac1b60e0fb9feb7412fa1a9ac Mon Sep 17 00:00:00 2001 From: Daniel Oliver Date: Sat, 3 Feb 2018 15:20:54 -0500 Subject: [PATCH 0526/2943] Missing dotnet nuget push api-key flag in quickstart. --- docs/quickstart/includes/publish-dotnet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/quickstart/includes/publish-dotnet.md b/docs/quickstart/includes/publish-dotnet.md index 060737375..31c099bba 100644 --- a/docs/quickstart/includes/publish-dotnet.md +++ b/docs/quickstart/includes/publish-dotnet.md @@ -3,7 +3,7 @@ 1. Run the following command, specifying your package name and replacing the key value with your API key: ```cli - dotnet nuget push AppLogger.1.0.0.nupkg qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 -s https://api.nuget.org/v3/index.json + dotnet nuget push AppLogger.1.0.0.nupkg -k qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 -s https://api.nuget.org/v3/index.json ``` 1. dotnet displays the results of the publishing process: From 41d061bc8f5a7e5b6abe508cf4f2bbdbdc593e51 Mon Sep 17 00:00:00 2001 From: Caro Caserio Date: Mon, 5 Feb 2018 12:21:45 -0300 Subject: [PATCH 0527/2943] M19207: Possible rong verb form/missing part Hello, @kraigb, Translator has reported possible source content issue. It seems that writer used the wrong verb form or there's something missing. Please, help to check my proposed file change into the article and help to merge if you agree with fix. If not, please, let me know either if you would like me to fix it in another way within this PR, if you prefer to fix it in another PR, or if I should close this PR as by-design. In case of using another PR, please, let me know of your PR number, so we can confirm and close this PR. Many thanks in advance. --- docs/archive/project-json-impact.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/archive/project-json-impact.md b/docs/archive/project-json-impact.md index 129ee9e1e..bf3fd7ac5 100644 --- a/docs/archive/project-json-impact.md +++ b/docs/archive/project-json-impact.md @@ -57,7 +57,7 @@ Packages that attempt to modify the project to ease startup typically work in a Most existing packages should not need to use the package format described below. -The format enables native content as a first class scenario. This means that managed assemblies depending on close to hardware implementations to ship binary implementations alongside the managed assemblies based on the target platform. For example System.IO.Compression package is utilizing this technology. [https://www.nuget.org/packages/System.IO.Compression](https://www.nuget.org/packages/System.IO.Compression) +The format enables native content as a first class scenario. This means that managed assemblies depend on close to hardware implementations to ship binary implementations alongside the managed assemblies based on the target platform. For example System.IO.Compression package is utilizing this technology. [https://www.nuget.org/packages/System.IO.Compression](https://www.nuget.org/packages/System.IO.Compression) In summary if the functionality above is not absolutely necessary, we recommend sticking with the existing package format, as the format described here is supported only by NuGet 3.x+. @@ -73,4 +73,4 @@ The 3.x package format allows for several additional features beyond NuGet 2.x: 1. Allows for separation of platform specific implementations to companion packages. -1. Support Native dependencies as a first class citizen. \ No newline at end of file +1. Support Native dependencies as a first class citizen. From 7cf900679bd52b38f1cc551926b93fb5f2875e39 Mon Sep 17 00:00:00 2001 From: Caro Caserio Date: Mon, 5 Feb 2018 14:10:30 -0300 Subject: [PATCH 0528/2943] M19261: Ambiguity: Unknown concept - light-up Hellom @kraigb, Translator has reported possible source content issue. Please, help to check my comment tag added into the article and reply with explanation if source text should be fixed, or it is by design. If fix is needed, please, let me know either if you would like me to fix it in this PR, or if you will fix it in another PR. In case of using another PR, please, let me know of your PR number, so we can confirm and close this PR. Many thanks in advance. --- docs/archive/project-json-and-uwp.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/archive/project-json-and-uwp.md b/docs/archive/project-json-and-uwp.md index 6bf674e88..9fc6e118d 100644 --- a/docs/archive/project-json-and-uwp.md +++ b/docs/archive/project-json-and-uwp.md @@ -118,6 +118,7 @@ In this example the assemblies in the `ref` directories would all be identical. The runtimes folder contains assemblies and native libraries required to run on specific "runtimes", which are generally defined by Operating System and CPU architecture. These runtimes are identified using [Runtime Identifiers (RIDs)](/dotnet/core/rid-catalog) such as `win`, `win-x86`, `win7-x86`, `win8-64`, etc. ## Native light-up + The following example shows a package that has a purely managed implementation for several platforms, but uses native helpers on Windows 8 where it can call into Windows 8-specific native APIs. @@ -193,4 +194,4 @@ If you want to create a package that can be consumed by projects using `packages - Source and config file transforms are not run by NuGet 3. -If you are supporting NuGet 2 and 3 then your `minClientVersion` should be the lowest version of NuGet 2 client that your package works on. In the case of an existing package it shouldn't need to change. \ No newline at end of file +If you are supporting NuGet 2 and 3 then your `minClientVersion` should be the lowest version of NuGet 2 client that your package works on. In the case of an existing package it shouldn't need to change. From a789721e776388dde613ef1078eb3093250abdee Mon Sep 17 00:00:00 2001 From: Caro Caserio Date: Tue, 6 Feb 2018 14:23:25 -0300 Subject: [PATCH 0529/2943] M19265: Typo mistake: "One" Hello, @kraigb, Translator has reported possible source content issue. Please, help to check my proposed file change into the article and help to merge if you agree with fix. If not, please, let me know either if you would like me to fix it in another way within this PR, if you prefer to fix it in another PR, or if I should close this PR as by-design. In case of using another PR, please, let me know of your PR number, so we can confirm and close this PR. Many thanks in advance. --- docs/policies/Governance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/policies/Governance.md b/docs/policies/Governance.md index ede989bf8..3ffa75874 100644 --- a/docs/policies/Governance.md +++ b/docs/policies/Governance.md @@ -36,7 +36,7 @@ Additionally, .NET Foundation staff consider the project lead the primary or fir ### Committers -Committers are contributors who have made sustained valuable contributions to NuGet and are appointed by the Benevolent Dictator. One appointed, committers are relied upon to both write code directly to the repository and screen the contributions of others. Committers are often developers but can contribute in other ways. +Committers are contributors who have made sustained valuable contributions to NuGet and are appointed by the Benevolent Dictator. Once appointed, committers are relied upon to both write code directly to the repository and screen the contributions of others. Committers are often developers but can contribute in other ways. Typically, a committer focuses on a specific aspect of the project, and brings a level of expertise and understanding that earns them the respect of the community and the project lead. The role of committer is not an official one, it's simply a position that influential members of the community assume as the project lead looks to them for guidance and support. From d8e557fb229a1c1f9c17152ad73e0626ab67d3e3 Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Tue, 6 Feb 2018 16:26:04 -0800 Subject: [PATCH 0530/2943] Update service index API docs to specify 3.0.0 instead of 3.0.0-beta.1 (#691) Related to https://github.com/NuGet/NuGetGallery/issues/5403 --- docs/api/_data/service-index.json | 2 +- docs/api/service-index.md | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/api/_data/service-index.json b/docs/api/_data/service-index.json index 44bb9606b..c7a8444ae 100644 --- a/docs/api/_data/service-index.json +++ b/docs/api/_data/service-index.json @@ -1,5 +1,5 @@ { - "version": "3.0.0-beta.1", + "version": "3.0.0", "resources": [ { "@id": "https://api.nuget.org/v3-flatcontainer/", diff --git a/docs/api/service-index.md b/docs/api/service-index.md index bd1d415aa..758e8d37f 100644 --- a/docs/api/service-index.md +++ b/docs/api/service-index.md @@ -35,7 +35,8 @@ service index schema, the version string's minor version will be increased. Each resource in the service index is versioned independently from the service index schema version. -The current schema version is `3.0.0-beta.1`. +The current schema version is `3.0.0`. The `3.0.0` version is functionally equivalent to the older `3.0.0-beta.1` +version but should be preferred as it more clearly communicates the stable, defined schema. ## HTTP methods From 0bd155a91ab854c6e81b9a96eeeb39c6d420b929 Mon Sep 17 00:00:00 2001 From: Morten Nielsen <1378165+dotMorten@users.noreply.github.com> Date: Wed, 7 Feb 2018 11:26:27 -0800 Subject: [PATCH 0531/2943] Make min-version check run before `ResolveAssemblyReferences` target When min version is 16299, other build errors occur before it gets to execute this target. Moving the BeforeTargets from `Build;Rebuile` to `ResolveAssemblyReferences` resolves this issue. --- docs/guides/Create-UWP-Controls.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/Create-UWP-Controls.md b/docs/guides/Create-UWP-Controls.md index 235ccf04b..d8a0b966e 100644 --- a/docs/guides/Create-UWP-Controls.md +++ b/docs/guides/Create-UWP-Controls.md @@ -110,7 +110,7 @@ Here is an example of what the targets file should look like: - + 10.0.14393 $(TargetPlatformMinVersion) From de7760db1d6fe62898c4a8f07ca62c8bac8f2cbd Mon Sep 17 00:00:00 2001 From: Ken Cenerelli Date: Sun, 11 Feb 2018 16:41:50 -0500 Subject: [PATCH 0532/2943] Update Overview-and-Workflow.md Fixed typo --- docs/create-packages/Overview-and-Workflow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Overview-and-Workflow.md b/docs/create-packages/Overview-and-Workflow.md index 3c8da31b1..eea552023 100644 --- a/docs/create-packages/Overview-and-Workflow.md +++ b/docs/create-packages/Overview-and-Workflow.md @@ -23,7 +23,7 @@ A package can also serve to only pull in any number of other dependencies, witho > [!Note] > When you create a package for use by other developers, it's important to understand that they are taking a dependency on your work. As such, creating and publishing a package also implies a commitment to fixing bugs and making other updates, or at the very least making the package available as open source so others can help to maintain it. -Whatever the case, creating a package begins with deciding which assemblies and other files to package. You then create a manifest file, referred to as a `.nuspec` file, to describe the package's contents along with its identifer, version number, copyright information, MSBuild props and targets, and much more. +Whatever the case, creating a package begins with deciding which assemblies and other files to package. You then create a manifest file, referred to as a `.nuspec` file, to describe the package's contents along with its identifier, version number, copyright information, MSBuild props and targets, and much more. When you've prepared all the necessary files in the appropriate folders and have created the appropriate `.nuspec` file, you then use the `nuget pack` command (or the [MSBuild pack target](../reference/msbuild-targets.md)) to put everything together into a `.nupkg` file. You're then ready to deploy the package to whatever host makes it available to other developers. From 995eb49f490e3ca3c79b1eb269de605dd4e8d8c5 Mon Sep 17 00:00:00 2001 From: Ken Cenerelli Date: Sun, 11 Feb 2018 16:59:57 -0500 Subject: [PATCH 0533/2943] Update Package-Manager-UI.md Multiple updates --- docs/tools/Package-Manager-UI.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/tools/Package-Manager-UI.md b/docs/tools/Package-Manager-UI.md index c242d8ba2..fc0819633 100644 --- a/docs/tools/Package-Manager-UI.md +++ b/docs/tools/Package-Manager-UI.md @@ -62,7 +62,7 @@ In this topic: ![Uninstalling a package](media/UninstallPackage.png) -1. Note that the **Include preprelease** and **Package source** controls have no effect when uninstalling packages. +1. Note that the **Include prerelease** and **Package source** controls have no effect when uninstalling packages. ## Updating a package @@ -72,7 +72,7 @@ In this topic: ![Updating a package](media/UpdatePackages.png) -1.
    For some packages, the **Update** button is disabled and a message appears saying that it's "Implicitly referenced by an SDK" (or "AutoReferenced"). The message indicates that the package, such as Microsoft.NETCore.App or Microsoft.NETStandard.Library, is part of a larger framework or SDK and should not be updated independently. (Such packagee are internally marked with `True`.) To update the package, update the SDK to which it belongs. +1. For some packages, the **Update** button is disabled and a message appears saying that it's "Implicitly referenced by an SDK" (or "AutoReferenced"). The message indicates that the package, such as Microsoft.NETCore.App or Microsoft.NETStandard.Library, is part of a larger framework or SDK and should not be updated independently. (Such packages are internally marked with `True`.) To update the package, update the SDK to which it belongs. ![Example package marked as Implicitly references or AutoReferenced](media/PackageManagerUIAutoReferenced.png) @@ -174,4 +174,4 @@ When selected, a modal window displays which the dependencies of a chosen packag **Remove dependencies**: when selected, removes any dependent packages if they're not referenced elsewhere in the project. -**Force uninstall even if there are dependencies on it**: when selected, uninstalls a package even if it's still being referenced in the project. This is typically used in combination with **Remove dependencies** to remove a package and whatever dependencies it installed. Using this option may, however, lead to a broken references in the project. In such cases you may need to [reinstall those other packages](../consume-packages/reinstalling-and-updating-packages.md). +**Force uninstall even if there are dependencies on it**: when selected, uninstalls a package even if it's still being referenced in the project. This is typically used in combination with **Remove dependencies** to remove a package and whatever dependencies it installed. Using this option may, however, lead to broken references in the project. In such cases, you may need to [reinstall those other packages](../consume-packages/reinstalling-and-updating-packages.md). From cb414a34528a84fa3a8430a2d6088136a226fabc Mon Sep 17 00:00:00 2001 From: Xavier Decoster Date: Mon, 12 Feb 2018 11:48:47 +0100 Subject: [PATCH 0534/2943] Add X-NuGet-Session-Id to HTTP request headers Add X-NuGet-Session-Id to list of well-known HTTP request headers in NuGet API. --- docs/api/overview.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/api/overview.md b/docs/api/overview.md index 2e67d8e58..f065e34d6 100644 --- a/docs/api/overview.md +++ b/docs/api/overview.md @@ -131,6 +131,7 @@ Name | Description X-NuGet-ApiKey | Required for push and delete, see [`PackagePublish` resource](package-publish-resource.md) X-NuGet-Client-Version | **Deprecated** and replaced by `X-NuGet-Protocol-Version` X-NuGet-Protocol-Version | Required in certain cases only on nuget.org, see [nuget.org protocols](NuGet-Protocols.md) +X-NuGet-Session-Id | Identifies HTTP requests that are part of the same NuGet client session. For `PackageReference` restore operations there is a single session id, for other scenarios such as auto complete, and `packages.config` restore there may be several different session id's due to how the code is factored. ## Authentication From 07c187a75b1e155df3734f4ddb208412d83a74b0 Mon Sep 17 00:00:00 2001 From: Xavier Decoster Date: Mon, 12 Feb 2018 11:55:04 +0100 Subject: [PATCH 0535/2943] Added note about client version --- docs/api/overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api/overview.md b/docs/api/overview.md index f065e34d6..98eb4173c 100644 --- a/docs/api/overview.md +++ b/docs/api/overview.md @@ -131,7 +131,7 @@ Name | Description X-NuGet-ApiKey | Required for push and delete, see [`PackagePublish` resource](package-publish-resource.md) X-NuGet-Client-Version | **Deprecated** and replaced by `X-NuGet-Protocol-Version` X-NuGet-Protocol-Version | Required in certain cases only on nuget.org, see [nuget.org protocols](NuGet-Protocols.md) -X-NuGet-Session-Id | Identifies HTTP requests that are part of the same NuGet client session. For `PackageReference` restore operations there is a single session id, for other scenarios such as auto complete, and `packages.config` restore there may be several different session id's due to how the code is factored. +X-NuGet-Session-Id | *Optional*. NuGet clients v4.7+ identify HTTP requests that are part of the same NuGet client session. For `PackageReference` restore operations there is a single session id, for other scenarios such as auto complete, and `packages.config` restore there may be several different session id's due to how the code is factored. ## Authentication From d1696a91ad1b5532c40c745932388190e8cf3360 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 12 Feb 2018 12:18:52 -0800 Subject: [PATCH 0536/2943] Clarifying package source order behavior --- docs/api/overview.md | 12 ++++------ docs/api/service-index.md | 4 +--- .../Configuring-NuGet-Behavior.md | 2 +- docs/consume-packages/Package-Restore.md | 12 +++++----- .../ways-to-install-a-package.md | 7 ++++-- docs/index.md | 24 +++++++++---------- docs/reference/nuget-config-file.md | 2 +- docs/what-is-nuget.md | 2 +- 8 files changed, 31 insertions(+), 34 deletions(-) diff --git a/docs/api/overview.md b/docs/api/overview.md index 2e67d8e58..2e522c2d2 100644 --- a/docs/api/overview.md +++ b/docs/api/overview.md @@ -24,16 +24,13 @@ The NuGet API is a set of HTTP endpoints that can be used to download packages, and perform most other operations available in the official NuGet clients. This API is used by the NuGet client in Visual Studio, nuget.exe, and the .NET CLI to perform NuGet operations such as -[`dotnet restore`](/dotnet/articles/core/preview3/tools/dotnet-restore), search in the Visual -Studio UI, and [`nuget.exe push`](../tools/cli-ref-push.md). +[`dotnet restore`](/dotnet/articles/core/preview3/tools/dotnet-restore), search in the Visual Studio UI, and [`nuget.exe push`](../tools/cli-ref-push.md). -Note in some cases, nuget.org has additional requirements that are not enforced by other package sources. These -differences are documented by the [nuget.org Protocols](nuget-protocols.md). +Note in some cases, nuget.org has additional requirements that are not enforced by other package sources. These differences are documented by the [nuget.org Protocols](nuget-protocols.md). ## Service index -The entry point for the API is a JSON document in a well known location. This document is called the **service index**. -The location of the service index for nuget.org is `https://api.nuget.org/v3/index.json`. +The entry point for the API is a JSON document in a well known location. This document is called the **service index**. The location of the service index for nuget.org is `https://api.nuget.org/v3/index.json`. This JSON document contains a list of *resources* which provide different functionality and fulfill different use cases. @@ -49,8 +46,7 @@ The API is version 3 of NuGet's HTTP protocol. This protocol is sometimes referr documents will refer to this version of the protocol simply as "the API." The service index schema version is indicated by the `version` property in the service index. The API mandates that -the version string has a major version number of `3`. As non-breaking changes are made to the service index schema, the -version string's minor version will be increased. +the version string has a major version number of `3`. As non-breaking changes are made to the service index schema, the version string's minor version will be increased. Older clients (such as nuget.exe 2.x) do not support the V3 API and only support the older V2 API, which is not documented here. diff --git a/docs/api/service-index.md b/docs/api/service-index.md index bd1d415aa..b7fa41ef6 100644 --- a/docs/api/service-index.md +++ b/docs/api/service-index.md @@ -29,9 +29,7 @@ nuget.org's service index is located at `https://api.nuget.org/v3/index.json`. ## Versioning -The `version` value is a SemVer 2.0.0 parseable version string which indicates the schema version of the service index. -The API mandates that the version string has a major version number of `3`. As non-breaking changes are made to the -service index schema, the version string's minor version will be increased. +The `version` value is a SemVer 2.0.0 parseable version string which indicates the schema version of the service index. The API mandates that the version string has a major version number of `3`. As non-breaking changes are made to the service index schema, the version string's minor version will be increased. Each resource in the service index is versioned independently from the service index schema version. diff --git a/docs/consume-packages/Configuring-NuGet-Behavior.md b/docs/consume-packages/Configuring-NuGet-Behavior.md index 187aa798d..9c6ff5a17 100644 --- a/docs/consume-packages/Configuring-NuGet-Behavior.md +++ b/docs/consume-packages/Configuring-NuGet-Behavior.md @@ -212,7 +212,7 @@ Mac/Linux: $XDG_DATA_HOME (typically ~/.local/share) ### NuGetDefaults.Config settings -- `packageSources`: this collection has the same meaning as `packageSources` in regular config files and specifies the default sources in their preferred order. If this setting exists in `NuGetDefaults.Config`, then NuGet doesn't use nuget.org as a default package source. An administrator can thus make sure that everyone using this file is working with the same sources and avoids using nuget.org if desired. +- `packageSources`: this collection has the same meaning as `packageSources` in regular config files and specifies the default sources. NuGet uses the sources in order when installing or updating packages in projects using the `packages.config` reference format. For projects using the PackageReference format, NuGet uses local sources first, then sources on network shares, then HTTP sources, regardless of the order in the configuration files. NuGet always ignores the order of sources with restore operations. - `disabledPackageSources`: this collection also has the same meaning as in `NuGet.Config` files, where each affected source is listed by its name and a true/false value indicating whether it's disabled. This allows the source name and URL to remain in `packageSources` without having it turned on by default. Individual developers can then re-enable the source by setting the source's value to false in other `NuGet.Config` files without having to find the correct URL again. This is also useful to supply developers with a full list of internal source URLs for an organization while enabling only an individual team's source by default. diff --git a/docs/consume-packages/Package-Restore.md b/docs/consume-packages/Package-Restore.md index f137c1228..aca84cc9c 100644 --- a/docs/consume-packages/Package-Restore.md +++ b/docs/consume-packages/Package-Restore.md @@ -3,12 +3,12 @@ title: NuGet Package Restore | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 01/18/2018 +ms.date: 02/12/2018 ms.topic: article ms.prod: nuget ms.technology: null ms.assetid: a7bf21da-86ae-4c2d-8750-04ff53f41967 -description: A description of how NuGet restores packages upon which a project depends, including how to disable restore and constrain versions. +description: An overview of how NuGet restores packages upon which a project depends, including how to disable restore and constrain versions. keywords: NuGet package restore, NuGet package installation, installing package, restoring packages, dependency versions, disabling automatic restore, constraining package versions ms.reviewer: - karann-msft @@ -25,13 +25,15 @@ For additional details on package restore on build servers, see [Package restore Restoring packages first installs the direct dependencies of a project as needed, then installing any dependencies of those packages throughout the entire dependency graph. -If a package is not already installed, NuGet first attempts to retrieve it from the [cache](../consume-packages/managing-the-nuget-cache.md). If the package is not in the cache, NuGet then attempts to download the package from the enabled sources as listed in **Tools > Options > NuGet Package Manager > Package Sources**, in the order that the sources appear. Downloaded packages are stored in the cache. +If a package is not already installed, NuGet first attempts to retrieve it from the [cache](../consume-packages/managing-the-nuget-cache.md). If the package is not in the cache, NuGet then attempts to download (and cache) the package from all enabled sources (see [Configuring NuGet behavior](Configuring-NuGet-Behavior.md)); sources also appear in the **Tools > Options > NuGet Package Manager > Package Sources** list in Visual Studio). NuGet ignores the order of package sources, using the package from whichever source is first to respond to requests. > [!Note] -> NuGet does not indicate a failure to find the package until all the sources have been checked, at which time it reports the failure only for the last source in the list. By implication such an error also means that the package wasn't present on any of the other sources either, even though errors were not shown for those sources individually. +> NuGet does not indicate a failure to restore a package until all the sources have been checked. At that time, NuGet reports the failure for only the last source in the list. The error implies that the package wasn't present on *any* of the other sources, even though errors are not shown for each of those sources individually. Package restore is triggered in the following ways: +- **dotnet CLI**: use the [dotnet restore](/dotnet/core/tools/dotnet-restore.md?tabs=netcore2x) command, which restores packages listed in the project file (see [PackageReference](../consume-packages/package-references-in-project-files.md)). With .NET Core 2.0 and later, restore is done automatically with `dotnet build` and `dotnet run`. + - **Package Manager UI (Visual Studio on Windows)**: Packages are restored automatically when creating a project from a template and when building a project (subject to the option described in [Enabling and disabling package restore](#enabling-and-disabling-package-restore)). In NuGet 4.0+, restore also happens automatically when changes are made to a .NET Core SDK-based project. To restore manually, right-click the solution in Solution Explorer and select **Restore NuGet Packages**. If one or more individual packages are still not installed properly (meaning that Solution Explorer shows an error icon), then use the Package Manager UI to uninstall and reinstall the affected packages. See [Reinstalling and updating packages](../consume-packages/reinstalling-and-updating-packages.md) @@ -40,8 +42,6 @@ Package restore is triggered in the following ways: - **NuGet CLI**: use the [nuget restore](../tools/cli-ref-restore.md) command, which restores packages listed in the project file (see [PackageReference](../consume-packages/package-references-in-project-files.md)) or in a [packages.config](../reference/packages-config.md) file. You can also specify a solution file. -- **dotnet CLI**: use the [dotnet restore](/dotnet/core/tools/dotnet-restore.md?tabs=netcore2x) command, which restores packages listed in the project file (see [PackageReference](../consume-packages/package-references-in-project-files.md)). With .NET Core 2.0 and later, restore is done automatically with `dotnet build` and `dotnet run`. - - **MSBuild**: use the [msbuild /t:restore](../reference/msbuild-targets.md#restore-target) command, which restores packages packages listed in the project file (see [PackageReference](../consume-packages/package-references-in-project-files.md)). Available only in NuGet 4.x+ and MSBuild 15.1+, which are included with Visual Studio 2017. `nuget restore` and `dotnet restore` both use this command for applicable projects. - **Visual Studio Team Services**: When creating a build definition on Team Services, include the [NuGet restore](/vsts/build-release/tasks/package/nuget#restore-nuget-packages) or [.NET Core Restore](/vsts/build-release/tasks/build/dotnet-core#restore-nuget-packages) task in the definition before any build task. This task is included by default in a number of build templates. diff --git a/docs/consume-packages/ways-to-install-a-package.md b/docs/consume-packages/ways-to-install-a-package.md index ffb5a97a9..3aca5be48 100644 --- a/docs/consume-packages/ways-to-install-a-package.md +++ b/docs/consume-packages/ways-to-install-a-package.md @@ -3,7 +3,7 @@ title: Ways to Install NuGet Packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 01/30/2018 +ms.date: 02/12/2018 ms.topic: get-started-article ms.prod: nuget ms.technology: null @@ -31,7 +31,10 @@ In general, NuGet does the following then asked to install a package: 1. Acquire the package: - Check if the requested package already exists in a cache (see [Managing the NuGet cache](managing-the-nuget-cache.md)). - - If the package is not in the cache, attempt to download the package from the sources listed in the configuration files, starting with the first in the list. This behavior allows you to use private package feeds before looking for a package on nuget.org (see [Configuring NuGet behavior](configuring-nuget-behavior.md)). + - If the package is not in the cache, attempt to download the package from the sources listed in the [configuration files](Configuring-NuGet-Behavior.md). + - For projects using the `packages.config` reference format, NuGet uses the order of the sources in the configuration. + - For projects using the PackageReference format, NuGet checks sources that are local folders first, then checks sources on network shares, then checks HTTP (Internet) sources. + - In general, the order in which NuGet checks sources isn't particularly meaningful, because any given package with a specific identifier and version number is exactly the same on whatever source it's found. - If the package is successfully acquired from one of the sources, NuGet adds it to the cache. Otherwise, installation fails. 1. Expand the package into the project. diff --git a/docs/index.md b/docs/index.md index 0deb99fc5..8597a24fa 100644 --- a/docs/index.md +++ b/docs/index.md @@ -16,7 +16,7 @@ keywords: author: kraigb ms.author: kraigb manager: ghogen -ms.date: 08/15/2017 +ms.date: 02/12/2018 ms.topic: hub-page ms.prod: nuget ms.technology: null @@ -53,7 +53,7 @@ ms.reviewer:
  • - +
    @@ -63,8 +63,8 @@ ms.reviewer:
    -

    Quickstarts

    -

    Experience NuGet with focused walkthroughs for creating a simple package and using a package.

    +

    Quickstart: Using a package

    +

    Learn how to install and use a NuGet package within a project (walkthroughs are available for both the dotnet CLI and Visual Studio).

  • @@ -72,18 +72,18 @@ ms.reviewer:
  • - +
    - Guides: experience NuGet's tools and capabilities with installation and package creation walkthroughs. + Guides: experience NuGet's tools and capabilities for creating a package.
    -

    Guides

    -

    Experience NuGet's tools and capabilities with installation and package creation walkthroughs.

    +

    Quickstart: Creating a pckage

    +

    Experience NuGet's tools and capabilities for package creation (walkthroughs are available for both the dotnet CLI and Visual Studio).

    @@ -101,7 +101,7 @@ ms.reviewer:
    -

    Create Packages

    +

    Create packages

    Everything you need to know about creating NuGet packages, from overall workflow to versioning, pre-release, & other specialized packages.

    @@ -120,7 +120,7 @@ ms.reviewer:
    -

    Consume Packages

    +

    Consume packages

    Everything you need to know about using NuGet packages, from finding and choosing good packages to restoration updates, and caching.

    @@ -139,7 +139,7 @@ ms.reviewer:
    -

    Host Packages

    +

    Host packages

    Learn how to host packages on your own servers or galleries to make them available to only a limited audience.

    @@ -225,7 +225,7 @@ ms.reviewer:
    -

    Visual Studio Extensibility

    +

    Visual Studio extensibility

    Details about the API to the NuGet Package Manager UI and Console in Visual Studio, project system support, and integrating into Visual Studio templates.

    diff --git a/docs/reference/nuget-config-file.md b/docs/reference/nuget-config-file.md index 4efb6d623..e7c0e29a0 100644 --- a/docs/reference/nuget-config-file.md +++ b/docs/reference/nuget-config-file.md @@ -127,7 +127,7 @@ Note that the source URL for nuget.org is `https://api.nuget.org/v3/index.json`. ### packageSources -Lists all known package sources. +Lists all known package sources. The order is ignored during restore operations and with any project using the PackageReference format. NuGet respects the order of sources for install and update operations with projects using `packages.config`. | Key | Value | | --- | --- | diff --git a/docs/what-is-nuget.md b/docs/what-is-nuget.md index 39c538e52..e1a66cd90 100644 --- a/docs/what-is-nuget.md +++ b/docs/what-is-nuget.md @@ -43,7 +43,7 @@ Package developers who require APIs outside of .NET Standard, on the other hand, ## NuGet tools -In addition to hosting support, NuGet also provides a variety of tools used by both creators and consumers: +In addition to hosting support, NuGet also provides a variety of tools used by both creators and consumers. See [Installing NuGet client tools](install-nuget-client-tools.md) for how to obtain specific tools. | Tool | Platforms | Applicable Scenarios | Description | | --- | --- | --- | --- | From e1ddea602c5f7528abc1f8d096d68c5e3c424ac4 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 12 Feb 2018 12:22:11 -0800 Subject: [PATCH 0537/2943] Fix link --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 8597a24fa..5b30bf3e5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -72,7 +72,7 @@ ms.reviewer:
  • - +
    From 74ded9677e80f8e2d7bd458b6218a700ecdf66fb Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 12 Feb 2018 12:47:54 -0800 Subject: [PATCH 0538/2943] Revert changes --- docs/api/_data/service-index.json | 2 +- docs/api/service-index.md | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/api/_data/service-index.json b/docs/api/_data/service-index.json index c7a8444ae..44bb9606b 100644 --- a/docs/api/_data/service-index.json +++ b/docs/api/_data/service-index.json @@ -1,5 +1,5 @@ { - "version": "3.0.0", + "version": "3.0.0-beta.1", "resources": [ { "@id": "https://api.nuget.org/v3-flatcontainer/", diff --git a/docs/api/service-index.md b/docs/api/service-index.md index 3f03cc1dd..b7fa41ef6 100644 --- a/docs/api/service-index.md +++ b/docs/api/service-index.md @@ -33,8 +33,7 @@ The `version` value is a SemVer 2.0.0 parseable version string which indicates t Each resource in the service index is versioned independently from the service index schema version. -The current schema version is `3.0.0`. The `3.0.0` version is functionally equivalent to the older `3.0.0-beta.1` -version but should be preferred as it more clearly communicates the stable, defined schema. +The current schema version is `3.0.0-beta.1`. ## HTTP methods From 8676c72862b31ec701528bc3776995841ba97ed0 Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Tue, 6 Feb 2018 16:26:04 -0800 Subject: [PATCH 0539/2943] Update service index API docs to specify 3.0.0 instead of 3.0.0-beta.1 (#700) Related to https://github.com/NuGet/NuGetGallery/issues/5403 --- docs/api/_data/service-index.json | 2 +- docs/api/service-index.md | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/api/_data/service-index.json b/docs/api/_data/service-index.json index 44bb9606b..c7a8444ae 100644 --- a/docs/api/_data/service-index.json +++ b/docs/api/_data/service-index.json @@ -1,5 +1,5 @@ { - "version": "3.0.0-beta.1", + "version": "3.0.0", "resources": [ { "@id": "https://api.nuget.org/v3-flatcontainer/", diff --git a/docs/api/service-index.md b/docs/api/service-index.md index b7fa41ef6..3f03cc1dd 100644 --- a/docs/api/service-index.md +++ b/docs/api/service-index.md @@ -33,7 +33,8 @@ The `version` value is a SemVer 2.0.0 parseable version string which indicates t Each resource in the service index is versioned independently from the service index schema version. -The current schema version is `3.0.0-beta.1`. +The current schema version is `3.0.0`. The `3.0.0` version is functionally equivalent to the older `3.0.0-beta.1` +version but should be preferred as it more clearly communicates the stable, defined schema. ## HTTP methods From ade1efd92dc3ab5fa9e34d8101af84528a1328a2 Mon Sep 17 00:00:00 2001 From: Ken Cenerelli Date: Mon, 12 Feb 2018 22:06:55 -0500 Subject: [PATCH 0540/2943] Update report-abuse-resource.md Typo --- docs/api/report-abuse-resource.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api/report-abuse-resource.md b/docs/api/report-abuse-resource.md index 044665033..aabab1bfc 100644 --- a/docs/api/report-abuse-resource.md +++ b/docs/api/report-abuse-resource.md @@ -62,7 +62,7 @@ Name | Type | Required | Notes `{id}` | string | no | The package ID to report abuse for `{version}` | string | no | The package version to report abuse for -The `{id}` and `{version}` values interpreted by the server implementation must be case insenstive and not sensitive to +The `{id}` and `{version}` values interpreted by the server implementation must be case insensitive and not sensitive to whether the version is normalized. For example, nuget.org's report abuse template looks like this: From 7eeab61dfbce9436f5fe4695d828f99f76395573 Mon Sep 17 00:00:00 2001 From: Ken Cenerelli Date: Mon, 12 Feb 2018 22:16:10 -0500 Subject: [PATCH 0541/2943] Update catalog-resource.md Corrected multiple minor typos --- docs/api/catalog-resource.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/api/catalog-resource.md b/docs/api/catalog-resource.md index e7beabc3f..a8a6dee79 100644 --- a/docs/api/catalog-resource.md +++ b/docs/api/catalog-resource.md @@ -47,7 +47,7 @@ All URLs found in the catalog resource support only the HTTP methods `GET` and ` ## Catalog index -The catalog index is a document in a well-known location that has a list of catalog items, ordered cronologically. It is the entry point of the catalog resource. +The catalog index is a document in a well-known location that has a list of catalog items, ordered chronologically. It is the entry point of the catalog resource. The index is comprised of catalog pages. Each catalog page contains catalog items. Each catalog item represents an event concerning a single package at a point in time. A catalog item can represent a package that was created, unlisted, relisted, or deleted from the package source. By processing the catalog items in chronological order, the client can build an up-to-date view of every package that exists on the V3 package source. @@ -137,7 +137,7 @@ not contain all of the catalog item's data. The order of the items in the page's can be ordered by the client in memory using their `commitTimeStamp` property. The number of catalog items in a page is defined by server implementation. For nuget.org, there are at most 550 -items in each page, although the actual number may be smaller for some pages dependong on the size of the next commit +items in each page, although the actual number may be smaller for some pages depending on the size of the next commit batch at the point in time. As new items are introduced, the `count` is incremented and new catalog item objects appear in the `items` @@ -177,7 +177,7 @@ For more details about what each type means, see the [corresponding items type]( ## Catalog leaf The catalog leaf contains metadata about a specific package ID and version at some point in time. It is a document -fetched using the `@id` value found in a catalog page. The URL to a catalog leaf is not intended to be predictedable +fetched using the `@id` value found in a catalog page. The URL to a catalog leaf is not intended to be predictable and should be discovered using only a catalog page. The catalog leaf document is a JSON object with the following properties: @@ -250,13 +250,13 @@ be included here. The `created` timestamp is when the package was first received by the package source, which is typically a short time before the catalog item's commit timestamp. -The `packageHashAlgorithm` is a string defined by the server implementation represeting the hashing algorithm used to +The `packageHashAlgorithm` is a string defined by the server implementation representing the hashing algorithm used to produce the `packageHash`. nuget.org always used the `packageHashAlgorithm` value of `SHA512`. The `published` timestamp is the time when the package was last listed. > [!Note] -> On nuget.org, the `published` value is set to year 1900 when the package is unlisted. +> On nuget.org, the `published` value is set to the year 1900 when the package is unlisted. #### Sample request @@ -352,7 +352,7 @@ to the package source. ### Dependent cursors -Suppose there are two catalog clients that have an inherant dependency where one client's output depends on another +Suppose there are two catalog clients that have an inherent dependency where one client's output depends on another client's output. #### Example @@ -369,7 +369,7 @@ Since both resources are built off of the catalog, the cursor of the catalog cli #### Algorithm -To implement this restriction, simple modify the algorithm above to be: +To implement this restriction, simply modify the algorithm above to be: 1. Fetch the recorded cursor value from a local store. 1. Download and deserialize the catalog index. From 232f0321dca84fdf99b04bd18bf1f49ec9a2a17b Mon Sep 17 00:00:00 2001 From: Alireza Date: Wed, 14 Feb 2018 12:02:51 +1100 Subject: [PATCH 0542/2943] Updated NuGet 4.3.0+ support of SemVer 2.0.0. --- docs/create-packages/Prerelease-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Prerelease-Packages.md b/docs/create-packages/Prerelease-Packages.md index 4e9d5e8e2..a6be77f0f 100644 --- a/docs/create-packages/Prerelease-Packages.md +++ b/docs/create-packages/Prerelease-Packages.md @@ -75,7 +75,7 @@ With this in mind, it's generally good to follow recognized naming conventions s - `-rc`: Release candidate, typically a release that's potentially final (stable) unless significant bugs emerge. > [!Note] -> NuGet does not support [SemVer-compatible (v2.0.0)](http://semver.org/spec/v2.0.0.html) prerelease numbers with dot notation, as in `1.0.1-build.23`. You can use a form like `1.0.1-build23` but this is always considered a pre-release version. +> NuGet 4.3.0+ supports [SemVer-compatible (v2.0.0)](http://semver.org/spec/v2.0.0.html), which supports pre-release numbers with dot notation, as `in 1.0.1-build.23`. Dot notation is not supported with NuGet versions before 4.3.0. You can use a form like `1.0.1-build23` but this is always considered a pre-release version. Whatever suffixes you use, however, NuGet will give them precedence in reverse alphabetical order: From 00cf4f90f9ce37b6b1b639b415cadfa85d961c92 Mon Sep 17 00:00:00 2001 From: Caio Proiete Date: Tue, 13 Feb 2018 22:29:02 -0400 Subject: [PATCH 0543/2943] Update folder convention for `build` to show NuGet >= 2.5 is required for this feature --- docs/create-packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Creating-a-Package.md b/docs/create-packages/Creating-a-Package.md index 95f568cf9..bf0d1b6e3 100644 --- a/docs/create-packages/Creating-a-Package.md +++ b/docs/create-packages/Creating-a-Package.md @@ -170,7 +170,7 @@ The folder conventions are as follows: | lib/{tfm} | Assembly (`.dll`), documentation (`.xml`), and symbol (`.pdb`) files for the given Target Framework Moniker (TFM) | Assemblies are added as references; `.xml` and `.pdb` copied into project folders. See [Supporting multiple target frameworks](supporting-multiple-target-frameworks.md) for creating framework target-specific sub-folders. | | runtimes | Architecture-specific assembly (`.dll`), symbol (`.pdb`), and native resource (`.pri`) files | Assemblies are added as references; other files are copied into project folders. See [Supporting multiple target frameworks](supporting-multiple-target-frameworks.md). | | content | Arbitrary files | Contents are copied to the project root. Think of the **content** folder as the root of the target application that ultimately consumes the package. To have the package add an image in the application's */images* folder, place it in the package's *content/images* folder. | -| build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (NuGet 2.x) or `project.lock.json` (NuGet 3.x+). | +| build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (NuGet 2.5+) or `project.lock.json` (NuGet 3.x+). | | tools | Powershell scripts and programs accessible from the Package Manager Console | The `tools` folder is added to the `PATH` environment variable for the Package Manager Console only (Specifically, *not* to the `PATH` as set for MSBuild when building the project). | Because your folder structure can contain any number of assemblies for any number of target frameworks, this method is necessary when creating packages that support multiple frameworks From 06eb87724ce10cb54a894950e20ac407043b862b Mon Sep 17 00:00:00 2001 From: Caio Proiete Date: Tue, 13 Feb 2018 22:46:12 -0400 Subject: [PATCH 0544/2943] Add `minClientVersion=2.5` attribute to `.nuspec` example of including files in the `build` folder --- docs/create-packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Creating-a-Package.md b/docs/create-packages/Creating-a-Package.md index bf0d1b6e3..e4ee0ac72 100644 --- a/docs/create-packages/Creating-a-Package.md +++ b/docs/create-packages/Creating-a-Package.md @@ -332,7 +332,7 @@ Then in the `.nuspec` file, be sure to refer to these files in the `` nod ```xml - + From 8207672195f74d806fa016af71a84b277879c1cc Mon Sep 17 00:00:00 2001 From: Caio Proiete Date: Tue, 13 Feb 2018 23:02:46 -0400 Subject: [PATCH 0545/2943] Add explanation that the `build` feature requires NuGet 2.5 and recommendation --- docs/create-packages/Creating-a-Package.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/create-packages/Creating-a-Package.md b/docs/create-packages/Creating-a-Package.md index e4ee0ac72..0c332ae1f 100644 --- a/docs/create-packages/Creating-a-Package.md +++ b/docs/create-packages/Creating-a-Package.md @@ -345,7 +345,9 @@ Then in the `.nuspec` file, be sure to refer to these files in the `` nod ``` -When NuGet 2.x installs a package with `\build` files, it adds an MSBuild `` elements in the project file pointing to the `.targets` and `.props` files. (`.props` is added at the top of the project file; `.targets` is added at the bottom.) +Including MSBuild props and targets in a package is a feature that was only [introduced with the release of NuGet 2.5](../release-notes/nuget-2.5#automatic-import-of-msbuild-targets-and-props-files), therefore it is recommended to add the `minClientVersion="2.5"` attribute to the `metadata` element, to indicate the minimum NuGet client version required to consume the package. + +When NuGet 2.5+ installs a package with `\build` files, it adds an MSBuild `` elements in the project file pointing to the `.targets` and `.props` files. (`.props` is added at the top of the project file; `.targets` is added at the bottom.) With NuGet 3.x, targets are not added to the project but are instead made available through the `project.lock.json`. From 4ac275ba73061c0936e0b1e08977f61a04444923 Mon Sep 17 00:00:00 2001 From: Caio Proiete Date: Tue, 13 Feb 2018 23:16:55 -0400 Subject: [PATCH 0546/2943] Fix link to NuGet 2.5 release notes to point to .md file --- docs/create-packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Creating-a-Package.md b/docs/create-packages/Creating-a-Package.md index 0c332ae1f..82003a3ce 100644 --- a/docs/create-packages/Creating-a-Package.md +++ b/docs/create-packages/Creating-a-Package.md @@ -345,7 +345,7 @@ Then in the `.nuspec` file, be sure to refer to these files in the `` nod ``` -Including MSBuild props and targets in a package is a feature that was only [introduced with the release of NuGet 2.5](../release-notes/nuget-2.5#automatic-import-of-msbuild-targets-and-props-files), therefore it is recommended to add the `minClientVersion="2.5"` attribute to the `metadata` element, to indicate the minimum NuGet client version required to consume the package. +Including MSBuild props and targets in a package is a feature that was only [introduced with the release of NuGet 2.5](../release-notes/NuGet-2.5.md#automatic-import-of-msbuild-targets-and-props-files), therefore it is recommended to add the `minClientVersion="2.5"` attribute to the `metadata` element, to indicate the minimum NuGet client version required to consume the package. When NuGet 2.5+ installs a package with `\build` files, it adds an MSBuild `` elements in the project file pointing to the `.targets` and `.props` files. (`.props` is added at the top of the project file; `.targets` is added at the bottom.) From 6b9f4f5a6fa16130d064f9de040138f9e486f940 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 14 Feb 2018 17:00:17 -0800 Subject: [PATCH 0547/2943] tweaks from content validation --- docs/consume-packages/Package-Restore.md | 2 +- ...reate-and-publish-a-package-using-the-dotnet-cli.md | 3 +-- docs/quickstart/includes/publish-manage.md | 2 +- docs/reference/nuspec.md | 2 +- docs/release-notes/NuGet-1.1.md | 2 +- docs/release-notes/NuGet-2.6.1-for-WebMatrix.md | 10 +++++----- 6 files changed, 10 insertions(+), 11 deletions(-) diff --git a/docs/consume-packages/Package-Restore.md b/docs/consume-packages/Package-Restore.md index aca84cc9c..5633bd30d 100644 --- a/docs/consume-packages/Package-Restore.md +++ b/docs/consume-packages/Package-Restore.md @@ -32,7 +32,7 @@ If a package is not already installed, NuGet first attempts to retrieve it from Package restore is triggered in the following ways: -- **dotnet CLI**: use the [dotnet restore](/dotnet/core/tools/dotnet-restore.md?tabs=netcore2x) command, which restores packages listed in the project file (see [PackageReference](../consume-packages/package-references-in-project-files.md)). With .NET Core 2.0 and later, restore is done automatically with `dotnet build` and `dotnet run`. +- **dotnet CLI**: use the [dotnet restore](/dotnet/core/tools/dotnet-restore?tabs=netcore2x) command, which restores packages listed in the project file (see [PackageReference](../consume-packages/package-references-in-project-files.md)). With .NET Core 2.0 and later, restore is done automatically with `dotnet build` and `dotnet run`. - **Package Manager UI (Visual Studio on Windows)**: Packages are restored automatically when creating a project from a template and when building a project (subject to the option described in [Enabling and disabling package restore](#enabling-and-disabling-package-restore)). In NuGet 4.0+, restore also happens automatically when changes are made to a .NET Core SDK-based project. 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 1dcf96468..a8daf8778 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 @@ -1,5 +1,5 @@ --- -title: Introductory Guide to Creating and Publishing a NuGet Package using the dotnet CLI | Microsoft Docs +title:Creating and publishing a NuGet package using the dotnet CLI | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen @@ -91,7 +91,6 @@ Once you have a `.nupkg` file, you publish it to nuget.org using the `dotnet nug [!INCLUDE[publish-errors](includes/publish-errors.md)] - ### Manage the published package [!INCLUDE[publish-manage](includes/publish-manage.md)] diff --git a/docs/quickstart/includes/publish-manage.md b/docs/quickstart/includes/publish-manage.md index 513759d14..cde7211e3 100644 --- a/docs/quickstart/includes/publish-manage.md +++ b/docs/quickstart/includes/publish-manage.md @@ -1,6 +1,6 @@ From your profile on nuget.org, select **Manage Packages** to see the one you just published. You also receive a confirmation email. Note that it might take a while for your package to be indexed and appear in search results where others can find it. During that time your package page shows the message below: - ![This package has not been indexed yet. It will appear in search results and will be available for install/restore after indexing is complete.](../media/QS_Create-03-NotIndexed.png) +![This package has not been indexed yet. It will appear in search results and will be available for install/restore after indexing is complete.](../media/QS_Create-03-NotIndexed.png) And that's it! You've just published your first NuGet package to nuget.org that other developers can use in their own projects. diff --git a/docs/reference/nuspec.md b/docs/reference/nuspec.md index 9447db79a..87ce75dd4 100644 --- a/docs/reference/nuspec.md +++ b/docs/reference/nuspec.md @@ -90,7 +90,7 @@ These elements may appear within a `` element. | **owners** | A comma-separated list of the package creators using profile names on nuget.org. This is often the same list as in `authors`, and is ignored when uploading the package to nuget.org. See [Managing package owners on nuget.org](../create-packages/publish-a-package.md#managing-package-owners-on-nugetorg). | | **projectUrl** | A URL for the package's home page, often shown in UI displays as well as nuget.org. | | **licenseUrl** | A URL for the package's license, often shown in UI displays as well as nuget.org. | -| **iconUrl** | A URL for a 64x64 image with transparency background to use as the icon for the package in UI display. Be sure this element contains the *direct image URL* and not the URL of a web page containing the image. For example, to use an image from GitHub, use the raw file URL like `https://github.com///raw//`. | +| **iconUrl** | A URL for a 64x64 image with transparency background to use as the icon for the package in UI display. Be sure this element contains the *direct image URL* and not the URL of a web page containing the image. For example, to use an image from GitHub, use the raw file URL like *https://github.com/\/\/raw/\/\*. | | **requireLicenseAcceptance** | A Boolean value specifying whether the client must prompt the consumer to accept the package license before installing the package. | | **developmentDependency** | *(2.8+)* A Boolean value specifying whether the package is be marked as a development-only-dependency, which prevents the package from being included as a dependency in other packages. | | **summary** | A short description of the package for UI display. If omitted, a truncated version of `description` is used. | diff --git a/docs/release-notes/NuGet-1.1.md b/docs/release-notes/NuGet-1.1.md index 33264fc0c..b3fdbc19e 100644 --- a/docs/release-notes/NuGet-1.1.md +++ b/docs/release-notes/NuGet-1.1.md @@ -131,7 +131,7 @@ The following are the changes made in this Release Candidate since CTP 2. Visit The following are the most significant changes made in CTP 2: -* Switched the package feed from ATOM to an OData service endpoint: If you upgrade to the CTP2 version of NuGet, be sure to add the following URL as a package source: [http://go.microsoft.com/fwlink/?LinkID=204820](http://go.microsoft.com/fwlink/?LinkID=204820). +* Switched the package feed from ATOM to an OData service endpoint: If you upgrade to the CTP2 version of NuGet, be sure to add the following URL as a package source: https://feed.nuget.org/ctp2/odata/v1/. * Renamed the Add-Package command to *Install-Package*. * Updated the `.nuspec` Format. The `.nuspec` format now includes the *iconUrl* field for specifying a 32x32 png icon which will show up in the Add Package Dialog. So be sure to set that to distinguish your package. The `.nuspec` format also includes the new *projectUrl* field which you can use to point to a web page that provides more information about your package. 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 34fdb1d63..87afb697a 100644 --- a/docs/release-notes/NuGet-2.6.1-for-WebMatrix.md +++ b/docs/release-notes/NuGet-2.6.1-for-WebMatrix.md @@ -19,13 +19,13 @@ ms.reviewer: [NuGet 2.6 Release Notes](../release-notes/nuget-2.6.md) | [NuGet 2.7 Release Notes](../release-notes/nuget-2.7.md) -The NuGet team released an updated NuGet Package Manager extension for WebMatrix on March 26, 2014. This update can be installed from the [WebMatrix Extension Gallery](http://extensions.webmatrix.com/packages/NuGetPackageManager/) using the following steps: +The NuGet team released an updated NuGet Package Manager extension for WebMatrix on March 26, 2014. This update can be installed from the [WebMatrix Extension Gallery](https://blogs.iis.net/webmatrix/retiring-the-webmatrix-extensions-gallery) using the following steps: 1. Open WebMatrix 3 -2. Click the Extensions icon in the Home ribbon -3. Select the Updates tab -4. Click to update NuGet Package Manager to 2.6.1 -6. Close and restart WebMatrix 3 +1. Click the Extensions icon in the Home ribbon +1. Select the Updates tab +1. Click to update NuGet Package Manager to 2.6.1 +1. Close and restart WebMatrix 3 ## Notable Changes From 84849d9b5d629ed0568ff0755e84068c218f4cc8 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 14 Feb 2018 17:03:20 -0800 Subject: [PATCH 0548/2943] Missing space --- .../create-and-publish-a-package-using-the-dotnet-cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 a8daf8778..4a330096d 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 @@ -1,5 +1,5 @@ --- -title:Creating and publishing a NuGet package using the dotnet CLI | Microsoft Docs +title: Creating and publishing a NuGet package using the dotnet CLI | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen From d21196112cf5f3a90827d90521ccd6a41b0696de Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Thu, 15 Feb 2018 11:23:15 -0800 Subject: [PATCH 0549/2943] Update Prerelease-Packages.md Made some minor edits inline. --- docs/create-packages/Prerelease-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Prerelease-Packages.md b/docs/create-packages/Prerelease-Packages.md index a6be77f0f..4681469fd 100644 --- a/docs/create-packages/Prerelease-Packages.md +++ b/docs/create-packages/Prerelease-Packages.md @@ -75,7 +75,7 @@ With this in mind, it's generally good to follow recognized naming conventions s - `-rc`: Release candidate, typically a release that's potentially final (stable) unless significant bugs emerge. > [!Note] -> NuGet 4.3.0+ supports [SemVer-compatible (v2.0.0)](http://semver.org/spec/v2.0.0.html), which supports pre-release numbers with dot notation, as `in 1.0.1-build.23`. Dot notation is not supported with NuGet versions before 4.3.0. You can use a form like `1.0.1-build23` but this is always considered a pre-release version. +> NuGet 4.3.0+ supports [Semantic Versioning v2.0.0](http://semver.org/spec/v2.0.0.html), which supports pre-release numbers with dot notation, as `in 1.0.1-build.23`. Dot notation is not supported with NuGet versions before 4.3.0. In earlier versions og NuGet, you could use a form like `1.0.1-build23` but this was always considered a pre-release version. Whatever suffixes you use, however, NuGet will give them precedence in reverse alphabetical order: From 20346c956fe98363f1a722640606f1b3e928a39d Mon Sep 17 00:00:00 2001 From: Alfred Myers Date: Thu, 15 Feb 2018 22:31:42 -0200 Subject: [PATCH 0550/2943] Fixed minor typos --- docs/what-is-nuget.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/what-is-nuget.md b/docs/what-is-nuget.md index e1a66cd90..b7e98f224 100644 --- a/docs/what-is-nuget.md +++ b/docs/what-is-nuget.md @@ -36,7 +36,7 @@ Whatever its nature, a host serves as the point of connection between package *c A "compatible" package means that it contains assemblies built for at least one target .NET framework that's compatible with the consuming project's target framework. Developers can create packages that are specific to one framework, as with UWP controls, or they can support a wider range of targets. To maximize a package's compatibility, developers target [.NET Standard](/dotnet/standard/net-standard), which all .NET projects can consume. This is the most efficient means for both creators and consumers, as a single package (usually containing a single assembly) works for all consuming projects. -Package developers who require APIs outside of .NET Standard, on the other hand, create separate assemblies for the different target frameworks they want to support and include all of those assemblies in the same package (which is called "multi-targeting"). When a consumer installs such a package, NuGet extracts only those assemblies that are needed by the project. This minimizes the package's footprint in the final application and/or assemblies produced by that project. A multi-targeting package if, of course, more difficult for its creator to maintain. +Package developers who require APIs outside of .NET Standard, on the other hand, create separate assemblies for the different target frameworks they want to support and include all of those assemblies in the same package (which is called "multi-targeting"). When a consumer installs such a package, NuGet extracts only those assemblies that are needed by the project. This minimizes the package's footprint in the final application and/or assemblies produced by that project. A multi-targeting package is, of course, more difficult for its creator to maintain. > [!Note] > Targeting .NET Standard supercedes the previous approach of using various "portable class library" (PCL) targets. This documentation therefore focuses on creating packages for .NET Standard. @@ -72,7 +72,7 @@ For more details on how NuGet performs this service, see [Dependency resolution] ## Tracking references and restoring packages -Because projects can easily move between developer computers, source control repositories, build servers, and so forth, it's highly impractical to keep binary assemblies from NuGet packages directly bound to a project. Doing so would this make each copy of the project unnecessarily bloated (and thereby waste space in source control repositories). It would also make it very difficult to update package binaries to newer versions as updates would have to be applied across all copies of the project. +Because projects can easily move between developer computers, source control repositories, build servers, and so forth, it's highly impractical to keep binary assemblies from NuGet packages directly bound to a project. Doing so would make each copy of the project unnecessarily bloated (and thereby waste space in source control repositories). It would also make it very difficult to update package binaries to newer versions as updates would have to be applied across all copies of the project. NuGet instead maintains a simple reference list of the packages upon which a project depends, including both top-level and down-level dependencies. That is, whenever you install a package from some host into a project, NuGet records the package identifier and version number in the reference list. (Uninstalling a package, of course, removes it from the list.) NuGet then provides a means to restore all referenced packages upon request, as described on [Package restore](consume-packages/package-restore.md). From e7c1e6b7c95730275afdbcc3a512adc0acf0eaa2 Mon Sep 17 00:00:00 2001 From: Matt Ring Date: Thu, 15 Feb 2018 22:08:52 -0600 Subject: [PATCH 0551/2943] Updated formatting of NuGetDefaults.Config section Replaced sentence with a table to improve the readability of where the NuGetDefaults.Config file should reside, depending on NuGet version and OS platform. --- docs/consume-packages/Configuring-NuGet-Behavior.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/consume-packages/Configuring-NuGet-Behavior.md b/docs/consume-packages/Configuring-NuGet-Behavior.md index 9c6ff5a17..45ebbbcf5 100644 --- a/docs/consume-packages/Configuring-NuGet-Behavior.md +++ b/docs/consume-packages/Configuring-NuGet-Behavior.md @@ -207,8 +207,12 @@ The `NuGetDefaults.Config` file exists to specify package sources from which pac ### NuGetDefaults.Config location -Windows: %ProgramFiles(x86)%\NuGet\Config (NuGet 2.7 to NuGet 3.x: %PROGRAMDATA%\NuGet\NuGetDefaults.Config) -Mac/Linux: $XDG_DATA_HOME (typically ~/.local/share) +The following table describes where the `NuGetDefaults.Config` file should be stored, depending on the target OS: + +| OS Platform | NuGetDefaults.Config Location | +| --- | --- | +| Windows | **NuGet 4.x:** %ProgramFiles(x86)%\NuGet\Config
    **NuGet 2.7 to 3.x:** %PROGRAMDATA%\NuGet | +| Mac/Linux | $XDG_DATA_HOME (typically ~/.local/share)| ### NuGetDefaults.Config settings From 95ba5249983fec567b1202e81a3a03b2f5a3cc86 Mon Sep 17 00:00:00 2001 From: Justin Emgarten Date: Fri, 16 Feb 2018 14:01:21 -0800 Subject: [PATCH 0552/2943] Add RepositoryCommit and RepositoryBranch for pack Document commit and branch nuspec additions. Related: https://github.com/NuGet/Home/issues/6547 Related: https://github.com/NuGet/NuGet.Client/commit/0e4d1b598f350b3dc675018d539114d1328189ef --- docs/reference/msbuild-targets.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index f92ceeabb..1053db5d2 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -59,8 +59,10 @@ Note that the `Owners` and `Summary` properties from `.nuspec` are not supported | IconUrl | PackageIconUrl | empty | | | Tags | PackageTags | empty | Tags are semi-colon delimited. | | ReleaseNotes | PackageReleaseNotes | empty | | -| RepositoryUrl | RepositoryUrl | empty | | -| RepositoryType | RepositoryType | empty | | +| Repository/Url | RepositoryUrl | empty | Repository URL used to clone or retrieve source code. Example: *https://github.com/NuGet/NuGet.Client.git* | +| Repository/Type | RepositoryType | empty | Repository type. Examples: *git*, *tfs*. | +| Repository/Branch | RepositoryBranch | empty | Optional repository branch information. Example: *master* (NuGet 4.7.0+) | +| Repository/Commit | RepositoryCommit | empty | Optional repository commit or changeset to indicate which source the package was built against. Example: *0e4d1b598f350b3dc675018d539114d1328189ef* (NuGet 4.7.0+) | | PackageType | `DotNetCliTool, 1.0.0.0;Dependency, 2.0.0.0` | | | | Summary | Not supported | | | @@ -86,6 +88,8 @@ Note that the `Owners` and `Summary` properties from `.nuspec` are not supported - IsTool - RepositoryUrl - RepositoryType +- RepositoryBranch +- RepositoryCommit - NoPackageAnalysis - MinClientVersion - IncludeBuildOutput From 12459b949868a36e438a37360448212f74ae66f0 Mon Sep 17 00:00:00 2001 From: Justin Emgarten Date: Fri, 16 Feb 2018 14:18:09 -0800 Subject: [PATCH 0553/2943] Adding note on RepositoryUrl requirement --- docs/reference/msbuild-targets.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index 1053db5d2..5ffc5279c 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -61,8 +61,8 @@ Note that the `Owners` and `Summary` properties from `.nuspec` are not supported | ReleaseNotes | PackageReleaseNotes | empty | | | Repository/Url | RepositoryUrl | empty | Repository URL used to clone or retrieve source code. Example: *https://github.com/NuGet/NuGet.Client.git* | | Repository/Type | RepositoryType | empty | Repository type. Examples: *git*, *tfs*. | -| Repository/Branch | RepositoryBranch | empty | Optional repository branch information. Example: *master* (NuGet 4.7.0+) | -| Repository/Commit | RepositoryCommit | empty | Optional repository commit or changeset to indicate which source the package was built against. Example: *0e4d1b598f350b3dc675018d539114d1328189ef* (NuGet 4.7.0+) | +| Repository/Branch | RepositoryBranch | empty | Optional repository branch information. *RepositoryUrl* must also be specified for this property to be included. Example: *master* (NuGet 4.7.0+) | +| Repository/Commit | RepositoryCommit | empty | Optional repository commit or changeset to indicate which source the package was built against. *RepositoryUrl* must also be specified for this property to be included. Example: *0e4d1b598f350b3dc675018d539114d1328189ef* (NuGet 4.7.0+) | | PackageType | `DotNetCliTool, 1.0.0.0;Dependency, 2.0.0.0` | | | | Summary | Not supported | | | From d1868aaad9bd600407311ee8fff374896fff88f1 Mon Sep 17 00:00:00 2001 From: Brad Reimer Date: Sat, 17 Feb 2018 23:48:29 -0800 Subject: [PATCH 0554/2943] Fix typo Fix spelling of "package" on getting started page --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 5b30bf3e5..c0c7ca1bc 100644 --- a/docs/index.md +++ b/docs/index.md @@ -82,7 +82,7 @@ ms.reviewer:
    -

    Quickstart: Creating a pckage

    +

    Quickstart: Creating a package

    Experience NuGet's tools and capabilities for package creation (walkthroughs are available for both the dotnet CLI and Visual Studio).

    From 68da195a1897740efd20967fcc35817d83d3e051 Mon Sep 17 00:00:00 2001 From: Dominic Hopton Date: Sun, 18 Feb 2018 11:56:15 -0800 Subject: [PATCH 0555/2943] Targets file information isnt clear about filename The targets file needs to match the ID in the nuspec file, or it can't be imported due to an odd error message. This updates the document to make that clear. --- docs/guides/Create-UWP-Packages.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guides/Create-UWP-Packages.md b/docs/guides/Create-UWP-Packages.md index 3a17ec643..c80cfb398 100644 --- a/docs/guides/Create-UWP-Packages.md +++ b/docs/guides/Create-UWP-Packages.md @@ -152,7 +152,7 @@ Within your component, the core logic of the ImageEnhancer type is in native cod ### Adding .targets -Next, C++ and JavaScript projects that might consume your NuGet package need a .targets file to identify the necessary assembly and winmd files. (C# and Visual Basic projects do this automatically.) Create this file by copying the text below into `ImageEnhancer.targets` and save it in the same folder as the `.nuspec` file: +Next, C++ and JavaScript projects that might consume your NuGet package need a .targets file to identify the necessary assembly and winmd files. (C# and Visual Basic projects do this automatically.) Create this file by copying the text below into `ImageEnhancer.targets` and save it in the same folder as the `.nuspec` file. _Note_: This `.targets` file needs to be the same name as the package ID (e.g. the `` element in the `.nupspec` file): ```xml @@ -254,4 +254,4 @@ To make your package available to other developers, follow the instructions on - [Package versioning](../reference/package-versioning.md) - [Supporting Multiple .NET Framework Versions](../create-packages/supporting-multiple-target-frameworks.md) - [Include MSBuild props and targets in a package](../create-packages/creating-a-package.md#including-msbuild-props-and-targets-in-a-package) -- [Creating Localized Packages](../create-packages/creating-localized-packages.md) \ No newline at end of file +- [Creating Localized Packages](../create-packages/creating-localized-packages.md) From 148cd5ab6a20346341204d0b7b4c430f95c61a10 Mon Sep 17 00:00:00 2001 From: Louis Matthijssen Date: Mon, 19 Feb 2018 18:58:09 +0100 Subject: [PATCH 0556/2943] Fix typo on the Package Manager UI page EntityFramework 6.2.0 is mentioned twice, while it should be 6.2.0 and 6.1.0 according to the screenshot. --- docs/tools/Package-Manager-UI.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tools/Package-Manager-UI.md b/docs/tools/Package-Manager-UI.md index fc0819633..36e84f262 100644 --- a/docs/tools/Package-Manager-UI.md +++ b/docs/tools/Package-Manager-UI.md @@ -97,7 +97,7 @@ Developers typically consider it bad practice to use different versions of the s ![Package Manager UI Consolidate tab](media/ConsolidateTab.png) -In this example, the ClassLibrary1 project is using EntityFramework 6.2.0, whereas ConsoleApp1 is using EntityFramework 6.2.0. To consolidate package versions, do the following: +In this example, the ClassLibrary1 project is using EntityFramework 6.2.0, whereas ConsoleApp1 is using EntityFramework 6.1.0. To consolidate package versions, do the following: - Select the projects to update in the project list. - Select the version to use in all those projects in the **Version** control, such as EntityFramework 6.2.0. From 37190a52e4a0c93fc871676777cddfc5551a445a Mon Sep 17 00:00:00 2001 From: Caro Caserio Date: Mon, 19 Feb 2018 17:37:11 -0300 Subject: [PATCH 0557/2943] M19262: Repeated word and word missing Hello, @kraigb, Translator has reported possible source content issue. Is there a word missing after static? Should it rather read 'static library'? Please, help to check my proposed file change into the article and help to merge if you agree with fix. If not, please, let me know either if you would like me to fix it in another way within this PR, if you prefer to fix it in another PR, or if I should close this PR as by-design. In case of using another PR, please, let me know of your PR number, so we can confirm and close this PR. Many thanks in advance. --- docs/reference/target-frameworks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/target-frameworks.md b/docs/reference/target-frameworks.md index 3f7ff8949..72e087b52 100644 --- a/docs/reference/target-frameworks.md +++ b/docs/reference/target-frameworks.md @@ -125,7 +125,7 @@ The `dotnet` series of monikers should be used in NuGet 3.3 and earlier; the `ne ## Portable Class Libraries > [!Warning] -> **PCLs are not recommended**. Although PCLs are supported, package authors should support netstandard instead. The .NET Platform Standard is an evolution of PCLs and represents binary portability across platforms using a single moniker that isn't tied to a static like like *portable-a+b+c* monikers. +> **PCLs are not recommended**. Although PCLs are supported, package authors should support netstandard instead. The .NET Platform Standard is an evolution of PCLs and represents binary portability across platforms using a single moniker that isn't tied to a static library like *portable-a+b+c* monikers. To define a target framework that refers to multiple child-target-frameworks, the `portable` keyword use used to prefix the list of referenced frameworks. Avoid artificially including extra frameworks that are not directly compiled against because it can lead to unintended side-effects in those frameworks. From bf2ad90092f61bc9c13f515fdc07a04cc8a1aa81 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 20 Feb 2018 10:11:06 -0800 Subject: [PATCH 0558/2943] Typo --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 5b30bf3e5..c0c7ca1bc 100644 --- a/docs/index.md +++ b/docs/index.md @@ -82,7 +82,7 @@ ms.reviewer:
    -

    Quickstart: Creating a pckage

    +

    Quickstart: Creating a package

    Experience NuGet's tools and capabilities for package creation (walkthroughs are available for both the dotnet CLI and Visual Studio).

    From 412784976477da6de1a9906bb173ef50cf688bad Mon Sep 17 00:00:00 2001 From: rido Date: Wed, 21 Feb 2018 17:29:17 -0800 Subject: [PATCH 0559/2943] Signed Packages 1 --- docs/TOC.md | 1 + docs/create-packages/Sign-a-Package.md | 101 +++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 docs/create-packages/Sign-a-Package.md diff --git a/docs/TOC.md b/docs/TOC.md index b8c91388f..ba8243678 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -26,6 +26,7 @@ ## [Prerelease packages](create-packages/prerelease-packages.md) ## [Native packages](create-packages/native-packages.md) ## [Symbol packages](create-packages/symbol-packages.md) +## [Signed packages](create-packages/sign-a-package.md) ## [Publish a package](create-packages/publish-a-package.md) ## Guides ### [Create UWP packages](guides/create-uwp-packages.md) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md new file mode 100644 index 000000000..9f94332bc --- /dev/null +++ b/docs/create-packages/Sign-a-Package.md @@ -0,0 +1,101 @@ +--- +title: How to Create a Localized NuGet Package | Microsoft Docs +author: rido-min +ms.author: rido-min +manager: unniravindranathan +ms.date: 02/23/2018 +ms.topic: article +ms.prod: nuget +ms.technology: null +description: Explains how signed packages can be used to enable content integrity verification +keywords: NuGet package signing, NuGet security, creating signed packages +ms.reviewer: +- karann-msft +- anangaur +--- + +# Signed packages + +NuGet packages can include a digital signature which provides protection against tampered content. This signature is produced from an x509 certificate that also adds authenticity proofs to the actual origin of the package. + +> [!Warning] +> NuGet.org does not accept signed packages yet. This feature will be announced using the [announcements](https://github.com/NuGet/Announcements) github repository. + +## Types of signed packages + +NuGet supports two types of signatures: + +- **Author Signatures** are created by the package author before the package is being submitted to any repository. These signatures provide validation end to end, from authors to consumers independent from which repository the package has been obtained. +- **Repository Signatures** provide an integrity guarantee for all packages in a repository whether they are author signed or not, even if those packages are obtained from a different location than the original repository where they were signed. + +Considering author and repository signatures there are four possible package signing configurations; no other configurations of these signature types are allowed: + +|Package Type|Notes | +|------------|---------| +|Unsigned|The package does not include any signature.| +|Author|The primary signature is an author signature.| +|Repo|The primary signature is a repository signature.| +|Author and Repo|The primary signature is an author signature, and the signature is repository countersigned.| + +> [!Note] +> Package repositories can host packages of any of these four types, however once NuGet.org implements repository signatures, all packages in NuGet.org will fall in the last two types. + +The technical specification for NuGet package signatures can be found in https://github.com/NuGet/Home/wiki/Package-Signatures-Technical-Details. + +### Benefits of author-signed packages + +Packages that have been signed with an author certificate provide the strongest end to end validation, since the author signatures guarnatees that the package has not been modified since it leaves the author machine, until it is downloaded into the consumer machine, no matter fro which repository or transport method has been used. + +Consumers who demand a locked-down environment can require packages signed with an specific author certificate. + +Additionally, it provides an extra authentication mechanism to the publishing mechanism to NuGet.org, since the certificate used to sign must be registered before, as described in the [Registering Certificates](https://github.com/NuGet/Home/wiki/Register-package-signing-certificates) specification. + +### Benefits of repository-signed packages + +Package repositories who implement repository signatures will provide a signed version of all packages, no matter if the package is author-signed or not. This capability allows to verify the complete dependency graph even for cases where a signed package has a dependency on an unsigned package. + +Packages with the repository signature offer content integrity and proof of origin, even when the package is found in a different mirror/repository. + +# How to Author-Sign a package + +NuGet package authors who want to sign a package must obtain a X.509 code signing certificate. It’s strongly recommended to obtain the certificate from a public certification authority. The author can also use a certificate from a private certification authority but these signatures will generate a warning if the certificate is not trusted in the machine where the validation will occur. + +## Certificate Requirements + +Authors require a code signing certificate, these are a special type of certificate that are valid for the `id-kp-codeSigning` purpose [[RFC 5280 section 4.2.1.12](https://tools.ietf.org/html/rfc5280#section-4.2.1.12)], and have a RSA public key length of 2048 bits or higher. + +These certificates can be obtaied from a public CA like Symmantec.com, DigiCert.com, GlobalSign.com or Certum.pl +> [!Tip] +> Certum has special offers for [open source projects](https://www.certum.eu/certum/cert,offer_en_open_source_cs.xml). + +## Signing with NuGet.exe + +NuGet packages can be signed with `NuGet.exe` version 4.6 or higher using the `sign` command. Typically this command will require the next input parameters: +- **Certificate** to sign with. It can be specified from a PFX file, or from a certificate already installed in the certificate store. +- **Package** to be signed. It's the nupkg file produced with the `pack` command. If it's already signed it will produce an error unless the `-overwrite` option is used. +- **Timestamp** server. Optionally you can specify the URL of a timestamp server who implements [RFC 3161](https://tools.ietf.org/html/rfc3161). + +``` +nuget sign MyPackage.nupkg -CertificateSubjectName -Timestamper http://timestamp.digicert.com +``` + +> [!Note] +> In this example we are using the digicert.com free timestamp service, but you can use any other service that satisfies the timestamp requirements defined [here](https://github.com/NuGet/Home/wiki/Package-Signatures-Technical-Details). + + +More details on how to use the `sign` command can be found in the [command line reference documentation](#). + +> [!Note] +> Signed packages can be verified with the `verify -signatures` command. + +# How to Repository-Sign a package + +Repositories interested to add repository signatures to their packages should implement the requirements specified in the [Repository Signatures](https://github.com/NuGet/Home/wiki/Repository-Signatures) specification. The signing can be done using the NuGet api. + +# How to consume signed packages + +Visual Studio 2017 update 15.6 and beyond verifies signed packages with author or repository signatures, and will block the package installation/restore operation if the signature can not be validated. + +The complete list of errors and warnings caused by signed related issues can be found in the [NuGet errors and warning reference](https://docs.microsoft.com/en-us/nuget/reference/errors-and-warnings). + + From 53af9b6304b60f63c5bf2ad15fcc8cbc59c7e86e Mon Sep 17 00:00:00 2001 From: rido Date: Thu, 22 Feb 2018 11:40:21 -0800 Subject: [PATCH 0560/2943] kraig feedback --- docs/create-packages/Sign-a-Package.md | 45 +++++++++++++------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 9f94332bc..f9d94010f 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -1,5 +1,5 @@ --- -title: How to Create a Localized NuGet Package | Microsoft Docs +title: How to Create a Signed NuGet Package | Microsoft Docs author: rido-min ms.author: rido-min manager: unniravindranathan @@ -18,6 +18,9 @@ ms.reviewer: NuGet packages can include a digital signature which provides protection against tampered content. This signature is produced from an x509 certificate that also adds authenticity proofs to the actual origin of the package. +This feature has been introduced in nuget.exe 4.6, while signature verification requires Visual Studio 2017 Update 15.6 + + > [!Warning] > NuGet.org does not accept signed packages yet. This feature will be announced using the [announcements](https://github.com/NuGet/Announcements) github repository. @@ -25,10 +28,10 @@ NuGet packages can include a digital signature which provides protection against NuGet supports two types of signatures: -- **Author Signatures** are created by the package author before the package is being submitted to any repository. These signatures provide validation end to end, from authors to consumers independent from which repository the package has been obtained. +- **Author Signatures** are created by the package author before the package is submitted to any repository. These signatures provide validation end to end, from authors to consumers independent from of the repository from which the package has been obtained. - **Repository Signatures** provide an integrity guarantee for all packages in a repository whether they are author signed or not, even if those packages are obtained from a different location than the original repository where they were signed. -Considering author and repository signatures there are four possible package signing configurations; no other configurations of these signature types are allowed: +There are four allowed package signing configurations: |Package Type|Notes | |------------|---------| @@ -38,39 +41,39 @@ Considering author and repository signatures there are four possible package sig |Author and Repo|The primary signature is an author signature, and the signature is repository countersigned.| > [!Note] -> Package repositories can host packages of any of these four types, however once NuGet.org implements repository signatures, all packages in NuGet.org will fall in the last two types. +> In general, package repositories can host packages of any of these four types. Once nuget.org implements repository signatures, however, it will support only *Repo* and *Author and Repo* types. -The technical specification for NuGet package signatures can be found in https://github.com/NuGet/Home/wiki/Package-Signatures-Technical-Details. +The technical specification for NuGet package signatures can be found in [Package Signatures Technical Details](https://github.com/NuGet/Home/wiki/Package-Signatures-Technical-Details). ### Benefits of author-signed packages -Packages that have been signed with an author certificate provide the strongest end to end validation, since the author signatures guarnatees that the package has not been modified since it leaves the author machine, until it is downloaded into the consumer machine, no matter fro which repository or transport method has been used. +Packages that have been signed with an author certificate provide the strongest end to end validation. An author signature guarantees that the package has not been modified since it left the author computer, no matter from which repository or transport method has been used Consumers who demand a locked-down environment can require packages signed with an specific author certificate. -Additionally, it provides an extra authentication mechanism to the publishing mechanism to NuGet.org, since the certificate used to sign must be registered before, as described in the [Registering Certificates](https://github.com/NuGet/Home/wiki/Register-package-signing-certificates) specification. +Additionally, author-signed packages provide an extra authentication mechanism to the publishing mechanism to nuget.org, because the certificate used to sign must be registered ahead of time, as described in the [Registering Certificates](https://github.com/NuGet/Home/wiki/Register-package-signing-certificates) specification. ### Benefits of repository-signed packages -Package repositories who implement repository signatures will provide a signed version of all packages, no matter if the package is author-signed or not. This capability allows to verify the complete dependency graph even for cases where a signed package has a dependency on an unsigned package. +Package repositories that implement repository signatures will provide a signed version of all packages, no matter if the package is author-signed or not. This capability allows NuGet clients to verify the complete dependency graph even for cases where a signed package has a dependency on an unsigned package. Packages with the repository signature offer content integrity and proof of origin, even when the package is found in a different mirror/repository. -# How to Author-Sign a package +# How to author-sign a package -NuGet package authors who want to sign a package must obtain a X.509 code signing certificate. It’s strongly recommended to obtain the certificate from a public certification authority. The author can also use a certificate from a private certification authority but these signatures will generate a warning if the certificate is not trusted in the machine where the validation will occur. +NuGet package authors who want to sign a package must obtain a X.509 code signing certificate. It’s strongly recommended to obtain the certificate from a public certification authority. The author can also use a certificate from a private certification authority but these signatures will generate a warning if the certificate is not trusted in the computer where the validation will occur. -## Certificate Requirements +## Certificate requirements -Authors require a code signing certificate, these are a special type of certificate that are valid for the `id-kp-codeSigning` purpose [[RFC 5280 section 4.2.1.12](https://tools.ietf.org/html/rfc5280#section-4.2.1.12)], and have a RSA public key length of 2048 bits or higher. +Authors require a code signing certificate, which are a special type of certificate that are valid for the `id-kp-codeSigning` purpose [[RFC 5280 section 4.2.1.12](https://tools.ietf.org/html/rfc5280#section-4.2.1.12)], and have a RSA public key length of 2048 bits or higher. -These certificates can be obtaied from a public CA like Symmantec.com, DigiCert.com, GlobalSign.com or Certum.pl +These certificates can be obtained from a public certificate authorities like Symmantec.com, DigiCert.com, GlobalSign.com or Certum.pl > [!Tip] > Certum has special offers for [open source projects](https://www.certum.eu/certum/cert,offer_en_open_source_cs.xml). -## Signing with NuGet.exe +## Signing with nuget.exe -NuGet packages can be signed with `NuGet.exe` version 4.6 or higher using the `sign` command. Typically this command will require the next input parameters: +NuGet packages can be signed with `nuget.exe` version 4.6 or higher using the `sign` command. Typically this command will require the following input parameters: - **Certificate** to sign with. It can be specified from a PFX file, or from a certificate already installed in the certificate store. - **Package** to be signed. It's the nupkg file produced with the `pack` command. If it's already signed it will produce an error unless the `-overwrite` option is used. - **Timestamp** server. Optionally you can specify the URL of a timestamp server who implements [RFC 3161](https://tools.ietf.org/html/rfc3161). @@ -79,22 +82,20 @@ NuGet packages can be signed with `NuGet.exe` version 4.6 or higher using the `s nuget sign MyPackage.nupkg -CertificateSubjectName -Timestamper http://timestamp.digicert.com ``` -> [!Note] -> In this example we are using the digicert.com free timestamp service, but you can use any other service that satisfies the timestamp requirements defined [here](https://github.com/NuGet/Home/wiki/Package-Signatures-Technical-Details). - +In this example we are using the digicert.com free timestamp service, but you can use any other service that satisfies the timestamp requirements defined [here](https://github.com/NuGet/Home/wiki/Package-Signatures-Technical-Details). -More details on how to use the `sign` command can be found in the [command line reference documentation](#). +For more information see nuget sign > [!Note] > Signed packages can be verified with the `verify -signatures` command. -# How to Repository-Sign a package +# How to repository-sign a package -Repositories interested to add repository signatures to their packages should implement the requirements specified in the [Repository Signatures](https://github.com/NuGet/Home/wiki/Repository-Signatures) specification. The signing can be done using the NuGet api. +Repositories that want to add repository signatures to their packages should implement the requirements specified in the [Repository Signatures](https://github.com/NuGet/Home/wiki/Repository-Signatures) specification. The signing can be done using the NuGet api. # How to consume signed packages -Visual Studio 2017 update 15.6 and beyond verifies signed packages with author or repository signatures, and will block the package installation/restore operation if the signature can not be validated. +Visual Studio 2017 update 15.6 and later verifies signed packages with author or repository signatures, and will block the package installation/restore operation if the signature cannot be validated. The complete list of errors and warnings caused by signed related issues can be found in the [NuGet errors and warning reference](https://docs.microsoft.com/en-us/nuget/reference/errors-and-warnings). From 11beb9c5cbb93d09ed775e9b604aa9200eb5ad1f Mon Sep 17 00:00:00 2001 From: Daniel Jacobson Date: Fri, 23 Feb 2018 09:16:18 -0800 Subject: [PATCH 0561/2943] Update NuGet-FAQ.md Adding a pointer to documentation for ID Prefix reservation. --- docs/policies/NuGet-FAQ.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/policies/NuGet-FAQ.md b/docs/policies/NuGet-FAQ.md index 0ae77f721..cfa071fb4 100644 --- a/docs/policies/NuGet-FAQ.md +++ b/docs/policies/NuGet-FAQ.md @@ -172,7 +172,7 @@ In addition, uploading packages to [staging.nuget.org](http://staging.nuget.org) **Is it possible to reserve names for packages that will be published in future?** -Yes. You can reserve IDs for packages on [nuget.org](https://www.nuget.org/) by requesting a package ID prefix for your account. In order to request a package ID prefix, send mail to account (at) nuget.org with the package owner display name, and the requested package ID prefix. +Yes. You can reserve IDs for packages on [nuget.org](https://www.nuget.org/) by requesting a package ID prefix for your account. In order to request a package ID prefix, follow the instructions in the [documentation](https://docs.microsoft.com/nuget/reference/id-prefix-reservation). **How do I claim ownership for packages ?** From e07e21d6e4043cdbde8f4b2de0de87f60e902367 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 26 Feb 2018 16:48:30 -0800 Subject: [PATCH 0562/2943] Edit out jargon term --- docs/archive/project-json-and-uwp.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/archive/project-json-and-uwp.md b/docs/archive/project-json-and-uwp.md index 9fc6e118d..03e69fd77 100644 --- a/docs/archive/project-json-and-uwp.md +++ b/docs/archive/project-json-and-uwp.md @@ -117,8 +117,7 @@ In this example the assemblies in the `ref` directories would all be identical. The runtimes folder contains assemblies and native libraries required to run on specific "runtimes", which are generally defined by Operating System and CPU architecture. These runtimes are identified using [Runtime Identifiers (RIDs)](/dotnet/core/rid-catalog) such as `win`, `win-x86`, `win7-x86`, `win8-64`, etc. -## Native light-up - +## Native helpers to use platform-specific APIs The following example shows a package that has a purely managed implementation for several platforms, but uses native helpers on Windows 8 where it can call into Windows 8-specific native APIs. From ec0691030269a02d8acfafe15c29c1357d611284 Mon Sep 17 00:00:00 2001 From: ridomin Date: Mon, 26 Feb 2018 21:10:13 -0800 Subject: [PATCH 0563/2943] apply PM feedback to signing docs --- docs/TOC.md | 5 +- docs/create-packages/Overview-and-Workflow.md | 1 + docs/create-packages/Sign-a-Package.md | 95 ++++++------------- docs/reference/Signed-Packages-Reference.md | 54 +++++++++++ docs/tools/cli-ref-sign.md | 30 ++++++ docs/tools/cli-ref-verify.md | 29 ++++++ 6 files changed, 149 insertions(+), 65 deletions(-) create mode 100644 docs/reference/Signed-Packages-Reference.md create mode 100644 docs/tools/cli-ref-sign.md create mode 100644 docs/tools/cli-ref-verify.md diff --git a/docs/TOC.md b/docs/TOC.md index ba8243678..59412c1ee 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -26,7 +26,7 @@ ## [Prerelease packages](create-packages/prerelease-packages.md) ## [Native packages](create-packages/native-packages.md) ## [Symbol packages](create-packages/symbol-packages.md) -## [Signed packages](create-packages/sign-a-package.md) +## [Signing packages](create-packages/sign-a-package.md) ## [Publish a package](create-packages/publish-a-package.md) ## Guides ### [Create UWP packages](guides/create-uwp-packages.md) @@ -52,9 +52,11 @@ ### [push](tools/cli-ref-push.md) ### [restore](tools/cli-ref-restore.md) ### [setapikey](tools/cli-ref-setapikey.md) +### [sign](tools/cli-ref-sign.md) ### [sources](tools/cli-ref-sources.md) ### [spec](tools/cli-ref-spec.md) ### [update](tools/cli-ref-update.md) +### [verify](tools/cli-ref-verify.md) ### [Environment variables](tools/cli-ref-environment-variables.md) ## [Package Manager UI](tools/package-manager-ui.md) ## [Package Manager Console](tools/package-manager-console.md) @@ -80,6 +82,7 @@ ## [Errors and warnings](reference/errors-and-warnings.md) ## [ID prefix reservation](reference/id-prefix-reservation.md) ## [NuGet client SDK](reference/nuget-client-sdk.md) +## [Signed packages reference](reference/signed-packages-reference.md) ## Extensibility ### [NuGet credential providers for Visual Studio](reference/extensibility/nuget-credential-providers-for-visual-studio.md) ### [nuget.exe credential providers](reference/extensibility/nuget-exe-credential-providers.md) diff --git a/docs/create-packages/Overview-and-Workflow.md b/docs/create-packages/Overview-and-Workflow.md index eea552023..196addea6 100644 --- a/docs/create-packages/Overview-and-Workflow.md +++ b/docs/create-packages/Overview-and-Workflow.md @@ -41,6 +41,7 @@ From there, you can consider a number of other options for your package: - [Symbol Packages](../create-packages/symbol-packages.md) offers guidance for supplying symbols for your library that allow consumers to step into your code while debugging. - [Package versioning](../reference/package-versioning.md) discusses how to identify the exact versions that you allow for your dependencies (other packages that you consume from your package). - [Native Packages](../create-packages/native-packages.md) describes the process for creating a package for C++ consumers. +- [Singing Packages](sign-a-package) describes the process for adding a digital signature to a package. When you're then ready to publish a package to nuget.org, follow the simple process in [Publish a package](../create-packages/publish-a-package.md). diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index f9d94010f..178dba2e0 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -1,9 +1,9 @@ --- -title: How to Create a Signed NuGet Package | Microsoft Docs +title: How to Sign a NuGet Package | Microsoft Docs author: rido-min ms.author: rido-min manager: unniravindranathan -ms.date: 02/23/2018 +ms.date: 02/26/2018 ms.topic: article ms.prod: nuget ms.technology: null @@ -14,89 +14,56 @@ ms.reviewer: - anangaur --- -# Signed packages +# How to create a signed NuGet Package -NuGet packages can include a digital signature which provides protection against tampered content. This signature is produced from an x509 certificate that also adds authenticity proofs to the actual origin of the package. +Signing a package is a simple process that will ensure the package has not been modified since creation to consumption. -This feature has been introduced in nuget.exe 4.6, while signature verification requires Visual Studio 2017 Update 15.6 +## Pre-requisites +1. The .nupkg to sign. See [Creating a package](creating-a-package.md). +2. NuGet.exe CLI tools. See how to [Install NuGet CLI](../install-nuget-client-tools.md#nugetexe-cli). *Singing is available from version 4.6 or later*. +3. Get a code signing certificate. These are certificates issued for that purpose. For packages published to NuGet.org the certificate must be issued by a trusted certificate authority [http://aka.ms/trustcertpartners](http://aka.ms/trustcertpartners). For private package consumption you can use any other certificate as long it is trusted in the consumer machine. -> [!Warning] -> NuGet.org does not accept signed packages yet. This feature will be announced using the [announcements](https://github.com/NuGet/Announcements) github repository. - -## Types of signed packages - -NuGet supports two types of signatures: - -- **Author Signatures** are created by the package author before the package is submitted to any repository. These signatures provide validation end to end, from authors to consumers independent from of the repository from which the package has been obtained. -- **Repository Signatures** provide an integrity guarantee for all packages in a repository whether they are author signed or not, even if those packages are obtained from a different location than the original repository where they were signed. - -There are four allowed package signing configurations: - -|Package Type|Notes | -|------------|---------| -|Unsigned|The package does not include any signature.| -|Author|The primary signature is an author signature.| -|Repo|The primary signature is a repository signature.| -|Author and Repo|The primary signature is an author signature, and the signature is repository countersigned.| - -> [!Note] -> In general, package repositories can host packages of any of these four types. Once nuget.org implements repository signatures, however, it will support only *Repo* and *Author and Repo* types. - -The technical specification for NuGet package signatures can be found in [Package Signatures Technical Details](https://github.com/NuGet/Home/wiki/Package-Signatures-Technical-Details). - -### Benefits of author-signed packages - -Packages that have been signed with an author certificate provide the strongest end to end validation. An author signature guarantees that the package has not been modified since it left the author computer, no matter from which repository or transport method has been used -Consumers who demand a locked-down environment can require packages signed with an specific author certificate. +> [!Warning] +> NuGet.org does not accept signed packages yet. You can use signed packages for packages distributed in private feeds. -Additionally, author-signed packages provide an extra authentication mechanism to the publishing mechanism to nuget.org, because the certificate used to sign must be registered ahead of time, as described in the [Registering Certificates](https://github.com/NuGet/Home/wiki/Register-package-signing-certificates) specification. -### Benefits of repository-signed packages +## How to sign a package -Package repositories that implement repository signatures will provide a signed version of all packages, no matter if the package is author-signed or not. This capability allows NuGet clients to verify the complete dependency graph even for cases where a signed package has a dependency on an unsigned package. +Using `nuget.exe` you can use the [sign command](../tools/cli-ref-sign) to sign a package: -Packages with the repository signature offer content integrity and proof of origin, even when the package is found in a different mirror/repository. +``` +nuget sign -CertificateSubjectName -Timestamper +``` -# How to author-sign a package +As described in the command reference you can use a certificate available in the certificate store or use a certificate from a file. -NuGet package authors who want to sign a package must obtain a X.509 code signing certificate. It’s strongly recommended to obtain the certificate from a public certification authority. The author can also use a certificate from a private certification authority but these signatures will generate a warning if the certificate is not trusted in the computer where the validation will occur. +### Common problems signing a package -## Certificate requirements +There are some cases where the sign operation can fail, here are the most common cases: +- The certificate is not valid for code signing. You must ensure the certificate specified has the appropiate extended key usage (EKU=1.3.6.1.5.5.7.3.3). +- The certificate does not satisfy the basic requirements such as the 2048 minimum key length, or the SHA256 hash signature. +- The certificate has expired or has been revoked. +- The timestamp server does not satisfy the certificate requirements. -Authors require a code signing certificate, which are a special type of certificate that are valid for the `id-kp-codeSigning` purpose [[RFC 5280 section 4.2.1.12](https://tools.ietf.org/html/rfc5280#section-4.2.1.12)], and have a RSA public key length of 2048 bits or higher. +> [!Note] +> Signed packages should include a timestamp to make sure the signature will remain valid when the signed certificate has expired. The sign operation will produce a warning when signing without a timestamp. -These certificates can be obtained from a public certificate authorities like Symmantec.com, DigiCert.com, GlobalSign.com or Certum.pl -> [!Tip] -> Certum has special offers for [open source projects](https://www.certum.eu/certum/cert,offer_en_open_source_cs.xml). -## Signing with nuget.exe +## How to verify a signed package -NuGet packages can be signed with `nuget.exe` version 4.6 or higher using the `sign` command. Typically this command will require the following input parameters: -- **Certificate** to sign with. It can be specified from a PFX file, or from a certificate already installed in the certificate store. -- **Package** to be signed. It's the nupkg file produced with the `pack` command. If it's already signed it will produce an error unless the `-overwrite` option is used. -- **Timestamp** server. Optionally you can specify the URL of a timestamp server who implements [RFC 3161](https://tools.ietf.org/html/rfc3161). +You can use the `nuget.exe` [verify command](../tools/cli-ref-verify) to see the signature details of a given package. ``` -nuget sign MyPackage.nupkg -CertificateSubjectName -Timestamper http://timestamp.digicert.com +nuget verify -signature ``` -In this example we are using the digicert.com free timestamp service, but you can use any other service that satisfies the timestamp requirements defined [here](https://github.com/NuGet/Home/wiki/Package-Signatures-Technical-Details). - -For more information see nuget sign - -> [!Note] -> Signed packages can be verified with the `verify -signatures` command. - -# How to repository-sign a package - -Repositories that want to add repository signatures to their packages should implement the requirements specified in the [Repository Signatures](https://github.com/NuGet/Home/wiki/Repository-Signatures) specification. The signing can be done using the NuGet api. - -# How to consume signed packages +## How to install a signed package -Visual Studio 2017 update 15.6 and later verifies signed packages with author or repository signatures, and will block the package installation/restore operation if the signature cannot be validated. +Signed packages don't require any specific action to be installed, however if the content has been modified since it was signed, the installation will be blocked and will produce an error message. -The complete list of errors and warnings caused by signed related issues can be found in the [NuGet errors and warning reference](https://docs.microsoft.com/en-us/nuget/reference/errors-and-warnings). +> [!Warning] +> Packages signed with untrusted certificates will be considered as unsigned, and will be installed without any warning or issue as any other unsigned package. diff --git a/docs/reference/Signed-Packages-Reference.md b/docs/reference/Signed-Packages-Reference.md new file mode 100644 index 000000000..e24ad80fa --- /dev/null +++ b/docs/reference/Signed-Packages-Reference.md @@ -0,0 +1,54 @@ +--- +title: Signed Packages Reference | Microsoft Docs +author: rido-min +ms.author: rido-min +manager: unniravindranathan +ms.date: 02/26/2018 +ms.topic: reference +ms.prod: nuget +ms.technology: null +description: Signed Packages feature description. +keywords: NuGet package sign, signature, certificate +ms.reviewer: +- ananguar +- karann-msft +- unniravindranathan +--- + +# Signed Packages + +NuGet packages can include a digital signature which provides protection against tampered content. This signature is produced from an x509 certificate that also adds authenticity proofs to the actual origin of the package. + +This feature has been introduced in nuget.exe 4.6, while signature verification requires Visual Studio 2017 Update 15.6. + +## Benefits of signed packages + +Packages that have been signed with a certificate provide the strongest end to end validation. An author signature guarantees that the package has not been modified since it left the author computer, no matter from which repository or transport method has been used . + +Consumers who demand a locked-down environment can require packages signed with an specific author certificate. + +Additionally, author-signed packages provide an extra authentication mechanism to the publishing mechanism to nuget.org, because the certificate used to sign must be registered ahead of time. + +## How to sign a package + +[Singing Packages](../create-packages/Sign-a-package) explains how to sign a package using the [sign command](../tools/cli-ref-sign). + +## Certificate Requirements + +Authors require a code signing certificate, which are a special type of certificate that are valid for the `id-kp-codeSigning` purpose [[RFC 5280 section 4.2.1.12]](https://tools.ietf.org/html/rfc5280#section-4.2.1.12), and have an RSA public key length of 2048 bits or higher. +These certificates can be obtained from a public certificate authorities like: + +- [Symmantec](https://trustcenter.websecurity.symantec.com/process/trust/productOptions?productType=SoftwareValidationClass3) +- [DigiCert](https://www.digicert.com/code-signing/) +- [Go Daddy](https://www.godaddy.com/web-security/code-signing-certificate) +- [Global Sign](https://www.globalsign.com/en/code-signing-certificate/) +- [Comodo](https://www.comodo.com/e-commerce/code-signing/code-signing-certificate.php) +- [Certum](https://www.certum.eu/certum/cert,offer_en_open_source_cs.xml) + +The complete list of certification authorities trusted by Windows can be obtained from [http://aka.ms/trustcertpartners](http://aka.ms/trustcertpartners). + +## Timestamp Requirements + +Signed packages should include a timestamp to ensure the validity period beyond the expiration date of the certificate. The certificate used to sign the timestamp must be valid for the `id-kp-timeStamping` purpose [[RFC 5280 section 4.2.1.12](https://tools.ietf.org/html/rfc5280#section-4.2.1.12)] and have an RSA public key length of 2048 bits or higher. + +Additional technical detail can be found in the [technical spec](https://github.com/NuGet/Home/wiki/Package-Signatures-Technical-Details) in GitHub. diff --git a/docs/tools/cli-ref-sign.md b/docs/tools/cli-ref-sign.md new file mode 100644 index 000000000..e8a2ed20d --- /dev/null +++ b/docs/tools/cli-ref-sign.md @@ -0,0 +1,30 @@ +--- +title: NuGet CLI sign command | Microsoft Docs +author: rido-min +ms.author: rido-min +manager: unniravindranathan +ms.date: 02/26/2018 +ms.topic: reference +ms.prod: nuget +ms.technology: null +description: Reference for the nuget.exe sign command +keywords: nuget sign reference, sign command +ms.reviewer: +- karann-msft +- unniravindranathan +--- + +# sign command (NuGet CLI) + +**Applies to:** package creation • **Supported versions:** 4.6+ + +Signs all the packages matching the first argument with a certificate. The certificate with the private key can be obtained from a file with a password or from an installed certificate in the cert store providing a subject name or a thumbprint. + +## Usage + +```cli +nuget sign -certificateSubjectName -timestamper +``` + +## Options + diff --git a/docs/tools/cli-ref-verify.md b/docs/tools/cli-ref-verify.md new file mode 100644 index 000000000..63762d483 --- /dev/null +++ b/docs/tools/cli-ref-verify.md @@ -0,0 +1,29 @@ +--- +title: NuGet CLI verify command | Microsoft Docs +author: rido-min +ms.author: rido-min +manager: unniravindranathan +ms.date: 02/26/2018 +ms.topic: reference +ms.prod: nuget +ms.technology: null +description: Reference for the nuget.exe verify command +keywords: nuget verify reference, verify command +ms.reviewer: +- karann-msft +- unniravindranathan +--- + +# verify command (NuGet CLI) + +**Applies to:** package creation • **Supported versions:** 4.6+ + +Verifies a package. + +## Usage + +```cli +nuget verify -signature +``` + +## Options \ No newline at end of file From f6ebe48674894763d9d0da09c11c4e4a6813ddbe Mon Sep 17 00:00:00 2001 From: ridomin Date: Mon, 26 Feb 2018 21:15:53 -0800 Subject: [PATCH 0564/2943] avoid long lines in command references --- docs/create-packages/Sign-a-Package.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 178dba2e0..4a7ad5cc2 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -33,8 +33,10 @@ Signing a package is a simple process that will ensure the package has not been Using `nuget.exe` you can use the [sign command](../tools/cli-ref-sign) to sign a package: -``` -nuget sign -CertificateSubjectName -Timestamper +```cli +nuget sign \ + -CertificateSubjectName \ + -Timestamper ``` As described in the command reference you can use a certificate available in the certificate store or use a certificate from a file. @@ -55,7 +57,7 @@ There are some cases where the sign operation can fail, here are the most common You can use the `nuget.exe` [verify command](../tools/cli-ref-verify) to see the signature details of a given package. -``` +```cli nuget verify -signature ``` From 524ae207630ccd94b94980bb85eec6071b2ef2da Mon Sep 17 00:00:00 2001 From: ridomin Date: Mon, 26 Feb 2018 21:21:03 -0800 Subject: [PATCH 0565/2943] add links to reference --- docs/create-packages/Sign-a-Package.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 4a7ad5cc2..5547da347 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -26,8 +26,7 @@ Signing a package is a simple process that will ensure the package has not been > [!Warning] -> NuGet.org does not accept signed packages yet. You can use signed packages for packages distributed in private feeds. - +> NuGet.org does not accept signed packages yet. You can sign packages for publishing in custom feeds. ## How to sign a package @@ -56,7 +55,7 @@ There are some cases where the sign operation can fail, here are the most common ## How to verify a signed package You can use the `nuget.exe` [verify command](../tools/cli-ref-verify) to see the signature details of a given package. - +s ```cli nuget verify -signature ``` @@ -68,4 +67,6 @@ Signed packages don't require any specific action to be installed, however if th > [!Warning] > Packages signed with untrusted certificates will be considered as unsigned, and will be installed without any warning or issue as any other unsigned package. +## More information +To learn more about package signing see the [Signed Packages Reference](../reference/Signed-Packages-Reference.md)s \ No newline at end of file From f7d9bc8020f8aefbff312bd08241cd6091451352 Mon Sep 17 00:00:00 2001 From: rido Date: Tue, 27 Feb 2018 08:19:04 -0800 Subject: [PATCH 0566/2943] fix extra s --- docs/create-packages/Sign-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 5547da347..914c599ec 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -69,4 +69,4 @@ Signed packages don't require any specific action to be installed, however if th ## More information -To learn more about package signing see the [Signed Packages Reference](../reference/Signed-Packages-Reference.md)s \ No newline at end of file +To learn more about package signing see the [Signed Packages Reference](../reference/Signed-Packages-Reference.md). \ No newline at end of file From 43179234b0544b5c68fc026ef2e45e79a33427b6 Mon Sep 17 00:00:00 2001 From: rido Date: Wed, 28 Feb 2018 18:57:56 -0800 Subject: [PATCH 0567/2943] review links, format sample commands --- docs/create-packages/Overview-and-Workflow.md | 2 +- docs/create-packages/Sign-a-Package.md | 8 +++---- ...-publish-a-package-using-the-dotnet-cli.md | 1 + docs/reference/Signed-Packages-Reference.md | 22 ++++++++++++++++++- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/docs/create-packages/Overview-and-Workflow.md b/docs/create-packages/Overview-and-Workflow.md index 196addea6..3f08a0663 100644 --- a/docs/create-packages/Overview-and-Workflow.md +++ b/docs/create-packages/Overview-and-Workflow.md @@ -41,7 +41,7 @@ From there, you can consider a number of other options for your package: - [Symbol Packages](../create-packages/symbol-packages.md) offers guidance for supplying symbols for your library that allow consumers to step into your code while debugging. - [Package versioning](../reference/package-versioning.md) discusses how to identify the exact versions that you allow for your dependencies (other packages that you consume from your package). - [Native Packages](../create-packages/native-packages.md) describes the process for creating a package for C++ consumers. -- [Singing Packages](sign-a-package) describes the process for adding a digital signature to a package. +- [Signing Packages](sign-a-package) describes the process for adding a digital signature to a package. When you're then ready to publish a package to nuget.org, follow the simple process in [Publish a package](../create-packages/publish-a-package.md). diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 914c599ec..9b8e7e0c3 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -22,7 +22,7 @@ Signing a package is a simple process that will ensure the package has not been 1. The .nupkg to sign. See [Creating a package](creating-a-package.md). 2. NuGet.exe CLI tools. See how to [Install NuGet CLI](../install-nuget-client-tools.md#nugetexe-cli). *Singing is available from version 4.6 or later*. -3. Get a code signing certificate. These are certificates issued for that purpose. For packages published to NuGet.org the certificate must be issued by a trusted certificate authority [http://aka.ms/trustcertpartners](http://aka.ms/trustcertpartners). For private package consumption you can use any other certificate as long it is trusted in the consumer machine. +3. [Get a code signing certificate](../reference/signed-packages-referece#get-codesigning-certificate). > [!Warning] @@ -33,8 +33,8 @@ Signing a package is a simple process that will ensure the package has not been Using `nuget.exe` you can use the [sign command](../tools/cli-ref-sign) to sign a package: ```cli -nuget sign \ - -CertificateSubjectName \ +nuget sign ^ + -CertificateSubjectName ^ -Timestamper ``` @@ -65,7 +65,7 @@ nuget verify -signature Signed packages don't require any specific action to be installed, however if the content has been modified since it was signed, the installation will be blocked and will produce an error message. > [!Warning] -> Packages signed with untrusted certificates will be considered as unsigned, and will be installed without any warning or issue as any other unsigned package. +> Packages signed with untrusted certificates will be considered as unsigned and will be installed without any warning or issue as any other unsigned package. ## More information 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 4a330096d..d55459210 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 @@ -102,3 +102,4 @@ Once you have a `.nupkg` file, you publish it to nuget.org using the `dotnet nug - [Support multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) - [Package versioning](../reference/package-versioning.md) - [Creating localized packages](../create-packages/creating-localized-packages.md) +- [Signing packages](../create-packages/Sign-a-package.md) diff --git a/docs/reference/Signed-Packages-Reference.md b/docs/reference/Signed-Packages-Reference.md index e24ad80fa..5dab2bd5a 100644 --- a/docs/reference/Signed-Packages-Reference.md +++ b/docs/reference/Signed-Packages-Reference.md @@ -36,6 +36,9 @@ Additionally, author-signed packages provide an extra authentication mechanism t ## Certificate Requirements Authors require a code signing certificate, which are a special type of certificate that are valid for the `id-kp-codeSigning` purpose [[RFC 5280 section 4.2.1.12]](https://tools.ietf.org/html/rfc5280#section-4.2.1.12), and have an RSA public key length of 2048 bits or higher. + +## Get a code signing certificate + These certificates can be obtained from a public certificate authorities like: - [Symmantec](https://trustcenter.websecurity.symantec.com/process/trust/productOptions?productType=SoftwareValidationClass3) @@ -47,8 +50,25 @@ These certificates can be obtained from a public certificate authorities like: The complete list of certification authorities trusted by Windows can be obtained from [http://aka.ms/trustcertpartners](http://aka.ms/trustcertpartners). +## Create a Test certficate + +You can use Self-Signed certificates for testing purposes. To create a self signed certificate you can use the powershell commmand [New-SelfSignedCertificate](https://docs.microsoft.com/en-us/powershell/module/pkiclient/new-selfsignedcertificate) + +```ps +New-SelfSignedCertificate -Subject "CN=NuGet Test Developer, OU=Use for testing purposes ONLY" ` + -FriendlyName "NuGetTestDeveloper" ` + -Type CodeSigning ` + -KeyUsage DigitalSignature ` + -KeyLength 2048 ` + -KeyAlgorithm RSA ` + -HashAlgorithm SHA256 ` + -CertStoreLocation "Cert:\CurrentUser\My" +``` +This command creates a testing certificate available in the personal certificate store. You can open the certificate store by running `certmgr.msc` to see the new created certificate. + + ## Timestamp Requirements Signed packages should include a timestamp to ensure the validity period beyond the expiration date of the certificate. The certificate used to sign the timestamp must be valid for the `id-kp-timeStamping` purpose [[RFC 5280 section 4.2.1.12](https://tools.ietf.org/html/rfc5280#section-4.2.1.12)] and have an RSA public key length of 2048 bits or higher. -Additional technical detail can be found in the [technical spec](https://github.com/NuGet/Home/wiki/Package-Signatures-Technical-Details) in GitHub. +Additional technical details can be found in the [technical spec](https://github.com/NuGet/Home/wiki/Package-Signatures-Technical-Details) in GitHub. From 160936b75b277612f25ea621b26d13fc0905a74d Mon Sep 17 00:00:00 2001 From: Eser Ozvataf Date: Thu, 1 Mar 2018 20:54:31 +0300 Subject: [PATCH 0568/2943] Fixed version range table on Package Versioning --- docs/reference/Package-Versioning.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/reference/Package-Versioning.md b/docs/reference/Package-Versioning.md index ce9f0decb..7e3caadb2 100644 --- a/docs/reference/Package-Versioning.md +++ b/docs/reference/Package-Versioning.md @@ -105,8 +105,8 @@ When referring to package dependencies, NuGet supports using interval notation f | Notation | Applied rule | Description | |----------|--------------|-------------| -| 1.0 | 1.0 ≤ x | Minimum version, inclusive | -| (1.0,) | 1.0 < x | Minimum version, exclusive | +| 1.0 | 1.0 ≥ x | Minimum version, inclusive | +| (1.0,) | 1.0 > x | Minimum version, exclusive | | [1.0] | x == 1.0 | Exact version match | | (,1.0] | x ≤ 1.0 | Maximum version, inclusive | | (,1.0) | x < 1.0 | Maximum version, exclusive | From 7d957b369205a1902676d3951b65b251fc9ba27b Mon Sep 17 00:00:00 2001 From: rido Date: Fri, 2 Mar 2018 10:55:52 -0800 Subject: [PATCH 0569/2943] add provider param to new-selfsignedcert sample --- docs/reference/Signed-Packages-Reference.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/reference/Signed-Packages-Reference.md b/docs/reference/Signed-Packages-Reference.md index 5dab2bd5a..c8c896219 100644 --- a/docs/reference/Signed-Packages-Reference.md +++ b/docs/reference/Signed-Packages-Reference.md @@ -62,6 +62,7 @@ New-SelfSignedCertificate -Subject "CN=NuGet Test Developer, OU=Use for testing -KeyLength 2048 ` -KeyAlgorithm RSA ` -HashAlgorithm SHA256 ` + -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" ` -CertStoreLocation "Cert:\CurrentUser\My" ``` This command creates a testing certificate available in the personal certificate store. You can open the certificate store by running `certmgr.msc` to see the new created certificate. From 3323847d4afd5031261a00394a3c176491921ec2 Mon Sep 17 00:00:00 2001 From: Damon Tivel Date: Fri, 2 Mar 2018 14:19:39 -0800 Subject: [PATCH 0570/2943] Add sign and verify command documentation --- docs/create-packages/Sign-a-Package.md | 16 ++--- .../Create-NET-Standard-Packages-VS2015.md | 2 +- docs/guides/Create-UWP-Controls.md | 2 +- docs/guides/Create-UWP-Packages.md | 2 +- docs/guides/create-packages-for-xamarin.md | 4 +- ...-publish-a-package-using-the-dotnet-cli.md | 2 +- ...d-publish-a-package-using-visual-studio.md | 2 +- ...tall-and-use-a-package-in-visual-studio.md | 2 +- ...-and-use-a-package-using-the-dotnet-cli.md | 2 +- docs/reference/Errors-and-Warnings.md | 64 +++++++++++++++++++ docs/reference/Signed-Packages-Reference.md | 29 +++++---- docs/tools/cli-ref-sign.md | 49 +++++++++++--- docs/tools/cli-ref-verify.md | 42 +++++++++--- 13 files changed, 170 insertions(+), 48 deletions(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 9b8e7e0c3..76c39363f 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -18,10 +18,10 @@ ms.reviewer: Signing a package is a simple process that will ensure the package has not been modified since creation to consumption. -## Pre-requisites +## Prerequisites 1. The .nupkg to sign. See [Creating a package](creating-a-package.md). -2. NuGet.exe CLI tools. See how to [Install NuGet CLI](../install-nuget-client-tools.md#nugetexe-cli). *Singing is available from version 4.6 or later*. +2. NuGet.exe CLI tools. See how to [Install NuGet CLI](../install-nuget-client-tools.md#nugetexe-cli). *Signing is available from version 4.6 or later*. 3. [Get a code signing certificate](../reference/signed-packages-referece#get-codesigning-certificate). @@ -42,27 +42,27 @@ As described in the command reference you can use a certificate available in the ### Common problems signing a package -There are some cases where the sign operation can fail, here are the most common cases: -- The certificate is not valid for code signing. You must ensure the certificate specified has the appropiate extended key usage (EKU=1.3.6.1.5.5.7.3.3). -- The certificate does not satisfy the basic requirements such as the 2048 minimum key length, or the SHA256 hash signature. +There are some cases where the sign operation can fail. Here are the most common cases: +- The certificate is not valid for code signing. You must ensure the certificate specified has the appropiate extended key usage (EKU 1.3.6.1.5.5.7.3.3). +- The certificate does not satisfy the basic requirements such as the RSA SHA-256 signature algorithm or a public key 2048 bits or greater. - The certificate has expired or has been revoked. - The timestamp server does not satisfy the certificate requirements. > [!Note] -> Signed packages should include a timestamp to make sure the signature will remain valid when the signed certificate has expired. The sign operation will produce a warning when signing without a timestamp. +> Signed packages should include a timestamp to make sure the signature will remain valid when the signing certificate has expired. The sign operation will produce a warning when signing without a timestamp. ## How to verify a signed package You can use the `nuget.exe` [verify command](../tools/cli-ref-verify) to see the signature details of a given package. -s + ```cli nuget verify -signature ``` ## How to install a signed package -Signed packages don't require any specific action to be installed, however if the content has been modified since it was signed, the installation will be blocked and will produce an error message. +Signed packages don't require any specific action to be installed; however, if the content has been modified since it was signed, the installation will be blocked and will produce an error message. > [!Warning] > Packages signed with untrusted certificates will be considered as unsigned and will be installed without any warning or issue as any other unsigned package. diff --git a/docs/guides/Create-NET-Standard-Packages-VS2015.md b/docs/guides/Create-NET-Standard-Packages-VS2015.md index 9dbf836a8..f5c3847e4 100644 --- a/docs/guides/Create-NET-Standard-Packages-VS2015.md +++ b/docs/guides/Create-NET-Standard-Packages-VS2015.md @@ -22,7 +22,7 @@ The [.NET Standard Library](/dotnet/articles/standard/library) is a formal speci This guide walks you through creating a NuGet package targeting .NET Standard Library 1.4. Such a library works across .NET Framework 4.6.1, Universal Windows Platform 10, .NET Core, and Mono/Xamarin. For details, see the [.NET Standard mapping table](#net-standard-mapping-table) later in this topic. -## Pre-requisites +## Prerequisites 1. Visual Studio 2015 Update 3 1. [.NET Core SDK](https://www.microsoft.com/net/download/) diff --git a/docs/guides/Create-UWP-Controls.md b/docs/guides/Create-UWP-Controls.md index 235ccf04b..d39a9c99e 100644 --- a/docs/guides/Create-UWP-Controls.md +++ b/docs/guides/Create-UWP-Controls.md @@ -18,7 +18,7 @@ ms.reviewer: With Visual Studio 2017, you can take advantage of added capabilities for UWP controls that you deliver in NuGet packages. This guide walks you through these capabilities using the [ExtensionSDKasNuGetPackage sample](https://github.com/NuGet/Samples/tree/master/ExtensionSDKasNuGetPackage). -## Pre-requisites +## Prerequisites 1. Visual Studio 2017 1. Understanding of how to [Create UWP Packages](create-uwp-packages.md) diff --git a/docs/guides/Create-UWP-Packages.md b/docs/guides/Create-UWP-Packages.md index c80cfb398..fdcb2827a 100644 --- a/docs/guides/Create-UWP-Packages.md +++ b/docs/guides/Create-UWP-Packages.md @@ -20,7 +20,7 @@ The [Universal Windows Platform (UWP)](https://developer.microsoft.com/windows) In this walkthrough you create a NuGet package with a native UWP component (including a XAML control) that can be used in both Managed and Native projects. -## Pre-requisites +## Prerequisites 1. Visual Studio 2017 or Visual Studio 2015. Install the 2017 Community edition for free from [visualstudio.com](https://www.visualstudio.com/); you can use the Professional and Enterprise editions as well. diff --git a/docs/guides/create-packages-for-xamarin.md b/docs/guides/create-packages-for-xamarin.md index bb36fc2a1..7fde40400 100644 --- a/docs/guides/create-packages-for-xamarin.md +++ b/docs/guides/create-packages-for-xamarin.md @@ -20,14 +20,14 @@ A cross-platform package contains code that uses native APIs on iOS, Android, an In this walkthrough you create a cross-platform NuGet package that can be used in mobile projects on iOS, Android, and Windows. -1. [Pre-requisites](#pre-requisites) +1. [Prerequisites](#prerequisites) 1. [Create the project structure and abstraction code](#create-the-project-structure-and-abstraction-code) 1. [Write your platform-specific code](#write-your-platform-specific-code) 1. [Create and update the .nuspec file](#create-and-update-the-nuspec-file) 1. [Package the component](#package-the-component) 1. [Related topics](#related-topics) -## Pre-requisites +## Prerequisites 1. Visual Studio 2015 with Universal Windows Platform (UWP) and Xamarin. Install the Community edition for free from [visualstudio.com](https://www.visualstudio.com/); you can use the Professional and Enterprise editions as well, of course. To include UWP and Xamarin tools, select a Custom install and check the appropriate options. 1. NuGet CLI. Download the latest version of nuget.exe from [nuget.org/downloads](https://nuget.org/downloads), saving it to a location of your choice. Then add that location to your PATH environment variable if it isn't already. 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 d55459210..e9a540f80 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 @@ -18,7 +18,7 @@ ms.reviewer: It's a simple process to create a NuGet package from a .NET Class Library and publish it to nuget.org using the `dotnet` command-line interface (CLI). -## Pre-requisites +## Prerequisites 1. Install the [.NET Core SDK](https://www.microsoft.com/net/download/), which includes the `dotnet` CLI. diff --git a/docs/quickstart/create-and-publish-a-package-using-visual-studio.md b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md index ed5d75f61..2b2d38b1d 100644 --- a/docs/quickstart/create-and-publish-a-package-using-visual-studio.md +++ b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md @@ -18,7 +18,7 @@ ms.reviewer: It's a simple process to create a NuGet package from a .NET Class Library in Visual Studio, and then publish it to nuget.org using a CLI tool. -## Pre-requisites +## Prerequisites 1. Install any edition of Visual Studio 2017 from [visualstudio.com](https://www.visualstudio.com/) with any .NET-related workload. Visual Studio 2017 automatically includes NuGet capabilities when a .NET workload is installed. diff --git a/docs/quickstart/install-and-use-a-package-in-visual-studio.md b/docs/quickstart/install-and-use-a-package-in-visual-studio.md index a49b74ed4..0bf8b7fd7 100644 --- a/docs/quickstart/install-and-use-a-package-in-visual-studio.md +++ b/docs/quickstart/install-and-use-a-package-in-visual-studio.md @@ -23,7 +23,7 @@ Once installed, refer to the package in code with `using ` where \ [!Tip] > **Start with nuget.org**: Browsing nuget.org is how .NET developers typically find components they can reuse in their own applications. You can search nuget.org directly or find and install packages within Visual Studio as shown in this article. -## Pre-requisites +## Prerequisites - Visual Studio 2017 with the Universal Windows Platform development workload, or - Visual Studio 2015 Update 3 with Tools for Universal Windows Apps. 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 02bc4b3d0..510d463e0 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 @@ -23,7 +23,7 @@ Once installed, refer to the package in code with `using ` where \ [!Tip] > **Start with nuget.org**: Browsing nuget.org is how .NET developers typically find components they can reuse in their own applications. You can search nuget.org directly or find and install packages within Visual Studio as shown in this article. -## Pre-requisites +## Prerequisites - The [.NET Core SDK](https://www.microsoft.com/net/download/), which provides the `dotnet` command-line tool. diff --git a/docs/reference/Errors-and-Warnings.md b/docs/reference/Errors-and-Warnings.md index 27f3d0a45..f4e0d21bd 100644 --- a/docs/reference/Errors-and-Warnings.md +++ b/docs/reference/Errors-and-Warnings.md @@ -44,6 +44,13 @@ f1_keywords: - "NU1608" - "NU1701" - "NU1801" + - "NU3000" + - "NU3001" + - "NU3002" + - "NU3004" + - "NU3008" + - "NU3018" + - "NU3028" --- # Errors and warnings @@ -334,3 +341,60 @@ The errors and warnings listed here are available only with [PackageReference-ba | --- | --- | | **Issue** | A non specific internal warning from NuGet. | | **Common causes** | Check the logs for more information | + +## Signed packages (creation and verification) +NuGet 4.6.0 introduces new errors and warnings related to signed packages. + +[NU3000](#nu3000) | [NU3001](#nu3001) | [NU3002](#nu3002) | [NU3004](#nu3004) | [NU3008](#nu3008) | [NU3018](#nu3018) | [NU3028](#nu3028) + +### NU3000 + +| | | +| --- | --- | +| **Issue** | A non specific error related to package signing and signed package verification. | +| **Common causes** | Check the logs for more information | + +### NU3001 + +| | | +| --- | --- | +| **Issue** | Invalid input error. | +| **Common causes** | Invalid arguments to either the [sign command](../tools/cli-ref-sign.md) or the [verify command](../tools/cli-ref-verify.md). | + +### NU3002 + +| | | +| --- | --- | +| **Issue** | The *-Timestamper* option was not used. | +| **Common causes** | The *-Timestamper* option was not provided to the [sign command](../tools/cli-ref-sign.md). | +| **Example message** | *The '-Timestamper' option was not provided. The signed package will not be timestamped. To learn more about this option, please visit https://docs.nuget.org/docs/reference/command-line-reference* | + +### NU3004 + +| | | +| --- | --- | +| **Issue** | The package is not signed. | +| **Common causes** | An unsigned package was provided to the [verify command](../tools/cli-ref-verify.md). | + +### NU3008 + +| | | +| --- | --- | +| **Issue** | The package integrity check failed. | +| **Common causes** | A signed package was tampered with since being signed. | + +### NU3018 + +| | | +| --- | --- | +| **Issue** | Certificate chain building failed for the primary signature. | +| **Common causes** | The primary signing certificate is untrusted, revoked, or revocation information for the certificate is unavailable. | +| **Example message** | *WARNING: NU3018: The revocation function was unable to check revocation for the certificate.* | + +### NU3028 + +| | | +| --- | --- | +| **Issue** | Certificate chain building failed for the timestamp signature. | +| **Common causes** | The timestamp signing certificate is untrusted, revoked, or revocation information for the certificate is unavailable. | +| **Example message** | *WARNING: NU3028: The revocation function was unable to check revocation for the certificate.* |. \ No newline at end of file diff --git a/docs/reference/Signed-Packages-Reference.md b/docs/reference/Signed-Packages-Reference.md index c8c896219..89d9a3047 100644 --- a/docs/reference/Signed-Packages-Reference.md +++ b/docs/reference/Signed-Packages-Reference.md @@ -15,31 +15,31 @@ ms.reviewer: - unniravindranathan --- -# Signed Packages +# Signed packages -NuGet packages can include a digital signature which provides protection against tampered content. This signature is produced from an x509 certificate that also adds authenticity proofs to the actual origin of the package. +NuGet packages can include a digital signature which provides protection against tampered content. This signature is produced from an X.509 certificate that also adds authenticity proofs to the actual origin of the package. -This feature has been introduced in nuget.exe 4.6, while signature verification requires Visual Studio 2017 Update 15.6. +NuGet 4.6 introduces the ability to sign NuGet packages and verify signed NuGet packages. Visual Studio 2017 Update 6 introduces the ability to verify signed NuGet packages. ## Benefits of signed packages -Packages that have been signed with a certificate provide the strongest end to end validation. An author signature guarantees that the package has not been modified since it left the author computer, no matter from which repository or transport method has been used . +Signed packages provide the strongest end-to-end validation. An author signature guarantees that the package has not been modified since the author signed the package, no matter from which repository or what transport method the package is delivered. -Consumers who demand a locked-down environment can require packages signed with an specific author certificate. +Consumers who demand a locked-down environment can require packages signed with an specific author certificate. -Additionally, author-signed packages provide an extra authentication mechanism to the publishing mechanism to nuget.org, because the certificate used to sign must be registered ahead of time. +Additionally, author-signed packages provide an extra authentication mechanism to nuget.org's publishing pipeline because the signing certificate must be registered ahead of time. ## How to sign a package -[Singing Packages](../create-packages/Sign-a-package) explains how to sign a package using the [sign command](../tools/cli-ref-sign). +[Signing Packages](../create-packages/Sign-a-package) explains how to sign a package using the [sign command](../tools/cli-ref-sign). ## Certificate Requirements -Authors require a code signing certificate, which are a special type of certificate that are valid for the `id-kp-codeSigning` purpose [[RFC 5280 section 4.2.1.12]](https://tools.ietf.org/html/rfc5280#section-4.2.1.12), and have an RSA public key length of 2048 bits or higher. +Package signing requires a code signing certificate, which is a special type of certificate that is valid for the `id-kp-codeSigning` purpose [[RFC 5280 section 4.2.1.12](https://tools.ietf.org/html/rfc5280#section-4.2.1.12)]. Additionally, the certificate must have an RSA public key length of 2048 bits or higher. ## Get a code signing certificate -These certificates can be obtained from a public certificate authorities like: +Valid certificates may be obtained from public certificate authorities like: - [Symmantec](https://trustcenter.websecurity.symantec.com/process/trust/productOptions?productType=SoftwareValidationClass3) - [DigiCert](https://www.digicert.com/code-signing/) @@ -50,9 +50,9 @@ These certificates can be obtained from a public certificate authorities like: The complete list of certification authorities trusted by Windows can be obtained from [http://aka.ms/trustcertpartners](http://aka.ms/trustcertpartners). -## Create a Test certficate +## Create a test certficate -You can use Self-Signed certificates for testing purposes. To create a self signed certificate you can use the powershell commmand [New-SelfSignedCertificate](https://docs.microsoft.com/en-us/powershell/module/pkiclient/new-selfsignedcertificate) +You can use self-issued certificates for testing purposes. To create a self-issued certificate you can use the PowerShell commmand [New-SelfSignedCertificate](https://docs.microsoft.com/en-us/powershell/module/pkiclient/new-selfsignedcertificate) ```ps New-SelfSignedCertificate -Subject "CN=NuGet Test Developer, OU=Use for testing purposes ONLY" ` @@ -61,15 +61,16 @@ New-SelfSignedCertificate -Subject "CN=NuGet Test Developer, OU=Use for testing -KeyUsage DigitalSignature ` -KeyLength 2048 ` -KeyAlgorithm RSA ` + -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" ` -HashAlgorithm SHA256 ` -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" ` -CertStoreLocation "Cert:\CurrentUser\My" ``` -This command creates a testing certificate available in the personal certificate store. You can open the certificate store by running `certmgr.msc` to see the new created certificate. +This command creates a testing certificate available in the current user's personal certificate store. You can open the certificate store by running `certmgr.msc` to see the newly created certificate. -## Timestamp Requirements +## Timestamp requirements -Signed packages should include a timestamp to ensure the validity period beyond the expiration date of the certificate. The certificate used to sign the timestamp must be valid for the `id-kp-timeStamping` purpose [[RFC 5280 section 4.2.1.12](https://tools.ietf.org/html/rfc5280#section-4.2.1.12)] and have an RSA public key length of 2048 bits or higher. +Signed packages should include an RFC 3161 timestamp to ensure signature validity beyond the package signing certificate's validity period. The certificate used to sign the timestamp must be valid for the `id-kp-timeStamping` purpose [[RFC 5280 section 4.2.1.12](https://tools.ietf.org/html/rfc5280#section-4.2.1.12)]. Additionally, the certificate must have an RSA public key length of 2048 bits or higher. Additional technical details can be found in the [technical spec](https://github.com/NuGet/Home/wiki/Package-Signatures-Technical-Details) in GitHub. diff --git a/docs/tools/cli-ref-sign.md b/docs/tools/cli-ref-sign.md index e8a2ed20d..5ad876507 100644 --- a/docs/tools/cli-ref-sign.md +++ b/docs/tools/cli-ref-sign.md @@ -1,30 +1,63 @@ --- title: NuGet CLI sign command | Microsoft Docs -author: rido-min -ms.author: rido-min -manager: unniravindranathan -ms.date: 02/26/2018 +author: dtivel +ms.author: dtivel +manager: doronm +ms.date: 03/02/2018 ms.topic: reference ms.prod: nuget ms.technology: null description: Reference for the nuget.exe sign command keywords: nuget sign reference, sign command ms.reviewer: -- karann-msft -- unniravindranathan +- karann +- rmpablos --- # sign command (NuGet CLI) **Applies to:** package creation • **Supported versions:** 4.6+ -Signs all the packages matching the first argument with a certificate. The certificate with the private key can be obtained from a file with a password or from an installed certificate in the cert store providing a subject name or a thumbprint. +Signs all the packages matching the first argument with a certificate. The certificate with the private key can be obtained from a file or from a certificate installed in a certificate store by providing a subject name or a thumbprint. + +Package signing is not yet supported under Mono or on non-Windows platforms. ## Usage ```cli -nuget sign -certificateSubjectName -timestamper +nuget sign [options] ``` ## Options +| Option | Description | +| --- | --- | +| CertificateFingerprint | Specifies the SHA-1 fingerprint of the certificate used to search a local certificate store for the certificate. | +| CertificatePassword | Specifies the certificate password, if needed. If a certificate is password protected but no password is provided, the command will prompt for a password at run time, unless the -NonInteractive option is passed. | +| CertificatePath | Specifies the file path to the certificate to be used in signing the package. | +| CertificateStoreLocation | Specifies the name of the X.509 certificate store use to search for the certificate. Defaults to "CurrentUser", the X.509 certificate store used by the current user. +This option should be used when specifying the certificate via -CertificateSubjectName or -CertificateFingerprint options. | +| CertificateStoreName | Specifies the name of the X.509 certificate store to use to search for the certificate. Defaults to "My", the X.509 certificate store for personal certificates. +This option should be used when specifying the certificate via -CertificateSubjectName or -CertificateFingerprint options. | +| CertificateSubjectName | Specifies the subject name of the certificate used to search a local certificate store for the certificate. +The search is a case-insensitive string comparison using the supplied value, which will find all certificates with the subject name containing that string, regardless of other subject values. +The certificate store can be specified by -CertificateStoreName and -CertificateStoreLocation options. | +| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| HashAlgorithm | Hash algorithm to be used to sign the package. Defaults to SHA256. | +| Help | Displays help information for the command. | +| NonInteractive | Suppresses prompts for user input or confirmations. | +| OutputDirectory | Specifies the directory where the signed package should be saved. By default the original package is overwritten by the signed package. | +| Overwrite | Switch to indicate if the current signature should be overwritten. By default the command will fail if the package already has a signature. | +| Timestamper | URL to an RFC 3161 timestamping server. | +| TimestampHashAlgorithm | Hash algorithm to be used by the RFC 3161 timestamp server. Defaults to SHA256. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | + + +## Examples + +```cli +nuget sign MyPackage.nupkg -Timestamper http://timestamp.test + +nuget sign .\..\MyPackage.nupkg -Timestamper http://timestamp.test -OutputDirectory .\..\Signed +``` \ No newline at end of file diff --git a/docs/tools/cli-ref-verify.md b/docs/tools/cli-ref-verify.md index 63762d483..f07de304c 100644 --- a/docs/tools/cli-ref-verify.md +++ b/docs/tools/cli-ref-verify.md @@ -1,29 +1,53 @@ --- title: NuGet CLI verify command | Microsoft Docs -author: rido-min -ms.author: rido-min -manager: unniravindranathan -ms.date: 02/26/2018 +author: dtivel +ms.author: dtivel +manager: doronm +ms.date: 03/02/2018 ms.topic: reference ms.prod: nuget ms.technology: null description: Reference for the nuget.exe verify command keywords: nuget verify reference, verify command ms.reviewer: -- karann-msft -- unniravindranathan +- karann +- rmpablos --- # verify command (NuGet CLI) -**Applies to:** package creation • **Supported versions:** 4.6+ +**Applies to:** package consumption • **Supported versions:** 4.6+ Verifies a package. ## Usage ```cli -nuget verify -signature +nuget verify [options] ``` -## Options \ No newline at end of file +## Options + +| Option | Description | +| --- | --- | +| All | Specifies that all verifications possible should be performed on the package(s). | +| CertificateFingerprint | Specifies one or more SHA-256 certificate fingerprints of certificates(s) which signed packages must be signed with. A certificate SHA-256 fingerprint is a SHA-256 hash of the certificate. Multiple inputs should be semicolon separated. | +| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| Help | Displays help information for the command. | +| NonInteractive | Suppresses prompts for user input or confirmations. | +| Signatures | Specifies that package signature verification should be performed. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | + + +## Examples + +```cli +nuget verify -Signatures .\..\MyPackage.nupkg -CertificateFingerprint 86C0E8C51FF0EBDAD355315DF82AA6EC7049B542;BE36A4562FB2EE05DBB3D32323ADF445084ED656" -Verbosity detailed + +nuget verify -Signatures c:\foo\MyPackage.nupkg -CertificateFingerprint BE36A4562FB2EE05DBB3D32323ADF445084ED656 + +nuget verify -Signatures MyPackage.nupkg -Verbosity quiet + +nuget verify -Signatures .\*.nupkg +``` \ No newline at end of file From 2f8d170edfdc2fc93be98a38bb27fd7521e53863 Mon Sep 17 00:00:00 2001 From: rido Date: Fri, 2 Mar 2018 17:35:08 -0800 Subject: [PATCH 0571/2943] Add .md extension to broken links --- docs/create-packages/Sign-a-Package.md | 6 +++--- docs/reference/Signed-Packages-Reference.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 76c39363f..6dcf0083f 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -22,7 +22,7 @@ Signing a package is a simple process that will ensure the package has not been 1. The .nupkg to sign. See [Creating a package](creating-a-package.md). 2. NuGet.exe CLI tools. See how to [Install NuGet CLI](../install-nuget-client-tools.md#nugetexe-cli). *Signing is available from version 4.6 or later*. -3. [Get a code signing certificate](../reference/signed-packages-referece#get-codesigning-certificate). +3. [Get a code signing certificate](../reference/signed-packages-referece.md#get-codesigning-certificate). > [!Warning] @@ -30,7 +30,7 @@ Signing a package is a simple process that will ensure the package has not been ## How to sign a package -Using `nuget.exe` you can use the [sign command](../tools/cli-ref-sign) to sign a package: +Using `nuget.exe` you can use the [sign command](../tools/cli-ref-sign.md) to sign a package: ```cli nuget sign ^ @@ -54,7 +54,7 @@ There are some cases where the sign operation can fail. Here are the most commo ## How to verify a signed package -You can use the `nuget.exe` [verify command](../tools/cli-ref-verify) to see the signature details of a given package. +You can use the `nuget.exe` [verify command](../tools/cli-ref-verify.md) to see the signature details of a given package. ```cli nuget verify -signature diff --git a/docs/reference/Signed-Packages-Reference.md b/docs/reference/Signed-Packages-Reference.md index 89d9a3047..8c243ed50 100644 --- a/docs/reference/Signed-Packages-Reference.md +++ b/docs/reference/Signed-Packages-Reference.md @@ -31,7 +31,7 @@ Additionally, author-signed packages provide an extra authentication mechanism t ## How to sign a package -[Signing Packages](../create-packages/Sign-a-package) explains how to sign a package using the [sign command](../tools/cli-ref-sign). +[Signing Packages](../create-packages/Sign-a-package.md) explains how to sign a package using the [sign command](../tools/cli-ref-sign.md). ## Certificate Requirements From 6ba659b52f1715479c24d6ae3f2eeaf008b69e87 Mon Sep 17 00:00:00 2001 From: rido Date: Fri, 2 Mar 2018 17:38:24 -0800 Subject: [PATCH 0572/2943] Replace HowTo in titles --- docs/create-packages/Sign-a-Package.md | 8 ++++---- docs/reference/Signed-Packages-Reference.md | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 6dcf0083f..ca81884f3 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -1,5 +1,5 @@ --- -title: How to Sign a NuGet Package | Microsoft Docs +title: Signing NuGet Packages | Microsoft Docs author: rido-min ms.author: rido-min manager: unniravindranathan @@ -14,7 +14,7 @@ ms.reviewer: - anangaur --- -# How to create a signed NuGet Package +# Signing NuGet Packages Signing a package is a simple process that will ensure the package has not been modified since creation to consumption. @@ -28,7 +28,7 @@ Signing a package is a simple process that will ensure the package has not been > [!Warning] > NuGet.org does not accept signed packages yet. You can sign packages for publishing in custom feeds. -## How to sign a package +## Sign a package Using `nuget.exe` you can use the [sign command](../tools/cli-ref-sign.md) to sign a package: @@ -52,7 +52,7 @@ There are some cases where the sign operation can fail. Here are the most commo > Signed packages should include a timestamp to make sure the signature will remain valid when the signing certificate has expired. The sign operation will produce a warning when signing without a timestamp. -## How to verify a signed package +## Verify a signed package You can use the `nuget.exe` [verify command](../tools/cli-ref-verify.md) to see the signature details of a given package. diff --git a/docs/reference/Signed-Packages-Reference.md b/docs/reference/Signed-Packages-Reference.md index 8c243ed50..dd7b74435 100644 --- a/docs/reference/Signed-Packages-Reference.md +++ b/docs/reference/Signed-Packages-Reference.md @@ -29,7 +29,7 @@ Consumers who demand a locked-down environment can require packages signed with Additionally, author-signed packages provide an extra authentication mechanism to nuget.org's publishing pipeline because the signing certificate must be registered ahead of time. -## How to sign a package +## Sign a package [Signing Packages](../create-packages/Sign-a-package.md) explains how to sign a package using the [sign command](../tools/cli-ref-sign.md). @@ -61,7 +61,6 @@ New-SelfSignedCertificate -Subject "CN=NuGet Test Developer, OU=Use for testing -KeyUsage DigitalSignature ` -KeyLength 2048 ` -KeyAlgorithm RSA ` - -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" ` -HashAlgorithm SHA256 ` -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" ` -CertStoreLocation "Cert:\CurrentUser\My" From f36789cd0234fe2d4a16b5f4227e15729f90f718 Mon Sep 17 00:00:00 2001 From: rido Date: Fri, 2 Mar 2018 17:41:43 -0800 Subject: [PATCH 0573/2943] Add warning to reference package --- docs/create-packages/Sign-a-Package.md | 1 - docs/reference/Signed-Packages-Reference.md | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index ca81884f3..0ebfef78b 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -24,7 +24,6 @@ Signing a package is a simple process that will ensure the package has not been 2. NuGet.exe CLI tools. See how to [Install NuGet CLI](../install-nuget-client-tools.md#nugetexe-cli). *Signing is available from version 4.6 or later*. 3. [Get a code signing certificate](../reference/signed-packages-referece.md#get-codesigning-certificate). - > [!Warning] > NuGet.org does not accept signed packages yet. You can sign packages for publishing in custom feeds. diff --git a/docs/reference/Signed-Packages-Reference.md b/docs/reference/Signed-Packages-Reference.md index dd7b74435..339ec6de6 100644 --- a/docs/reference/Signed-Packages-Reference.md +++ b/docs/reference/Signed-Packages-Reference.md @@ -21,6 +21,9 @@ NuGet packages can include a digital signature which provides protection against NuGet 4.6 introduces the ability to sign NuGet packages and verify signed NuGet packages. Visual Studio 2017 Update 6 introduces the ability to verify signed NuGet packages. +> [!Warning] +> NuGet.org does not accept signed packages yet. You can sign packages for publishing in custom feeds. + ## Benefits of signed packages Signed packages provide the strongest end-to-end validation. An author signature guarantees that the package has not been modified since the author signed the package, no matter from which repository or what transport method the package is delivered. From 2efc11add88cc723803940adc74359c4b784e050 Mon Sep 17 00:00:00 2001 From: rido Date: Fri, 2 Mar 2018 17:47:13 -0800 Subject: [PATCH 0574/2943] replace howto in a subtitle --- docs/create-packages/Sign-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 0ebfef78b..cc693a81d 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -59,7 +59,7 @@ You can use the `nuget.exe` [verify command](../tools/cli-ref-verify.md) to see nuget verify -signature ``` -## How to install a signed package +## Install a signed package Signed packages don't require any specific action to be installed; however, if the content has been modified since it was signed, the installation will be blocked and will produce an error message. From 176a8e21dbc8da61bd3c9596f966c1ceab6e2c68 Mon Sep 17 00:00:00 2001 From: Gian Marco Gherardi Date: Sat, 3 Mar 2018 17:23:10 +0100 Subject: [PATCH 0575/2943] Nuspect property 'Description' match with MSBuild property 'PackageDescription' Using 'Description' property result in 'error CS0579' --- docs/reference/msbuild-targets.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index 5ffc5279c..9e0ad9d85 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -51,7 +51,7 @@ Note that the `Owners` and `Summary` properties from `.nuspec` are not supported | Authors | Authors | Username of the current user | | | Owners | N/A | Not present in NuSpec | | | Title | Title | The PackageId| | -| Description | Description | "Package Description" | | +| Description | PackageDescription | "Package Description" | | | Copyright | Copyright | empty | | | RequireLicenseAcceptance | PackageRequireLicenseAcceptance | false | | | LicenseUrl | PackageLicenseUrl | empty | | From a7e62d1ffeac1cfe2324b9b9ec7f41a9bd290cd7 Mon Sep 17 00:00:00 2001 From: rido Date: Mon, 5 Mar 2018 09:33:44 -0800 Subject: [PATCH 0576/2943] Fix links --- docs/create-packages/Overview-and-Workflow.md | 2 +- docs/create-packages/Sign-a-Package.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/create-packages/Overview-and-Workflow.md b/docs/create-packages/Overview-and-Workflow.md index 3f08a0663..14df5767c 100644 --- a/docs/create-packages/Overview-and-Workflow.md +++ b/docs/create-packages/Overview-and-Workflow.md @@ -41,7 +41,7 @@ From there, you can consider a number of other options for your package: - [Symbol Packages](../create-packages/symbol-packages.md) offers guidance for supplying symbols for your library that allow consumers to step into your code while debugging. - [Package versioning](../reference/package-versioning.md) discusses how to identify the exact versions that you allow for your dependencies (other packages that you consume from your package). - [Native Packages](../create-packages/native-packages.md) describes the process for creating a package for C++ consumers. -- [Signing Packages](sign-a-package) describes the process for adding a digital signature to a package. +- [Signing Packages](../create-packages/sign-a-package.md) describes the process for adding a digital signature to a package. When you're then ready to publish a package to nuget.org, follow the simple process in [Publish a package](../create-packages/publish-a-package.md). diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index cc693a81d..9597d3ae2 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -22,7 +22,7 @@ Signing a package is a simple process that will ensure the package has not been 1. The .nupkg to sign. See [Creating a package](creating-a-package.md). 2. NuGet.exe CLI tools. See how to [Install NuGet CLI](../install-nuget-client-tools.md#nugetexe-cli). *Signing is available from version 4.6 or later*. -3. [Get a code signing certificate](../reference/signed-packages-referece.md#get-codesigning-certificate). +3. [Get a code signing certificate](../reference/signed-packages-referece.md#get-a-codesigning-certificate). > [!Warning] > NuGet.org does not accept signed packages yet. You can sign packages for publishing in custom feeds. From 34fe3e811222154a901ea187dabd20b2b83aef48 Mon Sep 17 00:00:00 2001 From: rido Date: Mon, 5 Mar 2018 09:44:30 -0800 Subject: [PATCH 0577/2943] add signed errors category --- docs/reference/Errors-and-Warnings.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/reference/Errors-and-Warnings.md b/docs/reference/Errors-and-Warnings.md index f4e0d21bd..179d7caa1 100644 --- a/docs/reference/Errors-and-Warnings.md +++ b/docs/reference/Errors-and-Warnings.md @@ -77,6 +77,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | [Package fallback warnings](#package-fallback-warnings) | [NU1701](#nu1701) | | [Feed warnings](#feed-warnings) | [NU1801](#nu1801) | | [NuGet internal errors and warnings](#nuget-internal-errors-and-warnings) | [NU1000](#nu1000), [NU1500](#nu1500) | +| [Signed packages (creation and verification)](#signed-packages-creation-and-verification)| [NU3000](#nu3000), [NU3001](#nu3001), [NU3002](#nu3002), [NU3004](#nu3004), [NU3008](#nu3008), [NU3018](#nu3018), [NU3028](#nu3028) | ## Invalid input errors From 90cfff5a55d7e897aa5e807e6542c3b79a90f803 Mon Sep 17 00:00:00 2001 From: rido Date: Mon, 5 Mar 2018 09:52:48 -0800 Subject: [PATCH 0578/2943] fix wrong link --- docs/create-packages/Sign-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 9597d3ae2..0eebcbf08 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -22,7 +22,7 @@ Signing a package is a simple process that will ensure the package has not been 1. The .nupkg to sign. See [Creating a package](creating-a-package.md). 2. NuGet.exe CLI tools. See how to [Install NuGet CLI](../install-nuget-client-tools.md#nugetexe-cli). *Signing is available from version 4.6 or later*. -3. [Get a code signing certificate](../reference/signed-packages-referece.md#get-a-codesigning-certificate). +3. [Get a code signing certificate](../reference/signed-packages-reference.md#get-a-codesigning-certificate). > [!Warning] > NuGet.org does not accept signed packages yet. You can sign packages for publishing in custom feeds. From 1a1ada9d9756308c3e9fe6bdbf2401834414bbba Mon Sep 17 00:00:00 2001 From: rido Date: Mon, 5 Mar 2018 09:57:16 -0800 Subject: [PATCH 0579/2943] fixing bookmark --- docs/create-packages/Sign-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 0eebcbf08..9eb1e60fa 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -22,7 +22,7 @@ Signing a package is a simple process that will ensure the package has not been 1. The .nupkg to sign. See [Creating a package](creating-a-package.md). 2. NuGet.exe CLI tools. See how to [Install NuGet CLI](../install-nuget-client-tools.md#nugetexe-cli). *Signing is available from version 4.6 or later*. -3. [Get a code signing certificate](../reference/signed-packages-reference.md#get-a-codesigning-certificate). +3. [Get a code signing certificate](../reference/signed-packages-reference.md#get-a-code-signing-certificate). > [!Warning] > NuGet.org does not accept signed packages yet. You can sign packages for publishing in custom feeds. From 60db5e2d50faba905abf08d42fae9ce36b99372e Mon Sep 17 00:00:00 2001 From: Caro Caserio Date: Mon, 5 Mar 2018 15:22:16 -0300 Subject: [PATCH 0580/2943] M19264: Incorrect verb form Hello, @kraigb, Translator has reported possible source content issue. Please, help to check my proposed file change into the article and help to merge if you agree with fix. If not, please, let me know either if you would like me to fix it in another way within this PR, if you prefer to fix it in another PR, or if I should close this PR as by-design. In case of using another PR, please, let me know of your PR number, so we can confirm and close this PR. Many thanks in advance. --- docs/consume-packages/Team-Foundation-Build.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/consume-packages/Team-Foundation-Build.md b/docs/consume-packages/Team-Foundation-Build.md index feeab4512..d125a4f01 100644 --- a/docs/consume-packages/Team-Foundation-Build.md +++ b/docs/consume-packages/Team-Foundation-Build.md @@ -96,7 +96,7 @@ The source code is under the `src` folder. Although our demo only uses a single ``` -To communicate to version control that we don’t intent to check-in the **packages** folders, we've also added ignore files for both git (`.gitignore`) as well as TF version control (`.tfignore`). These files describes patterns of files you don't want to check-in. +To communicate to version control that we don’t intent to check-in the **packages** folders, we've also added ignore files for both git (`.gitignore`) as well as TF version control (`.tfignore`). These files describe patterns of files you don't want to check-in. The `.gitignore` file looks as follows: @@ -190,4 +190,4 @@ In the TF version control template the project is selected via the property `Pro ![Build Process for TFVC](media/PackageRestoreTeamBuildTFVC.png) -In contrast to the git based template the TF version control supports pickers (the button on the right hand side with the three dots). So in order to avoid any typing errors we suggest you use them to select the project. \ No newline at end of file +In contrast to the git based template the TF version control supports pickers (the button on the right hand side with the three dots). So in order to avoid any typing errors we suggest you use them to select the project. From 3fa6c99feac1dbf56a933b1d86f85809a5541f65 Mon Sep 17 00:00:00 2001 From: rido Date: Mon, 5 Mar 2018 10:26:33 -0800 Subject: [PATCH 0581/2943] update verify examples --- docs/tools/cli-ref-verify.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/tools/cli-ref-verify.md b/docs/tools/cli-ref-verify.md index f07de304c..c85cf5938 100644 --- a/docs/tools/cli-ref-verify.md +++ b/docs/tools/cli-ref-verify.md @@ -43,9 +43,9 @@ nuget verify [options] ## Examples ```cli -nuget verify -Signatures .\..\MyPackage.nupkg -CertificateFingerprint 86C0E8C51FF0EBDAD355315DF82AA6EC7049B542;BE36A4562FB2EE05DBB3D32323ADF445084ED656" -Verbosity detailed +nuget verify -Signatures .\..\MyPackage.nupkg -CertificateFingerprint "CE40881FF5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E039;5F874AAF47BCB268A19357364E7FBB09D6BF9E8A93E1229909AC5CAC865802E2" -Verbosity detailed -nuget verify -Signatures c:\foo\MyPackage.nupkg -CertificateFingerprint BE36A4562FB2EE05DBB3D32323ADF445084ED656 +nuget verify -Signatures c:\foo\MyPackage.nupkg -CertificateFingerprint CE40881FF5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E039 nuget verify -Signatures MyPackage.nupkg -Verbosity quiet From 0fb056a892bf21ef1e1950458b34a52b243de9ab Mon Sep 17 00:00:00 2001 From: Joseph Woodward Date: Tue, 6 Mar 2018 08:56:52 +0000 Subject: [PATCH 0582/2943] Text correction --- docs/reference/ID-Prefix-Reservation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/ID-Prefix-Reservation.md b/docs/reference/ID-Prefix-Reservation.md index 23546a744..bb3200380 100644 --- a/docs/reference/ID-Prefix-Reservation.md +++ b/docs/reference/ID-Prefix-Reservation.md @@ -17,7 +17,7 @@ ms.reviewer: # Package ID prefix reservation -Package owners are can reserve and protect their identity by reserving ID prefixes. Package consumers are provided with additional information when consuming packages that the package they are consuming are not deceptive in their identifying properties. +Package owners can reserve and protect their identity by reserving ID prefixes. Package consumers are provided with additional information when consuming packages that the package they are consuming are not deceptive in their identifying properties. [nuget.org](https://www.nuget.org/) and Visual Studio 2017 version 15.4 or later show a visual indicator for packages that are submitted by owners with a reserved package ID prefix, as long as the package matches the reserved ID prefix naming pattern. The below reference explains what the ID prefix reservation entails, and how an owner can apply for an ID prefix. From a0182c8f0ebbeb332b30a711c7bec3de91d88d3e Mon Sep 17 00:00:00 2001 From: Alex Villarreal Date: Tue, 6 Mar 2018 16:14:16 -0600 Subject: [PATCH 0583/2943] Fix typos Replaced `og` with `of` and took `in` out of a code block. --- docs/create-packages/Prerelease-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Prerelease-Packages.md b/docs/create-packages/Prerelease-Packages.md index 4681469fd..0f67b7f6b 100644 --- a/docs/create-packages/Prerelease-Packages.md +++ b/docs/create-packages/Prerelease-Packages.md @@ -75,7 +75,7 @@ With this in mind, it's generally good to follow recognized naming conventions s - `-rc`: Release candidate, typically a release that's potentially final (stable) unless significant bugs emerge. > [!Note] -> NuGet 4.3.0+ supports [Semantic Versioning v2.0.0](http://semver.org/spec/v2.0.0.html), which supports pre-release numbers with dot notation, as `in 1.0.1-build.23`. Dot notation is not supported with NuGet versions before 4.3.0. In earlier versions og NuGet, you could use a form like `1.0.1-build23` but this was always considered a pre-release version. +> NuGet 4.3.0+ supports [Semantic Versioning v2.0.0](http://semver.org/spec/v2.0.0.html), which supports pre-release numbers with dot notation, as in `1.0.1-build.23`. Dot notation is not supported with NuGet versions before 4.3.0. In earlier versions of NuGet, you could use a form like `1.0.1-build23` but this was always considered a pre-release version. Whatever suffixes you use, however, NuGet will give them precedence in reverse alphabetical order: From 5bbe61e8ad2713b74b0ff7e8dd0783169329698c Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 6 Mar 2018 14:22:27 -0800 Subject: [PATCH 0584/2943] kraigb edits --- docs/create-packages/Sign-a-Package.md | 46 ++++++++++---------- docs/reference/Errors-and-Warnings.md | 19 ++++---- docs/reference/Signed-Packages-Reference.md | 48 ++++++++++----------- docs/tools/cli-ref-sign.md | 9 ++-- docs/tools/cli-ref-verify.md | 13 +++--- 5 files changed, 66 insertions(+), 69 deletions(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 9eb1e60fa..b46df8fcb 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -3,11 +3,11 @@ title: Signing NuGet Packages | Microsoft Docs author: rido-min ms.author: rido-min manager: unniravindranathan -ms.date: 02/26/2018 +ms.date: 03/06/2018 ms.topic: article ms.prod: nuget ms.technology: null -description: Explains how signed packages can be used to enable content integrity verification +description: Explains how signed packages can be used to enable content integrity verification. keywords: NuGet package signing, NuGet security, creating signed packages ms.reviewer: - karann-msft @@ -16,56 +16,54 @@ ms.reviewer: # Signing NuGet Packages -Signing a package is a simple process that will ensure the package has not been modified since creation to consumption. +Signing a package is a process that makes sure the package has not been modified since its creation. ## Prerequisites -1. The .nupkg to sign. See [Creating a package](creating-a-package.md). -2. NuGet.exe CLI tools. See how to [Install NuGet CLI](../install-nuget-client-tools.md#nugetexe-cli). *Signing is available from version 4.6 or later*. -3. [Get a code signing certificate](../reference/signed-packages-reference.md#get-a-code-signing-certificate). +1. The package (a `.nupkg` file) to sign. See [Creating a package](creating-a-package.md). -> [!Warning] -> NuGet.org does not accept signed packages yet. You can sign packages for publishing in custom feeds. +1. nuget.exe 4.6.0 or later. See how to [Install NuGet CLI](../install-nuget-client-tools.md#nugetexe-cli). + +1. [A code signing certificate](../reference/signed-packages-reference.md#get-a-code-signing-certificate). + +> [!Warning] +> nuget.org does not presently accept signed packages. You can sign packages for publishing to custom feeds. ## Sign a package -Using `nuget.exe` you can use the [sign command](../tools/cli-ref-sign.md) to sign a package: +To sign a package, use [nuget sign](../tools/cli-ref-sign.md): ```cli -nuget sign ^ - -CertificateSubjectName ^ - -Timestamper +nuget sign MyPackage.nupkg -CertificateSubjectName -Timestamper ``` -As described in the command reference you can use a certificate available in the certificate store or use a certificate from a file. +As described in the command reference, you can use a certificate available in the certificate store or use a certificate from a file. -### Common problems signing a package +### Common problems when signing a package -There are some cases where the sign operation can fail. Here are the most common cases: -- The certificate is not valid for code signing. You must ensure the certificate specified has the appropiate extended key usage (EKU 1.3.6.1.5.5.7.3.3). +- The certificate is not valid for code signing. You must ensure the certificate specified has the appropriate extended key usage (EKU 1.3.6.1.5.5.7.3.3). - The certificate does not satisfy the basic requirements such as the RSA SHA-256 signature algorithm or a public key 2048 bits or greater. - The certificate has expired or has been revoked. - The timestamp server does not satisfy the certificate requirements. > [!Note] -> Signed packages should include a timestamp to make sure the signature will remain valid when the signing certificate has expired. The sign operation will produce a warning when signing without a timestamp. - +> Signed packages should include a timestamp to make sure the signature remains valid when the signing certificate has expired. The sign operation produce a [warning NU3002](../reference/Errors-and-Warnings.md#NU3002) when signing without a timestamp. ## Verify a signed package -You can use the `nuget.exe` [verify command](../tools/cli-ref-verify.md) to see the signature details of a given package. +Use [nuget verify](../tools/cli-ref-verify.md) to see the signature details of a given package: ```cli -nuget verify -signature +nuget verify -signature MyPackage.nupkg ``` ## Install a signed package -Signed packages don't require any specific action to be installed; however, if the content has been modified since it was signed, the installation will be blocked and will produce an error message. +Signed packages don't require any specific action to be installed; however, if the content has been modified since it was signed, the installation be blocked and produces a [error NU3008](../reference/Errors-and-Warnings.md#NU3008). > [!Warning] -> Packages signed with untrusted certificates will be considered as unsigned and will be installed without any warning or issue as any other unsigned package. +> Packages signed with untrusted certificates are considered as unsigned and are installed without any warnings or errors like any other unsigned package. -## More information +## See also -To learn more about package signing see the [Signed Packages Reference](../reference/Signed-Packages-Reference.md). \ No newline at end of file +[Signed Packages Reference](../reference/Signed-Packages-Reference.md) \ No newline at end of file diff --git a/docs/reference/Errors-and-Warnings.md b/docs/reference/Errors-and-Warnings.md index 179d7caa1..09f66e971 100644 --- a/docs/reference/Errors-and-Warnings.md +++ b/docs/reference/Errors-and-Warnings.md @@ -3,7 +3,7 @@ title: NuGet Restore Errors and Warnings Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 12/13/2017 +ms.date: 03/06/2018 ms.topic: reference ms.prod: nuget ms.technology: null @@ -344,7 +344,8 @@ The errors and warnings listed here are available only with [PackageReference-ba | **Common causes** | Check the logs for more information | ## Signed packages (creation and verification) -NuGet 4.6.0 introduces new errors and warnings related to signed packages. + +*NuGet 4.6.0+* [NU3000](#nu3000) | [NU3001](#nu3001) | [NU3002](#nu3002) | [NU3004](#nu3004) | [NU3008](#nu3008) | [NU3018](#nu3018) | [NU3028](#nu3028) @@ -352,23 +353,23 @@ NuGet 4.6.0 introduces new errors and warnings related to signed packages. | | | | --- | --- | -| **Issue** | A non specific error related to package signing and signed package verification. | -| **Common causes** | Check the logs for more information | +| **Issue** | A non-specific error related to package signing and signed package verification. | +| **Common causes** | Check the logs for more information. | ### NU3001 | | | | --- | --- | -| **Issue** | Invalid input error. | +| **Issue** | Invalid input. | | **Common causes** | Invalid arguments to either the [sign command](../tools/cli-ref-sign.md) or the [verify command](../tools/cli-ref-verify.md). | ### NU3002 | | | | --- | --- | -| **Issue** | The *-Timestamper* option was not used. | -| **Common causes** | The *-Timestamper* option was not provided to the [sign command](../tools/cli-ref-sign.md). | -| **Example message** | *The '-Timestamper' option was not provided. The signed package will not be timestamped. To learn more about this option, please visit https://docs.nuget.org/docs/reference/command-line-reference* | +| **Issue** | The `-Timestamper` option was not specified. | +| **Common causes** | The `-Timestamper` option was not provided to the [sign command](../tools/cli-ref-sign.md). | +| **Example message** | *The '-Timestamper' option was not provided. The signed package will not be timestamped. To learn more about this option, please visit https://docs.nuget.org/docs/reference/command-line-reference.* | ### NU3004 @@ -398,4 +399,4 @@ NuGet 4.6.0 introduces new errors and warnings related to signed packages. | --- | --- | | **Issue** | Certificate chain building failed for the timestamp signature. | | **Common causes** | The timestamp signing certificate is untrusted, revoked, or revocation information for the certificate is unavailable. | -| **Example message** | *WARNING: NU3028: The revocation function was unable to check revocation for the certificate.* |. \ No newline at end of file +| **Example message** | *WARNING: NU3028: The revocation function was unable to check revocation for the certificate.* | \ No newline at end of file diff --git a/docs/reference/Signed-Packages-Reference.md b/docs/reference/Signed-Packages-Reference.md index 339ec6de6..a8c2efc49 100644 --- a/docs/reference/Signed-Packages-Reference.md +++ b/docs/reference/Signed-Packages-Reference.md @@ -3,7 +3,7 @@ title: Signed Packages Reference | Microsoft Docs author: rido-min ms.author: rido-min manager: unniravindranathan -ms.date: 02/26/2018 +ms.date: 03/06/2018 ms.topic: reference ms.prod: nuget ms.technology: null @@ -17,26 +17,22 @@ ms.reviewer: # Signed packages -NuGet packages can include a digital signature which provides protection against tampered content. This signature is produced from an X.509 certificate that also adds authenticity proofs to the actual origin of the package. +*NuGet 4.6.0+ and Visual Studio 2017 version 15.6 and later* -NuGet 4.6 introduces the ability to sign NuGet packages and verify signed NuGet packages. Visual Studio 2017 Update 6 introduces the ability to verify signed NuGet packages. - -> [!Warning] -> NuGet.org does not accept signed packages yet. You can sign packages for publishing in custom feeds. - -## Benefits of signed packages +NuGet packages can include a digital signature that provides protection against tampered content. This signature is produced from an X.509 certificate that also adds authenticity proofs to the actual origin of the package. Signed packages provide the strongest end-to-end validation. An author signature guarantees that the package has not been modified since the author signed the package, no matter from which repository or what transport method the package is delivered. Consumers who demand a locked-down environment can require packages signed with an specific author certificate. -Additionally, author-signed packages provide an extra authentication mechanism to nuget.org's publishing pipeline because the signing certificate must be registered ahead of time. +Additionally, author-signed packages provide an extra authentication mechanism to the nuget.org publishing pipeline because the signing certificate must be registered ahead of time. -## Sign a package +For details on creating a signed package, see [Signing Packages](../create-packages/Sign-a-package.md) and the [nuget sign command](../tools/cli-ref-sign.md). -[Signing Packages](../create-packages/Sign-a-package.md) explains how to sign a package using the [sign command](../tools/cli-ref-sign.md). +> [!Important] +> nuget.org does not presently accept signed packages. You can sign packages for publishing to custom feeds. -## Certificate Requirements +## Certificate requirements Package signing requires a code signing certificate, which is a special type of certificate that is valid for the `id-kp-codeSigning` purpose [[RFC 5280 section 4.2.1.12](https://tools.ietf.org/html/rfc5280#section-4.2.1.12)]. Additionally, the certificate must have an RSA public key length of 2048 bits or higher. @@ -44,7 +40,7 @@ Package signing requires a code signing certificate, which is a special type of Valid certificates may be obtained from public certificate authorities like: -- [Symmantec](https://trustcenter.websecurity.symantec.com/process/trust/productOptions?productType=SoftwareValidationClass3) +- [Symantec](https://trustcenter.websecurity.symantec.com/process/trust/productOptions?productType=SoftwareValidationClass3) - [DigiCert](https://www.digicert.com/code-signing/) - [Go Daddy](https://www.godaddy.com/web-security/code-signing-certificate) - [Global Sign](https://www.globalsign.com/en/code-signing-certificate/) @@ -53,26 +49,26 @@ Valid certificates may be obtained from public certificate authorities like: The complete list of certification authorities trusted by Windows can be obtained from [http://aka.ms/trustcertpartners](http://aka.ms/trustcertpartners). -## Create a test certficate +## Create a test certificate -You can use self-issued certificates for testing purposes. To create a self-issued certificate you can use the PowerShell commmand [New-SelfSignedCertificate](https://docs.microsoft.com/en-us/powershell/module/pkiclient/new-selfsignedcertificate) +You can use self-issued certificates for testing purposes. To create a self-issued certificate, use the [New-SelfSignedCertificate](https://docs.microsoft.com/en-us/powershell/module/pkiclient/new-selfsignedcertificate) PowerShell command. ```ps -New-SelfSignedCertificate -Subject "CN=NuGet Test Developer, OU=Use for testing purposes ONLY" ` - -FriendlyName "NuGetTestDeveloper" ` - -Type CodeSigning ` - -KeyUsage DigitalSignature ` - -KeyLength 2048 ` - -KeyAlgorithm RSA ` - -HashAlgorithm SHA256 ` - -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" ` - -CertStoreLocation "Cert:\CurrentUser\My" +New-SelfSignedCertificate -Subject "CN=NuGet Test Developer, OU=Use for testing purposes ONLY" ` + -FriendlyName "NuGetTestDeveloper" ` + -Type CodeSigning ` + -KeyUsage DigitalSignature ` + -KeyLength 2048 ` + -KeyAlgorithm RSA ` + -HashAlgorithm SHA256 ` + -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" ` + -CertStoreLocation "Cert:\CurrentUser\My" ``` -This command creates a testing certificate available in the current user's personal certificate store. You can open the certificate store by running `certmgr.msc` to see the newly created certificate. +This command creates a testing certificate available in the current user's personal certificate store. You can open the certificate store by running `certmgr.msc` to see the newly created certificate. ## Timestamp requirements Signed packages should include an RFC 3161 timestamp to ensure signature validity beyond the package signing certificate's validity period. The certificate used to sign the timestamp must be valid for the `id-kp-timeStamping` purpose [[RFC 5280 section 4.2.1.12](https://tools.ietf.org/html/rfc5280#section-4.2.1.12)]. Additionally, the certificate must have an RSA public key length of 2048 bits or higher. -Additional technical details can be found in the [technical spec](https://github.com/NuGet/Home/wiki/Package-Signatures-Technical-Details) in GitHub. +Additional technical details can be found in the [package signature technical specs](https://github.com/NuGet/Home/wiki/Package-Signatures-Technical-Details) (GitHub). diff --git a/docs/tools/cli-ref-sign.md b/docs/tools/cli-ref-sign.md index 5ad876507..b65feb412 100644 --- a/docs/tools/cli-ref-sign.md +++ b/docs/tools/cli-ref-sign.md @@ -3,7 +3,7 @@ title: NuGet CLI sign command | Microsoft Docs author: dtivel ms.author: dtivel manager: doronm -ms.date: 03/02/2018 +ms.date: 03/06/2018 ms.topic: reference ms.prod: nuget ms.technology: null @@ -22,12 +22,14 @@ Signs all the packages matching the first argument with a certificate. The certi Package signing is not yet supported under Mono or on non-Windows platforms. -## Usage +## Usage ```cli nuget sign [options] ``` +where `` is one or more `.nupkg` files. + ## Options | Option | Description | @@ -43,7 +45,7 @@ This option should be used when specifying the certificate via -CertificateSubje The search is a case-insensitive string comparison using the supplied value, which will find all certificates with the subject name containing that string, regardless of other subject values. The certificate store can be specified by -CertificateStoreName and -CertificateStoreLocation options. | | ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | -| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| ForceEnglishOutput | Forces nuget.exe to run using an invariant, English-based culture. | | HashAlgorithm | Hash algorithm to be used to sign the package. Defaults to SHA256. | | Help | Displays help information for the command. | | NonInteractive | Suppresses prompts for user input or confirmations. | @@ -53,7 +55,6 @@ The certificate store can be specified by -CertificateStoreName and -Certificate | TimestampHashAlgorithm | Hash algorithm to be used by the RFC 3161 timestamp server. Defaults to SHA256. | | Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | - ## Examples ```cli diff --git a/docs/tools/cli-ref-verify.md b/docs/tools/cli-ref-verify.md index c85cf5938..3b66951bf 100644 --- a/docs/tools/cli-ref-verify.md +++ b/docs/tools/cli-ref-verify.md @@ -3,7 +3,7 @@ title: NuGet CLI verify command | Microsoft Docs author: dtivel ms.author: dtivel manager: doronm -ms.date: 03/02/2018 +ms.date: 03/06/2018 ms.topic: reference ms.prod: nuget ms.technology: null @@ -20,12 +20,14 @@ ms.reviewer: Verifies a package. -## Usage +## Usage ```cli -nuget verify [options] +nuget verify [options] ``` +where `` is one or more `.nupkg` files. + ## Options | Option | Description | @@ -33,19 +35,18 @@ nuget verify [options] | All | Specifies that all verifications possible should be performed on the package(s). | | CertificateFingerprint | Specifies one or more SHA-256 certificate fingerprints of certificates(s) which signed packages must be signed with. A certificate SHA-256 fingerprint is a SHA-256 hash of the certificate. Multiple inputs should be semicolon separated. | | ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | -| ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| ForceEnglishOutput | Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | | NonInteractive | Suppresses prompts for user input or confirmations. | | Signatures | Specifies that package signature verification should be performed. | | Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | - ## Examples ```cli nuget verify -Signatures .\..\MyPackage.nupkg -CertificateFingerprint "CE40881FF5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E039;5F874AAF47BCB268A19357364E7FBB09D6BF9E8A93E1229909AC5CAC865802E2" -Verbosity detailed -nuget verify -Signatures c:\foo\MyPackage.nupkg -CertificateFingerprint CE40881FF5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E039 +nuget verify -Signatures c:\packages\MyPackage.nupkg -CertificateFingerprint CE40881FF5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E039 nuget verify -Signatures MyPackage.nupkg -Verbosity quiet From 92fd0ec686e60e4cc1c82a4fa15f0b0a2aae5704 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 6 Mar 2018 14:24:47 -0800 Subject: [PATCH 0585/2943] Links --- docs/create-packages/Sign-a-Package.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index b46df8fcb..1cc82299f 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -47,7 +47,7 @@ As described in the command reference, you can use a certificate available in th - The timestamp server does not satisfy the certificate requirements. > [!Note] -> Signed packages should include a timestamp to make sure the signature remains valid when the signing certificate has expired. The sign operation produce a [warning NU3002](../reference/Errors-and-Warnings.md#NU3002) when signing without a timestamp. +> Signed packages should include a timestamp to make sure the signature remains valid when the signing certificate has expired. The sign operation produce a [warning NU3002](../reference/Errors-and-Warnings.md#nu3002) when signing without a timestamp. ## Verify a signed package @@ -59,7 +59,7 @@ nuget verify -signature MyPackage.nupkg ## Install a signed package -Signed packages don't require any specific action to be installed; however, if the content has been modified since it was signed, the installation be blocked and produces a [error NU3008](../reference/Errors-and-Warnings.md#NU3008). +Signed packages don't require any specific action to be installed; however, if the content has been modified since it was signed, the installation be blocked and produces a [error NU3008](../reference/Errors-and-Warnings.md#nu3008). > [!Warning] > Packages signed with untrusted certificates are considered as unsigned and are installed without any warnings or errors like any other unsigned package. From 71a58713e09d33ab6ee1de15a3b165a5901b5ac3 Mon Sep 17 00:00:00 2001 From: Unni Ravindranathan Date: Tue, 6 Mar 2018 17:03:55 -0800 Subject: [PATCH 0586/2943] Fixed branding --- docs/create-packages/Sign-a-Package.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 1cc82299f..d398d701d 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -27,7 +27,7 @@ Signing a package is a process that makes sure the package has not been modified 1. [A code signing certificate](../reference/signed-packages-reference.md#get-a-code-signing-certificate). > [!Warning] -> nuget.org does not presently accept signed packages. You can sign packages for publishing to custom feeds. +> NuGet.org does not current accept signed packages. You can sign packages for publishing to custom feeds. ## Sign a package @@ -66,4 +66,4 @@ Signed packages don't require any specific action to be installed; however, if t ## See also -[Signed Packages Reference](../reference/Signed-Packages-Reference.md) \ No newline at end of file +[Signed Packages Reference](../reference/Signed-Packages-Reference.md) From d974c75f87b651084b882bd2d3320c67b305d3c7 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 6 Mar 2018 18:20:44 -0800 Subject: [PATCH 0587/2943] Scrub old version numbers, address customer verbatims --- .openpublishing.redirection.json | 5 + docs/TOC.md | 1 - .../Configuring-NuGet-Behavior.md | 4 +- .../Finding-and-Choosing-Packages.md | 4 +- .../Reinstalling-and-Updating-Packages.md | 2 +- .../consume-packages/Team-Foundation-Build.md | 2 +- .../Creating-Localized-Packages.md | 2 +- docs/create-packages/Creating-a-Package.md | 6 +- .../Source-and-Config-File-Transformations.md | 4 +- docs/install-nuget-client-tools.md | 4 +- docs/reference/Errors-and-Warnings.md | 119 +++++++++--------- docs/reference/nuget-config-file.md | 2 +- docs/tools/cli-ref-list.md | 6 +- docs/tools/ps-ref-install-package.md | 2 - docs/tools/ps-ref-update-package.md | 2 - .../Visual-Studio-Templates.md | 2 +- 16 files changed, 84 insertions(+), 83 deletions(-) diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index 1ee1beab1..bc436bb9e 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -95,5 +95,10 @@ "redirect_url": "/nuget/quickstart/install-and-use-a-package-in-visual-studio", "redirect_document_id": false } + { + "source_path": "/docs/policies/command-line-reference.md", + "redirect_url": "/nuget/tools/nuget-exe-cli-reference", + "redirect_document_id": false + } ] } \ No newline at end of file diff --git a/docs/TOC.md b/docs/TOC.md index 59412c1ee..6e3e5f428 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -112,7 +112,6 @@ ## [Ecosystem](policies/ecosystem.md) ## [Dispute resolution](policies/dispute-resolution.md) ## [Deleting packages](policies/deleting-packages.md) -# [GitHub repositories](https://github.com/NuGet) # Release notes ## [Known Issues](release-notes/known-issues.md) ## [NuGet 4.5 RTM](release-notes/NuGet-4.5-RTM.md) diff --git a/docs/consume-packages/Configuring-NuGet-Behavior.md b/docs/consume-packages/Configuring-NuGet-Behavior.md index 45ebbbcf5..83eb85ffd 100644 --- a/docs/consume-packages/Configuring-NuGet-Behavior.md +++ b/docs/consume-packages/Configuring-NuGet-Behavior.md @@ -16,7 +16,7 @@ ms.reviewer: # Configuring NuGet behavior -NuGet's behavior is driven by the accumulated settings in one or more `NuGet.Config` (XML) files that can exist at project-, user-, and computer-wide levels. A global `NuGetDefaults.Config` file (2.7+) also specifically configures package sources. Settings apply to all commands issued in the CLI, the Package Manager Console, and the Package Manager UI. +NuGet's behavior is driven by the accumulated settings in one or more `NuGet.Config` (XML) files that can exist at project-, user-, and computer-wide levels. A global `NuGetDefaults.Config` file also specifically configures package sources. Settings apply to all commands issued in the CLI, the Package Manager Console, and the Package Manager UI. ## Config file locations and uses @@ -211,7 +211,7 @@ The following table describes where the `NuGetDefaults.Config` file should be st | OS Platform | NuGetDefaults.Config Location | | --- | --- | -| Windows | **NuGet 4.x:** %ProgramFiles(x86)%\NuGet\Config
    **NuGet 2.7 to 3.x:** %PROGRAMDATA%\NuGet | +| Windows | **NuGet 4.x+:** %ProgramFiles(x86)%\NuGet\Config
    **NuGet 3.x and earlier:** %PROGRAMDATA%\NuGet | | Mac/Linux | $XDG_DATA_HOME (typically ~/.local/share)| ### NuGetDefaults.Config settings diff --git a/docs/consume-packages/Finding-and-Choosing-Packages.md b/docs/consume-packages/Finding-and-Choosing-Packages.md index 87802a0dc..34c1a7521 100644 --- a/docs/consume-packages/Finding-and-Choosing-Packages.md +++ b/docs/consume-packages/Finding-and-Choosing-Packages.md @@ -69,12 +69,10 @@ In Visual Studio and when using the NuGet CLI, NuGet does not include pre-releas ### Native C++ packages -NuGet (2.5+) supports native C++ packages can that can be used in C++ projects in Visual Studio. This enables the **Manage NuGet Packages** context-menu command for projects, introduces a `native` target framework, and provides MSBuild integration. +NuGet supports native C++ packages can that can be used in C++ projects in Visual Studio. This enables the **Manage NuGet Packages** context-menu command for projects, introduces a `native` target framework, and provides MSBuild integration. To find native packages on [nuget.org](https://www.nuget.org/packages), search using `tag:native`. Such packages typically provide `.targets` and `.props` files, which NuGet imports automatically when the package is added to a project. -For information on creating native packages, see [Native packages](../create-packages/native-packages.md). - ## Evaluating packages The best way to evaluate the usefulness of a package is to download it and try it out in your code. After all, every highly popular package got started with only a few developers using it, and you might be one of the early adopters! (Note that all packages on nuget.org are routinely scanned for viruses.) diff --git a/docs/consume-packages/Reinstalling-and-Updating-Packages.md b/docs/consume-packages/Reinstalling-and-Updating-Packages.md index cd25bd352..bd48f6645 100644 --- a/docs/consume-packages/Reinstalling-and-Updating-Packages.md +++ b/docs/consume-packages/Reinstalling-and-Updating-Packages.md @@ -37,7 +37,7 @@ In this article: 1. **Broken references after package restore**: If you've opened a project and restored NuGet packages, but still see broken references, try reinstalling each of those packages. 1. **Project is broken due to deleted files**: NuGet does not prevent you from removing items added from packages, so it's easy to inadvertently modify contents installed from a package and break your project. To restore the project, reinstall the affected packages. 1. **Package update broke the project**: If an update to a package breaks a project, the failure is generally caused by a dependency package which may have also been updated. To restore the state of the dependency, reinstall that specific package. -1. **Project retargeting or upgrade**: This can be useful when a project has been retargeted or upgraded and if the package requires reinstallation due to the change in target framework. NuGet 2.7 and later shows a build error in such cases immediately after project retargeting, and subsequent build warnings let you know that the package may need to be reinstalled. For project upgrade, NuGet shows an error in the Project Upgrade Log. +1. **Project retargeting or upgrade**: This can be useful when a project has been retargeted or upgraded and if the package requires reinstallation due to the change in target framework. NuGet shows a build error in such cases immediately after project retargeting, and subsequent build warnings let you know that the package may need to be reinstalled. For project upgrade, NuGet shows an error in the Project Upgrade Log. 1. **Reinstalling a package during its development**: Package authors often need to reinstall the same version of package they're developing to test the behavior. The `Install-Package` command does not provide an option to force a reinstall, so use `Update-Package -reinstall` instead. ## Constraining upgrade versions diff --git a/docs/consume-packages/Team-Foundation-Build.md b/docs/consume-packages/Team-Foundation-Build.md index d125a4f01..fb43b25bb 100644 --- a/docs/consume-packages/Team-Foundation-Build.md +++ b/docs/consume-packages/Team-Foundation-Build.md @@ -37,7 +37,7 @@ This is especially interesting if you are using a [distributed version control]( NuGet has supported [restoring packages](../consume-packages/package-restore.md) as part of the build for a long time now. The previous implementation had a chicken-and-egg problem for packages that want to extend the build process because NuGet restored packages while building the project. However, MSBuild doesn't allow extending the build during the build; one could argue that this an issue in MSBuild but I would argue that this is an inherent problem. Depending on which aspect you need to extend it might be too late to register by the time your package is restored. -The cure to this problem is making sure that packages are restored as the first step in the build process. NuGet 2.7+ makes this easy via a simplified command line: +The cure to this problem is making sure that packages are restored as the first step in the build process: ```cli nuget restore path\to\solution.sln diff --git a/docs/create-packages/Creating-Localized-Packages.md b/docs/create-packages/Creating-Localized-Packages.md index eb2ff5b15..2b2925b7c 100644 --- a/docs/create-packages/Creating-Localized-Packages.md +++ b/docs/create-packages/Creating-Localized-Packages.md @@ -19,7 +19,7 @@ ms.reviewer: There are two ways to create localized versions of a library: 1. Include all localized resources assemblies in a single package. -1. Create separate localized satellite packages (NuGet 1.8 and later), by following a strict set of conventions. +1. Create separate localized satellite packages by following a strict set of conventions. Both methods have their advantages and disadvantages, as described in the following sections. diff --git a/docs/create-packages/Creating-a-Package.md b/docs/create-packages/Creating-a-Package.md index 82003a3ce..4e2f18738 100644 --- a/docs/create-packages/Creating-a-Package.md +++ b/docs/create-packages/Creating-a-Package.md @@ -170,7 +170,7 @@ The folder conventions are as follows: | lib/{tfm} | Assembly (`.dll`), documentation (`.xml`), and symbol (`.pdb`) files for the given Target Framework Moniker (TFM) | Assemblies are added as references; `.xml` and `.pdb` copied into project folders. See [Supporting multiple target frameworks](supporting-multiple-target-frameworks.md) for creating framework target-specific sub-folders. | | runtimes | Architecture-specific assembly (`.dll`), symbol (`.pdb`), and native resource (`.pri`) files | Assemblies are added as references; other files are copied into project folders. See [Supporting multiple target frameworks](supporting-multiple-target-frameworks.md). | | content | Arbitrary files | Contents are copied to the project root. Think of the **content** folder as the root of the target application that ultimately consumes the package. To have the package add an image in the application's */images* folder, place it in the package's *content/images* folder. | -| build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file (NuGet 2.5+) or `project.lock.json` (NuGet 3.x+). | +| build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file or `project.lock.json` (NuGet 3.x+). | | tools | Powershell scripts and programs accessible from the Package Manager Console | The `tools` folder is added to the `PATH` environment variable for the Package Manager Console only (Specifically, *not* to the `PATH` as set for MSBuild when building the project). | Because your folder structure can contain any number of assemblies for any number of target frameworks, this method is necessary when creating packages that support multiple frameworks @@ -345,9 +345,9 @@ Then in the `.nuspec` file, be sure to refer to these files in the `` nod
    ``` -Including MSBuild props and targets in a package is a feature that was only [introduced with the release of NuGet 2.5](../release-notes/NuGet-2.5.md#automatic-import-of-msbuild-targets-and-props-files), therefore it is recommended to add the `minClientVersion="2.5"` attribute to the `metadata` element, to indicate the minimum NuGet client version required to consume the package. +Including MSBuild props and targets in a package was [introduced with NuGet 2.5](../release-notes/NuGet-2.5.md#automatic-import-of-msbuild-targets-and-props-files), therefore it is recommended to add the `minClientVersion="2.5"` attribute to the `metadata` element, to indicate the minimum NuGet client version required to consume the package. -When NuGet 2.5+ installs a package with `\build` files, it adds an MSBuild `` elements in the project file pointing to the `.targets` and `.props` files. (`.props` is added at the top of the project file; `.targets` is added at the bottom.) +When NuGet installs a package with `\build` files, it adds an MSBuild `` elements in the project file pointing to the `.targets` and `.props` files. (`.props` is added at the top of the project file; `.targets` is added at the bottom.) With NuGet 3.x, targets are not added to the project but are instead made available through the `project.lock.json`. diff --git a/docs/create-packages/Source-and-Config-File-Transformations.md b/docs/create-packages/Source-and-Config-File-Transformations.md index 4e14edf95..844c771ce 100644 --- a/docs/create-packages/Source-and-Config-File-Transformations.md +++ b/docs/create-packages/Source-and-Config-File-Transformations.md @@ -56,7 +56,7 @@ The `$rootnamespace$` token is the most commonly used project property; all othe As described in the sections that follow, config file transformations can be done in two ways: - Include `app.config.transform` and `web.config.transform` files in your package's `content` folder, where the `.transform` extension tells NuGet that these files contain the XML to merge with existing config files when the package is installed. When a package is uninstalled, that same XML is removed. -- (NuGet 2.6 and later) Include `app.config.install.xdt` and `web.config.install.xdt` files in your package's `content` folder, using [XDT syntax](https://msdn.microsoft.com/library/dd465326.aspx) to describe the desired changes. With this option you can also include a `.uninstall.xdt` file to reverse changes when the package is removed from a project. +- Include `app.config.install.xdt` and `web.config.install.xdt` files in your package's `content` folder, using [XDT syntax](https://msdn.microsoft.com/library/dd465326.aspx) to describe the desired changes. With this option you can also include a `.uninstall.xdt` file to reverse changes when the package is removed from a project. > [!Note] > Transformations are not applied to `.config` files referenced as a link in Visual Studio. @@ -116,7 +116,7 @@ To see the effect of installing and uninstalling the package, create a new ASP.N ### XDT transforms -With NuGet 2.6 and later, you can modify config files using [XDT syntax](https://msdn.microsoft.com/library/dd465326.aspx). You can also have NuGet replace tokens with [project properties](/dotnet/api/vslangproj.projectproperties?view=visualstudiosdk-2017&viewFallbackFrom=netframework-4.7) by including the property name within `$` delimeters (case-insensitive). +You can modify config files using [XDT syntax](https://msdn.microsoft.com/library/dd465326.aspx). You can also have NuGet replace tokens with [project properties](/dotnet/api/vslangproj.projectproperties?view=visualstudiosdk-2017&viewFallbackFrom=netframework-4.7) by including the property name within `$` delimeters (case-insensitive). For example, the following `app.config.install.xdt` file will insert an `appSettings` element into `app.config` containing the `FullPath`, `FileName`, and `ActiveConfigurationSettings` values from the project: diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index 6a1ddc554..14928b7f4 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -24,7 +24,7 @@ To work with NuGet, as a package consumer or creator, you can use [cross-platfor |:------------- |:-------------|:-----| | [dotnet.exe](#dotnetexe-cli) | Included with the .NET Core SDK and provides core NuGet features on all platforms. | [.NET Core SDK](https://www.microsoft.com/net/download/) | | [nuget.exe](#nugetexe-cli) | Provides all NuGet capabilities on Windows and most features running under [Mono](http://www.mono-project.com/docs/getting-started/install/) on Mac and Linux. | [nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) | -| [Visual Studio](#visual-studio) | Provides NuGet capabilities through the Package Manager UI and Package Manager Console. | [Visual Studio 2017](https://www.visualstudio.com/downloads/) | +| [Visual Studio](#visual-studio) | Provides NuGet capabilities through the Package Manager UI and Package Manager Console; included with .NET-related workloads. | [Visual Studio 2017](https://www.visualstudio.com/downloads/) | The [MSBuild CLI](reference/msbuild-targets.md) also provides the ability to restore and create packages, which is primarily useful on build servers. MSBuild is not otherwise a general-purpose tool for working with NuGet. @@ -63,10 +63,10 @@ Installation: - Visual Studio for Mac: certain NuGet capabilities are built in directly. See [Including a NuGet package in your project](/visualstudio/mac/nuget-walkthrough) for a walkthrough. For other capabilities, use the `dotnet.exe` or `nuget.exe` CLI tools. - Visual Studio on Windows: The **NuGet Package Manager** is included with Visual Studio 2012 and later. The Package Manager provides the [Package Manager UI](tools/package-manager-ui.md) and the [Package Manager Console](tools/package-manager-console.md), through which you can run most NuGet operations. + - The Visual Studio 2017 installer includes the NuGet Package Manager with any workload that employs .NET. To install separately, or to verify that the Package Manager is installed, run the Visual Studio 2017 installer and check the option under **Individual Components > Code tools > NuGet package manager**. - The Package Manager UI and Console are unique to Visual Studio on Windows. They are not available on Visual Studio for Mac at present. - Visual Studio does not automatically include the `nuget.exe` CLI, which must be installed separately as described earlier. - Package Manager Console commands work only within Visual Studio on Windows and not within other PowerShell environments. - - The Visual Studio 2017 installer includes the NuGet Package Manager with any workload that employs .NET. To install separately, or to verify that the Package Manager is installed, run the Visual Studio 2017 installer and check the option under **Individual Components > Code tools > NuGet package manager**. - For Visual Studio 2010 and earlier, install the "NuGet Package Manager for Visual Studio" extension. - NuGet Extensions for Visual Studio 2013 and 2015 can also be downloaded from [https://dist.nuget.org/index.html](https://dist.nuget.org/index.html). - If you'd like to preview upcoming NuGet features, install the [Visual Studio 2017 Preview](https://www.visualstudio.com/vs/preview/), which works side-by-side with stable releases of Visual Studio. To report problems or share ideas for previews, open an issue on the [NuGet GitHub repository](https://github.com/Nuget/Home/issues). diff --git a/docs/reference/Errors-and-Warnings.md b/docs/reference/Errors-and-Warnings.md index 09f66e971..92496a846 100644 --- a/docs/reference/Errors-and-Warnings.md +++ b/docs/reference/Errors-and-Warnings.md @@ -1,5 +1,5 @@ --- -title: NuGet Restore Errors and Warnings Reference | Microsoft Docs +title: NuGet Errors and Warnings Reference | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen @@ -7,7 +7,7 @@ ms.date: 03/06/2018 ms.topic: reference ms.prod: nuget ms.technology: null -description: Complete reference for warnings and errors issued from NuGet during package restore +description: Complete reference for warnings and errors issued from NuGet during various NuGet operations. keywords: NuGet errors, NuGet warnings, diagnostics ms.reviewer: - anangaur @@ -55,9 +55,9 @@ f1_keywords: # Errors and warnings -In NuGet 4.3.0, errors and warnings are numbered as described in this topic and provide detailed information to help you address the issues involved. +In NuGet 4.3.0+, errors and warnings are numbered as described in this topic and provide detailed information to help you address the issues involved. -The errors and warnings listed here are available only with [PackageReference-based](../consume-packages/package-references-in-project-files.md) projects and NuGet 4.3.0. NuGet also honors MSBuild properties to suppress warnings or elevate them to errors. For more information, see [How to: Suppress Compiler Warnings](/visualstudio/ide/how-to-suppress-compiler-warnings) in the Visual Studio documentation. +The errors and warnings listed here are available only with [PackageReference-based](../consume-packages/package-references-in-project-files.md) projects and NuGet 4.3.0+. NuGet also honors MSBuild properties to suppress warnings or elevate them to errors. For more information, see [How to: Suppress Compiler Warnings](/visualstudio/ide/how-to-suppress-compiler-warnings) in the Visual Studio documentation. **Errors** @@ -88,24 +88,24 @@ The errors and warnings listed here are available only with [PackageReference-ba | | | | --- | --- | | **Issue** | The project doesn't contain one or more frameworks. | -| **Common causes** | The project doesn't contain a `TargetFramework` or `TargetFrameworks` property. | | **Example message** | *The project projA does not specify any target frameworks in c:\tmp\projA.csproj* | +| **Solution** | Add a `TargetFramework` or `TargetFrameworks` property to the specified project file. | ### NU1002 | | | | --- | --- | | **Issue** | Invalid combination of inputs along with a CLEAR keyword. | -| **Common causes** | CLEAR may not be combined with other inputs. | | **Example message** | *'CLEAR' cannot be used in conjunction with other values* | +| **Solution** | Use CLEAR by itself and omit all other inputs. | ### NU1003 | | | | --- | --- | | **Issue** | `PackageTargetFallback` and `AssetTargetFallback` provide different behavior for selecting assets and cannot be used together. | -| **Common causes** | Both `PackageTargetFallback` and `AssetTargetFallback` exist in the project. | | **Example message** | *PackageTargetFallback and AssetTargetFallback cannot be used together. Remove PackageTargetFallback(deprecated) references from the project environment.* | +| **Solution** | Remove the deprecated `PackageTargetFallback` element from the project. | ## Missing package and project errors @@ -116,66 +116,67 @@ The errors and warnings listed here are available only with [PackageReference-ba | | | | --- | --- | | **Issue** | A dependency group not be resolved. This is a generic issue for types that are not packages or projects. | -| **Common causes** | The project contains a dependency on an item that doesn't exist. | | **Example message** | *Unable to resolve System.Missing for net45* | +| **Solution** | Open the project file and examine the list of its dependencies. Check that each dependency exists on the package sources you're using, and that the package supports the project's target framework. | ### NU1101 | | | | --- | --- | | **Issue** | The package cannot be found on any sources. | -| **Common causes** | The correct package source is missing or the package identifier is incorrect. | | **Example message** | *Unable to find package System.Missing. No packages exist with this id in source(s): dotnet-core, dotnet-roslyn, nuget.org* | +| **Solution** | Edit the project file or `packages.config` to correct the identifier of the package and/or its version number. Also check that the [NuGet configuration](../consume-packages/Configuring-NuGet-Behavior.md) identifies the package sources your expect to be using. | ### NU1102 | | | | --- | --- | -| **Issue** | The package identifier is found but a version within the specified dependency range cannot be found on any of the sources. | -| **Common causes** | The correct package source is missing or the dependency range is incorrect. The range might be specified by a package and not the user. The user may need to switch to an available version if this package is referenced by the project directly. | +| **Issue** | The package identifier is found but a version within the specified dependency range cannot be found on any of the sources. The range might be specified by a package and not the user. | | **Example message** | *Unable to find package NuGet.Versioning with version (>= 9.0.1)
    - Found 30 version(s) in nuget.org [ Nearest version: 4.0.0 ]
    - Found 10 version(s) in dotnet-buildtools [ Nearest version: 4.0.0-rc-2129 ]
    - Found 9 version(s) in NuGetVolatile [ Nearest version: 3.0.0-beta-00032 ]
    - Found 0 version(s) in dotnet-core
    - Found 0 version(s) in dotnet-roslyn* | +| **Solution** | Edit the project file or `packages.config` to correct the package version. Also check that the [NuGet configuration](../consume-packages/Configuring-NuGet-Behavior.md) identifies the package sources your expect to be using. You may need to change the requeted version if this package is referenced by the project directly. | ### NU1103 | | | | --- | --- | -| **Issue** | No stable versions were found in the dependency range. Pre-release versions were found but are not allowed. | -| **Common causes** | The project specified a stable version for the dependency range. Users need to change the version range to include pre-release versions. | +| **Issue** | The project specified a stable version for the dependency range, but no stable versions were found in that range. Pre-release versions were found but are not allowed. | | **Example message** | *Unable to find a stable package NuGet.Versioning with version (>= 3.0.0)
    - Found 10 version(s) in dotnet-buildtools [ Nearest version: 4.0.0-rc-2129 ]
    - Found 9 version(s) in NuGetVolatile [ Nearest version: 3.0.0-beta-00032 ]
    - Found 0 version(s) in dotnet-core
    - Found 0 version(s) in dotnet-roslyn* | +| **Solution** | Edit the version range in the project file or `packages.config` to include pre-release versions. See [Package versioning](../reference/Package-Versioning.md). | ### NU1104 | | | | --- | --- | | **Issue** | A ProjectReference points to a file that doesn't exist. | -| **Common causes** | The project file is missing from disk or the reference is incorrect. | | **Example message** | *Project reference does not exist 'c:\a.csproj'. Check that the project reference is valid and that the project file exists.* | +| **Solution** | Edit the project file to either correct the path to the referenced project or to remove the reference altogether if it's no longer needed. | ### NU1105 | | | | --- | --- | | **Issue** | The project file exists but no restore information was provided for it. | -| **Common causes** | In Visual Studio this could mean that the project is unloaded. From the command line this could mean that the file is corrupt or that it doesn't contain the custom after imports target needed for restore to read the project. | | **Example message** | *Unable to read project information for 'c:\a.csproj'. The project file may be invalid or missing targets required for restore.* | +| **Solution** | In Visual Studio, the error could mean that the project is unloaded, in which case reload the project. From the command line this could mean that the file is corrupt or that it doesn't contain the custom "after imports" target needed for restore to read the project. Check that the project file is valid and contains an "after imports" target. | ### NU1106 | | | | --- | --- | | **Issue** | Dependency constraints cannot be resolved. | -| **Common causes** | Packages contain dependency on exact versions of a package instead of open-ended ranges. | -| **Example message** | *Unable to satisfy conflicting requests for {id}: {conflict path} Framework: {target graph}* | +| **Example message** | *Unable to satisfy conflicting requests for {id}: {conflict path} Framework: {target graph}* +| **Solution** | Edit the project file or `packages.config` to specify more open-ended ranges for the dependency rather than an exact version. | +| -
    + ### NU1107 (Previously NU1607) | | | | --- | --- | | **Issue** | Unable to resolve dependency constraints between packages. | -| **Common causes** | Packages with dependency constraints on exact versions do not allow other packages to increase the version if needed. | | **Example message** | *Version conflict detected for NuGet.Versioning. Reference the package directly from the project to resolve this issue.
    NuGet.Packaging 3.5.0 -> NuGet.Versioning (= 3.5.0)
    NuGet.Configuration 4.0.0 -> NuGet.Versioning (= 4.0.0)* | +| **Solution** | Packages with dependency constraints on exact versions do not allow other packages to increase the version if needed. Add a reference to the project directly (in the project file or `packages.config`) with the exact version required. | @@ -184,8 +185,8 @@ The errors and warnings listed here are available only with [PackageReference-ba | | | | --- | --- | | **Issue** | A circular dependency was detected. | -| **Common causes** | A package is authored incorrectly. | | **Example message** | *Cycle detected: A -> B -> A* | +| **Solution** | The package is authored incorrectly; contact the package owner to correct the bug. | ## Compatibility errors @@ -195,33 +196,33 @@ The errors and warnings listed here are available only with [PackageReference-ba | | | | --- | --- | -| **Issue** | A dependency project doesn't contain a framework compatible with the current project. | -| **Common causes** | The project's target framework is a higher version than the consuming project. | +| **Issue** | A dependency project doesn't contain a framework compatible with the current project. Typically, the project's target framework is a higher version than the consuming project. | | **Example message** | *Project ServerWeb is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Project ServerWeb supports:
    - netstandard1.6 (.NETStandard,Version=v1.6)
    - netcoreapp1.0 (.NETCoreApp,Version=v1.0)* | +| **Solution** | Change the project's target framework to an equal or lower version than the consuming project. | ### NU1202 | | | | --- | --- | | **Issue** | A dependency package doesn't contain any assets compatible with the project. | -| **Common causes** | The package doesn't support the project's target framework. | | **Example message** | *Package System.ComponentModel.EventBasedAsync 4.0.11 is not compatible with netstandard1.3 (.NETStandard,Version=v1.3). Package System.ComponentModel.EventBasedAsync 4.0.11 supports:
    - monoandroid10 (MonoAndroid,Version=v1.0)
    - monotouch10 (MonoTouch,Version=v1.0)
    - net45 (.NETFramework,Version=v4.5)
    - netcore50 (.NETCore,Version=v5.0)
    - netstandard1.0 (.NETStandard,Version=v1.0)
    - portable-net45+win8+wp8+wpa81 (.NETPortable,Version=v0.0,Profile=Profile259)
    - win8 (Windows,Version=v8.0)
    - wp8 (WindowsPhone,Version=v8.0)
    - wpa81 (WindowsPhoneApp,Version=v8.1)
    - xamarinios10 (Xamarin.iOS,Version=v1.0)
    - xamarinmac20 (Xamarin.Mac,Version=v2.0)
    - xamarintvos10 (Xamarin.TVOS,Version=v1.0)
    - xamarinwatchos10 (Xamarin.WatchOS,Version=v1.0)*| +| **Solution** | Change the project's target framework to one that the package supports. | ### NU1203 | | | | --- | --- | | **Issue** | The package doesn't support the project's `RuntimeIdentifier`. | -| **Common causes** | The package doesn't support the current `RuntimeIdentifier`. Change the `RuntimeIdentifier` values used in the project if needed. | | **Example message** | *System.Example 1.0.0 provides a compile-time reference assembly for a.dll on net461, but there is no compatible run-time assembly.* | +| **Solution** | Change the `RuntimeIdentifier` values used in the project as needed. | ### NU1401 | | | | --- | --- | | **Issue** | The package requires features or frameworks not currently supported by the installed version of NuGet. | -| **Common causes** | Upgrade NuGet to fix the issue. | -| **Example message** | *The 'NuGet.Versioning' package requires NuGet client version '5.0.0' or above, but the current NuGet version is '4.3.0'. To upgrade NuGet, please go to http://docs.nuget.org/consume/installing-nuget.* | +| **Example message** | *The 'NuGet.Versioning' package requires NuGet client version '5.0.0' or above, but the current NuGet version is '4.3.0'.* | +| **Solution** | Install a newer version of NuGet. See [Installing NuGet client tools](../install-nuget-client-tools.md). | ## Invalid input warnings @@ -232,24 +233,24 @@ The errors and warnings listed here are available only with [PackageReference-ba | | | | --- | --- | | **Issue** | The project restore is attempting to operate on was not found. | -| **Common causes** | The project is missing. | | **Example message** | *The folder 'c:\projects\a' does not contain a project to restore.* | +| **Solution** | Run nuget restore in a folder that contains a project. | ### NU1502 | | | | --- | --- | -| **Issue** | `RuntimeSupports` contains an invalid profile. | -| **Common causes** | The supports profile was not found in a `runtime.json` file from the current dependency packages. | +| **Issue** | `RuntimeSupports` contains an invalid profile. Typically, the supports profile was not found in a `runtime.json` file from the current dependency packages.| | **Example message** | *Unknown Compatibility Profile: aaa* | +| **Solution** | Check the `RuntimeSupports` value in your project. | ### NU1503 | | | | --- | --- | | **Issue** | A dependency project doesn't import NuGet's restore targets. This is similar to NU1105 but here the project is skipped and ignored instead of causing all of restore to fail. In complex solutions there are often other types of projects that may not support restore. | -| **Common causes** | This can happen for projects that do not import common props/targets which automatically import restore. If the project doesn't need to be restored this can be ignored. | | **Example message** | *Skipping restore for project 'c:\a.csproj'. The project file may be invalid or missing targets required for restore.* | +| **Solution** | This can happen for projects that do not import common props/targets which automatically import restore. If the project doesn't need to be restored this can be ignored. Otherwise, edit the affected project to add targets for restore. | ## Unexpected package version warnings @@ -260,40 +261,40 @@ The errors and warnings listed here are available only with [PackageReference-ba | | | | --- | --- | | **Issue** | A direct project dependency was bumped to a higher version than the project specified. | -| **Common causes** | Another dependency package required a higher version and bumped the package up. | | **Example message** | *Dependency specified was NuGet.Versioning (>= 3.5.0) but ended up with NuGet.Versioning 4.0.0.* | +| **Solution** | Update the dependency in the project to an appropriate version. | ### NU1602 | | | | --- | --- | | **Issue** | A package dependency is missing a lower bound. This doesn't allow restore to find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. | -| **Common causes** | This is usually a package authoring error. | | **Example message** | *NuGet.Packaging 4.0.0 does not provide an inclusive lower bound for dependency NuGet.Versioning (> 3.5.0). An approximate best match of 3.6.0 was resolved.* | +| **Solution** | This is usually a package authoring error. Contact the package author to resolve the issue. | ### NU1603 | | | | --- | --- | -| **Issue** | A package dependency specified a version that could not be found. A higher version was used instead, which differs from what the package was authored against.

    This means that restore did not find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. | -| **Common causes** | The package sources do not contain the expected lower bound version. If the package expected has not been released then this may be a package authoring error. | +| **Issue** | A package dependency specified a version that could not be found. Typically, the package sources do not contain the expected lower bound version. A higher version was used instead, which differs from what the package was authored against.

    This means that restore did not find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. | | **Example message** | NuGet.Packaging 4.0.0 depends on NuGet.Versioning (>= 4.0.0) but 4.0.0 was not found. An approximate best match of 5.0.0 was resolved. | +| **Solution** | If the package expected has not been released then this may be a package authoring error. Contact the package author to resolve the issue. If the package has been released, then check that it's available on the package sources you're using. If using a private source, you may need to update the package on that feed. | ### NU1604 | | | | --- | --- | | **Issue** | A project dependency doesn't define a lower bound.

    This means that restore did not find the *best match*. Each restore will float downwards trying to find a lower version that can be used. This means that restore goes online to check all sources each time instead of using the packages that already exist in the user package folder. | -| **Common causes** | The project's *PackageReference* *Version* attribute should be updated to include a lower bound. | | **Example message** | *Project dependency NuGet.Versioning (<= 9.0.0) doe not contain an inclusive lower bound. Include a lower bound in the dependency version to ensure consistent restore results.* | +| **Solution** | Update the project's `PackageReference` `Version` attribute to include a lower bound. | ### NU1605 | | | | --- | --- | -| **Issue** | A dependency package specified a version constraint on a higher version of a package than restore ultimately resolved. | -| **Common causes** | Nearest wins when resolving packages. A nearer package in the graph may have overridden a distant package. | +| **Issue** | A dependency package specified a version constraint on a higher version of a package than restore ultimately resolved. That is, because of the "nearest wins" rule when resolving packages, a nearer package in the graph may have overridden a distant package. | | **Example message** | *Detected package downgrade: NuGet.Versioning from 4.0.0 to 3.5.0. Reference the package directly from the project to select a different version.
    NuGet.Packaging 3.5.0 -> NuGet.Versioning 3.5.0
    NuGet.Commands 4.0.0 -> NuGet.Configuration 4.0.0 -> NuGet.Versioning 4.0.0* | +| **Solution** | Add a direct reference to the project for the higher version of the package that you want to use. | ## Resolver conflict warnings @@ -301,9 +302,9 @@ The errors and warnings listed here are available only with [PackageReference-ba | | | | --- | --- | -| **Issue** | A resolve package is higher than a dependency constraint allows. In some cases this is intentional and the warning can be suppressed. | -| **Common causes** | A package referenced directly by a project will override dependency constraints from other packages. | +| **Issue** | A resolved package is higher than a dependency constraint allows. This means that a package referenced directly by a project overrides dependency constraints from other packages.| | **Example message** | *Detected package version outside of dependency constraint: x 1.0.0 requires y (= 1.0.0) but version y 2.0.0 was resolved.* | +| **Solution** | In some cases this is intentional and the warning can be suppressed. Otherwise, change the project's reference to the package to widen its version constraints. | ## Package fallback warnings @@ -311,9 +312,9 @@ The errors and warnings listed here are available only with [PackageReference-ba | | | | --- | --- | -| **Issue** | *PackageTargetFallback/AssetTargetFallback* was used to select assets from a package. This is a warning to let the user know that the assets may not be 100% compatible. | -| **Common causes** | The package doesn't support the project framework. | +| **Issue** | `PackageTargetFallback` / `AssetTargetFallback` was used to select assets from a package. The warning let users know that the assets may not be 100% compatible. | | **Example message** | *Package 'NuGet.Versioning' was restored using 'portable-net45+win8' instead the project target framework 'netstandard1.5'. This package may not be fully compatible with your project.* | +| **Solution** | Change the project's target framework to one that the package supports. | ## Feed warnings @@ -322,8 +323,8 @@ The errors and warnings listed here are available only with [PackageReference-ba | | | | --- | --- | | **Issue** | An error occurred when reading the feed when `IgnoreFailedSources` is set to true, converting it to a non-fatal warning. This could contain any message and is generic. | -| **Common causes** | The source is invalid. | | **Example message** | n/a | +| **Solution** | Edit your configuration to specify valid sources. | ## NuGet internal errors and warnings @@ -334,14 +335,14 @@ The errors and warnings listed here are available only with [PackageReference-ba | | | | --- | --- | | **Issue** | A non specific internal error from NuGet. | -| **Common causes** | Check the logs for more information | +| **Solution** | Check the logs for more information | ### NU1500 | | | | --- | --- | | **Issue** | A non specific internal warning from NuGet. | -| **Common causes** | Check the logs for more information | +| **Solution** | Check the logs for more information | ## Signed packages (creation and verification) @@ -354,49 +355,49 @@ The errors and warnings listed here are available only with [PackageReference-ba | | | | --- | --- | | **Issue** | A non-specific error related to package signing and signed package verification. | -| **Common causes** | Check the logs for more information. | +| **Solution** | Check the logs for more information. | ### NU3001 | | | | --- | --- | -| **Issue** | Invalid input. | -| **Common causes** | Invalid arguments to either the [sign command](../tools/cli-ref-sign.md) or the [verify command](../tools/cli-ref-verify.md). | +| **Issue** | Invalid arguments to either the [sign command](../tools/cli-ref-sign.md) or the [verify command](../tools/cli-ref-verify.md). | +| **Solution** | Check and correct the arguments provided. | ### NU3002 | | | | --- | --- | -| **Issue** | The `-Timestamper` option was not specified. | -| **Common causes** | The `-Timestamper` option was not provided to the [sign command](../tools/cli-ref-sign.md). | -| **Example message** | *The '-Timestamper' option was not provided. The signed package will not be timestamped. To learn more about this option, please visit https://docs.nuget.org/docs/reference/command-line-reference.* | +| **Issue** | The `-Timestamper` option was not specified with the [nuget sign command](../tools/cli-ref-sign.md). | +| **Example message** | *The '-Timestamper' option was not provided. The signed package will not be timestamped.* | +| **Solution** | Specify the `-Timestamper` option with `nuget sign`. | ### NU3004 | | | | --- | --- | -| **Issue** | The package is not signed. | -| **Common causes** | An unsigned package was provided to the [verify command](../tools/cli-ref-verify.md). | +| **Issue** | An unsigned package was provided to the [nuget verify command](../tools/cli-ref-verify.md). | +| **Solution** | Run `nuget verify` with a signed package. See [Sign a package](../create-packages/Sign-a-Package.md). | ### NU3008 | | | | --- | --- | -| **Issue** | The package integrity check failed. | -| **Common causes** | A signed package was tampered with since being signed. | +| **Issue** | The package integrity check failed, meaning that a signed package was tampered with since being signed. | +| **Solution** | Scan your computer with anti-virus software. Then remove the package from the computer, reinstall it, and try the operation again. If the problem persists, contact the owner of the package source and the package owner. | ### NU3018 | | | | --- | --- | -| **Issue** | Certificate chain building failed for the primary signature. | -| **Common causes** | The primary signing certificate is untrusted, revoked, or revocation information for the certificate is unavailable. | +| **Issue** | Certificate chain building failed for the primary signature. The primary signing certificate is untrusted, revoked, or revocation information for the certificate is unavailable. | | **Example message** | *WARNING: NU3018: The revocation function was unable to check revocation for the certificate.* | +| **Solution** | Use a trusted and valid certificate. | ### NU3028 | | | | --- | --- | -| **Issue** | Certificate chain building failed for the timestamp signature. | -| **Common causes** | The timestamp signing certificate is untrusted, revoked, or revocation information for the certificate is unavailable. | -| **Example message** | *WARNING: NU3028: The revocation function was unable to check revocation for the certificate.* | \ No newline at end of file +| **Issue** | Certificate chain building failed for the timestamp signature. The timestamp signing certificate is untrusted, revoked, or revocation information for the certificate is unavailable. | +| **Example message** | *WARNING: NU3028: The revocation function was unable to check revocation for the certificate.* | +| **Solution** | Use a trusted and valid certificate. | \ No newline at end of file diff --git a/docs/reference/nuget-config-file.md b/docs/reference/nuget-config-file.md index e7c0e29a0..92d84ddf5 100644 --- a/docs/reference/nuget-config-file.md +++ b/docs/reference/nuget-config-file.md @@ -83,7 +83,7 @@ Configures whether NuGet does automatic binding redirects when a package is inst ## packageRestore section -*Ignored in 2.7+* +*Ignored in all current versions (2.7+)* Controls package restore during builds. diff --git a/docs/tools/cli-ref-list.md b/docs/tools/cli-ref-list.md index f908ed1bd..8e0235f46 100644 --- a/docs/tools/cli-ref-list.md +++ b/docs/tools/cli-ref-list.md @@ -26,7 +26,7 @@ Displays a list of packages from a given source. If no sources are specified, al nuget list [search terms] [options] ``` -where the optional search terms will filter the displayed list. Search terms are applied to the names of packages, tags, and package descriptions. +where the optional search terms will filter the displayed list. Search terms are applied to the names of packages, tags, and package descriptions just as they are when using them on nuget.org. ## Options @@ -49,5 +49,7 @@ Also see [Environment variables](cli-ref-environment-variables.md) ```cli nuget list -nuget list -Verbosity detailed -AllVersions +nuget list chinese korean -Verbosity detailed + +nuget list couchbase -AllVersions ``` diff --git a/docs/tools/ps-ref-install-package.md b/docs/tools/ps-ref-install-package.md index 9338d7daa..3f603fcb6 100644 --- a/docs/tools/ps-ref-install-package.md +++ b/docs/tools/ps-ref-install-package.md @@ -35,8 +35,6 @@ In NuGet 2.8+, `Install-Package` can downgrade an existing package in your proje Install-Package Microsoft.AspNet.MVC -Version 5.0.0. ``` -NuGet 2.7 and earlier gives an error saying that a newer version is already installed. - ## Parameters | Parameter | Description | diff --git a/docs/tools/ps-ref-update-package.md b/docs/tools/ps-ref-update-package.md index 5e33e6953..5d5ce6024 100644 --- a/docs/tools/ps-ref-update-package.md +++ b/docs/tools/ps-ref-update-package.md @@ -34,8 +34,6 @@ In NuGet 2.8+, `Update-Package` can be used to downgrade an existing package in Update-Package Microsoft.AspNet.MVC -Version 5.0.0. ``` -NuGet 2.7 and earlier gives an error saying that a newer version is already installed. - ## Parameters | Parameter | Description | diff --git a/docs/visual-studio-extensibility/Visual-Studio-Templates.md b/docs/visual-studio-extensibility/Visual-Studio-Templates.md index 963aa39b5..40d302da8 100644 --- a/docs/visual-studio-extensibility/Visual-Studio-Templates.md +++ b/docs/visual-studio-extensibility/Visual-Studio-Templates.md @@ -58,7 +58,7 @@ Steps to include packages in a template: ``` - *(NuGet 2.2.1+)* The wizard supports multiple `` elements to support multiple package sources. Both the `id` and `version` attributes are required, meaning that specific version of a package will be installed even if a newer version is available. This prevents package updates from breaking the template, leaving the choice to update the package to the developer using the template. + The wizard supports multiple `` elements to support multiple package sources. Both the `id` and `version` attributes are required, meaning that specific version of a package will be installed even if a newer version is available. This prevents package updates from breaking the template, leaving the choice to update the package to the developer using the template. 1. Specify the repository where NuGet can find the packages as described in the following sections. From 55ca5f1424cd33086e453621df484c9855275983 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 6 Mar 2018 18:58:04 -0800 Subject: [PATCH 0588/2943] comma --- .openpublishing.redirection.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index bc436bb9e..f641e487c 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -94,11 +94,11 @@ "source_path": "docs/Quickstart/Use-a-Package.md", "redirect_url": "/nuget/quickstart/install-and-use-a-package-in-visual-studio", "redirect_document_id": false - } + }, { "source_path": "/docs/policies/command-line-reference.md", "redirect_url": "/nuget/tools/nuget-exe-cli-reference", "redirect_document_id": false } ] -} \ No newline at end of file +} From 72efd48f8ff48d41aad88b3be5ee25866cfac678 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 6 Mar 2018 19:13:50 -0800 Subject: [PATCH 0589/2943] Fix --- .openpublishing.redirection.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index f641e487c..c0363dc7b 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -96,7 +96,7 @@ "redirect_document_id": false }, { - "source_path": "/docs/policies/command-line-reference.md", + "source_path": "docs/policies/command-line-reference.md", "redirect_url": "/nuget/tools/nuget-exe-cli-reference", "redirect_document_id": false } From 1f5fbd4234fb6a2897f0696e4c00f74d13d6cce0 Mon Sep 17 00:00:00 2001 From: Martin Andreas Ullrich Date: Tue, 6 Mar 2018 19:39:51 -0800 Subject: [PATCH 0590/2943] Update restore target description to clarify that `packages.config` is not supported. --- docs/reference/msbuild-targets.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index 9e0ad9d85..fbbcca9ad 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -219,6 +219,9 @@ msbuild /t:pack /p:NuspecFile= /p:Nu 1. Download packages 1. Write assets file, targets, and props +> [!Note] +> The `restore` MSBuild target only works for projects using `PackageReference` items and does not restore packages referenced using a `packages.config` file. + ### Restore properties Additional restore settings may come from MSBuild properties in the project file. Values can also be set from the command line using the `/p:` switch (see Examples below). From 975071198ff146728c5be1b2b5c1d24b37e88bff Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 7 Mar 2018 09:18:08 -0800 Subject: [PATCH 0591/2943] Typo --- docs/create-packages/Sign-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index d398d701d..4303f309a 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -27,7 +27,7 @@ Signing a package is a process that makes sure the package has not been modified 1. [A code signing certificate](../reference/signed-packages-reference.md#get-a-code-signing-certificate). > [!Warning] -> NuGet.org does not current accept signed packages. You can sign packages for publishing to custom feeds. +> NuGet.org does not currently accept signed packages. You can sign packages for publishing to custom feeds. ## Sign a package From 7cbcf70a13d4cb73312139fe6152d2f6e6472c2c Mon Sep 17 00:00:00 2001 From: Damon Tivel Date: Wed, 7 Mar 2018 10:29:56 -0800 Subject: [PATCH 0592/2943] Fix table --- docs/tools/cli-ref-sign.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/tools/cli-ref-sign.md b/docs/tools/cli-ref-sign.md index b65feb412..ce5435ed5 100644 --- a/docs/tools/cli-ref-sign.md +++ b/docs/tools/cli-ref-sign.md @@ -41,9 +41,7 @@ where `` is one or more `.nupkg` files. This option should be used when specifying the certificate via -CertificateSubjectName or -CertificateFingerprint options. | | CertificateStoreName | Specifies the name of the X.509 certificate store to use to search for the certificate. Defaults to "My", the X.509 certificate store for personal certificates. This option should be used when specifying the certificate via -CertificateSubjectName or -CertificateFingerprint options. | -| CertificateSubjectName | Specifies the subject name of the certificate used to search a local certificate store for the certificate. -The search is a case-insensitive string comparison using the supplied value, which will find all certificates with the subject name containing that string, regardless of other subject values. -The certificate store can be specified by -CertificateStoreName and -CertificateStoreLocation options. | +| CertificateSubjectName | Specifies the subject name of the certificate used to search a local certificate store for the certificate. The search is a case-insensitive string comparison using the supplied value, which will find all certificates with the subject name containing that string, regardless of other subject values. The certificate store can be specified by -CertificateStoreName and -CertificateStoreLocation options. | | ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | | ForceEnglishOutput | Forces nuget.exe to run using an invariant, English-based culture. | | HashAlgorithm | Hash algorithm to be used to sign the package. Defaults to SHA256. | From 197aa60d50c9d17a9743cdef7e4d39edd595e91b Mon Sep 17 00:00:00 2001 From: Damon Tivel Date: Wed, 7 Mar 2018 10:46:56 -0800 Subject: [PATCH 0593/2943] Fix table --- docs/tools/cli-ref-sign.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/tools/cli-ref-sign.md b/docs/tools/cli-ref-sign.md index ce5435ed5..8fb075f4d 100644 --- a/docs/tools/cli-ref-sign.md +++ b/docs/tools/cli-ref-sign.md @@ -37,10 +37,8 @@ where `` is one or more `.nupkg` files. | CertificateFingerprint | Specifies the SHA-1 fingerprint of the certificate used to search a local certificate store for the certificate. | | CertificatePassword | Specifies the certificate password, if needed. If a certificate is password protected but no password is provided, the command will prompt for a password at run time, unless the -NonInteractive option is passed. | | CertificatePath | Specifies the file path to the certificate to be used in signing the package. | -| CertificateStoreLocation | Specifies the name of the X.509 certificate store use to search for the certificate. Defaults to "CurrentUser", the X.509 certificate store used by the current user. -This option should be used when specifying the certificate via -CertificateSubjectName or -CertificateFingerprint options. | -| CertificateStoreName | Specifies the name of the X.509 certificate store to use to search for the certificate. Defaults to "My", the X.509 certificate store for personal certificates. -This option should be used when specifying the certificate via -CertificateSubjectName or -CertificateFingerprint options. | +| CertificateStoreLocation | Specifies the name of the X.509 certificate store use to search for the certificate. Defaults to "CurrentUser", the X.509 certificate store used by the current user. This option should be used when specifying the certificate via -CertificateSubjectName or -CertificateFingerprint options. | +| CertificateStoreName | Specifies the name of the X.509 certificate store to use to search for the certificate. Defaults to "My", the X.509 certificate store for personal certificates. This option should be used when specifying the certificate via -CertificateSubjectName or -CertificateFingerprint options. | | CertificateSubjectName | Specifies the subject name of the certificate used to search a local certificate store for the certificate. The search is a case-insensitive string comparison using the supplied value, which will find all certificates with the subject name containing that string, regardless of other subject values. The certificate store can be specified by -CertificateStoreName and -CertificateStoreLocation options. | | ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | | ForceEnglishOutput | Forces nuget.exe to run using an invariant, English-based culture. | From 08c0758946ca241863cf290a1414422a2652b6b6 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Wed, 7 Mar 2018 15:51:45 -0800 Subject: [PATCH 0594/2943] Create NuGet-4.6-RTM.md --- docs/release-notes/NuGet-4.6-RTM.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/release-notes/NuGet-4.6-RTM.md diff --git a/docs/release-notes/NuGet-4.6-RTM.md b/docs/release-notes/NuGet-4.6-RTM.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/docs/release-notes/NuGet-4.6-RTM.md @@ -0,0 +1 @@ + From 4d0e7e482df091a1722988a7571c0f72fb0a6533 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Wed, 7 Mar 2018 15:52:36 -0800 Subject: [PATCH 0595/2943] Rename NuGet-4.6-RTM.md to NuGet-4.6.md --- docs/release-notes/{NuGet-4.6-RTM.md => NuGet-4.6.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/release-notes/{NuGet-4.6-RTM.md => NuGet-4.6.md} (100%) diff --git a/docs/release-notes/NuGet-4.6-RTM.md b/docs/release-notes/NuGet-4.6.md similarity index 100% rename from docs/release-notes/NuGet-4.6-RTM.md rename to docs/release-notes/NuGet-4.6.md From dcff54491334a58144446bb39bcd530cbf135ffb Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Wed, 7 Mar 2018 16:19:17 -0800 Subject: [PATCH 0596/2943] Update NuGet-4.6.md --- docs/release-notes/NuGet-4.6.md | 721 ++++++++++++++++++++++++++++++++ 1 file changed, 721 insertions(+) diff --git a/docs/release-notes/NuGet-4.6.md b/docs/release-notes/NuGet-4.6.md index 8b1378917..1306810d9 100644 --- a/docs/release-notes/NuGet-4.6.md +++ b/docs/release-notes/NuGet-4.6.md @@ -1 +1,722 @@ +--- +title: NuGet 4.5 RTM Release Notes | Microsoft Docs +author: anangaur +ms.author: anangaur +manager: unnir +ms.date: 3/7/2018 +ms.topic: article +ms.prod: nuget +ms.technology: null +description: Release notes for NuGet 4.6.0 including known issues, bug fixes, added features, and DCRs. +keywords: NuGet 4.6.0 release notes, bug fixes, known issues, added features, DCRs +ms.reviewer: +- karann-msft +- unniravindranathan +- anangaur +--- + +# NuGet 4.6 RTM Release Notes + +[Visual Studio 2017 15.6 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with [NuGet 4.6.0](https://dist.nuget.org/win-x86-commandline/v4.6.0/nuget.exe). + +## Summary: What's New in this Release +* We have added support for [signing packages](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package). +* Visual Studio 2017 and nuget.exe now verifies package integrity before installing, restoring packages for [signed packages](https://docs.microsoft.com/en-us/nuget/reference/signed-packages-reference). +* We have improved performance of successive restores. +* + +## Known issues +### Issues with .NET Standard 2.0 with .NET Framework & NuGet + +.NET Standard & its tooling was designed such that projects targeting .NET Framework 4.6.1 can consume NuGet packages & projects targeting .NET Standard 2.0 or earlier. [This document](https://github.com/dotnet/standard/issues/481) summarizes the issues around that scenario, the plan for addressing them, and workarounds you can deploy with today's state of the tooling. + +### Retargeting target framework version may lead to incomplete Intellisense +#### Issue +Retargeting target framework version may lead to incomplete Intellisense, in Visual Studio. This happens when you are using PackageReferences as the package manager format. [NuGet#4216](https://github.com/NuGet/Home/issues/4216) +#### Workaround +Do a manual restore. + +### A package in a .NET Core project that contains an assembly with an invalid signature, can trigger an infinite restore loop + +#### Issue + +Occasionally, when you use a package that contains an assembly with an invalid signature or when the package version is set with 'DateTime' ticker, it causes the package auto-restore to run in an infinite loop [dotnet/project-system#1457](https://github.com/dotnet/project-system/issues/1457). + +#### Workaround + +There is no workaround at this time. + +## Issues fixed in NuGet 4.5 RTM timeframe + +For issues fixed in NuGet 4.4 RTM, please refer to [NuGet 4.4 RTM Release Notes](../release-notes/nuget-4.4-RTM.md) +#4.6 Release Notes + +[Issues List](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.6") + +**Bug:** + +* Signing: sign command fails to find untrusted self-issued certificate in certificate store - [#6616](https://github.com/NuGet/Home/issues/6616) + +* Signing: random timestamping failures - [#6587](https://github.com/NuGet/Home/issues/6587) + +* Test: fix root cause of test flakiness - [#6552](https://github.com/NuGet/Home/issues/6552) + +* Signing: incorrect GeneralizedTime handling - [#6549](https://github.com/NuGet/Home/issues/6549) + +* Verification fails for signature with different algorithm than timestamp - [#6539](https://github.com/NuGet/Home/issues/6539) + +* Assetsfile comparison issues lead to needless rewriting of the assets => triggering more design time builds - [#6491](https://github.com/NuGet/Home/issues/6491) + +* VS2017 publish: project.assets.json doesn't have a target for .NETCoreApp,Version=v1.1 - [#6482](https://github.com/NuGet/Home/issues/6482) + +* Signing: X509ChainElement.Certificate not disposed immediately after use - [#6464](https://github.com/NuGet/Home/issues/6464) + +* Timestamping with Safe Creative TSA errors with null reference exception - [#6463](https://github.com/NuGet/Home/issues/6463) + +* [Test Failure][Signing] The error doesn’t make sense when timestamp signing certificate does not satisfy certificate requirements - [#6451](https://github.com/NuGet/Home/issues/6451) + +* Signing: guarantee that GetPrimarySignatureCertificates(...)/GetPrimarySignatureTimestampSignatureCertificates(...) returns a non-empty list or throws - [#6447](https://github.com/NuGet/Home/issues/6447) + +* Cannot find 'vswhere' via https://api.nuget.org/v3/index.json/FindPackagesById()?id='vswhere' - [#6332](https://github.com/NuGet/Home/issues/6332) + +* Push to local folder leaves nupkg locked - [#6325](https://github.com/NuGet/Home/issues/6325) + +* Ensure NuGetv3LocalRepository is updated after package installs - [#6316](https://github.com/NuGet/Home/issues/6316) + +* Restore evaluates child projects using the parent project target framework - [#6311](https://github.com/NuGet/Home/issues/6311) + +* Signing: verify command's CertificateFingerprint not enforced - [#6304](https://github.com/NuGet/Home/issues/6304) + +* contentFiles any doesn't work with PackageReference-style projects - [#6287](https://github.com/NuGet/Home/issues/6287) + +* Package signatures can be invalid for certain packages packed with a different ZIP spec - [#6272](https://github.com/NuGet/Home/issues/6272) + +* mssign command doesn't produce same logging as sign command - [#6263](https://github.com/NuGet/Home/issues/6263) + +* PackageIdentity.ToString throws NullReferenceException if version is null - [#6235](https://github.com/NuGet/Home/issues/6235) + +* Downloading Nuget.exe from dist.nuget.org blocked - [#6191](https://github.com/NuGet/Home/issues/6191) + +* disabledPackageSources seems not working - [#6155](https://github.com/NuGet/Home/issues/6155) + +* Documentation URL forwards user to incorrect location in docs. (from NuGet settings window on VS) - [#6100](https://github.com/NuGet/Home/issues/6100) + +* Restore is skipped from VS when two projects are in the same folder - [#6038](https://github.com/NuGet/Home/issues/6038) + +* Do not reformat web.config when running NuGet Update-Package command - [#6018](https://github.com/NuGet/Home/issues/6018) + +* NuGet.exe replaces '+' with '%2B' in assembly name - [#5956](https://github.com/NuGet/Home/issues/5956) + +* VS NuGet writes absolute paths into project files under specific circumstances - [#5888](https://github.com/NuGet/Home/issues/5888) + +* dotnet restore with multiple sources crashes - [#5817](https://github.com/NuGet/Home/issues/5817) + +* Update and Uninstall not working for projects with multiple TargetFrameworks - [#5472](https://github.com/NuGet/Home/issues/5472) + +* Visual Studio not using packageCredentials from NuGetDefaults.config - [#4953](https://github.com/NuGet/Home/issues/4953) + +* Pack should re-evaluate project versions to allow git versioning - [#4790](https://github.com/NuGet/Home/issues/4790) + +* Update-Package - Error - [#4690](https://github.com/NuGet/Home/issues/4690) + +* dotnet nuget push times out after 5 minutes when a symbol package is present - [#4672](https://github.com/NuGet/Home/issues/4672) + +* dotnet restore with basic authentication failing - [#4668](https://github.com/NuGet/Home/issues/4668) + +* Package Search is nonsensical - [#4614](https://github.com/NuGet/Home/issues/4614) + +* Still gets lots of hard to understand errors when you install an incompatible package - [#4555](https://github.com/NuGet/Home/issues/4555) + +* TemplateWizard and PackageReferences - [#4549](https://github.com/NuGet/Home/issues/4549) + +* Package-delivered props files ignored when MSBuild.exe is run from outside a Developer Command Prompt - [#4530](https://github.com/NuGet/Home/issues/4530) + +* [Watson] dev11nonfatalerror: DEV11NONFATAL_CLR_EXCEPTION_System.NullReferenceException_80004003_NuGet.PackageManagement.VisualStudio.dll!Unknown - [#4485](https://github.com/NuGet/Home/issues/4485) + +* Poor error message when referencing .NET Standard Library that is not applicable to project - [#4423](https://github.com/NuGet/Home/issues/4423) + +* dotnet add package fails for package targeting portable profile with little guidance - [#4349](https://github.com/NuGet/Home/issues/4349) + +* dotnet pack - version suffix missing from ProjectReference - [#4337](https://github.com/NuGet/Home/issues/4337) + +* Build errors and VS crash with .NET Core template - [#3973](https://github.com/NuGet/Home/issues/3973) + +* Restore logs are lost and not persisted in the output window - [#3884](https://github.com/NuGet/Home/issues/3884) + +* Remove dependency on ImportsAfter for CrossTargeting - [#3860](https://github.com/NuGet/Home/issues/3860) + +* `dotnet restore` fails with private feed configured in local system account - [#3839](https://github.com/NuGet/Home/issues/3839) + +* NuGet operations can hang [Customer report] - [#3823](https://github.com/NuGet/Home/issues/3823) + +* For UWP Project, improve restore error message - [#3717](https://github.com/NuGet/Home/issues/3717) + +* dotnet pack3 always adds exclude="Build,Analyzers" to .nuspec - [#3697](https://github.com/NuGet/Home/issues/3697) + +* Some packages can't be installed on multiple projects within a solution - [#3695](https://github.com/NuGet/Home/issues/3695) + +* Installing NuGet packages doesn't work when the Package source is "All" - [#3694](https://github.com/NuGet/Home/issues/3694) + +* VS Package Management Console won't work on Windows Server 2016 (missing Powershell-V2 - [#3682](https://github.com/NuGet/Home/issues/3682) + +* Unable to load the service index for source https:* - [#3681](https://github.com/NuGet/Home/issues/3681) + +* nuget.exe list -allversions doesn't work - [#3441](https://github.com/NuGet/Home/issues/3441) + +* Nuspec file src attribute is platform specific? - [#2989](https://github.com/NuGet/Home/issues/2989) + +* Misleading dependency resolution error message - [#2984](https://github.com/NuGet/Home/issues/2984) + +* NuGet Package Manager GUI Install Button - [#2979](https://github.com/NuGet/Home/issues/2979) + +* nuget pack fails when MSBuild version resolved to MSBuild 3.5 - [#2949](https://github.com/NuGet/Home/issues/2949) + +* Establish consistent detail in issues/pr/commits - [#2948](https://github.com/NuGet/Home/issues/2948) + +* NuGet failed to build due to hardcoded ILMerge path - [#2946](https://github.com/NuGet/Home/issues/2946) + +* Cannot complete dotnet restore because some requests timed out after 100000ms - [#2945](https://github.com/NuGet/Home/issues/2945) + +* nuget.exe restore doesn't produce .props and .targets files for .msbuildproj (regression in v3.3.0-3.4.4 upgrade) - [#2921](https://github.com/NuGet/Home/issues/2921) + +* UI delay when updating a NuGet package with XAML file open - [#2878](https://github.com/NuGet/Home/issues/2878) + +* nuget solution update will only update projects under sln dir - [#2875](https://github.com/NuGet/Home/issues/2875) + +* NuGet Install Fails with Error: Failed to add reference to 'System.Collections' - [#2840](https://github.com/NuGet/Home/issues/2840) + +* Can not push symbols nuget package - [#2837](https://github.com/NuGet/Home/issues/2837) + +* WebSite project from IIS fails with illegal characters in path - [#2798](https://github.com/NuGet/Home/issues/2798) + +* More helpful error when installing a package targeting the wrong framework via VS UI - [#2789](https://github.com/NuGet/Home/issues/2789) + +* Unable to restore packages in web SITE project using NuGet 3 restore packages with whole solution (commandline) - [#2783](https://github.com/NuGet/Home/issues/2783) + +* VS Package Manager: Uninstall of package uses the wrong line breaks when editing project.json - [#2777](https://github.com/NuGet/Home/issues/2777) + +* Package Manager UI ScrollBar scrolls to the top if the down arrow key is kept pressed to scroll down the list of packages - [#2756](https://github.com/NuGet/Home/issues/2756) + +* Dev15: Got "The extension is not installable on any currently installed products" during installing preview vsix 3.4.2 - [#2737](https://github.com/NuGet/Home/issues/2737) + +* Nuget add hangs on CentOS - [#2708](https://github.com/NuGet/Home/issues/2708) + +* Restore with packagesavemode -nupkg fails for json.net - [#2706](https://github.com/NuGet/Home/issues/2706) + +* Package Manager filter not available in vs output window for restore command - [#2704](https://github.com/NuGet/Home/issues/2704) + +* NuGet package manager does not respect VS language settings - [#2689](https://github.com/NuGet/Home/issues/2689) + +* Nuget.exe fails when it is denied access to %APPDATA%\Nuget\NuGet.config - [#2676](https://github.com/NuGet/Home/issues/2676) + +* nuget setapikey outputs the secure apikey - [#2659](https://github.com/NuGet/Home/issues/2659) + +* Making pre-release packages using the new -Suffix argument - [#2652](https://github.com/NuGet/Home/issues/2652) + +* "nuget.exe delete" doesn't delete a local package folder after the last version is deleted - [#2624](https://github.com/NuGet/Home/issues/2624) + +* VS2015 listing give package parameter error - [#2608](https://github.com/NuGet/Home/issues/2608) + +* nuget.exe sources update outputs success when no source parameter provided - [#2513](https://github.com/NuGet/Home/issues/2513) + +* nuget.exe install should no-op install when using relative output directory - [#2511](https://github.com/NuGet/Home/issues/2511) + +* "nuget sources remove -name sourceName" leaves behind credentials in local config - [#2501](https://github.com/NuGet/Home/issues/2501) + +* nuget feed returning an unlisted package for NServiceBus - [#2494](https://github.com/NuGet/Home/issues/2494) + +* NuGet install installing delisted package if it is highest version - [#2384](https://github.com/NuGet/Home/issues/2384) + +* Duplicate XmlUtility in Packaging, Configuration, ProjectManagement, need to merge them into one utility - [#2318](https://github.com/NuGet/Home/issues/2318) + +* dotnet restore failed when "Project.json" file name is captialized - [#2306](https://github.com/NuGet/Home/issues/2306) + +* Potential blocking thread calls in PackageManagerControl - [#2252](https://github.com/NuGet/Home/issues/2252) + +* RDP from a laptop which is 1600 resolution to machine at 150%, Package Manager hangs - [#2251](https://github.com/NuGet/Home/issues/2251) + +* build.ps1 almost always fails with System Error 2 or more - [#2248](https://github.com/NuGet/Home/issues/2248) + +* Guard rails does not include all file types - [#2247](https://github.com/NuGet/Home/issues/2247) + +* Guard rails should include framework assemblies as runtime assets - [#2246](https://github.com/NuGet/Home/issues/2246) + +* update command doesn't remove old element from csproj - [#2234](https://github.com/NuGet/Home/issues/2234) + +* When you have no enabled sources Browse tab should be always clear. - [#2227](https://github.com/NuGet/Home/issues/2227) + +* When uninstalling NuGet without selecting "Remove dependencies" no errors will show up in error window - [#2219](https://github.com/NuGet/Home/issues/2219) + +* Nuget 3.4.0.675 PackageSaveMode doesn’t save nuspec when specified - [#2218](https://github.com/NuGet/Home/issues/2218) + +* UI Needs "Upgrade NuGet" button when client version does not meet requirements - [#2212](https://github.com/NuGet/Home/issues/2212) + +* Strange error description when updating package - [#1996](https://github.com/NuGet/Home/issues/1996) + +* VS 2015 Consolidate feature at solution level UX - [#1987](https://github.com/NuGet/Home/issues/1987) + +* version list is not populated when the installed package version not available from source - [#1974](https://github.com/NuGet/Home/issues/1974) + +* "Nuget pack" does not find ".nuget\nuget.config" - [#1966](https://github.com/NuGet/Home/issues/1966) + +* GetInstalledPackages() doesn't support C++ - [#1965](https://github.com/NuGet/Home/issues/1965) + +* Can't update or install package: An item with the same key has already been added - [#1943](https://github.com/NuGet/Home/issues/1943) + +* Fail to add xunit.runner.msbuild nuget package if project.json is used - [#1936](https://github.com/NuGet/Home/issues/1936) + +* Update command yields null projectFramework. - [#1874](https://github.com/NuGet/Home/issues/1874) + +* Downloaded NuGet Packages are missing the DLL's - [#1842](https://github.com/NuGet/Home/issues/1842) + +* Update-Package command removes dependency details - [#1832](https://github.com/NuGet/Home/issues/1832) + +* Support space in paths - [#1818](https://github.com/NuGet/Home/issues/1818) + +* Leading 0 in Package Revision Number Fails to Restore in VSTS - [#1800](https://github.com/NuGet/Home/issues/1800) + +* AssemblyInformationalVersion not taken into account - [#1794](https://github.com/NuGet/Home/issues/1794) + +* Add diagnostics to nuget restore failures when msbuild fails to resolve P2P - [#1786](https://github.com/NuGet/Home/issues/1786) + +* -solutiondirectory flag has no effect in nuget restore command - [#1781](https://github.com/NuGet/Home/issues/1781) + +* nuget.exe updating a single package produces messages saying that multiple packages are being resolved - [#1776](https://github.com/NuGet/Home/issues/1776) + +* Installed packages are missing information based on source selected - [#1762](https://github.com/NuGet/Home/issues/1762) + +* -Tool packaging rules not propagated to referenced packages - [#1753](https://github.com/NuGet/Home/issues/1753) + +* nuget.exe add and init commands ignore invalid packages on the destination. Should it overwrite? - [#1738](https://github.com/NuGet/Home/issues/1738) + +* NuGet should format whitespace in project.json per VS behavior - [#1731](https://github.com/NuGet/Home/issues/1731) + +* C#: creating Windows Universal project shows 'Progress in this operation is taking a long time...' message - [#1718](https://github.com/NuGet/Home/issues/1718) + +* Tools-only package can not be installed - [#1710](https://github.com/NuGet/Home/issues/1710) + +* No warning is logged when the directory with the packages.config contains more than 1 project file - [#1706](https://github.com/NuGet/Home/issues/1706) + +* When NuGet UI re-opens Visual Studio, it opens incorrect solution - [#1702](https://github.com/NuGet/Home/issues/1702) + +* UI: we should use the same text for the install/update button - [#1683](https://github.com/NuGet/Home/issues/1683) + +* After powershell command is finished in PMC, the UI won't refresh to reflect the changes. - [#1673](https://github.com/NuGet/Home/issues/1673) + +* On a UAP project, installing by typing wrong casing for package id fails from a folder based package source - [#1672](https://github.com/NuGet/Home/issues/1672) + +* Update not working correctly for NuGet.exe (2.8.6) with -Safe option - [#1651](https://github.com/NuGet/Home/issues/1651) + +* nuget.exe pack of folder with [Content_Types].xml folder in it crashes - [#1641](https://github.com/NuGet/Home/issues/1641) + +* Running nuget.exe update -Verbosity Quiet does not display user prompts but expects an answer anyway - [#1639](https://github.com/NuGet/Home/issues/1639) + +* Command line restore spits a wrong message about enabling restore in visual studio - [#1619](https://github.com/NuGet/Home/issues/1619) + +* Investigate 3 functional test failures for project K - [#1616](https://github.com/NuGet/Home/issues/1616) + +* Failed msbuild restore needs a reason - [#1606](https://github.com/NuGet/Home/issues/1606) + +* NuGetFramework.Version isn't normalized - [#1600](https://github.com/NuGet/Home/issues/1600) + +* Binding redirect was added to one project while install-package was called on another - [#1582](https://github.com/NuGet/Home/issues/1582) + +* nuget fails to install/update/remove when there is a reference with an Alias - [#1580](https://github.com/NuGet/Home/issues/1580) + +* NuGet 2 mirror command does not replace missing packages - [#1574](https://github.com/NuGet/Home/issues/1574) + +* Follow up to #1397 - [#1569](https://github.com/NuGet/Home/issues/1569) + +* Need to refactor NuGetPackageManagerTests to avoid code redundancy - [#1564](https://github.com/NuGet/Home/issues/1564) + +* nuget.exe install jQuery -Version 5.0.0 says 'Package 'jQuery' does not exist'. - [#1554](https://github.com/NuGet/Home/issues/1554) + +* ConcurrencyUtilities.FilePathToLockName in NuGet.Packaging issue with long paths? - [#1549](https://github.com/NuGet/Home/issues/1549) + +* Dependency range lower bound incorrect in VS - [#1511](https://github.com/NuGet/Home/issues/1511) + +* Push doesn't use apiKey for service index when talking to PackagePublish/2.0.0 service - [#1502](https://github.com/NuGet/Home/issues/1502) + +* VS2015 Enterprise nuget version 3.2 fails on metadata download - [#1474](https://github.com/NuGet/Home/issues/1474) + +* Improve error message when uninstall encounters locked files - [#1458](https://github.com/NuGet/Home/issues/1458) + +* NuGet.Xplat - init and add commands - [#1455](https://github.com/NuGet/Home/issues/1455) + +* UpdateAll Cancellation implementation - [#1439](https://github.com/NuGet/Home/issues/1439) + +* Nuget Restore Circular Dependency - [#1428](https://github.com/NuGet/Home/issues/1428) + +* When %TEMP% and %TMP% env vars overridden to a non-existing folder nuget fails - [#1415](https://github.com/NuGet/Home/issues/1415) + +* Search box cannot be accessed with Ctrl+E hotkey after search - [#1404](https://github.com/NuGet/Home/issues/1404) + +* Issue during package creation in 'content' folder - [#1388](https://github.com/NuGet/Home/issues/1388) + +* NuGet fails to decompress NuGet packages, which are created with a newer ZIP version - [#1381](https://github.com/NuGet/Home/issues/1381) + +* When offline or bad package source, build of UWP shows confusing error when packages are missing - [#1363](https://github.com/NuGet/Home/issues/1363) + +* Pressing enter in the console does nothing - [#1329](https://github.com/NuGet/Home/issues/1329) + +* nuget.exe adding a source with -Config does not update the file unless a username and password is used - [#1315](https://github.com/NuGet/Home/issues/1315) + +* nuget.exe sources Add will always add nuget.org - [#1314](https://github.com/NuGet/Home/issues/1314) + +* When package failed to install we are getting an exception thrown to the Power Shell console instead of getting an error msg what meant wrong - [#1310](https://github.com/NuGet/Home/issues/1310) + +* automatic package restore to run init.ps1 scripts after restoring - [#1292](https://github.com/NuGet/Home/issues/1292) + +* Wrong markdown for usage examples - [#1285](https://github.com/NuGet/Home/issues/1285) + +* Intermittent failure of NuGet Functional Test UninstallPackageRemoveImportStatement - [#1278](https://github.com/NuGet/Home/issues/1278) + +* NuGet UI at Solution Level for large solutions is very slow - [#1262](https://github.com/NuGet/Home/issues/1262) + +* Project "Default" is not found - [#1215](https://github.com/NuGet/Home/issues/1215) + +* After saving a solution, 'Restore' button does not show up on Package Manager Console - [#1207](https://github.com/NuGet/Home/issues/1207) + +* Files aren't added to VS if they exist before installing a package - [#1190](https://github.com/NuGet/Home/issues/1190) + +* Package restore should fail if a package with runtime-specific assets doesn't provide an asset - [#1173](https://github.com/NuGet/Home/issues/1173) + +* Intellisense in package manager console in visual studio 2015 is broken - [#1137](https://github.com/NuGet/Home/issues/1137) + +* Cannot install managed packages into a CLI project - [#1121](https://github.com/NuGet/Home/issues/1121) + +* Support nuget.exe install project.json - [#1045](https://github.com/NuGet/Home/issues/1045) + +* Uninstalling Win2D from a UWP c++ project hangs - [#1030](https://github.com/NuGet/Home/issues/1030) + +* .props and .targets from build folder in NuGet package not imported after package restore in VS - [#982](https://github.com/NuGet/Home/issues/982) + +* Can't install a package when there are some leftovers in the packages folder - [#492](https://github.com/NuGet/Home/issues/492) + +* Saved a nuspec file with wrong reference whitelist when PackageSaveMode = nuspec - [#434](https://github.com/NuGet/Home/issues/434) + +* Completely remove any public methods related to legacy or msbuild based package restore from PackageManagement and Visual Studio extension - [#365](https://github.com/NuGet/Home/issues/365) + +* NuGet.PackageManagement: Functional test failure. UninstallPackageHonorPackageReferencesAccordingToProjectFramework - [#164](https://github.com/NuGet/Home/issues/164) + +* NuGet.PackageManagement: Use DownloadResource.Progress event - [#50](https://github.com/NuGet/Home/issues/50) + +* NuGet.PackageManagement: Should not default null for sourceRepositories to mean all the enabled repositories in SourceRepositoryProvider. Preferable to have function overloads or default values - [#45](https://github.com/NuGet/Home/issues/45) + +**Spec:** + +* [Spec] Changes to nuget config file and settingsto allow custom hierarchy/scope - [#6420](https://github.com/NuGet/Home/issues/6420) + +* [Spec] Schema changes to nuget config file for storing trusted repositories - [#6419](https://github.com/NuGet/Home/issues/6419) + +**Docs:** + +* Exclude feature doesn't work when using PackageReferences and .NetStandard - [#6399](https://github.com/NuGet/Home/issues/6399) + +* [NuGet Packaging] Add Visual Studio Template for NuGet package creation (it's 2018 guys) - [#6391](https://github.com/NuGet/Home/issues/6391) + +* Improve Support for Custom / Wrapped NuGet Clients - [#6161](https://github.com/NuGet/Home/issues/6161) + +* Documentation URL forwards user to incorrect location in docs. (from NuGet settings window on VS) - [#6100](https://github.com/NuGet/Home/issues/6100) + +* NuGet code API - [#5318](https://github.com/NuGet/Home/issues/5318) + +* Investigate result of XProj to CSProj migration for nuget.exe - [#3943](https://github.com/NuGet/Home/issues/3943) + +* Need a way to test installation of packages via command line - [#2905](https://github.com/NuGet/Home/issues/2905) + +* Document with sample building a manage package for all worlds - [#1160](https://github.com/NuGet/Home/issues/1160) + +* Improved target documentation - [#358](https://github.com/NuGet/Home/issues/358) + +* [Verify/Document] Native (conditional) dependency support. - [#300](https://github.com/NuGet/Home/issues/300) + +**Feature:** + +* dotnet-nuget install - [#6375](https://github.com/NuGet/Home/issues/6375) + +* Package signing scenarios should be covered by end to end tests - [#6275](https://github.com/NuGet/Home/issues/6275) + +* Add additional tests around Timestamp verification involving a mock TSA - [#6239](https://github.com/NuGet/Home/issues/6239) + +* Higher priority for search results of reserved prefixes - [#6142](https://github.com/NuGet/Home/issues/6142) + +* Feature Request: config file transform redirect configuration - [#6126](https://github.com/NuGet/Home/issues/6126) + +* Package Signing Telemetry - [#6075](https://github.com/NuGet/Home/issues/6075) + +* Create one mega dll for NuGet and add ngen for hot paths - [#6057](https://github.com/NuGet/Home/issues/6057) + +* Feature Request: Add response file support to NuGet.exe - [#5891](https://github.com/NuGet/Home/issues/5891) + +* Add 'list' command to NuGet.CommandLine.XPlat - [#5402](https://github.com/NuGet/Home/issues/5402) + +* Package should store which source it is installed from - [#4666](https://github.com/NuGet/Home/issues/4666) + +* MSBuildTool that depends on DotNetCliTool - [#4653](https://github.com/NuGet/Home/issues/4653) + +* Support Restore for Open Folder in VS for solution or project - [#4458](https://github.com/NuGet/Home/issues/4458) + +* Enable updating packagereference versions from the command line (for csproj) - [#4358](https://github.com/NuGet/Home/issues/4358) + +* Run init.ps1 when nuget package is installed/updated via command-line - [#4318](https://github.com/NuGet/Home/issues/4318) + +* Is posible to use ApiKey when restore nugets - [#4049](https://github.com/NuGet/Home/issues/4049) + +* Lightweight Solution support for Package Manager Console - [#3989](https://github.com/NuGet/Home/issues/3989) + +* Lightweight Solution support for Manage NuGet Packages for Solution UI - [#3988](https://github.com/NuGet/Home/issues/3988) + +* Auto-Restore for packages.config - [#3951](https://github.com/NuGet/Home/issues/3951) + +* NuGet.exe support for wave3 for api keys improvements - [#3771](https://github.com/NuGet/Home/issues/3771) + +* Reconfigure command line tests to test dotnet nuget commands - [#3727](https://github.com/NuGet/Home/issues/3727) + +* As part of CI, propagate nuget source to local source server - [#3693](https://github.com/NuGet/Home/issues/3693) + +* DotNetCliToolsReference using deps.json - [#3673](https://github.com/NuGet/Home/issues/3673) + +* Need to determine API for getting "type: build" dependency information in MSBuild - [#3507](https://github.com/NuGet/Home/issues/3507) + +* Command line - list outdated packages, similar to leiningen's "lein ancient" command - [#3415](https://github.com/NuGet/Home/issues/3415) + +* NuGet Upgrader: From packages.config to project.json - [#2935](https://github.com/NuGet/Home/issues/2935) + +* Enable Vs-Feedback to gather nuget information about a project. - [#2927](https://github.com/NuGet/Home/issues/2927) + +* Enable installation of packages with type build or platform. - [#2912](https://github.com/NuGet/Home/issues/2912) + +* Excluding specific referenced projects when using IncludeReferencedProjects - [#2897](https://github.com/NuGet/Home/issues/2897) + +* Feature Request: Select multiple packages to be installed in VS add-in - [#2872](https://github.com/NuGet/Home/issues/2872) + +* "Connect to NuGet Source" via Powershell or Protocol? - [#2703](https://github.com/NuGet/Home/issues/2703) + +* Improvements to Browse in Package Manager UI (Multi Install/Uninstall) - [#2584](https://github.com/NuGet/Home/issues/2584) + +* `dotnet restore` should have an option for the runtimes to restore - [#2534](https://github.com/NuGet/Home/issues/2534) + +* Add support for vector images in the Nuspec iconUrl reference - [#2519](https://github.com/NuGet/Home/issues/2519) + +* Add perf tests for more scenarios such as update and package restore - [#2211](https://github.com/NuGet/Home/issues/2211) + +* Verified Authors for NuGet.org and packages - [#1882](https://github.com/NuGet/Home/issues/1882) + +* Add ability to "-Reinstall" a package from the NuGet Package Manage UI - [#1812](https://github.com/NuGet/Home/issues/1812) + +* Network request failure failed restore when all packages were present - [#1810](https://github.com/NuGet/Home/issues/1810) + +* allow nuget validation rules to be disabled (-disablerules) - [#1741](https://github.com/NuGet/Home/issues/1741) + +* Feature Request: Add 'Browse' button to UI - [#1698](https://github.com/NuGet/Home/issues/1698) + +* Request: integrated into VS "Add Reference" dialog - [#1679](https://github.com/NuGet/Home/issues/1679) + +* Request: allow "delete" in SolnExplorer to remove NuGet packages - [#1678](https://github.com/NuGet/Home/issues/1678) + +* Prerelease Setting Should be Set Per Package Source - [#1666](https://github.com/NuGet/Home/issues/1666) + +* Show infobar with links to open readme files when installing packages - [#1662](https://github.com/NuGet/Home/issues/1662) + +* Nuget restore needs to support batch restoring for larger projects - [#1653](https://github.com/NuGet/Home/issues/1653) + +* Support .NET packages for C++/CLI - [#1645](https://github.com/NuGet/Home/issues/1645) + +* Shopping Cart/Ability to pin packages in search, and install them in one go - [#1632](https://github.com/NuGet/Home/issues/1632) + +* Package redirects - [#1590](https://github.com/NuGet/Home/issues/1590) + +* Prevent installing multiple versions of a package in the solution - [#1579](https://github.com/NuGet/Home/issues/1579) + +* Add sym link feature for nupkgs - [#1558](https://github.com/NuGet/Home/issues/1558) + +* Improve embeddeding NuGet packages as part of a template/vsix - [#1530](https://github.com/NuGet/Home/issues/1530) + +* Disable symbol package upload - [#1524](https://github.com/NuGet/Home/issues/1524) + +* Nuget Pack doesn't include resource files (single localized package approach) - [#1482](https://github.com/NuGet/Home/issues/1482) + +* Support for runtime light-up dependencies - [#1471](https://github.com/NuGet/Home/issues/1471) + +* nuget.exe add and init should add a marker file to feed root - [#1456](https://github.com/NuGet/Home/issues/1456) + +* NuGet.Xplat - init and add commands - [#1455](https://github.com/NuGet/Home/issues/1455) + +* UpdateAll Cancellation implementation - [#1439](https://github.com/NuGet/Home/issues/1439) + +* UpdateAll progress dialog implementation - [#1438](https://github.com/NuGet/Home/issues/1438) + +* 'nuget.exe delete' to delete packages from the offline feed - [#1422](https://github.com/NuGet/Home/issues/1422) + +* nuget.exe: There are basic tests for nuget.exe update. Need more - [#1322](https://github.com/NuGet/Home/issues/1322) + +* nuget.exe excludes *.nuspec files and there is no way to bypass this - [#1290](https://github.com/NuGet/Home/issues/1290) + +* Support -ExcludeVersion for Restore and Update commands - [#1286](https://github.com/NuGet/Home/issues/1286) + +* nuget.exe update should support project.json - [#1276](https://github.com/NuGet/Home/issues/1276) + +* Nuget Package Visualizer is missing in Visual Studio 2015 Enterprise - [#1264](https://github.com/NuGet/Home/issues/1264) + +* Better handling of restore in VS with floating versions - [#1256](https://github.com/NuGet/Home/issues/1256) + +* Localization for nuget v3 command line - [#1165](https://github.com/NuGet/Home/issues/1165) + +* Hierarchical view in packages - [#1155](https://github.com/NuGet/Home/issues/1155) + +* Feature request: Local package "groups" - [#1149](https://github.com/NuGet/Home/issues/1149) + +* NuGet config is hierarchical. NuGet Settings dialog does not handle or reflect that - [#1114](https://github.com/NuGet/Home/issues/1114) + +* nuget list does not support wildcards - [#1001](https://github.com/NuGet/Home/issues/1001) + +* [wish] nuget proxy/cache - [#458](https://github.com/NuGet/Home/issues/458) + +* Users should be able to specify CopyLocal property for the references - [#446](https://github.com/NuGet/Home/issues/446) + +* Add a setting/switch to bypass Recycle bin when removing/updating - [#417](https://github.com/NuGet/Home/issues/417) + +**DCR:** + +* Signing API doesn't expose timestamps easily - [#6294](https://github.com/NuGet/Home/issues/6294) + +* Pack should have a collector logger and throw proper error and warning codes - [#6217](https://github.com/NuGet/Home/issues/6217) + +* `NuGet.CommandLine.XPlat package add` support `--config` - [#6210](https://github.com/NuGet/Home/issues/6210) + +* Support Organization parameter in NuGet push and dotnet nuget push - [#5925](https://github.com/NuGet/Home/issues/5925) + +* Feature Request: Need the ability for NuGet.exe pack to create a nupkg without the version in the package name - [#5893](https://github.com/NuGet/Home/issues/5893) + +* Honor WarningsNotAsErrors - [#5375](https://github.com/NuGet/Home/issues/5375) + +* Request for configurable names of '\packages' and 'packages.config' - [#4580](https://github.com/NuGet/Home/issues/4580) + +* dotnet new and dotnet build -- can that do the restore for you? - [#4495](https://github.com/NuGet/Home/issues/4495) + +* NuGet Package Manager Always Returns to Installed Tab Rather than Last Tab - [#4299](https://github.com/NuGet/Home/issues/4299) + +* Discover msbuild project files from a folder in nuget.exe restore - [#3942](https://github.com/NuGet/Home/issues/3942) + +* Refactor GetFolderPath for ProgramFiles - [#3859](https://github.com/NuGet/Home/issues/3859) + +* Cleanup CPS integration code when API is settled - [#3810](https://github.com/NuGet/Home/issues/3810) + +* Can't browse packages while install is running - [#3796](https://github.com/NuGet/Home/issues/3796) + +* Enhance TFM list for RC2 - [#3761](https://github.com/NuGet/Home/issues/3761) + +* Consider: Allow clearing a specific package from NuGet cache(s) - [#3688](https://github.com/NuGet/Home/issues/3688) + +* Provide more information when template package install fails - [#3413](https://github.com/NuGet/Home/issues/3413) + +* dll referred also to be shown in nuget window in VS - [#3411](https://github.com/NuGet/Home/issues/3411) + +* Consider collapsing absolute path log message when using relative push source - [#2958](https://github.com/NuGet/Home/issues/2958) + +* Project.json dependency resolver algorithm doesn't support dependency inversion - [#2889](https://github.com/NuGet/Home/issues/2889) + +* Consider moving the .nuget directory on Windows to a subdirectory of %AppData% - [#2861](https://github.com/NuGet/Home/issues/2861) + +* Allow compression level to be set when running `nuget pack` - [#2852](https://github.com/NuGet/Home/issues/2852) + +* Consider making project.json references case insensitive - [#2819](https://github.com/NuGet/Home/issues/2819) + +* Shared packages are automatically deleted during uninstall (repositoryPath) - [#2780](https://github.com/NuGet/Home/issues/2780) + +* Changelog summary and links for package manager updates - [#2753](https://github.com/NuGet/Home/issues/2753) + +* IVsPackageInstallerEvents could do with some more events - [#2751](https://github.com/NuGet/Home/issues/2751) + +* Updating packages applies assembly binding redirects to all projects, including class libraries - [#2748](https://github.com/NuGet/Home/issues/2748) + +* nuget.exe should support a relative source path for push command line: "nuget push -Source" - [#2723](https://github.com/NuGet/Home/issues/2723) + +* Make MSBuildNuGetProjectSystemUtility public - [#2702](https://github.com/NuGet/Home/issues/2702) + +* Include information about the dependency chain when a package is unable to restore - [#2693](https://github.com/NuGet/Home/issues/2693) + +* Impossible to target Xamarin.Mac .NET 4.5 Framework - [#2662](https://github.com/NuGet/Home/issues/2662) + +* dotnet CLI app cannot have global.json in the same directory as the project.json - [#2581](https://github.com/NuGet/Home/issues/2581) + +* NuGet command to purge/clean cache - [#2308](https://github.com/NuGet/Home/issues/2308) + +* Add web caching for UI and gather scenarios - [#2287](https://github.com/NuGet/Home/issues/2287) + +* Normalize use of loggers in UI - [#2286](https://github.com/NuGet/Home/issues/2286) + +* CLI "delete" is actually "unlist" - [#2277](https://github.com/NuGet/Home/issues/2277) + +* Finish up IVS APIs to facilitate package indexing - [#2268](https://github.com/NuGet/Home/issues/2268) + +* Add support for pre/post restore scripts - [#2260](https://github.com/NuGet/Home/issues/2260) + +* Consider adding StopLoadingThreshold parameter to nuget.config - [#2259](https://github.com/NuGet/Home/issues/2259) + +* Improve design of the package search item loader - [#2223](https://github.com/NuGet/Home/issues/2223) + +* Need better test coverage for the search results merging algorithm - [#2222](https://github.com/NuGet/Home/issues/2222) + +* All-sources feature implementation doesn't follow code conventions - [#2221](https://github.com/NuGet/Home/issues/2221) + +* Improvements for uninstall in scenarios where restore doesn't work - [#2213](https://github.com/NuGet/Home/issues/2213) + +* Enable preview or file count/list on Nuget installation - [#2207](https://github.com/NuGet/Home/issues/2207) + +* ProjectModel support for reading and writing lock file and project.json files - [#1993](https://github.com/NuGet/Home/issues/1993) + +* List command for xplat - [#1990](https://github.com/NuGet/Home/issues/1990) + +* Need way to specify item metadata on contentFiles - [#1979](https://github.com/NuGet/Home/issues/1979) + +* Public CI server? - [#1904](https://github.com/NuGet/Home/issues/1904) + +* Debug Experience -- telling installer to use .symbols package when both exist - [#1854](https://github.com/NuGet/Home/issues/1854) + +* Version Token in NuSpec file not being replaced properly when using version flag with csproj - [#1795](https://github.com/NuGet/Home/issues/1795) + +* Filter for Installed shows all packages and not just from selected packages source. - [#1761](https://github.com/NuGet/Home/issues/1761) + +* Make extracted /Content read-only - [#1729](https://github.com/NuGet/Home/issues/1729) + +* UI: options should also appear in Tools -> Options - [#1655](https://github.com/NuGet/Home/issues/1655) + +* Need to move guardrails out of restore - [#1623](https://github.com/NuGet/Home/issues/1623) + +* Package Manager Console and nuget.exe UPDATE function are inconsistent - [#1591](https://github.com/NuGet/Home/issues/1591) + +* nuget.exe install generates a lot of (parallel) network requests compared to UI or nuget.exe.2.* - [#1552](https://github.com/NuGet/Home/issues/1552) + +* Need to make changes to NuGet when csproj moves to CPS - [#1515](https://github.com/NuGet/Home/issues/1515) + +* Packages are missing when selected pre-release option! - [#1480](https://github.com/NuGet/Home/issues/1480) + +* Consider adding a warning for users of nuget.targets - [#1411](https://github.com/NuGet/Home/issues/1411) + +* Idea: Make nuget.config configuration options available as env vars - [#1396](https://github.com/NuGet/Home/issues/1396) + +* Different TypeScript versions in the package - [#1339](https://github.com/NuGet/Home/issues/1339) + +* NuGet.PackageManagement.dll should not use NuGet.Core and NuGet.Protocol.Core.v2 - [#1323](https://github.com/NuGet/Home/issues/1323) + +* Error message on installing package into C++ project could be more helpful - [#1242](https://github.com/NuGet/Home/issues/1242) + +* Solution packages aren't flagged as `developmentDependency="true"`. - [#1093](https://github.com/NuGet/Home/issues/1093) + +* API to bulk install packages to project.json - [#1023](https://github.com/NuGet/Home/issues/1023) + +* API to parse NuGetVersions - [#1022](https://github.com/NuGet/Home/issues/1022) + +* 'nuget list all' should say why it only returns 30 packages - [#1000](https://github.com/NuGet/Home/issues/1000) + +* Add quirking/package version to eliminate the "any" lib folder - [#496](https://github.com/NuGet/Home/issues/496) + +* Make it easier to omit packages from TFVC - [#493](https://github.com/NuGet/Home/issues/493) + +* Manage NuGet Packages dialog shows 'Authors' of package but not 'Owners' - [#442](https://github.com/NuGet/Home/issues/442) + +* nuget pack -symbols: Missing source file error when the package contains XAML - [#304](https://github.com/NuGet/Home/issues/304) + From ce1352eb9640b4dc9f6e49ab82b48b92b146c843 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Wed, 7 Mar 2018 18:13:12 -0800 Subject: [PATCH 0597/2943] 4.6 release notes --- docs/release-notes/NuGet-4.6.md | 682 +------------------------------- 1 file changed, 15 insertions(+), 667 deletions(-) diff --git a/docs/release-notes/NuGet-4.6.md b/docs/release-notes/NuGet-4.6.md index 1306810d9..ec4180b48 100644 --- a/docs/release-notes/NuGet-4.6.md +++ b/docs/release-notes/NuGet-4.6.md @@ -24,699 +24,47 @@ ms.reviewer: * We have added support for [signing packages](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package). * Visual Studio 2017 and nuget.exe now verifies package integrity before installing, restoring packages for [signed packages](https://docs.microsoft.com/en-us/nuget/reference/signed-packages-reference). * We have improved performance of successive restores. -* ## Known issues ### Issues with .NET Standard 2.0 with .NET Framework & NuGet .NET Standard & its tooling was designed such that projects targeting .NET Framework 4.6.1 can consume NuGet packages & projects targeting .NET Standard 2.0 or earlier. [This document](https://github.com/dotnet/standard/issues/481) summarizes the issues around that scenario, the plan for addressing them, and workarounds you can deploy with today's state of the tooling. -### Retargeting target framework version may lead to incomplete Intellisense -#### Issue -Retargeting target framework version may lead to incomplete Intellisense, in Visual Studio. This happens when you are using PackageReferences as the package manager format. [NuGet#4216](https://github.com/NuGet/Home/issues/4216) -#### Workaround -Do a manual restore. +## Top issues fixed in this release -### A package in a .NET Core project that contains an assembly with an invalid signature, can trigger an infinite restore loop - -#### Issue - -Occasionally, when you use a package that contains an assembly with an invalid signature or when the package version is set with 'DateTime' ticker, it causes the package auto-restore to run in an infinite loop [dotnet/project-system#1457](https://github.com/dotnet/project-system/issues/1457). - -#### Workaround - -There is no workaround at this time. - -## Issues fixed in NuGet 4.5 RTM timeframe - -For issues fixed in NuGet 4.4 RTM, please refer to [NuGet 4.4 RTM Release Notes](../release-notes/nuget-4.4-RTM.md) -#4.6 Release Notes - -[Issues List](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.6") - -**Bug:** - -* Signing: sign command fails to find untrusted self-issued certificate in certificate store - [#6616](https://github.com/NuGet/Home/issues/6616) - -* Signing: random timestamping failures - [#6587](https://github.com/NuGet/Home/issues/6587) - -* Test: fix root cause of test flakiness - [#6552](https://github.com/NuGet/Home/issues/6552) - -* Signing: incorrect GeneralizedTime handling - [#6549](https://github.com/NuGet/Home/issues/6549) - -* Verification fails for signature with different algorithm than timestamp - [#6539](https://github.com/NuGet/Home/issues/6539) - -* Assetsfile comparison issues lead to needless rewriting of the assets => triggering more design time builds - [#6491](https://github.com/NuGet/Home/issues/6491) - -* VS2017 publish: project.assets.json doesn't have a target for .NETCoreApp,Version=v1.1 - [#6482](https://github.com/NuGet/Home/issues/6482) - -* Signing: X509ChainElement.Certificate not disposed immediately after use - [#6464](https://github.com/NuGet/Home/issues/6464) - -* Timestamping with Safe Creative TSA errors with null reference exception - [#6463](https://github.com/NuGet/Home/issues/6463) - -* [Test Failure][Signing] The error doesn’t make sense when timestamp signing certificate does not satisfy certificate requirements - [#6451](https://github.com/NuGet/Home/issues/6451) - -* Signing: guarantee that GetPrimarySignatureCertificates(...)/GetPrimarySignatureTimestampSignatureCertificates(...) returns a non-empty list or throws - [#6447](https://github.com/NuGet/Home/issues/6447) - -* Cannot find 'vswhere' via https://api.nuget.org/v3/index.json/FindPackagesById()?id='vswhere' - [#6332](https://github.com/NuGet/Home/issues/6332) +**Performance fixes** +* Don't write asset files when there is no change - [#6491](https://github.com/NuGet/Home/issues/6491) +* Restore causes extra MSBuild evaluations when child projects' TFM do not match with the parent project's - [#6311](https://github.com/NuGet/Home/issues/6311) +* Improve NoOp restore perf by optimizing dependency graph spec creation - [#6252](https://github.com/NuGet/Home/issues/6252) +**Bugs** * Push to local folder leaves nupkg locked - [#6325](https://github.com/NuGet/Home/issues/6325) - -* Ensure NuGetv3LocalRepository is updated after package installs - [#6316](https://github.com/NuGet/Home/issues/6316) - -* Restore evaluates child projects using the parent project target framework - [#6311](https://github.com/NuGet/Home/issues/6311) - -* Signing: verify command's CertificateFingerprint not enforced - [#6304](https://github.com/NuGet/Home/issues/6304) - -* contentFiles any doesn't work with PackageReference-style projects - [#6287](https://github.com/NuGet/Home/issues/6287) - -* Package signatures can be invalid for certain packages packed with a different ZIP spec - [#6272](https://github.com/NuGet/Home/issues/6272) - -* mssign command doesn't produce same logging as sign command - [#6263](https://github.com/NuGet/Home/issues/6263) - -* PackageIdentity.ToString throws NullReferenceException if version is null - [#6235](https://github.com/NuGet/Home/issues/6235) - -* Downloading Nuget.exe from dist.nuget.org blocked - [#6191](https://github.com/NuGet/Home/issues/6191) - -* disabledPackageSources seems not working - [#6155](https://github.com/NuGet/Home/issues/6155) - -* Documentation URL forwards user to incorrect location in docs. (from NuGet settings window on VS) - [#6100](https://github.com/NuGet/Home/issues/6100) - -* Restore is skipped from VS when two projects are in the same folder - [#6038](https://github.com/NuGet/Home/issues/6038) - -* Do not reformat web.config when running NuGet Update-Package command - [#6018](https://github.com/NuGet/Home/issues/6018) - +* NuGet Plugin implementation: multiple issues - [#6149](https://github.com/NuGet/Home/issues/6149) +* UIHang - Remove query service call from MEF initialization in VSSolutionManager - [#6110](https://github.com/NuGet/Home/issues/6110) +* Error reporting exception for cancelled package download task - [#6096](https://github.com/NuGet/Home/issues/6096) * NuGet.exe replaces '+' with '%2B' in assembly name - [#5956](https://github.com/NuGet/Home/issues/5956) - +* Fn+F1 does not take to the right help page for PM UI and Console - [#5912](https://github.com/NuGet/Home/issues/5912) * VS NuGet writes absolute paths into project files under specific circumstances - [#5888](https://github.com/NuGet/Home/issues/5888) - +* Fix 4.3 regression - Placeholders $product$ and $AssemblyGuid$ not replaced in contentfile through transformation - [#5880](https://github.com/NuGet/Home/issues/5880) * dotnet restore with multiple sources crashes - [#5817](https://github.com/NuGet/Home/issues/5817) - -* Update and Uninstall not working for projects with multiple TargetFrameworks - [#5472](https://github.com/NuGet/Home/issues/5472) - -* Visual Studio not using packageCredentials from NuGetDefaults.config - [#4953](https://github.com/NuGet/Home/issues/4953) - * Pack should re-evaluate project versions to allow git versioning - [#4790](https://github.com/NuGet/Home/issues/4790) - -* Update-Package - Error - [#4690](https://github.com/NuGet/Home/issues/4690) - -* dotnet nuget push times out after 5 minutes when a symbol package is present - [#4672](https://github.com/NuGet/Home/issues/4672) - -* dotnet restore with basic authentication failing - [#4668](https://github.com/NuGet/Home/issues/4668) - -* Package Search is nonsensical - [#4614](https://github.com/NuGet/Home/issues/4614) - -* Still gets lots of hard to understand errors when you install an incompatible package - [#4555](https://github.com/NuGet/Home/issues/4555) - -* TemplateWizard and PackageReferences - [#4549](https://github.com/NuGet/Home/issues/4549) - +* Improve hard to understand errors when you install an incompatible package - [#4555](https://github.com/NuGet/Home/issues/4555) +* TemplateWizard needs option to install packages as PackageReferences - [#4549](https://github.com/NuGet/Home/issues/4549) * Package-delivered props files ignored when MSBuild.exe is run from outside a Developer Command Prompt - [#4530](https://github.com/NuGet/Home/issues/4530) - -* [Watson] dev11nonfatalerror: DEV11NONFATAL_CLR_EXCEPTION_System.NullReferenceException_80004003_NuGet.PackageManagement.VisualStudio.dll!Unknown - [#4485](https://github.com/NuGet/Home/issues/4485) - -* Poor error message when referencing .NET Standard Library that is not applicable to project - [#4423](https://github.com/NuGet/Home/issues/4423) - +* Fix poor error message when referencing .NET Standard Library that is not applicable to project - [#4423](https://github.com/NuGet/Home/issues/4423) * dotnet add package fails for package targeting portable profile with little guidance - [#4349](https://github.com/NuGet/Home/issues/4349) - * dotnet pack - version suffix missing from ProjectReference - [#4337](https://github.com/NuGet/Home/issues/4337) - * Build errors and VS crash with .NET Core template - [#3973](https://github.com/NuGet/Home/issues/3973) - -* Restore logs are lost and not persisted in the output window - [#3884](https://github.com/NuGet/Home/issues/3884) - -* Remove dependency on ImportsAfter for CrossTargeting - [#3860](https://github.com/NuGet/Home/issues/3860) - -* `dotnet restore` fails with private feed configured in local system account - [#3839](https://github.com/NuGet/Home/issues/3839) - -* NuGet operations can hang [Customer report] - [#3823](https://github.com/NuGet/Home/issues/3823) - -* For UWP Project, improve restore error message - [#3717](https://github.com/NuGet/Home/issues/3717) - -* dotnet pack3 always adds exclude="Build,Analyzers" to .nuspec - [#3697](https://github.com/NuGet/Home/issues/3697) - -* Some packages can't be installed on multiple projects within a solution - [#3695](https://github.com/NuGet/Home/issues/3695) - -* Installing NuGet packages doesn't work when the Package source is "All" - [#3694](https://github.com/NuGet/Home/issues/3694) - -* VS Package Management Console won't work on Windows Server 2016 (missing Powershell-V2 - [#3682](https://github.com/NuGet/Home/issues/3682) - * Unable to load the service index for source https:* - [#3681](https://github.com/NuGet/Home/issues/3681) - * nuget.exe list -allversions doesn't work - [#3441](https://github.com/NuGet/Home/issues/3441) - -* Nuspec file src attribute is platform specific? - [#2989](https://github.com/NuGet/Home/issues/2989) - * Misleading dependency resolution error message - [#2984](https://github.com/NuGet/Home/issues/2984) - -* NuGet Package Manager GUI Install Button - [#2979](https://github.com/NuGet/Home/issues/2979) - -* nuget pack fails when MSBuild version resolved to MSBuild 3.5 - [#2949](https://github.com/NuGet/Home/issues/2949) - -* Establish consistent detail in issues/pr/commits - [#2948](https://github.com/NuGet/Home/issues/2948) - -* NuGet failed to build due to hardcoded ILMerge path - [#2946](https://github.com/NuGet/Home/issues/2946) - -* Cannot complete dotnet restore because some requests timed out after 100000ms - [#2945](https://github.com/NuGet/Home/issues/2945) - * nuget.exe restore doesn't produce .props and .targets files for .msbuildproj (regression in v3.3.0-3.4.4 upgrade) - [#2921](https://github.com/NuGet/Home/issues/2921) - * UI delay when updating a NuGet package with XAML file open - [#2878](https://github.com/NuGet/Home/issues/2878) - -* nuget solution update will only update projects under sln dir - [#2875](https://github.com/NuGet/Home/issues/2875) - -* NuGet Install Fails with Error: Failed to add reference to 'System.Collections' - [#2840](https://github.com/NuGet/Home/issues/2840) - -* Can not push symbols nuget package - [#2837](https://github.com/NuGet/Home/issues/2837) - * WebSite project from IIS fails with illegal characters in path - [#2798](https://github.com/NuGet/Home/issues/2798) - -* More helpful error when installing a package targeting the wrong framework via VS UI - [#2789](https://github.com/NuGet/Home/issues/2789) - -* Unable to restore packages in web SITE project using NuGet 3 restore packages with whole solution (commandline) - [#2783](https://github.com/NuGet/Home/issues/2783) - -* VS Package Manager: Uninstall of package uses the wrong line breaks when editing project.json - [#2777](https://github.com/NuGet/Home/issues/2777) - -* Package Manager UI ScrollBar scrolls to the top if the down arrow key is kept pressed to scroll down the list of packages - [#2756](https://github.com/NuGet/Home/issues/2756) - -* Dev15: Got "The extension is not installable on any currently installed products" during installing preview vsix 3.4.2 - [#2737](https://github.com/NuGet/Home/issues/2737) - * Nuget add hangs on CentOS - [#2708](https://github.com/NuGet/Home/issues/2708) - * Restore with packagesavemode -nupkg fails for json.net - [#2706](https://github.com/NuGet/Home/issues/2706) - * Package Manager filter not available in vs output window for restore command - [#2704](https://github.com/NuGet/Home/issues/2704) - -* NuGet package manager does not respect VS language settings - [#2689](https://github.com/NuGet/Home/issues/2689) - -* Nuget.exe fails when it is denied access to %APPDATA%\Nuget\NuGet.config - [#2676](https://github.com/NuGet/Home/issues/2676) - -* nuget setapikey outputs the secure apikey - [#2659](https://github.com/NuGet/Home/issues/2659) - -* Making pre-release packages using the new -Suffix argument - [#2652](https://github.com/NuGet/Home/issues/2652) - -* "nuget.exe delete" doesn't delete a local package folder after the last version is deleted - [#2624](https://github.com/NuGet/Home/issues/2624) - -* VS2015 listing give package parameter error - [#2608](https://github.com/NuGet/Home/issues/2608) - -* nuget.exe sources update outputs success when no source parameter provided - [#2513](https://github.com/NuGet/Home/issues/2513) - -* nuget.exe install should no-op install when using relative output directory - [#2511](https://github.com/NuGet/Home/issues/2511) - -* "nuget sources remove -name sourceName" leaves behind credentials in local config - [#2501](https://github.com/NuGet/Home/issues/2501) - -* nuget feed returning an unlisted package for NServiceBus - [#2494](https://github.com/NuGet/Home/issues/2494) - -* NuGet install installing delisted package if it is highest version - [#2384](https://github.com/NuGet/Home/issues/2384) - -* Duplicate XmlUtility in Packaging, Configuration, ProjectManagement, need to merge them into one utility - [#2318](https://github.com/NuGet/Home/issues/2318) - -* dotnet restore failed when "Project.json" file name is captialized - [#2306](https://github.com/NuGet/Home/issues/2306) - -* Potential blocking thread calls in PackageManagerControl - [#2252](https://github.com/NuGet/Home/issues/2252) - -* RDP from a laptop which is 1600 resolution to machine at 150%, Package Manager hangs - [#2251](https://github.com/NuGet/Home/issues/2251) - -* build.ps1 almost always fails with System Error 2 or more - [#2248](https://github.com/NuGet/Home/issues/2248) - -* Guard rails does not include all file types - [#2247](https://github.com/NuGet/Home/issues/2247) - -* Guard rails should include framework assemblies as runtime assets - [#2246](https://github.com/NuGet/Home/issues/2246) - -* update command doesn't remove old element from csproj - [#2234](https://github.com/NuGet/Home/issues/2234) - -* When you have no enabled sources Browse tab should be always clear. - [#2227](https://github.com/NuGet/Home/issues/2227) - -* When uninstalling NuGet without selecting "Remove dependencies" no errors will show up in error window - [#2219](https://github.com/NuGet/Home/issues/2219) - -* Nuget 3.4.0.675 PackageSaveMode doesn’t save nuspec when specified - [#2218](https://github.com/NuGet/Home/issues/2218) - -* UI Needs "Upgrade NuGet" button when client version does not meet requirements - [#2212](https://github.com/NuGet/Home/issues/2212) - -* Strange error description when updating package - [#1996](https://github.com/NuGet/Home/issues/1996) - -* VS 2015 Consolidate feature at solution level UX - [#1987](https://github.com/NuGet/Home/issues/1987) - -* version list is not populated when the installed package version not available from source - [#1974](https://github.com/NuGet/Home/issues/1974) - -* "Nuget pack" does not find ".nuget\nuget.config" - [#1966](https://github.com/NuGet/Home/issues/1966) - -* GetInstalledPackages() doesn't support C++ - [#1965](https://github.com/NuGet/Home/issues/1965) - -* Can't update or install package: An item with the same key has already been added - [#1943](https://github.com/NuGet/Home/issues/1943) - -* Fail to add xunit.runner.msbuild nuget package if project.json is used - [#1936](https://github.com/NuGet/Home/issues/1936) - -* Update command yields null projectFramework. - [#1874](https://github.com/NuGet/Home/issues/1874) - -* Downloaded NuGet Packages are missing the DLL's - [#1842](https://github.com/NuGet/Home/issues/1842) - -* Update-Package command removes dependency details - [#1832](https://github.com/NuGet/Home/issues/1832) - -* Support space in paths - [#1818](https://github.com/NuGet/Home/issues/1818) - -* Leading 0 in Package Revision Number Fails to Restore in VSTS - [#1800](https://github.com/NuGet/Home/issues/1800) - -* AssemblyInformationalVersion not taken into account - [#1794](https://github.com/NuGet/Home/issues/1794) - -* Add diagnostics to nuget restore failures when msbuild fails to resolve P2P - [#1786](https://github.com/NuGet/Home/issues/1786) - -* -solutiondirectory flag has no effect in nuget restore command - [#1781](https://github.com/NuGet/Home/issues/1781) - -* nuget.exe updating a single package produces messages saying that multiple packages are being resolved - [#1776](https://github.com/NuGet/Home/issues/1776) - -* Installed packages are missing information based on source selected - [#1762](https://github.com/NuGet/Home/issues/1762) - -* -Tool packaging rules not propagated to referenced packages - [#1753](https://github.com/NuGet/Home/issues/1753) - -* nuget.exe add and init commands ignore invalid packages on the destination. Should it overwrite? - [#1738](https://github.com/NuGet/Home/issues/1738) - -* NuGet should format whitespace in project.json per VS behavior - [#1731](https://github.com/NuGet/Home/issues/1731) - -* C#: creating Windows Universal project shows 'Progress in this operation is taking a long time...' message - [#1718](https://github.com/NuGet/Home/issues/1718) - -* Tools-only package can not be installed - [#1710](https://github.com/NuGet/Home/issues/1710) - -* No warning is logged when the directory with the packages.config contains more than 1 project file - [#1706](https://github.com/NuGet/Home/issues/1706) - -* When NuGet UI re-opens Visual Studio, it opens incorrect solution - [#1702](https://github.com/NuGet/Home/issues/1702) - -* UI: we should use the same text for the install/update button - [#1683](https://github.com/NuGet/Home/issues/1683) - -* After powershell command is finished in PMC, the UI won't refresh to reflect the changes. - [#1673](https://github.com/NuGet/Home/issues/1673) - -* On a UAP project, installing by typing wrong casing for package id fails from a folder based package source - [#1672](https://github.com/NuGet/Home/issues/1672) - -* Update not working correctly for NuGet.exe (2.8.6) with -Safe option - [#1651](https://github.com/NuGet/Home/issues/1651) - -* nuget.exe pack of folder with [Content_Types].xml folder in it crashes - [#1641](https://github.com/NuGet/Home/issues/1641) - -* Running nuget.exe update -Verbosity Quiet does not display user prompts but expects an answer anyway - [#1639](https://github.com/NuGet/Home/issues/1639) - -* Command line restore spits a wrong message about enabling restore in visual studio - [#1619](https://github.com/NuGet/Home/issues/1619) - -* Investigate 3 functional test failures for project K - [#1616](https://github.com/NuGet/Home/issues/1616) - -* Failed msbuild restore needs a reason - [#1606](https://github.com/NuGet/Home/issues/1606) - -* NuGetFramework.Version isn't normalized - [#1600](https://github.com/NuGet/Home/issues/1600) - -* Binding redirect was added to one project while install-package was called on another - [#1582](https://github.com/NuGet/Home/issues/1582) - -* nuget fails to install/update/remove when there is a reference with an Alias - [#1580](https://github.com/NuGet/Home/issues/1580) - -* NuGet 2 mirror command does not replace missing packages - [#1574](https://github.com/NuGet/Home/issues/1574) - -* Follow up to #1397 - [#1569](https://github.com/NuGet/Home/issues/1569) - -* Need to refactor NuGetPackageManagerTests to avoid code redundancy - [#1564](https://github.com/NuGet/Home/issues/1564) - -* nuget.exe install jQuery -Version 5.0.0 says 'Package 'jQuery' does not exist'. - [#1554](https://github.com/NuGet/Home/issues/1554) - -* ConcurrencyUtilities.FilePathToLockName in NuGet.Packaging issue with long paths? - [#1549](https://github.com/NuGet/Home/issues/1549) - -* Dependency range lower bound incorrect in VS - [#1511](https://github.com/NuGet/Home/issues/1511) - -* Push doesn't use apiKey for service index when talking to PackagePublish/2.0.0 service - [#1502](https://github.com/NuGet/Home/issues/1502) - -* VS2015 Enterprise nuget version 3.2 fails on metadata download - [#1474](https://github.com/NuGet/Home/issues/1474) - -* Improve error message when uninstall encounters locked files - [#1458](https://github.com/NuGet/Home/issues/1458) - -* NuGet.Xplat - init and add commands - [#1455](https://github.com/NuGet/Home/issues/1455) - -* UpdateAll Cancellation implementation - [#1439](https://github.com/NuGet/Home/issues/1439) - -* Nuget Restore Circular Dependency - [#1428](https://github.com/NuGet/Home/issues/1428) - -* When %TEMP% and %TMP% env vars overridden to a non-existing folder nuget fails - [#1415](https://github.com/NuGet/Home/issues/1415) - -* Search box cannot be accessed with Ctrl+E hotkey after search - [#1404](https://github.com/NuGet/Home/issues/1404) - -* Issue during package creation in 'content' folder - [#1388](https://github.com/NuGet/Home/issues/1388) - -* NuGet fails to decompress NuGet packages, which are created with a newer ZIP version - [#1381](https://github.com/NuGet/Home/issues/1381) - -* When offline or bad package source, build of UWP shows confusing error when packages are missing - [#1363](https://github.com/NuGet/Home/issues/1363) - -* Pressing enter in the console does nothing - [#1329](https://github.com/NuGet/Home/issues/1329) - -* nuget.exe adding a source with -Config does not update the file unless a username and password is used - [#1315](https://github.com/NuGet/Home/issues/1315) - -* nuget.exe sources Add will always add nuget.org - [#1314](https://github.com/NuGet/Home/issues/1314) - -* When package failed to install we are getting an exception thrown to the Power Shell console instead of getting an error msg what meant wrong - [#1310](https://github.com/NuGet/Home/issues/1310) - -* automatic package restore to run init.ps1 scripts after restoring - [#1292](https://github.com/NuGet/Home/issues/1292) - -* Wrong markdown for usage examples - [#1285](https://github.com/NuGet/Home/issues/1285) - -* Intermittent failure of NuGet Functional Test UninstallPackageRemoveImportStatement - [#1278](https://github.com/NuGet/Home/issues/1278) - -* NuGet UI at Solution Level for large solutions is very slow - [#1262](https://github.com/NuGet/Home/issues/1262) - -* Project "Default" is not found - [#1215](https://github.com/NuGet/Home/issues/1215) - -* After saving a solution, 'Restore' button does not show up on Package Manager Console - [#1207](https://github.com/NuGet/Home/issues/1207) - -* Files aren't added to VS if they exist before installing a package - [#1190](https://github.com/NuGet/Home/issues/1190) - -* Package restore should fail if a package with runtime-specific assets doesn't provide an asset - [#1173](https://github.com/NuGet/Home/issues/1173) - -* Intellisense in package manager console in visual studio 2015 is broken - [#1137](https://github.com/NuGet/Home/issues/1137) - -* Cannot install managed packages into a CLI project - [#1121](https://github.com/NuGet/Home/issues/1121) - -* Support nuget.exe install project.json - [#1045](https://github.com/NuGet/Home/issues/1045) - -* Uninstalling Win2D from a UWP c++ project hangs - [#1030](https://github.com/NuGet/Home/issues/1030) - -* .props and .targets from build folder in NuGet package not imported after package restore in VS - [#982](https://github.com/NuGet/Home/issues/982) - * Can't install a package when there are some leftovers in the packages folder - [#492](https://github.com/NuGet/Home/issues/492) -* Saved a nuspec file with wrong reference whitelist when PackageSaveMode = nuspec - [#434](https://github.com/NuGet/Home/issues/434) - -* Completely remove any public methods related to legacy or msbuild based package restore from PackageManagement and Visual Studio extension - [#365](https://github.com/NuGet/Home/issues/365) - -* NuGet.PackageManagement: Functional test failure. UninstallPackageHonorPackageReferencesAccordingToProjectFramework - [#164](https://github.com/NuGet/Home/issues/164) - -* NuGet.PackageManagement: Use DownloadResource.Progress event - [#50](https://github.com/NuGet/Home/issues/50) - -* NuGet.PackageManagement: Should not default null for sourceRepositories to mean all the enabled repositories in SourceRepositoryProvider. Preferable to have function overloads or default values - [#45](https://github.com/NuGet/Home/issues/45) - -**Spec:** - -* [Spec] Changes to nuget config file and settingsto allow custom hierarchy/scope - [#6420](https://github.com/NuGet/Home/issues/6420) - -* [Spec] Schema changes to nuget config file for storing trusted repositories - [#6419](https://github.com/NuGet/Home/issues/6419) - -**Docs:** - -* Exclude feature doesn't work when using PackageReferences and .NetStandard - [#6399](https://github.com/NuGet/Home/issues/6399) - -* [NuGet Packaging] Add Visual Studio Template for NuGet package creation (it's 2018 guys) - [#6391](https://github.com/NuGet/Home/issues/6391) - -* Improve Support for Custom / Wrapped NuGet Clients - [#6161](https://github.com/NuGet/Home/issues/6161) - -* Documentation URL forwards user to incorrect location in docs. (from NuGet settings window on VS) - [#6100](https://github.com/NuGet/Home/issues/6100) - -* NuGet code API - [#5318](https://github.com/NuGet/Home/issues/5318) - -* Investigate result of XProj to CSProj migration for nuget.exe - [#3943](https://github.com/NuGet/Home/issues/3943) - -* Need a way to test installation of packages via command line - [#2905](https://github.com/NuGet/Home/issues/2905) - -* Document with sample building a manage package for all worlds - [#1160](https://github.com/NuGet/Home/issues/1160) - -* Improved target documentation - [#358](https://github.com/NuGet/Home/issues/358) - -* [Verify/Document] Native (conditional) dependency support. - [#300](https://github.com/NuGet/Home/issues/300) - -**Feature:** - -* dotnet-nuget install - [#6375](https://github.com/NuGet/Home/issues/6375) - -* Package signing scenarios should be covered by end to end tests - [#6275](https://github.com/NuGet/Home/issues/6275) - -* Add additional tests around Timestamp verification involving a mock TSA - [#6239](https://github.com/NuGet/Home/issues/6239) - -* Higher priority for search results of reserved prefixes - [#6142](https://github.com/NuGet/Home/issues/6142) - -* Feature Request: config file transform redirect configuration - [#6126](https://github.com/NuGet/Home/issues/6126) - -* Package Signing Telemetry - [#6075](https://github.com/NuGet/Home/issues/6075) - -* Create one mega dll for NuGet and add ngen for hot paths - [#6057](https://github.com/NuGet/Home/issues/6057) - -* Feature Request: Add response file support to NuGet.exe - [#5891](https://github.com/NuGet/Home/issues/5891) - -* Add 'list' command to NuGet.CommandLine.XPlat - [#5402](https://github.com/NuGet/Home/issues/5402) - -* Package should store which source it is installed from - [#4666](https://github.com/NuGet/Home/issues/4666) - -* MSBuildTool that depends on DotNetCliTool - [#4653](https://github.com/NuGet/Home/issues/4653) - -* Support Restore for Open Folder in VS for solution or project - [#4458](https://github.com/NuGet/Home/issues/4458) - -* Enable updating packagereference versions from the command line (for csproj) - [#4358](https://github.com/NuGet/Home/issues/4358) - -* Run init.ps1 when nuget package is installed/updated via command-line - [#4318](https://github.com/NuGet/Home/issues/4318) - -* Is posible to use ApiKey when restore nugets - [#4049](https://github.com/NuGet/Home/issues/4049) - -* Lightweight Solution support for Package Manager Console - [#3989](https://github.com/NuGet/Home/issues/3989) - -* Lightweight Solution support for Manage NuGet Packages for Solution UI - [#3988](https://github.com/NuGet/Home/issues/3988) - -* Auto-Restore for packages.config - [#3951](https://github.com/NuGet/Home/issues/3951) - -* NuGet.exe support for wave3 for api keys improvements - [#3771](https://github.com/NuGet/Home/issues/3771) - -* Reconfigure command line tests to test dotnet nuget commands - [#3727](https://github.com/NuGet/Home/issues/3727) - -* As part of CI, propagate nuget source to local source server - [#3693](https://github.com/NuGet/Home/issues/3693) - -* DotNetCliToolsReference using deps.json - [#3673](https://github.com/NuGet/Home/issues/3673) - -* Need to determine API for getting "type: build" dependency information in MSBuild - [#3507](https://github.com/NuGet/Home/issues/3507) - -* Command line - list outdated packages, similar to leiningen's "lein ancient" command - [#3415](https://github.com/NuGet/Home/issues/3415) - -* NuGet Upgrader: From packages.config to project.json - [#2935](https://github.com/NuGet/Home/issues/2935) - -* Enable Vs-Feedback to gather nuget information about a project. - [#2927](https://github.com/NuGet/Home/issues/2927) - -* Enable installation of packages with type build or platform. - [#2912](https://github.com/NuGet/Home/issues/2912) - -* Excluding specific referenced projects when using IncludeReferencedProjects - [#2897](https://github.com/NuGet/Home/issues/2897) - -* Feature Request: Select multiple packages to be installed in VS add-in - [#2872](https://github.com/NuGet/Home/issues/2872) - -* "Connect to NuGet Source" via Powershell or Protocol? - [#2703](https://github.com/NuGet/Home/issues/2703) - -* Improvements to Browse in Package Manager UI (Multi Install/Uninstall) - [#2584](https://github.com/NuGet/Home/issues/2584) - -* `dotnet restore` should have an option for the runtimes to restore - [#2534](https://github.com/NuGet/Home/issues/2534) - -* Add support for vector images in the Nuspec iconUrl reference - [#2519](https://github.com/NuGet/Home/issues/2519) - -* Add perf tests for more scenarios such as update and package restore - [#2211](https://github.com/NuGet/Home/issues/2211) - -* Verified Authors for NuGet.org and packages - [#1882](https://github.com/NuGet/Home/issues/1882) - -* Add ability to "-Reinstall" a package from the NuGet Package Manage UI - [#1812](https://github.com/NuGet/Home/issues/1812) - -* Network request failure failed restore when all packages were present - [#1810](https://github.com/NuGet/Home/issues/1810) - -* allow nuget validation rules to be disabled (-disablerules) - [#1741](https://github.com/NuGet/Home/issues/1741) - -* Feature Request: Add 'Browse' button to UI - [#1698](https://github.com/NuGet/Home/issues/1698) - -* Request: integrated into VS "Add Reference" dialog - [#1679](https://github.com/NuGet/Home/issues/1679) - -* Request: allow "delete" in SolnExplorer to remove NuGet packages - [#1678](https://github.com/NuGet/Home/issues/1678) - -* Prerelease Setting Should be Set Per Package Source - [#1666](https://github.com/NuGet/Home/issues/1666) - -* Show infobar with links to open readme files when installing packages - [#1662](https://github.com/NuGet/Home/issues/1662) - -* Nuget restore needs to support batch restoring for larger projects - [#1653](https://github.com/NuGet/Home/issues/1653) - -* Support .NET packages for C++/CLI - [#1645](https://github.com/NuGet/Home/issues/1645) - -* Shopping Cart/Ability to pin packages in search, and install them in one go - [#1632](https://github.com/NuGet/Home/issues/1632) - -* Package redirects - [#1590](https://github.com/NuGet/Home/issues/1590) - -* Prevent installing multiple versions of a package in the solution - [#1579](https://github.com/NuGet/Home/issues/1579) - -* Add sym link feature for nupkgs - [#1558](https://github.com/NuGet/Home/issues/1558) - -* Improve embeddeding NuGet packages as part of a template/vsix - [#1530](https://github.com/NuGet/Home/issues/1530) - -* Disable symbol package upload - [#1524](https://github.com/NuGet/Home/issues/1524) - -* Nuget Pack doesn't include resource files (single localized package approach) - [#1482](https://github.com/NuGet/Home/issues/1482) - -* Support for runtime light-up dependencies - [#1471](https://github.com/NuGet/Home/issues/1471) - -* nuget.exe add and init should add a marker file to feed root - [#1456](https://github.com/NuGet/Home/issues/1456) - -* NuGet.Xplat - init and add commands - [#1455](https://github.com/NuGet/Home/issues/1455) - -* UpdateAll Cancellation implementation - [#1439](https://github.com/NuGet/Home/issues/1439) - -* UpdateAll progress dialog implementation - [#1438](https://github.com/NuGet/Home/issues/1438) - -* 'nuget.exe delete' to delete packages from the offline feed - [#1422](https://github.com/NuGet/Home/issues/1422) - -* nuget.exe: There are basic tests for nuget.exe update. Need more - [#1322](https://github.com/NuGet/Home/issues/1322) - -* nuget.exe excludes *.nuspec files and there is no way to bypass this - [#1290](https://github.com/NuGet/Home/issues/1290) - -* Support -ExcludeVersion for Restore and Update commands - [#1286](https://github.com/NuGet/Home/issues/1286) - -* nuget.exe update should support project.json - [#1276](https://github.com/NuGet/Home/issues/1276) - -* Nuget Package Visualizer is missing in Visual Studio 2015 Enterprise - [#1264](https://github.com/NuGet/Home/issues/1264) - -* Better handling of restore in VS with floating versions - [#1256](https://github.com/NuGet/Home/issues/1256) - -* Localization for nuget v3 command line - [#1165](https://github.com/NuGet/Home/issues/1165) - -* Hierarchical view in packages - [#1155](https://github.com/NuGet/Home/issues/1155) - -* Feature request: Local package "groups" - [#1149](https://github.com/NuGet/Home/issues/1149) - -* NuGet config is hierarchical. NuGet Settings dialog does not handle or reflect that - [#1114](https://github.com/NuGet/Home/issues/1114) - -* nuget list does not support wildcards - [#1001](https://github.com/NuGet/Home/issues/1001) - -* [wish] nuget proxy/cache - [#458](https://github.com/NuGet/Home/issues/458) - -* Users should be able to specify CopyLocal property for the references - [#446](https://github.com/NuGet/Home/issues/446) - -* Add a setting/switch to bypass Recycle bin when removing/updating - [#417](https://github.com/NuGet/Home/issues/417) - -**DCR:** - -* Signing API doesn't expose timestamps easily - [#6294](https://github.com/NuGet/Home/issues/6294) - -* Pack should have a collector logger and throw proper error and warning codes - [#6217](https://github.com/NuGet/Home/issues/6217) - -* `NuGet.CommandLine.XPlat package add` support `--config` - [#6210](https://github.com/NuGet/Home/issues/6210) - -* Support Organization parameter in NuGet push and dotnet nuget push - [#5925](https://github.com/NuGet/Home/issues/5925) - -* Feature Request: Need the ability for NuGet.exe pack to create a nupkg without the version in the package name - [#5893](https://github.com/NuGet/Home/issues/5893) - -* Honor WarningsNotAsErrors - [#5375](https://github.com/NuGet/Home/issues/5375) - -* Request for configurable names of '\packages' and 'packages.config' - [#4580](https://github.com/NuGet/Home/issues/4580) - -* dotnet new and dotnet build -- can that do the restore for you? - [#4495](https://github.com/NuGet/Home/issues/4495) - -* NuGet Package Manager Always Returns to Installed Tab Rather than Last Tab - [#4299](https://github.com/NuGet/Home/issues/4299) - -* Discover msbuild project files from a folder in nuget.exe restore - [#3942](https://github.com/NuGet/Home/issues/3942) - -* Refactor GetFolderPath for ProgramFiles - [#3859](https://github.com/NuGet/Home/issues/3859) - -* Cleanup CPS integration code when API is settled - [#3810](https://github.com/NuGet/Home/issues/3810) - -* Can't browse packages while install is running - [#3796](https://github.com/NuGet/Home/issues/3796) - -* Enhance TFM list for RC2 - [#3761](https://github.com/NuGet/Home/issues/3761) - -* Consider: Allow clearing a specific package from NuGet cache(s) - [#3688](https://github.com/NuGet/Home/issues/3688) - -* Provide more information when template package install fails - [#3413](https://github.com/NuGet/Home/issues/3413) - -* dll referred also to be shown in nuget window in VS - [#3411](https://github.com/NuGet/Home/issues/3411) - -* Consider collapsing absolute path log message when using relative push source - [#2958](https://github.com/NuGet/Home/issues/2958) - -* Project.json dependency resolver algorithm doesn't support dependency inversion - [#2889](https://github.com/NuGet/Home/issues/2889) - -* Consider moving the .nuget directory on Windows to a subdirectory of %AppData% - [#2861](https://github.com/NuGet/Home/issues/2861) - -* Allow compression level to be set when running `nuget pack` - [#2852](https://github.com/NuGet/Home/issues/2852) - -* Consider making project.json references case insensitive - [#2819](https://github.com/NuGet/Home/issues/2819) - -* Shared packages are automatically deleted during uninstall (repositoryPath) - [#2780](https://github.com/NuGet/Home/issues/2780) - -* Changelog summary and links for package manager updates - [#2753](https://github.com/NuGet/Home/issues/2753) - -* IVsPackageInstallerEvents could do with some more events - [#2751](https://github.com/NuGet/Home/issues/2751) - -* Updating packages applies assembly binding redirects to all projects, including class libraries - [#2748](https://github.com/NuGet/Home/issues/2748) - -* nuget.exe should support a relative source path for push command line: "nuget push -Source" - [#2723](https://github.com/NuGet/Home/issues/2723) - -* Make MSBuildNuGetProjectSystemUtility public - [#2702](https://github.com/NuGet/Home/issues/2702) - -* Include information about the dependency chain when a package is unable to restore - [#2693](https://github.com/NuGet/Home/issues/2693) - -* Impossible to target Xamarin.Mac .NET 4.5 Framework - [#2662](https://github.com/NuGet/Home/issues/2662) - -* dotnet CLI app cannot have global.json in the same directory as the project.json - [#2581](https://github.com/NuGet/Home/issues/2581) - -* NuGet command to purge/clean cache - [#2308](https://github.com/NuGet/Home/issues/2308) - -* Add web caching for UI and gather scenarios - [#2287](https://github.com/NuGet/Home/issues/2287) - -* Normalize use of loggers in UI - [#2286](https://github.com/NuGet/Home/issues/2286) - -* CLI "delete" is actually "unlist" - [#2277](https://github.com/NuGet/Home/issues/2277) - -* Finish up IVS APIs to facilitate package indexing - [#2268](https://github.com/NuGet/Home/issues/2268) - -* Add support for pre/post restore scripts - [#2260](https://github.com/NuGet/Home/issues/2260) - -* Consider adding StopLoadingThreshold parameter to nuget.config - [#2259](https://github.com/NuGet/Home/issues/2259) - -* Improve design of the package search item loader - [#2223](https://github.com/NuGet/Home/issues/2223) - -* Need better test coverage for the search results merging algorithm - [#2222](https://github.com/NuGet/Home/issues/2222) - -* All-sources feature implementation doesn't follow code conventions - [#2221](https://github.com/NuGet/Home/issues/2221) - -* Improvements for uninstall in scenarios where restore doesn't work - [#2213](https://github.com/NuGet/Home/issues/2213) - -* Enable preview or file count/list on Nuget installation - [#2207](https://github.com/NuGet/Home/issues/2207) - -* ProjectModel support for reading and writing lock file and project.json files - [#1993](https://github.com/NuGet/Home/issues/1993) - -* List command for xplat - [#1990](https://github.com/NuGet/Home/issues/1990) - -* Need way to specify item metadata on contentFiles - [#1979](https://github.com/NuGet/Home/issues/1979) - -* Public CI server? - [#1904](https://github.com/NuGet/Home/issues/1904) - -* Debug Experience -- telling installer to use .symbols package when both exist - [#1854](https://github.com/NuGet/Home/issues/1854) - -* Version Token in NuSpec file not being replaced properly when using version flag with csproj - [#1795](https://github.com/NuGet/Home/issues/1795) - -* Filter for Installed shows all packages and not just from selected packages source. - [#1761](https://github.com/NuGet/Home/issues/1761) - -* Make extracted /Content read-only - [#1729](https://github.com/NuGet/Home/issues/1729) - -* UI: options should also appear in Tools -> Options - [#1655](https://github.com/NuGet/Home/issues/1655) - -* Need to move guardrails out of restore - [#1623](https://github.com/NuGet/Home/issues/1623) - -* Package Manager Console and nuget.exe UPDATE function are inconsistent - [#1591](https://github.com/NuGet/Home/issues/1591) - -* nuget.exe install generates a lot of (parallel) network requests compared to UI or nuget.exe.2.* - [#1552](https://github.com/NuGet/Home/issues/1552) - -* Need to make changes to NuGet when csproj moves to CPS - [#1515](https://github.com/NuGet/Home/issues/1515) - -* Packages are missing when selected pre-release option! - [#1480](https://github.com/NuGet/Home/issues/1480) - -* Consider adding a warning for users of nuget.targets - [#1411](https://github.com/NuGet/Home/issues/1411) - -* Idea: Make nuget.config configuration options available as env vars - [#1396](https://github.com/NuGet/Home/issues/1396) - -* Different TypeScript versions in the package - [#1339](https://github.com/NuGet/Home/issues/1339) - -* NuGet.PackageManagement.dll should not use NuGet.Core and NuGet.Protocol.Core.v2 - [#1323](https://github.com/NuGet/Home/issues/1323) - -* Error message on installing package into C++ project could be more helpful - [#1242](https://github.com/NuGet/Home/issues/1242) - -* Solution packages aren't flagged as `developmentDependency="true"`. - [#1093](https://github.com/NuGet/Home/issues/1093) - -* API to bulk install packages to project.json - [#1023](https://github.com/NuGet/Home/issues/1023) - -* API to parse NuGetVersions - [#1022](https://github.com/NuGet/Home/issues/1022) - -* 'nuget list all' should say why it only returns 30 packages - [#1000](https://github.com/NuGet/Home/issues/1000) - -* Add quirking/package version to eliminate the "any" lib folder - [#496](https://github.com/NuGet/Home/issues/496) - -* Make it easier to omit packages from TFVC - [#493](https://github.com/NuGet/Home/issues/493) - -* Manage NuGet Packages dialog shows 'Authors' of package but not 'Owners' - [#442](https://github.com/NuGet/Home/issues/442) - -* nuget pack -symbols: Missing source file error when the package contains XAML - [#304](https://github.com/NuGet/Home/issues/304) +[List of all issues fixed in this release](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.6") \ No newline at end of file From 38ad824d0b72a3ec9eb16797ea53b06400c8da91 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Thu, 8 Mar 2018 12:58:49 -0800 Subject: [PATCH 0598/2943] Update Index.md --- docs/release-notes/Index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/release-notes/Index.md b/docs/release-notes/Index.md index 0d19bd72d..364dfc8c1 100644 --- a/docs/release-notes/Index.md +++ b/docs/release-notes/Index.md @@ -18,6 +18,8 @@ ms.reviewer: [Known Issues](../release-notes/known-issues.md) +[NuGet 4.6 RTM](../release-notes/nuget-4.6-rtm.md) + [NuGet 4.5 RTM](../release-notes/nuget-4.5-rtm.md) [NuGet 4.4 RTM](../release-notes/nuget-4.4-rtm.md) From 3c9f11aa03a51babc06d2dd714e974de9da5765a Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Thu, 8 Mar 2018 13:00:51 -0800 Subject: [PATCH 0599/2943] Update and rename NuGet-4.6.md to NuGet-4.6-rtm.md --- docs/release-notes/{NuGet-4.6.md => NuGet-4.6-rtm.md} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename docs/release-notes/{NuGet-4.6.md => NuGet-4.6-rtm.md} (97%) diff --git a/docs/release-notes/NuGet-4.6.md b/docs/release-notes/NuGet-4.6-rtm.md similarity index 97% rename from docs/release-notes/NuGet-4.6.md rename to docs/release-notes/NuGet-4.6-rtm.md index ec4180b48..07a30ba0e 100644 --- a/docs/release-notes/NuGet-4.6.md +++ b/docs/release-notes/NuGet-4.6-rtm.md @@ -1,6 +1,6 @@ --- -title: NuGet 4.5 RTM Release Notes | Microsoft Docs +title: NuGet 4.6 RTM Release Notes | Microsoft Docs author: anangaur ms.author: anangaur manager: unnir @@ -67,4 +67,4 @@ ms.reviewer: * Can't install a package when there are some leftovers in the packages folder - [#492](https://github.com/NuGet/Home/issues/492) -[List of all issues fixed in this release](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.6") \ No newline at end of file +[List of all issues fixed in this release](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.6") From 9d4411a074679a66e07270229a262863e7718851 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Thu, 8 Mar 2018 13:51:20 -0800 Subject: [PATCH 0600/2943] Update TOC.md Added 4.6 release notes in the TOC --- docs/TOC.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/TOC.md b/docs/TOC.md index 6e3e5f428..814a25d0b 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -114,6 +114,7 @@ ## [Deleting packages](policies/deleting-packages.md) # Release notes ## [Known Issues](release-notes/known-issues.md) +## [NuGet 4.6 RTM](release-notes/NuGet-4.6-RTM.md) ## [NuGet 4.5 RTM](release-notes/NuGet-4.5-RTM.md) ## [NuGet 4.4 RTM](release-notes/NuGet-4.4-RTM.md) ## [NuGet 4.3 RTM](release-notes/NuGet-4.3-RTM.md) From de94214724f4f80a76ed54c11b5f12e94fb5a5ac Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Thu, 8 Mar 2018 14:03:57 -0800 Subject: [PATCH 0601/2943] Update Errors-and-Warnings.md --- docs/reference/Errors-and-Warnings.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/reference/Errors-and-Warnings.md b/docs/reference/Errors-and-Warnings.md index 92496a846..df181e210 100644 --- a/docs/reference/Errors-and-Warnings.md +++ b/docs/reference/Errors-and-Warnings.md @@ -125,7 +125,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | --- | --- | | **Issue** | The package cannot be found on any sources. | | **Example message** | *Unable to find package System.Missing. No packages exist with this id in source(s): dotnet-core, dotnet-roslyn, nuget.org* | -| **Solution** | Edit the project file or `packages.config` to correct the identifier of the package and/or its version number. Also check that the [NuGet configuration](../consume-packages/Configuring-NuGet-Behavior.md) identifies the package sources your expect to be using. | +| **Solution** | Edit the project file or `packages.config` to correct the identifier of the package and/or its version number. Also check that the [NuGet configuration](../consume-packages/Configuring-NuGet-Behavior.md) identifies the package sources your expect to be using. If you use packages that have [Semantic Versioning 2.0.0](https://docs.microsoft.com/en-us/nuget/reference/package-versioning#semantic-versioning-200), please make sure that you are using the [V3 feed](https://api.nuget.org/v3/index.json) in the [NuGet configuration](../consume-packages/Configuring-NuGet-Behavior.md). | ### NU1102 @@ -400,4 +400,4 @@ The errors and warnings listed here are available only with [PackageReference-ba | --- | --- | | **Issue** | Certificate chain building failed for the timestamp signature. The timestamp signing certificate is untrusted, revoked, or revocation information for the certificate is unavailable. | | **Example message** | *WARNING: NU3028: The revocation function was unable to check revocation for the certificate.* | -| **Solution** | Use a trusted and valid certificate. | \ No newline at end of file +| **Solution** | Use a trusted and valid certificate. | From 32981fc4c3f124dce5ff1f629d108bc4681158d1 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Thu, 8 Mar 2018 14:10:39 -0800 Subject: [PATCH 0602/2943] Update NuGet-4.6-rtm.md --- docs/release-notes/NuGet-4.6-rtm.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/release-notes/NuGet-4.6-rtm.md b/docs/release-notes/NuGet-4.6-rtm.md index 07a30ba0e..99a02126f 100644 --- a/docs/release-notes/NuGet-4.6-rtm.md +++ b/docs/release-notes/NuGet-4.6-rtm.md @@ -64,7 +64,6 @@ ms.reviewer: * Nuget add hangs on CentOS - [#2708](https://github.com/NuGet/Home/issues/2708) * Restore with packagesavemode -nupkg fails for json.net - [#2706](https://github.com/NuGet/Home/issues/2706) * Package Manager filter not available in vs output window for restore command - [#2704](https://github.com/NuGet/Home/issues/2704) -* Can't install a package when there are some leftovers in the packages folder - [#492](https://github.com/NuGet/Home/issues/492) [List of all issues fixed in this release](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.6") From 10efde2ceb14e490bfb464718a71366f5df7f6f1 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 8 Mar 2018 14:13:21 -0800 Subject: [PATCH 0603/2943] Tweaks per Nikolche packages.config isn't relevant in this article, plus he said that one should use VS to update the dependency rather than editing the file. --- docs/reference/Errors-and-Warnings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/Errors-and-Warnings.md b/docs/reference/Errors-and-Warnings.md index df181e210..8ed04ae09 100644 --- a/docs/reference/Errors-and-Warnings.md +++ b/docs/reference/Errors-and-Warnings.md @@ -125,7 +125,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | --- | --- | | **Issue** | The package cannot be found on any sources. | | **Example message** | *Unable to find package System.Missing. No packages exist with this id in source(s): dotnet-core, dotnet-roslyn, nuget.org* | -| **Solution** | Edit the project file or `packages.config` to correct the identifier of the package and/or its version number. Also check that the [NuGet configuration](../consume-packages/Configuring-NuGet-Behavior.md) identifies the package sources your expect to be using. If you use packages that have [Semantic Versioning 2.0.0](https://docs.microsoft.com/en-us/nuget/reference/package-versioning#semantic-versioning-200), please make sure that you are using the [V3 feed](https://api.nuget.org/v3/index.json) in the [NuGet configuration](../consume-packages/Configuring-NuGet-Behavior.md). | +| **Solution** | Examine the project's dependencies in Visual Studio be sure you're using the correct identifier for the package and its correct version number. Also check that the [NuGet configuration](../consume-packages/Configuring-NuGet-Behavior.md) identifies the package sources your expect to be using. If you use packages that have [Semantic Versioning 2.0.0](https://docs.microsoft.com/en-us/nuget/reference/package-versioning#semantic-versioning-200), please make sure that you are using the [V3 feed](https://api.nuget.org/v3/index.json) in the [NuGet configuration](../consume-packages/Configuring-NuGet-Behavior.md). | ### NU1102 From 493e8c9e3c0344fd6717a3ec3e9103423d44252c Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 8 Mar 2018 14:13:56 -0800 Subject: [PATCH 0604/2943] Typo --- docs/reference/Errors-and-Warnings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/Errors-and-Warnings.md b/docs/reference/Errors-and-Warnings.md index 8ed04ae09..67e0125cf 100644 --- a/docs/reference/Errors-and-Warnings.md +++ b/docs/reference/Errors-and-Warnings.md @@ -125,7 +125,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | --- | --- | | **Issue** | The package cannot be found on any sources. | | **Example message** | *Unable to find package System.Missing. No packages exist with this id in source(s): dotnet-core, dotnet-roslyn, nuget.org* | -| **Solution** | Examine the project's dependencies in Visual Studio be sure you're using the correct identifier for the package and its correct version number. Also check that the [NuGet configuration](../consume-packages/Configuring-NuGet-Behavior.md) identifies the package sources your expect to be using. If you use packages that have [Semantic Versioning 2.0.0](https://docs.microsoft.com/en-us/nuget/reference/package-versioning#semantic-versioning-200), please make sure that you are using the [V3 feed](https://api.nuget.org/v3/index.json) in the [NuGet configuration](../consume-packages/Configuring-NuGet-Behavior.md). | +| **Solution** | Examine the project's dependencies in Visual Studio to be sure you're using the correct package identifier and version number. Also check that the [NuGet configuration](../consume-packages/Configuring-NuGet-Behavior.md) identifies the package sources your expect to be using. If you use packages that have [Semantic Versioning 2.0.0](https://docs.microsoft.com/en-us/nuget/reference/package-versioning#semantic-versioning-200), please make sure that you are using the [V3 feed](https://api.nuget.org/v3/index.json) in the [NuGet configuration](../consume-packages/Configuring-NuGet-Behavior.md). | ### NU1102 From 8c4c29b38fb35b8a7304aa9047bc9e1bc49f71d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Thu, 8 Mar 2018 23:51:25 -0800 Subject: [PATCH 0605/2943] Improve registration leaf objects' documentation Fixes incorrect notes for the `dependencyGroups` property of registration leaf objects. --- docs/api/registration-base-url-resource.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api/registration-base-url-resource.md b/docs/api/registration-base-url-resource.md index 7fd6fa064..424aeacda 100644 --- a/docs/api/registration-base-url-resource.md +++ b/docs/api/registration-base-url-resource.md @@ -172,7 +172,7 @@ Name | Type | Required | Notes ------------------------ | -------------------------- | -------- | ----- @id | string | yes | The URL to document used to produce this object authors | string or array of strings | no | -dependencyGroups | array of objects | no | The URL to the package content (.nupkg) +dependencyGroups | array of objects | no | The dependencies of the package, grouped by target framework description | string | no | iconUrl | string | no | id | string | yes | The ID of the package From a9708b04a44455b6d74144202bc528c270f27594 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Fri, 9 Mar 2018 00:34:23 -0800 Subject: [PATCH 0606/2943] Fix typo in Signed Package Reference --- docs/reference/Signed-Packages-Reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/Signed-Packages-Reference.md b/docs/reference/Signed-Packages-Reference.md index a8c2efc49..d648b0a51 100644 --- a/docs/reference/Signed-Packages-Reference.md +++ b/docs/reference/Signed-Packages-Reference.md @@ -23,7 +23,7 @@ NuGet packages can include a digital signature that provides protection against Signed packages provide the strongest end-to-end validation. An author signature guarantees that the package has not been modified since the author signed the package, no matter from which repository or what transport method the package is delivered. -Consumers who demand a locked-down environment can require packages signed with an specific author certificate. +Consumers who demand a locked-down environment can require packages signed with a specific author certificate. Additionally, author-signed packages provide an extra authentication mechanism to the nuget.org publishing pipeline because the signing certificate must be registered ahead of time. From 437c95af525cccd347cf9e8545d3684556d2622e Mon Sep 17 00:00:00 2001 From: Ashish Jain Date: Fri, 9 Mar 2018 07:48:24 -0800 Subject: [PATCH 0607/2943] Update Source-and-Config-File-Transformations.md source code transformation files are applied even for `PackageReference` based projects, so fixing the doc. --- .../Source-and-Config-File-Transformations.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/create-packages/Source-and-Config-File-Transformations.md b/docs/create-packages/Source-and-Config-File-Transformations.md index 844c771ce..f581dc87e 100644 --- a/docs/create-packages/Source-and-Config-File-Transformations.md +++ b/docs/create-packages/Source-and-Config-File-Transformations.md @@ -17,15 +17,15 @@ ms.reviewer: # Transforming source code and configuration files -For projects using `packages.config`, NuGet supports the ability to make transformations to source code and configuration files at package install and uninstall times. Transformations are not applied when a package is installed in a project using [PackageReference](../consume-packages/package-references-in-project-files.md). +For projects using `packages.config`, NuGet supports the ability to make transformations to source code and configuration files at package install and uninstall times. Only Source code transformations are applied when a package is installed in a project using [PackageReference](../consume-packages/package-references-in-project-files.md). -A **source code transformation** applies one-way token replacement to files in the package's `content` folder when the package is installed, where tokens refer to Visual Studio [project properties](/dotnet/api/vslangproj.projectproperties?view=visualstudiosdk-2017&viewFallbackFrom=netframework-4.7). This allows you to insert a file into the project's namespace, or to customize code that would typically go into `global.asax` in an ASP.NET project. +A **source code transformation** applies one-way token replacement to files in the package's `content` or `contentFiles` folder (`content` for customers using `packages.config` and `contentFiles` for `PackageReference`) when the package is installed, where tokens refer to Visual Studio [project properties](/dotnet/api/vslangproj.projectproperties?view=visualstudiosdk-2017&viewFallbackFrom=netframework-4.7). This allows you to insert a file into the project's namespace, or to customize code that would typically go into `global.asax` in an ASP.NET project. A **config file transformation** allows you to modify files that already exist in a target project, such as `web.config` and `app.config`. For example, your package might need to add an item to the `modules` section in the config file. This transformation is done by including special files in the package that describe the sections to add to the configuration files. When a package is uninstalled, those same changes are then reversed, making this a two-way transformation. ## Specifying source code transformations -1. Files that you want to insert from the package into the project must be located within the package's `content` folder. For example, if you want a file called `ContosoData.cs` to be installed in a `Models` folder of the target project, it must be inside the `content\Models` folder in the package. +1. Files that you want to insert from the package into the project must be located within the package's `content` and `contentFiles` folders. For example, if you want a file called `ContosoData.cs` to be installed in a `Models` folder of the target project, it must be inside the `content\Models` and `contentFiles\{lang}\{tfm}\Models` folders in the package. 1. To instruct NuGet to apply token replacement at install time, append `.pp` to the source code file name. After installation, the file will not have the `.pp` extension. From 4e03445b489a3e85957b822688abfd145cefe589 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 9 Mar 2018 10:01:42 -0800 Subject: [PATCH 0608/2943] Update Errors-and-Warnings.md --- docs/reference/Errors-and-Warnings.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/reference/Errors-and-Warnings.md b/docs/reference/Errors-and-Warnings.md index 67e0125cf..66d0b9e42 100644 --- a/docs/reference/Errors-and-Warnings.md +++ b/docs/reference/Errors-and-Warnings.md @@ -392,7 +392,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | --- | --- | | **Issue** | Certificate chain building failed for the primary signature. The primary signing certificate is untrusted, revoked, or revocation information for the certificate is unavailable. | | **Example message** | *WARNING: NU3018: The revocation function was unable to check revocation for the certificate.* | -| **Solution** | Use a trusted and valid certificate. | +| **Solution** | Use a trusted and valid certificate. Check internet connectivity. | ### NU3028 @@ -400,4 +400,4 @@ The errors and warnings listed here are available only with [PackageReference-ba | --- | --- | | **Issue** | Certificate chain building failed for the timestamp signature. The timestamp signing certificate is untrusted, revoked, or revocation information for the certificate is unavailable. | | **Example message** | *WARNING: NU3028: The revocation function was unable to check revocation for the certificate.* | -| **Solution** | Use a trusted and valid certificate. | +| **Solution** | Use a trusted and valid certificate. Check internet connectivity. | From da64e69babdcf686fbffa363962f7b5ea2503fc9 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 9 Mar 2018 14:28:57 -0800 Subject: [PATCH 0609/2943] Update Configuring-NuGet-Behavior.md (#745) Thank you, @anangaur ! --- docs/consume-packages/Configuring-NuGet-Behavior.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/consume-packages/Configuring-NuGet-Behavior.md b/docs/consume-packages/Configuring-NuGet-Behavior.md index 83eb85ffd..cc3b47413 100644 --- a/docs/consume-packages/Configuring-NuGet-Behavior.md +++ b/docs/consume-packages/Configuring-NuGet-Behavior.md @@ -211,7 +211,7 @@ The following table describes where the `NuGetDefaults.Config` file should be st | OS Platform | NuGetDefaults.Config Location | | --- | --- | -| Windows | **NuGet 4.x+:** %ProgramFiles(x86)%\NuGet\Config
    **NuGet 3.x and earlier:** %PROGRAMDATA%\NuGet | +| Windows | **Visual Studio 2017 or NuGet 4.x+:** %ProgramFiles(x86)%\NuGet\Config
    **Visual Studio 2015 and earlier or NuGet 3.x and earlier:** %PROGRAMDATA%\NuGet | | Mac/Linux | $XDG_DATA_HOME (typically ~/.local/share)| ### NuGetDefaults.Config settings From 48d5b25aa337d28784f1423cf9e541ac0f406276 Mon Sep 17 00:00:00 2001 From: Cristina Manu Date: Fri, 9 Mar 2018 14:34:10 -0800 Subject: [PATCH 0610/2943] Add the document for API throttling values. --- docs/api/throttling.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 docs/api/throttling.md diff --git a/docs/api/throttling.md b/docs/api/throttling.md new file mode 100644 index 000000000..510c6e315 --- /dev/null +++ b/docs/api/throttling.md @@ -0,0 +1,23 @@ +The NuGet.org service API needs some configurable and enforceable upper limits on acceptable API usage. + +Initial planned throttling limits are based on the maximum load we've seen on these endpoints to date. Upon reaching the maximum allowed requests a 429 (too many messages) error code will be returned. + +# V1 OData API + +Throttling Type: **based on IP** + +Api | Throttling Values | Main use case | V3 APIs support +-- | -- | -- | -- +**GET** `/api/v1/Packages` | 1000 / minute | Query NuGet package metadata via v1 OData `Packages` collection | [package search documentation](https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource) +**GET** `/api/v1/Search()?searchTerm=&targetFramework=&includePrerelease=` | 3000 / minute | Search for NuGet packages via v1 Search endpoint | [package search documentation](https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource) + +# V2 OData API + +Throttling Type: **based on IP** + +Api | Throttling Values | Main use case | V3 APIs support +-- | -- | -- | -- +**GET** `/api/v2/Packages` | 20000 / minute | Query NuGet package metadata via v2 OData `Packages` collection | [package search documentation](https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource) +**GET** `/api/v2/Packages/$count` | 100 / minute | Query NuGet package count via v2 OData `Packages` collection | +**PUT** `/api/v2/package` | 100 / minute | Upload a new NuGet package (version) via v2 push endpoint | +**DELETE** `/api/v2/package/{id}/{version}` | 100 / minute | Unlist a NuGet package (version) via v2 endpoint | From ca2e30d967ed6ccec6c57f8edb8bc4aad69c5d66 Mon Sep 17 00:00:00 2001 From: Cristina Manu Date: Fri, 9 Mar 2018 14:44:05 -0800 Subject: [PATCH 0611/2943] fix the throttling type --- docs/api/throttling.md | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/docs/api/throttling.md b/docs/api/throttling.md index 510c6e315..fa5fc1534 100644 --- a/docs/api/throttling.md +++ b/docs/api/throttling.md @@ -4,20 +4,16 @@ Initial planned throttling limits are based on the maximum load we've seen on th # V1 OData API -Throttling Type: **based on IP** - -Api | Throttling Values | Main use case | V3 APIs support --- | -- | -- | -- -**GET** `/api/v1/Packages` | 1000 / minute | Query NuGet package metadata via v1 OData `Packages` collection | [package search documentation](https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource) -**GET** `/api/v1/Search()?searchTerm=&targetFramework=&includePrerelease=` | 3000 / minute | Search for NuGet packages via v1 Search endpoint | [package search documentation](https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource) +Api | Throttling Type | Throttling Values | Main use case | V3 APIs support +-- | -- | -- | -- | -- +**GET** `/api/v1/Packages` | IP | 1000 / minute | Query NuGet package metadata via v1 OData `Packages` collection | [package search documentation](https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource) +**GET** `/api/v1/Search()?searchTerm=&targetFramework=&includePrerelease=` | IP | 3000 / minute | Search for NuGet packages via v1 Search endpoint | [package search documentation](https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource) # V2 OData API -Throttling Type: **based on IP** - -Api | Throttling Values | Main use case | V3 APIs support --- | -- | -- | -- -**GET** `/api/v2/Packages` | 20000 / minute | Query NuGet package metadata via v2 OData `Packages` collection | [package search documentation](https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource) -**GET** `/api/v2/Packages/$count` | 100 / minute | Query NuGet package count via v2 OData `Packages` collection | -**PUT** `/api/v2/package` | 100 / minute | Upload a new NuGet package (version) via v2 push endpoint | -**DELETE** `/api/v2/package/{id}/{version}` | 100 / minute | Unlist a NuGet package (version) via v2 endpoint | +Api | Throttling Type | Throttling Values | Main use case | V3 APIs support +-- | -- | -- | -- | -- +**GET** `/api/v2/Packages` | IP | 20000 / minute | Query NuGet package metadata via v2 OData `Packages` collection | [package search documentation](https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource) +**GET** `/api/v2/Packages/$count` | IP | 100 / minute | Query NuGet package count via v2 OData `Packages` collection | +**PUT** `/api/v2/package` | API Key | 100 / minute | Upload a new NuGet package (version) via v2 push endpoint | +**DELETE** `/api/v2/package/{id}/{version}` | API Key | 100 / minute | Unlist a NuGet package (version) via v2 endpoint | From ba77403ad7614af214006601471c4eb3cbd3748d Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 9 Mar 2018 15:30:55 -0800 Subject: [PATCH 0612/2943] Update Creating-a-Package.md Fixing an issue pointed in the comments section. --- docs/create-packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Creating-a-Package.md b/docs/create-packages/Creating-a-Package.md index 4e2f18738..586975f69 100644 --- a/docs/create-packages/Creating-a-Package.md +++ b/docs/create-packages/Creating-a-Package.md @@ -437,7 +437,7 @@ You can test installations manually in Visual Studio or on the command line usin For automated testing, the basic process is as follows: 1. Copy the `.nupkg` file to a local folder. -1. Add the folder to your package sources using the `nuget sources -name -source ` command (see [nuget sources](../tools/cli-ref-sources.md)). Note that you need only set this local source once on any given computer. +1. Add the folder to your package sources using the `nuget sources add -name -source ` command (see [nuget sources](../tools/cli-ref-sources.md)). Note that you need only set this local source once on any given computer. 1. Install the package from that source using `nuget install -source ` where `` matches the name of your source as given to `nuget sources`. Specifying the source ensures that the package is installed from that source alone. 1. Examine the file system to check that files are installed correctly. From 59a7afba0d7f6251cd31b5a4073364077ca6c49c Mon Sep 17 00:00:00 2001 From: Cristina Manu Date: Fri, 9 Mar 2018 17:24:32 -0800 Subject: [PATCH 0613/2943] Add the sample response --- docs/api/throttling.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/api/throttling.md b/docs/api/throttling.md index fa5fc1534..71165cffb 100644 --- a/docs/api/throttling.md +++ b/docs/api/throttling.md @@ -1,6 +1,8 @@ The NuGet.org service API needs some configurable and enforceable upper limits on acceptable API usage. Initial planned throttling limits are based on the maximum load we've seen on these endpoints to date. Upon reaching the maximum allowed requests a 429 (too many messages) error code will be returned. +A sample response is: +{ "statusCode": 429, "message": "Rate limit is exceeded. Try again in 58 seconds." } # V1 OData API From 6fa0d0a93ac79569939dbd7181d9284ab407001c Mon Sep 17 00:00:00 2001 From: Cristina Manu Date: Fri, 9 Mar 2018 18:09:21 -0800 Subject: [PATCH 0614/2943] Updates --- docs/api/throttling.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/api/throttling.md b/docs/api/throttling.md index 71165cffb..39839b35b 100644 --- a/docs/api/throttling.md +++ b/docs/api/throttling.md @@ -1,8 +1,15 @@ +# NuGet API rate limiting + The NuGet.org service API needs some configurable and enforceable upper limits on acceptable API usage. -Initial planned throttling limits are based on the maximum load we've seen on these endpoints to date. Upon reaching the maximum allowed requests a 429 (too many messages) error code will be returned. -A sample response is: -{ "statusCode": 429, "message": "Rate limit is exceeded. Try again in 58 seconds." } +Initial planned throttling limits are based on the maximum load we've seen on these endpoints to date. Upon reaching the maximum allowed requests an error response returns. + + { + "statusCode": 429, + "message": "Rate limit is exceeded. Try again in 56 seconds." + } + + # V1 OData API From 81832518313a54421a166eb3ff99d80792e4d2c5 Mon Sep 17 00:00:00 2001 From: Ken Cenerelli Date: Sun, 11 Mar 2018 21:33:53 -0400 Subject: [PATCH 0615/2943] Update Project-System-Support.md Removed excess word --- docs/visual-studio-extensibility/Project-System-Support.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/visual-studio-extensibility/Project-System-Support.md b/docs/visual-studio-extensibility/Project-System-Support.md index 4bccc8ed9..43dde169b 100644 --- a/docs/visual-studio-extensibility/Project-System-Support.md +++ b/docs/visual-studio-extensibility/Project-System-Support.md @@ -104,7 +104,7 @@ Remember to add/remove capabilities from the `ActualProjectCapabilities` set bas ## Responding to queries A project declares this capability by supporting the `VSHPROPID_ProjectCapabilitiesChecker` property through the `IVsHierarchy::GetProperty`. It should return an instance of -`Microsoft.VisualStudio.Shell.Interop.IVsBooleanSymbolPresenceChecker`, which is defined in the `Microsoft.VisualStudio.Shell.Interop.14.0.DesignTime.dll` assembly. Reference this assembly by installing the [its NuGet package](https://www.nuget.org/packages/Microsoft.VisualStudio.Shell.Interop.14.0.DesignTime). +`Microsoft.VisualStudio.Shell.Interop.IVsBooleanSymbolPresenceChecker`, which is defined in the `Microsoft.VisualStudio.Shell.Interop.14.0.DesignTime.dll` assembly. Reference this assembly by installing [its NuGet package](https://www.nuget.org/packages/Microsoft.VisualStudio.Shell.Interop.14.0.DesignTime). For example, you might add the following `case` statement to your `IVsHierarchy::GetProperty` method's `switch` statement: From 7458fb86757606fe467aa7fded332d2b0f00ecc4 Mon Sep 17 00:00:00 2001 From: Ken Cenerelli Date: Sun, 11 Mar 2018 21:38:35 -0400 Subject: [PATCH 0616/2943] Update Managing-the-NuGet-Cache.md Removed excess word --- docs/consume-packages/Managing-the-NuGet-Cache.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/consume-packages/Managing-the-NuGet-Cache.md b/docs/consume-packages/Managing-the-NuGet-Cache.md index da0d0a82d..2167075a3 100644 --- a/docs/consume-packages/Managing-the-NuGet-Cache.md +++ b/docs/consume-packages/Managing-the-NuGet-Cache.md @@ -50,4 +50,4 @@ The following errors can occur when using `nuget locals`: - **Clearing local resources failed: Unable to delete one or more files** - **The directory is not empty** -These indicate that you either do not have permission to delete files in the cache, or that one or more files in the cache are in use by another process, which must be closed before the those files can be removed. +These indicate that you either do not have permission to delete files in the cache, or that one or more files in the cache are in use by another process, which must be closed before the files can be removed. From bc1fe1a33a37cddf09188f69113bf7d1b05be5ae Mon Sep 17 00:00:00 2001 From: Cristina Manu Date: Mon, 12 Mar 2018 16:06:22 -0700 Subject: [PATCH 0617/2943] Add additional table for package PUT and DELETE --- docs/api/throttling.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/api/throttling.md b/docs/api/throttling.md index 39839b35b..574e110a2 100644 --- a/docs/api/throttling.md +++ b/docs/api/throttling.md @@ -24,5 +24,11 @@ Api | Throttling Type | Throttling Values | Main use case | V3 APIs support -- | -- | -- | -- | -- **GET** `/api/v2/Packages` | IP | 20000 / minute | Query NuGet package metadata via v2 OData `Packages` collection | [package search documentation](https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource) **GET** `/api/v2/Packages/$count` | IP | 100 / minute | Query NuGet package count via v2 OData `Packages` collection | -**PUT** `/api/v2/package` | API Key | 100 / minute | Upload a new NuGet package (version) via v2 push endpoint | -**DELETE** `/api/v2/package/{id}/{version}` | API Key | 100 / minute | Unlist a NuGet package (version) via v2 endpoint | + + +# V2 API + +Api | Throttling Type | Throttling Values | Main use case +-- | -- | -- | -- +**PUT** `/api/v2/package` | API Key | 100 / minute | Upload a new NuGet package (version) via v2 push endpoint +**DELETE** `/api/v2/package/{id}/{version}` | API Key | 100 / minute | Unlist a NuGet package (version) via v2 endpoint From c5d4e677df3c0bbb261422472f03b93cd26a1a25 Mon Sep 17 00:00:00 2001 From: Cristina Manu Date: Mon, 12 Mar 2018 16:13:04 -0700 Subject: [PATCH 0618/2943] Update --- docs/api/throttling.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/api/throttling.md b/docs/api/throttling.md index 574e110a2..0818166c9 100644 --- a/docs/api/throttling.md +++ b/docs/api/throttling.md @@ -1,6 +1,6 @@ # NuGet API rate limiting -The NuGet.org service API needs some configurable and enforceable upper limits on acceptable API usage. +I order to prevent the extreme overload on NuGet Server resources the NuGet.org service API needs some configurable and enforceable upper limits on acceptable API usage. Initial planned throttling limits are based on the maximum load we've seen on these endpoints to date. Upon reaching the maximum allowed requests an error response returns. @@ -25,7 +25,6 @@ Api | Throttling Type | Throttling Values | Main use case | V3 APIs support **GET** `/api/v2/Packages` | IP | 20000 / minute | Query NuGet package metadata via v2 OData `Packages` collection | [package search documentation](https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource) **GET** `/api/v2/Packages/$count` | IP | 100 / minute | Query NuGet package count via v2 OData `Packages` collection | - # V2 API Api | Throttling Type | Throttling Values | Main use case From c10aa63acab3ac274a12e3f401ac68fcd13df89d Mon Sep 17 00:00:00 2001 From: Rohit Agrawal Date: Mon, 12 Mar 2018 17:49:37 -0700 Subject: [PATCH 0619/2943] update description of copyToOutput for contentFiles Based on feedback from : https://github.com/NuGet/Home/issues/6661 --- docs/reference/nuspec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/nuspec.md b/docs/reference/nuspec.md index 87ce75dd4..7dd8140a1 100644 --- a/docs/reference/nuspec.md +++ b/docs/reference/nuspec.md @@ -539,7 +539,7 @@ These files are specified with a set of attributes that describe how they should | **include** | (Required) The location of the file or files to include, subject to exclusions specified by the `exclude` attribute. The path is relative to the `.nuspec` file unless an absolute path is specified. The wildcard character `*` is allowed, and the double wildcard `**` implies a recursive folder search. | | **exclude** | A semicolon-delimited list of files or file patterns to exclude from the `src` location. The wildcard character `*` is allowed, and the double wildcard `**` implies a recursive folder search. | | **buildAction** | The build action to assign to the content item for MSBuild, such as `Content`, `None`, `Embedded Resource`, `Compile`, etc. The default is `Compile`. | -| **copyToOutput** | A Boolean indicating whether to copy content items to the build output folder. The default is false. | +| **copyToOutput** | A Boolean indicating whether to copy content items to the build (or publish) output folder. The default is false. | | **flatten** | A Boolean indicating whether to copy content items to a single folder in the build output (true), or to preserve the folder structure in the package (false). This flag only works when copyToOutput flag is set to true. The default is false. | When installing a package, NuGet applies the child elements of `` from top to bottom. If multiple entries match the same file then all entries are applied. The top-most entry overrides the lower entries if there is a conflict for the same attribute. From bba2981d09611ebc954c95af8dda53779f086733 Mon Sep 17 00:00:00 2001 From: Dan Miser Date: Tue, 13 Mar 2018 08:30:25 -0500 Subject: [PATCH 0620/2943] Space expansion consistency The text and the code did not match --- docs/reference/nuget-config-file.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/nuget-config-file.md b/docs/reference/nuget-config-file.md index 92d84ddf5..11def863a 100644 --- a/docs/reference/nuget-config-file.md +++ b/docs/reference/nuget-config-file.md @@ -155,7 +155,7 @@ Stores usernames and passwords for sources, typically specified with the `-usern **Example:** -In the config file, the `` element contains child nodes for each applicable source name (spaces in the name are replaced with `_x0020+`). That is, for sources named "Contoso" and "Test Source", the config file contains the following when using encrypted passwords: +In the config file, the `` element contains child nodes for each applicable source name (spaces in the name are replaced with `_x0020_`). That is, for sources named "Contoso" and "Test Source", the config file contains the following when using encrypted passwords: ```xml From 323c37b69cf8d0a505a52ac50361a2d6e31780ab Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 13 Mar 2018 08:36:01 -0700 Subject: [PATCH 0621/2943] Enabling PDF again --- .openpublishing.publish.config.json | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/.openpublishing.publish.config.json b/.openpublishing.publish.config.json index 2560421ae..3a6df0300 100644 --- a/.openpublishing.publish.config.json +++ b/.openpublishing.publish.config.json @@ -19,6 +19,8 @@ ], "notification_subscribers": [], "branches_to_filter": [], + "git_repository_url_open_to_public_contributors": "https://github.com/NuGet/docs.microsoft.com-nuget", + "git_repository_branch_open_to_public_contributors": "master", "skip_source_output_uploading": false, "contribution_branch_mappings": {}, "dependent_repositories": [ @@ -31,18 +33,25 @@ { "path_to_root": "_themes.pdf", "url": "https://github.com/Microsoft/templates.docs.msft.pdf", - "branch": "master" + "branch": "master", + "branch_mapping": {} } ], "branch_target_mapping": { "live": [ "Publish", "Pdf" + ], + "master": [ + "Publish", + "PDF" ] - }, + }, + "need_generate_pdf_url_template": false, "Targets": { "Pdf": { "template_folder": "_themes.pdf" } - } + }, + "need_generate_pdf": false, } From b42f8633dd28d282cf10dc2d4d2425e945113c57 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 13 Mar 2018 08:38:49 -0700 Subject: [PATCH 0622/2943] Correction --- .openpublishing.publish.config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.openpublishing.publish.config.json b/.openpublishing.publish.config.json index 3a6df0300..4f921609d 100644 --- a/.openpublishing.publish.config.json +++ b/.openpublishing.publish.config.json @@ -53,5 +53,5 @@ "template_folder": "_themes.pdf" } }, - "need_generate_pdf": false, + "need_generate_pdf": false } From 61e905d858de7862d7bf601efb8eea73afda6177 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 13 Mar 2018 11:39:04 -0700 Subject: [PATCH 0623/2943] PDF config --- .openpublishing.publish.config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.openpublishing.publish.config.json b/.openpublishing.publish.config.json index 4f921609d..d5ac03d9d 100644 --- a/.openpublishing.publish.config.json +++ b/.openpublishing.publish.config.json @@ -47,7 +47,7 @@ "PDF" ] }, - "need_generate_pdf_url_template": false, + "need_generate_pdf_url_template": true, "Targets": { "Pdf": { "template_folder": "_themes.pdf" From 0c076b0cb30eec8703232c2ec0d8a1bd2bb850d3 Mon Sep 17 00:00:00 2001 From: Banani-Rath Date: Tue, 13 Mar 2018 11:39:04 -0700 Subject: [PATCH 0624/2943] Update .openpublishing.publish.config.json --- .openpublishing.publish.config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.openpublishing.publish.config.json b/.openpublishing.publish.config.json index 4f921609d..780839c38 100644 --- a/.openpublishing.publish.config.json +++ b/.openpublishing.publish.config.json @@ -47,7 +47,7 @@ "PDF" ] }, - "need_generate_pdf_url_template": false, + "need_generate_pdf_url_template": true, "Targets": { "Pdf": { "template_folder": "_themes.pdf" From b5cfa0c7288d97c4df77b42b8920a067b9e2396d Mon Sep 17 00:00:00 2001 From: Rohit Agrawal Date: Tue, 13 Mar 2018 12:37:30 -0700 Subject: [PATCH 0625/2943] suggest way to not build when packing using a nuspec --- docs/reference/msbuild-targets.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index fbbcca9ad..4a780d9a9 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -208,6 +208,8 @@ If using MSBuild to pack your project, use a command like the following: msbuild /t:pack /p:NuspecFile= /p:NuspecProperties=<> /p:NuspecBasePath= ``` +Please note that packing a nuspec using dotnet.exe or msbuild also leads to building the project by default. This can be avoided by passing ```--no-build``` property to dotnet.exe, which is the equivalent of setting ```true ``` in your project file. + ## restore target `MSBuild /t:restore` (which `nuget restore` and `dotnet restore` use with .NET Core projects), restores packages referenced in the project file as follows: From dd6e60a9888f5a7c1ac3b74b8ea2e6f7f68f578f Mon Sep 17 00:00:00 2001 From: Rohit Agrawal Date: Tue, 13 Mar 2018 12:41:28 -0700 Subject: [PATCH 0626/2943] make the use of dummy csproj for nuspec clear --- docs/reference/msbuild-targets.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index 4a780d9a9..2738207b0 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -190,7 +190,7 @@ When using `MSBuild /t:pack /p:IsTool=true`, all output files, as specified in t ### Packing using a .nuspec -You can use a `.nuspec` file to pack your project provided that you have a project file to import `NuGet.Build.Tasks.Pack.targets` so that the pack task can be executed. The following three MSBuild properties are relevant to packing using a `.nuspec`: +You can use a `.nuspec` file to pack your project provided that you have a SDK project file to import `NuGet.Build.Tasks.Pack.targets` so that the pack task can be executed. 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`: 1. `NuspecFile`: relative or absolute path to the `.nuspec` file being used for packing. 1. `NuspecProperties`: a semicolon-separated list of key=value pairs. Due to the way MSBuild command-line parsing works, multiple properties must be specified as follows: `/p:NuspecProperties=\"key1=value1;key2=value2\"`. From 133d55d4301cc0ff2c8e644498d95b3b2b42b894 Mon Sep 17 00:00:00 2001 From: Rohit Agrawal Date: Tue, 13 Mar 2018 14:36:34 -0700 Subject: [PATCH 0627/2943] provide example csproj to pack nuspec --- docs/reference/msbuild-targets.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index 2738207b0..081704829 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -190,7 +190,7 @@ When using `MSBuild /t:pack /p:IsTool=true`, all output files, as specified in t ### Packing using a .nuspec -You can use a `.nuspec` file to pack your project provided that you have a SDK project file to import `NuGet.Build.Tasks.Pack.targets` so that the pack task can be executed. 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`: +You can use a `.nuspec` file to pack your project provided that you have a SDK project file to 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. 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`: 1. `NuspecFile`: relative or absolute path to the `.nuspec` file being used for packing. 1. `NuspecProperties`: a semicolon-separated list of key=value pairs. Due to the way MSBuild command-line parsing works, multiple properties must be specified as follows: `/p:NuspecProperties=\"key1=value1;key2=value2\"`. @@ -210,6 +210,21 @@ msbuild /t:pack /p:NuspecFile= /p:Nu Please note that packing a nuspec using dotnet.exe or msbuild also leads to building the project by default. This can be avoided by passing ```--no-build``` property to dotnet.exe, which is the equivalent of setting ```true ``` in your project file. +An example of a csproj file to pack a nuspec file is: + +``` + + + netstandard2.0 + true + false + PATH_TO_NUSPEC_FILE + add nuspec properties here + optional to provide + + +``` + ## restore target `MSBuild /t:restore` (which `nuget restore` and `dotnet restore` use with .NET Core projects), restores packages referenced in the project file as follows: From 80950d6ebf35339fb3ce3629ba80ab512e1f0245 Mon Sep 17 00:00:00 2001 From: Rohit Agrawal Date: Tue, 13 Mar 2018 14:37:57 -0700 Subject: [PATCH 0628/2943] update description --- docs/reference/msbuild-targets.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index 081704829..a877cc12c 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -208,7 +208,7 @@ If using MSBuild to pack your project, use a command like the following: msbuild /t:pack /p:NuspecFile= /p:NuspecProperties=<> /p:NuspecBasePath= ``` -Please note that packing a nuspec using dotnet.exe or msbuild also leads to building the project by default. This can be avoided by passing ```--no-build``` property to dotnet.exe, which is the equivalent of setting ```true ``` in your project file. +Please note that packing a nuspec using dotnet.exe or msbuild also leads to building the project by default. This can be avoided by passing ```--no-build``` property to dotnet.exe, which is the equivalent of setting ```true ``` in your project file, along with setting ```false ``` in the project file An example of a csproj file to pack a nuspec file is: From 32ff1a0432ef4a99ccccafcd4c5158e0bff2b560 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 13 Mar 2018 14:38:20 -0700 Subject: [PATCH 0629/2943] Improving restore troubleshooting --- docs/consume-packages/Package-Restore.md | 4 +- .../Package-restore-troubleshooting.md | 89 +++++++++++++++++-- docs/reference/nuget-config-file.md | 2 - 3 files changed, 83 insertions(+), 12 deletions(-) diff --git a/docs/consume-packages/Package-Restore.md b/docs/consume-packages/Package-Restore.md index 5633bd30d..0d7bcf8ac 100644 --- a/docs/consume-packages/Package-Restore.md +++ b/docs/consume-packages/Package-Restore.md @@ -54,7 +54,7 @@ Package restore is primarily enabled through **Tools > Options > NuGet Package M ![Controlling package restore behaviors through NuGet Package Manager options](media/Restore-01-AutoRestoreOptions.png) -- **Allow NuGet to download missing packages**: controls all forms of package restore by changing the `packageRestore/enabled` setting in the `%AppData%\NuGet\NuGet.Config` file as shown below. +- **Allow NuGet to download missing packages**: controls all forms of package restore by changing the `packageRestore/enabled` setting in the `%AppData%\NuGet\NuGet.Config` file as shown below. In Visual Studio, this setting allows the **Restore NuGet Packages** command on the solution's context menu to work. ```xml @@ -69,7 +69,7 @@ Package restore is primarily enabled through **Tools > Options > NuGet Package M > [!Note] > The `packageRestore/enabled` setting can be overridden globally by setting an environment variable called **EnableNuGetPackageRestore** with a value of TRUE or FALSE before launching Visual Studio or starting a build. -- **Automatically check for missing packages during build in Visual Studio**: controls automatic restore by changing the `packageRestore/automatic` setting in the `%AppData%\NuGet\NuGet.Config` file as shown below. +- **Automatically check for missing packages during build in Visual Studio**: controls automatic restore by changing the `packageRestore/automatic` setting in the `%AppData%\NuGet\NuGet.Config` file as shown below. When this option is set, running a build from Visual Studio automatically restores any missing packages. The option does not affect builds run from the command line using MSBuild. ```xml ... diff --git a/docs/consume-packages/Package-restore-troubleshooting.md b/docs/consume-packages/Package-restore-troubleshooting.md index 5c373765a..73f6d629c 100644 --- a/docs/consume-packages/Package-restore-troubleshooting.md +++ b/docs/consume-packages/Package-restore-troubleshooting.md @@ -3,7 +3,7 @@ title: Troubleshooting NuGet Package Restore in Visual Studio | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 10/24/2017 +ms.date: 03/13/2018 ms.topic: article ms.prod: nuget ms.technology: null @@ -14,26 +14,99 @@ ms.reviewer: - unniravindranathan --- -# Troubleshooting package restore errors in Visual Studio +# Troubleshooting package restore errors -> [!Note] -> This page focuses on common errors when restoring packages in Visual Studio and steps to resolve them. For how-to restore packages, see [Package restore](../consume-packages/package-restore.md#enabling-and-disabling-package-restore). +This article focuses on common errors when restoring packages and steps to resolve them. For complete details on restoring packages, see [Package restore](../consume-packages/package-restore.md#enabling-and-disabling-package-restore). -By default, building a project in Visual Studio automatically restores NuGet packages referenced in the project. However, builds will fail if package restore is disabled in the **Tools > Options > NuGet Package Manager > Package Restore** settings and the necessary packages are not available on your computer. In these cases you may see the following errors: +If the instructions here do not work for you, [please file an issue on GitHub](https://github.com/NuGet/docs.microsoft.com-nuget/issues) so that we can examine your scenario more carefully. Do not use the "Is this page helpful?" control shown on this page because it doesn't give us the ability to contact you for more information. + + + +## This project references NuGet package(s) that are missing on this computer + +Complete error message: ```output This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. The missing file is {name}. ``` +This error occurs you attempt to build a project that contains references to one or more NuGet packages, but those packages are not presently cached in the project. (Packages are cached in a `packages` folder at the solution root if the project uses `packages.config`, or in the `obj/project.assets.json` file if the project uses the PackageReference format.) + +This situation commonly occurs when you obtain the project's source code from source control or another download. Packages are typically omitted from source control or downloads because they can be restored from package feeds like nuget.org (see [Packages and source control](Packages-and-Source-Control.md)). Including them would otherwise bloat the repository or create unnecessarily large .zip files. + +Use one of the following methods to restore the packages: + +- For .NET Core projects, run `dotnet restore` or `dotnet build` (which automatically runs restore). +- In Visual Studio, right-click the solution and select **Restore NuGet packages**, or right-click the project and select **Build**. If package restore isn't enabled, however, you'll see the error described in the [consent](#consent) section below. +- On the command line, run `nuget restore` (except for projects created with `dotnet`, in which case use `dotnet restore`). +- On the command line with projects using the PackageReference format, run `msbuild /t:restore`. + +After a successful restore, you should see either a `packages` folder (when using `packages.config`) or the `obj/project.assets.json` file (when using PackageReference). The project should now build successfully. If not, [file an issue on GitHub](https://github.com/NuGet/docs.microsoft.com-nuget/issues) so we can follow up with you. + + + +## Assets file project.assets.json not found + +Complete error message: + +```output +Assets file '\project.assets.json' not found. Run a NuGet package restore to generate this file. +``` + +This error occurs for the same reasons as explained in the [previous section](#missing), and has the same remedies. For example, running `msbuild` on a .NET Core project that's been obtained from source control won't automatically restore packages. In this case, run `msbuild /t:restore` followed by `msbuild`, or use `dotnet build` (which restores packages automatically). + + + +## One or more NuGet packages need to be restored by couldn't be because consent has not been granted + +Complete error message: + ```output One or more NuGet packages need to be restored but couldn't be because consent has not been granted. To give consent, open the Visual Studio Options dialog, click on the NuGet Package Manager node and check 'Allow NuGet to download missing packages during build.' You can also give consent by setting the environment variable -'EnableNuGetPackageRestore' to 'true'. Missing packages: {name} +'EnableNuGetPackageRestore' to 'true'. Missing packages: {name} ``` -To enable package restore, open **Tools > Options > NuGet Package Manager** and select the options for **Allow NuGet to download missing packages** and **Automatically check for missing packages during build in Visual Studio**: +This error indicates that package restore is disabled in your NuGet configuration, that is, the applicable `nuget.config` file (typically `%AppData%\NuGet\NuGet.Config`) contains the following: + + ```xml + + + + + + + + ``` + +To enable package restore and automatic restore on build, set both keys to true: + + ```xml + + + + + + + + ``` + +You can edit these settings directly, or by opening **Tools > Options > NuGet Package Manager** in Visual Studio and setting the options for **Allow NuGet to download missing packages** and **Automatically check for missing packages during build in Visual Studio** (shown below). To enable restore, make sure both options are selected, then try restoring packages again or running a build. + +![Enable NuGet package restore in Tool/Options](../consume-packages/media/restore-01-autorestoreoptions.png) + +> [!Warning] +> If you edit the `packageRestore` settings directly in `nuget.config`, restart Visual Studio so that the options dialog box shows the current values. + +## Other potential conditions + +- You may encounter build errors due to missing files, with a message saying to use NuGet restore to download them. However, running a restore might say, "All packages are already installed and there is nothing to restore." In this case, delete the `packages` folder (when using `packages.config`) or the `obj/project.assets.json` file (when using PackageReference) and run restore again. + +- When obtaining a project from source control, your project folders may be set to read-only. Change the folder permissions and try restoring packages again. + +- You may be using an old version of NuGet. Check [nuget.org/downloads](https://www.nuget.org/downloads) for the latest recommended versions. For Visual Studio 2015, we recommend 3.6.0. -![enable NuGet package restore in Tool/Options](../consume-packages/media/restore-01-autorestoreoptions.png) +If you encounter other problems, [file an issue on GitHub](https://github.com/NuGet/docs.microsoft.com-nuget/issues) so we can get more details from you. \ No newline at end of file diff --git a/docs/reference/nuget-config-file.md b/docs/reference/nuget-config-file.md index 11def863a..d103a7413 100644 --- a/docs/reference/nuget-config-file.md +++ b/docs/reference/nuget-config-file.md @@ -83,8 +83,6 @@ Configures whether NuGet does automatic binding redirects when a package is inst ## packageRestore section -*Ignored in all current versions (2.7+)* - Controls package restore during builds. | Key | Value | From c1c26352bfa848bb1a9c199e76714c9e4a7049cf Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 13 Mar 2018 14:50:42 -0700 Subject: [PATCH 0630/2943] More feedback changes --- .../consume-packages/Overview-and-Workflow.md | 2 +- .../Package-restore-troubleshooting.md | 36 +++++++++---------- ...tall-and-use-a-package-in-visual-studio.md | 2 +- docs/reference/msbuild-targets.md | 9 ++--- 4 files changed, 25 insertions(+), 24 deletions(-) diff --git a/docs/consume-packages/Overview-and-Workflow.md b/docs/consume-packages/Overview-and-Workflow.md index b1447e498..e13be166a 100644 --- a/docs/consume-packages/Overview-and-Workflow.md +++ b/docs/consume-packages/Overview-and-Workflow.md @@ -22,7 +22,7 @@ Between nuget.org and private package galleries that your organization might est \* _Except with `nuget install` from the command-line, in which case it's necessary to edit the configuration files by hand. See the [install command reference](../tools/cli-ref-install.md)._ -NuGet remembers the identity and version number of each installed package, recording it in either `packages.config` or the project file, depending on project type and your version of NuGet. With NuGet 4.0+, [storing dependencies in the project file, or PackageReference](../consume-packages/package-references-in-project-files.md) is generally the default, although this is configurable in Visual Studio through the [Package Manager UI options](../tools/package-manager-ui.md). In any case, you can look in the appropriate file at any time to see the full list of dependencies for your project. +NuGet remembers the identity and version number of each installed package, recording it in either [`packages.config`](../reference/packages-config.md) or the project file, depending on project type and your version of NuGet. With NuGet 4.0+, [storing dependencies in the project file, or PackageReference](../consume-packages/package-references-in-project-files.md) is generally the default, although this is configurable in Visual Studio through the [Package Manager UI options](../tools/package-manager-ui.md). In any case, you can look in the appropriate file at any time to see the full list of dependencies for your project. > [!Tip] > It's prudent to always check the license for each package you intend to use in your software. On nuget.org, you find a **License Info** link on the right side of each package's description page. If a package does not specify license terms, contact the package owner directly using the **Contact owners** link on the package page. Microsoft does not license any intellectual property to you from third party package providers and is not responsible for information provided by third parties. diff --git a/docs/consume-packages/Package-restore-troubleshooting.md b/docs/consume-packages/Package-restore-troubleshooting.md index 73f6d629c..440263752 100644 --- a/docs/consume-packages/Package-restore-troubleshooting.md +++ b/docs/consume-packages/Package-restore-troubleshooting.md @@ -72,27 +72,27 @@ during build.' You can also give consent by setting the environment variable This error indicates that package restore is disabled in your NuGet configuration, that is, the applicable `nuget.config` file (typically `%AppData%\NuGet\NuGet.Config`) contains the following: - ```xml - - - - - - - - ``` +```xml + + + + + + + +``` To enable package restore and automatic restore on build, set both keys to true: - ```xml - - - - - - - - ``` +```xml + + + + + + + +``` You can edit these settings directly, or by opening **Tools > Options > NuGet Package Manager** in Visual Studio and setting the options for **Allow NuGet to download missing packages** and **Automatically check for missing packages during build in Visual Studio** (shown below). To enable restore, make sure both options are selected, then try restoring packages again or running a build. diff --git a/docs/quickstart/install-and-use-a-package-in-visual-studio.md b/docs/quickstart/install-and-use-a-package-in-visual-studio.md index 0bf8b7fd7..26f3d3f28 100644 --- a/docs/quickstart/install-and-use-a-package-in-visual-studio.md +++ b/docs/quickstart/install-and-use-a-package-in-visual-studio.md @@ -36,7 +36,7 @@ NuGet packages can be installed into a .NET project of some kind. For this walkt ## Add the Newtonsoft.Json NuGet package -To install the package, you can use either the Package Manager UI or the Package Manager Console. +To install the package, you can use either the Package Manager UI or the Package Manager Console. When you install a package, NuGet records the dependency in either your project file or a `packages.config` file. For more information, see [Package consumption overview and workflow](../consume-packages/Overview-and-Workflow.md). ### Package Manager UI diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index fbbcca9ad..e64ba4c8a 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -3,7 +3,7 @@ title: NuGet pack and restore as MSBuild targets | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 04/03/2017 +ms.date: 03/13/2018 ms.topic: article ms.prod: nuget ms.technology: null @@ -38,7 +38,9 @@ Similarly, you can write an MSBuild task, write your own target and consume NuGe ## pack target -When using the pack target, that is, `msbuild /t:pack`, MSBuild draws its inputs from the project file. The table below 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). +For .NET Standard projects using the PackageReference format, using `msbuild /t:pack` draws inputs from the project file to use in creating a NuGet package. + +The table below 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 that the `Owners` and `Summary` properties from `.nuspec` are not supported with MSBuild. @@ -219,8 +221,7 @@ msbuild /t:pack /p:NuspecFile= /p:Nu 1. Download packages 1. Write assets file, targets, and props -> [!Note] -> The `restore` MSBuild target only works for projects using `PackageReference` items and does not restore packages referenced using a `packages.config` file. +The `restore` target works **only** for projects using the PackageReference format. It does **not** work for projects using the `packages.config` format; use [nuget restore](../tools/cli-ref-restore.md) instead. ### Restore properties From 74a56679bb8c0ad53a6362206004877a5c4e18b7 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 13 Mar 2018 15:25:33 -0700 Subject: [PATCH 0631/2943] Fix Linux NuGet.Config path --- docs/consume-packages/Configuring-NuGet-Behavior.md | 6 +++--- docs/consume-packages/Package-Restore.md | 4 ++-- docs/consume-packages/Package-restore-troubleshooting.md | 2 +- docs/policies/NuGet-FAQ.md | 2 +- docs/release-notes/Known-Issues.md | 2 +- docs/tools/cli-ref-add.md | 2 +- docs/tools/cli-ref-config.md | 2 +- docs/tools/cli-ref-delete.md | 4 ++-- docs/tools/cli-ref-help.md | 2 +- docs/tools/cli-ref-init.md | 2 +- docs/tools/cli-ref-install.md | 4 ++-- docs/tools/cli-ref-list.md | 4 ++-- docs/tools/cli-ref-locals.md | 2 +- docs/tools/cli-ref-mirror.md | 4 ++-- docs/tools/cli-ref-push.md | 6 +++--- docs/tools/cli-ref-restore.md | 2 +- docs/tools/cli-ref-setapikey.md | 2 +- docs/tools/cli-ref-sign.md | 2 +- docs/tools/cli-ref-sources.md | 5 ++--- docs/tools/cli-ref-update.md | 2 +- docs/tools/cli-ref-verify.md | 2 +- 21 files changed, 31 insertions(+), 32 deletions(-) diff --git a/docs/consume-packages/Configuring-NuGet-Behavior.md b/docs/consume-packages/Configuring-NuGet-Behavior.md index cc3b47413..21ecb949d 100644 --- a/docs/consume-packages/Configuring-NuGet-Behavior.md +++ b/docs/consume-packages/Configuring-NuGet-Behavior.md @@ -23,8 +23,8 @@ NuGet's behavior is driven by the accumulated settings in one or more `NuGet.Con | Scope | NuGet.Config file location | Description | | --- | --- | --- | | Project | Current folder (aka Project folder) or any folder up to the drive root.| In a project folder, settings apply only to that project. In parent folders that contain multiple projects subfolders, settings apply to all projects in those subfolders. | -| User | Windows: %APPDATA%\NuGet\NuGet.Config
    Mac/Linux: ~/.nuget/NuGet.Config | Settings apply to all operations, but are overridden by any project-level settings. | -| Computer | Windows: %ProgramFiles(x86)%\NuGet\Config
    Mac/Linux: $XDG_DATA_HOME (typically ~/.local/share) | Settings apply to all operations on the computer, but are overriden by any user- or project-level settings. | +| User | Windows: `%APPDATA%\NuGet\NuGet.Config`
    Mac/Linux: `~/.nuget/NuGet/NuGet.Config` | Settings apply to all operations, but are overridden by any project-level settings. | +| Computer | Windows: `%ProgramFiles(x86)%\NuGet\Config`
    Mac/Linux: `$XDG_DATA_HOME` (typically `~/.local/share`) | Settings apply to all operations on the computer, but are overriden by any user- or project-level settings. | Notes for earlier versions of NuGet: - NuGet 3.3 and earlier used a `.nuget` folder for solution-wide settings. This file is not used in NuGet 3.4+. @@ -133,7 +133,7 @@ Let's say you have the following folder structure on two separate drives: You then have four `NuGet.Config` files in the following locations with the given content. (The computer-level file is not included in this example, but would behave similarly to the user-level file.) -File A. User-level file, (%APPDATA%\NuGet\NuGet.Config on Windows, ~/.nuget/NuGet.Config on Mac/Linux): +File A. User-level file, (`%APPDATA%\NuGet\NuGet.Config` on Windows, `~/.nuget/NuGet/NuGet.Config` on Mac/Linux): ```xml diff --git a/docs/consume-packages/Package-Restore.md b/docs/consume-packages/Package-Restore.md index 0d7bcf8ac..5fb548059 100644 --- a/docs/consume-packages/Package-Restore.md +++ b/docs/consume-packages/Package-Restore.md @@ -54,7 +54,7 @@ Package restore is primarily enabled through **Tools > Options > NuGet Package M ![Controlling package restore behaviors through NuGet Package Manager options](media/Restore-01-AutoRestoreOptions.png) -- **Allow NuGet to download missing packages**: controls all forms of package restore by changing the `packageRestore/enabled` setting in the `%AppData%\NuGet\NuGet.Config` file as shown below. In Visual Studio, this setting allows the **Restore NuGet Packages** command on the solution's context menu to work. +- **Allow NuGet to download missing packages**: controls all forms of package restore by changing the `packageRestore/enabled` setting in the `NuGet.Config` file as shown below (`%AppData%\NuGet\NuGet.Config` on Windows, `~/.nuget/NuGet/NuGet.Config` on Mac/Linux). In Visual Studio, this setting allows the **Restore NuGet Packages** command on the solution's context menu to work. ```xml @@ -69,7 +69,7 @@ Package restore is primarily enabled through **Tools > Options > NuGet Package M > [!Note] > The `packageRestore/enabled` setting can be overridden globally by setting an environment variable called **EnableNuGetPackageRestore** with a value of TRUE or FALSE before launching Visual Studio or starting a build. -- **Automatically check for missing packages during build in Visual Studio**: controls automatic restore by changing the `packageRestore/automatic` setting in the `%AppData%\NuGet\NuGet.Config` file as shown below. When this option is set, running a build from Visual Studio automatically restores any missing packages. The option does not affect builds run from the command line using MSBuild. +- **Automatically check for missing packages during build in Visual Studio**: controls automatic restore by changing the `packageRestore/automatic` setting in the `NuGet.Config` file as shown below (`%AppData%\NuGet\NuGet.Config` on Windows, `~/.nuget/NuGet/NuGet.Config` on Mac/Linux). When this option is set, running a build from Visual Studio automatically restores any missing packages. The option does not affect builds run from the command line using MSBuild. ```xml ... diff --git a/docs/consume-packages/Package-restore-troubleshooting.md b/docs/consume-packages/Package-restore-troubleshooting.md index 440263752..08588c041 100644 --- a/docs/consume-packages/Package-restore-troubleshooting.md +++ b/docs/consume-packages/Package-restore-troubleshooting.md @@ -70,7 +70,7 @@ during build.' You can also give consent by setting the environment variable 'EnableNuGetPackageRestore' to 'true'. Missing packages: {name} ``` -This error indicates that package restore is disabled in your NuGet configuration, that is, the applicable `nuget.config` file (typically `%AppData%\NuGet\NuGet.Config`) contains the following: +This error indicates that package restore is disabled in your NuGet configuration, that is, the applicable `nuget.config` file (typically `%AppData%\NuGet\NuGet.Config` on Windows and `~/.nuget/NuGet/NuGet.Config` on Mac/Linux) contains the following: ```xml diff --git a/docs/policies/NuGet-FAQ.md b/docs/policies/NuGet-FAQ.md index cfa071fb4..04599c198 100644 --- a/docs/policies/NuGet-FAQ.md +++ b/docs/policies/NuGet-FAQ.md @@ -152,7 +152,7 @@ This is not an issue when using PackageReference, as each project file contains **I don't see nuget.org in my list of repositories, how do I get it back?** - Add `https://api.nuget.org/v3/index.json` to your list of sources, or -- Delete the `%appdata%\.nuget\NuGet.Config` and let NuGet re-create it. +- Delete `%appdata%\.nuget\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) and let NuGet re-create it. **What are the default license terms if a package doesn't provide specific license information?** diff --git a/docs/release-notes/Known-Issues.md b/docs/release-notes/Known-Issues.md index 278e2ba3b..8f15f6572 100644 --- a/docs/release-notes/Known-Issues.md +++ b/docs/release-notes/Known-Issues.md @@ -44,7 +44,7 @@ In NuGet 3.4 and 3.4.1, when using the NuGet add-in, no sources are reported as ![NuGet config with no sources](./media/knownIssue-34-NoSources.PNG) -The `NuGet.Config` file in your `%AppData%\NuGet\` folder has accidentally been emptied. To fix this: Close Visual Studio 2015, delete the `NuGet.Config` file in the `%AppData%\NuGet\` folder and restart Visual Studio. A new `NuGet.Config` file will be generated and you are able to proceed. +The `NuGet.Config` file in your `%AppData%\NuGet\` (Windows) or `~/.nuget/` (Mac/Linux) folder has accidentally been emptied. To fix this: close Visual Studio (on Windows, if applicable), delete the `NuGet.Config` file, and try the operation again. NuGet generated a new `NuGet.Config` and you should be able to proceed. ## Error installing packages with NuGet 2.7 diff --git a/docs/tools/cli-ref-add.md b/docs/tools/cli-ref-add.md index af82ae168..8df7fd622 100644 --- a/docs/tools/cli-ref-add.md +++ b/docs/tools/cli-ref-add.md @@ -43,7 +43,7 @@ where `` is the pathname to the package to add, and `` | Option | Description | | --- | --- | -| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used.| +| ConfigFile | The NuGet configuration file to apply. If not specified, `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) is used.| | Expand | Adds all the files in the package to the package source. | | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | diff --git a/docs/tools/cli-ref-config.md b/docs/tools/cli-ref-config.md index fea8d85a1..57737edd5 100644 --- a/docs/tools/cli-ref-config.md +++ b/docs/tools/cli-ref-config.md @@ -38,7 +38,7 @@ In NuGet 3.4+, `` can use [environment variables](cli-ref-environment-var | Option | Description | | --- | --- | | AsPath | Returns the config value as a path, ignored when `-Set` is used. | -| ConfigFile | The NuGet configuration file to modify. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | The NuGet configuration file to modify. If not specified, `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) is used.| | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | | NonInteractive | Suppresses prompts for user input or confirmations. | diff --git a/docs/tools/cli-ref-delete.md b/docs/tools/cli-ref-delete.md index 68af2d9f5..8314ee3d1 100644 --- a/docs/tools/cli-ref-delete.md +++ b/docs/tools/cli-ref-delete.md @@ -32,8 +32,8 @@ where `` and `` identify the exact package to delete | Option | Description | | --- | --- | -| ApiKey | The API key for the target repository. If not present, the one specified in *%AppData%\NuGet\NuGet.Config* is used. | -| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ApiKey | The API key for the target repository. If not present, the one specified in the config file is used. | +| ConfigFile | The NuGet configuration file to apply. If not specified, `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) is used.| | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | | NonInteractive | Suppresses prompts for user input or confirmations. | diff --git a/docs/tools/cli-ref-help.md b/docs/tools/cli-ref-help.md index a615d8bcf..e45f52379 100644 --- a/docs/tools/cli-ref-help.md +++ b/docs/tools/cli-ref-help.md @@ -37,7 +37,7 @@ where [command] identifies a specific command for which to display help. | Option | Description | | --- | --- | | All | Print detailed help for all available commands; ignored if a specific command is given. | -| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | The NuGet configuration file to apply. If not specified, `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) is used.| | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the help command itself. | | Markdown | Print detailed help in markdown format when used with `-All`. Ignored otherwise. | diff --git a/docs/tools/cli-ref-init.md b/docs/tools/cli-ref-init.md index 0d5317056..e0cc053db 100644 --- a/docs/tools/cli-ref-init.md +++ b/docs/tools/cli-ref-init.md @@ -34,7 +34,7 @@ where `` is the folder containing packages and `` is the lo | Option | Description | | --- | --- | -| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | The NuGet configuration file to apply. If not specified, `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) is used.| | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Expand | Adds all files in each package that's added to the package source; same as `-Expand` with the `add` command. | | Help | Displays help information for the command. | diff --git a/docs/tools/cli-ref-install.md b/docs/tools/cli-ref-install.md index 1f18069cf..0897856ff 100644 --- a/docs/tools/cli-ref-install.md +++ b/docs/tools/cli-ref-install.md @@ -23,7 +23,7 @@ Downloads and installs a package into a project, defaulting to the current folde > [!Tip] > To download a package directly outside the context of a project, visit the package's page on [nuget.org](https://www.nuget.org) and select the **Download** link. -If no sources are specified, those listed in the global configuration file, `%APPDATA%\NuGet\NuGet.Config`, are used. See [Configuring NuGet behavior](../consume-packages/configuring-nuget-behavior.md) for additional details. +If no sources are specified, those listed in the global configuration file, `%APPDATA%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux), are used. See [Configuring NuGet behavior](../consume-packages/configuring-nuget-behavior.md) for additional details. If no specific packages are specified, `install` installs all packages listed in the project's `packages.config` file, making it similar to [`restore`](cli-ref-restore.md). @@ -43,7 +43,7 @@ where `` names the package to install (using the latest version), or | Option | Description | | --- | --- | -| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | The NuGet configuration file to apply. If not specified, `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) is used.| | DependencyVersion | *(4.4+)* Specifies a specific version, overriding the default dependency resolution behavior. | | DisableParallelProcessing | Disables installing multiple packages in parallel. | | ExcludeVersion | Installs the package to a folder named with only the package name and not the version number. | diff --git a/docs/tools/cli-ref-list.md b/docs/tools/cli-ref-list.md index 8e0235f46..f0d0fcc1a 100644 --- a/docs/tools/cli-ref-list.md +++ b/docs/tools/cli-ref-list.md @@ -18,7 +18,7 @@ ms.reviewer: **Applies to:** package consumption, publishing • **Supported versions:** all -Displays a list of packages from a given source. If no sources are specified, all sources defined in the global configuration file, `%AppData%\NuGet\NuGet.Config`, are used. If `NuGet.Config` specifies no sources, then `list` uses the default feed (nuget.org). +Displays a list of packages from a given source. If no sources are specified, all sources defined in the global configuration file, `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config`, are used. If `NuGet.Config` specifies no sources, then `list` uses the default feed (nuget.org). ## Usage @@ -33,7 +33,7 @@ where the optional search terms will filter the displayed list. Search terms are | Option | Description | | --- | --- | | AllVersions | List all versions of a package. By default, only the latest package version is displayed. | -| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | The NuGet configuration file to apply. If not specified, `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) is used.| | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | | IncludeDelisted | *(3.2+)* Display unlisted packages. | diff --git a/docs/tools/cli-ref-locals.md b/docs/tools/cli-ref-locals.md index 2f095e822..7f437a85a 100644 --- a/docs/tools/cli-ref-locals.md +++ b/docs/tools/cli-ref-locals.md @@ -33,7 +33,7 @@ where `` is one of `all`, `http-cache`, `packages-cache`, `global-package | Option | Description | | --- | --- | | Clear | Clears the specified cache. | -| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | The NuGet configuration file to apply. If not specified, `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) is used.| | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | | List | Lists the location of the specified cache, or the locations of all caches when used with *all*. | diff --git a/docs/tools/cli-ref-mirror.md b/docs/tools/cli-ref-mirror.md index 699ba65ce..276a1334e 100644 --- a/docs/tools/cli-ref-mirror.md +++ b/docs/tools/cli-ref-mirror.md @@ -39,12 +39,12 @@ If your target repository is on `https://machine/repo` that's running [NuGet.Ser | Option | Description | | --- | --- | -| ApiKey | The API key for the target repository. If not present, the one specified in *%AppData%\NuGet\NuGet.Config* is used. | +| ApiKey | The API key for the target repository. If not present, the one specified in the config file is used (`%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux)). | | Help | Displays help information for the command. | | NoCache | Prevents NuGet from using packages from local machine caches. | | Noop | Logs what would be done but does not perform the actions; assumes success for push operations. | | PreRelease | Includes prerelease packages in the mirroring operation. | -| Source | A list of package sources to mirror. If no sources are specified, the ones defined in *%AppData%\NuGet\NuGet.Config* are used, defaulting to nuget.org if none are specified. | +| Source | A list of package sources to mirror. If no sources are specified, the ones defined in the config file (see ApiKey above) are used, defaulting to nuget.org if none are specified. | | Timeout | Specifies the timeout, in seconds, for pushing to a server. The default is 300 seconds (5 minutes). | | Version | The version of the package to install. If not specified, the latest version is mirrored. | diff --git a/docs/tools/cli-ref-push.md b/docs/tools/cli-ref-push.md index 1f5a48658..6d525bc3b 100644 --- a/docs/tools/cli-ref-push.md +++ b/docs/tools/cli-ref-push.md @@ -23,7 +23,7 @@ ms.reviewer: Pushes a package to a package source and publishes it. -NuGet's default configuration is obtained by loading `%AppData%\NuGet\NuGet.Config`, then loading any `Nuget.Config` or `.nuget\Nuget.Config` files starting from root of drive and ending in current directory (see [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md)) +NuGet's default configuration is obtained by loading `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux), then loading any `Nuget.Config` or `.nuget\Nuget.Config` files starting from root of drive and ending in current directory (see [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md)) ## Usage @@ -37,8 +37,8 @@ where `` identifies the package to push to the server. | Option | Description | | --- | --- | -| ApiKey | The API key for the target repository. If not present, the one specified in *%AppData%\NuGet\NuGet.Config* is used. | -| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ApiKey | The API key for the target repository. If not present, the one specified in the config file is used. | +| ConfigFile | The NuGet configuration file to apply. If not specified, `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) is used.| | DisableBuffering | Disables buffering when pushing to an HTTP(s) server to decrease memory usages. Caution: when this option is used, integrated Windows authentication might not work. | | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | diff --git a/docs/tools/cli-ref-restore.md b/docs/tools/cli-ref-restore.md index 2a4670a96..578127ae3 100644 --- a/docs/tools/cli-ref-restore.md +++ b/docs/tools/cli-ref-restore.md @@ -34,7 +34,7 @@ where `` specifies the location of a solution or a `packages.config | Option | Description | | --- | --- | -| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | The NuGet configuration file to apply. If not specified, `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) is used.| | DirectDownload | *(4.0+)* Downloads packages directly without populating caches with any binaries or metadata. | | DisableParallelProcessing | Disables restoring multiple packages in parallel. | | FallbackSource | *(3.2+)* A list of package sources to use as fallbacks in case the package isn't found in the primary or default source. | diff --git a/docs/tools/cli-ref-setapikey.md b/docs/tools/cli-ref-setapikey.md index b3c675665..db6555cc5 100644 --- a/docs/tools/cli-ref-setapikey.md +++ b/docs/tools/cli-ref-setapikey.md @@ -32,7 +32,7 @@ where `` identifies the server and `` is the key or password to sav | Option | Description | | --- | --- | -| ConfigFile | The NuGet configuration file to modify. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | The NuGet configuration file to apply. If not specified, `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) is used.| | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | | NonInteractive | Suppresses prompts for user input or confirmations. | diff --git a/docs/tools/cli-ref-sign.md b/docs/tools/cli-ref-sign.md index 8fb075f4d..9904757dd 100644 --- a/docs/tools/cli-ref-sign.md +++ b/docs/tools/cli-ref-sign.md @@ -40,7 +40,7 @@ where `` is one or more `.nupkg` files. | CertificateStoreLocation | Specifies the name of the X.509 certificate store use to search for the certificate. Defaults to "CurrentUser", the X.509 certificate store used by the current user. This option should be used when specifying the certificate via -CertificateSubjectName or -CertificateFingerprint options. | | CertificateStoreName | Specifies the name of the X.509 certificate store to use to search for the certificate. Defaults to "My", the X.509 certificate store for personal certificates. This option should be used when specifying the certificate via -CertificateSubjectName or -CertificateFingerprint options. | | CertificateSubjectName | Specifies the subject name of the certificate used to search a local certificate store for the certificate. The search is a case-insensitive string comparison using the supplied value, which will find all certificates with the subject name containing that string, regardless of other subject values. The certificate store can be specified by -CertificateStoreName and -CertificateStoreLocation options. | -| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | The NuGet configuration file to apply. If not specified, `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) is used.| | ForceEnglishOutput | Forces nuget.exe to run using an invariant, English-based culture. | | HashAlgorithm | Hash algorithm to be used to sign the package. Defaults to SHA256. | | Help | Displays help information for the command. | diff --git a/docs/tools/cli-ref-sources.md b/docs/tools/cli-ref-sources.md index 784e8cb66..b9dcccaee 100644 --- a/docs/tools/cli-ref-sources.md +++ b/docs/tools/cli-ref-sources.md @@ -18,8 +18,7 @@ ms.reviewer: **Applies to:** package consumption, publishing • **Supported versions:** all -Manages the list of sources located in the user scope configuration file or a specified configuration file. The user scope configuration file is located at `%APPDATA%\NuGet\NuGet.Config` in Windows and at `~/.nuget/NuGet.Config` in Mac/Linux. - +Manages the list of sources located in the user scope configuration file or a specified configuration file. The user scope configuration file is located at `%APPDATA%\NuGet\NuGet.Config` (Windows) and `~/.nuget/NuGet/NuGet.Config` (Mac/Linux). Note that the source URL for nuget.org is `https://api.nuget.org/v3/index.json`. @@ -35,7 +34,7 @@ where `` is one of *List, Add, Remove, Enable, Disable,* or *Update*, | Option | Description | | --- | --- | -| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | The NuGet configuration file to apply. If not specified, `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) is used.| | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Format | Applies to the `list` action and can be `Detailed` (the default) or `Short`. | | Help | Displays help information for the command. | diff --git a/docs/tools/cli-ref-update.md b/docs/tools/cli-ref-update.md index cb6de2b9b..5ba66b6a8 100644 --- a/docs/tools/cli-ref-update.md +++ b/docs/tools/cli-ref-update.md @@ -38,7 +38,7 @@ where `` identifies either a `packages.config` or solution file that | Option | Description | | --- | --- | -| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | The NuGet configuration file to apply. If not specified, `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) is used.| | FileConflictAction | Specifies the action to take when asked to overwrite or ignore existing files referenced by the project. Values are *overwrite, ignore, none*. | | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | diff --git a/docs/tools/cli-ref-verify.md b/docs/tools/cli-ref-verify.md index 3b66951bf..6952d564a 100644 --- a/docs/tools/cli-ref-verify.md +++ b/docs/tools/cli-ref-verify.md @@ -34,7 +34,7 @@ where `` is one or more `.nupkg` files. | --- | --- | | All | Specifies that all verifications possible should be performed on the package(s). | | CertificateFingerprint | Specifies one or more SHA-256 certificate fingerprints of certificates(s) which signed packages must be signed with. A certificate SHA-256 fingerprint is a SHA-256 hash of the certificate. Multiple inputs should be semicolon separated. | -| ConfigFile | The NuGet configuration file to apply. If not specified, *%AppData%\NuGet\NuGet.Config* is used. | +| ConfigFile | The NuGet configuration file to apply. If not specified, `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) is used.| | ForceEnglishOutput | Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | | NonInteractive | Suppresses prompts for user input or confirmations. | From 3f2165704f025800093731ed735059e941ce9ea0 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 13 Mar 2018 15:28:57 -0700 Subject: [PATCH 0632/2943] Change callout type --- docs/consume-packages/Package-restore-troubleshooting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/consume-packages/Package-restore-troubleshooting.md b/docs/consume-packages/Package-restore-troubleshooting.md index 08588c041..63086d066 100644 --- a/docs/consume-packages/Package-restore-troubleshooting.md +++ b/docs/consume-packages/Package-restore-troubleshooting.md @@ -98,7 +98,7 @@ You can edit these settings directly, or by opening **Tools > Options > NuGet Pa ![Enable NuGet package restore in Tool/Options](../consume-packages/media/restore-01-autorestoreoptions.png) -> [!Warning] +> [!Important] > If you edit the `packageRestore` settings directly in `nuget.config`, restart Visual Studio so that the options dialog box shows the current values. ## Other potential conditions From c1c17b9706cf70c5c7ec223fd4353cda59a715c5 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 13 Mar 2018 16:12:23 -0700 Subject: [PATCH 0633/2943] .NET Framework quickstart, plus small edits --- ...ckage-using-visual-studio-net-framework.md | 180 ++++++++++++++++++ .../QS_Create-vs-01b-project-properties.png | Bin 0 -> 9095 bytes docs/TOC.md | 5 +- docs/api/catalog-resource.md | 2 +- docs/api/report-abuse-resource.md | 2 +- docs/create-packages/Publish-a-package.md | 4 +- docs/create-packages/Sign-a-Package.md | 2 +- .../Create-NET-Standard-Packages-VS2015.md | 40 ++-- docs/guides/create-packages-for-xamarin.md | 10 +- ...d-publish-a-package-using-visual-studio.md | 14 +- docs/reference/nuspec.md | 3 +- 11 files changed, 222 insertions(+), 40 deletions(-) create mode 100644 docs/Quickstart/create-and-publish-a-package-using-visual-studio-net-framework.md create mode 100644 docs/Quickstart/media/QS_Create-vs-01b-project-properties.png diff --git a/docs/Quickstart/create-and-publish-a-package-using-visual-studio-net-framework.md b/docs/Quickstart/create-and-publish-a-package-using-visual-studio-net-framework.md new file mode 100644 index 000000000..80e13f471 --- /dev/null +++ b/docs/Quickstart/create-and-publish-a-package-using-visual-studio-net-framework.md @@ -0,0 +1,180 @@ +--- +title: Introductory Guide to Creating and Publishing a .NET Framework NuGet Package using Visual Studio | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 03/13/2018 +ms.topic: get-started-article +ms.prod: nuget +ms.technology: null +description: A walkthrough tutorial on creating and publishing a .NET Framework NuGet package using Visual Studio 2017. +keywords: NuGet package creation, NuGet package publishing, NuGet tutorial, Visual Studio create NuGet package, msbuild pack +ms.reviewer: +- karann-msft +- unniravindranathan +--- + +# Create and publish a package using Visual Studio (.NET Framework) + +Creating a NuGet package from a .NET Framework Class Library involves creating the DLL in Visual Studio, then using the nuget.exe command line tool to create and publish the package. + +## Prerequisites + +1. Install any edition of Visual Studio 2017 from [visualstudio.com](https://www.visualstudio.com/) with any .NET-related workload. Visual Studio 2017 automatically includes NuGet capabilities when a .NET workload is installed. + +1. Install the `nuget.exe` CLI by downloading it from [nuget.org](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe), saving that `.exe` file to a suitable folder, and adding that folder to your PATH environment variable. + +1. [Register for a free account on nuget.org](https://www.nuget.org/users/account/LogOn?returnUrl=%2F) if you don't have one already. Creating a new account sends a confirmation email. You must confirm the account before you can upload a package. + +## Create a class library project + +You can use an existing .NET Framework Class Library project for the code you want to package, or create a simple one as follows: + +1. In Visual Studio, choose **File > New > Project**, select the **Visual C#** node, select the "Class Library (.NET Framework)" template, name the project AppLogger, and click **OK**. + +1. Right-click on the resulting project file and select **Build** to make sure the project was created properly. The DLL is found within the Debug folder (or Release if you build that configuration instead). + +Within a real NuGet package, of course, you implement many useful features with which others can build applications. You can also set the target frameworks however you like. For example, see the guides for [UWP](../guides/create-uwp-packages.md) and [Xamarin](../guides/create-packages-for-xamarin.md). + +For this walkthrough, however, you won't write any additional code because a class library from the template is sufficient to create a package. Still, if you'd like some functional code for the package, use the following: + +```cs +using System; + +namespace AppLogger +{ + public class Logger + { + public void Log(string text) + { + Console.WriteLine(text); + } + } +} +``` + +> [!Tip] +> Unless you have a reason to choose otherwise, .NET Standard is the preferred target for NuGet packages, as it provides compatibility with the widest range of consuming projects. See [Create and publish a package using Visual Studio (.NET Standard)](create-and-publish-a-package-using-visual-studio.md). + +## Configure project properties for the package + +A NuGet package contains a manifest (a `.nuspec` file), that contains relevant metadata such as the package identifier, version number, description, and more. Some of these can be drawn from the project properties directly, which avoids having to separately update them in both the project and the manifest. This section describes where to set the applicable properties. + +1. Select the **Project > Properties** menu command, then select the **Application** tab. + +1. In the **Assembly name** field, give your package a unique identifier. + + > [!Important] + > You must give the package an identifier that's unique across nuget.org or whatever host you're using. For this walkthrough we recommend including "Sample" or "Test" in the name as the later publishing step does make the package publicly visible (though it's unlikely anyone will actually use it). + > + > If you attempt to publish a package with a name that already exists, you see an error. + +1. Select the **Assembly Information...** button, which brings up a dialog box in which you can enter other properties that carry into the manifest (see [.nuspec file reference - replacement tokens](../reference/nuspec.md#replacement-tokens)). The most commonly used fields are **Title**, **Description**, **Company**, **Copyright**, and **Assembly version**. These properties ultimately appear with your package on a host like nuget.org, so make sure they're fully descriptive. + + ![Assembly information in a .NET Framework project in Visual Studio](media/qs_create-vs-01b-project-properties.png) + +1. Optional: to see and edit the properties directly, open the `Properties/AssemblyInfo.cs` file in the project. + +1. When the properties are set, set the project configuration to **Release** and rebuild the project to generate the updated DLL. + +## Generate the initial manifest + +With a DLL in hand and project properties set, you now use the `nuget spec` command to generate an initial `.nuspec` file from the project. This step includes the relevant replacement tokens to draw information from the project file. + +You run `nuget spec` only once to generate the initial manifest. When updating the package, you either change values in your project or edit the manifest directly. + +1. Open a command prompt and navigate to the project folder containing `AppLogger.csproj` file. + +1. Run the following command: `nuget spec AppLogger.csproj`. By specifying a project, NuGet creates a manifest that matches the name of the project, in this case `AppLogger.nuspec`. It also include replacement tokens in the manifest. + +1. Open `AppLogger.nuspec` in a text editor to examine its contents, which should appear as follows: + + ```xml + + + + $id$ + $version$ + $title$ + $author$ + $author$ + http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE + http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE + http://ICON_URL_HERE_OR_DELETE_THIS_LINE + false + $description$ + Summary of changes made in this release of the package. + Copyright 2018 + Tag1 Tag2 + + + ``` + +## Edit the manifest + +1. NuGet produces an error if you try to create a package with default values in your `.nuspec` file, so you must edit the following fields before proceeding. See [.nuspec file reference - single elements](../reference/nuspec.md#single-elements) for a description of how these are used. + + - licenseUrl + - projectUrl + - iconUrl + - releaseNotes + - tags + +1. For packages built for public consumption, pay special attention to the **Tags** property, as tags help others find your package on sources like nuget.org and understand what it does. + +1. You can also add any other elements to the manifest at this time, as described on [.nuspec file reference](../reference/nuspec.md). + +1. Save the file before proceeding. + +## Run the pack command + +1. From a command prompt in the folder containing your `.nuspec` file, run the command `nuget pack`. + +1. NuGet generates a `.nupkg` file in the form of *identifier-version.nupkg*, which you'll find in the current folder. + +## Publish the package + +Once you have a `.nupkg` file, you publish it to nuget.org using `nuget.exe` with an API key acquired from nuget.org. For nuget.org you must use `nuget.exe` 4.1.0 or higher. + +[!INCLUDE[publish-notes](includes/publish-notes.md)] + +### Acquire your API key + +[!INCLUDE[publish-api-key](includes/publish-api-key.md)] + +### Publish with nuget push + +1. Change to the folder containing the `.nupkg` file. + +1. Run the following command, specifying your package name and replacing the key value with your API key: + + ```cli + nuget push AppLogger.1.0.0.nupkg qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 -Source https://api.nuget.org/v3/index.json + ``` + +1. nuget.exe displays the results of the publishing process: + + ```output + Pushing AppLogger.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'... + PUT https://www.nuget.org/api/v2/package/ + Created https://www.nuget.org/api/v2/package/ 6829ms + Your package was pushed. + ``` + +See [nuget push](../tools/cli-ref-push.md). + +### Publish errors + +[!INCLUDE[publish-errors](includes/publish-errors.md)] + +### Manage the published package + +[!INCLUDE[publish-manage](includes/publish-manage.md)] + +## Related topics + +- [Create a Package](../create-packages/creating-a-package.md) +- [Publish a Package](../create-packages/publish-a-package.md) +- [Support multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) +- [Package versioning](../reference/package-versioning.md) +- [Creating localized packages](../create-packages/creating-localized-packages.md) diff --git a/docs/Quickstart/media/QS_Create-vs-01b-project-properties.png b/docs/Quickstart/media/QS_Create-vs-01b-project-properties.png new file mode 100644 index 0000000000000000000000000000000000000000..349f4fa60b7c47de22b045f02018dbd9bf3a8320 GIT binary patch literal 9095 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 literal 0 HcmV?d00001 diff --git a/docs/TOC.md b/docs/TOC.md index 814a25d0b..fdc7ccdef 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -3,8 +3,9 @@ # Quickstarts ## [Install and use a package (dotnet CLI)](quickstart/install-and-use-a-package-using-the-dotnet-cli.md) ## [Install and use a package (Visual Studio)](quickstart/install-and-use-a-package-in-visual-studio.md) -## [Create and publish a package (dotnet CLI)](quickstart/create-and-publish-a-package-using-the-dotnet-cli.md) -## [Create and publish a package (Visual Studio)](quickstart/create-and-publish-a-package-using-visual-studio.md) +## [Create and publish a NET Standard package (dotnet CLI)](quickstart/create-and-publish-a-package-using-the-dotnet-cli.md) +## [Create and publish a NET Standard package (Visual Studio)](quickstart/create-and-publish-a-package-using-visual-studio.md) +## [Create and publish a NET Framework package (Visual Studio)](quickstart/create-and-publish-a-package-using-visual-studio-net-framework.md) # Consume packages ## [Overview and workflow](consume-packages/overview-and-workflow.md) ## [Finding and choosing packages](consume-packages/finding-and-choosing-packages.md) diff --git a/docs/api/catalog-resource.md b/docs/api/catalog-resource.md index a8a6dee79..8bb45dfc2 100644 --- a/docs/api/catalog-resource.md +++ b/docs/api/catalog-resource.md @@ -12,7 +12,7 @@ ms.topic: reference ms.prod: nuget ms.technology: null description: The catalog is an index of all packages created and deleted on nuget.org. -keywords: NuGet V3 API catalog, nuget.org transaction log, replicate NuGet.org, clone NuGet.org, append-only record of NuGet.org +keywords: NuGet V3 API catalog, nuget.org transaction log, replicate nuget.org, clone nuget.org, append-only record of nuget.org ms.reviewer: - karann - unniravindranathan diff --git a/docs/api/report-abuse-resource.md b/docs/api/report-abuse-resource.md index aabab1bfc..130303011 100644 --- a/docs/api/report-abuse-resource.md +++ b/docs/api/report-abuse-resource.md @@ -12,7 +12,7 @@ ms.topic: reference ms.prod: nuget ms.technology: null description: The report abuse URL template allows clients to display a report abuse link in their UI. -keywords: NuGet API report abuse, NuGet API file complaint, NuGet.org report URL template +keywords: NuGet API report abuse, NuGet API file complaint, nuget.org report URL template ms.reviewer: - karann - unniravindranathan diff --git a/docs/create-packages/Publish-a-package.md b/docs/create-packages/Publish-a-package.md index cc47870f8..b01881bf1 100644 --- a/docs/create-packages/Publish-a-package.md +++ b/docs/create-packages/Publish-a-package.md @@ -68,9 +68,9 @@ Next, you can either upload the package through the nuget.org web portal, push t ### Package validation and indexing -Packages pushed to NuGet.org undergo several validations. When the package has passed all validation checks, it might take a while for it to be indexed and appear in search results. Once indexing is complete, you receive an email confirming that the package was successfully published. If the package fails a validation check, the package details page will update to display the associated error and you also receive an email notifying you about it. +Packages pushed to nuget.org undergo several validations. When the package has passed all validation checks, it might take a while for it to be indexed and appear in search results. Once indexing is complete, you receive an email confirming that the package was successfully published. If the package fails a validation check, the package details page will update to display the associated error and you also receive an email notifying you about it. -Package validation and indexing usually takes under 15 minutes. If the package publishing is taking longer than expected, visit [status.nuget.org](https://status.nuget.org/) to check if NuGet.org is experiencing any interruptions. If all systems are operational and the package hasn't been successfully published within an hour, please login to NuGet.org and contact us using the Contact Support link on the package page. +Package validation and indexing usually takes under 15 minutes. If the package publishing is taking longer than expected, visit [status.nuget.org](https://status.nuget.org/) to check if nuget.org is experiencing any interruptions. If all systems are operational and the package hasn't been successfully published within an hour, please login to nuget.org and contact us using the Contact Support link on the package page. ### Visual Studio Team Services (CI/CD) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 4303f309a..524d0dfb7 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -27,7 +27,7 @@ Signing a package is a process that makes sure the package has not been modified 1. [A code signing certificate](../reference/signed-packages-reference.md#get-a-code-signing-certificate). > [!Warning] -> NuGet.org does not currently accept signed packages. You can sign packages for publishing to custom feeds. +> nuget.org does not currently accept signed packages. You can sign packages for publishing to custom feeds. ## Sign a package diff --git a/docs/guides/Create-NET-Standard-Packages-VS2015.md b/docs/guides/Create-NET-Standard-Packages-VS2015.md index f5c3847e4..761e502d0 100644 --- a/docs/guides/Create-NET-Standard-Packages-VS2015.md +++ b/docs/guides/Create-NET-Standard-Packages-VS2015.md @@ -66,29 +66,29 @@ This guide walks you through creating a NuGet package targeting .NET Standard Li 1. Open a command prompt, navigate to the folder containing `AppLogger.csproj` folder (one level below where the `.sln` file is), and run the NuGet `spec` command to create the initial `AppLogger.nuspec` file: -```cli -nuget spec -``` + ```cli + nuget spec + ``` 1. Open `AppLogger.nuspec` in an editor and update it to match the following, replacing YOUR_NAME with an appropriate value. The `` value, specifically, must be unique across nuget.org (see the naming conventions described in [Creating a package](../create-packages/creating-a-package.md#choosing-a-unique-package-identifier-and-setting-the-version-number). Also note that you must also update the author and description tags or you get an error during the packing step. -```xml - - - - AppLogger.YOUR_NAME - 1.0.0 - AppLogger - YOUR_NAME - YOUR_NAME - false - Awesome application logging utility - First release - Copyright 2018 (c) Contoso Corporation. All rights reserved. - logger logging logs - - -``` + ```xml + + + + AppLogger.YOUR_NAME + 1.0.0 + AppLogger + YOUR_NAME + YOUR_NAME + false + Awesome application logging utility + First release + Copyright 2018 (c) Contoso Corporation. All rights reserved. + logger logging logs + + + ``` 1. Add reference assemblies to the `.nuspec` file, namely the library's DLL and the IntelliSense XML file: diff --git a/docs/guides/create-packages-for-xamarin.md b/docs/guides/create-packages-for-xamarin.md index 7fde40400..9ae3a9fdd 100644 --- a/docs/guides/create-packages-for-xamarin.md +++ b/docs/guides/create-packages-for-xamarin.md @@ -1,5 +1,5 @@ --- -title: Create Cross-Platform NuGet Packages (for iOS, Android, and Windows) | Microsoft Docs +title: Create NuGet Packages for Xamarin (for iOS, Android, and Windows) | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen @@ -14,7 +14,7 @@ ms.reviewer: - unniravindranathan --- -# Create cross-platform packages +# Create packages for Xamarin A cross-platform package contains code that uses native APIs on iOS, Android, and Windows, depending on the run-time operating system. Although this is straightforward to do, it's preferable to let developers consume the package from a PCL or .NET Standard libraries through a common API surface area. @@ -108,9 +108,9 @@ To implement a platform-specific implementation of the `ILoggingLibrary` interfa 1. Open a command prompt, navigate to the `LoggingLibrary` folder that's one level below where the `.sln` file is, and run the NuGet `spec` command to create the initial `Package.nuspec` file: -```cli -nuget spec -``` + ```cli + nuget spec + ``` 1. Rename this file to `LoggingLibrary.nuspec` and open it in an editor. 1. Update the file to match the following, replacing YOUR_NAME with an appropriate value. The `` value, specifically, must be unique across nuget.org (see the naming conventions described in [Creating a package](../create-packages/creating-a-package.md#choosing-a-unique-package-identifier-and-setting-the-version-number)). Also note that you must also update the author and description tags or you get an error during the packing step. diff --git a/docs/quickstart/create-and-publish-a-package-using-visual-studio.md b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md index 2b2d38b1d..15821770b 100644 --- a/docs/quickstart/create-and-publish-a-package-using-visual-studio.md +++ b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md @@ -1,22 +1,22 @@ --- -title: Introductory Guide to Creating and Publishing a NuGet Package using Visual Studio | Microsoft Docs +title: Introductory Guide to Creating and Publishing a .NET Standard NuGet Package using Visual Studio | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 02/02/2018 +ms.date: 03/18/2018 ms.topic: get-started-article ms.prod: nuget ms.technology: null -description: A walkthrough tutorial on creating and publishing a NuGet package using Visual Studio 2017. +description: A walkthrough tutorial on creating and publishing a .NET Standard NuGet package using Visual Studio 2017. keywords: NuGet package creation, NuGet package publishing, NuGet tutorial, Visual Studio create NuGet package, msbuild pack ms.reviewer: - karann-msft - unniravindranathan --- -# Create and publish a package using Visual Studio +# Create and publish a package using Visual Studio (.NET Standard) -It's a simple process to create a NuGet package from a .NET Class Library in Visual Studio, and then publish it to nuget.org using a CLI tool. +It's a simple process to create a NuGet package from a .NET Standard Class Library in Visual Studio, and then publish it to nuget.org using a CLI tool. ## Prerequisites @@ -30,7 +30,7 @@ It's a simple process to create a NuGet package from a .NET Class Library in Vis ## Create a class library project -You can use an existing .NET Class Library project for the code you want to package, or create a simple one as follows: +You can use an existing .NET Standard Class Library project for the code you want to package, or create a simple one as follows: 1. In Visual Studio, choose **File > New > Project**, expand the **Visual C# > .NET Standard** node, select the "Class Library (.NET Standard)" template, name the project AppLogger, and click **OK**. @@ -115,7 +115,7 @@ Once you have a `.nupkg` file, you publish it to nuget.org using either the `nug This step is an alternative to using `dotnet.exe`. -1. Change to the folder containing the `.nupkg` file.. +1. Change to the folder containing the `.nupkg` file. 1. Run the following command, specifying your package name and replacing the key value with your API key: diff --git a/docs/reference/nuspec.md b/docs/reference/nuspec.md index 7dd8140a1..e930c0c3f 100644 --- a/docs/reference/nuspec.md +++ b/docs/reference/nuspec.md @@ -139,9 +139,10 @@ With the exception of `$configuration$`, values in the project are used in prefe | Token | Value source | Value | --- | --- | --- -| **$id$** | Project file | AssemblyName from the project file | +| **$id$** | Project file | AssemblyName (title) from the project file | | **$version$** | AssemblyInfo | AssemblyInformationalVersion if present, otherwise AssemblyVersion | | **$author$** | AssemblyInfo | AssemblyCompany | +| **$title$** | AssemblyInfo | AssemblyTitle | | **$description$** | AssemblyInfo | AssemblyDescription | | **$copyright$** | AssemblyInfo | AssemblyCopyright | | **$configuration$** | Assembly DLL | Configuration used to build the assembly, defaulting to Debug. Note that to create a package using a Release configuration, you always use `-properties Configuration=Release` on the command line. | From e513e4487b7c049b299d6772f83d4c819b44e0a1 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 13 Mar 2018 16:15:21 -0700 Subject: [PATCH 0634/2943] Clarification from verbatim --- .../create-and-publish-a-package-using-visual-studio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/quickstart/create-and-publish-a-package-using-visual-studio.md b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md index 15821770b..47d3b5008 100644 --- a/docs/quickstart/create-and-publish-a-package-using-visual-studio.md +++ b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md @@ -56,7 +56,7 @@ namespace AppLogger ## Configure package properties -1. Select the **Project > Properties** menu command, then select the **Package** tab: +1. Select the **Project > Properties** menu command, then select the **Package** tab. (The **Package** tab appears only for .NET Standard class library projects; if you are targeting .NET Framework, see [Create and publish a .NET Framework package](create-and-publish-a-package-using-visual-studio-net-framework.md) instead.) ![NuGet package properties in a Visual Studio project](media/qs_create-vs-01-package-properties.png) From 554905cc74f541ffb5850f471bd661a667216b9a Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Tue, 13 Mar 2018 16:55:19 -0700 Subject: [PATCH 0635/2943] Updates to NuGet.Server --- docs/hosting-packages/NuGet-Server.md | 34 +++++++++++------- .../media/Hosting_01-NuGet.Server-Set4.6.png | Bin 10315 -> 30129 bytes .../media/Hosting_02-NuGet.Server-Package.png | Bin 37453 -> 40999 bytes docs/quickstart/includes/publish-errors.md | 3 +- 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/docs/hosting-packages/NuGet-Server.md b/docs/hosting-packages/NuGet-Server.md index 1c9b6ebd0..5da1f8f8b 100644 --- a/docs/hosting-packages/NuGet-Server.md +++ b/docs/hosting-packages/NuGet-Server.md @@ -3,7 +3,7 @@ title: Using NuGet.Server to Host NuGet Feeds | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 08/25/2017 +ms.date: 03/13/2018 ms.topic: article ms.prod: nuget ms.technology: null @@ -24,28 +24,29 @@ NuGet.Server is a package provided by the .NET Foundation that creates an ASP.NE The following sections walk through this process in detail, using C#. +If you have further questions about NuGet.Server, create an issue on [https://github.com/nuget/NuGetGallery/issues](https://github.com/nuget/NuGetGallery/issues). + ## Create and deploy an ASP.NET Web application with NuGet.Server -1. In Visual Studio, select **File > New > Project**, set the target framework for .NET Framework 4.6 (see below), search for "ASP.NET", and select the **ASP.NET Web Application (.NET Framework)** template for C#. +1. In Visual Studio, select **File > New > Project**, search for "ASP.NET", select the **ASP.NET Web Application (.NET Framework)** template for C#, and set **Framework** to ".NET Framework 4.6": - ![Setting .NET Framework target to 4.6](media/Hosting_01-NuGet.Server-Set4.6.png) + ![Setting the target framework for a new project](media/Hosting_01-NuGet.Server-Set4.6.png) -1. Give the application a suitable name *other* than NuGet.Server, select OK, and in the next dialog select the **Empty** template and select OK. +1. Give the application a suitable name *other* than NuGet.Server, select OK, and in the next dialog select the **Empty** template, then select **OK**. -1. Right-click the project, select **Manage NuGet Packages**, and in the Package Manager UI search and install the latest version of the NuGet.Server package if you're targeting .NET Framework 4.6. (You can also install it from the Package Manager Console with `Install-Package NuGet.Server`.) +1. Right-click the project, select **Manage NuGet Packages**. - ![Installing the NuGet.Server package](media/Hosting_02-NuGet.Server-Package.png) +1. In the Package Manager UI, select the **Browse** tab, then search and install the latest version of the NuGet.Server package if you're targeting .NET Framework 4.6. (You can also install it from the Package Manager Console with `Install-Package NuGet.Server`.) Accept the license terms if prompted. - > [!Important] - > If your web application targets .NET Framework 4.5.2, you must install NuGet Server **2.10.3** instead. + ![Installing the NuGet.Server package](media/Hosting_02-NuGet.Server-Package.png) -1. Installing NuGet.Server converts the empty Web application into a package source. It creates a `Packages` folder in the application and overwrites `web.config` to include additional settings (see the comments in that file for details). +1. Installing NuGet.Server converts the empty Web application into a package source. It installs a variety of other packages, creates a `Packages` folder in the application, and overwrites `web.config` to include additional settings (see the comments in that file for details). -1. To make packages available in the feed when you publish the application to a server, add their `.nupkg` files to the `Packages` folder in Visual Studio, then set their **Build Action** to **Content** and **Copy to Output Directory** to **Copy always**: +1. To make packages available in the feed when you publish the application to a server, add each `.nupkg` files to the `Packages` folder in Visual Studio, then set each one's **Build Action** to **Content** and **Copy to Output Directory** to **Copy always**: ![Copying packages to the Packages folder in the project](media/Hosting_03-NuGet.Server-Package-Folder.png) -1. Run the site locally in Visual Studio (without debugging, that is Ctrl+F5). The home page provides the package feed URLs: +1. Run the site locally in Visual Studio (using **Debug > Start Without Debugging** or Ctrl+F5). The home page provides the package feed URLs: ![Default home page for an application with NuGet.Server](media/Hosting_04-NuGet.Server-FeedHomePage.png) @@ -54,6 +55,7 @@ The following sections walk through this process in detail, using C#. 1. The first time you run the application, NuGet.Server restructures the `Packages` folder to contain a folder for each package. This matches the [local storage layout](http://blog.nuget.org/20151118/nuget-3.3.html#folder-based-repository-commands) introduced with NuGet 3.3 to improve performance. When adding more packages, continue to follow this structure. 1. Once you've tested your local deployment, deploy the application to any other internal or external site as needed. + 1. Once deployed to `http://`, the URL that you use for the package source will be `http:///nuget`. ## Configuring the Packages folder @@ -97,4 +99,12 @@ To enable this capability, set the `apiKey` to a value (ideally a strong passwor ``` -If your server is already secured or you do not otherwise require an API key (for example, when using a private server on a local team network), you can set `requireApiKey` to `false`. All users with access to the server can then push or delete packages. \ No newline at end of file +If your server is already secured or you do not otherwise require an API key (for example, when using a private server on a local team network), you can set `requireApiKey` to `false`. All users with access to the server can then push or delete packages. + +## Removing packages from the feed + +With NuGet.Server, the `nuget delete` command removes a package from the repository. If you want to change the behavior to delist the package instead (leaving it available for package restore), change the `enableDelisting` key in `web.config` to true. + +## NuGet.Server support + +For additional help using NuGet.Server, create an issue on [https://github.com/nuget/NuGetGallery/issues](https://github.com/nuget/NuGetGallery/issues). \ No newline at end of file diff --git a/docs/hosting-packages/media/Hosting_01-NuGet.Server-Set4.6.png b/docs/hosting-packages/media/Hosting_01-NuGet.Server-Set4.6.png index 68dcde4c282aee2301e3a9c3089f05f663828121..90592325ef1be9cd799530769bbb8b7a745eaf2b 100644 GIT binary patch literal 30129 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 literal 10315 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 L%#lS#4q<-*%D`5k literal 37453 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 a2_lDl32 diff --git a/docs/quickstart/includes/publish-errors.md b/docs/quickstart/includes/publish-errors.md index 1ccc8d1fe..cfdb184cc 100644 --- a/docs/quickstart/includes/publish-errors.md +++ b/docs/quickstart/includes/publish-errors.md @@ -3,7 +3,8 @@ Errors from the `push` command typically indicate the problem. For example, you You also see errors when trying to publish a package using an identifier that already exists on the host. The name "AppLogger", for example, already exists. In such a case, the `push` command gives the following error: ```output -Response status code does not indicate success: 403 (The specified API key is invalid, has expired, or does not have permission to access the specified package.). +Response status code does not indicate success: 403 (The specified API key is invalid, +has expired, or does not have permission to access the specified package.). ``` If you're using a valid API key that you just created, then this message indicates a naming conflict, which isn't entirely clear from the "permission" part of the error. Change the package identifier, rebuild the project, recreate the `.nupkg` file, and retry the `push` command. \ No newline at end of file From 1a9927490db711dcf715391a69125b1c90f471b7 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 14 Mar 2018 09:39:19 -0700 Subject: [PATCH 0636/2943] NuGet.Server updates, CLI clarification --- docs/hosting-packages/NuGet-Server.md | 8 +++++--- .../create-and-publish-a-package-using-visual-studio.md | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/hosting-packages/NuGet-Server.md b/docs/hosting-packages/NuGet-Server.md index 5da1f8f8b..94631b08e 100644 --- a/docs/hosting-packages/NuGet-Server.md +++ b/docs/hosting-packages/NuGet-Server.md @@ -75,7 +75,7 @@ When `packagesPath` is omitted or left blank, the packages folder is the default ## Adding packages to the feed externally -Once a NuGet.Server site is running, you can add or delete packages using nuget.exe provided that you set an API key value in `web.config`. +Once a NuGet.Server site is running, you can add packages using [nuget push](../tools/cli-ref-push.md) provided that you set an API key value in `web.config`. After installing the NuGet.Server package, `web.config` contains an empty `appSetting/apiKey` value: @@ -99,11 +99,13 @@ To enable this capability, set the `apiKey` to a value (ideally a strong passwor ``` -If your server is already secured or you do not otherwise require an API key (for example, when using a private server on a local team network), you can set `requireApiKey` to `false`. All users with access to the server can then push or delete packages. +If your server is already secured or you do not otherwise require an API key (for example, when using a private server on a local team network), you can set `requireApiKey` to `false`. All users with access to the server can then push packages. ## Removing packages from the feed -With NuGet.Server, the `nuget delete` command removes a package from the repository. If you want to change the behavior to delist the package instead (leaving it available for package restore), change the `enableDelisting` key in `web.config` to true. +With NuGet.Server, the [nuget delete](../tools/cli-ref-delete.md) command removes a package from the repository provided that you include the API key with the comment. + +If you want to change the behavior to delist the package instead (leaving it available for package restore), change the `enableDelisting` key in `web.config` to true. ## NuGet.Server support diff --git a/docs/quickstart/create-and-publish-a-package-using-visual-studio.md b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md index 47d3b5008..69161c4da 100644 --- a/docs/quickstart/create-and-publish-a-package-using-visual-studio.md +++ b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md @@ -91,7 +91,7 @@ namespace AppLogger ### Alternate option: pack with MSBuild -As an alternate to using the **Pack** menu command, NuGet 4.x+ and MSBuild 15.1+ supports a `pack` target when the project contains the necessary package data: +As an alternate to using the **Pack** menu command, NuGet 4.x+ and MSBuild 15.1+ supports a `pack` target when the project contains the necessary package data. Open a command prompt, navigate to your project folder and run the following command. (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.) ```cli msbuild /t:pack /p:Configuration=Release From 3303bd9a2af6f8d51e2bb240a173c52906a4518b Mon Sep 17 00:00:00 2001 From: Rohit Agrawal Date: Wed, 14 Mar 2018 11:00:23 -0700 Subject: [PATCH 0637/2943] fix incorrect closing tag --- docs/reference/msbuild-targets.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index a877cc12c..e6ccdfaa3 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -216,7 +216,7 @@ An example of a csproj file to pack a nuspec file is: netstandard2.0 - true + true false PATH_TO_NUSPEC_FILE add nuspec properties here From 5829e4de841fc021857b00ab370d974124f5fea9 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 14 Mar 2018 15:55:36 -0700 Subject: [PATCH 0638/2943] Correct platform and image placement --- docs/guides/Create-UWP-Controls.md | 30 +++++++----------------------- 1 file changed, 7 insertions(+), 23 deletions(-) diff --git a/docs/guides/Create-UWP-Controls.md b/docs/guides/Create-UWP-Controls.md index 8939ff15d..9b7208264 100644 --- a/docs/guides/Create-UWP-Controls.md +++ b/docs/guides/Create-UWP-Controls.md @@ -3,7 +3,7 @@ title: How to package UWP controls with NuGet | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 03/21/2017 +ms.date: 03/14/2018 ms.topic: get-started-article ms.prod: nuget ms.technology: null @@ -96,13 +96,7 @@ For example, let’s say you’ve set the TPMinV for you controls package to Win \lib\uap10.0\* \ref\uap10.0\* -To enforce the appropriate TPMinV check, create an [MSBuild targets file](/visualstudio/msbuild/msbuild-targets) and package it under the build folder (replacing "your_assembly_name" with the name of your specific assembly): - - \build - \uap10.0 - your_assembly_name.targets - \lib - \tools +To enforce the appropriate TPMinV check, create an [MSBuild targets file](/visualstudio/msbuild/msbuild-targets) and package it under the `build\uap10.0\` folder, replacing `` with the name of your specific assembly. Here is an example of what the targets file should look like: @@ -122,17 +116,15 @@ Here is an example of what the targets file should look like: ## Add design-time support -To configure where the control properties show up in the property inspector, add custom adorners, etc., place your `design.dll` file inside the `lib\\Design` folder as appropriate to the target platform. Also, to ensure that the **[Edit Template > Edit a Copy](/windows/uwp/controls-and-patterns/xaml-styles#modify-the-default-system-styles)** feature works, you must include the `Generic.xaml` and any resource dictionaries that it merges in the `\Themes` folder. (This file has no impact on the runtime behavior of a control.) +To configure where the control properties show up in the property inspector, add custom adorners, etc., place your `design.dll` file inside the `lib\uap10.0\Design` folder as appropriate to the target platform. Also, to ensure that the **[Edit Template > Edit a Copy](/windows/uwp/controls-and-patterns/xaml-styles#modify-the-default-system-styles)** feature works, you must include the `Generic.xaml` and any resource dictionaries that it merges in the `\Themes` folder (again, using your actual assembly name). (This file has no impact on the runtime behavior of a control.) The folder structure would thus appear as follows: - \build \lib - \uap10.0.14393.0 + \uap10.0 \Design \MyControl.design.dll \your_assembly_name \Themes Generic.xaml - \tools > [!Note] > By default, control properties will show up under the Miscellaneous category in the property inspector. @@ -145,23 +137,15 @@ For an example, refer to [MyCustomControl.cs](https://github.com/NuGet/Samples/b ## Package content such as images -To package content such as images that can be used by your control or the consuming UWP project. add those files `lib\uap10.0.14393.0` folder as follows ("your_assembly_name" should again match your particular control): - - \build - \lib - \uap10.0.14393.0 - \Design - \your_assembly_name - \contosoSampleImage.jpg - \tools +To package content such as images that can be used by your control or the consuming UWP project, place those files within the `lib\uap10.0\` folder directly. -You may also author an[MSBuild targets file](/visualstudio/msbuild/msbuild-targets) to ensure the asset is copied to the consuming project’s output folder: +You may also author an [MSBuild targets file](/visualstudio/msbuild/msbuild-targets) to ensure the asset is copied to the consuming project’s output folder: ```xml - + Always From e56fd92dc5c9f59e9b46d66727fc9bfac617399e Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 14 Mar 2018 15:57:53 -0700 Subject: [PATCH 0639/2943] Minor corrections --- docs/guides/Create-UWP-Controls.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guides/Create-UWP-Controls.md b/docs/guides/Create-UWP-Controls.md index 9b7208264..bbfbf39d3 100644 --- a/docs/guides/Create-UWP-Controls.md +++ b/docs/guides/Create-UWP-Controls.md @@ -96,7 +96,7 @@ For example, let’s say you’ve set the TPMinV for you controls package to Win \lib\uap10.0\* \ref\uap10.0\* -To enforce the appropriate TPMinV check, create an [MSBuild targets file](/visualstudio/msbuild/msbuild-targets) and package it under the `build\uap10.0\` folder, replacing `` with the name of your specific assembly. +To enforce the appropriate TPMinV check, create an [MSBuild targets file](/visualstudio/msbuild/msbuild-targets) and package it under the `build\uap10.0" folder as `.targets`, replacing `` with the name of your specific assembly. Here is an example of what the targets file should look like: @@ -137,7 +137,7 @@ For an example, refer to [MyCustomControl.cs](https://github.com/NuGet/Samples/b ## Package content such as images -To package content such as images that can be used by your control or the consuming UWP project, place those files within the `lib\uap10.0\` folder directly. +To package content such as images that can be used by your control or the consuming UWP project, place those files within the `lib\uap10.0` folder. You may also author an [MSBuild targets file](/visualstudio/msbuild/msbuild-targets) to ensure the asset is copied to the consuming project’s output folder: From 106690364cdbe5d8a53fe1059edc580c0407a039 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 14 Mar 2018 16:10:22 -0700 Subject: [PATCH 0640/2943] Typo --- docs/consume-packages/Package-restore-troubleshooting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/consume-packages/Package-restore-troubleshooting.md b/docs/consume-packages/Package-restore-troubleshooting.md index 63086d066..257c9245a 100644 --- a/docs/consume-packages/Package-restore-troubleshooting.md +++ b/docs/consume-packages/Package-restore-troubleshooting.md @@ -58,7 +58,7 @@ This error occurs for the same reasons as explained in the [previous section](#m -## One or more NuGet packages need to be restored by couldn't be because consent has not been granted +## One or more NuGet packages need to be restored but couldn't be because consent has not been granted Complete error message: From c534202e962353a1ba06a861b237e3a80c6d201d Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 14 Mar 2018 16:28:38 -0700 Subject: [PATCH 0641/2943] Use a better menu item --- docs/consume-packages/Package-restore-troubleshooting.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/consume-packages/Package-restore-troubleshooting.md b/docs/consume-packages/Package-restore-troubleshooting.md index 257c9245a..947effa03 100644 --- a/docs/consume-packages/Package-restore-troubleshooting.md +++ b/docs/consume-packages/Package-restore-troubleshooting.md @@ -38,7 +38,7 @@ This situation commonly occurs when you obtain the project's source code from so Use one of the following methods to restore the packages: - For .NET Core projects, run `dotnet restore` or `dotnet build` (which automatically runs restore). -- In Visual Studio, right-click the solution and select **Restore NuGet packages**, or right-click the project and select **Build**. If package restore isn't enabled, however, you'll see the error described in the [consent](#consent) section below. +- In Visual Studio, first enable package restore by selecting the **Tools > NuGet Package Manager > Package Manager Settings** menu command, setting both options under **Package Restore**, and selecting **OK** (see the [consent](#consent) section below). Then build the solution again. - On the command line, run `nuget restore` (except for projects created with `dotnet`, in which case use `dotnet restore`). - On the command line with projects using the PackageReference format, run `msbuild /t:restore`. @@ -94,7 +94,7 @@ To enable package restore and automatic restore on build, set both keys to true: ``` -You can edit these settings directly, or by opening **Tools > Options > NuGet Package Manager** in Visual Studio and setting the options for **Allow NuGet to download missing packages** and **Automatically check for missing packages during build in Visual Studio** (shown below). To enable restore, make sure both options are selected, then try restoring packages again or running a build. +You can edit these settings directly, or by opening **Tools > NuGet Package Manager > Package Manager Settings** in Visual Studio and setting the options for **Allow NuGet to download missing packages** and **Automatically check for missing packages during build in Visual Studio** (shown below). Select **OK** to apply the settings, then try restoring packages again or running a build. ![Enable NuGet package restore in Tool/Options](../consume-packages/media/restore-01-autorestoreoptions.png) From 2fdd8007cfe23307a9f03e33c621e56140614c97 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 14 Mar 2018 16:37:11 -0700 Subject: [PATCH 0642/2943] Updated options screenshot --- .../media/Restore-01-AutoRestoreOptions.png | Bin 18379 -> 21162 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/consume-packages/media/Restore-01-AutoRestoreOptions.png b/docs/consume-packages/media/Restore-01-AutoRestoreOptions.png index d542242a1739b2b5146b0be20709157833d8fbed..1e5f04321ebe6f5f512fab0b3bdc95160cea81c9 100644 GIT binary patch literal 21162 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

    mh6}2%|)j>IeR9yH|`mBgsCBtGp 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 Date: Wed, 14 Mar 2018 16:58:41 -0700 Subject: [PATCH 0643/2943] Streamlining a little more for VS users --- .../Package-restore-troubleshooting.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/consume-packages/Package-restore-troubleshooting.md b/docs/consume-packages/Package-restore-troubleshooting.md index 947effa03..b20966525 100644 --- a/docs/consume-packages/Package-restore-troubleshooting.md +++ b/docs/consume-packages/Package-restore-troubleshooting.md @@ -20,6 +20,19 @@ This article focuses on common errors when restoring packages and steps to resol If the instructions here do not work for you, [please file an issue on GitHub](https://github.com/NuGet/docs.microsoft.com-nuget/issues) so that we can examine your scenario more carefully. Do not use the "Is this page helpful?" control shown on this page because it doesn't give us the ability to contact you for more information. +## Quick solution for Visual Studio users + +If you're using Visual Studio, first enable package restore as follows. Otherwise continue to the sections that follow. + +1. Select the **Tools > NuGet Package Manager > Package Manager Settings** menu command. +1. Set both options under **Package Restore** +1. Select **OK** +1. Build your project again. + +![Enable NuGet package restore in Tool/Options](../consume-packages/media/restore-01-autorestoreoptions.png) + +These settings can also be changed in your `NuGet.config` file; see the [consent](#consent) section. + ## This project references NuGet package(s) that are missing on this computer @@ -37,8 +50,8 @@ This situation commonly occurs when you obtain the project's source code from so Use one of the following methods to restore the packages: +- In Visual Studio, enable package restore by selecting the **Tools > NuGet Package Manager > Package Manager Settings** menu command, setting both options under **Package Restore**, and selecting **OK** (see the [consent](#consent) section below). Then build the solution again. - For .NET Core projects, run `dotnet restore` or `dotnet build` (which automatically runs restore). -- In Visual Studio, first enable package restore by selecting the **Tools > NuGet Package Manager > Package Manager Settings** menu command, setting both options under **Package Restore**, and selecting **OK** (see the [consent](#consent) section below). Then build the solution again. - On the command line, run `nuget restore` (except for projects created with `dotnet`, in which case use `dotnet restore`). - On the command line with projects using the PackageReference format, run `msbuild /t:restore`. @@ -70,19 +83,11 @@ during build.' You can also give consent by setting the environment variable 'EnableNuGetPackageRestore' to 'true'. Missing packages: {name} ``` -This error indicates that package restore is disabled in your NuGet configuration, that is, the applicable `nuget.config` file (typically `%AppData%\NuGet\NuGet.Config` on Windows and `~/.nuget/NuGet/NuGet.Config` on Mac/Linux) contains the following: +This error indicates that package restore is disabled in your NuGet configuration. -```xml - - - - - - - -``` +You can change the applicable settings in Visual Studio as described earlier under [Quick solution for Visual Studio users](#quick-solution-for-visual-studio-users). -To enable package restore and automatic restore on build, set both keys to true: +You can also edit these settings directly in the applicable `nuget.config` file (typically `%AppData%\NuGet\NuGet.Config` on Windows and `~/.nuget/NuGet/NuGet.Config` on Mac/Linux). Make sure the `enabled` and `automatic` keys under `packageRestore` are set to True: ```xml @@ -94,12 +99,7 @@ To enable package restore and automatic restore on build, set both keys to true: ``` -You can edit these settings directly, or by opening **Tools > NuGet Package Manager > Package Manager Settings** in Visual Studio and setting the options for **Allow NuGet to download missing packages** and **Automatically check for missing packages during build in Visual Studio** (shown below). Select **OK** to apply the settings, then try restoring packages again or running a build. - -![Enable NuGet package restore in Tool/Options](../consume-packages/media/restore-01-autorestoreoptions.png) - -> [!Important] -> If you edit the `packageRestore` settings directly in `nuget.config`, restart Visual Studio so that the options dialog box shows the current values. +Note that if you edit the `packageRestore` settings directly in `nuget.config`, restart Visual Studio so that the options dialog box shows the current values. ## Other potential conditions From c0b0b7d1a23a4881d73b8360e123f5265dfc03de Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 14 Mar 2018 16:59:11 -0700 Subject: [PATCH 0644/2943] Tweak --- docs/consume-packages/Package-restore-troubleshooting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/consume-packages/Package-restore-troubleshooting.md b/docs/consume-packages/Package-restore-troubleshooting.md index b20966525..5a10f26cb 100644 --- a/docs/consume-packages/Package-restore-troubleshooting.md +++ b/docs/consume-packages/Package-restore-troubleshooting.md @@ -50,7 +50,7 @@ This situation commonly occurs when you obtain the project's source code from so Use one of the following methods to restore the packages: -- In Visual Studio, enable package restore by selecting the **Tools > NuGet Package Manager > Package Manager Settings** menu command, setting both options under **Package Restore**, and selecting **OK** (see the [consent](#consent) section below). Then build the solution again. +- In Visual Studio, enable package restore by selecting the **Tools > NuGet Package Manager > Package Manager Settings** menu command, setting both options under **Package Restore**, and selecting **OK**. Then build the solution again. - For .NET Core projects, run `dotnet restore` or `dotnet build` (which automatically runs restore). - On the command line, run `nuget restore` (except for projects created with `dotnet`, in which case use `dotnet restore`). - On the command line with projects using the PackageReference format, run `msbuild /t:restore`. From 45a3f0f1d8ed732cb15c21a040b946261017d7ea Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 14 Mar 2018 17:00:45 -0700 Subject: [PATCH 0645/2943] Tweak --- docs/consume-packages/Package-restore-troubleshooting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/consume-packages/Package-restore-troubleshooting.md b/docs/consume-packages/Package-restore-troubleshooting.md index 5a10f26cb..73a9e78c3 100644 --- a/docs/consume-packages/Package-restore-troubleshooting.md +++ b/docs/consume-packages/Package-restore-troubleshooting.md @@ -18,7 +18,7 @@ ms.reviewer: This article focuses on common errors when restoring packages and steps to resolve them. For complete details on restoring packages, see [Package restore](../consume-packages/package-restore.md#enabling-and-disabling-package-restore). -If the instructions here do not work for you, [please file an issue on GitHub](https://github.com/NuGet/docs.microsoft.com-nuget/issues) so that we can examine your scenario more carefully. Do not use the "Is this page helpful?" control shown on this page because it doesn't give us the ability to contact you for more information. +If the instructions here do not work for you, [please file an issue on GitHub](https://github.com/NuGet/docs.microsoft.com-nuget/issues) so that we can examine your scenario more carefully. Do not use the "Is this page helpful?" control that may appear on this page because it doesn't give us the ability to contact you for more information. ## Quick solution for Visual Studio users From 5a6dcd1983e0c444ee5cc3d736f9b0508333a609 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Wed, 14 Mar 2018 17:01:42 -0700 Subject: [PATCH 0646/2943] Tweak --- docs/consume-packages/Package-restore-troubleshooting.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/consume-packages/Package-restore-troubleshooting.md b/docs/consume-packages/Package-restore-troubleshooting.md index 73a9e78c3..5dc33301f 100644 --- a/docs/consume-packages/Package-restore-troubleshooting.md +++ b/docs/consume-packages/Package-restore-troubleshooting.md @@ -25,8 +25,8 @@ If the instructions here do not work for you, [please file an issue on GitHub](h If you're using Visual Studio, first enable package restore as follows. Otherwise continue to the sections that follow. 1. Select the **Tools > NuGet Package Manager > Package Manager Settings** menu command. -1. Set both options under **Package Restore** -1. Select **OK** +1. Set both options under **Package Restore**. +1. Select **OK**. 1. Build your project again. ![Enable NuGet package restore in Tool/Options](../consume-packages/media/restore-01-autorestoreoptions.png) From b3a8e3446aa6239fef89b621a64fee835a83f02b Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 15 Mar 2018 10:56:41 -0700 Subject: [PATCH 0647/2943] Add note about web.config --- docs/hosting-packages/NuGet-Server.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/hosting-packages/NuGet-Server.md b/docs/hosting-packages/NuGet-Server.md index 94631b08e..b7179b515 100644 --- a/docs/hosting-packages/NuGet-Server.md +++ b/docs/hosting-packages/NuGet-Server.md @@ -40,13 +40,16 @@ If you have further questions about NuGet.Server, create an issue on [https://gi ![Installing the NuGet.Server package](media/Hosting_02-NuGet.Server-Package.png) -1. Installing NuGet.Server converts the empty Web application into a package source. It installs a variety of other packages, creates a `Packages` folder in the application, and overwrites `web.config` to include additional settings (see the comments in that file for details). +1. Installing NuGet.Server converts the empty Web application into a package source. It installs a variety of other packages, creates a `Packages` folder in the application, and modifies `web.config` to include additional settings (see the comments in that file for details). + + > [!Important]] + > Carefully inspect `web.config` after the NuGet.Server package has completed its modifications to that file. NuGet.Server may not overwrite existing elements but instead create duplicate elements. Those duplicates will cause an "Internal Server Error" when you later try to run the project. For example, if your `web.config` contains `` before installing NuGet.Server, the package doesn't overwrite it but inserts a second ``. In that case, delete the element with the older framework version. 1. To make packages available in the feed when you publish the application to a server, add each `.nupkg` files to the `Packages` folder in Visual Studio, then set each one's **Build Action** to **Content** and **Copy to Output Directory** to **Copy always**: ![Copying packages to the Packages folder in the project](media/Hosting_03-NuGet.Server-Package-Folder.png) -1. Run the site locally in Visual Studio (using **Debug > Start Without Debugging** or Ctrl+F5). The home page provides the package feed URLs: +1. Run the site locally in Visual Studio (using **Debug > Start Without Debugging** or Ctrl+F5). The home page provides the package feed URLs as shown below. If you see errors, carefully inspect your `web.config` for duplicate elements are noted earlier with step 5. ![Default home page for an application with NuGet.Server](media/Hosting_04-NuGet.Server-FeedHomePage.png) From 8df90c9ed03720c162789ee0c4c95b7a0487b834 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Thu, 15 Mar 2018 11:00:37 -0700 Subject: [PATCH 0648/2943] Typo --- docs/hosting-packages/NuGet-Server.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hosting-packages/NuGet-Server.md b/docs/hosting-packages/NuGet-Server.md index b7179b515..bcbf1db29 100644 --- a/docs/hosting-packages/NuGet-Server.md +++ b/docs/hosting-packages/NuGet-Server.md @@ -42,7 +42,7 @@ If you have further questions about NuGet.Server, create an issue on [https://gi 1. Installing NuGet.Server converts the empty Web application into a package source. It installs a variety of other packages, creates a `Packages` folder in the application, and modifies `web.config` to include additional settings (see the comments in that file for details). - > [!Important]] + > [!Important] > Carefully inspect `web.config` after the NuGet.Server package has completed its modifications to that file. NuGet.Server may not overwrite existing elements but instead create duplicate elements. Those duplicates will cause an "Internal Server Error" when you later try to run the project. For example, if your `web.config` contains `` before installing NuGet.Server, the package doesn't overwrite it but inserts a second ``. In that case, delete the element with the older framework version. 1. To make packages available in the feed when you publish the application to a server, add each `.nupkg` files to the `Packages` folder in Visual Studio, then set each one's **Build Action** to **Content** and **Copy to Output Directory** to **Copy always**: From 81ed288e9913b24621205b37e4462005843929c5 Mon Sep 17 00:00:00 2001 From: Cam Soper Date: Fri, 16 Mar 2018 19:59:59 -0500 Subject: [PATCH 0649/2943] Minor tweaks (#763) --- docs/TOC.md | 2 +- .../consume-packages/Package-References-in-Project-Files.md | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index fdc7ccdef..cf34ada45 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -17,7 +17,6 @@ ## [Managing the NuGet cache](consume-packages/managing-the-nuget-cache.md) ## [Configuring NuGet behavior](consume-packages/configuring-nuget-behavior.md) ## [Dependency resolution](consume-packages/dependency-resolution.md) -## [Package references in project files](consume-packages/package-references-in-project-files.md) # Create packages ## [Overview and workflow](create-packages/overview-and-workflow.md) ## [Creating a package](create-packages/creating-a-package.md) @@ -74,6 +73,7 @@ ## [dotnet commands](tools/dotnet-Commands.md) # Reference ## [.nuspec](reference/nuspec.md) +## [Package references in project files](consume-packages/package-references-in-project-files.md) ## [packages.config](reference/packages-config.md) ## [Package versioning](reference/package-versioning.md) ## [Nuget.Config file](reference/nuget-config-file.md) diff --git a/docs/consume-packages/Package-References-in-Project-Files.md b/docs/consume-packages/Package-References-in-Project-Files.md index 5e59530b4..a53f2b382 100644 --- a/docs/consume-packages/Package-References-in-Project-Files.md +++ b/docs/consume-packages/Package-References-in-Project-Files.md @@ -3,7 +3,7 @@ title: NuGet PackageReference format (package references in project files) | Mic author: kraigb ms.author: kraigb manager: ghogen -ms.date: 07/17/2017 +ms.date: 03/16/2018 ms.topic: article ms.prod: nuget ms.technology: null @@ -20,7 +20,7 @@ Package references, using the `PackageReference` node, manage NuGet dependencies With PackageReference, you can also use MSBuild conditions to choose package references per target framework, configuration, platform, 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).) -By default, PackageReference is used for .NET Core projects, .NET Standard projects, and UWP projects targeting Windows 10 Build 15063 (Creators Update) and later. .NET full framework projects support PackageReference, but currently default to `packages.config`. To use PackageReference, migrate the dependencies from `packages.config` into your project file, then remove packages.config. +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 full framework projects support PackageReference, but currently default to `packages.config`. To use PackageReference, migrate the dependencies from `packages.config` into your project file, then remove packages.config. ## Adding a PackageReference @@ -90,7 +90,7 @@ Allowable values for these tags are as follows, with multiple values separated b | Value | Description | | --- | --- | compile | Contents of the `lib` folder | -| runtime | Contents of the `runtime` folder | +| runtime | Contents of the `runtimes` folder | | contentFiles | Contents of the `contentfiles` folder | | build | Props and targets in the `build` folder | | analyzers | .NET analyzers | From 42528cef77bbdcbbb12013c764dab5a9d7495a44 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 19 Mar 2018 11:19:41 -0700 Subject: [PATCH 0650/2943] Revising cache topic, clarifying global-packages vs. cache --- .openpublishing.redirection.json | 5 + README.md | 3 +- docs/TOC.md | 4 +- docs/archive/project-json-archive.md | 8 +- docs/archive/project-json.md | 4 +- .../Configuring-NuGet-Behavior.md | 2 +- .../consume-packages/Dependency-Resolution.md | 6 +- .../Finding-and-Choosing-Packages.md | 47 +++----- .../Managing-the-NuGet-Cache.md | 53 --------- .../consume-packages/Overview-and-Workflow.md | 20 ++-- docs/consume-packages/Package-Restore.md | 26 +++-- .../Package-restore-troubleshooting.md | 18 ++- .../Packages-and-Source-Control.md | 30 ++--- .../Reinstalling-and-Updating-Packages.md | 3 +- .../consume-packages/Team-Foundation-Build.md | 6 + ...g-the-global-packages-and-cache-folders.md | 110 ++++++++++++++++++ .../media/Finding-01-Popularity.png | Bin 48129 -> 37578 bytes .../media/Finding-02-SearchResults.png | Bin 41923 -> 36729 bytes .../media/Finding-06-include-prerelease.png | Bin 45205 -> 33156 bytes .../media/options-clear-caches.png | Bin 0 -> 21118 bytes .../ways-to-install-a-package.md | 57 +++++---- docs/create-packages/Creating-a-Package.md | 5 +- docs/install-nuget-client-tools.md | 21 ++-- ...tall-and-use-a-package-in-visual-studio.md | 10 +- ...-and-use-a-package-using-the-dotnet-cli.md | 2 +- docs/reference/msbuild-targets.md | 2 +- docs/release-notes/Known-Issues.md | 2 +- .../NuGet-2.6.1-for-WebMatrix.md | 1 - docs/release-notes/NuGet-2.8.6.md | 1 - docs/tools/Package-Manager-Console.md | 20 +--- docs/tools/cli-ref-environment-variables.md | 4 +- docs/tools/cli-ref-install.md | 2 +- docs/tools/cli-ref-locals.md | 14 ++- docs/tools/cli-ref-mirror.md | 2 +- docs/tools/cli-ref-restore.md | 2 +- docs/tools/dotnet-Commands.md | 2 +- docs/tools/nuget-exe-CLI-Reference.md | 4 +- docs/tools/ps-ref-install-package.md | 1 - docs/what-is-nuget.md | 33 +++--- 39 files changed, 307 insertions(+), 223 deletions(-) delete mode 100644 docs/consume-packages/Managing-the-NuGet-Cache.md create mode 100644 docs/consume-packages/managing-the-global-packages-and-cache-folders.md create mode 100644 docs/consume-packages/media/options-clear-caches.png diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index c0363dc7b..f55d90d92 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -20,6 +20,11 @@ "redirect_url": "/nuget/reference/extensibility/nuget-exe-credential-providers", "redirect_document_id": false }, + { + "source_path": "docs/consume-packages/managing-the-nuget-cache.md", + "redirect_url": "/nuget/consume-packages/managing-the-global-packages-and-cache-folders", + "redirect_document_id": false + }, { "source_path": "docs/create-packages/Dependency-Versions.md", "redirect_url": "/nuget/reference/package-versioning", diff --git a/README.md b/README.md index 359528822..3b323f73d 100644 --- a/README.md +++ b/README.md @@ -31,8 +31,7 @@ No contribution is too big or too small-- If you're creating a new topic, keep the following in mind as well: 1. Always place the new topic in an appropriate subfolder, and follow the conventions for filenames as you see them used here. -1. You must include a metadata block as you see on other topics. The fields you should change are the following: title, ms.date, ms.assetid, description, and keywords. - 1. For ms.assetid, always create a new GUID for a new topic. +1. You must include a metadata block as you see on other topics. The fields you should change are the following: title, ms.date, description, and keywords. 1. Leave the ms.author and manager fields set as they are, because these are used to manage ownership internally. 1. Ideally for SEO, the title field and the top-level # heading of the topic are different; see various topics for examples. 1. In addition to adding your page, edit docs/TOC.md to add a link to that page. diff --git a/docs/TOC.md b/docs/TOC.md index fdc7ccdef..9d991ee13 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -14,7 +14,7 @@ ### [Troubleshooting](consume-packages/package-restore-troubleshooting.md) ## [Reinstalling and updating packages](consume-packages/reinstalling-and-updating-packages.md) ## [Packages and source control](consume-packages/packages-and-source-control.md) -## [Managing the NuGet cache](consume-packages/managing-the-nuget-cache.md) +## [Managing the global packages and cache folders](consume-packages/managing-the-global-packages-and-cache-folders.md) ## [Configuring NuGet behavior](consume-packages/configuring-nuget-behavior.md) ## [Dependency resolution](consume-packages/dependency-resolution.md) ## [Package references in project files](consume-packages/package-references-in-project-files.md) @@ -88,7 +88,7 @@ ### [NuGet credential providers for Visual Studio](reference/extensibility/nuget-credential-providers-for-visual-studio.md) ### [nuget.exe credential providers](reference/extensibility/nuget-exe-credential-providers.md) ## Archived content -### [project.json reference format](archive/project-json.md) +### [project.json management format](archive/project-json.md) ### [project.json and UWP](archive/project-json-and-uwp.md) ### [project.json impact](archive/project-json-impact.md) # API diff --git a/docs/archive/project-json-archive.md b/docs/archive/project-json-archive.md index be6120d2c..537b7fa59 100644 --- a/docs/archive/project-json-archive.md +++ b/docs/archive/project-json-archive.md @@ -16,7 +16,7 @@ ms.reviewer: # project.json archive -The `project.json` reference format was introduced with NuGet 3.x and used for certain project types. It was deprecated with the introduction of the PackageReference format, in which dependencies are listed directly in a project file. +The `project.json` management format was introduced with NuGet 3.x and used for certain project types. It was deprecated with the introduction of the PackageReference format, in which dependencies are listed directly in a project file. Also see: @@ -24,11 +24,11 @@ Also see: - [project.json impact on package authors](project-json-impact.md) - [project.json and UWP](project-json-and-uwp.md) -## project.json reference format +## project.json management format *Originally in [Package restore](../what-is-nuget.md).* -In the list of reference formats: +In the list of management formats: - [`project.json`](project-json.md): *(deprecated)* A JSON file that maintains a list of the project's dependencies with an overall package graph in an associated file, `project.lock.json`. This format is deprecated in favor of PackageReference. @@ -146,7 +146,7 @@ The `` element is used instead of `` with `project.json`. *Originally in [Package Manager UI reference](../tools/package-manager-ui.md).* -Projects using `project.json` reference format show only the **Show preview window** option. +Projects using `project.json` management format show only the **Show preview window** option. ### Visual Studio Templates diff --git a/docs/archive/project-json.md b/docs/archive/project-json.md index bb9131635..888bb169d 100644 --- a/docs/archive/project-json.md +++ b/docs/archive/project-json.md @@ -18,7 +18,7 @@ ms.reviewer: *NuGet 3.x+* -The `project.json` file maintains a list of packages used in a project, known as a package reference format. It supersedes `packages.config` but is in turn superseded by [PackageReference](../consume-packages/package-references-in-project-files.md) with NuGet 4.0+. +The `project.json` file maintains a list of packages used in a project, known as a package management format. It supersedes `packages.config` but is in turn superseded by [PackageReference](../consume-packages/package-references-in-project-files.md) with NuGet 4.0+. The [`project.lock.json`](#projectlockjson) file (described below) is also used in projects employing `project.json`. @@ -118,7 +118,7 @@ Lists the frameworks that the project runs on, such as `net45`, `netcoreapp`, `n } ``` -Only a single entry is allowed in the `frameworks` section. (An exception is `project.json` files for ASP.NET projects that are build with deprecated DNX toolchain, which allows for multiple targets.) +Only a single entry is allowed in the `frameworks` section. (An exception is `project.json` files for ASP.NET projects that are build with deprecated DNX tool chain, which allows for multiple targets.) ## Runtimes diff --git a/docs/consume-packages/Configuring-NuGet-Behavior.md b/docs/consume-packages/Configuring-NuGet-Behavior.md index 21ecb949d..8e7bba8f6 100644 --- a/docs/consume-packages/Configuring-NuGet-Behavior.md +++ b/docs/consume-packages/Configuring-NuGet-Behavior.md @@ -216,7 +216,7 @@ The following table describes where the `NuGetDefaults.Config` file should be st ### NuGetDefaults.Config settings -- `packageSources`: this collection has the same meaning as `packageSources` in regular config files and specifies the default sources. NuGet uses the sources in order when installing or updating packages in projects using the `packages.config` reference format. For projects using the PackageReference format, NuGet uses local sources first, then sources on network shares, then HTTP sources, regardless of the order in the configuration files. NuGet always ignores the order of sources with restore operations. +- `packageSources`: this collection has the same meaning as `packageSources` in regular config files and specifies the default sources. NuGet uses the sources in order when installing or updating packages in projects using the `packages.config` management format. For projects using the PackageReference format, NuGet uses local sources first, then sources on network shares, then HTTP sources, regardless of the order in the configuration files. NuGet always ignores the order of sources with restore operations. - `disabledPackageSources`: this collection also has the same meaning as in `NuGet.Config` files, where each affected source is listed by its name and a true/false value indicating whether it's disabled. This allows the source name and URL to remain in `packageSources` without having it turned on by default. Individual developers can then re-enable the source by setting the source's value to false in other `NuGet.Config` files without having to find the correct URL again. This is also useful to supply developers with a full list of internal source URLs for an organization while enabling only an individual team's source by default. diff --git a/docs/consume-packages/Dependency-Resolution.md b/docs/consume-packages/Dependency-Resolution.md index 352384e86..b7e5daa00 100644 --- a/docs/consume-packages/Dependency-Resolution.md +++ b/docs/consume-packages/Dependency-Resolution.md @@ -20,7 +20,7 @@ Any time a package is installed or reinstalled, which includes being installed a Those immediate dependencies might then also have dependencies on their own, which can continue to an arbitrary depth. This produces what's called a *dependency graph* that describes the relationships between packages at all levels. -When multiple packages have the same dependency, then the same package ID can appear in the graph multiple times, potentially with different version constraints. However, only one version of a given package can be used in a project, so NuGet must choose which version is used. The exact process depends on the package reference format being used. +When multiple packages have the same dependency, then the same package ID can appear in the graph multiple times, potentially with different version constraints. However, only one version of a given package can be used in a project, so NuGet must choose which version is used. The exact process depends on the package management format being used. ## Dependency resolution with PackageReference @@ -105,7 +105,7 @@ With `packages.config`, NuGet attempts to resolve dependency conflicts during th By default, NuGet 2.8 looks for the lowest patch version (see [NuGet 2.8 release notes](../release-notes/nuget-2.8.md#patch-resolution-for-dependencies)). You can control this setting through the `DependencyVersion` attribute in `Nuget.Config` and the `-DependencyVersion` switch on the command line. -The `packages.config` process for resolving dependencies gets complicated for larger dependency graphs. Each new package installation requires a traversal of the whole graph and raises the chance for version conflicts. When a conflict occurs, installation is stopped, leaving the project in an indeterminate state, especially with potential modifications to the project file itself. This is not an issue when using other package reference formats. +The `packages.config` process for resolving dependencies gets complicated for larger dependency graphs. Each new package installation requires a traversal of the whole graph and raises the chance for version conflicts. When a conflict occurs, installation is stopped, leaving the project in an indeterminate state, especially with potential modifications to the project file itself. This is not an issue when using other package management formats. ## Managing dependency assets @@ -117,7 +117,7 @@ When the top-level project is itself a package, you also have control over this There are scenarios in which assemblies with the same name might be referenced more than once in a project, producing design-time and build-time errors. Consider a project that contains a custom version of `C.dll`, and references Package C that also contains `C.dll`. At the same time, the project also depends on Package B which also depends on Package C and `C.dll`. As a result, NuGet can't determine which `C.dll` to use, but you can't just remove the project's dependency on Package C because Package B also depends on it. -To resolve this, you must directly reference the `C.dll` you want (or use another package that references the right one), and then add a dependency on Package C that excludes all its assets. This is done as follows depending on the package reference format in use: +To resolve this, you must directly reference the `C.dll` you want (or use another package that references the right one), and then add a dependency on Package C that excludes all its assets. This is done as follows depending on the package management format in use: - [PackageReference](../consume-packages/package-references-in-project-files.md): add `Exclude="All"` in the dependency: diff --git a/docs/consume-packages/Finding-and-Choosing-Packages.md b/docs/consume-packages/Finding-and-Choosing-Packages.md index 34c1a7521..7c4154b5b 100644 --- a/docs/consume-packages/Finding-and-Choosing-Packages.md +++ b/docs/consume-packages/Finding-and-Choosing-Packages.md @@ -3,11 +3,10 @@ title: Finding and Choosing NuGet Packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 12/07/2017 +ms.date: 03/16/2018 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: 8886f899-797b-4704-9d16-820b55b71186 description: An overview of how to find and choose the best NuGet packages for a project including details on the NuGet search syntax. keywords: NuGet package consumption, NuGet package discovery, best NuGet packages, deciding on packages, consuming packages, evaluating package, NuGet search syntax ms.reviewer: @@ -27,7 +26,7 @@ When you visit nuget.org or open the Package Manager UI in Visual Studio, you se Notice the **Include prerelease** option on the upper right of the page. When selected, nuget.org shows all versions of packages including beta and other early releases. To show only stable released, clear the option. -For specific needs, searching by tags (within Visual Studio's Package Manager or on a portal like nuget.org) is the most common means of discovering a suitable package. For example, searching on "json" lists all NuGet packages that are tagged with that keyword and thus have some relationship to the JSON data format. +For specific needs, searching by tags (within the Visual Studio Package Manager or on a portal like nuget.org) is the most common means of discovering a suitable package. For example, searching on "json" lists all NuGet packages that are tagged with that keyword and thus have some relationship to the JSON data format. ![Search results for 'json' on nuget.org](media/Finding-02-SearchResults.png) @@ -37,7 +36,7 @@ At this time, search results are sorted only by relevance, so you generally want ### Does the package support my project's target framework? -NuGet installs a package into a project only if that package's supported frameworks include the project's target framework. (See [Supporting multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) for how this is done when creating a package.) If the package is not compatible, NuGet issues an error. +NuGet installs a package into a project only if that package's supported frameworks include the project's target framework. If the package is not compatible, NuGet issues an error. Some packages list their supported frameworks directly in the nuget.org gallery, but because such data is not required, many packages do not include that list. At present there is no means to search nuget.org for packages that support a specific target framework (the feature is under consideration, see [NuGet Issue 2936](https://github.com/NuGet/NuGetGallery/issues/2936)). @@ -55,7 +54,7 @@ By default, nuget.org shows pre-release packages in search results. To search on ![Include prerelease checkbox on nuget.org](media/Finding-06-include-prerelease.png) -In Visual Studio and when using the NuGet CLI, NuGet does not include pre-release versions by default. To change this behavior, do the following steps: +In Visual Studio, and when using the NuGet and dotnet CLI tools, NuGet does not include pre-release versions by default. To change this behavior, do the following steps: - **Package Manager UI in Visual Studio**: In the **Manage NuGet Packages** UI, set the **Include prerelease** box. Setting or clearing this box refreshes the Package Manager UI and the list of available versions you can install. @@ -63,7 +62,9 @@ In Visual Studio and when using the NuGet CLI, NuGet does not include pre-releas - **Package Manager Console**: Use the `-IncludePrerelease` switch with the `Find-Package`, `Get-Package`, `Install-Package`, `Sync-Package`, and `Update-Package` commands. Refer to the [PowerShell Reference](../tools/powershell-reference.md). -- **NuGet CLI**: Use the `-prerelease` switch with the `install`, `update`, `delete`, and `mirror` commands. Refer to the [NuGet CLI reference](../tools/nuget-exe-cli-reference.md) +- **nuget.exe CLI**: Use the `-prerelease` switch with the `install`, `update`, `delete`, and `mirror` commands. Refer to the [NuGet CLI reference](../tools/nuget-exe-cli-reference.md) + +- **dotnet.exe CLI**: Specify the exact pre-release version using the `-v` argument. Refer to the [dotnet add package reference](/dotnet/core/tools/dotnet-add-package). @@ -75,7 +76,7 @@ To find native packages on [nuget.org](https://www.nuget.org/packages), search u ## Evaluating packages -The best way to evaluate the usefulness of a package is to download it and try it out in your code. After all, every highly popular package got started with only a few developers using it, and you might be one of the early adopters! (Note that all packages on nuget.org are routinely scanned for viruses.) +The best way to evaluate the usefulness of a package is to download it and try it out in your code (all packages on nuget.org are routinely scanned for viruses, by the way). After all, every highly popular package got started with only a few developers using it, and you might be one of the early adopters! At the same time, using a NuGet package means taking a dependency on it, so you want to make sure it's robust and reliable. Because installing and directly testing a package is time-consuming, you can also learn a lot about a package's quality by using the information on a package's listing page: @@ -89,7 +90,7 @@ At the same time, using a NuGet package means taking a dependency on it, so you - *Recent installs*: on the package page under **Statistics**, select **View full stats**. The full stats page shows the package installs over the last six weeks by version number. A package that other developers are actively using is typically a better choice than one that's not. -- *Support*: on the package page under **Info**, select **Project Site** (if available) to see what support options are available. A project with a dedicated site is generally better supported. +- *Support*: on the package page under **Info**, select **Project Site** (if available) to see what support options the author provides. A project with a dedicated site is generally better supported. - *Developer history*: on the package page under **Owners**, select an owner to see what other packages they've published. Those with multiple packages are more likely to continue supporting their work in the future. @@ -104,29 +105,19 @@ At the same time, using a NuGet package means taking a dependency on it, so you NuGet package search works the same on nuget.org, from the NuGet CLI, and within the NuGet Package Manager extension in Visual Studio. In general, search is applied to keywords as well as package descriptions. -- **Keywords**: Search looks for relevant packages that contain all the provided keywords. Example: - - ``` - modern UI javascript - ``` - -- **Phrases**: Entering terms within quotation marks looks for exact case-insensitive matches to those terms. Example: - - ``` - "modern UI" package - ``` - +- **Keywords**: Search looks for relevant packages that contain all the provided keywords. Example: `modern UI javascript` +- **Phrases**: Entering terms within quotation marks looks for exact case-insensitive matches to those terms. Example: `"modern UI" package` - **Filtering**: You can apply a search term to a specific property by using the syntax `:` where `` (case-insensitive) can be `id`, `packageid`, `version`, `title`, `tags`, `author`, `description`, `summary`, and `owner`. Terms can be contained in quotes if needed, and you can search for multiple properties at the same time. Also, searches on the `id` property are substring matches, whereas `packageid` uses an exact match. Examples: ``` - id:NuGet.Core //Match any part of the id property + id:NuGet.Core # Match any part of the id property Id:"Nuget.Core" ID:jQuery - title:jquery //Searches title as shown on the package listing - PackageId:jquery //Match the package id exactly - id:jquery id:ui //Search for multiple terms in the id - id:jquery tags:validation //Search multiple properties - id:"jquery.ui" //Phrase search - invalid:jquery ui //Unsupported properties are ignored, so this - //is the same as searching on jquery ui + title:jquery # Searches title as shown on the package listing + PackageId:jquery # Match the package id exactly + id:jquery id:ui # Search for multiple terms in the id + id:jquery tags:validation # Search multiple properties + id:"jquery.ui" # Phrase search + invalid:jquery ui # Unsupported properties are ignored, so this + # is the same as searching on jquery ui ``` \ No newline at end of file diff --git a/docs/consume-packages/Managing-the-NuGet-Cache.md b/docs/consume-packages/Managing-the-NuGet-Cache.md deleted file mode 100644 index 2167075a3..000000000 --- a/docs/consume-packages/Managing-the-NuGet-Cache.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: How to manage package caching in NuGet | Microsoft Docs -author: kraigb -ms.author: kraigb -manager: ghogen -ms.date: 7/26/2017 -ms.topic: article -ms.prod: nuget -ms.technology: null -description: How to manage the different NuGet package caches that exist on a machine, which are used when installing or restoring packages. -keywords: NuGet package cache, package caching, NuGet caches, managing caches, local NuGet cache, global NuGet cache, NuGet locals command, clearing a cache -ms.reviewer: -- karann-msft -- unniravindranathan ---- - -# Managing the NuGet cache - -NuGet manages several local caches to avoid downloading packages that are already on the computer, and to provide offline support. NuGet automatically falls back to the cache when installing or reinstalling packages without a network connection. - -Cache locations are available using the [locals command](../tools/cli-ref-locals.md): - -```cli -nuget locals all -list -``` - -Typical output is as follows: - -```output -http-cache: C:\Users\user\AppData\Local\NuGet\v3-cache #NuGet 3.x+ cache -packages-cache: C:\Users\user\AppData\Local\NuGet\Cache #NuGet 2.x cache -global-packages: C:\Users\user\.nuget\packages\ #Global packages folder -temp: C:\Users\user\AppData\Local\Temp\NuGetScratch #Temp folder -``` - -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: - -```cli -nuget locals http-cache -clear #Clear the 3.x+ cache -nuget locals packages-cache -clear #Clear the 2.x cache -nuget locals global-packages -clear #Clear the global packages folder -nuget locals temp -clear #Clear the temporary cache -nuget locals all -clear #Clear all caches -``` - -Note that managing the cache is presently supported only from the NuGet command line, and not within Visual Studio or through the Package Manager Console. Also, managing the 2.x cache is not supported in NuGet 3.6 and later. - -The following errors can occur when using `nuget locals`: - -- **Clearing local resources failed: Unable to delete one or more files** -- **The directory is not empty** - -These indicate that you either do not have permission to delete files in the cache, or that one or more files in the cache are in use by another process, which must be closed before the files can be removed. diff --git a/docs/consume-packages/Overview-and-Workflow.md b/docs/consume-packages/Overview-and-Workflow.md index e13be166a..041cc1abe 100644 --- a/docs/consume-packages/Overview-and-Workflow.md +++ b/docs/consume-packages/Overview-and-Workflow.md @@ -3,7 +3,7 @@ title: Overview and workflow of using NuGet packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 06/06/2017 +ms.date: 03/16/2018 ms.topic: article ms.prod: nuget ms.technology: null @@ -16,29 +16,31 @@ ms.reviewer: # Package consumption workflow -Between nuget.org and private package galleries that your organization might establish, you can find tens of thousands of highly useful packages to use in your apps and services. But regardless of the source, consuming a package follows the same general workflow as shown below. For details, see [Finding and Choosing Packages](../consume-packages/finding-and-choosing-packages.md) and [Different ways to install a NuGet package](ways-to-install-a-package.md). +Between nuget.org and private package galleries that your organization might establish, you can find tens of thousands of highly useful packages to use in your apps and services. But regardless of the source, consuming a package follows the same general workflow. ![Flow of going to a package source, finding a package, installing it in a project, then adding a using statement and calls to the package API](media/Overview-01-GeneralFlow.png) -\* _Except with `nuget install` from the command-line, in which case it's necessary to edit the configuration files by hand. See the [install command reference](../tools/cli-ref-install.md)._ +\* _Visual Studio and `dotnet.exe` only. The `nuget install` command does not modify project files or `packages.config`, so entries must be added manually._ -NuGet remembers the identity and version number of each installed package, recording it in either [`packages.config`](../reference/packages-config.md) or the project file, depending on project type and your version of NuGet. With NuGet 4.0+, [storing dependencies in the project file, or PackageReference](../consume-packages/package-references-in-project-files.md) is generally the default, although this is configurable in Visual Studio through the [Package Manager UI options](../tools/package-manager-ui.md). In any case, you can look in the appropriate file at any time to see the full list of dependencies for your project. +For further details, see [Finding and Choosing Packages](../consume-packages/finding-and-choosing-packages.md) and [Different ways to install a NuGet package](ways-to-install-a-package.md). + +NuGet remembers the identity and version number of each installed package, recording it in either [`packages.config`](../reference/packages-config.md) or the project file (using [PackageReference](../consume-packages/package-references-in-project-files.md)), depending on project type and your version of NuGet. With NuGet 4.0+, PackageReference is preferred, although this is configurable in Visual Studio through the [Package Manager UI options](../tools/package-manager-ui.md). In any case, you can look in the appropriate file at any time to see the full list of dependencies for your project. > [!Tip] > It's prudent to always check the license for each package you intend to use in your software. On nuget.org, you find a **License Info** link on the right side of each package's description page. If a package does not specify license terms, contact the package owner directly using the **Contact owners** link on the package page. Microsoft does not license any intellectual property to you from third party package providers and is not responsible for information provided by third parties. -When installing packages, NuGet typically checks if the package is already available from its cache. You can manually clear this cache from the command line, as described on [Managing the NuGet cache](../consume-packages/managing-the-nuget-cache.md). +When installing packages, NuGet typically checks if the package is already available from its cache. You can manually clear this cache from the command line, as described on [Managing the global packages and cache folders](../consume-packages/managing-the-global-packages-and-cache-folders.md). -NuGet also makes sure that the target frameworks supported by the package are compatible with your project. If the package does not contain compatible assemblies, NuGet will give you an error message. See [Resolving incompatible package errors](dependency-resolution.md#resolving-incompatible-package-errors). +NuGet also makes sure that the target frameworks supported by the package are compatible with your project. If the package does not contain compatible assemblies, NuGet displays an error. See [Resolving incompatible package errors](dependency-resolution.md#resolving-incompatible-package-errors). -When adding project code to a source repository, you typically don't include NuGet packages. Those who later clone the repository, which includes build agents on systems like Visual Studio Team Services, must restore the necessary packages prior to running a build: +When adding project code to a source repository, you typically don't include NuGet packages. Those who later clone the repository or otherwise acquire the project, including build agents on systems like Visual Studio Team Services, must restore the necessary packages prior to running a build: ![Flow of restoring NuGet packages by cloning a repository and using either a restore command](media/Overview-02-RestoreFlow.png) [Package Restore](../consume-packages/package-restore.md) uses the information in the project file or `packages.config` to reinstall all dependencies. Note that there are differences in the process involved, as described in [Dependency Resolution](../consume-packages/dependency-resolution.md). -Occasionally it's necessary to reinstall packages that are already included in a project, which may also reinstall dependencies. This is easy to do using the `reinstall` command via the NuGet command line or the NuGet Package Manager Console. For details, see [Reinstalling and Updating Packages](../consume-packages/reinstalling-and-updating-packages.md). +Occasionally it's necessary to reinstall packages that are already included in a project, which may also reinstall dependencies. This is easy to do using the `nuget reinstall` command or the NuGet Package Manager Console. For details, see [Reinstalling and Updating Packages](../consume-packages/reinstalling-and-updating-packages.md). -Finally, NuGet's behavior is driven by `Nuget.Config` configuration files. Multiple files can be used to centralize certain settings at different levels, as explained in [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md). +Finally, NuGet's behavior is driven by `Nuget.Config` files. Multiple files can be used to centralize certain settings at different levels, as explained in [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md). Enjoy your productive coding with NuGet packages! diff --git a/docs/consume-packages/Package-Restore.md b/docs/consume-packages/Package-Restore.md index 5fb548059..c30c0d6ec 100644 --- a/docs/consume-packages/Package-Restore.md +++ b/docs/consume-packages/Package-Restore.md @@ -3,11 +3,10 @@ title: NuGet Package Restore | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 02/12/2018 +ms.date: 03/16/2018 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: a7bf21da-86ae-4c2d-8750-04ff53f41967 description: An overview of how NuGet restores packages upon which a project depends, including how to disable restore and constrain versions. keywords: NuGet package restore, NuGet package installation, installing package, restoring packages, dependency versions, disabling automatic restore, constraining package versions ms.reviewer: @@ -17,18 +16,18 @@ ms.reviewer: # Package Restore -To promote a cleaner development environment and to reduce repository size, NuGet **Package Restore** installs all referenced packages before a project is built. This widely-used feature—available in Visual Studio, .NET Core 2.0+, and xbuild on Mono—ensures that all dependencies are available in a project without requiring those packages to be stored in source control (see [Packages and Source Control](../consume-packages/packages-and-source-control.md) on how to configure your repository to exclude package binaries). You can also manually restore packages at any time. +To promote a cleaner development environment and to reduce repository size, NuGet **Package Restore** installs all a project's dependencies as listed in either the project file or `packages.config`. Visual Studio can restore packages automatically when a project is built. The `dotnet build` and `dotnet run` commands (.NET Core 2.0+) also perform an automatic restore. You can also restore packages at any time through Visual Studio, `nuget restore`, `dotnet restore`, and xbuild on Mono. -For additional details on package restore on build servers, see [Package restore with TFBuild](../consume-packages/team-foundation-build.md). +Package restore makes sure that all a project's dependencies are available without storing those packages in source control. See [Packages and Source Control](../consume-packages/packages-and-source-control.md) on how to configure your repository to exclude package binaries. ## Package restore overview -Restoring packages first installs the direct dependencies of a project as needed, then installing any dependencies of those packages throughout the entire dependency graph. +Restoring packages first installs the direct dependencies of a project as needed, then installs any dependencies of those packages throughout the entire dependency graph. -If a package is not already installed, NuGet first attempts to retrieve it from the [cache](../consume-packages/managing-the-nuget-cache.md). If the package is not in the cache, NuGet then attempts to download (and cache) the package from all enabled sources (see [Configuring NuGet behavior](Configuring-NuGet-Behavior.md)); sources also appear in the **Tools > Options > NuGet Package Manager > Package Sources** list in Visual Studio). NuGet ignores the order of package sources, using the package from whichever source is first to respond to requests. +If a package is not already installed, NuGet first attempts to retrieve it from the [cache](../consume-packages/managing-the-global-packages-and-cache-folders.md). If the package is not in the cache, NuGet then attempts to download the package from all enabled sources (see [Configuring NuGet behavior](Configuring-NuGet-Behavior.md); sources also appear in the **Tools > Options > NuGet Package Manager > Package Sources** list in Visual Studio). During restore, NuGet ignores the order of package sources, using the package from whichever source is first to respond to requests. > [!Note] -> NuGet does not indicate a failure to restore a package until all the sources have been checked. At that time, NuGet reports the failure for only the last source in the list. The error implies that the package wasn't present on *any* of the other sources, even though errors are not shown for each of those sources individually. +> NuGet does not indicate a failure to restore a package until all the sources have been checked. At that time, NuGet reports a failure for only the last source in the list. The error implies that the package wasn't present on *any* of the other sources, even though errors are not shown for each of those sources individually. Package restore is triggered in the following ways: @@ -38,11 +37,11 @@ Package restore is triggered in the following ways: To restore manually, right-click the solution in Solution Explorer and select **Restore NuGet Packages**. If one or more individual packages are still not installed properly (meaning that Solution Explorer shows an error icon), then use the Package Manager UI to uninstall and reinstall the affected packages. See [Reinstalling and updating packages](../consume-packages/reinstalling-and-updating-packages.md) - 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," turn on automatic restore by following the instructions under [Enabling and disabling package restore](#enabling-and-disabling-package-restore). + 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," turn on automatic restore by following the instructions under [Enabling and disabling package restore](#enabling-and-disabling-package-restore). Also see [Package restore troubleshooting](Package-restore-troubleshooting.md). -- **NuGet CLI**: use the [nuget restore](../tools/cli-ref-restore.md) command, which restores packages listed in the project file (see [PackageReference](../consume-packages/package-references-in-project-files.md)) or in a [packages.config](../reference/packages-config.md) file. You can also specify a solution file. +- **NuGet CLI**: use the [nuget restore](../tools/cli-ref-restore.md) command, which restores packages listed in the project file or in `packages.config`. You can also specify a solution file. -- **MSBuild**: use the [msbuild /t:restore](../reference/msbuild-targets.md#restore-target) command, which restores packages packages listed in the project file (see [PackageReference](../consume-packages/package-references-in-project-files.md)). Available only in NuGet 4.x+ and MSBuild 15.1+, which are included with Visual Studio 2017. `nuget restore` and `dotnet restore` both use this command for applicable projects. +- **MSBuild**: use the [msbuild /t:restore](../reference/msbuild-targets.md#restore-target) command, which restores packages packages listed in the project file (PackageReference only). Available only in NuGet 4.x+ and MSBuild 15.1+, which are included with Visual Studio 2017. `nuget restore` and `dotnet restore` both use this command for applicable projects. - **Visual Studio Team Services**: When creating a build definition on Team Services, include the [NuGet restore](/vsts/build-release/tasks/package/nuget#restore-nuget-packages) or [.NET Core Restore](/vsts/build-release/tasks/build/dotnet-core#restore-nuget-packages) task in the definition before any build task. This task is included by default in a number of build templates. @@ -85,7 +84,10 @@ Package restore is primarily enabled through **Tools > Options > NuGet Package M For reference, see the [NuGet config file - packageRestore section](../reference/nuget-config-file.md#packagerestore-section). -In some cases, a developer or company might want to enable or disable package restore for all users on a computer. This is done by adding the same settings above to the global NuGet configuration file located in `%ProgramData%\NuGet\Config[\{IDE}[\{Version}[\{SKU}]]]`. Individual users can then selectively enable restore as needed on a project level. See [Configuring NuGet behavior](../consume-packages/configuring-nuget-behavior.md#how-settings-are-applied) for exact details on how NuGet prioritizes multiple config files. +In some cases, a developer or company might want to enable or disable package restore for all users on a computer. To do this, add the same settings above to the global NuGet configuration file located in `%ProgramData%\NuGet\Config` (Windows, potentially under a specific `\{IDE}\{Version}\{SKU}\` folder for Visual Studio) or `~/.local/share` (Mac/Linux). Individual users can then selectively enable restore as needed on a project level. See [Configuring NuGet behavior](../consume-packages/configuring-nuget-behavior.md#how-settings-are-applied) for exact details on how NuGet prioritizes multiple config files. + +> [!Important] +> If you edit the `packageRestore` settings directly in `nuget.config`, restart Visual Studio so that the options dialog box shows the current values. ## Constraining package versions with restore @@ -97,7 +99,7 @@ When restoring packages through any method, NuGet honors any constraints specifi ``` -- PackageReference: Specify a version range directly with the dependency's version number. For example: +- Project file (PackageReference): Specify a version range directly with the dependency's version number. For example: ```xml diff --git a/docs/consume-packages/Package-restore-troubleshooting.md b/docs/consume-packages/Package-restore-troubleshooting.md index 5dc33301f..66fab998d 100644 --- a/docs/consume-packages/Package-restore-troubleshooting.md +++ b/docs/consume-packages/Package-restore-troubleshooting.md @@ -3,7 +3,7 @@ title: Troubleshooting NuGet Package Restore in Visual Studio | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 03/13/2018 +ms.date: 03/16/2018 ms.topic: article ms.prod: nuget ms.technology: null @@ -44,7 +44,10 @@ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. The missing file is {name}. ``` -This error occurs you attempt to build a project that contains references to one or more NuGet packages, but those packages are not presently cached in the project. (Packages are cached in a `packages` folder at the solution root if the project uses `packages.config`, or in the `obj/project.assets.json` file if the project uses the PackageReference format.) +This error occurs you attempt to build a project that contains references to one or more NuGet packages, but those packages are not presently installed on the computer or in the project. + +- When using the PackageReference management format, the error means that the package is not installed in the *global-packages* folder as described on as described on [Managing the global packages and cache folders](managing-the-global-packages-and-cache-folders.md). +- When using `packages.config`, the error means that the package is not installed in the `packages` folder at the solution root. This situation commonly occurs when you obtain the project's source code from source control or another download. Packages are typically omitted from source control or downloads because they can be restored from package feeds like nuget.org (see [Packages and source control](Packages-and-Source-Control.md)). Including them would otherwise bloat the repository or create unnecessarily large .zip files. @@ -55,7 +58,7 @@ Use one of the following methods to restore the packages: - On the command line, run `nuget restore` (except for projects created with `dotnet`, in which case use `dotnet restore`). - On the command line with projects using the PackageReference format, run `msbuild /t:restore`. -After a successful restore, you should see either a `packages` folder (when using `packages.config`) or the `obj/project.assets.json` file (when using PackageReference). The project should now build successfully. If not, [file an issue on GitHub](https://github.com/NuGet/docs.microsoft.com-nuget/issues) so we can follow up with you. +After a successful restore, the package should be present in the *global-packages* folder. For projects using PackageReference, a restore should recreate the `obj/project.assets.json` file; for projects using `packages.config`, the package should appear in the project's `packages` folder. The project should now build successfully. If not, [file an issue on GitHub](https://github.com/NuGet/docs.microsoft.com-nuget/issues) so we can follow up with you. @@ -67,7 +70,9 @@ Complete error message: Assets file '\project.assets.json' not found. Run a NuGet package restore to generate this file. ``` -This error occurs for the same reasons as explained in the [previous section](#missing), and has the same remedies. For example, running `msbuild` on a .NET Core project that's been obtained from source control won't automatically restore packages. In this case, run `msbuild /t:restore` followed by `msbuild`, or use `dotnet build` (which restores packages automatically). +The `project.assets.json` file maintains a project's dependency graph when using the PackageReference management format, which is used to make sure that all necessary packages are installed on the computer. Because this file is generated dynamically through package restore, it's typically not added to source control. As a result, this error occurs when building a project with a tool such as `msbuild` that does not automatically restore packages. + +In this case, run `msbuild /t:restore` followed by `msbuild`, or use `dotnet build` (which restores packages automatically). You can also use any of the package restore methods in the [previous section](#missing). @@ -99,11 +104,12 @@ You can also edit these settings directly in the applicable `nuget.config` file ``` -Note that if you edit the `packageRestore` settings directly in `nuget.config`, restart Visual Studio so that the options dialog box shows the current values. +> [!Important] +> If you edit the `packageRestore` settings directly in `nuget.config`, restart Visual Studio so that the options dialog box shows the current values. ## Other potential conditions -- You may encounter build errors due to missing files, with a message saying to use NuGet restore to download them. However, running a restore might say, "All packages are already installed and there is nothing to restore." In this case, delete the `packages` folder (when using `packages.config`) or the `obj/project.assets.json` file (when using PackageReference) and run restore again. +- You may encounter build errors due to missing files, with a message saying to use NuGet restore to download them. However, running a restore might say, "All packages are already installed and there is nothing to restore." In this case, delete the `packages` folder (when using `packages.config`) or the `obj/project.assets.json` file (when using PackageReference) and run restore again. If the error still persists, use `nuget locals all -clear` or `dotnet locals all --clear` from the command line to clear the *global-packages* and cache folders as described on [Managing the global packages and cache folders](managing-the-global-packages-and-cache-folders.md). - When obtaining a project from source control, your project folders may be set to read-only. Change the folder permissions and try restoring packages again. diff --git a/docs/consume-packages/Packages-and-Source-Control.md b/docs/consume-packages/Packages-and-Source-Control.md index 18a1a890d..fd4bc704e 100644 --- a/docs/consume-packages/Packages-and-Source-Control.md +++ b/docs/consume-packages/Packages-and-Source-Control.md @@ -3,7 +3,7 @@ title: NuGet Packages and Source Control | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 07/17/2017 +ms.date: 03/16/2018 ms.topic: article ms.prod: nuget ms.technology: null @@ -16,7 +16,7 @@ ms.reviewer: # Omitting NuGet packages in source control systems -Developers typically omit NuGet packages from their source control repositories and rely instead on [package restore](../consume-packages/package-restore.md) to reinstall a project's dependencies before a build. +Developers typically omit NuGet packages from their source control repositories and rely instead on [package restore](package-restore.md) to reinstall a project's dependencies before a build. The reasons for relying on package restore include the following: @@ -25,11 +25,11 @@ The reasons for relying on package restore include the following: 1. It becomes harder to clean your solution of any unused package folders, as you need to ensure you don't delete any package folders still in use. 1. By omitting packages, you maintain clean boundaries of ownership between your code and the packages from others that you depend upon. Many NuGet packages are maintained in their own source control repositories already. -Although package restore is the default behavior with NuGet, some manual work is necessary to omit packages—namely, the `packages` folder in your project—from source control, as described in the following sections. +Although package restore is the default behavior with NuGet, some manual work is necessary to omit packages—namely, the `packages` folder in your project—from source control, as described in this article. ## Omitting packages with Git -Use the [.gitignore file](https://git-scm.com/docs/gitignore) to avoid including the `packages` folder in source control. For reference, see the [sample `.gitignore` for Visual Studio projects](https://github.com/github/gitignore/blob/master/VisualStudio.gitignore). +Use the [.gitignore file](https://git-scm.com/docs/gitignore) to ignore NuGet packages (`.nupkg`) the `packages` folder, and `project.assets.json`, among other things. For reference, see the [sample `.gitignore` for Visual Studio projects](https://github.com/github/gitignore/blob/master/VisualStudio.gitignore): The important parts of the `.gitignore` file are: @@ -37,20 +37,24 @@ The important parts of the `.gitignore` file are: # Ignore NuGet Packages *.nupkg -# Ignore the packages folder -**/packages/* +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* -# Include packages/build/, which is used as an MSBuild target -!**/packages/build/ +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ -# Uncomment if necessary; generally it's regenerated when needed -#!**/packages/repositories.config +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config + +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets # Ignore other intermediate files that NuGet might create. project.lock.json is used in conjunction -# with project.json; project.assets.json is used in conjunction with the PackageReference format. +# with project.json (NuGet v3); project.assets.json is used in conjunction with the PackageReference +# format (NuGet v4 and .NET Core). project.lock.json project.assets.json -*.nuget.props ``` ## Omitting packages with Team Foundation Version Control @@ -88,7 +92,7 @@ To disable source control integration with TFVC for selected files: # with additional folder names if it's not in the same folder as .tfignore. packages - # Include package target files which may be required for MSBuild, again prefixing the folder name as needed. + # Exclude package target files which may be required for MSBuild, again prefixing the folder name as needed. !packages/*.targets # Omit temporary files diff --git a/docs/consume-packages/Reinstalling-and-Updating-Packages.md b/docs/consume-packages/Reinstalling-and-Updating-Packages.md index bd48f6645..b9f87aa1a 100644 --- a/docs/consume-packages/Reinstalling-and-Updating-Packages.md +++ b/docs/consume-packages/Reinstalling-and-Updating-Packages.md @@ -7,7 +7,6 @@ ms.date: 12/07/2017 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: 2785879b-97f0-4a85-b3cc-bf4eaa5c39bf description: Details on when it's necessary to reinstall and update packages, as with broken package references in Visual Studio. keywords: NuGet package installation, NuGet package reinstallation, NuGet package restore, updating package, restoring packages, fixing broken references ms.reviewer: @@ -44,7 +43,7 @@ In this article: By default, reinstalling or updating a package *always* installs the latest version available from the package source. -In projects using the `packages.config` reference format, however, you can specifically constrain the version range. For example, if you know that your application works only with version 1.x of a package but not 2.0 and above, perhaps due to a major change in the package API, then you'd want to constrain upgrades to 1.x versions. This prevents accidental updates that would break the application. +In projects using the `packages.config` management format, however, you can specifically constrain the version range. For example, if you know that your application works only with version 1.x of a package but not 2.0 and above, perhaps due to a major change in the package API, then you'd want to constrain upgrades to 1.x versions. This prevents accidental updates that would break the application. To set a constraint, open `packages.config` in a text editor, locate the dependency in question, and add the `allowedVersions` attribute with a version range. For example, to constrain updates to version 1.x, set `allowedVersions` to `[1,2)`: diff --git a/docs/consume-packages/Team-Foundation-Build.md b/docs/consume-packages/Team-Foundation-Build.md index fb43b25bb..e1ee67a39 100644 --- a/docs/consume-packages/Team-Foundation-Build.md +++ b/docs/consume-packages/Team-Foundation-Build.md @@ -106,6 +106,9 @@ The `.gitignore` file looks as follows: bin obj packages + *.nupkg + project.lock.json + project.assets.json The `.gitignore` file is [quite powerful](https://www.kernel.org/pub/software/scm/git/docs/gitignore.html). For example, if you want to generally not check-in the contents of the `packages` folder but want to go with previous guidance of checking in the `.targets` files you could have the following rule instead: @@ -121,6 +124,9 @@ TF version control supports a very similar mechanism via the [.tfignore](/vsts/t bin obj packages + *.nupkg + project.lock.json + project.assets.json ## build.proj 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 new file mode 100644 index 000000000..875ade220 --- /dev/null +++ b/docs/consume-packages/managing-the-global-packages-and-cache-folders.md @@ -0,0 +1,110 @@ +--- +title: How to manage the global packages, cache, and temp folders in NuGet | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 03/19/2018 +ms.topic: article +ms.prod: nuget +ms.technology: null +description: How to manage the global package installation folder, the package cache, and the temp folders that exist on a computer, which are used when installing, restoring, and updating packages. +keywords: NuGet global packages folder, NuGet package cache, package caching, package installation folder, NuGet caches, managing caches, local NuGet cache, global NuGet cache, NuGet locals command, clearing a cache +ms.reviewer: +- karann-msft +- unniravindranathan +--- + +# Managing the global packages, the 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 | Location (per user) | Description | +| --- | --- | --- | +| global-packages | `%userprofile%\.nuget\packages` (Windows)
    `~/..nuget/packages` (Mac/Linux) | 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 format always use packages directly from this folder. When using the `packages.config`, packages are installed to the *global-packages* folder, then copied into the project's `packages` folder. | +| http-cache | `%localappdata%\NuGet\v3-cache` (Windows)
    `~/.local/share/NuGet/v3-cache` (Mac/Linux) | 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 is not used by the `nuget.exe` tool. | +| temp | `%TEMP%\NuGetScratch` (Windows)
    `/tmp/NuGetScratch` (Mac/Linux) | A folder where NuGet stores temporary files during its various operations. | + +> [!Note] +> NuGet 3.5 and earlier uses *packages-cache* instead of the *http-cache*, which is located in `%localappdata%\NuGet\Cache`. + +By using the cache and *global-packages* folders, NuGet generally avoids downloading packages that already exist on the computer, including the performance of install, update, and restore operations. When using PackageReference, the *global-packages* folder also avoids keeping downloaded packages inside project folders, where thy might be inadvertently added to source control, and reduces NuGet's overall impact on computer storage. + +By default, NuGet checks caches before attempting to retrieve packages from online sources, unless you specify the `-NoCache` option with `nuget.exe` commands, or the `--no-cache` option with `dotnet.exe` commands. + +For more information, see [What happens when a package is installed](ways-to-install-a-package.md#what-happens-when-a-package-is-installed.md). + +## Viewing folder locations + +You can view folder locations using the [nuget locals command](../tools/cli-ref-locals.md): + +```cli +# Display locals for all folders: global-packages, cache, and temp +nuget locals all -list +``` + +Typical output (Windows; "user1" is the current username): + +```output +http-cache: C:\Users\user1\AppData\Local\NuGet\v3-cache +global-packages: C:\Users\user1\.nuget\packages\ +temp: C:\Users\user1\AppData\Local\Temp\NuGetScratch +``` + +To display the location of a single folder, use `http-cache`, `global-packages`, or `temp` instead of `all`. (Also `package-cache` with NuGet 3.5 and earlier.) + +You can also use the [dotnet nuget locals command](/dotnet/core/tools/dotnet-nuget-locals), which has the same functionality as `nuget locals`: + +```cli +dotnet nuget locals all --list +``` + +Typical output (Mac/Linux; "user1" is the current username): + +```output +info : http-cache: /home/user1/.local/share/NuGet/v3-cache +info : global-packages: /home/user1/.nuget/packages/ +info : temp: /tmp/NuGetScratch +``` + +## Clearing local folders + +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 (`--clear` or `-c` in dotnet), specifying the folder to clear, or `all` to clear all folders: + +```cli +# Clear the 3.x+ cache (use either command) +nuget locals http-cache -clear +dotnet nuget locals http-cache --clear + +# Clear the 2.x cache (NuGet CLI 3.5 and earlier only) +nuget locals packages-cache -clear + +# Clear the global packages folder (use either command) +nuget locals global-packages -clear +dotnet nuget locals global-packages --clear + +# Clear the temporary cache (use either command) +nuget locals temp -clear +dotnet nuget locals temp --clear + +# Clear all caches (use either command) +nuget locals all -clear +dotnet nuget locals all --clear +``` + +Any packages used by projects that are currently open in Visual Studio are not cleared from the *global-packages* folder. + +In Visual Studio, 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. + +![NuGet option command for clearing caches](media/options-clear-caches.png) + +## Errors + +The following errors can occur when using `nuget locals` or `dotnet nuget locals`: + +- "Clearing local resources failed: Unable to delete one or more files" +- "The directory is not empty" + +These errors may indicate the following conditions: + +- You don't have permission to delete files in the cache. Change the folder permissions, if possible, and try again. Otherwise, contact your system administrator. +- One or more files in the cache are in use by another process. Close those processes and try again. diff --git a/docs/consume-packages/media/Finding-01-Popularity.png b/docs/consume-packages/media/Finding-01-Popularity.png index f1a4da978f2b0615d78e0f5b8bd6d0ebe348a317..06fbfc690bb9e96498b405133908a75acc453eb4 100644 GIT binary patch literal 37578 zcmdSBbyS;C6E{d(3WY)`Zbb?NCr~JEEydj_?rsh4w8e`R4em~H_u^2jxD(u65<&=k z>HB^wXaCxBcE3Gm|Hyfs+$VQ3b4TvX++Px*sw{(xO@WPuhK4IAE2)l#_H-2u?TN>W zr>GH8t2$!T1>O3i(nmD3n%I~3rq5CDvA)Rax}u@I>i+k7(i~@hf*K@ullttY;cVsR zY3gE$_QllJ$qnda=|=k=$OU{SI5Sskfrb_@BPaP$)63|j<7I}SRMHuw0+z;1b|bE{ z8$&<3!sh9wX(hdL$Q9vXU55Z1o|isyZRe^(o#|8*Y- z$&FRGLm&Xp(T2YEK0`yJvx`*NXV3$vo8~k*`c2<98V!GY`zhM{sW8j;A-aMRf;>YG z^%43_qC8W4-6wh5uMdo{Ug4pk4XJ7vOf61j6h_3==M`#{t@jDzT%R>R?qx4SV!ag~ zW1=&!RD_OyBL^<~qE^rRv$HOiqlGtD+nXG}r#5nX<>95&=-FxZz4tvV7Qcmp8t)d6 zukP22Ck~eA`qK>c=ZtuI?PCxly~=m+GLE(auJ2J$gLkmc^W@xjF}=!Zkkpg$wP*hu zCzoNqVC&EC4>FaM9z9~VpTZtK{^O|cueSdfKjdBL_fQLi+KMgAGqPoo)1NFlZWZ2M zSH1SFl_@Sm&AUZNeWAt(jA__C4L|s5{d;fvfU-lN9&6%sm*dS!Y-e0vXdv8US>4I= zs#Q3dv&-xh1nD?5Rl7L$`SPTk`nKO&;q3F^4~0Gdi{CY4=C3jzO@QwY?w+{sbY!Oz zL>ax?BK&n9LnFDm==*yEWentYKNK#{y?Hy{VhdcnB1ifun5|7>#)z(8O*8s)@#6a9 zjf=aDF2vS91QfquSMgL9%ds8JeOZ>B)G1ta0=f3wTb*Zut7jFd+KetdV`>oB)CqFUt(@ojeAmXA^$=>#H(B2+|4f99-&>UWLz?kz$`It)HXJ4kugz zDt$-YhWJ6A9dIVliSN=|l=*!6JZwbVsM;8|DhC=!se0h6J0raa%MNU}?Mfams|QT& z|JogwH-_0dI|`XBWk%fY;6;k_79HexcYz%QS0+1LlQ#Z$>OP#po5<``Q17RSk(jKE zP{@RE$w5W2d$F@#3I*YEITml$k&UjejPG zdD@!yntwb;@g}!}<`*wCv=5=CF$&xCL?m&<^giET)RhpF4~BoB2Yi2FFLU^kZZuE+ z7d8FU=)@OvZ_rC^o6p)klTVJ0^u-t67ZujIpj{wZFtz;a3f@l*T^b*u=r)ye z=Qn-fvHo|&1+T}a8B;02>DTVuOHAF_HT}0e=q*|YV(UDooFhfKhs5jqkc%*4{CWQyGz2_Kc8)^Ic z!RBT9Mr@-+E0=-T^XC51_nJ#LY${adYcI<#t%iU9&YWIbx-RWM&HwF!>xiG4XSQy^ zH_=y=X+BR8a8+^_%hiTOu>gA9$rd&_{+9hh!wzhDmGWuAFcbMzg@f%Yh(`W$cZ_{P z^wb!NkljzXlB}~IxlBf~Fb|91+=oE|5TaW)h)3|&u2GGFSgQqI-lsjLxhO-k<5Qes zr}>4?59jJaz*19PXlkrlv~VBI-vW3lET;VOL<|j$+3NFVd}LKxSjH{>dl^93hiB382jiy{wv|O>9i@hTVWbbPSsb0rvUa>^)8$NG* z?7rB-Q`RY&{ERgrigcR_Kasf482FELLFBMY(T>fN@V?{3o+cZ{M)9Vthq+IKF*}q} zca;*S3ev1$QgEYpF3+syUG@1_eS6!t)_9y&-fB4gIyrg9cRwEVN{F_r23w^`puD*sTsgG*Zce1b}d?Hq{pRRG%oh(KfccqiP;#* zi5OH#TLi932G`zM=(`_hlkJmLgw}s2@SJ`8Yk3!)fVb}XrY9ynfbC<#8S%(9|8(b$ zKOyIVkBdwNo}h)ou_|)tz;-iC{>S%t?$PF>y)Uc-2}Pb4LvxKNz9_Qx zo}hiDAWLp8=m`UA`fGC{6J?=DEc34Qi?Oum*-(RK=ag)!?;Eh;`jjiv*iC{uPc6iA zI*hHp2SnG_^ntU$QQKL&%@L)6!DeS_a<K@81EVOiaqRAjn z;%Xw>Dr8rx7J2&f+)jw=4M^@n${UJqI|>NE;0p3N%(hQlNh=xqOunlCiLHxuiCI1S z?b&gZKbYzAXN4`9^Kl2S4)R3YLCia9F$1rVP=lJR@2#YJ%EV2w6Kq#lVvr+?6UM;Rgi1%d7zDLPb63A7|9B7ChfLiOEInqer3Fc8AdcYcZ7y z>6J7TqL(V>DaB+o{prg2amm1b{-rG%#yvEvu#DuTs@2c$cK6P1HR9OjEpM(qaVd(i zT#BU#-xPj(KF`wni{Dgk)>v}0gv?gbX_uPgPdBuz!?h1Wr*oq8qZaGZBCP(7SQSJ@ zG?0+$2whCS$0NoV-E)DPZW>p3-=>aYT5V#~#V|$S3F}*PjkxR)ih=_X#>|?Oh`GS5 zN!}r6$deq9>;S;uzx@&)j6)es3{G)SLYSr^)1ryHo$aCo>({^a-M_|(RKbt1U5{>c zSmytx&|N9sT;2Cx_fA%Ny9nMoUpvIo+NO?AyD*K7V^#Od3}j%Zw)-3>q&5|ltY=3v;2cVrtE zcJ6PSYVK>_!{_3bzC^dw#APybThiges|YdIEC_xfLI>UMZ+NMgJb`uCPA4U){F8uK zzAV3cGhT1}Ae0-yOUd?I#Y`IAc4H{(m6glv)uN%CQdVvY3X%E*RlCl8tidJtMqTdwVd8oM%n=@ zbz5|{8Q`#*-E)oSDklwsc$U+>zTUe={qEY)$SQ~+j|*5ce6clV{akm!^!>4h?k^9BsNT z3paw|iq!Ine3nI0sV18AcyUR}mCK>Rf-F zd*Aq%5EeBKIV{cNYgB%H`plh@5tRWM21WD$x<6v&~PljvQDh;5dtgW?l9kkI6BPlYcMs>kmro^<_qco4p+i z&cSrj_Ie@|!LGnZ$YbZ`efwR6LbzV?4l;B1s#~ujaPXw~1d^C;iUtMxoliEwK~#yagCZ1m%eS~o z;G)^*wvGS`22%+6pL`D7+cxsJ(qN{VkpsTk0I9;FYL)=kAN^u{wns`0dc4u3;MXdi zD!z}OAJ8^SuL9k#I?}VYt0J4tPHP_9Aq%^pFvWuzFg)pa-s0D5-!T7U;g~FI#p)39 zFdBim`(2fQ7omepN*nK+Lx(Q1FmLTSf!Uy2VH-luhccWiM#&vdkmBd~=?SDme zR(KjdI6io&*>B`Sob+u2*V)Cm+gQa)Onc&cstoIt{=_0;eGy?| zJX<=jy}+*VI@f7j9i7^y8x^zkp%J#N*Ri#eZ1*E8|!RF<7pxt_s-)uF{{ zmdX?C%DL*N=&9!9FQDMP&&!;8tVFYZCts~7Jp{1BB4TqB<1*8=8{xL$!r&N%a8@t? zF2R#43_Tek6jyukdo9#2Oz%lvUkWPD!&q%&q`{3Y&uDVIdChvzN&Z|M71AZw$-mx< zaiavwrdH+Xb2F>_5-EbAL{ zsh9^LX!IRj`1BFJ2XzKM{1iY#Yd@p~KFN>4rvaabl?|N2CI-u5HPa`UyWAaI$7sqh z(7tXw|3~0_a9(;%zc#INk4A41x^*sR^uT~^VutbbtPw?>E$(OV`rzB+S7&) zPpHgmPSY1_bg- z3voIxw>Jrl`9H<2s2kaNL;EuyT`qeR16 z!|AQYGX(SAbA4F>4Mx5Y)$6a9gN! zWM%XhwB0hW4sRMiS-Onp_?gZ&QDt}b@aOndB{u?E9%SB@-M&>xIL>=nr=#4pql=Gs z>{D_yUX{HJVi=w{xt;3wM0zCnH`yO?0#Q_T`Kh^Y7&Quy5Z8}^?BW)!pxr45i#0JT z@L;*s^fYAPc#$o}sQwg-jjH`ow+QKH$@r#*6IP|a_S9sJw z5fOSMBD50?*P=d;unGOyu{6$xCOLO2L@Q0E`!pUH@p+>r64>tBAZNKYnA_Ot(Y@;F z;NIpAfeKe1+@<;M1|`O}tdA?4Ejsz5xIT5WbuwAMfGF9uK~@(QZ??55agHDSedp(^ zycZzn2g`ToQlxGimoc~x{uz!shJMTHdwVez%T4Kh>&S_V(t}8Ml(PAlbEjrI(jN~M z_7Y;WfW>u|e)>Y=tft88=^30?Z}myW4|Lz!q9hJ7eX$h}HV%Nxh~G`3d{_^Q-zAEY z|1{0M()<2mkQ8VjYsXL zYq7PCX7fheFRi|vUrrJj3)f9{p6oSlee)ITGRgGfzHPQZUN6EP)(VJx*8^W6EaZ4P z#Ijz=%Uq*CY1=UIQHtCD=I>TvtDi25 zt+IL3y~;PUkD}oNalZjFd@KIjH^-ymY)fa1+vZ@8#GSBIO!hpm2urQyhKOr+j`NnF z_{Qo|2>o(p8cioR!%_;5+V|cg&4qbSC-@1mp^U*_*Q7}0%R3DBZ(=A4Tq>0rtGw>y zGEAe?cQjXc3BcT;t<*hF^)!hDKUE3Nsduf!IVt(x-*JU}mIwGjk`jRct~h>gAtrtm zkGLP*{Q!*4j*UBIvB2NJucujfiZzkJ64=58B8~j1ZS;96Lc7Ce-$G@}{yuH%zFt+v zMAB68qik5KP6jlbA1mgwlcY1AEglFxUYssgdF;ju__7(nMD4i(%0{g0JuC+zoC$1Z zda@tk+0NiW%0oFmAUWB>n(N@kmCdIqm_jS~s0m0`{Yl+yGoa~pD`HsjG{x|dw|Qu~cH^?{ceoC9KfkS%nB^AI3+=Ik_1zH;;T z$MR!zSfTQRupUs?DhQ7ASN^Npg4k&Q_;Hz)d!+n$4lQ5)3#243Lj zr$2noTjx6}%gYsh%_sSxjM_w;&+qKulmzLo;GDIV3Av@(6^uXaZ!+faMVgZ~ROohG zdLYn#0M=5P*fYSsV)w!=*L} zE>#EmqP5Ni$-&JHxw)*E%gYS?AUSVI)Ha(F+&u``%MN^?rKVxo$frT>vsIl_J+vnL zP_O~}yKFok!MpICXuO%WhIG131DB>o?dLzOdK$L;NybmNGWI(1BngoLGE2k90ZmQi z`q(P$T|2^TSxvJMowJ_)1AbXjI8etf?~5@=hg{=btv~XD1Mj3>45!^KJ66QQ(|Glw z!G4?Nwa>{?t0{D4xzc+@^DQ@M_)u%`{xZ&RoLqv*L-ekVus1BbNp#z{<0{S@cuCg& z$fCUls}9`fB}{DJflL@Jbtqr6nr2Zgnyj%N+knpYQ+^i|_V36Jii6C4HurTdOT2s8 zq6ZI%@Rsg7L~sojosiBF^#P#%Z!{)JP_d~b z(;==pZvs39;}i;Nicb-%^)HX}S?`fF;FY)8Wq?1>n>B>WZZ?F+Sp6~qvPybNFVbbF zJ28I}#CeYdlsiLdHUU2KiZh_$-^upC6OsF4VwuKOl{Jyt`{cmZ^-dXPvF0D;G-C7q z!Y}J~DCUpoC%TZVFgaVZpAV#8&IZQLgfHT)h~rcXBnaXorHS2?v$(u#MWAKWbh*D7 z`shL?z|DI`Ou)k$^TI6xaUUQM>+agD;gs52WpK3{`x$jVfX@_i_b+5qq6+MNy`)NI zKu!rJ;?(THS%ZB^a)u2RamgCf1V z4^XaMQMM&4U_KCaa0=}Bi;N@fc|RN8BNl{PQCul6TFWjBD6^dATLSt!}1j@LR6Z4hK-Fm+-3dCyCA>*f-O zuk^h;d3=2^JE(dhgf^hITZDDdV#Uy~v<29iSwFV1@T(cZ zr5IC~^XnXYZsC-Y-<$u5T|)Ya0Q}nc;SvnM83vtqV@6J$Z*0ZKka(*|1^6`vep>d5 zd*9Y%{kbK7npOSJ&>I3vH)SV}I5{HlXp^{mc|Q4n3cwEyI9djmr=DH_Y~UI{yY5!N6z4K!912& z^iJLv+SGZ&F-a-5f+VmQmoHHvwW#lKFdzF^Ut0{QRgjz5ukwXa7NTs4^YWfR7hy zwk95qCm0Ao?GHCqk3FQF)$T{yY82A9YqBzth$!G*IIiOsyn-Z#{hsG-fdwQ$t{-sf z{Kirhc@a$fB`&a&!KdoQe+d%bpi+V=V{xldvIv<`N`6c#x4(ocBJYkNx@PM`K|f0* zT_nBA`us;^Z+-9y;La2vTNs$V#9GF|9Upy5QuWW=KQ(^9N0Bk|yXaR5xJ=+<_Fi6I zYeacXrm&|x`G20jLp^8zr>-vKi8JixMvnU5a1H?~``Tw>|96j8W?HgI@bBiU-pBt3 zFqW_QJ)yW8#kt+G&+ArFOpHEIp{Pl}5a5Zy;2Md>+I>EQ-v=-WR$Wb9;=MN2UO8?8|xa-nCBTrg!|(TM=c`Bj*{%OMg0WVbGoqZ z{%^eNczceLfT#R{n(^WVMXUCink@A}Lp*;xpT3{d+cH>z7)Z|0=M^;IHTX3WiN}%Z z(>|4VjMaDXaR6KTz5DPdy4r9%&7XDF2X+;ed|)~NG& zrrF&bhPZe)r(4Ny5%9VjR%nbTy$<>8x12!7ubI`3Vl_MIbx!Xp6+9@oCu+2XkrRK& z+tqG3TOYf;pp+5lU1l9Iis_2f!}q1u<30&)eFa$1|7g&&_l>Zqp)oWeQhZXihq`J5 zZH&6iP=P_F)d*ldAz?jMs@xw}aN*yt!G zv{>Ua8I@i6gDzpc_WdtC?eE8b_drtGqBHg3AKWz=I`!Ur_LJC9^F;pm$z6D2qQ;EP z(*1&LxSWMJ?zGua4=la#)Q||>+w_mb_rtCD>hJka8TB9-7u|wtw%1x>Ed*}kg<4dh zgksL}+ z$&DKKlio~|Z#XN{LLn#KfE7g_w(B@Sq&A=~gb&GR3-sME*Z5Am@1LaOzc2sPQ!?`K zaYNtcjd{MGHW2X?@oAjVKc9|Y5O&cxxzOm7nk(s4he{hNK?5QT)F{-7NFWPQ5s@$C>uee>qLix1Agw@(f&p3m+}m0cLU{+!gaGv zwkVu6BykYH%A9L{8rLQi=)Zy2#UCH@5Fc(u3M zY&aDxrehDQt!y^3Pqdw9IsI`|b!3v4kFjb{O{QqriJqjXQ~aW@_7P`}bpRl_&DOSmXKqoX zDGiB|gv*}??Hs3w4}{uG)9}|Ox;c_(GzBC|sL#46shSXFdcDbg7ULq9M_P(nuTce} z#1|_oxP}!xK;wLRLSHmX%!1Z$X!H?rlwbz~Xn9h)_vDDvBy1>JhjZEH2SG_Mw|9N3 zLQx;(d&XbkoEh}Ki3~vx?a8ZF`Adl&gXtAk1#VLXP{QKuzw&NwKAIn_EtMUVIM8BM>1cE20ssK?8a=Z3C++>xGDYGB$AOyc_ zrv@(<#FrNFaRu9{Ja~lyx=^xGnN-bmyMciu`4nc&#??0=c(kc;Zv!eSZ77 zF6p^zm@%h-nS?nrYI2x_&Y+G)f`Pj#(Z8H`P%zG5p|8vw&(v>Fj@SDlM&SivTK%|? zy^*)7MBmHISLoPtaOF^O27!qt4nG6a7-Nkwl6OVFb56WxOpP?tB@225t-Ce3cW{o- z`_Pz%d5TFh5?hyk&GJ~*1QpP&Y9oQQtSaZVi>0S4MLv7VUK`Hie5rK=OtSm08P5ju z5__m3EB}yO@9Q(XNgM5aP)lI<>SWk6nj^mA=b=#p2$MComfNxeBujViS3tStw7Bt- zN|7`k&vbv*8pJiE%E8B2`0RGm9CWP}Ym_Kb^EN%G(Y7o(ukTb8LWzdkNfFb|p6Sg!wf{2lKc22=IjShfX`!?yP z!gtbUN#X5r64-lEA#WE~H2BBczJ#I zGkIa-{AEb`4f;c8h`5EM)A^yUuY^vyP2y}(8lUqK;upYtCRxw4nj|r5l+2^ht+F0> z2hSQZ^L`2x@?1Nq?xRL9dt>ojwMMX$0DuWAdS@9H?K=WM8I^x|fRK4N)g;0G(bk8; z?JEIYm`mm75H9AZD%2i|gOU9~zp#uV%R$C<48KUqT8i}+qeD1A>{%tdF;Nk7!Hm;s zbgOoWA>?D1(J!71xlu3Lvk>UwiD#}gxlUw>hQa3GbbUJ6JNnwx(S3xIz$_OnMKWt@ zm1VhFDI3mi1%n&?48EaOB(_q#+ zLg5gnNXVqpEA=+7o$rtU{IylX;~M`>T8204bEa7FfHPd3hK2^D!!XCiJVl!OMvoTP zAMzH^a6%JDqss5++>pw8%wyfCm=}S}C10%GLtsARff;H|XTBBK{-*q`SUTMgn|@rh zKwCvtD*rcW4!}-($FuNt)hEenU%JqvUa@AAcdy}DwY=+Y|0?v~VgoJu>3=iR_t@bI z|1#9S%&24$b^Vb4^*`0f|BVmyFh?ldxpu(>$!fLzk^`?lg}Y*u(_36sQS-v%&Rc&m zeVQ7+H{nC?X4=a6h#vd`hmLMDqcL}A#+#Sr#=JVfsyrm4#wG$a=@}YXX%q@SRaaPA zs4*2(^k0TKnwZ>$M`+W!U>{;NEoP>XD zu3AyILsYlMPyMO+hZqv!jqZ^EfW4E`!53fFib2Ldi#Tx=P>*|2pU_mVNG1-EVsyK^2FcMKvIv38L)qiq!{0OU#{gI( zXv5Wg;yU4kn*@_Mt%-lV2iyi;V8yZItN%{%Qy1+CmwM|gQ!72PYa3J?=PAWrm%@(! z-hYZ@DRJHvPK$N;k);?QSh$fh+;o)@?k}vDHUs>FuvZ9Env%EM5a{2wXlHPoM7mQ` zv;^@)vCZ@s{Wg29ydBxjK!9aLD{+#|%CDJ1YDq7%K|A9i@&rwqBA*?&XaYRFmjbtD zBwf*G6D}_?l1<*iC%yk>0Bv1CaS`JFF5iJ697W-B*)skDKQH zd}lDLc6}^ScV|gKN6QwBmHFAfpx*)7zW)TJ&SwQ~_WOf$ZvGz4NnkGp`bZCJLs6%MTKwnQXsnJq4#!a$15dz#$-(bS?yLPCZ2us(wwVlw3na2s&Jcu}0Jxz~nOE6$iA^E#C6FsnWCp#bI$iQ^XuwgoqCaVQFQDS$lU(p zlB<3vI9Ihaq?tiDZ@?~$9EUnS#snZ<)GedTAD#Vr4Kyjx@PqH^LqI&+D9-o8A9Ri{ z(YP+j;2MdQ&Uapc9|^ivN~=wdBm$fUJ@V6LS860xs5`FYv7>yw`1Jd1|t)}8O>YQrG;i5Pe;o zO+5>kax1g*TM(-#_(`f6*b!!VDr3i&M58w6GLlU37d_+7fy&d^+q%_`nWi1@cH5t#J`DL8X89X8aG*%JQIs)IpN5nyfX5I z*wM0IwM5C%co8ZHb1S%J2^e$-4=3c$je55fO4)@FKzlYV6!Lxj77xn&!9@>0^+g(b;s~> z=}_{jJW;o3h7}#VP8y@^7j{6o$`I|Kq6AwS|Fky3z9@CJrVUySwy2jawc9~dJ?;Qo zl#&R@;V=bh>{%nuSC8(61`CJ2m`P*-OsL)Kn3xv0s9ys00X0{#&CWXB;BIZAI(Q!l z{(lXPFqPemfB5#W=h^u1j0$%f{Dvhhv{MQmi9 zrXb<|oez6sgY7j3k%-Hqef~Gsy?7M?Ubr2vgmyk9Hn^zMHmHm~tnhG(EUPxD{4gk; z>JM1K`qwFjMhW!+Cfcu$BVKm3P3XYvg$9DDWI7&r2iq_FiyyX{fcEgMtL0y>0LtyZ zLV`6VvESspsXL?WY=!U#E?tf)OnlDFHSf<$FY*-UObx%8-utENoX}w(qsuTHewt;z z)Fj&)%mE9uwwq7FQ>c_@j`!XT$%I`yW!2ReyN>k|Ez&lk^v{*HINiKG9_`ryOT?3x zbh#G8%!aDeRX$EA1r~7d)%3=HnWmvhMJ~U5fZ1-zElM+;3GM_!YA%42WE9%$dLBcu zZD56{f>L7x?&_mlcYP08AJpl4t7}NX%iQpSop?*9doWDPiC zz+Bp`T})^Ht&70!js8i*{SN1QFs zaf1AxmILW>`4cH@%wSn|8KEn))Z}jDyOKVX^Ufgf{|v<#Hp0Ll2dko48q3`o8mJRk zBS(f`@@$0rBX4T<_yaQ@vV}F@QJ^^a`x}QF*kZnA2vwH5QZu(^7v0-g<%Ho~XS=Wd z5*IfOeDq`Midoy^HTI+LIQGZ)_TRuQkp80?!usHKAZQW1ZE+s6_SXB;U>|@8Q?%v$ zdu7OxXJle22T&K%>EZ*sDqm{r;%?gtuhV(+?jL-DH$ut>43U-!%j&%6QWx;;hnE+8 zzM7^y8w;j~N_`xTG2|3S^eD?W8PqD)vvKJ`pdZ&!*c|#e)R6(oQrX2dB=85+%vs84 zho?Eku7$j{SvFTl;^~?lN`#AytGiKG~Biu76E^6_Wi{Kk6by= z0#eN)v8KfcR`E+O-LJ(oSP<@=hheB8ULtS3U~C?wKJ;P$;s{50E=4z=GBE~ZLLH#9_ewsSXS+9}0GD1gxZ^5_}2*ikX!+hx%7 zs=2!Z@!Y$`Amlj)3MXKOd-?ierary3(mgFaqVbf7{L@Knq(URR0YfsvaC$Ald}$ul zQzCKV7P69d$X8aLbI<7O^JL12n@hxuN` z-O{%=OfQ;k#*Ggve_9`+b@;8ZqOC-4BJt#K26LtQi(Y6*lZOTy4frQM&6C$F$n;|* z2Col>v*hQRp%CGjR_v#4s|(ozz;|^6e~?7tsk*19@ZUtKPG=$wn=7n?18721X7g1$hMaeq>D1PwQo2lg8C1kNlh zb|F>%1U&v>nJjjWp>Wlmrz>xDsJPEh0RYo-##Q2tKp{t zwr0?IEs~BT#89YSU8BZ{$Z_#GP=8@>^{-Gq(%ajrQmRNws<#_nMIBWi4F0AoMiB5F-feE8a~CPC$Pwxw9(>{>19 z;Yk@F&+rlZm#rNrS0d^*&(EONERK1hsFW7U6hIT^M`CTDzbblP6g#|DFPr6AbGAiB zb-;;9Q@I&*!nRWs-X5#5`EOZr3qzZ?LozuptIz{MkU)VQ8e2*O#O)b;WZKOOe-J>_ zc035#zrzS%g_hJ8cDPAE7zByd=hxkd!w&`km!p=hRE0%n9o(kQ+(Mor=;wQ2mpR;Z* za~XR*Z)rM?*QPmWxjFpW`*q^F%i^~9=i6>aAy++Y%_FD9pw4hJL_<@4mI+1msiK zNr+>Uh!1-o5c!DR`kNP4L|KS3|Z z3tAPO*H`*SEQ%WS{{-8f2vl@}J4Q;q=Q__G(FY6(_+)PZ1v?>r$h%MJzK|~~*^5KH zokoGjk5>rsbNMZ;aF?&&_XxQD}t`=Xt9Td4Z*R=|En}cuX zdd?o^Beul+c1<;^QYV|*&QeLUk>b-24eTT=K2#kOVZ}%`Ehc)4A2{*4+`ut3RYk2m zrHBmBRRyTj=dt(AE4FZj-{nIloAK7hKF}NuvA%CZd&V#t1?$@Fe|3@jwtc7SCmV@> z$*Q_Lch4C*RR82D_r^QP!oZIoXsx0k<~hM|1^l zeJ#r0g1KE*}dvPu9(Bdv36bM$_-Q6X)1()Jp zDDK_q^Iz|~XRVn%Yi6$x>w6}XoVQ))ef^H(L@H$U9;V*~yw_fv$9*u=pDpL{Hmhw} zE-WsmD;Tf{R_Sqs!8h%>_g%TsN}qEt_m+>Vj2|^7m8~X>a^Ju=?Z1y@-Opwf(VP{t zT2?GzChHv9j!$|9iKA*H=$3!fT&4(s@7y2P-## z415{rP|WK^Po`g&l2{Q1?tV6VX}WyH^ql>3=6ie6il zn+}<7OEj@^UB><&%KHzA%+%Oxoe?zJ;?v%BW!L4dmg8+=W}wdfM&bS3q|R~Pv2@r= z>JGE1PQEFu7TY{rB%W!jt2FlmHcU0~&el>mRKS^mGRV3VSHs`7R`RGOD4hf=@^>@V ztv173$&A}5b*=6Qc5PwBYiHnr5$mf7jOe?c8O2nXWdPL){E1O;WAjrFQQ1 z4pA1_Resk4@{%{3!FPX^-N!{;15%K$JnenADo2$k$G%ctvBDVW znC3?&NRl#t*ehmIL_OGe27l0+Si+PN)l`tPoN|wK2%4=7a~j1vQcJ=u?~fF3NC0*5 zkCqy4$0QHT&u-V#!5eGJ1xN35j}|+4EAJ$@`IV`)s`15f)?PU_q|fZ9cQsCZytkJ%h0Gd)u5$6#z|$>x}}NVICn zLFUiBa@qEM5MWPk!ZhCS3&%!FB&t>RrfQAW10@xUtGe})Y+yE@OqHv}542W75$EDZFi!h^ZW4cy}B z>W5WXN5;}A1;sSd?H;^;v{O7j%%|X`x@f~t!h-(Qf4f$xq3bbJ(f0ov}AW$oeJ*o^$=KNpiMlr5IP^G}Zp{rik2S z{o0k+aqS8Y;4HFn{D!}YB54v4I&S)N|BWGhctv>VqvQ?eNieYV-Vws(sgIn8_PP?Y~A4MBy2-OAdAr7#50Ws!@x zWQf;XsJ;C3XXwGboJ}NAu2cQ+jUp0{xJ@w#gy3fgD;MLhK!xhb>VB4n7LNweeN)}k z)6zYu{zQ5XRMH9FLL-8Dmpql@_!6gJPIlHm>!Wrxoh`f=;f;J(UHGx7o67PpYjM^J5Z?b$accX*DynQr>c=B!LZsaujbg$0k=`Jb6B<{z zCu0kWYq`KI=5i2Y5A_@Q2$*h;eDnP$QDp4ymluw}j@@2h1XE$T3l@4y_kTg6fJ_WvNg+ftn^*;Yl5QBKUS1CcFI6~AO z01u1?N6DuJwh8R+19p_PBV(pShNp9V4&`w4UYusORVYO<(rT)#{5OKj+h~wuX^5|= zI^JfaffY872Q9#ytV7PBEMIJUHco;F09w^Ir+;X^4-(qw5}8lW@d;dbi5^RmZDEhz zq+~tLo#fpJzjSr&r8<*(EG|qxo@=L1$@@p8;>w;z@Mjl&m1e|1e!ANBLs9g)W1w&O zaKy^$75F3r!^Yo~z_Sbu+DQS}Ao!oVJ_MjsZL7ATD*X;AaC#5%U&YXt)Zbuo~jJCc<^mSJNwl~mski7a5tAp(fYm% z7%vgpFT`$oa;&>?`{9@sC{7*uu0xi0e=Oe|#hBM|9+tSJQal&b#UCH@on`+|FkV3# zr^9llfID$Rrg6@?a&NNbpLy}ME$pD6v7)RE5BPdI(B)=-(EpST(seaB79EnEdfj5Y zv8H4zLPaL0U_B#nT<*OqhMW_Y4HCLSQw||>JhK<_E}VU*mi$Hht=yKa{5OZM2=l4K zI_58gfZ&qdL~$j(p_n))THK^zJ<7y-n&`RD@-hEZfkA0_GG9<>G6Z0mT65xV`^2}r zn+6kkZu+#7L5oYcQjfaElR@wc38P8Pnq%9_6GBnM>eET{(PR+kEb2ZzExs5;79%-X zAw_*Lh%=tH>6Wz5xcE*T|3XEzk>+O5OIDA{1v`(Rqt1cxE(`TO3i(*Gl~~omKrPC7 zo=cuaP?w_F@sNqZba=oUrxr6tAfhsA$k^-NkT=cjBiDrzXSf58OP^2cEDZ^Szb-5cwbV{-o3D+wnBf^XF?Y^@ z033u|v*z7Mb+h6-kCkET_0|=4C=;^1;_qjmDR+)jag4&wxgSh*`O@%}#5;2ve;pxi z)Lo?k-K6mw@i|)L2L{dfGMF;12^CEZ7Z|L?b1&YMe@F zh`!C*T;3f5cq|%2+QY$U>7nDyaOQs4)nBmjIbh%^t!`!Ea9gQuPx;eC-#kDKGJ{gY zl$Z5;Ij(w^YaU6f7NGEa9IedY8I0#n|27ES$(RfZZzU#E9p`!X=RN5)Y)#SpQB|9Q zOxZLcYNhD!teX9cOpuwPM-)O&HkJuXoAbX_x6Nez_&m70RJZ&=amjl&Ffg*~9pl3b zNFZ-(p##C!fs4LrJQRNGANhEP97f>Jl9y;sTEQM3E*(@yuDP2#d zZd8c9S!5_5*j=_kbWZyA*{P`Jov|gh;ye6=H|0FC>c88)7a9n%-3N)>A3GOHi#L7h zKUOcu1iR=NhMWS6uu`~a@#5HWoi6t%-(TM1AGy(g?WS)wel1OvJeh9d^y+dE9*gcS zL;63?wETA}CXbSJbAu%zzh}R8>y8eayOX)1j|DszSFBZK#J6zMyq4q9E^-s@>vbDp zn_1!GY!l{5^KRFS2-#PRtKYwDz;DeEN>cu~_zTN-C+19UM6MwW8X;}I7e9yxOKMFo z?|~k1A#R!$tKI%W|E`Le;?~H;-QX7T&zU{Z#yklCEq{K7;gC5qDV>fG)*O|WSCE!! zpdm=*U^;x@K%!ikc$vu(+EIqWQE&B*QHA1B;?%;w#DnE-SNlz$5O%P04ftuXm>m7L zm`3pZ1BPqm@AXDx%`E+}P+?-+okWMr3}Qm!iW1Y0)$ZE#rQG(c8k%6tK{V+?)&dc-hMHQKVkRV&}N)vA2F#~ zst6W(!JO8LEf@Us(S3x(y`49e+>GaCdJK3Zdm1z&S2L!XNKh*l;2?qg{4T#~9p1@G zJr+@rB!dcVt(iPh(ssFGu?AYSB7(T2F0~l65J6qMS=`Vbg<0!E?ujj^HUTdY8bNRJ zwna`%#RmnCOqzyYJ_8dt#h}JvLv0%Kj@nx+MC`X`TBbZkCckuH%y>8&0yr6 zlakC^EsZrI12zh*T{jv#qB&>ootUU*b3c8$fdZ~O5hqJlkvGlFAqz(7Av@dqD=xmn zD%DP(-TW;Gkso=Rb&QBFYlM+&M~?X1j@OzT^nP$#9xGXMcI8MFy-mS5#j%Ga@aH&h z-#~)IU36iQ(wFGFVcl+hsZl|X3TF}MdpBsNS6c>-ZsJap0!%i>o~g?hYk5)9YDX6H z{KSAXrCMTc>gta7yx4BP8fq6KR9!eV46J?VJKXK)1;^50;LJCA8J8-l_$N3GM(O|pEkQ~IM1~28aR-7 z4jHNKC~LYkR-^|_%d5uLaVyaB3W?oA=A*RTD=AOIh=VemY4zg~KSgc9qp=#Cz{j-r zkDU>vrA9vsY!uL+%|+@D*rSzI-Z$<~7@AL^8`w*7kKp2|Jtv@44)l@wfa&vn#w(d@ zXOILo_-2=OrIY*lJ)~kog5)wxH%9XT(^Su|0gipKp{}aBlcq<7(lfEDBMq;T1x8_B zLvj;>0um%FFk0F9GJVo`!)O7xF^cY>jJkus>M$p ziI#B?c0MTO{!h@U#UL1a26ok6U8NRkC#dh-m!CfbZI%9< z6IvKV^3Tlhcz%V&useM}0ASav=JT#7(D1GZt)#7wjR5@QzhVK*c*|=JKau#)}_n-yCIFQpw=aV1yMUwgcAM>$9|H6eHBk zg$wOzP6-PP)QeGIUPXv~@Ysg{b>i68xVo;R(H1w6?NFIv%@CPqblcCnNs1XF;}I(* z53@Yrg?%7$CB@*(V+t?HNRW2TtP(N*2Tr{2D!t)CiO8A1`*z>AU$q}N7as8>rIlHu zW0muYpxklp8#zTJ;>&8SQl6R5{}~4Llvx(FjYvl~V!%8CUa*sdm}7FALxv#KI23gk zrAg_UlHuiI+=}_8NdYVe11INrX1)qKALSUlaPV~^8Vy$rU~5zAsd>ydl%zu5XF)VI zrOyrOjsL0G+e({QsnGV9zMNxM=rnQz_6>S#Um>rN>cX%uuq4CvraYL{&w$Ge_hq4;caM z>=6?bhZR~crCB`KCW}4a>ZD%YPZiBONuEp*l6Lfa*=jL_*HX?cxm4g6K5r7=%Vl_d z!3cFcY&EMdZs#GL-?lwavw|2XSd^(D_;aEiAWz?x%#j#bEWu&mvv_ft>%Z%~jmGO> zVaB#1rIpJ5t#!+>yE>@Bb{qlK$lM(IIS7lcKv+Tt$C;%HlKG36Sdp1R%iUprpY0>G zueUf#eysgVzulz}@P$@$#VgYMQodgqR5O6bclaBxUbt-5CaVcB+|K;dmbMVGXjgteFF_vN%WMse3HBnJCw?9T6*1B&t>BAcHM+l zMJhd|s9Ntt8uz|i@r+so$5X+hDd(mj1#jzRF~gLRx$oI-5}Gnuw9^|Ws@sTk+&eAa zP(HHn$QWTvHC9I2-!H#`>m(zdC2VMyn^F}dEle4&X?t+mHrSOJVqSm>&ET9WFlJ{?H!s* zrh92ubPFF`25A)prH=XPT_v?_9O7DGA-8zrvuWzTlV@<`P zxeoQlh)uuMYv>ivwc8nGVZyG_>X8Gch86vHGVi`zJ zybw6zQ}++g=Hm}eM}^Z36DDhtgKle^L=Np8@Uwx1z|ZuLQ5kLnrptZ^?rsQlE=D?5 z9j3iikt(A|?W;{h6F)mu8~iw8rO6_zqqK$yzLRP9b<@K)7KXoWxkp_ed)V*roEZGz zz?O9%F?z&w%cS3LP(`}#${IyJv7mW<(`tgjVx~c1=!>$2U9D{r{P5sFz3J1PQ>817 z_Cht9$C@YoyU^fl_w5bO6*~0cTV9#S|2D846V@C;5%>MyHSE@;)nhIA{Yq2BhumtD zJMZKt+4wY?ck;cTrukAD8j4&$TY4%#stMlH8Y9q!=;>9e@siI7c#e~JS{~c2CwR6j zD`|8=MsWRg8wN{Fr%*E)QK*U~#re$X)h&U=A$r7J`< z3QC|ladwb0qNh{JrgK}y3CXDhrgrKi$;rGBJD?UMm1e2vCX{#If8b&0HGen8rVHf- zxM)@L8_(`C^X#J%VPR1r$>Brai3M!Pqt!l+9&qi`h~3qf49gnXwb1;Db>kzUz%EQp zum{HvjgB-_ymFYlU|BX7u@6%VK7S3A1WF9=&z=5(uY8V|Jle6?=#ykcL`9|Y@+**) z`UC3(KvrV*syjvv^sLCl88^t$lTpK#%!TO%CLLyvfloDd*E@Jy-lEp?*-dkbq z5L-p!wr~{efRI@Z9Y!*P;@IckswOBm(a7>>1C{f@UWVa`vS~~^lEdlX9&>amllFc& z2R(K`4l^S+z}-rtAF#b5a3~O>l`@&GdxIPd*FNWio}o5v?0g11U1s1mdv=`sz_$Kw z0?`}o_`Bl|Ft+H&X8mPtMNra(yvpW2`WHQLu#M3N{xDS z$;vS0wYFo87Z2;;>1bE8Z#5O*hsn^TY_1}ags%3-=0uu`)#C5&$#S(_!(?&m>}V%W z;;`*wbDx8AcioIk#12xFa2m~2w@7e5f*@wvyhau6PM46d=rH)VfPiA@y()&o5U06w z9VU7hz*W}V|2^v^#`F{+p<$&F`#QNtn#Y^cv$bKiUm@}DvnMM^dEr1lxu|=HD3WWP z>gbcX48ua=S2u>;VDj2Uvm3uHMA}(ifB8jpl|~XD(DfC=XDCd~FXrPR4ozZRG7%H4 z5r0YHVtrEo8^{!^{*u_}4UZ#){v?8Otem0B@yC{`lI9Gx@yukLLXJ~(CXht{rA2b9 z6Ea^VcrkFbhTrzhweynTZnV`|UByZoXkezDN+yxMfE*kp?;@IZN+4|@m4KZ8Mvy?* z$KL{GvcMa<<(xEUCfm~J(5^HEz)nu=CM@V`7q^dc*EKm-aS^ZN9ZW-S7g0w{cKl{H z{c%$OXFrClQ;ji;eZiCaRVROF=mO9TTyww&@c*6BHXEvlvEp zLDw0R8a>%>h|aJ9Guvc8@Ww=qwueGWL(&okGS8=bSgOC44KUF$C*4(rF9x4jN z44Kd3`uXk~>6Pev@_p+cV43zP3F^`oc8{Jnm3ADJ?3)%LxaMs~OnPL3{1+*u{e}v~ zKH`RJeV>ZuE$c43ITm8KD1o@N1}<-?cl2jbMw&5!k}#;o=OEdjAX`DCjxnNP60>%& zt))x^TfjJQHO}_D*1Da0N6R|Cv~;jwJS3jnhN;ViV|3up^;~>nhtt0#nfT;huZ2f=Rj+u2#-XK)7%<8! zrKQ0(*CKgnRK~NW2?_RZ@_>p7!9_X$aRfIX~2nBje>97{${ zub{wdJ9oEKmzi8}T`pJf6w!{yy>_d+o8u2;ljHE+QZ~sL zk|g6t1Mpet94B$U8J*0FTC7($c4?L@=IsLJ(cT#L`dRJ2r5vH()&GpJ58+^y1X%-a z%Nm8G_l_kU+OkJ(Id@V(6&6w`Y~zpi?2jdy(7TF3LA)%<X=R|}bZ!N^-sJs4WYAD8yGn%cGUni1n`^+!7=ts2|`3*|8VIIx&W#;n{ zPLE`F6Pcpd%}|X*j+(2(<&5X8p5dsumX8?TVEnC2!XFF!Gx=4LO7WZ8Tgv;J$`Tpa zleB3<(fhm%avr3tm{)Z;TK+4Pm1XNB0yG zx9&KXKYjIiXd-*T^5*MIOZKaJLM^5k^)!e}eAA%A#86U|yvpT5d73hc3gqL83q3Kl z%F&WlBp^s3wQ!Mw6$9WXRid6RgHDNcyK%$5nHNMVUyIQk$H6WI|OmW zk5BM(H55!yD8LEN4jmvuyu!q@_N31_)XwcDo{x0*WU?DNz>!~_^!2YbSL4;f#S8EQ zoMR2~#dGXpQ9E{j9Qvug3+7zyRA+DY`E}b7oaq+_z2fJ}g`j>;`2%z{9tL_UV3w$> zwU$L1?_FB#jmcZC`r0>v#fypU^ThC#+ljZHnjxVDH{ItPT; zAE?p=1+Q1zIg0D2dy$|^ch4z4WE>_k?H6@tX4%BmB9GF<`VcXCThO71*cN+Z)n?Tt z8?r`n=U8cia-6N`>3#?GKjFrxjaaF3o=Ft%paeZ?gPBkESl8{EMh1KlS{H5S)>%b?mt+--9tXgM~xb+z)1; z*_N-DR1sgDtf3u^L5q+i9)y0|!U@K9y~VEvr|}Yae(};L4JupqNhI#Cx{Z|Fobm;F z$-wV~NdC8r;}5JQap&H@Pw0jsUqTerbDH&z%nJj+@8yED8{Pyv3Talck}>dd%ms7z z@BQ=2Bmw^Uu!Cbu7mDGdtBs@tn(G46;GAg@NqrG|?<4N_!DdsjRoNoDVTWs=nsO)O z`)~Yq^YV@fXbSMT9i>`rKOPrN!mZO(9l=hz zeEaXnQWD4>XR0MZkuySxN@v8j(^d|u^nl3weS}u! zWdt4}pOunUC~qc)dWslO!>&(-rNvd1CVOv^M_zB_+`n4kTFUTu{z?-)|Je9GYsOVw z6j34HJEjeN8-kB)6>H&9?m6yOyI{I#k_9ix58I1C4}Qlr_h&TzBjB zGU*!c^P} z^GK+h0mxN^!KEwxgJ=<1%cg29T@2=+B%xx#*$*FV5D{E1aD(`i#PM(}lpis0O+6-K zEi`Kh@Jce;Slhm_e^0HYlf$C98PpM(yRp03oU^j-b*}jqFQr+wx5?~R$`>k&Y#det zB!`-*aBj*}c18W{G)$A0<`9;U$|cXZUVUwiqdZbLt3odAXCO`j+MxGV2N^0rgqH?~82AbkI4N5mK5a-DZ!5n1_ zQESqKUm{+Fc+S9Io&(o$yCzahF*m}&>#z&`FJ{ro@DODtx@!rA1LP*WwuV+ zELjhG-FasHMizfx>ZGkbhnj|%3e4pcf+Dp8o6*uy+BO5@u*xLwAU@&L4qIt!dnY>x z)kAxz=?yW23HBJV`!|01vVCILfvyvEKXk z2!Btfoy9$l^i~xC`p9XG2lDw3vXSoCtm*(cK7gPvgRa%RQ`GTbEXYZnO7>pDHYcvf zX$Gw0tsvVL(t;=E@wi53pkW~H{7SUGr{D@ZO-0iHRBP;DAP(ZUBi|_;h+yEDS11Xf z81jmh+j9M=561+*7N8WnU#uS8-YUon{Z3`$NbY!4&FvX*oiy zX$Q%!H^41Xlk#nBz-Y&(S3YWalhOA+RJ&qIXt;4{qFxa(Ei_>fBzT1 zK^)x~_@|m0{V&~R;-(^Da1ra7%`?VkL-;qAn-@HdopLo))$_4gkgs)3jL6!0zNso> zo#n6J)C7YF&lwseHTquIZUD>balxU>ODD?KWZaM<-DjT#RD!?U2v>5o9^&m+fpQaj zer{n$o$mnt9j`_NaE6YAc7Q5F*L4XhblDESed|2M5UTG`=Fksxp3Y>VF&vEO%2csK z%=R|jug|V}N=YK7An9{b!)Zm{h10|NAul<3mP{f%U_I(YJuaba9FXd7ly9}ozrXHX<{Laz z+i`p|$@csPfC4w#WgV`y{nDR*2H4)tY}9!Aubk=3U&bym#hceL1y(-+;ln9bALcHY z9QkMX?i-lM{hFPAoJ}KI87-QE+bq`~z_x+6h5Ba#&OCPH-oHjD>P0VP@H^d}gC^uD z*mvJuoHxUl1C&}-0&pj+{l$Mw!KTYcd>2pp`yLM7P<%}OCU?Zg`KnBz+c>-xnzH}Z zY)qFOkaPceR)pKX##%e~uLpERueyD1ecm0mol(2uk$dB*qZBAE~25zNMHo3{Qij-#uEdN|TEDQRT6%4n={**dq$Qd;LG5y#LCehi18=&^&LRAvA*3d2M z^LA5A2XaZ;$K4c!P7Z#$rydx(qQ&yRGGQ|Z_XB?KJD)rwhfSQ35mdk^2MU+=D_x4F zY`3umkja}&);yqSXhJV-KvsFHox4juPbi&FtMB_3uhTr9%wX!&>)U{#weAnp)8FTB ze;%p}T#d(f>bJ!|j%y_?drf4tX_utaF{gP>`hyp1J!S@2F%R`c{d>;vo7U!8l|((J zNmq{l8jkgSc^dEf3hErY)@}Dzzq44aJRH{fMg?JS!I>H!Oq&-kD*8hMYE{%wHt7yr zl9XZ3Ghlwv8G33xTjYnFGEB|s>NssqFGU753#vp?9C@$IRrA_s+V&}kKI3BcmAa(qV9=7)EZ8^WRo562*(H;TZ_|J_?Km`MkTVt&VWnKa^u zx9k|s1b+O~{7uh*>m$u<-S)_d!K3RF7_RLX4KXFT4>JpEt|KEUaPX^ab??xS)8;p= z(!rus%>yL4PCH#=!r{h2D)dK)b&EMsC>btTWye(FU%M`faf}ZGX^I;>H9;~sxzP*KS6(h5FwuiN|-B()qQV9jNY z_n?Q&xF)IYMZ5S~iCaeP4VWvp^(cjRxqoziVVNT>%EJS2mhot8P&M_cE5w#YG2tgB z=+{^lc~)gR!U%z*Yhq4G3xmYJs#>f*uemy&i|Z|Rf&lf=>YmMp?$tVx3!|;*a7qg?!WW|wX+vH2iQ!A6ULC>(|b0loJ7NBp5f48v}Bm!eYrsaZ8@1^vFEs? zp!Gb`E0e0%&cMB~0sw3X@YFn*Z((V5b4!Qz5|dHTwtuC6?GO1@)OyBuGvn)cw>Ix^ zQ-KyZs7wg`d-43rk|;c0;k*HCEYx;B@2R&M5fd)@A161t;_mh)%A~B(egoTT;E)ct zC`$eD(AqCCoRshU3U`eHO=XH&$Z9_?j6&fKU-`C$ntIYGAqa$S#nZ*$X?lsuG@>Jo zV~T&t28om^wKB1fqS}|=ecox32X4LA#9%(XV)am!vj3(y%`ABw1^JTBq**UzTlhrE z5X0#~(uf|4Uot#dQf0k`O_d7Z7Uk9&N0bP#OL-Bn-k|{NnahN#cyP%Y&%a{3Lsazp ze4Qz8Fd9Zs>AqpCzJ?bmRwOMAI@3(Ul=Inve5t-POG6*2Zgak=gml^oN-+_=n!5YI z8mY8Y11C#EHi*&&Hf51i(0=u222*@U&NrPs8GB?a( z;_Ht#g7xAJ&ut9qoCUq8@#>ew-1BXgtuSr8OXtXqul|U2Wx}>8jF1G2sI}!_vR&xI zp<~_cN1P76{DelGo<=H%P?a#u^j15th-F;c0O*_jGOhj7bem-^^0fUTF~2fIh_Cc) zLK81)TK)vSZZ%;;aE=rm(%q^vLXwP_X%2A`U-dhD!`8s|CEkqCg(RN3t;cG4x#I!y zK9GEp2-@&Vd1GZElS6q0YLZ2*+i?^=YVm07Kkk6KAo4}di_dbj*Slq39zGP)I_t4p zm4lTMxRHd)c0iAzxXycs9VO)Vmu3_(+}(H1UCfi%f*X=Ua!)P+rsyFRj>_BEz--I2 z{&qR%$b5+bP;3yM>3wyH0(z9p^lS|5FO}HYS4d z4F|uK=bZ}AjK({qK(lcoXbYLrMqA*<`gMaHc|dQoVwIsjg|Xl1*|P|&qxo1c>%MxVfqn{X;>4xUCdp8xz-0h1rbUXKjjSy~|kQ8xXa_eqv4fw+1|fVaYQfRCwg{t(d-tKzOlp zMp(s+>rpD!L#CD)6m;txv-FirSRF8(8z*lsMV2z`S~WkMTOCL+1ZW?;`*c8{-Qa5* z3-1N9XE6PJbcgw*2<@};LXx*AHGf0agn#P`6)xr<1_ne8q?suco31lnP}7dDnfr=i zVd&ySJ`aP8p0*hEJ)HO>y>U_`9sYTBgMEaVqTq9OsO-4fYB8%Wz?JrU36bgks72r7qVVhl-#v9zV zoqvOLUe8XRXOCcIwVrv-#?ak7%Coje_@}neuu^)wn2On0!_mw&{TJa!m@RI3`&qwy zsZVYH%nFa`#SZkQW&!zVQ|r0hZtEU<>1Ix6cME%#%ve2<9X5YNPjZQ|ByDI z3fkZH%^{Ar_ayK*B5EUda+}#I@;a^r{2qPyB!<^g3P_`LuM`kWTZ&wM{g=+8X5~M) zvTC&7xPQv7OuaeY-taEPn|N9sNauZ?9t7N07&L8JH7VXNTq+6L-^7au9P0;)UL)d6 zR;ef+&t0awj z^L~7|g9&pD>Fui+lq2`9otD{`u1m)bADDk8ToFKNO3T{fu^wyuY%D7DVpudYs!a-X z28ssOES5SxTf3G9_q3~Hn_ef~zY5>r{7z>m7&XrL?qnWr^}7Y9$r$BtgW3Xo zjgNsT#t)fHYz{3mfmfCx9r1tLw6DVX6VAv8R83E2Fi0GtC3%`R#eQMcbCo)u-TH0~ z+kfOUQzxnhW}^Oi+t?!kfls<@LYFgJM5jypMt>|rL~s92`~E6y4maIcfIQvq)DYTeTddKo#7Gt{Q(&&4mR zMxom=%SWG={h~i3>(=*2f=U5bFLV>nTLosEx1cb1yZwq?fbi)V+sFU$dDea_{R|oa zSms^F2?5{j`NHHGTpxrh<$eMFN6%UfpHQIEm2dj@=fu3nO!?XY`j`8RA!a{}eP#I% z8aF%@VFc8qlerhxeJVde$~hv#!Vw99KdL0g;o*T+J$*P%A&rKo6!-rHOWq}Z?Z^ZH z1FfO_Rz_2_8G;DmPgCET-~Rn-p=nKbIE)D~h(vN}g~5~>!Jv-}(NX^|gegTg)UaUO zb@Q(>vqKV*3b&9sP581%SQ*&q@jnpE4>`1DfR^>6uN;DsEEyDxP_p>_Hq>>r6#s;7t5V#mO3&8O(c5NqB4&)**D4tL0`Pl}s z?ZefR1bxCoh~IU3T_Y3m6IO)p1Q?3wr&J4$ID$K2H~&JGw?1J0Z+s%MAupBl+uPWx z!kc#`oAtwzH>8ywQ+QBhxrGMj-ugwV^f6rxFn$WUI6|8yjsrS3d+|-QQk-FhRVJt1 zIy!dJm2lH3KSAb|L#OF_`OOfGRSAz}#pHkR%JOV3WYl`S6Bqu?5P{}Yi3Xj5cnMiJ z0Z16NT3RlY!tGWsf=WFFg9x73g&NeNQhCJmOGAWJvF>Np81S}1MXh_;{9U64Z%!6( z`VCXEvk0k-8i_s%IvRReL+dGZ$70CHiFfAaoO1*rDEnfXSF@V6=FLSC-XZUUG!{ZL zng%3tHNCfvh#((WYo=NuM|&fa#LAJCBo`vE2Fb!G8XpT=-}hY}HsTIZ*tzP9mOnNQ zLb^4!H0UCt3x=8K5XId5R$_+5nJ!XLXf`FE=w@JoUs*oTP|$!ZBy(2?5_jb2O7WcS z-dkWCS++~Jht9*H^e311=@uNXp*~`%D?4+$3(^5&>Uc2FGy?7E(86a}c@}pCBQS@R z2kvrim({!k8t)~vvwZZ1DH=}fv@4=T{?KFqjTsM|{SzUNR9D)%dUuSYi$qG8IXa$= z-G4(mf&sD1Q>X(5dY?8+E8;MJD6cf3UGFcNkZ)nE4RWUNk(@jvK03NE=?K8_RCGKdwkVyZXuPVLaAbXy2oC z4s@s?Av?(D;FHDye8*v@j8{A4v2+j|tib5LU6H8XRiHad{5_eeSY$opN-)766iPZ2zcR?kH!fTp-rec4vf@l@I?& zN5#))P%q8^>amA#rgQ!@bznjZNQ-L`|G1l!Bc8vnXU=3~eHEkC6O%@Mx17)LJ#W6h zUhcaZaSE=`t=>mg)0jG#f^_2$^5=kqjLZxyEi5udR|lezxEwzg$kS@2xM{W_MvD^1 zgQP`-0H%PE^fYsR5a?UyIFp{$lNrlK>C+)&;>W@gc8z)TjZRX1n%LGJ?|oCVkeC*B zeq?kde%(3OZzR<#EpM4MK6371Mmw+Kby;D(GGHB83j(q+mzG;l^l(nHyTe zkps}DqmX=Fmdf4lK|QIp>&xQX@R+`MHp|je7JJZH%K2>kB?H$cw~`n%w2sX<)9WO0 zuP2M^#DEA$Xp|NhzkxvSbFOCqW96rEQjSmv-KFLLCW7=;z+(!o)tE-Khc$f;Z)F|LV2b{gvh$94 zJIYfvCyeWVVi!d}VroDd6M~rrEyQ#+ajJmW2JRJh$CaL{n#KV8Yy?heSj-=648TLe z)sNQ&&XFgW3b&IJe3$m7gY}myd81fs@)9gbiKosJgq!B38kf?3PUA!a86Ro%{m=k| zqNp%eJZhZp2a*6uvc)`Ium5m#bff=rbjs;}IXc@Vo?X3^u1^292U+6BybKmXN^X8& z>{JNP9u%tfxf0y2a0uj>&IOF@PYPDD=NnMNx9rK%KJ+lw1a%0r#p0vIIi*NSI{LFG zdd3_%gq7P?9+9&LZDaR_&{ot$ozgx-;E!Y|c3x_Wc zc^RsZIjj{HbpLo}55WT&c;@iw{N{i)i~WaEj2?qiicej}zP4BbGP_PAEhhSJBX3x^ zf}oyhb+`_y{=%qx1|-6(ayihL?6rF;y67x6Xp5Cfr6el~{LW)?K&@_HC;+jZSU|Ig z>&+QSU_yPZ2|oTvU15j%Z;_>{#`|LsQVNuEF@PA1Du1E4UjVG9a|A$=X>m2XWU(~6 z9nFfqK=^Q{h6~!EUT0IH|h&s|l>>w@GD=6tvqvcla4F6Y6m)ullq!i3&+^0&ydlOt@CCRXL%0|I;-+euP zTwLT-o9kV0mDMxnQ0tm$##KvBS3plTi2vKc4DQW^08=Jw);u{M`hqOP=J~(z$x_GF?^2ky%b@ zU7~k_A3`g3&GCwj4a^{bF|QT-FS+I%rMiS#aN)bTpT4){NVRWX7XaNZ@;HQBqG z&nP4@qA@HW$ru#k1v8i#-{muFJ}32;RF-)tV#IW;A`!BvCz^bNDduRF;1OIylmIXD zlIYIJf1cLQJM%Y%`+v#d<>+4Y4c)#W@=R@I0A$*K8`sa6!#uf1*erVtYp0nTXY#gB zOb-9fImmZxuVCkZM_20{X-fwO5P!)vPi&c46_#mwpTv>y%i>Jz3Xe3M*-35dd|HA| z!&y60*XL)c4P$JNjm3@(Cas?9!7U~hU8-O)PQ`aI?1C(kooBWOiqZ2?RX<~Bn7u9} zPIGLjP#HEpuf-hY^KM<26I)&UKb@UvG#ls|$L$kKTKm?awFH@3L+wjtNRe2EPwy$@;%jAe|Y6>KyR_hPnO%uv7Bhsqy430Q@A|oiP8a zA@)Dc4?9D!@a^K0N-Yv)FGhmgYybBHa+ zGa7>|oN8b;6W_H=ksYbOwT1ECx=D+@aag=Pimd%rHHN+i7~keun{wAN(<%jkzzt=5 z*+j!z+E8h1|L%RU<&NcK%VoTi$%KLEG+jdnMzhO6b+l!BF$yg52y1B%1)nq7ZG1AuK9 zh0LG>{Ll)BG$^tkMQ|47goi(YF0|KVt06x?BnoXf6}X^0*{GaHV>dc;$|TUdKQU>S zQ}G4~3JPqXMsXkHD{7VEs;Ycb+zP33aCh1hs#s|JOs4LPLSlfUm0b`{oujL39Sa|< z>65#bWFAf;1A|VJX0<+zlNg!1clKa5k98vyV*>rH#b%A?I(_Y9NrGouKqjH#kDF)G zEo;f?HRF7bA@b58C)YWr=l$|`j;ot`=DTm5oGZ1bJk{w2{o*r516ma#Tf%DZv6eGm znJ}*4rJ9zpWXfFdfoWTW`XXYX`96@9MQChW(d%^j@sEr5Mlsi{hkJ)$0au)Mt6aS_ zcCT)PPw2VgZjTZ_w*!j3JiWb_)e}{byEe?5El}cUohzmY)QqUPznvn8suk(sMm+_u z-7p14Iba`QCD@>9I4Pyc%OjAl4p~6dYJok2VO; zIi+sdlzwacmPQnF!(|J3%w_8M8R+WDjbvJ+b|KWBGwy+cWs)ntqT;NHu1D{F$~{ss z8vVIn{_PS%G)Z<*k5Rp9 zyyXs>*Ca#lleFYh^Ud1o@~26$onI@9*6CMDk+J|!qgzs zeU~emqMG(+qAJSLk!0nIr8(oBh-l0Cuo@Lxl!F`LDvWR`Z8JPGI`?B`& z1PzFAPL=|oChOc_cZdgfQGfw-+AqNVJ=QgM4Mk|Ato60~Z>RG@WgR-?I#Gi|JdE}2 zpp%|oZH6Hn-w&?0UQ_HVx0b6$vd;EwQ^{Ml&eL=h=m&Fe>%fr*Z1UAN>CkGA*{?tF ze$Oo1;cDiWpT8)ZDvfpd581bU2T>cT0c}@H!cYl+hr;KX;n6-IR37Nrm}5ZEdd{bQ`Q4(;IGyy zKA;@A%xPB&-gqg(?OY2}f4(SQ6k5ei_@Ji?lyDRNVZj3yZzvQ26Tidy-P2o=S@Mf6 zIenl4i7c`a`yJ<$i=7COsd`H#tC<@KLy%yZ&&{+6X>A5Cv5qIBR9SrO#MST>hmZ~y zE|5FlT4uYI1$7gji@WmDT_DZQ-t>ZP!sE+}p>n@HqPnP-!}eU6V7-&=#Fxqg7rEO$}Uj=Em$+wD&&@rZmfO8 zHRd9vakt(KL~nLI>3tC~@(?}L%zEFZtVdjO!bEES!XNC~bWBysd=fKIaMoku#a5WD zf16R&3Z3wc{})xBhRU*|i>V6f$cjwqfLM#`m0D9in6jkiWlm8S8AsjM!fRZn!r>}6 z6sLnCNAbk&6fhW`{d}ylYg)Zs=$-^9A`K+z1T|6=^;zX}>8r=o+5ltG-7?Q&x+ZVCu=RVjexCQMNKy@=k{8SVKYqHq)$ literal 48129 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�szp#o+N#h>vl)AGI|^+3yvta&6l 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 literal 41923 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 diff --git a/docs/consume-packages/media/options-clear-caches.png b/docs/consume-packages/media/options-clear-caches.png new file mode 100644 index 0000000000000000000000000000000000000000..0a99c9b3817ce71f23c067a7a164c7e15feaa3ca GIT binary patch literal 21118 zcmbTeWmr{hv@X0XQb0Nd0Rf2x(hbtx-CYZjP7#oX1=8IOi;hKih)5{0Kw3aVy1UK< z-*@kQ&e`WX=lXtdO?YNKF`hB*agTcvrmQH1fkuJ`0)a4Oq{UT1poeQ9(1RM3hd|4h zk!wld@W5GBN)%KvLbeY4@z_d4K?DS?^6>L9J-3<6>H-2FW0w=Xsa8i`#b zv|ZHfEnVDAoGd^NCN}R}nBQ5ryx?Gd&CJR>F2_jc$w8+IinK`M+{YClTJ8GS=YEBO6;0J*mcX^b{e{_h#Hz)t3mtZX)B z)G^D;Ni{QvuSq6!j2nN{J*x?S=Sp2wVN^K7qB*R4xi%wArI_x#+{+uYf9_DMUwxu$ zyBiwu^|*~+G1L3R_qyMA07}SW*y^#r?0U_j0nWM`xjuI>0dUYp{{MCGqx*v8d)AY6 zd!FU{`>ep|qM*TkG5BLav}ea@+iuXK03M51WMp4B5C_}enrbzD_8AwkM%uh@89O|r zd4Sgr^@ULQoE@ynVKe$(6!|i2Uk)1GI1y>1snFg20$LIr*7=IqMc~EeGRtO_I5F1o z!1{IK@1u9@q30TRcloQ6tcnj%ZE1iR)PzpA9kMw-;i#kEU$V;Ldp=!jMe*TCg~u>4 zUp*EZ>62*|8&)8~vvfcU_ae zn)`M=cd%<+@~pZh8&cvL*r@w4_9)m@vW2OJWeg86BtKk_ldWlB+(eknA79~DYW>qQ z8w)u%?dh0SFd&zd<) zX3e_2@jq~hql=e`fa@{WRtJ-kW^C6X@fFT|xa!bs7`1Wz8+C~Hj`PxdZBPYjza%vD zspGrDtA2(A>k#v;1S*Rb zgwc2tJnxJHAs&LNAj;q>N@XwzREmUnNc!-froD-?9run)c;$y}Zl4uypHp|=Q^Nqh6*}YQ4VFosWpN4ZX+ z2RCrLUz2qMeK2SW&bqx?qoAO;-Pyg_8BXKwxY_Jr&J?~q6h3|M_mzGS#|*wu{Awd# zj(`_G7AN3EA)rcpNxlm_3>PxKS^~_qn>0mu0c8`On3|FrSi+BgxHi2nZq3%{GSwO{ zhH2?+T*-GYfFg8F&gddmSR7cTvQ#m3IqOPixAFbL9ShkpWKox=eY-IzQY)^3MBA|f z>@Wh64~|C2g@-{b-Xa`dXB+H$s>KBS8&vM*^7k`DZksykTOPMY+6pY5F?MRygAd)O z28#(DH?AFml-B-O4*eBYzIfqB;e;eK+hTQLKAsg-iq9XWlSo7H%zF`zd6hl2bi(#< zu8eOnv>GisvEMWJGMx;Aq48H#^A+sabWG`0NtHgwr3c`%O<+nKn4Av#g$ce9cAQE0 zhC&{Iv^fFKM0xDGIDu}lH#*hlq#{dl@O&QY{D^i)_~C)&^k~}eZAR;8g{K;M@%x)$ zZm`l3D%G})rz;~Vs0W`frNAGY^b|t?i8FjEJMuOZ;)yIeJ*-f3n;xvvenb zv6l|8ZuhW+05b)w_LB-&^v}Ekx>9CE>z`gMj`vEcWJ`_3_PB8kYUQcwtzt1kZ@LQ* z_;HZ?$Fi$eG3<;Tng%j-npp+XYY!YCfT?Tn*=*=NTLxxq*xrX-hTy^dqcN4i!k2$s zw|Zxq;NuWyjUHr_>L+Q>#uMVEkkMDI>v7)&=Mx=u77@BV!+8XwN&G=dUoVyGZ4ssC zh8gX!9@?Hw&eb8tq3R8TpyCoJ5_QWa3SZU=qc4#EHP%qb=uPUPGf6t^QO)=!4*Yn& zxMF|Oj-Sx+fHKPMvf;%$3KsM7pZ*q~zOoqdx-haPtWaHxF&-cNR=}mnh~HzNB1`rs z*;4JB&YJmQp#SC-&6&=`)cX*OI{74~hk#2lMv!IeR)n`fj13d#u8Qm3jLB3OaA}}_ zSEe|z9_R06%9D-!)-fQE z7T~V9dgow$gP){)9YWvf$iwsLF%5n_WPA+bNruA+{HS@NAiTMKEZL~3^q6VRAMqc8 z$e!NaG<~YOv-@r$A}}Mezs10Al7xu(w!ye+Jz#jwQGcp#O+0m?SCD_&D@0XOlkt(qJdSw^sjFHj2;H)HcXFXzryLn% zjPx0Zbx(ilInNA)3M?#cZxxCmZg6u}`Q?2VlgJStr_p34Z0R+VIVF{bL-}_K=H|B4 z4HMQaN=z}hvR?*10u7<=OB1;(Gdm7PtjKl+e2-~8S}i;q%QMRR*@R##o}X*eF+3Q0w{WU@>i8{L{nca|HF4%5w_Lb64(u=>zgo?5s4$IgBC_;P4r zv+P-lV?rpWO!FDcfs{-G_m@i`I70SGvTb?tfjz0rV{b< zZ0$<*WU;zB#&xFcYy`P0WYbC-zU9_p%qdN9zfXp0r`Ti~pN11Gy03QZ55!2qhj~1= zl-IqZ>FcCZ=*4oJ_BLhx>6oR*?d|*Qw5&CmR;CXuTqf{jZn_Bu`#IK8_qCJAQ}Iac zw>;3k8MTFvj1)gB{NUuG0hK0D;$e&l1KE!%S*~&MJz{02|q?FO!A-r$3c;N(Xgf{uN@1Rhg#W38>{OQe0OB zW?Jx+0yW`}yKqnq1I%;o0`c%$m_(Hu@^*Ipw^?RA;)HEtEXL*4Y-K#RI(^9qrZIM$ zvYov?Y-;$Y;cEPdj76JG!AH2L6~?v6nRZEWkA|$*9%qpxKu}ft!V-)*yCrJw(ST)F zTVn15bcGi1LzuCNz!2YHdwKGxk6Obz0o^n5W(JWM6W;wo(YizZicg;~74m!c4C!r) zOebxm`036j{=gC)zLR;qM8Ef_zg57vFQK{D9H-w4=PmPU1P9D!YR;VA$-kPd&x4VL zIOk)$ihjn+&#oyY>&L%S&d|4!-H;kaZrIm@XKv`}V$8{Mt3QIJWxa*)& z6tLjp12~~d@_|26oZ|@Ot}4D+TJ?I2nI+BYjl+(&>lPL{HfmCBk5e-luE=x~%gkfTcCE5sV!x_#;(ol5_ymUsDX&hg(~Puo7wCc0ZdBwh_T zNdNKuuOjeHhC5LA_L(|**&Sl;M7nFz$$)selTea?KwjCp#tCIA@Gq(Tch^PSZ5Ap) zp}E4im@=B({>;r;c+aWW*v$E|jD{>M&i>hQXO6yw~S z_IypH<+RbRd(badmrb&UpW{m7PO@-MEhop!AM2gC$cTrf;;A3*H?vl;ZmYTH?e(ef z`L8%^L~ict&gd<7qf;$!+h!x$Y5j$V0)k15uOMGQS`2Cgefj?=?<)hb@P{-GwRR;CMTXU-CTWo zb2$iC;bw64EgKAiX=eV+3g%dI%yhwUd_(RLSbygL)(_~{S zJ$8J=1I=X+&+7}gHJ%ECV)aC<1d%#;3|%zsi{|uOrzzBV(b*8^@NX?U?%e*+S`D&! z)dZ8bag~R!6sqKl5*3uxIny|;4vN#hM4hPia(kqbWJyMH>VwBo*%@X26r)D;@X}Al zRGP3!xh8k(TPoU>3EC3z$G8n)m2_xBV{4k#ic~leI8tg4jSVf8!Er%QNMee57q9wY z8G1SzY*jkHKV;U0E!I^BLA4>y5l+ZlZjK$S4m}F{L8ku=C9=y6&no@{olA6bnH`P5 zqncv@iAzTth5gsRx14gv>|bqYN7T0b7Ox(=*`lP8JW(94pq$P_wBm=Flt`+4Hxo4A zC*jMGslc4|*c33v@Ote*_1pV-s)w3P3Rh`yhAeSD8tCh6U8hH3XBD_z#QSe5=h}!rX|-prr}uInS};oHBzM(R%NlJsP)-J z{6TOi9+;v7x@y8LG=p3wB8QnNojFY%wwhMmqO(1bp&H&iJpEv3Pyp6P5+J=6sh}et z7UdhGo#wuC^l_rwl_Pnkg|sNOJ)tO`j4(RJr$LFHT*2jIf{`>it0-$E*GOyl=dX-7 zMh>38cogEd);AZK|23pW2zKk;h`wuqUEj;LQDJCPyP=P()U70k(6(f3ZarBgYu|nx zMW4SamW(bFS)%<$r?rf%N>RaPifkb7-Dd&0G^*d7Hk#uFR6U5XY_E;i$E*IC@vqJG zigHUi`}eCz?K4(vLz$nG^ToWC5LFJ}wy@c^gt!LBg4&4`v4r9*QQRtF*63pjo*O zhw%({roB-J7v!|H4V&Z|QH1}g>9AWckjVy?A`crHuO+oNl^e#A&g)~1QKL`stkQi~ zTs5H;MfjILBHjDqe5^@V!^Drh>ZhUHXikue^;MGz6cO>;Wb^GtoxvjII~{XgSBI9fHrtR^+aVz4LK0bhe;iC^wJTJotqV(J%wS@@f))IDGG zNhhgapBtF?&Os95%+F1q!N=PqiX`i+K?i2O;HPm;zNi_WETJC$`pA)HzE?m;V#r?u zmPj9HEq2ymD@GKokefyV7uS)79~B~LfBGl*VCe_`@UvT+3XOS55{+_nwrK?XeB4&_{#!k9VN<;wvwYKJ^0o@7FFU|HkxXZw~P++Ud-R#tv zQ~Ct=aj3}$@$mcK%Ymd`_AW}2J_g)9@B^v>7=-_Gler8cH_Kl2re^PG5t8|=q$5^< zfSTsYo{0|gDssd2^7)oRz&+k8f)T7=cg;k(U9a^O4UE8a3!Pl()d%rE-k)VJP8{g& zbG;7PS(INuhdn{N?}B+|TcS-jjmwAet4QM8@7dAZX1U{68Qoi3*Yx5Pal-BOr%Uk2 zGop+c9=gd8n!jkyQyt0~EMw4ND~^#Ho9)Jjs!~u)3|1nGtu%vlt1BNc&6min#a~oC zzDJ*IX%OraR6=S((UmB24I~|uKoQ5!du(i5&L{<5uS}gF3QrH8D$Mg0{m1j6TW}OZ zLha|@<1lqdj;Q6{e!z&QITnRhb(QF?P5j4mqaZ0SbOJS*Q5LAhRA|lnqBEGeq*56~ z8T2OIbu99W&<1N=ikLIhHhOUGm*mS+m_@2NHlKko<1_ac1!xKf4x5|qi;;{xyfI%T zsV!-iR8(2=gkAf2tA&{E=pW+%0E0R`4~4yvd>e!)Npvs5&V2yN?k|C@hFhN~|3s~o zL{Qn115q3FdL&L6yknzy?MCP^CLMJjTWt}rRiD$X=^Y_5{qX*lG%IfRs3mKP8gq*D zhyWgDIU|_bVZEf(NQwPb~HnJ)FW@WU~6 z_o}Vj0Vc~hLAv%YL_pJkCNb@H+}_Y-d9&r}s@Kg4Ufd#SWjSA^^EF$_3RHBjAJ&r@ zIJYr*e;t%}?`4{gH`B5`4kSpCK;?$6m+fRfp?L2$g#mk_8FqB(kftbEQ=tIY9-s>8 zfzf%$(DJ?Mw-gW(d$MVPm7#SSznY+)&&Eoa|E zyei?Lh6o{cQmWaejb2j5l=!)rRB_^=YW(jVx8)HVgsl0C)jo{^;?jf&rmf#Q%uI9y z1559iTAufjj3s+K@@%7yv($QF;aXI|z}cUo=#@G(1L+;q<5_DYDanTGnTf9AEmkmO z({xKjcfLLE+z?GEi3DqAD=JxsI<7uVGF^!jylML)2OY1#xI>x$u7W1K)#qB5Bm5P9 zkv3$2>M4xiTm;wWx4G?4E6vpi;p8JJ4YW{Ult_T_E>UMI%V6ZH3mc8Dbi^_9n(@am zP1@)&qqpKKO?!oTtW~6*pO%X_rY}X^;8pklcRz zNrdz2N`<8R1_!KAciCE&=cK?&kJ?#f<>@(OGO;AZfqo(B8xMY++Z0h{dQU3c{3Ul^ zUv;wWf95ZGW|=<4@n9VP;b~XNVOKrkyOiDIK@o$|Tzen6U6rsO zu`}{16u)@1lbxn9V~UiTI=~D?M#3#$s`X#~;(}JlWM-Qz!iI!ne<2*JFnm2lXOaOR zmv^4L9ei(B%GLaxi!t`_$azuZ2pOM2<(o+CG*$Q$*rX8`E>zbEbStl{IxKVdzK9&Q z$+?-ym%j~}sZ#GxWLG=t*ew8CcE0zj_0aEHa^`Tm-5M%x671ERXDkI$?ox3t?|amo zqyet^{Zd~SSb$=J^J--&z*86eo*C>6g;tajGCIOirOAeI}#ztRr>QuhQalbf=u zLPhIc-vkq`Md$M$GPsk|a3~Wv{YFBM%xxtP?AQdrFB3t>^>aK^r<0d2t6NFt%iJ~; z=_TfWZ^gg!s{YxNah-~~DTBU^u!$^5*j6T`Z4^BXK)C2ot5TQqu@v*my$C*))#1ml zRpf`XyDkqSZ<@#;4je8Oj~#1pg-rW=aCS^OX3EBcdVAQu?RT+kH!<$~It$u1i~c9E z=+l7y43cBi32cW{3#Y~(1@vD%j!oX^S33&!Bh!1r;dWpX-q1|%$@4nVn&FG}ZBkCE z|FvgdaW@jKolicD*XIL{hNkV5j#uJu9&)#pa&{)sBsGGgysiYzG*yI}Ud*$2)Au^M zttq-0lm+6ZvcB8~3cDN$V{?<_PUIe(Cqq1KPWVRC#7XavH(sMU^tS~SXg@#FWFNdX z5Rez)D%6_P8J;dE6M)oC^>xEm&z&!=P)|1=ZEx`YTyp!9XW!ylQ_EDF^r4gw$#+LX z$MJxbUFzSo%T^go4W#7P^s58Hc1KdtW({>~SNWeCv9OG0Gu8Bu7JGQ3?cEIRY{E$q{7*&JGrtCUn+ANF{&%GX|n;q{?RIJob^ z(`F!!aMFixM#m|qIaYWpepu1jtcqRbL+ue(TgR_CslLy3QGa$P zt4H?37%rxlP}#k zHmuC-9Zf~U3I*F2Aw8;%Y&AG~+w^xN?2i|8C5bOIo|ufiz&A zyC5y}O#{to`an^EEhCP$@^s4J`F-5dEjz4^_<7hH}+KJW! zjmhTF94gT9L`!4C;c}#@pHaK73W+4DgO%_Q$U&k_L{qh~hkwyuaiW?hkq=YdYoO`L zJx+V3KIj-o$9ZwJ+C57Ov`YLp)X05P^fhdCdaa`$It6e02bgx-Cb0a&pX}+b-ZMo2 zNNv?T7rp26j*Am-_f~f0iVm)R^>=7Tj+|d~H3(l*7@cDQOuTE`FJ=^gUATLetrZPS zf<{ggC+q#;__yiN6rMI1b0~bZw6+jft+aU6*_WrQxfg4%1vvh@DbVI;Q~~ctGIgBg zNMm%BqEWN7?*ln|FK%Byw|EN?{dk~-0)r1g zf$YAsxw8-wfrH=kfd0|hfLc&p^0lscAtx|yT#FOG$EV$FOMReL$`A+(sBrd@EqL@*+&3OQ5f9DG8{=}E zy6@q#=HT$KVnO8L1JDo>ENF_sNUK2C^!8Lq9d;tjEMln%78R(t{N_2=eDdegf# zDOI;6>_F~#>*JvKP^uD(|Fi)W230QbHsT@ zb2Q$@E{;d~T1XjlS&g}t8RR!E0td``b7o;`c|jnpx!vy8GU_E-P_GbTOkui6*Qq8n zBAskOk>3+TwJDAnq0r91nQbVV3#I^+62BiJfZb6kSDLsQrbnui3DAw7u7QFB+H@#{ zzMlVT5((59d`AmTFBk$g03hj%e=@=+nm}O!$SQzU7MN?lC*fNUuMlZJGyGnX;|WKG z%r+*^hWzv|_`56N#fdM37FxZ0LNR#*Afx!=)d#;3jOK$uf3vWJlEg0jaMI24 z%+e##;x~jQk95}mogf4(@z=Pe(H(p_C1h?yY0Njuf> z3uEY0MTQ)M+r)owBbYiqmI-ffkm4LVl?fbIsbQ z{Cr(yV%v^MFGCtWW2q`cWcinI)(L{>py6Zu32^<}`{KlicOQO~KWjAo$9v*r67RpT zH27bZ{Vu2a|7sf8P#eD4zP}L8~OmE)& z19ojSz^5%%ALl>tv^TwX5z7Q}%&+Xi!}(!xmb(dp*~aol%V;R*O2{BifEtK-(KVx# z_~L??J^<3ofUk~z^e=7ApaJEQX3?BzSF_cAlODsa;AJ`;#L~AuZt&|p@}5hw2wa|k z8Fv*0_T+^6U#=XMsF>Cwy~aPDPnT$LrkXA^FVXG}QVQ`r(Je$x()<+fdnWba+hB*z zpKkK*MZBSlzN>_;MXf| zKlR&1mz9u=D7Q7bi{&H-Z^GZ9VLmNi-kSrd9JRBAnQE8XRMqT2BY!PXO2z2H`e!Hf zq{mV&t+*JVm7zS{GFEv_@HuMCS;UTmC8o2RH&#Td5Qm;c&Ipfy#y?ywToFMPctY?# z%|2y=NpK;wO}D=d!A36p%O%*GvzCt?^ITjQW@*NJ1RED=kYeZudqmuAWE)A%?^UULdL*D6FQq#(? zdO>#nUXrlIm7{@@-p;L2E=LQ$ey^FPLP7y58WRB<)Ufq&S7$~g_Lkt@HZsr;fNKR9 zIc%ifK(xf!*_XOV$5J(Yp*1v&$^Uf-39!{0W-eYkhl-V;5i62xyWG*~`XRgohU1lx z^sXYs4=hpwLt?ar4#7COOvoNC9F2U=3M?MtvbnM)!7WYo2htUm90=JEbeI9?b?0AJ z2B|MFhBBN?R$-0!I~9YbzPwS1Hfbj9Kgp=>nj!S0+s{6;>9Bw+RRGe+9g?~i0VS;Y z{pT|lpPGHbBQ-&cX(BV*I<^Z%?Sd3ruP$m;94;E8mwhb7acQb2tA)Q{$z&7MpsFmu zL>0x=gR#M&%YSzOpT?j_yn>7H{Mog{%jIOnQibcW=NBZCAW%PmD^ngECKC9C{j-3Z zH82Y_$_ozy74X;@R_aSC*V1m2%AA)G86j>MpeicnQr)>Y^330zOJ$01roJW(sPAK^ z?|2zSv`}XZTcFI_=-)=**K_ZR{^v5)|Gh~^6)uq9k@-rUf|1V5ag&#o`aApk`9ipwch^-nI`y4!3984nDoo4h;V=mKl$;$)E1jUBasPfF>C6_ zvk;u1R^D;PLhB4R&2MkLxLL&8z-VJ7YUt84ZQ<)U$^z(|381F$|y%9>2F$4Z#@ z!3L6QA}rbs zrYFC2NoU<(nk<(N{sHm)`Zx3mya$8O|APnhyVq0vwS8K?Ym&Gfgf zURws?-4C!u7E*GjxF7^wwRXSpIZSEA$1P06G5Pf6qwRbH(rbNP_}p%0!rYu-a1Q<1 z5#X5xkR5|;OrqSm3m$=tUGFOB+{m^pGiQ0)o`)Lq8H35=m)qEF005MIAcWw4=} zz(s)AM5jNDW&}rK5C{nmr_ex}J-{x3IW%djNx}t0?x5qSc9J^SC-tQ+unbkE04tqB ztDn!vZO422y!Wao4Je79UU@F0$Y9K$xDKoL9i@B=tZG)z%|q&4bv7%5dZOT)*741o zzO;7P@V9JktfFdPkq=ur7HJx5OT5g-AQO2Zu&`ZoX<6h*|G$euY9OPYHP*zsMPcrZ zu9=PbHNO?e5~~ZP=?pX6-TQ1nos;)f_4w~mX+q_NwY|6orl~wu1Rn$~y=GKV%S&)N zRW|(M3s@EGTz}^d?}6yY@+7+REmkuD(}L^M)alP&>gvw_e19-(V0~#SfOcct;JiK- zXCN=-oPV^uAEy+>2{+G4LGz!L2};YrM$s@&fA!^2hobN6XS^R|a(?d!q2Te3^KcLt zRdo4E)PVf%IOsCL;1ipvq>QDyz-9gV)uNpYb7?X}Z%wtkEX~_tX&<913I@~V-br2o zR|Q@JVhRTLj6S^j$1aT(bmC$Cmn{Y}s>(>I6-uW>c2z8bvVq^{(Kq0M_+BQz_Ru~L zbGzoQ$IR0_aZIfDiiNYZmy@M~svHRxY*7O%=2buvgGr9Od$+Ebvr~h;iY4MIY6D#* z^^r0?|GtjJ%rVi*opl8bjC*f{}4b8OjyI%?N!;=DxrR>WhzM)*2fl3a@j2GN~a zOcoeD`VupaXQeG(bJE9{7XzwN0SftXF9&-V8PWB96NT*fTff(Ne=w8Tn7853kghAh zu~5iS`>VfpZAgaxXr4=Ly6Uj+E+}}dAN3|rRrc2XfcxK(`zA4pW6v)x82r~ z=*x3!FON7G4@tEN4x7Zf?$-g20C%mrBr6*O$A|bP$f8 zdvS#kmZbXYxVd{bkrDQ1)VrS}=cgsy#tVv)47Jpn+soIv#L)N{BlxoURkT>s8}sXe z9X<`r5ZX^YJ5q3E2308lJK%wKG62e<(eG~&4ncAc{fdT409a1-Rtk>CkKIo^L5wrZ=L-=xtI>tt7{$#%b9wJ7)UBT zPz3NBP}RAsYYzs%39p}CzG4G_{3_FF(@Btem{bqALu)Oa3@oG!w)$HD0vw%Mklbu< z`3*|wATmb7RY4yJwo39Bu-=0z!u4efQbH*jU8hnCn{$QdU3N2H*p>|=3l|r{ch8+m zBUBMxXO<${vZfW$dHf@$HBKmsPwu+`7{(+K&5`|L>v6Wt%Cbv&`zYEIi43ZCi}ci*Y&RR8;JZ$Q7B&o>f1Em-X$ zt2F*NsD`CImuzgV^^bD%rhM4D=9~=&vj1@UFI>)RrulnUFE2wQzC4|xANw$>?q%;S z!>j)LYcjb@#xTh*9F5xU(SO`G%p%s@(*s|xk;`-OTS0YFhM=G|J>0)Qt%xZvejTTH zS63$0#K>EOGruV(dSrJP2o!2stgn&D&|puDseB)5DV=F{JqD&R4iK}H&-eFZR!Xy+ zDt1|ikuk*&w`)nk{arP~yD-vZPW$vybCUI5Wqo3&Wjk{+<%<^8$w8qBYy;RCN+u(r;hiDO-=8g?l23vDMd@*V1{N6rF<2#!Ms_>NK%D+?}-ww zd7iGi`@27k^-#V-al`m#=>4qqx%W@~aYM%9#DF(6R$D?){5>_~mpr&>=~|K3?}=bHjIjT(sn^A(4$vR>BNKRnFtvcD zk~>OkcS^0TJhR(;IZMi0uP*-XNNC73?h$XJwychD%R_ob+WEQpRk%h1Tc4>p(-TaV zp#o{U{vQ`~<>t2!FX;Oo9{lojTX|aGlz~@J;KuI=HM^B{k{D*8bDehV3y@aOm>w{v$&)@uxIXhHgbyme`W^|G_o|HdF zQSV89JRtZeDA3)CFqz<-{}qwYEknbxkpH<+pEf4Ekw>_Z#T znanbHC-ik)e{a0kjD4mR&OSX#W+Dx@?%=wfi;=B{j!t&6#=j-Xnm)>b1v-@0NB`P@V6!2s)f z-i(ws`c6agt4b&TwsnnOk1EgVi#qY@hws$2#%vO~6XI=Z!)Hq3bBamKB)1^pVJ2!? zY|7g|@iyg&iY5oFn1PCo9^?lB`%gixw>Xgy8KU!;`3iUU-Y~8+_tJ_*%hjbY|Mj&=MQMR7dBGL0^G;#A&HfN1#G4LB6`z5InK)f29eu%SFt_y@-6a+B&2 z?dtM$K~x!+8k(jS9nWqal_K?S=0d9mHTkD7@OChodor6YwjC(XCu4HzyfplzY- zE>NL7-^IKTW-jh$2ogF>nMFp$06t+Sgk}&$zC^xD`e}nNm!(;x0@0YxrHs1OD^o zq;AWnwMOulS#J9?;epxdivu`X$`3Z!N1}1Qa7MIoZ^f(FyDPyC($Pm54epoClpJ9i z`9U4lMpz z6JxllKNC_=!>m1Aef+c)xxSW&-N5#4?wkV_xa(uz!N)QasWhKT|B%)z;vV#AasI?s z_$8mqEcqJNXZuuSaRHL{p%XPG_msaj2|o^LA#zrzomJJ8V=Hj_j6Bg>X#@{stMaoOBKNgpwL_|8d!`aBXF{e%DGOzW-mVqKuWWRuA=*&Yxw*YUuj( z{&noLU=UR?ka6joS3W5W0ImW8Acz3amcPbUA56GwP}4x~lmLh)`Ns&SRiH<}Q0|lz zcW&HaHP9Yk{;nqYf0tGOSNyM60bXKRczM$42>JM%Hmtv{gEE_9eK3opk?7wt19soD zvJ(06$0;#qVsZ-R=fq3Ke^VhKdSp8Q#NYiV7+ha~j3fjlsc^r)BlFLVey-&Y*rF2q=94zP0rF&8ohyKf^E=&Z0O@EoSJGI40 z4Clulz^?e@1gOxidJ9C9k5%yl)&4?< zX?5spg~lJBv$$Uhl&nCvhxyu#?deIs!=Y$SKWRA?8*s`e!*&V6>X~TI!$HZ&_la54 zks(wzvRDbHzcdjRkMU<_GUXtTolu^{+#WkF&07LA1VqL=bwr*ntsFrPWXVYz?y?`M zxp#XUA_n%AE&26lhL*-Qo+mZe`1$aYqQ6vJ5iBvGHV_iS`va1a@t=|nWZ0^_Kb3$1&hn+6vEpR0 zuKDoF9q{-(-3a*z2TGBDVr=d*y;99PM(vy1>CzkQ{^9vNPQ^E+!u)MRWn}LSfgBD! zOQzXtP)Tsmy~A{*R(g=XhtDMLF4P0ufR{Omld#GWU9z7%Dp6+0P2qhP zglv)FgZ=6E_fqa%RThus%>5_%qtHs+OqBcb`&IyXO7PsbSl1v}pIqYUqVH{-k`S>9 zm_c{0hNmw4L!Sh56lSTCe{d(Nv*s znR!f)2?A$TmQv5_`pv^5ouK90V-_<<((I>$X^)n%0+$Lyzs+y=f-$w$gnGX?qAAG@ z;&Td96gYhnP;i*SUV~Ppi@?tU8N8%bbip-o7=1(-zXMzG()`Srspdbau&NySY*O1FB_NM^=8y zcB;AFFRF-*f{>inn$V1H+LLcI25}3iQPS&5&s$9ih`EGv_PgdY^%aTv9FMgI*>rU0 zq9FQipJkU|wBfxMy?x0pd&w?zpBL!$BFR_xJ@tsffc_Exyot%qXFCK5`6|KZ#mKv* zPbQUrBo#SczWA#SKd_q~*#z74$=sjLutjy%!eItTk!o-*Bw`@Ax?f4^(?g9Qwx>U} z6VFM#{XY*3MIZXMI+x&9elC#=#b3uqI* zXvpcssP6nYi_?)eAO_K~0{j+(egqe`+U>IPGuED50H-|q&u(!RCt^3l3a(8mpNr@z zS5h<<{(3Fb6cq1Pn4YiJi?jtdYd_bpBUbY#b9kKetj*JKm%VS3GG~Mvu=rV5O}Ae^ z<9CW3!--!dk$(~(*Vllqn2vR}IPyasSqEObF(LSYsd@)YRf<)m zMXH0$MlY$&Zr|JPFQJ!*A^V5sfD#==@d*88em}Ax8%9$WjV{YIiZGgB_VDn1}We$~+!{F(Q{4^jQc5IRMV zb%FuDI7uv)Q-`b9^uiKHUcddTSG*(VVwu8c6$eDc#lxcWL&<-ahZq` z&HveSw?+CEg(k4tz(Q0Fw_Obu+K~~zJL-9GxRLuuG(Hf$9{Nji-tlcg0N(~!tkRCs zu>L0`l1oEGP4bH>=MsP7Xq~EO|G|&`V?RHft*?4=S7kMzS_WSd<^Ewpx8U-)%rY4s zVlIC6R|9*HHx#|Shk97+qUN^Jc3~{++Shf0(;5E-CZXAd`w$mip6nRTCnEcvlW9ri z_#eiU70m|D23_hS3+i?b7&)f9e13mpDs%^aHgave_&wL&KI~e%#dVSlbGCeTsW2&t zl5Gp~?GHS?!7u9(!wIw-Wjd_*rn!wyAJxknf)$6I+!~`Ho|i_qgR}PD*V}8p$J>_L?lzfDkF-){nL2wGzhVcx zgPtQ;^+{1dv4JF#X;6G}?VN_Rq8^tNZDmjJ$C@hOHE~(3*Be?3H&9>AQ+C5NuK|n~ z4P8n;IPcIw+UbAo)w+l4n%mteYICi<@X)rQy$!=Y8UFE;Axjj#{9=R2<=azB!X(3C z+6Rs%yn`y`O%=wLVPeNEj-{L^ZJWyS&7Oet!v6O6@T~9k^!J8ei*t(?D-HHH3=v&O z(e@2Kg{z0$IQO5N9tJV z&ZF|{6M-`YzpDxi5qevfJ|qfTEj2=IVUi{YEq2)FXEqW%uu}y&aNL0j^kRbRNXpw2 zJ@Tg_VL}YCq+;)|d`eM_b?yYmiOS%`vu3x#Z?_O0q}PGmYd$NROGKc%FD*;WQ4!0t zV+}VvWRHlB8p5B!LD0KzWoiN;`xG?&EWBb^*RIx0f`(Uz4o^Wqet3T>Ci7@Pfd^#$ z6Z3&K`QI;a^vQOf`K{_G!UgbrFRQMqrksXe-=tJsG|}z5htc`ogkAd0lwLRD@zVH8 zhUIB_IhE`~eF2x@;MgbzN?Zdn;kMV>?_+3_^TRHCFD7tSt+NF`agPYVj%i)BWpw&N z3dmqYlFL}&1Rg#|)PL`@LPD@h}_3 zS;j|!--+mZ@dJ&M^oE%GadrZ>%NB6Ibr!VB`qHq1wXF_Do@ukxbR%S@MW5TF%R0cH z4jR)_hPbEGkB+Q{Fn>!ZPNe8k1ALhS{Ju)*UneqkLjKNxTiz%O1IKewfMGb}wF>rV)ANsIE^ z0OAs)HJJMzJaaooo%Ee@Re5m%htzbM|9SmNeUF9k$rioo7Mm*4T-O_isS*6%gS-`! zm=P+*w;5d?j)NBVi3Y5ivY(H#H<@sU|7&mm2Az7T!(F#^==w)l9;Ww|`|%kFl{$oU zLukh6OtmSq5YF6>fui+=jly3`p-(k3(e$K&)0Y&o0nb64pWof3R9e3-=t-= zRe7LZG5B0lDt&8oYLq%S-O9tpC88*i`r(!pwm|Z+1~7)e>eWs?ta@Ecz(WD#s->&< z0S-u~+Yb-stvoHxh}g#*BY{d@BT(9^lFghkl#74#aU$bUiGBY&yDC`cP@MlP(+alQN=w&h1)=?Q zaPFrZMQ&-2Z2p+nb>w2n+_cT3PT0#3O-_Is{yVRpkX>7w{#rUtgV}D}<+42;`o`fJ za$yB-k77}Qt#ma&A=pd5jk-h6BV@lc8tp+jGuj5EhZO)6DvO1e5KQqoQy|)PZ!lvp z2{D8tt&tU3B|=p%RplBIO3TJp_`UatBwnbn4h7}IXTNH!yD^6#ajj*V9->+@nxfO{ z4JMexYV(zqvNr$^+LV*|OqImtQn>xR@z(~i~TRo3#SDVzrS#qPG336_=qc7QOeNZZ<^K#ST zDYCp8(Xbz1q8Br>ql?0hx0LJBJo~Ue!yYb-S6Bh4pc4UOi^Uk`oU>EL+J(0u6hQ}V9%+Nk@tBpJ)MAIxFDSYE#LD1D#d zYP5ZB3Es6?i~n3MQkX9Yrk{iLQofDEE`XYrZB+flq@iJ%AVkg+h1H2^N$5w#(0j?X zv8rd!tRiMvG=dIXHsqEhLs)dnY?Ms;s;2(khj&^Je~zK=9}LtKj7%RX80b75HzytB zTqYx~LFf_0qdq1C1cLcFB;|SY3rnJ22^r&h3ySXs&~D=CKL6CO4$eiGiB^H0VYhk;6cn#BJ%?7{13~W}H=+jihhIwf$6IdPk|v0M$2IwpRyajF+lxQ)Ju^X> zM-r0ev*+ew|cIl8?$<;hWrzL&JA#bCIo@d#4h*`8J0vvvpJksp_-lVA^`wF@4NMF za-BX0mOR7lOF++uv~jvX5^E~~J59&BTV6Kco0yk6c-y&_mv8v2yijQY2qbq?Fb+o~-)dqYxMK3~*xNJp)XjJ!t2Km^yPb`E&Y!EPN>pz3j9x9gr<16&)M8noL zNTB-g;szBtJoiOeHoS4nO6+y-t5^1YY^=vB8SI7w!Qd54XD{ z$zaHd1}k;{05{8A6Ed&G;C1)ngSFAI%|0*CxtceI_w41VFd!FD*_54@v_dxxjjknY zJO=2ninrRpFXg$XT6!@(N#;#eg9H&OlMtq*FJPPs6E8A*^nCm!2W6Ed|+c zO8D!O^L9y5?y()kp(nM7NuZ)ze9W5(>s?zU^8%uUg|6XVbjepm5APZlhZ6i~B&3sA z(bl*uAswT|h%~`#f!BXx*rh%qBO9ODn?&je(aJdxsvJa|4PIw0e;ahi$J&%{A5J4Jk!T`I;#YGC25 z7*l**;EbeUt=QuM#J5Y!&LN*?4Bq{bs~NMFTp9d&b%^{}2Y$$=DQy%pyXOr?u_gJuNd*`uKsR%pS%CP#8@aoZ+gj4m4?Z`PlYmFBQD0@K1WTv@DWye!Jgh8=uwPSI&v_D=#Dc%^~kxWzW5zU~oN*Yc&>< z$yLDsu=kL+Zz5*FeNrsL6xV|YlEu>$L+&z9%Cd~)%vASDqnTDHHeVd7kNPgVEt-`g z*-a_BSwv!0Hajt3E0^%jis^H>i=4s9C@pJ;*-wU*v22Owm}F$Tfr4m9?y>thEP3zD zKSZ7zX?mbu<@6e{j&}~Q_2Bj+XcE&}cmaEjh4b8U!bOGwBYiV5=H{V9&*5sZ^I>=$6z^S=k5z^WTs1bQ&ASDIiy z42zkC$BgyM9T?RJqqWDIq41-~(BCax%)yqx`wIbz`v2Se>jyl;9OFEA6VBw7ooYsj z1_OF*!&`7EA0CrW;0idi4HuK1u2MzdS)}l(rhwU3|JD$oxyge64I)bAr~B*!CIn3} zyWASSni9A`b~uKZz7-n0=!h9T_!&s$5H!ut6jw7sz>lceCh%AhKWIyHfiZzdPK;ex z{mngd-rY6sPl>SGvt|twNE&mZkY2tYS`PuyOs*xt*ZYaC*zO@ z%e~MBjjwodK9}(1qeItdLB!`88D;K5(rgD`UrHVWcY!ZD8e3|jJkJ-lO~WZd&m;~l zTisVV(%mmkVATpo&5V!S3()ifXL$Y;lVVZRk7>X2%KLuYe=3SdPGfIN9KXu#(f~Pl z8jNwS$=$EoA!xRRFW@PWAtUK5TZ^Pfz98f_zQ1Ypu6FrDq9&Fp(WIKFU}MIXu#_O8^Dv`05nu$CvpTHi2z?%^m(di%=!iRJ$g!`&ub zW`xdu3bcV*S-rz=F>Q(4usd7os;*P8$D`U1k3RV;n6M<4)v30FsU;(Rk_ksFb)_IE z6-6UVrf2B{T^wF53Dro)qpwR~`($THigMzpI=tH^s`ZILHtJ1gl(u~WCwX1OwrHO) z_Xg7;e-gM3|gwtq1NI-VL)`Pg)Z~QSxnRm~vrKW9o9(U8d6<%p)Od6Wq1_yRb*J{poA5rr`O+SF z)eazsia*RnutEjE$zdv#YFczaFL9~l9Q~HnEd8Phg709T*Gev1*F2+#koV;1VGG5s zKkL$K(;2IGl||~sY=%a%T19hxWk+wz=m)7mkUA=#plVGKEN}bEzpyT_yIZ%lg4Xh& z9JzZfAg-@q;%JWpRadsx_x9r}*{%Hcovl{V(dIz6(?g+QU*TocW%#i*UNwJbIuhtY zG<^lOEOlx`>X7jVLZqBfMmOHp;j;7@4@>5e7_pGhCZ(g%5yH8;sCR3k5Ol?fKqu~y zvO*WSYA`qJXHA$xP}zC}ZUpB>l%J$W3-@jT!TDST&NGfe-=p^j7tH5e?=1bA2jCeU zNZ6V_FH+wW!`bI`{Y|v+VNkh%4E6&abS0?>IX29P0VgO>#et7?jR6FeBs^(J-VQ(# z_^Kp95ueP4v+OswJNqPmJfRuRQBZiH{4c4jdH6p1?p?>nZ2D%ZI8(~w9^!@Fy<4Go SXGjp<3Npi58kHEjME)1CDQ0T` literal 0 HcmV?d00001 diff --git a/docs/consume-packages/ways-to-install-a-package.md b/docs/consume-packages/ways-to-install-a-package.md index 3aca5be48..1a1b3671c 100644 --- a/docs/consume-packages/ways-to-install-a-package.md +++ b/docs/consume-packages/ways-to-install-a-package.md @@ -1,9 +1,9 @@ --- -title: Ways to Install NuGet Packages | Microsoft Docs +title: Ways to install NuGet packages | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 02/12/2018 +ms.date: 03/19/2018 ms.topic: get-started-article ms.prod: nuget ms.technology: null @@ -16,36 +16,53 @@ ms.reviewer: # Different ways to install a NuGet Package -NuGet packages are downloaded and installed using any of the following methods (see [Install NuGet client tools](../install-nuget-client-tools.md) if you don't have these installed already): +NuGet packages are downloaded and installed using any of the methods in the following table (see [Install NuGet client tools](../install-nuget-client-tools.md) if you don't have these installed already). The package may be retrieved from a cache instead of downloaded. | Method | Description | | --- | --- | -| dotnet.exe CLI
    `dotnet install ` | (All platforms) Downloads the package identified by \, expands its contents into a folder in the current directory, and adds a reference to the project file. Also downloads and installs dependencies.

    • [Install and use a package (dotnet CLI)](../quickstart/install-and-use-a-package-using-the-dotnet-cli.md)
    • [dotnet commands](../tools/dotnet-commands.md)
    | -| Package Manager UI (Visual Studio) | (Windows and Mac) Provides a UI through which you can browse, select, and install packages and their dependencies into a project. Adds references to installed packages to the project file.
    • [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)
    • [Package Manager UI reference (Windows)](../tools/package-manager-ui.md)
    • [Including a NuGet package in your project (Mac)](/visualstudio/mac/nuget-walkthrough)
    | -| Package Manager Console (Visual Studio)
    `Install-Package ` | (Windows only) Downloads and installs the package identified by \ into a specified project in the solution, then adds a reference to the project file. Also downloads and installs dependencies.
    • [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)
    • [Package Manager Console guide](../tools/package-manager-console.md)
    | -| nuget.exe CLI
    `nuget install ` | (All platforms) Downloads the package identified by \ and expands its contents into a folder in the current directory; can also download all packages listed in a `packages.config` file. Also downloads and installs dependencies, but makes no changes to project files.
    • [install command](../tools/cli-ref-install.md)
    | +| dotnet.exe CLI
    `dotnet add package ` | (All platforms) Retrieves the package identified by \, expands its contents into a folder in the current directory, and adds a reference to the project file. Also retrieves and installs dependencies.
    • [Install and use a package (dotnet CLI)](../quickstart/install-and-use-a-package-using-the-dotnet-cli.md)
    • [dotnet add package command](/dotnet/core/tools/dotnet-add-package)
    | +| Package Manager UI (Visual Studio) | (Windows and Mac) Provides a UI through which you can browse, select, and install packages and their dependencies into a project from a specified package source. Adds references to installed packages to the project file.
    • [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)
    • [Package Manager UI reference (Windows)](../tools/package-manager-ui.md)
    • [Including a NuGet package in your project (Mac)](/visualstudio/mac/nuget-walkthrough)
    | +| Package Manager Console (Visual Studio)
    `Install-Package ` | (Windows only) Retrieves and installs the package identified by \ from a selected source into a specified project in the solution, then adds a reference to the project file. Also retrieves and installs dependencies.
    • [Install and use a package (Visual Studio)](../quickstart/install-and-use-a-package-in-visual-studio.md)
    • [Package Manager Console guide](../tools/package-manager-console.md)
    | +| nuget.exe CLI
    `nuget install ` | (All platforms) Retrieves the package identified by \ and expands its contents into a folder in the current directory; can also retrieve all packages listed in a `packages.config` file. Also retrieves and installs dependencies, but makes no changes to project files or `packages.config`.
    • [install command](../tools/cli-ref-install.md)
    | -## General install process +## What happens when a package is installed -In general, NuGet does the following then asked to install a package: +Simply said, the different NuGet tools typically create a reference to a package in the project file or `packages.config`, then perform a package restore, which effectively installs teh package. The exception is `nuget install`, which only expands the package into a `packages` folder and does not modify any other files. + +The general process is as follows: + +1. (All tools except `nuget.exe`) Record the package identifer and version into the project file or `packages.config`. 1. Acquire the package: - - Check if the requested package already exists in a cache (see [Managing the NuGet cache](managing-the-nuget-cache.md)). - - If the package is not in the cache, attempt to download the package from the sources listed in the [configuration files](Configuring-NuGet-Behavior.md). - - For projects using the `packages.config` reference format, NuGet uses the order of the sources in the configuration. - - For projects using the PackageReference format, NuGet checks sources that are local folders first, then checks sources on network shares, then checks HTTP (Internet) sources. + - Retrieve the requested package (by identifer and version number) from the cache if it exists there, unless you're using `-NoCache` with `nuget.exe` commands or `--no-cache` with `dotnet restore` (Visual Studio and `dotnet add package` always use the cache). If a package is used from the cache, "CACHE" appears in the output. + + - If the package is not in the cache, attempt to download the package from the sources listed in the [configuration files](Configuring-NuGet-Behavior.md). If a package is downloaded, "GET" and "OK" appear in the output. + + - If the package cannot be successfully acquired from any sources, installation fails at this point with an error. The error shows only the last source checked, but implies that the package wasn't available from any source. + + When acquiring the package, the order of sources in the NuGet configuration may apply: + - For projects using the PackageReference format, NuGet checks sources that are local folders first, then checks sources on network shares, then checks HTTP sources. + - For projects using the `packages.config` management format, NuGet uses the order of the sources in the configuration. + - Restore operations ignore source ordering, using a package from whichever source responds first. - In general, the order in which NuGet checks sources isn't particularly meaningful, because any given package with a specific identifier and version number is exactly the same on whatever source it's found. - - If the package is successfully acquired from one of the sources, NuGet adds it to the cache. Otherwise, installation fails. -1. Expand the package into the project. - - Expanding means unzipping the package's contents into an appropriate subfolder. A copy of the `.nupkg` itself is also placed in the subfolder. - - If the package is being installed into a Visual Studio or .NET Core project, only the files relevant to the project's target framework are expanded. When installed using the nuget.exe command line, all assemblies are expanded. +1. (All tools except `nuget.exe`) Save a copy of the package and other information in the *http-cache* folder as described on [Managing the global packages and cache folders](managing-the-global-packages-and-cache-folders.md). + +1. Install the package into the per-user *global-packages* folder as described on [Managing the global packages and cache folders](managing-the-global-packages-and-cache-folders.md). NuGet creates a subfolder for each package identifier, then creates subfolders for each installed version of the package. + +1. Update other project files and folders: + + - For projects using PackageReference, update the package dependency graph stored in `obj/project.assets.json`. Package contents themselves are not copied into any project folder. + - For projects using `packages.config`, copy those parts of the expanded package that match the project's target framework into project's `packages` folder. (When using `nuget install`, the entire expanded package is copied because `nuget.exe` does not examine project files to identify the target framework.) + - Update `app.config` and/or `web.config` if the package uses [source and config file transformations](../create-packages/source-and-config-file-transformations.md). + +1. Install any down-level dependencies if not already present in the project. This process might update package versions in the process, as described in [Dependency Resolution](../consume-packages/dependency-resolution.md). -1. If the package is installed within Visual Studio or the dotnet CLI, a reference is added to the appropriate project file (or `packages.config` for some project types in Visual Studio). +1. (Visual Studio only) Display the package's readme file, if available, in a Visual Studio window. -## Related topics +## Related articles - [Overview and workflow of package consumption](../consume-packages/overview-and-workflow.md) - [Finding and choosing packages](../consume-packages/finding-and-choosing-packages.md) +- [Managing the NuGet cache and global-packages folders](managing-the-global-packages-and-cache-folders.md) - [Configuring NuGet behavior](../consume-packages/configuring-nuget-behavior.md) -- [Managing the NuGet cache](managing-the-nuget-cache.md) diff --git a/docs/create-packages/Creating-a-Package.md b/docs/create-packages/Creating-a-Package.md index 586975f69..104c1cb8e 100644 --- a/docs/create-packages/Creating-a-Package.md +++ b/docs/create-packages/Creating-a-Package.md @@ -7,7 +7,6 @@ ms.date: 12/12/2017 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: 456797cb-e3e4-4b88-9b01-8b5153cee802 description: A detailed guide to the process of designing and creating a NuGet package, including key decision points like files and versioning. keywords: NuGet package creation, creating a package, nuspec manifest, NuGet package conventions, NuGet package version ms.reviewer: @@ -127,7 +126,7 @@ The following is a typical (but fictitious) `.nuspec` file, with comments descri For details on declaring dependencies and specifying version numbers, see [Package versioning](../reference/package-versioning.md). It is also possible to surface assets from dependencies directly in the package by using the `include` and `exclude` attributes on the `dependency` element. See [.nuspec Reference - Dependencies](../reference/nuspec.md#dependencies). -Because the manifest is included in the package created from it, you can find any number of additional examples by examining existing packages. A good source is the global package cache on your machine, the location of which is returned by the following command: +Because the manifest is included in the package created from it, you can find any number of additional examples by examining existing packages. A good source is the *global-packages* folder on your computer, the location of which is returned by the following command: ```cli nuget locals -list global-packages @@ -368,7 +367,7 @@ Packages that contain COM interop assemblies must include an appropriate [target ``` -Note that when using the `packages.config` reference format, adding references to the assemblies from the packages causes NuGet and Visual Studio to check for COM interop assemblies and set the `EmbedInteropTypes` to true in the project file. In this case the targets are overriden. +Note that when using the `packages.config` management format, adding references to the assemblies from the packages causes NuGet and Visual Studio to check for COM interop assemblies and set the `EmbedInteropTypes` to true in the project file. In this case the targets are overriden. 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. diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index 14928b7f4..423c83e20 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -18,15 +18,15 @@ ms.reviewer: > **Looking to install a package? See [Ways to install NuGet packages](consume-packages/ways-to-install-a-package.md).** -To work with NuGet, as a package consumer or creator, you can use [cross-platform command-line interface (CLI) tools](#cli-tools) as well as [NuGet features in Visual Studio](#visual-studio). This article briefly outlines the capabilities of the different tools, how to install them, and their comparative [feature availability](#feature-availability). +To work with NuGet, as a package consumer or creator, you can use [command-line interface (CLI) tools](#cli-tools) as well as [NuGet features in Visual Studio](#visual-studio). This article briefly outlines the capabilities of the different tools, how to install them, and their comparative [feature availability](#feature-availability). | Tool                | Description | Download          | |:------------- |:-------------|:-----| | [dotnet.exe](#dotnetexe-cli) | Included with the .NET Core SDK and provides core NuGet features on all platforms. | [.NET Core SDK](https://www.microsoft.com/net/download/) | -| [nuget.exe](#nugetexe-cli) | Provides all NuGet capabilities on Windows and most features running under [Mono](http://www.mono-project.com/docs/getting-started/install/) on Mac and Linux. | [nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) | -| [Visual Studio](#visual-studio) | Provides NuGet capabilities through the Package Manager UI and Package Manager Console; included with .NET-related workloads. | [Visual Studio 2017](https://www.visualstudio.com/downloads/) | +| [nuget.exe](#nugetexe-cli) | Provides all NuGet capabilities on Windows, provides most features on Mac and Linux when running under Mono. | [nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) | +| [Visual Studio](#visual-studio) | On Windows, provides NuGet capabilities through the Package Manager UI and Package Manager Console; included with .NET-related workloads. On Mac, provides certain features through the UI. In Visual Studio Code, NuGet features are provided through extensions. | [Visual Studio 2017](https://www.visualstudio.com/downloads/) | -The [MSBuild CLI](reference/msbuild-targets.md) also provides the ability to restore and create packages, which is primarily useful on build servers. MSBuild is not otherwise a general-purpose tool for working with NuGet. +The [MSBuild CLI](reference/msbuild-targets.md) also provides the ability to restore and create packages, which is primarily useful on build servers. MSBuild is not a general-purpose tool for working with NuGet. ## CLI tools @@ -34,7 +34,7 @@ The two NuGet CLI tools are `dotnet.exe` and `nuget.exe`. See [feature availabil ### dotnet.exe CLI -The .NET Core 2.0 CLI, `dotnet.exe`, works on all platforms (Windows, Mac, and Linux) and provides core NuGet features, such as installing, restoring, and publishing packages. 'dotnet' provides direct integration with .NET Core project files (such as `.csproj`), which is helpful in most scenarios. `dotnet` is also built directly for each platform and does not require you to install Mono. +The .NET Core 2.0 CLI, `dotnet.exe`, works on all platforms (Windows, Mac, and Linux) and provides core NuGet features such as installing, restoring, and publishing packages. `dotnet` provides direct integration with .NET Core project files (such as `.csproj`), which is helpful in most scenarios. `dotnet` is also built directly for each platform and does not require you to install Mono. Installation: @@ -45,7 +45,7 @@ For more information, see [.NET Core command-line interface tools](/dotnet/core/ ### nuget.exe CLI -The NuGet CLI, `nuget.exe`, is the command-line utility for Windows that provides all NuGet capabilities; it can also be run on Mac OSX and Linux using Mono with some limitations. Unlike `dotnet`, the `nuget.exe` CLI does not affect project files. +The NuGet CLI, `nuget.exe`, is the command-line utility for Windows that provides all NuGet capabilities; it can also be run on Mac OSX and Linux using [Mono](http://www.mono-project.com/docs/getting-started/install/) with some limitations. Unlike `dotnet`, the `nuget.exe` CLI does not affect project files and does not update `packages.config` when installing packages. Installation: @@ -55,18 +55,19 @@ Installation: > Use `nuget update -self` to update an existing nuget.exe to the latest version. > [!Note] -> The latest recommended NuGet CLI is always available at `https://dist.nuget.org/win-x86-commandline/latest/nuget.exe`. For compatibility purposes with older continuous integration systems, a previous URL, `https://nuget.org/nuget.exe` currently provides the 2.8.6 CLI tool. [This is deprecated](https://github.com/NuGet/NuGetGallery/issues/5381). +> The latest recommended NuGet CLI is always available at `https://dist.nuget.org/win-x86-commandline/latest/nuget.exe`. For compatibility purposes with older continuous integration systems, a previous URL, `https://nuget.org/nuget.exe` currently provides the [deprecated 2.8.6 CLI tool](https://github.com/NuGet/NuGetGallery/issues/5381). ## Visual Studio - Visual Studio Code: NuGet capabilities are available through marketplace extensions, or use the `dotnet.exe` or `nuget.exe` CLI tools. + - Visual Studio for Mac: certain NuGet capabilities are built in directly. See [Including a NuGet package in your project](/visualstudio/mac/nuget-walkthrough) for a walkthrough. For other capabilities, use the `dotnet.exe` or `nuget.exe` CLI tools. - Visual Studio on Windows: The **NuGet Package Manager** is included with Visual Studio 2012 and later. The Package Manager provides the [Package Manager UI](tools/package-manager-ui.md) and the [Package Manager Console](tools/package-manager-console.md), through which you can run most NuGet operations. - The Visual Studio 2017 installer includes the NuGet Package Manager with any workload that employs .NET. To install separately, or to verify that the Package Manager is installed, run the Visual Studio 2017 installer and check the option under **Individual Components > Code tools > NuGet package manager**. - - The Package Manager UI and Console are unique to Visual Studio on Windows. They are not available on Visual Studio for Mac at present. + - The Package Manager UI and Console are unique to Visual Studio on Windows. They are not presently available on Visual Studio for Mac. - Visual Studio does not automatically include the `nuget.exe` CLI, which must be installed separately as described earlier. - - Package Manager Console commands work only within Visual Studio on Windows and not within other PowerShell environments. + - Package Manager Console commands work only within Visual Studio on Windows and do not work within other PowerShell environments. - For Visual Studio 2010 and earlier, install the "NuGet Package Manager for Visual Studio" extension. - NuGet Extensions for Visual Studio 2013 and 2015 can also be downloaded from [https://dist.nuget.org/index.html](https://dist.nuget.org/index.html). - If you'd like to preview upcoming NuGet features, install the [Visual Studio 2017 Preview](https://www.visualstudio.com/vs/preview/), which works side-by-side with stable releases of Visual Studio. To report problems or share ideas for previews, open an issue on the [NuGet GitHub repository](https://github.com/Nuget/Home/issues). @@ -85,7 +86,7 @@ Installation: | Create packages(4) | ✔ | ✔ | ✔(5) | ✔ | | | Publish packages | ✔(1) | ✔ | ✔ | ✔ | | | Replicate packages | | ✔ | ✔ | | | -| Manage the NuGet cache | ✔ | ✔ | ✔ | | | +| Manage *global-package* and cache folders | ✔ | ✔ | ✔ | | | | Manage NuGet configuration | | ✔ | ✔ | | | (1) Packages on nuget.org only diff --git a/docs/quickstart/install-and-use-a-package-in-visual-studio.md b/docs/quickstart/install-and-use-a-package-in-visual-studio.md index 26f3d3f28..f1ed305bc 100644 --- a/docs/quickstart/install-and-use-a-package-in-visual-studio.md +++ b/docs/quickstart/install-and-use-a-package-in-visual-studio.md @@ -3,7 +3,7 @@ title: Introductory Guide to Using NuGet Packages from within Visual Studio | Mi author: kraigb ms.author: kraigb manager: ghogen -ms.date: 01/23/2018 +ms.date: 03/16/2018 ms.topic: get-started-article ms.prod: nuget ms.technology: null @@ -16,7 +16,7 @@ ms.reviewer: # Install and use a package in Visual Studio -NuGet packages contain reusable code that other developers make available to you for use in your projects. See [What is NuGet?](../What-is-NuGet.md) for background. Packages are installed into a Visual Studio project using the Package Manager UI or the Package Manager Console, as described in this article for the popular [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) package and a Universal Windows Platform (UWP) project. +NuGet packages contain reusable code that other developers make available to you for use in your projects. See [What is NuGet?](../What-is-NuGet.md) for background. Packages are installed into a Visual Studio project using the Package Manager UI or the Package Manager Console. This article demonstrates the process using the popular [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) package and a Universal Windows Platform (UWP) project. The same process applies to any other .NET or .NET Core project. Once installed, refer to the package in code with `using ` where \ is specific to the package you're using. Once the reference is made, you can call the package through its API. @@ -32,7 +32,9 @@ You can install the 2017 Community edition for free from [visualstudio.com](http ## Create a project -NuGet packages can be installed into a .NET project of some kind. For this walkthrough, you use a simple Universal Windows (UWP) app. Create a project in Visual Studio using **File > New Project...** and selecting the **Windows Universal > Blank App (Universal Windows)**. Accept the default values for Target Version and Minimum Version when prompted. +NuGet packages can be installed into any .NET project, provided that the package supports the same target framework as the project. + +For this walkthrough, use a simple Universal Windows (UWP) app. Create a project in Visual Studio using **File > New Project...** and selecting the **Windows Universal > Blank App (Universal Windows)**. Accept the default values for Target Version and Minimum Version when prompted. ## Add the Newtonsoft.Json NuGet package @@ -52,7 +54,7 @@ To install the package, you can use either the Package Manager UI or the Package 1. (Visual Studio 2017) If prompted to select a package management format, select **PackageReference in project file**: - ![Selecting a package reference format](media/QS_Use-03b-SelectFormat.png) + ![Selecting a package management format](media/QS_Use-03b-SelectFormat.png) 1. If prompted to review changes, select **OK**. 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 510d463e0..14ad526e6 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 @@ -18,7 +18,7 @@ ms.reviewer: NuGet packages contain reusable code that other developers make available to you for use in your projects. See [What is NuGet?](../What-is-NuGet.md) for background. Packages are installed into a .NET Core project using the `dotnet add package` command as described in this article for the popular [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) package. -Once installed, refer to the package in code with `using ` where \ is specific to the package you're using. Once the reference is made, you can call the package through its API. +Once installed, refer to the package in code with `using ` where \ is specific to the package you're using. You can then use the package's API. > [!Tip] > **Start with nuget.org**: Browsing nuget.org is how .NET developers typically find components they can reuse in their own applications. You can search nuget.org directly or find and install packages within Visual Studio as shown in this article. diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index e64ba4c8a..e3d7a6e23 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -233,7 +233,7 @@ Additional restore settings may come from MSBuild properties in the project file | RestorePackagesPath | User packages folder path. | | RestoreDisableParallel | Limit downloads to one at a time. | | RestoreConfigFile | Path to a `Nuget.Config` file to apply. | -| RestoreNoCache | If true, avoids using the web cache. | +| RestoreNoCache | If true, avoids using cached packages. See [Managing the global packages and cache folders](../consume-packages/managing-the-global-packages-and-cache-folders.md). | | RestoreIgnoreFailedSources | If true, ignores failing or missing package sources. | | RestoreTaskAssemblyFile | Path to `NuGet.Build.Tasks.dll`. | | RestoreGraphProjectInput | Semicolon-delimited list of projects to restore, which should contain absolute paths. | diff --git a/docs/release-notes/Known-Issues.md b/docs/release-notes/Known-Issues.md index 8f15f6572..da114bf32 100644 --- a/docs/release-notes/Known-Issues.md +++ b/docs/release-notes/Known-Issues.md @@ -227,7 +227,7 @@ Windows Phone Tools does not have support for the Visual Studio Extension Manage ## Changing the capitalization of NuGet package IDs breaks package restore -As discussed at length on [this GitHub issue](https://github.com/Particular/NServiceBus/issues/1271#issuecomment-20865932), changing the capitalization of NuGet packages can be done by NuGet support, but causes complications during package restore for users who have existing, differently-cased, packages in their local package cache. We recommend only requesting a case change when you have a way to communicate with existing users of your package about the break that may occur to their build-time package restore. +As discussed at length on [this GitHub issue](https://github.com/Particular/NServiceBus/issues/1271#issuecomment-20865932), changing the capitalization of NuGet packages can be done by NuGet support, but causes complications during package restore for users who have existing, differently-cased, packages in their *global-packages* folder. We recommend only requesting a case change when you have a way to communicate with existing users of your package about the break that may occur to their build-time package restore. ## Reporting issues 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 87afb697a..63a49bef0 100644 --- a/docs/release-notes/NuGet-2.6.1-for-WebMatrix.md +++ b/docs/release-notes/NuGet-2.6.1-for-WebMatrix.md @@ -7,7 +7,6 @@ ms.date: 11/11/2016 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: 119ea65b-b38b-4a8c-a4ed-6ea06f1aad09 description: Release notes for NuGet 2.6.1 for WebMatrix including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.6.1 for WebMatrix release notes, bug fixes, known issues, added features, DCRs ms.reviewer: diff --git a/docs/release-notes/NuGet-2.8.6.md b/docs/release-notes/NuGet-2.8.6.md index fba44ac2e..fccf430a0 100644 --- a/docs/release-notes/NuGet-2.8.6.md +++ b/docs/release-notes/NuGet-2.8.6.md @@ -7,7 +7,6 @@ ms.date: 11/11/2016 ms.topic: article ms.prod: nuget ms.technology: null -ms.assetid: 920c551c-18a7-40f4-a32b-ce84de6ea766 description: Release notes for NuGet 2.8.6 including known issues, bug fixes, added features, and DCRs. keywords: NuGet 2.8.6 release notes, bug fixes, known issues, added features, DCRs ms.reviewer: diff --git a/docs/tools/Package-Manager-Console.md b/docs/tools/Package-Manager-Console.md index f408a8d81..78d583431 100644 --- a/docs/tools/Package-Manager-Console.md +++ b/docs/tools/Package-Manager-Console.md @@ -78,19 +78,10 @@ Install-Package Elmah -ProjectName UtilitiesLib See [Install-Package](../tools/ps-ref-install-package.md). -Installing a package performs the following actions: +Installing a package in the console performs the same steps as described on [What happens when a package is installed](../consume-packages/ways-to-install-a-package.md#what-happens-when-a-package-is-installed.md), with the following additions: -- Displays applicable license terms in the console window with implied agreement. If you do not agree to the terms, you should uninstall the package immediately. -- Adds a reference to the project in whatever reference format is in use. References subsequently appear in Solution Explorer and the applicable reference format file. Note, however, that with PackageReference, you need to save the project to see the changes in the project file directly. -- Caches the package: - - PackageReference: package is cached at `%USERPROFILE%\.nuget\packages` and the lock file i.e. `project.assets.json` is updated. - - `packages.config`: creates a `packages` folder at the solution root and copies the package files into a subfolder within it. The `package.config` file is updated. -- Updates `app.config` and/or `web.config` if the package uses [source and config file transformations](../create-packages/source-and-config-file-transformations.md). -- Installs any dependencies if not already present in the project. This might update package versions in the process, as described in [Dependency Resolution](../consume-packages/dependency-resolution.md). -- Displays the package's readme file, if available, in a Visual Studio window. - -> [!Tip] -> One of the primary advantages of installing packages with the `Install-Package` command in the console is that adds a reference to the project just as if you used the Package Manager UI. In contrast, the `nuget install` CLI command only downloads the package and does not automatically add a reference. +- The Console displays applicable license terms in its window with implied agreement. If you do not agree to the terms, you should uninstall the package immediately. +- Also a reference to the package is added to the project file and appears in **Solution Explorer** under the **References** node, you need to save the project to see the changes in the project file directly. ## Uninstalling a package @@ -109,13 +100,10 @@ See [Uninstall-Package](../tools/ps-ref-uninstall-package.md). Use [Get-Package] Uninstalling a package performs the following actions: -- Removes references to the package from the project (and whatever reference format is in use). References no longer appear in Solution Explorer. (You might need to rebuild the project to see it removed from the **Bin** folder.) +- Removes references to the package from the project (and whatever management format is in use). References no longer appear in **Solution Explorer**. (You might need to rebuild the project to see it removed from the **Bin** folder.) - Reverses any changes made to `app.config` or `web.config` when the package was installed. - Removes previously-installed dependencies if no remaining packages use those dependencies. -> [!Tip] -> Like `Install-Package`, the `Uninstall-Package` command has the benefit of managing references in the project, unlike the `nuget uninstall` CLI command. - ## Updating a package ```ps diff --git a/docs/tools/cli-ref-environment-variables.md b/docs/tools/cli-ref-environment-variables.md index 743ee7469..c58b6f979 100644 --- a/docs/tools/cli-ref-environment-variables.md +++ b/docs/tools/cli-ref-environment-variables.md @@ -27,9 +27,9 @@ In general, options specified directly on the command line or in NuGet configura | EnableNuGetPackageRestore | Flag for if NuGet should implicitly grant consent if that's required by package on restore. | Specified flag is specified | as *true* or *1*, any other value treated as flag not set. | | NUGET_EXE_NO_PROMPT | Prevents the exe for prompting for credentials.| Any value except null or empty string will be treated as this flag set/true. | FORCE_NUGET_EXE_INTERACTIVE | Global environment variable to force interactive mode. | Any value except null or empty string will be treated as this flag set/true. | -| NUGET_PACKAGES | Path to where packages are stored / cached. | Specified as absolute path. | +| NUGET_PACKAGES | Path to use for the *global-packages* folder as described on [Managing the global packages and cache folders](managing-the-global-packages-and-cache-folders.md). | Specified as absolute path. | | NUGET_FALLBACK_PACKAGES | Global fallback packages folders. | Absolute folder paths separated by semicolon (;). | -| NUGET_HTTP_CACHE_PATH | HTTP cache folder. | Specified as absolute path. | +| NUGET_HTTP_CACHE_PATH | Path to use for the *http-cache* folder as described on [Managing the global packages and cache folders](managing-the-global-packages-and-cache-folders.md). | Specified as absolute path. | | NUGET_PERSIST_DG | Flag indicating if dg files (data collected from MSBuild) should be persisted. | Specified as *true* or *false* (default), if NUGET_PERSIST_DG_PATH not set will be stored to temporary directory (NuGetScratch folder in current environment temp directory). | | NUGET_PERSIST_DG_PATH | Path to persist dg files. | Specified as absolute path, this option is only used when *NUGET_PERSIST_DG* is set to true. | | NUGET_RESTORE_MSBUILD_ARGS | Sets additional MSBuild arguments. | diff --git a/docs/tools/cli-ref-install.md b/docs/tools/cli-ref-install.md index 0897856ff..9f6bbd098 100644 --- a/docs/tools/cli-ref-install.md +++ b/docs/tools/cli-ref-install.md @@ -51,7 +51,7 @@ where `` names the package to install (using the latest version), or | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Framework | *(4.4+)* Target framework used for selecting dependencies. Defaults to 'Any' if not specified. | | Help | Displays help information for the command. | -| NoCache | Prevents NuGet from using packages from local machine caches. | +| NoCache | Prevents NuGet from using cached packages. See [Managing the global packages and cache folders](../consume-packages/managing-the-global-packages-and-cache-folders.md). | | NonInteractive | Suppresses prompts for user input or confirmations. | | OutputDirectory | Specifies the folder in which packages are installed. If no folder is specified, the current folder is used. | | PackageSaveMode | Specifies the types of files to save after package installation: one of `nuspec`, `nupkg`, or `nuspec;nupkg`. | diff --git a/docs/tools/cli-ref-locals.md b/docs/tools/cli-ref-locals.md index 7f437a85a..e2dfb0104 100644 --- a/docs/tools/cli-ref-locals.md +++ b/docs/tools/cli-ref-locals.md @@ -3,7 +3,7 @@ title: NuGet CLI locals command | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 01/18/2018 +ms.date: 03/19/2018 ms.topic: reference ms.prod: nuget ms.technology: null @@ -18,25 +18,25 @@ ms.reviewer: **Applies to:** package consumption • **Supported versions:** 3.3+ -Clears or lists local NuGet resources such as the http-request cache, packages cache, and the machine-wide global packages folder. The `locals` command can also be used to display a list of those locations. For more information, see [Managing the NuGet Cache](../consume-packages/managing-the-nuget-cache.md). +Clears or lists local NuGet resources such as the *http-cache*, *global-packages* folder, and the temp folder. The `locals` command can also be used to display a list of those locations. For more information, see [Managing the global packages and cache folders](../consume-packages/managing-the-global-packages-and-cache-folders.md). ## Usage ```cli -nuget locals [options] +nuget locals [options] ``` -where `` is one of `all`, `http-cache`, `packages-cache`, `global-packages`, and `temp` *(3.4+)*. +where `` is one of `all`, `http-cache`, `packages-cache` *(3.5 and earlier)*, `global-packages`, and `temp` *(3.4+)*. ## Options | Option | Description | | --- | --- | -| Clear | Clears the specified cache. | +| Clear | Clears the specified folder. | | ConfigFile | The NuGet configuration file to apply. If not specified, `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) is used.| | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | -| List | Lists the location of the specified cache, or the locations of all caches when used with *all*. | +| List | Lists the location of the specified folder, or the locations of all folders when used with *all*. | | NonInteractive | Suppresses prompts for user input or confirmations. | | Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | @@ -48,3 +48,5 @@ Also see [Environment variables](cli-ref-environment-variables.md) nuget locals all -list nuget locals http-cache -clear ``` + +For additional examples, see [Managing the global packages and cache folders](../consume-packages/managing-the-global-packages-and-cache-folders.md). diff --git a/docs/tools/cli-ref-mirror.md b/docs/tools/cli-ref-mirror.md index 276a1334e..e4aeaa2ba 100644 --- a/docs/tools/cli-ref-mirror.md +++ b/docs/tools/cli-ref-mirror.md @@ -41,7 +41,7 @@ If your target repository is on `https://machine/repo` that's running [NuGet.Ser | --- | --- | | ApiKey | The API key for the target repository. If not present, the one specified in the config file is used (`%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux)). | | Help | Displays help information for the command. | -| NoCache | Prevents NuGet from using packages from local machine caches. | +| NoCache | Prevents NuGet from using cached packages. See [Managing the global packages and cache folders](../consume-packages/managing-the-global-packages-and-cache-folders.md). | | Noop | Logs what would be done but does not perform the actions; assumes success for push operations. | | PreRelease | Includes prerelease packages in the mirroring operation. | | Source | A list of package sources to mirror. If no sources are specified, the ones defined in the config file (see ApiKey above) are used, defaulting to nuget.org if none are specified. | diff --git a/docs/tools/cli-ref-restore.md b/docs/tools/cli-ref-restore.md index 578127ae3..9c8f85945 100644 --- a/docs/tools/cli-ref-restore.md +++ b/docs/tools/cli-ref-restore.md @@ -42,7 +42,7 @@ where `` specifies the location of a solution or a `packages.config | Help | Displays help information for the command. | | MSBuildPath | *(4.0+)* Specifies the path of MSBuild to use with the command, taking precedence over `-MSBuildVersion`. | | MSBuildVersion | *(3.2+)* Specifies the version of MSBuild to be used with this command. Supported values are 4, 12, 14, 15. By default the MSBuild in your path is picked, otherwise it defaults to the highest installed version of MSBuild. | -| NoCache | Prevents NuGet from using packages from local machine caches. | +| NoCache | Prevents NuGet from using cached packages. See [Managing the global packages and cache folders](../consume-packages/managing-the-global-packages-and-cache-folders.md). | | NonInteractive | Suppresses prompts for user input or confirmations. | | OutputDirectory | Specifies the folder in which packages are installed. If no folder is specified, the current folder is used. | | PackageSaveMode | Specifies the types of files to save after package installation: one of `nuspec`, `nupkg`, or `nuspec;nupkg`. | diff --git a/docs/tools/dotnet-Commands.md b/docs/tools/dotnet-Commands.md index 45b1ddfb0..ad2db8b5f 100644 --- a/docs/tools/dotnet-Commands.md +++ b/docs/tools/dotnet-Commands.md @@ -25,7 +25,7 @@ For complete information on `dotnet`, see [.NET Core command-line interface (CLI - [**dotnet add package**](/dotnet/core/tools/dotnet-add-package): Adds a package reference to the project file, then runs `dotnet restore` to install the package. - [**dotnet remove package**](/dotnet/core/tools/dotnet-remove-package): Removes a package reference from the project file. - [**dotnet restore**](/dotnet/core/tools/dotnet-restore?tabs=netcore2x): Restores the dependencies and tools of a project. As of NuGet 4.0, this runs the same code as `nuget restore`. -- [**dotnet nuget locals**](/dotnet/core/tools/dotnet-nuget-locals): Clears or lists local NuGet resources such as the http-request cache, the temporary cache, and the machine-wide global packages folder. +- [**dotnet nuget locals**](/dotnet/core/tools/dotnet-nuget-locals): Lists locations of the *global-packages*, *http-cache*, and *temp* folders and clears the contents of those folders. ## Package creation diff --git a/docs/tools/nuget-exe-CLI-Reference.md b/docs/tools/nuget-exe-CLI-Reference.md index 78172a69a..963dc0083 100644 --- a/docs/tools/nuget-exe-CLI-Reference.md +++ b/docs/tools/nuget-exe-CLI-Reference.md @@ -47,8 +47,8 @@ Available commands and applicability to package creation, package consumption, a | [push](cli-ref-push.md) | Publishing | All | Publishes a package to a package source. | | [config](cli-ref-config.md) | All | All | Gets or sets NuGet configuration values. | | [help or ?](cli-ref-help.md) | All | All | Displays help information or help for a command. | -| [locals](cli-ref-locals.md) | Consumption | 3.3+ | Clears or lists packages in various caches or the global packages folder, or identifies those folders. | -| [restore](cli-ref-restore.md) | Consumption | 2.7+ | Restores all packages referenced by the package reference format in use. When running on Mono, restoring packages using the PackageReference format is not supported. | +| [locals](cli-ref-locals.md) | Consumption | 3.3+ | Lists locations of the *global-packages*, *http-cache*, and *temp* folders and clears the contents of those folders. | +| [restore](cli-ref-restore.md) | Consumption | 2.7+ | Restores all packages referenced by the package management format in use. When running on Mono, restoring packages using the PackageReference format is not supported. | | [setapikey](cli-ref-setapikey.md) | Publishing, Consumption | All | Saves an API key for a given package source when that package source requires a key for access. | | [spec](cli-ref-spec.md) | Creation | All | Generates a `.nuspec` file, using tokens if generating the file from a Visual Studio project. | diff --git a/docs/tools/ps-ref-install-package.md b/docs/tools/ps-ref-install-package.md index 3f603fcb6..9f54aa6f0 100644 --- a/docs/tools/ps-ref-install-package.md +++ b/docs/tools/ps-ref-install-package.md @@ -7,7 +7,6 @@ ms.date: 06/01/2017 ms.topic: reference ms.prod: nuget ms.technology: null -ms.assetid: 879db0ef-6b72-4a4a-bb68-f9e3a00f64b8 description: Reference for Install-Package PowerShell command in the NuGet Package Manager Console in Visual Studio. keywords: NuGet package manager console, NuGet Powershell commands, NuGet Powershell reference, Install-Package ms.reviewer: diff --git a/docs/what-is-nuget.md b/docs/what-is-nuget.md index b7e98f224..c89d27b2b 100644 --- a/docs/what-is-nuget.md +++ b/docs/what-is-nuget.md @@ -3,12 +3,12 @@ title: What is NuGet and what does it do? | Microsoft Docs author: kraigb ms.author: kraigb manager: ghogen -ms.date: 01/10/2018 +ms.date: 03/16/2018 ms.topic: hero-article ms.prod: nuget ms.technology: null description: A comprehensive introduction to what NuGet is and does -keywords: NuGet package manager, consumption, package creation, package hosting +keywords: NuGet package manager, consumption, package creation, package hosting, .NET packages, .NET Core packages ms.reviewer: - karann-msft - unniravindranathan @@ -18,15 +18,15 @@ ms.reviewer: An essential tool for any modern development platform is a mechanism through which developers can create, share, and consume useful code. Often such code is bundled into "packages" that contain compiled code (as DLLs) along with other content needed in the projects that consume these packages. -For .NET, the Microsoft-supported mechanism for sharing code is **NuGet**, which defines how packages for .NET are created, hosted, and consumed, and provides the tools for each of those roles. +For .NET (including .NET Core), the Microsoft-supported mechanism for sharing code is **NuGet**, which defines how packages for .NET are created, hosted, and consumed, and provides the tools for each of those roles. Put simply, a NuGet package is a single ZIP file with the `.nupkg` extension that contains compiled code (DLLs), other files related to that code, and a descriptive manifest that includes information like the package's version number. Developers with code to share create packages and publish them to a public or private host. Package consumers obtain those packages from suitable hosts, add them to their projects, and then call a package's functionality in their project code. NuGet itself then handles all of the intermediate details. -Because NuGet supports private hosts alongside the public nuget.org host, you can use NuGet packages to share code that's exclusive to an organization or a workgroup. You can also use NuGet packages as a convenient way to factor your own code for use in nothing but your own projects. In short, a NuGet package is a shareable unit of code, but does not require nor imply any particular means of sharing. +Because NuGet supports private hosts alongside the public nuget.org host, you can use NuGet packages to share code that's exclusive to an organization or a work group. You can also use NuGet packages as a convenient way to factor your own code for use in nothing but your own projects. In short, a NuGet package is a shareable unit of code, but does not require nor imply any particular means of sharing. ## The flow of packages between creators, hosts, and consumers -In its role as a public host, NuGet itself maintains the central repository of over 100,000 unique packages at [nuget.org](https://www.nuget.org). These packages are employed by millions of .NET developers every day. NuGet also enables you to host packages privately in the cloud (such as on Visual Studio Team Services), on a private network, or even on just your local file system. By doing so, those packages are available to only those developers that have access to the host, giving you the ability to make packages available to a specific group of consumers. The options are explained on [Hosting your own NuGet feeds](hosting-packages/overview.md). Through configuration options, you can also control exactly which hosts can be accessed by any given computer, thereby ensuring that packages are obtained from specific sources rather than a public repository like nuget.org. +In its role as a public host, NuGet itself maintains the central repository of over 100,000 unique packages at [nuget.org](https://www.nuget.org). These packages are employed by millions of .NET/.NET Core developers every day. NuGet also enables you to host packages privately in the cloud (such as on Visual Studio Team Services), on a private network, or even on just your local file system. By doing so, those packages are available to only those developers that have access to the host, giving you the ability to make packages available to a specific group of consumers. The options are explained on [Hosting your own NuGet feeds](hosting-packages/overview.md). Through configuration options, you can also control exactly which hosts can be accessed by any given computer, thereby ensuring that packages are obtained from specific sources rather than a public repository like nuget.org. Whatever its nature, a host serves as the point of connection between package *creators* and package *consumers*. Creators build useful NuGet packages and publish them to a host. Consumers then search for useful and compatible packages on accessible hosts, downloading and including those packages in their projects. Once installed in a project, the packages' APIs are available to the rest of the project code. @@ -34,12 +34,12 @@ Whatever its nature, a host serves as the point of connection between package *c ## Package targeting compatibility -A "compatible" package means that it contains assemblies built for at least one target .NET framework that's compatible with the consuming project's target framework. Developers can create packages that are specific to one framework, as with UWP controls, or they can support a wider range of targets. To maximize a package's compatibility, developers target [.NET Standard](/dotnet/standard/net-standard), which all .NET projects can consume. This is the most efficient means for both creators and consumers, as a single package (usually containing a single assembly) works for all consuming projects. +A "compatible" package means that it contains assemblies built for at least one target .NET framework that's compatible with the consuming project's target framework. Developers can create packages that are specific to one framework, as with UWP controls, or they can support a wider range of targets. To maximize a package's compatibility, developers target [.NET Standard](/dotnet/standard/net-standard), which all .NET and .NET Core projects can consume. This is the most efficient means for both creators and consumers, as a single package (usually containing a single assembly) works for all consuming projects. Package developers who require APIs outside of .NET Standard, on the other hand, create separate assemblies for the different target frameworks they want to support and include all of those assemblies in the same package (which is called "multi-targeting"). When a consumer installs such a package, NuGet extracts only those assemblies that are needed by the project. This minimizes the package's footprint in the final application and/or assemblies produced by that project. A multi-targeting package is, of course, more difficult for its creator to maintain. > [!Note] -> Targeting .NET Standard supercedes the previous approach of using various "portable class library" (PCL) targets. This documentation therefore focuses on creating packages for .NET Standard. +> Targeting .NET Standard supercedes the previous approach of using various portable class library (PCL) targets. This documentation therefore focuses on creating packages for .NET Standard. ## NuGet tools @@ -72,7 +72,7 @@ For more details on how NuGet performs this service, see [Dependency resolution] ## Tracking references and restoring packages -Because projects can easily move between developer computers, source control repositories, build servers, and so forth, it's highly impractical to keep binary assemblies from NuGet packages directly bound to a project. Doing so would make each copy of the project unnecessarily bloated (and thereby waste space in source control repositories). It would also make it very difficult to update package binaries to newer versions as updates would have to be applied across all copies of the project. +Because projects can easily move between developer computers, source control repositories, build servers, and so forth, it's highly impractical to keep the binary assemblies of NuGet packages directly bound to a project. Doing so would make each copy of the project unnecessarily bloated (and thereby waste space in source control repositories). It would also make it very difficult to update package binaries to newer versions as updates would have to be applied across all copies of the project. NuGet instead maintains a simple reference list of the packages upon which a project depends, including both top-level and down-level dependencies. That is, whenever you install a package from some host into a project, NuGet records the package identifier and version number in the reference list. (Uninstalling a package, of course, removes it from the list.) NuGet then provides a means to restore all referenced packages upon request, as described on [Package restore](consume-packages/package-restore.md). @@ -80,23 +80,30 @@ NuGet instead maintains a simple reference list of the packages upon which a pro With only the reference list, NuGet can then reinstall—that is, *restore*—all of those packages from public and/or private hosts at any later time. When committing a project to source control, or sharing it in some other way, you include only the reference list and exclude any package binaries (see [Packages and source control](consume-packages/packages-and-source-control.md).) -The computer that receives a project, such as a build server obtaining a copy of the project as part of an automated deployment system, simply asks NuGet to restore dependencies whenever they're needed. Build systems like Visual Studio Team Services provide "NuGet restore" steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository), they can invoke a command like `nuget restore` (NuGet CLI), `dotnet restore` (dotnet CLI), or `Install-Package` (Package Manager Console) to obtain all the necessary packages. Visual Studio, for its part, automatically restores packages when building a project. +The computer that receives a project, such as a build server obtaining a copy of the project as part of an automated deployment system, simply asks NuGet to restore dependencies whenever they're needed. Build systems like Visual Studio Team Services provide "NuGet restore" steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository), they can invoke command like `nuget restore` (NuGet CLI), `dotnet restore` (dotnet CLI), or `Install-Package` (Package Manager Console) to obtain all the necessary packages. Visual Studio, for its part, automatically restores packages when building a project (provided that automatic restore is enabled, as described on [Package restore](consume-packages/package-restore.md)). Clearly, then, NuGet's primary role where developers are concerned is maintaining that reference list on behalf of your project and providing the means to efficiently restore (and update) those referenced packages. This list is maintained in one of two *package management formats*, as they're called: -- [`packages.config`](reference/packages-config.md): *(NuGet 1.0+)* An XML file that maintains a flat list of all dependencies in the project, including the dependencies of other installed packages. -- [PackageReference](consume-packages/package-references-in-project-files.md) (or "package references in project files") | *(NuGet 4.0+)* Maintains a list of a project's top-level dependencies directly within the project file, so no separate file is needed. An associated file, `project.assets.json`, is dynamically generated to manage the overall dependency graph. +- [`packages.config`](reference/packages-config.md): *(NuGet 1.0+)* An XML file that maintains a flat list of all dependencies in the project, including the dependencies of other installed packages. Installed or restored packages are stored in a `packages` folder. -Which package management format is employed in any given project depends on the project type, and the available version of NuGet (and/or Visual Studio). To check what format is being used, simply look for `packages.config` in the project root after installing your first package. If you don't have that file, look in the project file directly for a <PackageReference>element. +- [PackageReference](consume-packages/package-references-in-project-files.md) (or "package references in project files") | *(NuGet 4.0+)* Maintains a list of a project's top-level dependencies directly within the project file, so no separate file is needed. An associated file, `project.assets.json`, is dynamically generated to manage the overall dependency graph of the packages that a project uses along with all down-level dependencies. PackageReference is always used by .NET Core projects. + +Which package management format is employed in any given project depends on the project type, and the available version of NuGet (and/or Visual Studio). To check what format is being used, simply look for `packages.config` in the project root after installing your first package. If you don't have that file, look in the project file directly for a \ element. + +When you have a choice, we recommend using PackageReference. `packages.config` is maintained for legacy purposes and is no longer under active development. + +> [!Tip] +> Various `nuget.exe` CLI commands, like `nuget install`, do not automatically add the package to the reference list. The list is updated when installing a package with the Visual Studio Package Manager (UI or Console), and with `dotnet.exe` CLI. ## What else does NuGet do? So far you've learned the following characteristics of NuGet: + - NuGet provides the central nuget.org repository with support for private hosting. - NuGet provides the tools developers need for creating, publishing, and consuming packages. - Most importantly, NuGet maintains a reference list of packages used in a project and the ability to restore and update those packages from that list. -To make these processes work efficiently, NuGet does some behind-the-scenes optimizations. Most notably, NuGet manages both computer-wide and project-specific package caches to shortcut installation and reinstallation. Where the computer-wide cache is concerned, any package that you download and install in a project is stored in the cache, such that installing the same package in another project doesn't incur another download. This is clearly very helpful when you're frequently restoring a larger number of packages, as on a build server. For more details on the mechanism and how to work with it, see [Managing the NuGet cache](consume-packages/Managing-the-Nuget-Cache.md). +To make these processes work efficiently, NuGet does some behind-the-scenes optimizations. Most notably, NuGet manages a package cache and a global packages folder to shortcut installation and reinstallation. The cache avoids downloading a package that's already been installed on the machine. The global packages folder allows multiple projects to share the same installed package, thereby reducing NuGet's overall footprint on the computer. The cache and global packages folder are also very helpful when you're frequently restoring a larger number of packages, as on a build server. For more details on these mechanisms, see [Managing the global packages and cache folders](consume-packages/managing-the-global-packages-and-cache-folders.md). Within an individual project, NuGet manages the overall dependency graph, which again includes resolving multiple references to different versions of the same package. It's quite common that a project takes a dependency on one or more packages that themselves have the same dependencies. Some of the most useful utility packages on nuget.org are employed by many other packages. In the entire dependency graph, then, you could easily have ten different references to different versions of the same package. To avoid bringing multiple versions of that package into the application itself, NuGet sorts out which single version can be used by all consumers. (For more information, see [Dependency Resolution](consume-packages/dependency-resolution.md).) From d1e4398f4c7fdb0d15c46b8591cb0644f38cb463 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 19 Mar 2018 11:28:23 -0700 Subject: [PATCH 0651/2943] Clarify project.assets.json language --- docs/reference/msbuild-targets.md | 2 +- docs/what-is-nuget.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index e3d7a6e23..a4e9510c0 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -261,7 +261,7 @@ Restore creates the following files in the build `obj` folder: | File | Description | |--------|--------| -| `project.assets.json` | Previously `project.lock.json` | +| `project.assets.json` | Contains the dependency graph of all package references. | | `{projectName}.projectFileExtension.nuget.g.props` | References to MSBuild props contained in packages | | `{projectName}.projectFileExtension.nuget.g.targets` | References to MSBuild targets contained in packages | diff --git a/docs/what-is-nuget.md b/docs/what-is-nuget.md index c89d27b2b..ea018bdb2 100644 --- a/docs/what-is-nuget.md +++ b/docs/what-is-nuget.md @@ -86,7 +86,7 @@ Clearly, then, NuGet's primary role where developers are concerned is maintainin - [`packages.config`](reference/packages-config.md): *(NuGet 1.0+)* An XML file that maintains a flat list of all dependencies in the project, including the dependencies of other installed packages. Installed or restored packages are stored in a `packages` folder. -- [PackageReference](consume-packages/package-references-in-project-files.md) (or "package references in project files") | *(NuGet 4.0+)* Maintains a list of a project's top-level dependencies directly within the project file, so no separate file is needed. An associated file, `project.assets.json`, is dynamically generated to manage the overall dependency graph of the packages that a project uses along with all down-level dependencies. PackageReference is always used by .NET Core projects. +- [PackageReference](consume-packages/package-references-in-project-files.md) (or "package references in project files") | *(NuGet 4.0+)* Maintains a list of a project's top-level dependencies directly within the project file, so no separate file is needed. An associated file, `obj/project.assets.json`, is dynamically generated to manage the overall dependency graph of the packages that a project uses along with all down-level dependencies. PackageReference is always used by .NET Core projects. Which package management format is employed in any given project depends on the project type, and the available version of NuGet (and/or Visual Studio). To check what format is being used, simply look for `packages.config` in the project root after installing your first package. If you don't have that file, look in the project file directly for a \ element. From 784960cddc250764770376e18e83d91ec4dc267d Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 19 Mar 2018 11:32:37 -0700 Subject: [PATCH 0652/2943] Environment variable precedence https://github.com/NuGet/docs.microsoft.com-nuget/issues/578 --- .../managing-the-global-packages-and-cache-folders.md | 4 ++-- docs/tools/cli-ref-environment-variables.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) 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 875ade220..c8359b8f7 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 @@ -20,8 +20,8 @@ Whenever you install, update, or restore a package, NuGet manages packages and p | Name | Location (per user) | Description | | --- | --- | --- | -| global-packages | `%userprofile%\.nuget\packages` (Windows)
    `~/..nuget/packages` (Mac/Linux) | 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 format always use packages directly from this folder. When using the `packages.config`, packages are installed to the *global-packages* folder, then copied into the project's `packages` folder. | -| http-cache | `%localappdata%\NuGet\v3-cache` (Windows)
    `~/.local/share/NuGet/v3-cache` (Mac/Linux) | 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 is not used by the `nuget.exe` tool. | +| global-packages | `%userprofile%\.nuget\packages` (Windows)
    `~/..nuget/packages` (Mac/Linux)
    Override using the NUGET_PACKAGES environment variable. | 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 format always use packages directly from this folder. When using the `packages.config`, packages are installed to the *global-packages* folder, then copied into the project's `packages` folder. | +| http-cache | `%localappdata%\NuGet\v3-cache` (Windows)
    `~/.local/share/NuGet/v3-cache` (Mac/Linux)
    Override using the NUGET_HTTP_CACHE_PATH environment variable. | 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 is not used by the `nuget.exe` tool. | | temp | `%TEMP%\NuGetScratch` (Windows)
    `/tmp/NuGetScratch` (Mac/Linux) | A folder where NuGet stores temporary files during its various operations. | > [!Note] diff --git a/docs/tools/cli-ref-environment-variables.md b/docs/tools/cli-ref-environment-variables.md index c58b6f979..8a62cfef9 100644 --- a/docs/tools/cli-ref-environment-variables.md +++ b/docs/tools/cli-ref-environment-variables.md @@ -16,7 +16,7 @@ ms.reviewer: # NuGet CLI environment variables -The behavior of the nuget.exe CLI can be configured through a number of environment variables, which affect nuget.exe on computer-wide, user, or process levels. +The behavior of the nuget.exe CLI can be configured through a number of environment variables, which affect nuget.exe on computer-wide, user, or process levels. Environment variables always override any settings in `NuGet.Config` files, allowing build servers to change appropriate settings without modifying any files. In general, options specified directly on the command line or in NuGet configuration files have precedence, but there are a few exceptions such as *FORCE_NUGET_EXE_INTERACTIVE*. If you find that nuget.exe behaves differently between different computers, an environment variable could be the cause. For example, Azure Web Apps Kudu (used during deployment) has *NUGET_XMLDOC_MODE* set to *skip* to speed up package restore performance and save disk space. From 40c6bef64bd81f5b32f83b0db03e2cb91d8ac8f3 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 19 Mar 2018 11:38:45 -0700 Subject: [PATCH 0653/2943] Addressing https://github.com/NuGet/docs.microsoft.com-nuget/issues/559 --- ...ging-the-global-packages-and-cache-folders.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) 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 c8359b8f7..d364d36b2 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 @@ -97,14 +97,18 @@ In Visual Studio, use the **Tools > NuGet Package Manager > Package Manager Sett ![NuGet option command for clearing caches](media/options-clear-caches.png) -## Errors +## Troubleshooting errors The following errors can occur when using `nuget locals` or `dotnet nuget locals`: -- "Clearing local resources failed: Unable to delete one or more files" -- "The directory is not empty" +- *Error: The process cannot access the file because it is being used by another process* or *Clearing local resources failed: Unable to delete one or more files*: -These errors may indicate the following conditions: + One or more files in the folder are in use by another process; for example, a Visual Studio project is open that refers to packages in the *global-packages* folder. Close those processes and try again. -- You don't have permission to delete files in the cache. Change the folder permissions, if possible, and try again. Otherwise, contact your system administrator. -- One or more files in the cache are in use by another process. Close those processes and try again. +- *Error: Access to the path is denied* or *The directory is not empty*: + + You don't have permission to delete files in the cache. Change the folder permissions, if possible, and try again. Otherwise, contact your system administrator. + +- *Error: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.* + + Shorten the folder names and try again. From 5fa9e7da05b5e28f4dc0df7152fbfc121fb9b1a2 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 19 Mar 2018 11:46:32 -0700 Subject: [PATCH 0654/2943] Lead with dotnet --- ...g-the-global-packages-and-cache-folders.md | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) 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 d364d36b2..faae08a5b 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 @@ -35,60 +35,62 @@ For more information, see [What happens when a package is installed](ways-to-ins ## Viewing folder locations -You can view folder locations using the [nuget locals command](../tools/cli-ref-locals.md): +You can view folder locations using the [dotnet nuget locals command](/dotnet/core/tools/dotnet-nuget-locals): ```cli -# Display locals for all folders: global-packages, cache, and temp -nuget locals all -list +dotnet nuget locals all --list ``` -Typical output (Windows; "user1" is the current username): +Typical output (Mac/Linux; "user1" is the current username): ```output -http-cache: C:\Users\user1\AppData\Local\NuGet\v3-cache -global-packages: C:\Users\user1\.nuget\packages\ -temp: C:\Users\user1\AppData\Local\Temp\NuGetScratch +info : http-cache: /home/user1/.local/share/NuGet/v3-cache +info : global-packages: /home/user1/.nuget/packages/ +info : temp: /tmp/NuGetScratch ``` -To display the location of a single folder, use `http-cache`, `global-packages`, or `temp` instead of `all`. (Also `package-cache` with NuGet 3.5 and earlier.) +To display the location of a single folder, use `http-cache`, `global-packages`, or `temp` instead of `all`. -You can also use the [dotnet nuget locals command](/dotnet/core/tools/dotnet-nuget-locals), which has the same functionality as `nuget locals`: +You also view locations using the [nuget locals command](../tools/cli-ref-locals.md): ```cli -dotnet nuget locals all --list +# Display locals for all folders: global-packages, cache, and temp +nuget locals all -list ``` -Typical output (Mac/Linux; "user1" is the current username): +Typical output (Windows; "user1" is the current username): ```output -info : http-cache: /home/user1/.local/share/NuGet/v3-cache -info : global-packages: /home/user1/.nuget/packages/ -info : temp: /tmp/NuGetScratch +http-cache: C:\Users\user1\AppData\Local\NuGet\v3-cache +global-packages: C:\Users\user1\.nuget\packages\ +temp: C:\Users\user1\AppData\Local\Temp\NuGetScratch ``` +(`package-cache` is used in NuGet 2.x and appears with NuGet 3.5 and earlier.) + ## Clearing local folders -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 (`--clear` or `-c` in dotnet), specifying the folder to clear, or `all` to clear all folders: +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 # Clear the 3.x+ cache (use either command) -nuget locals http-cache -clear dotnet nuget locals http-cache --clear +nuget locals http-cache -clear # Clear the 2.x cache (NuGet CLI 3.5 and earlier only) nuget locals packages-cache -clear # Clear the global packages folder (use either command) -nuget locals global-packages -clear dotnet nuget locals global-packages --clear +nuget locals global-packages -clear # Clear the temporary cache (use either command) -nuget locals temp -clear dotnet nuget locals temp --clear +nuget locals temp -clear # Clear all caches (use either command) -nuget locals all -clear dotnet nuget locals all --clear +nuget locals all -clear ``` Any packages used by projects that are currently open in Visual Studio are not cleared from the *global-packages* folder. From e0894135c1ab198acf99aeb41ce3ff5d7bf90407 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 19 Mar 2018 11:47:29 -0700 Subject: [PATCH 0655/2943] dotnet lead --- .../managing-the-global-packages-and-cache-folders.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 faae08a5b..2259e5413 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 @@ -29,7 +29,7 @@ Whenever you install, update, or restore a package, NuGet manages packages and p By using the cache and *global-packages* folders, NuGet generally avoids downloading packages that already exist on the computer, including the performance of install, update, and restore operations. When using PackageReference, the *global-packages* folder also avoids keeping downloaded packages inside project folders, where thy might be inadvertently added to source control, and reduces NuGet's overall impact on computer storage. -By default, NuGet checks caches before attempting to retrieve packages from online sources, unless you specify the `-NoCache` option with `nuget.exe` commands, or the `--no-cache` option with `dotnet.exe` commands. +By default, NuGet checks caches before attempting to retrieve packages from online sources, unless you specify `--no-cache` with `dotnet.exe` commands or `-NoCache` with `nuget.exe` commands. For more information, see [What happens when a package is installed](ways-to-install-a-package.md#what-happens-when-a-package-is-installed.md). From 212520eab005eb993bae8ebe717b91cd59253e2b Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 19 Mar 2018 11:54:48 -0700 Subject: [PATCH 0656/2943] Directory requirement with nuget restore https://github.com/NuGet/docs.microsoft.com-nuget/issues/623 --- docs/tools/cli-ref-restore.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/tools/cli-ref-restore.md b/docs/tools/cli-ref-restore.md index 9c8f85945..732f97f05 100644 --- a/docs/tools/cli-ref-restore.md +++ b/docs/tools/cli-ref-restore.md @@ -44,13 +44,13 @@ where `` specifies the location of a solution or a `packages.config | MSBuildVersion | *(3.2+)* Specifies the version of MSBuild to be used with this command. Supported values are 4, 12, 14, 15. By default the MSBuild in your path is picked, otherwise it defaults to the highest installed version of MSBuild. | | NoCache | Prevents NuGet from using cached packages. See [Managing the global packages and cache folders](../consume-packages/managing-the-global-packages-and-cache-folders.md). | | NonInteractive | Suppresses prompts for user input or confirmations. | -| OutputDirectory | Specifies the folder in which packages are installed. If no folder is specified, the current folder is used. | +| OutputDirectory | Specifies the folder in which packages are installed. If no folder is specified, the current folder is used. Required when restoring with a `packages.config` file unless `PackagesDirectory` or `SolutionDirectory` is used.| | PackageSaveMode | Specifies the types of files to save after package installation: one of `nuspec`, `nupkg`, or `nuspec;nupkg`. | -| PackagesDirectory | Same as `OutputDirectory`. | +| PackagesDirectory | Same as `OutputDirectory`. Required when restoring with a `packages.config` file unless `OutputDirectory` or `SolutionDirectory` is used. | | Project2ProjectTimeOut | Timeout in seconds for resolving project-to-project references. | | Recursive | *(4.0+)* Restores all references projects for UWP and .NET Core projects. Does not apply to projects using `packages.config`. | | RequireConsent | Verifies that restoring packages is enabled before downloading and installing the packages. For details, see [Package Restore](../consume-packages/package-restore.md). | -| SolutionDirectory | Specifies the solution folder. Not valid when restoring packages for a solution. | +| SolutionDirectory | Specifies the solution folder. Not valid when restoring packages for a solution. Required when restoring with a `packages.config` file unless `PackagesDirectory` or `OutputDirectory` is used. | | Source | Specifies the list of package sources (as URLs) to use for the restore. If omitted, the command uses the sources provided in configuration files, see [Configuring NuGet behavior](../consume-packages/configuring-nuget-behavior.md). | | Verbosity |>Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | From 38aa5d26d08d07c484d4d1d91b3c55439f7fb377 Mon Sep 17 00:00:00 2001 From: Cristina Manu Date: Mon, 19 Mar 2018 12:06:36 -0700 Subject: [PATCH 0657/2943] feedback --- docs/api/throttling.md | 45 +++++++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/docs/api/throttling.md b/docs/api/throttling.md index 0818166c9..d16f9e0a7 100644 --- a/docs/api/throttling.md +++ b/docs/api/throttling.md @@ -1,31 +1,52 @@ -# NuGet API rate limiting - -I order to prevent the extreme overload on NuGet Server resources the NuGet.org service API needs some configurable and enforceable upper limits on acceptable API usage. - -Initial planned throttling limits are based on the maximum load we've seen on these endpoints to date. Upon reaching the maximum allowed requests an error response returns. - +--- +title: NuGet API Rate Limits | Microsoft Docs +author: +- cmanu +ms.author: +- cmanu +manager: skofman +ms.date: 03/20/2018 +ms.topic: reference +ms.prod: nuget +ms.technology: null +description: The NuGet APIs will have enforced rate limits to prevent abuse. +keywords: NuGet API, rate limiting +ms.reviewer: +- skofman +- anangaur +--- + + + +# NuGet API Rate Limits + +The NuGet.org API enforces rate limiting to prevent abuse. Requests that exceed the rate limit return the following error: + + ~~~ { "statusCode": 429, "message": "Rate limit is exceeded. Try again in 56 seconds." } + ~~~ +The following tables list the rate limits for the NuGet.org API. -# V1 OData API +## V1 OData API Api | Throttling Type | Throttling Values | Main use case | V3 APIs support -- | -- | -- | -- | -- -**GET** `/api/v1/Packages` | IP | 1000 / minute | Query NuGet package metadata via v1 OData `Packages` collection | [package search documentation](https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource) -**GET** `/api/v1/Search()?searchTerm=&targetFramework=&includePrerelease=` | IP | 3000 / minute | Search for NuGet packages via v1 Search endpoint | [package search documentation](https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource) +**GET** `/api/v1/Packages` | IP | 1000 / minute | Query NuGet package metadata via v1 OData `Packages` collection | [package search documentation](https://docs.microsoft.com/nuget/api/search-query-service-resource) +**GET** `/api/v1/Search()?searchTerm=&targetFramework=&includePrerelease=` | IP | 3000 / minute | Search for NuGet packages via v1 Search endpoint | [package search documentation](https://docs.microsoft.com/nuget/api/search-query-service-resource) -# V2 OData API +## V2 OData API Api | Throttling Type | Throttling Values | Main use case | V3 APIs support -- | -- | -- | -- | -- -**GET** `/api/v2/Packages` | IP | 20000 / minute | Query NuGet package metadata via v2 OData `Packages` collection | [package search documentation](https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource) +**GET** `/api/v2/Packages` | IP | 20000 / minute | Query NuGet package metadata via v2 OData `Packages` collection | [package search documentation](https://docs.microsoft.com/nuget/api/search-query-service-resource) **GET** `/api/v2/Packages/$count` | IP | 100 / minute | Query NuGet package count via v2 OData `Packages` collection | -# V2 API +## V2 API Api | Throttling Type | Throttling Values | Main use case -- | -- | -- | -- From 006b08cc9817fe764d4a1748f209ce905308ae01 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 19 Mar 2018 12:12:12 -0700 Subject: [PATCH 0658/2943] Adding GeneratePackageOnBuild --- ...e-and-publish-a-package-using-the-dotnet-cli.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) 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 e9a540f80..38e8e2bb0 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 @@ -3,7 +3,7 @@ title: Creating and publishing a NuGet package using the dotnet CLI | Microsoft author: kraigb ms.author: kraigb manager: ghogen -ms.date: 01/24/2018 +ms.date: 03/19/2018 ms.topic: get-started-article ms.prod: nuget ms.technology: null @@ -55,14 +55,14 @@ Every NuGet package needs a manifest that describes the package's contents and d ## Run the pack command -To build a NuGet package (a `.nupkg` file) from the project, run the `dotnet pack` command: +To build a NuGet package (a `.nupkg` file) from the project, run the `dotnet pack` command, which also builds the project automatically: ```cli # Uses the project file in the current folder by default dotnet pack ``` -The output will show the path to the `.nupkg` file: +The output shows the path to the `.nupkg` file: ```output Microsoft (R) Build Engine version 15.5.180.51428 for .NET Core @@ -73,6 +73,14 @@ Copyright (C) Microsoft Corporation. All rights reserved. Successfully created package 'D:\proj\AppLoggerNet\AppLogger\bin\Debug\AppLogger.1.0.0.nupkg'. ``` +### Automatically generate package on build + +To automatically run `dotnet pack` when you run `dotnet build`, add the following line to your project file within ``: + +```xml +true +``` + ## Publish the package Once you have a `.nupkg` file, you publish it to nuget.org using the `dotnet nuget push` command along with an API key acquired from nuget.org. From 7c7d23505754ef11ee074fdb90c77a850e9cf851 Mon Sep 17 00:00:00 2001 From: Kraig Brockschmidt Date: Mon, 19 Mar 2018 14:19:43 -0700 Subject: [PATCH 0659/2943] rename 1 --- ...-publish-a-package-using-the-dotnet-cli.md | 105 ++++++++++ ...ckage-using-visual-studio-net-framework.md | 180 ++++++++++++++++++ ...d-publish-a-package-using-visual-studio.md | 159 ++++++++++++++++ docs/qs1/includes/publish-api-key.md | 11 ++ docs/qs1/includes/publish-dotnet.md | 18 ++ docs/qs1/includes/publish-errors.md | 10 + docs/qs1/includes/publish-manage.md | 17 ++ docs/qs1/includes/publish-notes.md | 4 + ...tall-and-use-a-package-in-visual-studio.md | 126 ++++++++++++ ...-and-use-a-package-using-the-dotnet-cli.md | 111 +++++++++++ docs/qs1/media/QS_Create-01-NewProject.png | Bin 0 -> 34397 bytes docs/qs1/media/QS_Create-02-APIKey.png | Bin 0 -> 14177 bytes docs/qs1/media/QS_Create-03-NotIndexed.png | Bin 0 -> 4159 bytes .../QS_Create-vs-01b-project-properties.png | Bin 0 -> 9095 bytes docs/qs1/media/QS_Restore-01-ToolsOptions.png | Bin 0 -> 47874 bytes docs/qs1/media/QS_Use-01-NewProject.png | Bin 0 -> 34768 bytes .../media/QS_Use-02-ManageNuGetPackages.png | Bin 0 -> 12008 bytes docs/qs1/media/QS_Use-03-NewtonsoftJson.png | Bin 0 -> 29581 bytes docs/qs1/media/QS_Use-03b-SelectFormat.png | Bin 0 -> 7121 bytes .../media/QS_Use-04-ShowPotentialFixes.png | Bin 0 -> 4506 bytes docs/qs1/media/QS_Use-05-AddUsing.png | Bin 0 -> 13750 bytes docs/qs1/media/QS_Use-06-AppStart.png | Bin 0 -> 3332 bytes docs/qs1/media/QS_Use-07-AppEnd.png | Bin 0 -> 4734 bytes docs/qs1/media/QS_Use-08-Console1.png | Bin 0 -> 16069 bytes .../qs_create-vs-01-package-properties.png | Bin 0 -> 15875 bytes .../media/qs_create-vs-02-pack-command.png | Bin 0 -> 9794 bytes docs/qs1/media/qs_create-vs-03-trash-can.png | Bin 0 -> 11166 bytes docs/qs1/media/qs_create-vs-04-unlist.png | Bin 0 -> 4780 bytes 28 files changed, 741 insertions(+) create mode 100644 docs/qs1/create-and-publish-a-package-using-the-dotnet-cli.md create mode 100644 docs/qs1/create-and-publish-a-package-using-visual-studio-net-framework.md create mode 100644 docs/qs1/create-and-publish-a-package-using-visual-studio.md create mode 100644 docs/qs1/includes/publish-api-key.md create mode 100644 docs/qs1/includes/publish-dotnet.md create mode 100644 docs/qs1/includes/publish-errors.md create mode 100644 docs/qs1/includes/publish-manage.md create mode 100644 docs/qs1/includes/publish-notes.md create mode 100644 docs/qs1/install-and-use-a-package-in-visual-studio.md create mode 100644 docs/qs1/install-and-use-a-package-using-the-dotnet-cli.md create mode 100644 docs/qs1/media/QS_Create-01-NewProject.png create mode 100644 docs/qs1/media/QS_Create-02-APIKey.png create mode 100644 docs/qs1/media/QS_Create-03-NotIndexed.png create mode 100644 docs/qs1/media/QS_Create-vs-01b-project-properties.png create mode 100644 docs/qs1/media/QS_Restore-01-ToolsOptions.png create mode 100644 docs/qs1/media/QS_Use-01-NewProject.png create mode 100644 docs/qs1/media/QS_Use-02-ManageNuGetPackages.png create mode 100644 docs/qs1/media/QS_Use-03-NewtonsoftJson.png create mode 100644 docs/qs1/media/QS_Use-03b-SelectFormat.png create mode 100644 docs/qs1/media/QS_Use-04-ShowPotentialFixes.png create mode 100644 docs/qs1/media/QS_Use-05-AddUsing.png create mode 100644 docs/qs1/media/QS_Use-06-AppStart.png create mode 100644 docs/qs1/media/QS_Use-07-AppEnd.png create mode 100644 docs/qs1/media/QS_Use-08-Console1.png create mode 100644 docs/qs1/media/qs_create-vs-01-package-properties.png create mode 100644 docs/qs1/media/qs_create-vs-02-pack-command.png create mode 100644 docs/qs1/media/qs_create-vs-03-trash-can.png create mode 100644 docs/qs1/media/qs_create-vs-04-unlist.png diff --git a/docs/qs1/create-and-publish-a-package-using-the-dotnet-cli.md b/docs/qs1/create-and-publish-a-package-using-the-dotnet-cli.md new file mode 100644 index 000000000..e9a540f80 --- /dev/null +++ b/docs/qs1/create-and-publish-a-package-using-the-dotnet-cli.md @@ -0,0 +1,105 @@ +--- +title: Creating and publishing a NuGet package using the dotnet CLI | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 01/24/2018 +ms.topic: get-started-article +ms.prod: nuget +ms.technology: null +description: A walkthrough tutorial on creating and publishing a NuGet package using the .NET Core CLI, dotnet. +keywords: NuGet package creation, NuGet package publishing, NuGet tutorial, dotnet publish NuGet package +ms.reviewer: +- karann-msft +- unniravindranathan +--- + +# Create and publish a package + +It's a simple process to create a NuGet package from a .NET Class Library and publish it to nuget.org using the `dotnet` command-line interface (CLI). + +## Prerequisites + +1. Install the [.NET Core SDK](https://www.microsoft.com/net/download/), which includes the `dotnet` CLI. + +1. [Register for a free account on nuget.org](https://www.nuget.org/users/account/LogOn?returnUrl=%2F) if you don't have one already. Creating a new account sends a confirmation email. You must confirm the account before you can upload a package. + +## Create a class library project + +You can use an existing .NET Class Library project for the code you want to package, or create a simple one as follows: + +1. Create a folder called `AppLogger` and change into it. + +1. Create the project using `dotnet new classlib`, which uses the name of the current folder for the project. + +## Add package metadata to the project file + +Every NuGet package needs a manifest that describes the package's contents and dependencies. In a final package, the manifest is a `.nuspec` file that is generated from the NuGet metadata properties that you include in the project file. + +1. Open your project file (`.csproj`) and add the following minimal properties inside the exiting `` tag, changing the values as appropriate: + + ```xml + AppLogger + 1.0.0 + your_name + your_company + ``` + + > [!Important] + > Give the package an identifier that's unique across nuget.org or whatever host you're using. For this walkthrough we recommend including "Sample" or "Test" in the name as the later publishing step does make the package publicly visible (though it's unlikely anyone will actually use it). + +1. Add any optional properties described on [NuGet metadata properties](/dotnet/core/tools/csproj#nuget-metadata-properties). + + > [!Note] + > For packages built for public consumption, pay special attention to the **PackageTags** property, as tags help others find your package and understand what it does. + +## Run the pack command + +To build a NuGet package (a `.nupkg` file) from the project, run the `dotnet pack` command: + +```cli +# Uses the project file in the current folder by default +dotnet pack +``` + +The output will show the path to the `.nupkg` file: + +```output +Microsoft (R) Build Engine version 15.5.180.51428 for .NET Core +Copyright (C) Microsoft Corporation. All rights reserved. + + Restore completed in 29.91 ms for D:\proj\AppLoggerNet\AppLogger\AppLogger.csproj. + AppLogger -> D:\proj\AppLoggerNet\AppLogger\bin\Debug\netstandard2.0\AppLogger.dll + Successfully created package 'D:\proj\AppLoggerNet\AppLogger\bin\Debug\AppLogger.1.0.0.nupkg'. +``` + +## Publish the package + +Once you have a `.nupkg` file, you publish it to nuget.org using the `dotnet nuget push` command along with an API key acquired from nuget.org. + +[!INCLUDE[publish-notes](includes/publish-notes.md)] + +### Acquire your API key + +[!INCLUDE[publish-api-key](includes/publish-api-key.md)] + +### Publish with dotnet nuget push + +[!INCLUDE[publish-dotnet](includes/publish-dotnet.md)] + +### Publish errors + +[!INCLUDE[publish-errors](includes/publish-errors.md)] + +### Manage the published package + +[!INCLUDE[publish-manage](includes/publish-manage.md)] + +## Related topics + +- [Create a Package](../create-packages/creating-a-package.md) +- [Publish a Package](../create-packages/publish-a-package.md) +- [Support multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) +- [Package versioning](../reference/package-versioning.md) +- [Creating localized packages](../create-packages/creating-localized-packages.md) +- [Signing packages](../create-packages/Sign-a-package.md) diff --git a/docs/qs1/create-and-publish-a-package-using-visual-studio-net-framework.md b/docs/qs1/create-and-publish-a-package-using-visual-studio-net-framework.md new file mode 100644 index 000000000..80e13f471 --- /dev/null +++ b/docs/qs1/create-and-publish-a-package-using-visual-studio-net-framework.md @@ -0,0 +1,180 @@ +--- +title: Introductory Guide to Creating and Publishing a .NET Framework NuGet Package using Visual Studio | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 03/13/2018 +ms.topic: get-started-article +ms.prod: nuget +ms.technology: null +description: A walkthrough tutorial on creating and publishing a .NET Framework NuGet package using Visual Studio 2017. +keywords: NuGet package creation, NuGet package publishing, NuGet tutorial, Visual Studio create NuGet package, msbuild pack +ms.reviewer: +- karann-msft +- unniravindranathan +--- + +# Create and publish a package using Visual Studio (.NET Framework) + +Creating a NuGet package from a .NET Framework Class Library involves creating the DLL in Visual Studio, then using the nuget.exe command line tool to create and publish the package. + +## Prerequisites + +1. Install any edition of Visual Studio 2017 from [visualstudio.com](https://www.visualstudio.com/) with any .NET-related workload. Visual Studio 2017 automatically includes NuGet capabilities when a .NET workload is installed. + +1. Install the `nuget.exe` CLI by downloading it from [nuget.org](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe), saving that `.exe` file to a suitable folder, and adding that folder to your PATH environment variable. + +1. [Register for a free account on nuget.org](https://www.nuget.org/users/account/LogOn?returnUrl=%2F) if you don't have one already. Creating a new account sends a confirmation email. You must confirm the account before you can upload a package. + +## Create a class library project + +You can use an existing .NET Framework Class Library project for the code you want to package, or create a simple one as follows: + +1. In Visual Studio, choose **File > New > Project**, select the **Visual C#** node, select the "Class Library (.NET Framework)" template, name the project AppLogger, and click **OK**. + +1. Right-click on the resulting project file and select **Build** to make sure the project was created properly. The DLL is found within the Debug folder (or Release if you build that configuration instead). + +Within a real NuGet package, of course, you implement many useful features with which others can build applications. You can also set the target frameworks however you like. For example, see the guides for [UWP](../guides/create-uwp-packages.md) and [Xamarin](../guides/create-packages-for-xamarin.md). + +For this walkthrough, however, you won't write any additional code because a class library from the template is sufficient to create a package. Still, if you'd like some functional code for the package, use the following: + +```cs +using System; + +namespace AppLogger +{ + public class Logger + { + public void Log(string text) + { + Console.WriteLine(text); + } + } +} +``` + +> [!Tip] +> Unless you have a reason to choose otherwise, .NET Standard is the preferred target for NuGet packages, as it provides compatibility with the widest range of consuming projects. See [Create and publish a package using Visual Studio (.NET Standard)](create-and-publish-a-package-using-visual-studio.md). + +## Configure project properties for the package + +A NuGet package contains a manifest (a `.nuspec` file), that contains relevant metadata such as the package identifier, version number, description, and more. Some of these can be drawn from the project properties directly, which avoids having to separately update them in both the project and the manifest. This section describes where to set the applicable properties. + +1. Select the **Project > Properties** menu command, then select the **Application** tab. + +1. In the **Assembly name** field, give your package a unique identifier. + + > [!Important] + > You must give the package an identifier that's unique across nuget.org or whatever host you're using. For this walkthrough we recommend including "Sample" or "Test" in the name as the later publishing step does make the package publicly visible (though it's unlikely anyone will actually use it). + > + > If you attempt to publish a package with a name that already exists, you see an error. + +1. Select the **Assembly Information...** button, which brings up a dialog box in which you can enter other properties that carry into the manifest (see [.nuspec file reference - replacement tokens](../reference/nuspec.md#replacement-tokens)). The most commonly used fields are **Title**, **Description**, **Company**, **Copyright**, and **Assembly version**. These properties ultimately appear with your package on a host like nuget.org, so make sure they're fully descriptive. + + ![Assembly information in a .NET Framework project in Visual Studio](media/qs_create-vs-01b-project-properties.png) + +1. Optional: to see and edit the properties directly, open the `Properties/AssemblyInfo.cs` file in the project. + +1. When the properties are set, set the project configuration to **Release** and rebuild the project to generate the updated DLL. + +## Generate the initial manifest + +With a DLL in hand and project properties set, you now use the `nuget spec` command to generate an initial `.nuspec` file from the project. This step includes the relevant replacement tokens to draw information from the project file. + +You run `nuget spec` only once to generate the initial manifest. When updating the package, you either change values in your project or edit the manifest directly. + +1. Open a command prompt and navigate to the project folder containing `AppLogger.csproj` file. + +1. Run the following command: `nuget spec AppLogger.csproj`. By specifying a project, NuGet creates a manifest that matches the name of the project, in this case `AppLogger.nuspec`. It also include replacement tokens in the manifest. + +1. Open `AppLogger.nuspec` in a text editor to examine its contents, which should appear as follows: + + ```xml + + + + $id$ + $version$ + $title$ + $author$ + $author$ + http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE + http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE + http://ICON_URL_HERE_OR_DELETE_THIS_LINE + false + $description$ + Summary of changes made in this release of the package. + Copyright 2018 + Tag1 Tag2 + + + ``` + +## Edit the manifest + +1. NuGet produces an error if you try to create a package with default values in your `.nuspec` file, so you must edit the following fields before proceeding. See [.nuspec file reference - single elements](../reference/nuspec.md#single-elements) for a description of how these are used. + + - licenseUrl + - projectUrl + - iconUrl + - releaseNotes + - tags + +1. For packages built for public consumption, pay special attention to the **Tags** property, as tags help others find your package on sources like nuget.org and understand what it does. + +1. You can also add any other elements to the manifest at this time, as described on [.nuspec file reference](../reference/nuspec.md). + +1. Save the file before proceeding. + +## Run the pack command + +1. From a command prompt in the folder containing your `.nuspec` file, run the command `nuget pack`. + +1. NuGet generates a `.nupkg` file in the form of *identifier-version.nupkg*, which you'll find in the current folder. + +## Publish the package + +Once you have a `.nupkg` file, you publish it to nuget.org using `nuget.exe` with an API key acquired from nuget.org. For nuget.org you must use `nuget.exe` 4.1.0 or higher. + +[!INCLUDE[publish-notes](includes/publish-notes.md)] + +### Acquire your API key + +[!INCLUDE[publish-api-key](includes/publish-api-key.md)] + +### Publish with nuget push + +1. Change to the folder containing the `.nupkg` file. + +1. Run the following command, specifying your package name and replacing the key value with your API key: + + ```cli + nuget push AppLogger.1.0.0.nupkg qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 -Source https://api.nuget.org/v3/index.json + ``` + +1. nuget.exe displays the results of the publishing process: + + ```output + Pushing AppLogger.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'... + PUT https://www.nuget.org/api/v2/package/ + Created https://www.nuget.org/api/v2/package/ 6829ms + Your package was pushed. + ``` + +See [nuget push](../tools/cli-ref-push.md). + +### Publish errors + +[!INCLUDE[publish-errors](includes/publish-errors.md)] + +### Manage the published package + +[!INCLUDE[publish-manage](includes/publish-manage.md)] + +## Related topics + +- [Create a Package](../create-packages/creating-a-package.md) +- [Publish a Package](../create-packages/publish-a-package.md) +- [Support multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) +- [Package versioning](../reference/package-versioning.md) +- [Creating localized packages](../create-packages/creating-localized-packages.md) diff --git a/docs/qs1/create-and-publish-a-package-using-visual-studio.md b/docs/qs1/create-and-publish-a-package-using-visual-studio.md new file mode 100644 index 000000000..69161c4da --- /dev/null +++ b/docs/qs1/create-and-publish-a-package-using-visual-studio.md @@ -0,0 +1,159 @@ +--- +title: Introductory Guide to Creating and Publishing a .NET Standard NuGet Package using Visual Studio | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 03/18/2018 +ms.topic: get-started-article +ms.prod: nuget +ms.technology: null +description: A walkthrough tutorial on creating and publishing a .NET Standard NuGet package using Visual Studio 2017. +keywords: NuGet package creation, NuGet package publishing, NuGet tutorial, Visual Studio create NuGet package, msbuild pack +ms.reviewer: +- karann-msft +- unniravindranathan +--- + +# Create and publish a package using Visual Studio (.NET Standard) + +It's a simple process to create a NuGet package from a .NET Standard Class Library in Visual Studio, and then publish it to nuget.org using a CLI tool. + +## Prerequisites + +1. Install any edition of Visual Studio 2017 from [visualstudio.com](https://www.visualstudio.com/) with any .NET-related workload. Visual Studio 2017 automatically includes NuGet capabilities when a .NET workload is installed. + +1. Install the `nuget.exe` CLI by downloading it from [nuget.org](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe), saving that `.exe` file to a suitable folder, and adding that folder to your PATH environment variable. + + Alternately, if you have the [.NET Core SDK](https://www.microsoft.com/net/download/) installed, you can use the `dotnet` CLI. + +1. [Register for a free account on nuget.org](https://www.nuget.org/users/account/LogOn?returnUrl=%2F) if you don't have one already. Creating a new account sends a confirmation email. You must confirm the account before you can upload a package. + +## Create a class library project + +You can use an existing .NET Standard Class Library project for the code you want to package, or create a simple one as follows: + +1. In Visual Studio, choose **File > New > Project**, expand the **Visual C# > .NET Standard** node, select the "Class Library (.NET Standard)" template, name the project AppLogger, and click **OK**. + +1. Right-click on the resulting project file and select **Build** to make sure the project was created properly. The DLL is found within the Debug folder (or Release if you build that configuration instead). + +Within a real NuGet package, of course, you implement many useful features with which others can build applications. For this walkthrough, however, you won't write any additional code because a class library from the template is sufficient to create a package. Still, if you'd like some functional code for the package, use the following: + +```cs +namespace AppLogger +{ + public class Logger + { + public void Log(string text) + { + Console.WriteLine(text); + } + } +} +``` + +> [!Tip] +> Unless you have a reason to choose otherwise, .NET Standard is the preferred target for NuGet packages, as it provides compatibility with the widest range of consuming projects. + +## Configure package properties + +1. Select the **Project > Properties** menu command, then select the **Package** tab. (The **Package** tab appears only for .NET Standard class library projects; if you are targeting .NET Framework, see [Create and publish a .NET Framework package](create-and-publish-a-package-using-visual-studio-net-framework.md) instead.) + + ![NuGet package properties in a Visual Studio project](media/qs_create-vs-01-package-properties.png) + + > [!Note] + > For packages built for public consumption, pay special attention to the **Tags** property, as tags help others find your package and understand what it does. + +1. Give your package a unique identifier and fill out any other desired properties. For a description of the different properties, see [.nuspec file reference](../reference/nuspec.md). All of the properties here go into the `.nuspec` manifest that Visual Studio creates for the project. + + > [!Important] + > You must give the package an identifier that's unique across nuget.org or whatever host you're using. For this walkthrough we recommend including "Sample" or "Test" in the name as the later publishing step does make the package publicly visible (though it's unlikely anyone will actually use it). + > + > If you attempt to publish a package with a name that already exists, you see an error. + +1. Optional: to see the properties directly in the project file, right-click the project in Solution Explorer and select **Edit AppLogger.csproj**. + +## Run the pack command + +1. Set the configuration to **Release**. + +1. Right click the project in **Solution Explorer** and select the **Pack** command: + + ![NuGet pack command on the Visual Studio project context menu](media/qs_create-vs-02-pack-command.png) + +1. Visual Studio builds the project and creates the `.nupkg` file. Examine the **Output** window for details (similar to the following), which contains the path to the package file. Note also that the built assembly is in `bin\Release\netstandard2.0` as befits the .NET Standard 2.0 target. + + ```output + 1>------ Build started: Project: AppLogger, Configuration: Release Any CPU ------ + 1>AppLogger -> d:\proj\AppLogger\AppLogger\bin\Release\netstandard2.0\AppLogger.dll + 1>Successfully created package 'd:\proj\AppLogger\AppLogger\bin\Release\AppLogger.1.0.0.nupkg'. + ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== + ``` + +### Alternate option: pack with MSBuild + +As an alternate to using the **Pack** menu command, NuGet 4.x+ and MSBuild 15.1+ supports a `pack` target when the project contains the necessary package data. Open a command prompt, navigate to your project folder and run the following command. (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.) + +```cli +msbuild /t:pack /p:Configuration=Release +``` + +The package can then be found in the `bin\Release` folder. + +For additional options with `msbuild /t:pack`, see [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md#pack-target). + +## Publish the package + +Once you have a `.nupkg` file, you publish it to nuget.org using either the `nuget.exe` CLI or the `dotnet.exe` CLI along with an API key acquired from nuget.org. + +[!INCLUDE[publish-notes](includes/publish-notes.md)] + +### Acquire your API key + +[!INCLUDE[publish-api-key](includes/publish-api-key.md)] + +### Publish with nuget push + +This step is an alternative to using `dotnet.exe`. + +1. Change to the folder containing the `.nupkg` file. + +1. Run the following command, specifying your package name and replacing the key value with your API key: + + ```cli + nuget push AppLogger.1.0.0.nupkg qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 -Source https://api.nuget.org/v3/index.json + ``` + +1. nuget.exe displays the results of the publishing process: + + ```output + Pushing AppLogger.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'... + PUT https://www.nuget.org/api/v2/package/ + Created https://www.nuget.org/api/v2/package/ 6829ms + Your package was pushed. + ``` + +See [nuget push](../tools/cli-ref-push.md). + +### Publish with dotnet nuget push + +This step is an alternative to using `nuget.exe`. + +[!INCLUDE[publish-dotnet](includes/publish-dotnet.md)] + +### Publish errors + +[!INCLUDE[publish-errors](includes/publish-errors.md)] + +### Manage the published package + +[!INCLUDE[publish-manage](includes/publish-manage.md)] + +## Related topics + +- [Create a Package](../create-packages/creating-a-package.md) +- [Publish a Package](../create-packages/publish-a-package.md) +- [Support multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) +- [Package versioning](../reference/package-versioning.md) +- [Creating localized packages](../create-packages/creating-localized-packages.md) +- [.NET Standard Library documentation](/dotnet/articles/standard/library) +- [Porting to .NET Core from .NET Framework](/dotnet/articles/core/porting/index) \ No newline at end of file diff --git a/docs/qs1/includes/publish-api-key.md b/docs/qs1/includes/publish-api-key.md new file mode 100644 index 000000000..0392ae593 --- /dev/null +++ b/docs/qs1/includes/publish-api-key.md @@ -0,0 +1,11 @@ +1. [Sign into your nuget.org account](https://www.nuget.org/users/account/LogOn?returnUrl=%2F) or create an account if you don't have one already. + +1. Select your user name (on the upper right), then select **API Keys**. + +1. Select **Create**, provide a name for your key, select **Select Scopes > Push**Under **API Key**, enter * for **Glob pattern**, then select **Create**. + +1. Once the key is created, select **Copy** to retrieve the access key you need in the CLI: + + ![Copying the API key to the clipboard](../media/QS_Create-02-APIKey.png) + +1. **Important**: Save your key in a secure location because you cannot copy the key again later on. If you return to the API key page, you need to regenerate the key to copy it. You can also remove the API key if you no longer want to push packages via the CLI. \ No newline at end of file diff --git a/docs/qs1/includes/publish-dotnet.md b/docs/qs1/includes/publish-dotnet.md new file mode 100644 index 000000000..31c099bba --- /dev/null +++ b/docs/qs1/includes/publish-dotnet.md @@ -0,0 +1,18 @@ +1. Change to the folder containing the `.nupkg` file. + +1. Run the following command, specifying your package name and replacing the key value with your API key: + + ```cli + dotnet nuget push AppLogger.1.0.0.nupkg -k qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 -s https://api.nuget.org/v3/index.json + ``` + +1. dotnet displays the results of the publishing process: + + ```output + info : Pushing AppLogger.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'... + info : PUT https://www.nuget.org/api/v2/package/ + info : Created https://www.nuget.org/api/v2/package/ 12620ms + info : Your package was pushed. + ``` + +See [dotnet nuget push](/dotnet/core/tools/dotnet-nuget-push). \ No newline at end of file diff --git a/docs/qs1/includes/publish-errors.md b/docs/qs1/includes/publish-errors.md new file mode 100644 index 000000000..cfdb184cc --- /dev/null +++ b/docs/qs1/includes/publish-errors.md @@ -0,0 +1,10 @@ +Errors from the `push` command typically indicate the problem. For example, you may have forgotten to update the version number in your project and are therefore trying to publish a package that already exists. + +You also see errors when trying to publish a package using an identifier that already exists on the host. The name "AppLogger", for example, already exists. In such a case, the `push` command gives the following error: + +```output +Response status code does not indicate success: 403 (The specified API key is invalid, +has expired, or does not have permission to access the specified package.). +``` + +If you're using a valid API key that you just created, then this message indicates a naming conflict, which isn't entirely clear from the "permission" part of the error. Change the package identifier, rebuild the project, recreate the `.nupkg` file, and retry the `push` command. \ No newline at end of file diff --git a/docs/qs1/includes/publish-manage.md b/docs/qs1/includes/publish-manage.md new file mode 100644 index 000000000..cde7211e3 --- /dev/null +++ b/docs/qs1/includes/publish-manage.md @@ -0,0 +1,17 @@ +From your profile on nuget.org, select **Manage Packages** to see the one you just published. You also receive a confirmation email. Note that it might take a while for your package to be indexed and appear in search results where others can find it. During that time your package page shows the message below: + +![This package has not been indexed yet. It will appear in search results and will be available for install/restore after indexing is complete.](../media/QS_Create-03-NotIndexed.png) + +And that's it! You've just published your first NuGet package to nuget.org that other developers can use in their own projects. + +If in this walkthrough you created a package that isn't actually useful (such as a package created with an empty class library), you should *unlist* the package to hide it from search results: + +1. On nuget.org, select your user name (upper right of the page), then select **Manage Packages**. + +1. Locate the package you want to unlist under **Published** and select the trash can icon on the right: + + ![Trash can icon shown for a package listing on nuget.org](../media/qs_create-vs-03-trash-can.png) + +1. On the subsequent page, clear the box labeled **List (package-name) in search results** and select **Save**: + + ![Clearing the List checkbox for a package on nuget.org](../media/qs_create-vs-04-unlist.png) \ No newline at end of file diff --git a/docs/qs1/includes/publish-notes.md b/docs/qs1/includes/publish-notes.md new file mode 100644 index 000000000..383e4df4b --- /dev/null +++ b/docs/qs1/includes/publish-notes.md @@ -0,0 +1,4 @@ +> [!Note] +> **Virus scanning**: All packages uploaded to nuget.org are scanned for viruses and rejected if any viruses are found. All packages listed on nuget.org are also scanned periodically. +> +> Packages published to nuget.org are also publicly visible to other developers unless you unlist them. To host packages privately, see [Hosting packages](../../hosting-packages/overview.md). \ No newline at end of file diff --git a/docs/qs1/install-and-use-a-package-in-visual-studio.md b/docs/qs1/install-and-use-a-package-in-visual-studio.md new file mode 100644 index 000000000..26f3d3f28 --- /dev/null +++ b/docs/qs1/install-and-use-a-package-in-visual-studio.md @@ -0,0 +1,126 @@ +--- +title: Introductory Guide to Using NuGet Packages from within Visual Studio | Microsoft Docs +author: kraigb +ms.author: kraigb +manager: ghogen +ms.date: 01/23/2018 +ms.topic: get-started-article +ms.prod: nuget +ms.technology: null +description: A walkthrough tutorial on the process of installing and using a NuGet package in a Visual Studio project. +keywords: install NuGet, NuGet package consumption, installing NuGet packages, NuGet package references, using NuGet packages +ms.reviewer: +- karann-msft +- unniravindranathan +--- + +# Install and use a package in Visual Studio + +NuGet packages contain reusable code that other developers make available to you for use in your projects. See [What is NuGet?](../What-is-NuGet.md) for background. Packages are installed into a Visual Studio project using the Package Manager UI or the Package Manager Console, as described in this article for the popular [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) package and a Universal Windows Platform (UWP) project. + +Once installed, refer to the package in code with `using ` where \ is specific to the package you're using. Once the reference is made, you can call the package through its API. + +> [!Tip] +> **Start with nuget.org**: Browsing nuget.org is how .NET developers typically find components they can reuse in their own applications. You can search nuget.org directly or find and install packages within Visual Studio as shown in this article. + +## Prerequisites + +- Visual Studio 2017 with the Universal Windows Platform development workload, or +- Visual Studio 2015 Update 3 with Tools for Universal Windows Apps. + +You can install the 2017 Community edition for free from [visualstudio.com](https://www.visualstudio.com/) or use the Professional or Enterprise editions. + +## Create a project + +NuGet packages can be installed into a .NET project of some kind. For this walkthrough, you use a simple Universal Windows (UWP) app. Create a project in Visual Studio using **File > New Project...** and selecting the **Windows Universal > Blank App (Universal Windows)**. Accept the default values for Target Version and Minimum Version when prompted. + +## Add the Newtonsoft.Json NuGet package + +To install the package, you can use either the Package Manager UI or the Package Manager Console. When you install a package, NuGet records the dependency in either your project file or a `packages.config` file. For more information, see [Package consumption overview and workflow](../consume-packages/Overview-and-Workflow.md). + +### Package Manager UI + +1. In Solution Explorer, right-click **References** and choose **Manage NuGet Packages**. + + ![Manage NuGet Packages command for project References](media/QS_Use-02-ManageNuGetPackages.png) + +1. Choose "nuget.org" as the **Package source**, select the **Browse** tab, search for **Newtonsoft.Json**, select that package in the list, and select **Install**: + + ![Locating Newtonsoft.Json package](media/QS_Use-03-NewtonsoftJson.png) + +1. Accept any license prompts. + +1. (Visual Studio 2017) If prompted to select a package management format, select **PackageReference in project file**: + + ![Selecting a package reference format](media/QS_Use-03b-SelectFormat.png) + +1. If prompted to review changes, select **OK**. + +### Package Manager Console + +1. Select the **Tools > NuGet Package Manager > Package Manager Console** menu command. + +1. Once the console opens, check that the **Default project** drop-down list shows the project into which you want to install the package. If you have a single project in the solution, it is already selected. + + ![Locating Newtonsoft.Json package](media/QS_Use-08-Console1.png) + +1. Enter the command `Install-Package Newtonsoft.json` (see [Install-Package](../tools/ps-ref-install-package.md)). The console window shows output for the command. Errors typically indicate that the package isn't compatible with the project's target framework. + +## Use the Newtonsoft.Json API in the app + +With the Newtonsoft.Json package in the project, you can call its `JsonConvert.SerializeObject` method to convert an object to a human-readable string. + +1. Open `MainPage.xaml` and replace the existing `Grid` element with the following: + + ```xaml + + +
  • - @@ -140,8 +136,6 @@ hide_bc: true From a546b406456d92ae6b218043ac1e794ebcdbe427 Mon Sep 17 00:00:00 2001 From: Adrienne Tacke Date: Fri, 9 Nov 2018 16:26:28 -0800 Subject: [PATCH 0949/2943] fix: typo in authors token (#1120) Based on issue #1072, I've corrected the docs in the appropriate place. --- docs/reference/nuspec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/nuspec.md b/docs/reference/nuspec.md index 706cea747..5c033100e 100644 --- a/docs/reference/nuspec.md +++ b/docs/reference/nuspec.md @@ -142,7 +142,7 @@ With the exception of `$configuration$`, values in the project are used in prefe | --- | --- | --- | **$id$** | Project file | AssemblyName (title) from the project file | | **$version$** | AssemblyInfo | AssemblyInformationalVersion if present, otherwise AssemblyVersion | -| **$author$** | AssemblyInfo | AssemblyCompany | +| **$authors$** | AssemblyInfo | AssemblyCompany | | **$title$** | AssemblyInfo | AssemblyTitle | | **$description$** | AssemblyInfo | AssemblyDescription | | **$copyright$** | AssemblyInfo | AssemblyCopyright | From 1752408c751a32ac488809ccdfa2ebaa15b35a26 Mon Sep 17 00:00:00 2001 From: Randy Fournier Date: Fri, 9 Nov 2018 19:27:36 -0500 Subject: [PATCH 0950/2943] Fixed typo (#1117) Corrected the spelling of 'delimeters' to delimiters --- docs/create-packages/Source-and-Config-File-Transformations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Source-and-Config-File-Transformations.md b/docs/create-packages/Source-and-Config-File-Transformations.md index ec49c9e3c..ad1bb50a7 100644 --- a/docs/create-packages/Source-and-Config-File-Transformations.md +++ b/docs/create-packages/Source-and-Config-File-Transformations.md @@ -109,7 +109,7 @@ To see the effect of installing and uninstalling the package, create a new ASP.N ### XDT transforms -You can modify config files using [XDT syntax](https://msdn.microsoft.com/library/dd465326.aspx). You can also have NuGet replace tokens with [project properties](/dotnet/api/vslangproj.projectproperties?view=visualstudiosdk-2017&viewFallbackFrom=netframework-4.7) by including the property name within `$` delimeters (case-insensitive). +You can modify config files using [XDT syntax](https://msdn.microsoft.com/library/dd465326.aspx). You can also have NuGet replace tokens with [project properties](/dotnet/api/vslangproj.projectproperties?view=visualstudiosdk-2017&viewFallbackFrom=netframework-4.7) by including the property name within `$` delimiters (case-insensitive). For example, the following `app.config.install.xdt` file will insert an `appSettings` element into `app.config` containing the `FullPath`, `FileName`, and `ActiveConfigurationSettings` values from the project: From 357f40f4b561fa0cb36e597bcd7ab2af62606ffc Mon Sep 17 00:00:00 2001 From: rem20806 <43143866+rem20806@users.noreply.github.com> Date: Fri, 9 Nov 2018 18:28:29 -0600 Subject: [PATCH 0951/2943] Grammar (#1113) fixed some grammatical errors --- docs/create-packages/Creating-a-Package.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/create-packages/Creating-a-Package.md b/docs/create-packages/Creating-a-Package.md index 3e5c7e5c0..7ccf4004f 100644 --- a/docs/create-packages/Creating-a-Package.md +++ b/docs/create-packages/Creating-a-Package.md @@ -46,7 +46,7 @@ Required properties: - The package identifier, which must be unique across the gallery that hosts the package. - A specific version number in the form *Major.Minor.Patch[-Suffix]* where *-Suffix* identifies [pre-release versions](prerelease-packages.md) -- The package title as it should appears on the host (like nuget.org) +- The package title as it should appear on the host (like nuget.org) - Author and owner information. - A long description of the package. @@ -152,7 +152,7 @@ You then edit the file by hand so that it describes the exact content you want i ### From a convention-based working directory -Because a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension, its often easiest to create the folder structure you want on your local file system, then create the `.nuspec` file directly from that structure. The `nuget pack` command then automatically adds all files in that folder structure (excluding any folders that begin with `.`, allowing you keep private files in the same structure). +Because a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension, it's often easiest to create the folder structure you want on your local file system, then create the `.nuspec` file directly from that structure. The `nuget pack` command then automatically adds all files in that folder structure (excluding any folders that begin with `.`, allowing you to keep private files in the same structure). The advantage to this approach is that you don't need to specify in the manifest which files you want to include in the package (as explained later in this topic). You can simply have your build process produce the exact folder structure that goes into the package, and you can easily include other files that might not be part of a project otherwise: @@ -172,7 +172,7 @@ The folder conventions are as follows: | build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file or `project.lock.json` (NuGet 3.x+). | | tools | Powershell scripts and programs accessible from the Package Manager Console | The `tools` folder is added to the `PATH` environment variable for the Package Manager Console only (Specifically, *not* to the `PATH` as set for MSBuild when building the project). | -Because your folder structure can contain any number of assemblies for any number of target frameworks, this method is necessary when creating packages that support multiple frameworks +Because your folder structure can contain any number of assemblies for any number of target frameworks, this method is necessary when creating packages that support multiple frameworks. In any case, once you have the desired folder structure in place, run the following command in that folder to create the `.nuspec` file: @@ -316,7 +316,7 @@ When you include a file named `readme.txt` in the package root, Visual Studio di In some cases, you might want to add custom build targets or properties in projects that consume your package, such as running a custom tool or process during build. You do this by placing files in the form `.targets` or `.props` (such as `Contoso.Utility.UsefulStuff.targets`) within the `\build` folder of the project. -Files in the root `\build` folder are considered suitable for all target frameworks. To provide framework-specific files, first place those within appropriate subfolders, such as the following: +Files in the root `\build` folder are considered suitable for all target frameworks. To provide framework-specific files, first place them within appropriate subfolders, such as the following: \build \netstandard1.4 From 4f5d29e80e13ade5d85287af548c0ad56be3813b Mon Sep 17 00:00:00 2001 From: Andy Zivkovic Date: Fri, 9 Nov 2018 16:43:57 -0800 Subject: [PATCH 0952/2943] Revert "CC74600: Unnecessarily nested lists (#1091)" (#1152) This reverts commit 1c8db5f63041aac6668f56d0a33b60e0a1fdd05c. --- docs/index.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/index.md b/docs/index.md index 8e3f9bd9c..cf044c080 100644 --- a/docs/index.md +++ b/docs/index.md @@ -14,6 +14,8 @@ hide_bc: true From eb5fd4ff18aed035fb18716c828fc8322b836c92 Mon Sep 17 00:00:00 2001 From: Alfred Myers Date: Fri, 9 Nov 2018 22:47:12 -0200 Subject: [PATCH 0953/2943] Fixed formatting for note (#1090) --- docs/consume-packages/Package-Restore.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/consume-packages/Package-Restore.md b/docs/consume-packages/Package-Restore.md index e218a9d1e..17122999c 100644 --- a/docs/consume-packages/Package-Restore.md +++ b/docs/consume-packages/Package-Restore.md @@ -57,9 +57,9 @@ Package restore is primarily enabled through **Tools > Options > NuGet Package M ``` -
    - > [!Note] - > The `packageRestore/enabled` setting can be overridden globally by setting an environment variable called **EnableNuGetPackageRestore** with a value of TRUE or FALSE before launching Visual Studio or starting a build. + +> [!Note] +> The `packageRestore/enabled` setting can be overridden globally by setting an environment variable called **EnableNuGetPackageRestore** with a value of TRUE or FALSE before launching Visual Studio or starting a build. - **Automatically check for missing packages during build in Visual Studio**: controls automatic restore by changing the `packageRestore/automatic` setting in the `NuGet.Config` file as shown below (`%AppData%\NuGet\NuGet.Config` on Windows, `~/.nuget/NuGet/NuGet.Config` on Mac/Linux). When this option is set, running a build from Visual Studio automatically restores any missing packages. The option does not affect builds run from the command line using MSBuild. @@ -120,4 +120,4 @@ To avoid using the cache for HTTP sources, do one of the following: ## Troubleshooting -See [Troubleshooting package restore](package-restore-troubleshooting.md). \ No newline at end of file +See [Troubleshooting package restore](package-restore-troubleshooting.md). From d53c6cf55c76383ec11d548618da534b53d1e472 Mon Sep 17 00:00:00 2001 From: John Mazouri Date: Mon, 12 Nov 2018 15:27:24 -0500 Subject: [PATCH 0954/2943] Fix erroneous extra lines in PackageReference documentation (#1153) This removes some seemingly unintended extra lines introduced by #1119. --- .../Package-References-in-Project-Files.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/docs/consume-packages/Package-References-in-Project-Files.md b/docs/consume-packages/Package-References-in-Project-Files.md index c7ba01e47..258063b6b 100644 --- a/docs/consume-packages/Package-References-in-Project-Files.md +++ b/docs/consume-packages/Package-References-in-Project-Files.md @@ -9,13 +9,7 @@ ms.topic: conceptual # Package references (PackageReference) in project files -Package references, using the `PackageReference` node, manage NuGet dependencies directly within project files (as opposed to a separate `packages.config` file). Using PackageReference, as it's called, doesn't affect other aspects of NuGet; for example, settings in `NuGet. - - - - - -fig` files (including package sources) are still applied as explained in [Configuring NuGet Behavior](configuring-nuget-behavior.md). +Package references, using the `PackageReference` node, manage NuGet dependencies directly within project files (as opposed to a separate `packages.config` file). Using PackageReference, as it's called, doesn't affect other aspects of NuGet; for example, settings in `NuGet.Config` files (including package sources) are still applied as explained in [Configuring NuGet Behavior](configuring-nuget-behavior.md). With PackageReference, you can also use MSBuild conditions to choose package references per target framework, configuration, platform, 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).) From a1d4a87d6a6e6dec1c8cb1fc7489d5eeb1412fd9 Mon Sep 17 00:00:00 2001 From: Andrii Date: Mon, 12 Nov 2018 22:31:59 +0200 Subject: [PATCH 0955/2943] Fixed typo (#1154) From 177431d8eef0c8a16599a87ba821f4e1c6bc0067 Mon Sep 17 00:00:00 2001 From: Naveenkhasyap Date: Tue, 13 Nov 2018 02:09:04 +0530 Subject: [PATCH 0956/2943] add configFile option for nugget pack (#1115) add missing -ConfigFile option for nugget pack --- docs/tools/cli-ref-pack.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/tools/cli-ref-pack.md b/docs/tools/cli-ref-pack.md index 9bb7b2afb..09e64df0b 100644 --- a/docs/tools/cli-ref-pack.md +++ b/docs/tools/cli-ref-pack.md @@ -33,6 +33,7 @@ where `` and `` specify the `.nuspec` or project file, | Exclude | Specifies one or more wildcard patterns to exclude when creating a package. To specify more than one pattern, repeat the -Exclude flag. See example below. | | ExcludeEmptyDirectories | Prevents inclusion of empty directories when building the package. | | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| ConfigFile | Specify the configuration file for the pack command. | | Help | Displays help information for the command. | | IncludeReferencedProjects | Indicates that the built package should include referenced projects either as dependencies or as part of the package. If a referenced project has a corresponding `.nuspec` file that has the same name as the project, then that referenced project is added as a dependency. Otherwise, the referenced project is added as part of the package. | | MinClientVersion | Set the *minClientVersion* attribute for the created package. This value will override the value of the existing *minClientVersion* attribute (if any) in the `.nuspec` file. | From 731d5743c20625ea08f6593741e60c35e78bbf23 Mon Sep 17 00:00:00 2001 From: Nick Kruger Date: Mon, 12 Nov 2018 13:40:13 -0700 Subject: [PATCH 0957/2943] Updated what-is-nuget.md to reflect Issue #1111 (#1114) Updated Visual Studio Team System to Azure DevOps to reflect Issue #1111 --- docs/what-is-nuget.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/what-is-nuget.md b/docs/what-is-nuget.md index c1e81175f..8fa2ac7f2 100644 --- a/docs/what-is-nuget.md +++ b/docs/what-is-nuget.md @@ -19,7 +19,7 @@ Because NuGet supports private hosts alongside the public nuget.org host, you ca ## The flow of packages between creators, hosts, and consumers -In its role as a public host, NuGet itself maintains the central repository of over 100,000 unique packages at [nuget.org](https://www.nuget.org). These packages are employed by millions of .NET/.NET Core developers every day. NuGet also enables you to host packages privately in the cloud (such as on Visual Studio Team Services), on a private network, or even on just your local file system. By doing so, those packages are available to only those developers that have access to the host, giving you the ability to make packages available to a specific group of consumers. The options are explained on [Hosting your own NuGet feeds](hosting-packages/overview.md). Through configuration options, you can also control exactly which hosts can be accessed by any given computer, thereby ensuring that packages are obtained from specific sources rather than a public repository like nuget.org. +In its role as a public host, NuGet itself maintains the central repository of over 100,000 unique packages at [nuget.org](https://www.nuget.org). These packages are employed by millions of .NET/.NET Core developers every day. NuGet also enables you to host packages privately in the cloud (such as on Azure DevOps), on a private network, or even on just your local file system. By doing so, those packages are available to only those developers that have access to the host, giving you the ability to make packages available to a specific group of consumers. The options are explained on [Hosting your own NuGet feeds](hosting-packages/overview.md). Through configuration options, you can also control exactly which hosts can be accessed by any given computer, thereby ensuring that packages are obtained from specific sources rather than a public repository like nuget.org. Whatever its nature, a host serves as the point of connection between package *creators* and package *consumers*. Creators build useful NuGet packages and publish them to a host. Consumers then search for useful and compatible packages on accessible hosts, downloading and including those packages in their projects. Once installed in a project, the packages' APIs are available to the rest of the project code. @@ -73,7 +73,7 @@ NuGet instead maintains a simple reference list of the packages upon which a pro With only the reference list, NuGet can then reinstall—that is, *restore*—all of those packages from public and/or private hosts at any later time. When committing a project to source control, or sharing it in some other way, you include only the reference list and exclude any package binaries (see [Packages and source control](consume-packages/packages-and-source-control.md).) -The computer that receives a project, such as a build server obtaining a copy of the project as part of an automated deployment system, simply asks NuGet to restore dependencies whenever they're needed. Build systems like Visual Studio Team Services provide "NuGet restore" steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository), they can invoke command like `nuget restore` (NuGet CLI), `dotnet restore` (dotnet CLI), or `Install-Package` (Package Manager Console) to obtain all the necessary packages. Visual Studio, for its part, automatically restores packages when building a project (provided that automatic restore is enabled, as described on [Package restore](consume-packages/package-restore.md)). +The computer that receives a project, such as a build server obtaining a copy of the project as part of an automated deployment system, simply asks NuGet to restore dependencies whenever they're needed. Build systems like Azure DevOps provide "NuGet restore" steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository), they can invoke command like `nuget restore` (NuGet CLI), `dotnet restore` (dotnet CLI), or `Install-Package` (Package Manager Console) to obtain all the necessary packages. Visual Studio, for its part, automatically restores packages when building a project (provided that automatic restore is enabled, as described on [Package restore](consume-packages/package-restore.md)). Clearly, then, NuGet's primary role where developers are concerned is maintaining that reference list on behalf of your project and providing the means to efficiently restore (and update) those referenced packages. This list is maintained in one of two *package management formats*, as they're called: From 0a8fb44366b0164036e5236ed4adaa2846cbd46d Mon Sep 17 00:00:00 2001 From: Patricio Beltran Date: Mon, 12 Nov 2018 16:21:40 -0800 Subject: [PATCH 0958/2943] Add documentation for client policies updates --- docs/TOC.md | 3 + docs/reference/Errors-and-Warnings.md | 4 +- docs/reference/errors-and-warnings/NU3004.md | 11 +- docs/reference/errors-and-warnings/NU3034.md | 26 +++++ docs/reference/errors-and-warnings/NU3040.md | 23 ++++ docs/reference/nuget-config-file.md | 52 ++++++++- docs/tools/cli-ref-trusted-signers.md | 111 +++++++++++++++++++ 7 files changed, 222 insertions(+), 8 deletions(-) create mode 100644 docs/reference/errors-and-warnings/NU3034.md create mode 100644 docs/reference/errors-and-warnings/NU3040.md create mode 100644 docs/tools/cli-ref-trusted-signers.md diff --git a/docs/TOC.md b/docs/TOC.md index f22ef366c..28504bee7 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -56,6 +56,7 @@ ### [spec](tools/cli-ref-spec.md) ### [update](tools/cli-ref-update.md) ### [verify](tools/cli-ref-verify.md) +### [trusted-signers](tools/cli-ref-trusted-signers.md) ### [Environment variables](tools/cli-ref-environment-variables.md) ### [Long path support](tools/cli-ref-long-path.md) ## [Package Manager UI](tools/package-manager-ui.md) @@ -130,6 +131,8 @@ ### [NuGet Warning NU3025](reference/errors-and-warnings/NU3025.md) ### [NuGet Warning NU3027](reference/errors-and-warnings/NU3027.md) ### [NuGet Warning NU3028](reference/errors-and-warnings/NU3028.md) +### [NuGet Error NU3034](reference/errors-and-warnings/NU3034.md) +### [NuGet Error NU3040](reference/errors-and-warnings/NU3040.md) ### [NuGet Error NU5000](reference/errors-and-warnings/NU5000.md) ### [NuGet Error NU5001](reference/errors-and-warnings/NU5001.md) ### [NuGet Error NU5002](reference/errors-and-warnings/NU5002.md) diff --git a/docs/reference/Errors-and-Warnings.md b/docs/reference/Errors-and-Warnings.md index e47942cd1..63f0c9985 100644 --- a/docs/reference/Errors-and-Warnings.md +++ b/docs/reference/Errors-and-Warnings.md @@ -22,7 +22,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | 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) | | Compatibility errors | [NU1201](./errors-and-warnings/NU1201.md), [NU1202](./errors-and-warnings/NU1202.md), [NU1203](./errors-and-warnings/NU1203.md), [NU1401](./errors-and-warnings/NU1401.md) | | NuGet internal errors | [NU1000](./errors-and-warnings/NU1000.md) | -| Signed packages errors(creation and verification) | [NU3001](./errors-and-warnings/NU3001.md), [NU3004](./errors-and-warnings/NU3004.md), [NU3005](./errors-and-warnings/NU3005.md), [NU3008](./errors-and-warnings/NU3008.md), [NU3012](./errors-and-warnings/NU3012.md), [NU3028](./errors-and-warnings/NU3028.md) | +| Signed packages errors(creation and verification) | [NU3001](./errors-and-warnings/NU3001.md), [NU3004](./errors-and-warnings/NU3004.md), [NU3005](./errors-and-warnings/NU3005.md), [NU3008](./errors-and-warnings/NU3008.md), [NU3012](./errors-and-warnings/NU3012.md), [NU3028](./errors-and-warnings/NU3028.md), [NU3034](./errors-and-warnings/NU3034.md)| | Pack Errors | [NU5000](./errors-and-warnings/NU5000.md), [NU5001](./errors-and-warnings/NU5001.md), [NU5002](./errors-and-warnings/NU5002.md), [NU5003](./errors-and-warnings/NU5003.md), [NU5004](./errors-and-warnings/NU5004.md), [NU5005](./errors-and-warnings/NU5005.md), [NU5007](./errors-and-warnings/NU5007.md), [NU5008](./errors-and-warnings/NU5008.md), [NU5009](./errors-and-warnings/NU5009.md), [NU5010](./errors-and-warnings/NU5010.md), [NU5011](./errors-and-warnings/NU5011.md), [NU5012](./errors-and-warnings/NU5012.md), [NU5013](./errors-and-warnings/NU5013.md), [NU5014](./errors-and-warnings/NU5014.md), [NU5015](./errors-and-warnings/NU5015.md), [NU5016](./errors-and-warnings/NU5016.md), [NU5017](./errors-and-warnings/NU5017.md), [NU5018](./errors-and-warnings/NU5018.md), [NU5019](./errors-and-warnings/NU5019.md), [NU5020](./errors-and-warnings/NU5020.md), [NU5021](./errors-and-warnings/NU5021.md), [NU5022](./errors-and-warnings/NU5022.md), [NU5023](./errors-and-warnings/NU5023.md), [NU5024](./errors-and-warnings/NU5024.md), [NU5025](./errors-and-warnings/NU5025.md), [NU5026](./errors-and-warnings/NU5026.md), [NU5027](./errors-and-warnings/NU5027.md), [NU5028](./errors-and-warnings/NU5028.md), [NU5029](./errors-and-warnings/NU5029.md) **Warnings** @@ -35,5 +35,5 @@ The errors and warnings listed here are available only with [PackageReference-ba | Package fallback warnings | [NU1701](./errors-and-warnings/NU1701.md) | | Feed warnings | [NU1801](./errors-and-warnings/NU1801.md) | | NuGet internal warnings | [NU1500](./errors-and-warnings/NU1500.md) | -| Signed packages warnings(creation and verification) | [NU3000](./errors-and-warnings/NU3000.md), [NU3002](./errors-and-warnings/NU3002.md), [NU3003](./errors-and-warnings/NU3003.md), [NU3006](./errors-and-warnings/NU3006.md), [NU3007](./errors-and-warnings/NU3007.md), [NU3009](./errors-and-warnings/NU3009.md), [NU3010](./errors-and-warnings/NU3010.md), [NU3011](./errors-and-warnings/NU3011.md), [NU3013](./errors-and-warnings/NU3013.md), [NU3014](./errors-and-warnings/NU3014.md), [NU3015](./errors-and-warnings/NU3015.md), [NU3016](./errors-and-warnings/NU3016.md), [NU3017](./errors-and-warnings/NU3017.md), [NU3018](./errors-and-warnings/NU3018.md), [NU3019](./errors-and-warnings/NU3019.md), [NU3020](./errors-and-warnings/NU3020.md), [NU3021](./errors-and-warnings/NU3021.md), [NU3022](./errors-and-warnings/NU3022.md), [NU3023](./errors-and-warnings/NU3023.md), [NU3025](./errors-and-warnings/NU3025.md), [NU3027](./errors-and-warnings/NU3027.md) | +| Signed packages warnings(creation and verification) | [NU3000](./errors-and-warnings/NU3000.md), [NU3002](./errors-and-warnings/NU3002.md), [NU3003](./errors-and-warnings/NU3003.md), [NU3006](./errors-and-warnings/NU3006.md), [NU3007](./errors-and-warnings/NU3007.md), [NU3009](./errors-and-warnings/NU3009.md), [NU3010](./errors-and-warnings/NU3010.md), [NU3011](./errors-and-warnings/NU3011.md), [NU3013](./errors-and-warnings/NU3013.md), [NU3014](./errors-and-warnings/NU3014.md), [NU3015](./errors-and-warnings/NU3015.md), [NU3016](./errors-and-warnings/NU3016.md), [NU3017](./errors-and-warnings/NU3017.md), [NU3018](./errors-and-warnings/NU3018.md), [NU3019](./errors-and-warnings/NU3019.md), [NU3020](./errors-and-warnings/NU3020.md), [NU3021](./errors-and-warnings/NU3021.md), [NU3022](./errors-and-warnings/NU3022.md), [NU3023](./errors-and-warnings/NU3023.md), [NU3025](./errors-and-warnings/NU3025.md), [NU3027](./errors-and-warnings/NU3027.md), [NU3040](./erorrs-and-warnings/NU3040.md) | | Pack Warnings | [NU5100](./errors-and-warnings/NU5100.md), [NU5101](./errors-and-warnings/NU5101.md), [NU5102](./errors-and-warnings/NU5102.md), [NU5103](./errors-and-warnings/NU5103.md), [NU5104](./errors-and-warnings/NU5104.md), [NU5105](./errors-and-warnings/NU5105.md), [NU5106](./errors-and-warnings/NU5106.md), [NU5107](./errors-and-warnings/NU5107.md), [NU5108](./errors-and-warnings/NU5108.md), [NU5109](./errors-and-warnings/NU5109.md), [NU5110](./errors-and-warnings/NU5110.md), [NU5111](./errors-and-warnings/NU5111.md), [NU5112](./errors-and-warnings/NU5112.md), [NU5114](./errors-and-warnings/NU5114.md), [NU5115](./errors-and-warnings/NU5115.md), [NU5116](./errors-and-warnings/NU5116.md), [NU5117](./errors-and-warnings/NU5117.md), [NU5118](./errors-and-warnings/NU5118.md), [NU5119](./errors-and-warnings/NU5119.md), [NU5120](./errors-and-warnings/NU5120.md), [NU5121](./errors-and-warnings/NU5121.md), [NU5122](./errors-and-warnings/NU5122.md), [NU5123](./errors-and-warnings/NU5123.md), [NU5500](./errors-and-warnings/NU5500.md) diff --git a/docs/reference/errors-and-warnings/NU3004.md b/docs/reference/errors-and-warnings/NU3004.md index 8914c029a..8ca1d7fde 100644 --- a/docs/reference/errors-and-warnings/NU3004.md +++ b/docs/reference/errors-and-warnings/NU3004.md @@ -13,14 +13,19 @@ f1_keywords: # NuGet Error NU3004
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The package is not signed.
    +
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': signatureValidationMode is set to require, so packages are allowed only if signed by trusted signers; however, this package is unsigned.
    +
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': This repository indicated that all its packages are repository signed; however, this package is unsigned.
    ### Issue -NuGet client tried to verify an unsigned package. +**If from `nuget verify -signatures`** +NuGet client tried to verify an unsigned package. -### Solution +**If from restore or install when specifying `signatureValidationMode` to `require`** -Please ensure that any package passed to `nuget verify -signatures` command are contain a package signature. +The `require` validation mode does not support unsigned package and an unsigned package is trying to be installed. +### Solution +Please ensure that any package intended to be installed or passed to `nuget verify -signatures` command contains a package signature. diff --git a/docs/reference/errors-and-warnings/NU3034.md b/docs/reference/errors-and-warnings/NU3034.md new file mode 100644 index 000000000..2b3168591 --- /dev/null +++ b/docs/reference/errors-and-warnings/NU3034.md @@ -0,0 +1,26 @@ +--- +title: NuGet Error NU3034 +description: NU3034 Error code +author: patbel +ms.author: patbel +ms.date: 11/12/2018 +ms.topic: reference +ms.reviewer: rmpablos +f1_keywords: + - NU3034 +--- + +# NuGet Error NU3034 + +
    Package 'SamplePackage v1.0.0' from source 'https://source.com/index.json': signatureValidationMode is set to require, so packages are allowed only if signed by trusted signers; however, no trusted signers were specified.
    +
    Package 'SamplePackage v1.0.0' from source 'https://source.com/index.json': The package signature certificate fingerprint does not match any certificate fingerprint in the allow list.
    +
    Package 'SamplePackage v1.0.0' from source 'https://source.com/index.json': This repository indicated that all its packages are repository signed; however, it listed no signing certificates.
    +
    Package 'SamplePackage v1.0.0' from source 'https://source.com/index.json': This package was not repository signed with a certificate listed by this repository.
    + +### Issue + +There is a missing allow list, or the package signer does not match any signer in the list. This list could either be sent by the repository or specified in the [`trustedSigners`](../nuget-config-file.md#trustedSigners-section) section of the `nuget.config`. + +### Solution + +If in `require` mode, only packages signed by a trusted signer will pass validation. Otherwise, contact the repository where this was downlaoded from to let them know they have a package that does not comply with the repository signing security guidelines. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3040.md b/docs/reference/errors-and-warnings/NU3040.md new file mode 100644 index 000000000..0040b2619 --- /dev/null +++ b/docs/reference/errors-and-warnings/NU3040.md @@ -0,0 +1,23 @@ +--- +title: NuGet Warning NU3040 +description: NU3040 Warning code +author: patbel +ms.author: patbel +ms.date: 11/12/2018 +ms.topic: reference +ms.reviewer: rmpablos +f1_keywords: + - NU3040 +--- + +# NuGet Warning NU3040 + +
    There are two certificates with conflicting allowUntrustedRoot attributes in the computed settings. The allowUntrustedRoot attribute is going to be set to false. Certificate: SHA256-3F9001EA83C560D712C24CF213C3D312CB3BFF51EE89435D3430BD06B5D0EECE
    + +### Issue + +There are conflicting attributes in a certificate item in nuget.config. Two certificate items share the same `fingerprint` and `hashAlgorithm`, but have different `allowUntrustedRoot`. + +### Solution + +NuGet will take the most restrictive of those settings (`allowUntrustedRoot=false`), to remove the warning make sure to either deduplicate the certificate items or set `allowUntrustedRoot` to the same value on both. \ No newline at end of file diff --git a/docs/reference/nuget-config-file.md b/docs/reference/nuget-config-file.md index 0573a7d1b..5304bf059 100644 --- a/docs/reference/nuget-config-file.md +++ b/docs/reference/nuget-config-file.md @@ -11,7 +11,7 @@ ms.topic: reference NuGet behavior is controlled by settings in different `NuGet.Config` files as described in [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md). -`nuget.config` is an XML file containing a top-level `` node, which then contains the section elements described in this topic. Each section contains zero or more `` elements with `key` and `value` attributes. See the [examples config file](#example-config-file). Setting names are case-insensitive, and values can use [environment variables](#using-environment-variables). +`nuget.config` is an XML file containing a top-level `` node, which then contains the section elements described in this topic. Each section contains zero or more items. See the [examples config file](#example-config-file). Setting names are case-insensitive, and values can use [environment variables](#using-environment-variables). In this topic: @@ -25,6 +25,7 @@ In this topic: - [apikeys](#apikeys) - [disabledPackageSources](#disabledpackagesources) - [activePackageSource](#activepackagesource) +- [trustedSigners section](#trustedSigners-section) - [Using environment variables](#using-environment-variables) - [Example config file](#example-config-file) @@ -46,6 +47,7 @@ Contains miscellaneous configuration settings, which can be set using the [`nuge | 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. This setting is overridden by the NUGET_PACKAGES environment variable, which takes precedence. | | 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). | +| signatureValidationMode | Specifies the validation mode used to verify package signatures for package install, and restore. Values are `accept`, `require`. Defaults to `accept`. **Example**: @@ -55,6 +57,7 @@ Contains miscellaneous configuration settings, which can be set using the [`nuge + ``` @@ -110,9 +113,9 @@ Controls whether the `packages` folder of a solution is included in source contr ## Package source sections -The `packageSources`, `packageSourceCredentials`, `apikeys`, `activePackageSource`, and `disabledPackageSources` all work together to configure how NuGet works with package repositories during install, restore, and update operations. +The `packageSources`, `packageSourceCredentials`, `apikeys`, `activePackageSource`, `disabledPackageSources` and `trustedSigners` all work together to configure how NuGet works with package repositories during install, restore, and update operations. -The [`nuget sources` command](../tools/cli-ref-sources.md) is generally used to manage these settings, except for `apikeys` which is managed using the [`nuget setapikey` command](../tools/cli-ref-setapikey.md). +The [`nuget sources` command](../tools/cli-ref-sources.md) is generally used to manage these settings, except for `apikeys` which is managed using the [`nuget setapikey` command](../tools/cli-ref-setapikey.md), and `trustedSigners` which is managed using the [`nuget trusted-signers` command](../tools/cli-ref-trusted-signers.md). Note that the source URL for nuget.org is `https://api.nuget.org/v3/index.json`. @@ -232,6 +235,35 @@ Identifies to the currently active source or indicates the aggregate of all sour ``` +## trustedSigners section + +Stores trusted signers used to allow package while installing or restoring. This list cannot be empty when the user sets `signatureValidationMode` to `require`. + +This section can be updated with the [`nuget trusted-signers` command](../tools/cli-ref-trusted-signers.md). + +**Schema**: + +A trusted signer has a collection of `certificate` items that enlist all the certificates that identify a given signer. A trusted signer can be either an `Author` or a `Repository`. + +A trusted *repository* also specifies the `serviceIndex` for the repository (which has to be a valid `https` uri) and can optionally specify a semi-colon delimited list of `owners` to restrict even more who is trusted from that specific repository. + +The supported hash algorithms used for a certificate fingerprint are `SHA256`, `SHA384` and `SHA512`. + +If a `certificate` specifies `allowUntrustedRoot` as `true` the given certificate is allowed to chain to an untrusted root while building the certificate chain as part of the signature verification. + +**Example**: + +```xml + + + + + + + microsoft;aspnet;nuget + + +``` ## Using environment variables @@ -308,5 +340,19 @@ Below is an example `nuget.config` file that illustrates a number of settings: + + + + + + + + + microsoft;aspnet;nuget + + ``` diff --git a/docs/tools/cli-ref-trusted-signers.md b/docs/tools/cli-ref-trusted-signers.md new file mode 100644 index 000000000..55e69ea33 --- /dev/null +++ b/docs/tools/cli-ref-trusted-signers.md @@ -0,0 +1,111 @@ +--- +title: NuGet CLI trusted-signers command +description: Reference for the nuget.exe trusted-signers command +author: patbel +ms.author: patbel +ms.date: 11/12/2018 +ms.topic: reference +ms.reviewer: rmpablos +--- + +# trusted-signers command (NuGet CLI) + +**Applies to:** package consumption • **Supported versions:** 4.9+ + +Gets or sets trusted signers to the NuGet configuration. For additional usage, see [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md). For details on how the nuget.config schema looks like, refer to the [NuGet config file reference](../reference/nuget-config-file.md). + +## Usage + +```cli +nuget trusted-signers [options] +``` + +if none of `list|add|remove|sync` is specified, the command will default to `list`. + +## nuget trusted-signers list + +Lists all the trusted signers in the configuration. This option will include all the certificates (with fingerprint and fingerprint algorithm) each signer has. If a certificate has a preceding `[U]`, it means that certificate entry has `allowUntrustedRoot` set as `true`. + +## nuget trusted-signers add [options] + +Adds a trusted signer with the given name to the config. This option has different gestures to add a trusted author or repository. + +##Options for add based on a package + +```cli +nuget trusted-signers add -Name [options] +``` + +where `` is one or more `.nupkg` files. + +| Option | Description | +| --- | --- | +| Author | Specifies that the author signature of the package(s) should be trusted. | +| Repository | Specifies that the repository signature or countersignature of the package(s) should be trusted. | +| AllowUntrustedRoot | Specifies if the certificate for the trusted signer should be allowed to chain to an untrusted root. | +| Owners | Semi-colon separated list of trusted owners to further restrict the trust of a repository. Only valid when using the `-Repository` option. | + +Providing both `-Author` and `-Repository` at the same time is not supported. + +##Options for add based on a service index + +```cli +nuget trusted-signers add -Name [options] +``` + +_Note_: This option will only add trusted repositories. + +| Option | Description | +| --- | --- | +| ServiceIndex | Specifies the V3 service index of the repository to be trusted. This repository has to support the repository signatures resource. If not provided, the command will look for a package source with the same `-Name` and get the service index from there. | +| AllowUntrustedRoot | Specifies if the certificate for the trusted signer should be allowed to chain to an untrusted root. | +| Owners | Semi-colon separated list of trusted owners to further restrict the trust of a repository. | + +##Options for add based on the certificate information + +```cli +nuget trusted-signers add -Name [options] +``` + +_Note_: If a trusted signer with the given name already exists, the certificate item will be added to that signer. Otherwise a trusted author will be created with a certificate item from given certificate information. + +| Option | Description | +| --- | --- | +| CertificateFingerprint | Specifies a certificate fingerprints of a certificate which signed packages must be signed with. A certificate fingerprint is a hash of the certificate. The hash algorithm used for calculating this hash should be specifies in the `FingerprintAlgorithm` option. | +| FingerprintAlgorithm | Specifies the hash algorithm used to calculate the certificate fingerprint. Defaults to `SHA256`. Values supported are `SHA256`, `SHA384` and `SHA512` | +| AllowUntrustedRoot | Specifies if the certificate for the trusted signer should be allowed to chain to an untrusted root. | + +## nuget trusted-signers remove -Name + +Removes any trusted signers that match the given name. + +## nuget trusted-signers sync -Name + +Requests the latest list of certificates used in a currently trusted repository to update the the existing certificate list in the trusted signer. + +## Options + +| Option | Description | +| --- | --- | +| ConfigFile | The NuGet configuration file to apply. If not specified, `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) is used.| +| ForceEnglishOutput | Forces nuget.exe to run using an invariant, English-based culture. | +| Help | Displays help information for the command. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | + +## Examples + +```cli +nuget trusted-signers list + +nuget trusted-signers Add -Name existingSource + +nuget trusted-signers Add -Name trustedRepo -ServiceIndex https://trustedRepo.test/v3ServiceIndex + +nuget trusted-signers Add -Name author1 -CertificateFingerprint CE40881FF5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E039 -FingerprintAlgorithm SHA256 + +nuget trusted-signers Add -Repository .\..\MyRepositorySignedPackage.nupkg -Name TrustedRepo + +nuget-trusted-signers Remove -Name TrustedRepo + +nuget-trusted-signers Sync -Name TrustedRepo +``` \ No newline at end of file From 74229f1b9507f27cd2cb7b531e6af1d201ba3cfd Mon Sep 17 00:00:00 2001 From: Patricio Beltran Date: Mon, 12 Nov 2018 16:56:00 -0800 Subject: [PATCH 0959/2943] fix link issues --- docs/reference/Errors-and-Warnings.md | 2 +- docs/reference/errors-and-warnings/NU3034.md | 2 +- docs/reference/nuget-config-file.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/reference/Errors-and-Warnings.md b/docs/reference/Errors-and-Warnings.md index 63f0c9985..8095a0170 100644 --- a/docs/reference/Errors-and-Warnings.md +++ b/docs/reference/Errors-and-Warnings.md @@ -35,5 +35,5 @@ The errors and warnings listed here are available only with [PackageReference-ba | Package fallback warnings | [NU1701](./errors-and-warnings/NU1701.md) | | Feed warnings | [NU1801](./errors-and-warnings/NU1801.md) | | NuGet internal warnings | [NU1500](./errors-and-warnings/NU1500.md) | -| Signed packages warnings(creation and verification) | [NU3000](./errors-and-warnings/NU3000.md), [NU3002](./errors-and-warnings/NU3002.md), [NU3003](./errors-and-warnings/NU3003.md), [NU3006](./errors-and-warnings/NU3006.md), [NU3007](./errors-and-warnings/NU3007.md), [NU3009](./errors-and-warnings/NU3009.md), [NU3010](./errors-and-warnings/NU3010.md), [NU3011](./errors-and-warnings/NU3011.md), [NU3013](./errors-and-warnings/NU3013.md), [NU3014](./errors-and-warnings/NU3014.md), [NU3015](./errors-and-warnings/NU3015.md), [NU3016](./errors-and-warnings/NU3016.md), [NU3017](./errors-and-warnings/NU3017.md), [NU3018](./errors-and-warnings/NU3018.md), [NU3019](./errors-and-warnings/NU3019.md), [NU3020](./errors-and-warnings/NU3020.md), [NU3021](./errors-and-warnings/NU3021.md), [NU3022](./errors-and-warnings/NU3022.md), [NU3023](./errors-and-warnings/NU3023.md), [NU3025](./errors-and-warnings/NU3025.md), [NU3027](./errors-and-warnings/NU3027.md), [NU3040](./erorrs-and-warnings/NU3040.md) | +| Signed packages warnings(creation and verification) | [NU3000](./errors-and-warnings/NU3000.md), [NU3002](./errors-and-warnings/NU3002.md), [NU3003](./errors-and-warnings/NU3003.md), [NU3006](./errors-and-warnings/NU3006.md), [NU3007](./errors-and-warnings/NU3007.md), [NU3009](./errors-and-warnings/NU3009.md), [NU3010](./errors-and-warnings/NU3010.md), [NU3011](./errors-and-warnings/NU3011.md), [NU3013](./errors-and-warnings/NU3013.md), [NU3014](./errors-and-warnings/NU3014.md), [NU3015](./errors-and-warnings/NU3015.md), [NU3016](./errors-and-warnings/NU3016.md), [NU3017](./errors-and-warnings/NU3017.md), [NU3018](./errors-and-warnings/NU3018.md), [NU3019](./errors-and-warnings/NU3019.md), [NU3020](./errors-and-warnings/NU3020.md), [NU3021](./errors-and-warnings/NU3021.md), [NU3022](./errors-and-warnings/NU3022.md), [NU3023](./errors-and-warnings/NU3023.md), [NU3025](./errors-and-warnings/NU3025.md), [NU3027](./errors-and-warnings/NU3027.md), [NU3040](./errors-and-warnings/NU3040.md) | | Pack Warnings | [NU5100](./errors-and-warnings/NU5100.md), [NU5101](./errors-and-warnings/NU5101.md), [NU5102](./errors-and-warnings/NU5102.md), [NU5103](./errors-and-warnings/NU5103.md), [NU5104](./errors-and-warnings/NU5104.md), [NU5105](./errors-and-warnings/NU5105.md), [NU5106](./errors-and-warnings/NU5106.md), [NU5107](./errors-and-warnings/NU5107.md), [NU5108](./errors-and-warnings/NU5108.md), [NU5109](./errors-and-warnings/NU5109.md), [NU5110](./errors-and-warnings/NU5110.md), [NU5111](./errors-and-warnings/NU5111.md), [NU5112](./errors-and-warnings/NU5112.md), [NU5114](./errors-and-warnings/NU5114.md), [NU5115](./errors-and-warnings/NU5115.md), [NU5116](./errors-and-warnings/NU5116.md), [NU5117](./errors-and-warnings/NU5117.md), [NU5118](./errors-and-warnings/NU5118.md), [NU5119](./errors-and-warnings/NU5119.md), [NU5120](./errors-and-warnings/NU5120.md), [NU5121](./errors-and-warnings/NU5121.md), [NU5122](./errors-and-warnings/NU5122.md), [NU5123](./errors-and-warnings/NU5123.md), [NU5500](./errors-and-warnings/NU5500.md) diff --git a/docs/reference/errors-and-warnings/NU3034.md b/docs/reference/errors-and-warnings/NU3034.md index 2b3168591..a7fb44a97 100644 --- a/docs/reference/errors-and-warnings/NU3034.md +++ b/docs/reference/errors-and-warnings/NU3034.md @@ -19,7 +19,7 @@ f1_keywords: ### Issue -There is a missing allow list, or the package signer does not match any signer in the list. This list could either be sent by the repository or specified in the [`trustedSigners`](../nuget-config-file.md#trustedSigners-section) section of the `nuget.config`. +There is a missing allow list, or the package signer does not match any signer in the list. This list could either be sent by the repository or specified in the [`trustedSigners`](../nuget-config-file.md#trustedsigners-section) section of the `nuget.config`. ### Solution diff --git a/docs/reference/nuget-config-file.md b/docs/reference/nuget-config-file.md index 5304bf059..88ac6cd7e 100644 --- a/docs/reference/nuget-config-file.md +++ b/docs/reference/nuget-config-file.md @@ -25,7 +25,7 @@ In this topic: - [apikeys](#apikeys) - [disabledPackageSources](#disabledpackagesources) - [activePackageSource](#activepackagesource) -- [trustedSigners section](#trustedSigners-section) +- [trustedSigners section](#trustedsigners-section) - [Using environment variables](#using-environment-variables) - [Example config file](#example-config-file) From f39af67a300b245681d5549c55ef04d67ceea1a6 Mon Sep 17 00:00:00 2001 From: cmanu Date: Mon, 12 Nov 2018 19:22:52 -0800 Subject: [PATCH 0960/2943] Add symbols docs. (#1128) * Add symbols docs. * Updates * Update Symbol-Packages-V2.md * Update Symbol-Packages-V2.md Adding validation info to publish page for Symbols packages. * Feedback * Update * Update * Fix a broken link. * Feedback * Update symbol-package-publish-resource.md * Update Symbol-Packages-V2.md * Feedback * Feedback * Update TOC.md * Rename Symbol-Packages-V2.md to Symbol-Packages-snupkg.md * Update Symbol-Packages.md * Update Symbol-Packages.md * Update Symbol-Packages-snupkg.md * Update Symbol-Packages-snupkg.md * Update Symbol-Packages-snupkg.md * Update cli-ref-pack.md * Update cli-ref-pack.md * Update Symbol-Packages-snupkg.md * Update symbol-package-publish-resource.md --- docs/TOC.md | 7 +- docs/api/overview.md | 9 +- docs/api/symbol-package-publish-resource.md | 78 ++++++++++++ .../create-packages/Symbol-Packages-snupkg.md | 111 ++++++++++++++++++ docs/create-packages/Symbol-Packages.md | 6 +- docs/tools/cli-ref-pack.md | 5 +- 6 files changed, 207 insertions(+), 9 deletions(-) create mode 100644 docs/api/symbol-package-publish-resource.md create mode 100644 docs/create-packages/Symbol-Packages-snupkg.md diff --git a/docs/TOC.md b/docs/TOC.md index f22ef366c..f3d15f12f 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -24,10 +24,10 @@ ## [Source and config file transformations](create-packages/source-and-config-file-transformations.md) ## [Creating localized packages](create-packages/creating-localized-packages.md) ## [Prerelease packages](create-packages/prerelease-packages.md) -## [Native packages](create-packages/native-packages.md) -## [Symbol packages](create-packages/symbol-packages.md) +## [Creating Native packages](create-packages/native-packages.md) +## [Creating Symbol packages](create-packages/symbol-packages-snupkg.md) ## [Signing packages](create-packages/sign-a-package.md) -## [Publish a package](create-packages/publish-a-package.md) +## [Publishing a package](create-packages/publish-a-package.md) ## Guides ### [Create UWP packages](guides/create-uwp-packages.md) ### [Creating UI controls as NuGet packages](guides/create-UI-controls.md) @@ -198,6 +198,7 @@ ## [How-to: query for all packages using the API](guides/api/query-for-all-published-packages.md) ## [Service index](api/service-index.md) ## [Push and delete](api/package-publish-resource.md) +## [Push symbol packages](api/symbol-package-publish-resource.md) ## [Search](api/search-query-service-resource.md) ## [Autocomplete](api/search-autocomplete-service-resource.md) ## [Package metadata](api/registration-base-url-resource.md) diff --git a/docs/api/overview.md b/docs/api/overview.md index 22293dc79..bab8c6559 100644 --- a/docs/api/overview.md +++ b/docs/api/overview.md @@ -53,16 +53,17 @@ Non-breaking protocol changes have been made to the API since it was first relea The **service index** describes a variety of resources. The current set of supported resources are as follows: -Resource name | Required | Description ----------------------------------------------------------------------- | -------- | ----------- +Resource name | Required | Description +---------------------------------------------------------------------- | -------- | ----------- [`PackagePublish`](package-publish-resource.md) | yes | Push and delete (or unlist) packages. [`SearchQueryService`](search-query-service-resource.md) | yes | Filter and search for packages by keyword. [`RegistrationsBaseUrl`](registration-base-url-resource.md) | yes | Get package metadata. [`PackageBaseAddress`](package-base-address-resource.md) | yes | Get package content (.nupkg). [`SearchAutocompleteService`](search-autocomplete-service-resource.md) | no | Discover package IDs and versions by substring. [`ReportAbuseUriTemplate`](report-abuse-resource.md) | no | Construct a URL to access a "report abuse" web page. -[`RepositorySignatures`](repository-signatures-resource.md) | no | Get certificates used for repository signing. -[`Catalog`](catalog-resource.md) | no | Full record of all package events. +[`RepositorySignatures`](repository-signatures-resource.md) | no | Get certificates used for repository signing. +[`Catalog`](catalog-resource.md) | no | Full record of all package events. +[`SymbolPackagePublish`](symbol-package-publish-resource.md) | no | Push symbol packages. In general, all non-binary data returned by a API resource are serialized using JSON. The response schema returned by each resource in the service index is defined individually for that resource. For more information about diff --git a/docs/api/symbol-package-publish-resource.md b/docs/api/symbol-package-publish-resource.md new file mode 100644 index 000000000..eeaaeb189 --- /dev/null +++ b/docs/api/symbol-package-publish-resource.md @@ -0,0 +1,78 @@ +--- +title: Push Symbol Packages, NuGet API | Microsoft Docs +author: +- cristinamanum +- kraigb +ms.author: +- cmanu +- kraigb +manager: skofman +ms.date: 10/30/2018 +ms.topic: reference +ms.prod: nuget +ms.technology: null +description: The publish service allows clients to publish new symbol packages. +keywords: NuGet API push symbol package +ms.reviewer: karann +--- + +# Push Symbol Packages + +It is possible to push symbols packages ([snupkg](../create-packages/Symbol-Packages-snupkg.md)) using the NuGet V3 API. +These operations are based off of the `SymbolPackagePublish` resource found in the [service index](service-index.md). + +## Versioning + +The following `@type` value is used: + +@type value | Notes +-------------------- | ----- +SymbolPackagePublish/4.9.0 | The initial release + +## Base URL + +The base URL for the following APIs is the value of the `@id` property of the `SymbolPackagePublish/4.9.0` resource in the +package source's [service index](service-index.md). For the documentation below, nuget.org's URL is used. Consider +`https://www.nuget.org/api/v2/symbolpackage` as a placeholder for the `@id` value found in the service index. + +## HTTP methods + +The `PUT` HTTP method is supported by this resource. + +## Push a symbol package + +nuget.org supports pushing new symbol packages format ([snupkg](../create-packages/Symbol-Packages-snupkg.md)) using the following API. + + PUT https://www.nuget.org/api/v2/symbolpackage + +Symbol packages with the same ID and version +can be submitted multiple times. A symbol package will be rejected in the following cases. +- A package with the same ID and version does not exist. +- A symbol package with the same ID and version was pushed but is not yet published. +- The symbol package ([snupkg](../create-packages/Symbol-Packages-snupkg.md)) is invalid (see [symbol package constraints](../create-packages/Symbol-Packages-snupkg.md)). + +### Request parameters + +Name | In | Type | Required | Notes +-------------- | ------ | ------ | -------- | ----- +X-NuGet-ApiKey | Header | string | yes | For example, `X-NuGet-ApiKey: {USER_API_KEY}` + +The API key is an opaque string gotten from the package source by the user and configured into the client. No +particular string format is mandated but the length of the API key should not exceed a reasonable size for HTTP header +values. + +### Request body + +The request body for the symbol push is same as with the request body of a package push request (see [package push and delete](package-publish-resource.md)). + +### Response + +Status Code | Meaning +----------- | ------- +201 | The symbol package was successfully pushed. +400 | The provided symbol package is invalid. +401 | The user is not authorized to perform this action. +404 | A corresponding package with the provided ID and version does not exist. +409 | A symbol package with the provided ID and version was pushed but it is not available yet. +413 | The package is too large. + diff --git a/docs/create-packages/Symbol-Packages-snupkg.md b/docs/create-packages/Symbol-Packages-snupkg.md new file mode 100644 index 000000000..6f4829dad --- /dev/null +++ b/docs/create-packages/Symbol-Packages-snupkg.md @@ -0,0 +1,111 @@ +--- +title: How to publish NuGet symbol packages using the new symbol package format '.snupkg'| Microsoft Docs +author: +- cristinamanu +- kraigb +ms.author: +- cristinamanu +- kraigb +manager: skofman +ms.date: 10/30/2018 +ms.topic: reference +ms.prod: nuget +ms.technology: null +description: How to create NuGet symbol packages (snupkg). +keywords: NuGet symbol packages, NuGet package debugging, supporting NuGet debugging, package symbols, symbol package conventions +ms.reviewer: +- anangaur +- karann +--- + + +# Creating symbol packages (.snupkg) + +## Prerequisites + +[nuget.exe v4.9.0 or above](https://www.nuget.org/downloads) or [dotnet.exe v2.2.0 or above](https://www.microsoft.com/net/download/dotnet-core/2.2), which implement the required [NuGet protocols](../api/nuget-protocols.md). + +## Creating a symbol package + +A snupkg symbol package can be created from a .nuspec file or from a .csproj file. NuGet.exe and dotnet.exe are both supported. When the options ```-Symbols -SymbolPackageFormat snupkg``` are used on the nuget.exe pack command a .snupkg file will be created in additon to the .nupkg file. + +Example commands to create .snupkg files +``` +dotnet pack MyPackage.csproj --include-symbols -p:SymbolPackageFormat=snupkg + +nuget pack MyPackage.nuspec -Symbols -SymbolPackageFormat snupkg + +nuget pack MyPackage.csproj -Symbols -SymbolPackageFormat snupkg + +msbuild /t:pack MyPackage.csproj /p:IncludeSymbols=true /p:SymbolPackageFormat=snupkg +``` + +`.snupkgs` are not produced by default. You must pass the `SymbolsPackageFormat` property along with `-Symbols` in case of nuget.exe, `--include-symbols` in case of dotnet.exe, or `/p:IncludeSymbols` in case of msbuild. + +SymbolsPackageFormat property can have one of the two values: `symbols.nupkg` (the default) or `snupkg`. If the SymbolsPackageFormat is not specified, it defaults to `symbols.nupkg` and a legacy symbol package will be created. + +> [!Note] +> The legacy format `.symbols.nupkg` is still supported but only for compatibility reasons (see [Legacy Symbol Packages](Symbol-Packages.md)). NuGet.org symbols server only accepts the new symbol package format - `.snupkg`. + +## Publishing a symbol package + +1. For convenience, first save your API key with NuGet (see [publish a package](../create-packages/publish-a-package.md)). + + ```cli + nuget SetApiKey Your-API-Key + ``` + +1. After publishing your primary package to nuget.org, push the symbol package as follows. + + ```cli + nuget push MyPackage.snupkg + ``` + +1. You can also push both primary and symbol packages at the same time using the below command. Both, .nupkg and .snupkg files need to be present in the current folder. + + ```cli + nuget push MyPackage.nupkg + ``` + +In this case, NuGet will publish to nuget.org the `MyPackage.nupkg` first followed by `MyPackage.snupkg`. + +## NuGet.org symbol server + +NuGet.org supports its own symbols server repository and only accepts the new symbol package format - `.snupkg`. Package consumers can use the symbols published to nuget.org symbol server by adding `https://symbols.nuget.org/download/symbols` to their symbol sources in Visual Studio, which allows stepping into package code in the Visual Studio debugger. See [Specify symbol (.pdb) and source files in the Visual Studio debugger](https://docs.microsoft.com/en-us/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger?view=vs-2017) for details on that process. + +### Nuget.org symbol package constraints + +The symbol packages supported on nuget.org have the following contraints + +- Only the following file extensions are allowed to be added to a symbol package. ```.pdb,.nuspec,.xml,.psmdcp,.rels,.p7s``` +- Only managed [Portable pdbs](https://github.com/dotnet/corefx/blob/master/src/System.Reflection.Metadata/specs/PortablePdb-Metadata.md) are currently supported on nuget symbol server. +- The pdbs and associated nupkg dlls need to be built with the compiler in Visual Studio version 15.9 or above (see [pdb crypto hash](https://github.com/dotnet/roslyn/issues/24429)) + +The symbol package publish on nuget.org will fail if any other file types are included in the .snupkg. + +### Symbol package validation and indexing + +Symbol packages published to [NuGet.org](https://www.nuget.org/) undergo several validations, such as virus checks. + +When the package has passed all validation checks, it might take a while for the symbols to index and be available for consumption from the NuGet.org symbol servers. If the package fails a validation check, the package details page for the .nupkg will update to display the associated error and you will also receive an email notifying you about it. + +Package validation and indexing usually takes under 15 minutes. If the package publishing is taking longer than expected, visit [status.nuget.org](https://status.nuget.org/) to check if nuget.org is experiencing any interruptions. If all systems are operational and the package hasn't been successfully published within an hour, please login to nuget.org and contact us using the Contact Support link on the package details page. + +## Symbol package structure + +The .nupkg file would be exactly the same as it is today, but the .snupkg file would have the following characteristics: + +1) The .snupkg will have the same id and version as the corresponding .nupkg. +2) The .snupkg will have the exact folder structure as the nupkg for any DLL or EXE files with the distinction that instead of DLLs/EXEs, their corresponding PDBs will be included in the same folder hierarchy. Files and folders with extensions other than PDB will be left out of the snupkg. +3) The .nuspec file in the .snupkg will also specify a new PackageType as below. This should the only one PackageType specified. +``` + + + +``` +4) If an author decides to use a custom nuspec to build their nupkg and snupkg, the snupkg should have the same folder hierarchy and files detailed in 2). +5) ```authors``` and ```owners``` field will be excluded from the snupkg's nuspec. + +## See Also + +[NuGet-Package-Debugging-&-Symbols-Improvements](https://github.com/NuGet/Home/wiki/NuGet-Package-Debugging-&-Symbols-Improvements) diff --git a/docs/create-packages/Symbol-Packages.md b/docs/create-packages/Symbol-Packages.md index 96355fb77..ba6cfce41 100644 --- a/docs/create-packages/Symbol-Packages.md +++ b/docs/create-packages/Symbol-Packages.md @@ -8,7 +8,11 @@ ms.topic: conceptual ms.reviewer: anangaur --- -# Creating symbol packages +# Creating symbol packages (legacy) + +> [!Important] +> The new recommended format for symbol packages is .snupkg. See [Creating symbol packages (.snupkg)](Symbol-Packages-snupkg.md).
    +> .symbols.nupkg is still supported but only for compatibility reasons. In addition to building packages for nuget.org or other sources, NuGet also supports creating associated symbol packages and publishing them to the SymbolSource repository. diff --git a/docs/tools/cli-ref-pack.md b/docs/tools/cli-ref-pack.md index 09e64df0b..3e25dfd9d 100644 --- a/docs/tools/cli-ref-pack.md +++ b/docs/tools/cli-ref-pack.md @@ -44,7 +44,7 @@ where `` and `` specify the `.nuspec` or project file, | OutputDirectory | Specifies the folder in which the created package is stored. If no folder is specified, the current folder is used. | | Properties | Should appear last on the command line after other options. Specifies a list of properties that override values in the project file; see [Common MSBuild Project Properties](/visualstudio/msbuild/common-msbuild-project-properties) for property names. The Properties argument here is a list of token=value pairs, separated by semicolons, where each occurrence of `$token$` in the `.nuspec` file will be replaced with the given value. Values can be strings in quotation marks. Note that for the "Configuration" property, the default is "Debug". To change to a Release configuration, use `-Properties Configuration=Release`. | | Suffix | *(3.4.4+)* Appends a suffix to the internally generated version number, typically used for appending build or other pre-release identifiers. For example, using `-suffix nightly` will create a package with a version number like `1.2.3-nightly`. Suffixes must start with a letter to avoid warnings, errors, and potential incompatibilities with different versions of NuGet and the NuGet Package Manager. | -| Symbols | Specifies that the package contains sources and symbols. When used with a `.nuspec` file, this creates a regular NuGet package file and the corresponding symbols package. | +| Symbols | Specifies that the package contains sources and symbols. When used with a `.nuspec` file, this creates a regular NuGet package file and the corresponding symbols package. By default it creates a [legacy symbol package](../create-packages/Symbol-Packages.md). The new recommended format for symbol packages is .snupkg. See [Creating symbol packages (.snupkg)](../create-packages/Symbol-Packages-snupkg.md). | | Tool | Specifies that the output files of the project should be placed in the `tool` folder. | | Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | | Version | Overrides the version number from the `.nuspec` file. | @@ -86,6 +86,9 @@ nuget pack foo.csproj -Build -Symbols -Properties owners=janedoe,xiaop;version=" # Create a package from project foo.csproj, using MSBuild version 12 to build the project nuget pack foo.csproj -Build -Symbols -MSBuildVersion 12 -Properties owners=janedoe,xiaop;version="1.0.5 +# Create a package from project foo.nuspec and the corresponding symbol package using the new recommended format .snupkg +nuget pack foo.nuspec -Symbols -SymbolPackageFormat snupkg + nuget pack foo.nuspec -Version 2.1.0 nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5 From a59e07a53ddf7cf0c98d1bc1302c3e046918b1f1 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 12 Nov 2018 19:35:26 -0800 Subject: [PATCH 0961/2943] master to live (#1157) * Fix typo in analyzers-conventions.md (#1039) (#1040) * metadata updates (#1044) * metadata updates * fix warning * some additional changes * Update NU3028.md (#1041) * Update NU3028.md https://github.com/NuGet/Home/issues/7173 * Update NU3028.md * Update NU3028.md * Update cli-ref-environment-variables.md * Don't call .Net Framework "full" * Added the versioning for Revocation mode functionality * Update TOC.md * Karann 4.8 relnotes (#1055) * Create NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update TOC.md * Update NuGet-Cross-Platform-Authentication-Plugin.md * Update Index.md * Update Supporting-Multiple-Target-Frameworks.md * Update Package-restore-troubleshooting.md (#1088) * Update Supporting-Multiple-Target-Frameworks.md (#1086) * Update Creating-a-Package.md (#1084) * Update nuspec.md (#1065) * Replace namespaces with prefixes * Be consistent about namespace/prefix reservation * Update the details for IsImplicitlyDefined packages (#1067) * Update the details for IsImplicitlyDefined packages * Update Package-Manager-UI.md * Update Package-Manager-UI.md * Update Package-Manager-UI.md * PR feedback * Create PackageReference-with-packages-lock-file.md (#1100) * Create PackageReference-with-packages-lock-file.md * Update PackageReference-with-packages-lock-file.md * Update PackageReference-with-packages-lock-file.md * Fixes #1085 (#1099) * ; -> : (#1098) * Revert "Create PackageReference-with-packages-lock-file.md" (#1101) * Revert "; -> : (#1098)" This reverts commit 6ffe30a427c5a2109958d945d48e48e296fd3178. * Revert "Fixes #1085 (#1099)" This reverts commit b9b6c2f13a073918c1650a65be9fe673c1104b70. * Revert "Create PackageReference-with-packages-lock-file.md (#1100)" This reverts commit 79f240d7433c0ac4d4fd88e7e8ab7f93c62227c4. * Update Create-UI-Controls.md * Update TOC.md (#1125) fixes #1124 Remove the link to docs for creating .NET Standard packages in VS2015, since .NET Core tooling was only pre-release in VS2015. Using the dotnet CLI is recommended over VS2015, if VS2017 can't be used for some reason. * Update Package-References-in-Project-Files.md (#1119) * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Replaced staging.nuget.org with int.nugettest.org (#1132) The staging.nuget.org is deprecated and it is recommended to switch to int.nugettest.org (see https://github.com/NuGet/NuGetGallery/issues/5627). * staging.nuget.org has been deprecated (#1131) See https://github.com/NuGet/NuGetGallery/issues/5627. * Update Overview-and-Workflow.md (#1130) * Update Overview-and-Workflow.md Update styling and typo in image caption as a correction for #1129 * Update Overview-and-Workflow.md * Update Package-restore-troubleshooting.md (#1123) Add missing word. * Add files via upload * Update tool box icon spec (#1149) * Update tool box icon spec * Update Create-UI-Controls.md * Update Create-UI-Controls.md * CC74600: Unnecessarily nested lists (#1091) Hello, @karann-msft, This proposed file change comes from https://github.com/NuGet/docs.microsoft.com-nuget.es-es/pull/4 . Could you review this contribution and help to merge if agreed? Many thanks in advance. * fix: typo in authors token (#1120) Based on issue #1072, I've corrected the docs in the appropriate place. * Fixed typo (#1117) Corrected the spelling of 'delimeters' to delimiters * Grammar (#1113) fixed some grammatical errors * Revert "CC74600: Unnecessarily nested lists (#1091)" (#1152) This reverts commit 1c8db5f63041aac6668f56d0a33b60e0a1fdd05c. * Fixed formatting for note (#1090) * Fix erroneous extra lines in PackageReference documentation (#1153) This removes some seemingly unintended extra lines introduced by #1119. * Fixed typo (#1154) * add configFile option for nugget pack (#1115) add missing -ConfigFile option for nugget pack * Updated what-is-nuget.md to reflect Issue #1111 (#1114) Updated Visual Studio Team System to Azure DevOps to reflect Issue #1111 * Add symbols docs. (#1128) * Add symbols docs. * Updates * Update Symbol-Packages-V2.md * Update Symbol-Packages-V2.md Adding validation info to publish page for Symbols packages. * Feedback * Update * Update * Fix a broken link. * Feedback * Update symbol-package-publish-resource.md * Update Symbol-Packages-V2.md * Feedback * Feedback * Update TOC.md * Rename Symbol-Packages-V2.md to Symbol-Packages-snupkg.md * Update Symbol-Packages.md * Update Symbol-Packages.md * Update Symbol-Packages-snupkg.md * Update Symbol-Packages-snupkg.md * Update Symbol-Packages-snupkg.md * Update cli-ref-pack.md * Update cli-ref-pack.md * Update Symbol-Packages-snupkg.md * Update symbol-package-publish-resource.md --- docs/TOC.md | 7 +- docs/api/overview.md | 9 +- docs/api/symbol-package-publish-resource.md | 78 ++++++++++++ .../consume-packages/Overview-and-Workflow.md | 2 +- docs/consume-packages/Package-Restore.md | 8 +- .../Package-restore-troubleshooting.md | 2 +- docs/create-packages/Creating-a-Package.md | 8 +- .../Source-and-Config-File-Transformations.md | 2 +- .../create-packages/Symbol-Packages-snupkg.md | 111 ++++++++++++++++++ docs/create-packages/Symbol-Packages.md | 6 +- docs/guides/Create-UI-Controls.md | 6 +- docs/guides/media/ColorPicker_16x16x24.bmp | Bin 0 -> 824 bytes docs/policies/NuGet-FAQ.md | 6 +- docs/reference/nuspec.md | 2 +- docs/tools/cli-ref-pack.md | 6 +- docs/what-is-nuget.md | 4 +- 16 files changed, 230 insertions(+), 27 deletions(-) create mode 100644 docs/api/symbol-package-publish-resource.md create mode 100644 docs/create-packages/Symbol-Packages-snupkg.md create mode 100644 docs/guides/media/ColorPicker_16x16x24.bmp diff --git a/docs/TOC.md b/docs/TOC.md index f22ef366c..f3d15f12f 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -24,10 +24,10 @@ ## [Source and config file transformations](create-packages/source-and-config-file-transformations.md) ## [Creating localized packages](create-packages/creating-localized-packages.md) ## [Prerelease packages](create-packages/prerelease-packages.md) -## [Native packages](create-packages/native-packages.md) -## [Symbol packages](create-packages/symbol-packages.md) +## [Creating Native packages](create-packages/native-packages.md) +## [Creating Symbol packages](create-packages/symbol-packages-snupkg.md) ## [Signing packages](create-packages/sign-a-package.md) -## [Publish a package](create-packages/publish-a-package.md) +## [Publishing a package](create-packages/publish-a-package.md) ## Guides ### [Create UWP packages](guides/create-uwp-packages.md) ### [Creating UI controls as NuGet packages](guides/create-UI-controls.md) @@ -198,6 +198,7 @@ ## [How-to: query for all packages using the API](guides/api/query-for-all-published-packages.md) ## [Service index](api/service-index.md) ## [Push and delete](api/package-publish-resource.md) +## [Push symbol packages](api/symbol-package-publish-resource.md) ## [Search](api/search-query-service-resource.md) ## [Autocomplete](api/search-autocomplete-service-resource.md) ## [Package metadata](api/registration-base-url-resource.md) diff --git a/docs/api/overview.md b/docs/api/overview.md index 22293dc79..bab8c6559 100644 --- a/docs/api/overview.md +++ b/docs/api/overview.md @@ -53,16 +53,17 @@ Non-breaking protocol changes have been made to the API since it was first relea The **service index** describes a variety of resources. The current set of supported resources are as follows: -Resource name | Required | Description ----------------------------------------------------------------------- | -------- | ----------- +Resource name | Required | Description +---------------------------------------------------------------------- | -------- | ----------- [`PackagePublish`](package-publish-resource.md) | yes | Push and delete (or unlist) packages. [`SearchQueryService`](search-query-service-resource.md) | yes | Filter and search for packages by keyword. [`RegistrationsBaseUrl`](registration-base-url-resource.md) | yes | Get package metadata. [`PackageBaseAddress`](package-base-address-resource.md) | yes | Get package content (.nupkg). [`SearchAutocompleteService`](search-autocomplete-service-resource.md) | no | Discover package IDs and versions by substring. [`ReportAbuseUriTemplate`](report-abuse-resource.md) | no | Construct a URL to access a "report abuse" web page. -[`RepositorySignatures`](repository-signatures-resource.md) | no | Get certificates used for repository signing. -[`Catalog`](catalog-resource.md) | no | Full record of all package events. +[`RepositorySignatures`](repository-signatures-resource.md) | no | Get certificates used for repository signing. +[`Catalog`](catalog-resource.md) | no | Full record of all package events. +[`SymbolPackagePublish`](symbol-package-publish-resource.md) | no | Push symbol packages. In general, all non-binary data returned by a API resource are serialized using JSON. The response schema returned by each resource in the service index is defined individually for that resource. For more information about diff --git a/docs/api/symbol-package-publish-resource.md b/docs/api/symbol-package-publish-resource.md new file mode 100644 index 000000000..eeaaeb189 --- /dev/null +++ b/docs/api/symbol-package-publish-resource.md @@ -0,0 +1,78 @@ +--- +title: Push Symbol Packages, NuGet API | Microsoft Docs +author: +- cristinamanum +- kraigb +ms.author: +- cmanu +- kraigb +manager: skofman +ms.date: 10/30/2018 +ms.topic: reference +ms.prod: nuget +ms.technology: null +description: The publish service allows clients to publish new symbol packages. +keywords: NuGet API push symbol package +ms.reviewer: karann +--- + +# Push Symbol Packages + +It is possible to push symbols packages ([snupkg](../create-packages/Symbol-Packages-snupkg.md)) using the NuGet V3 API. +These operations are based off of the `SymbolPackagePublish` resource found in the [service index](service-index.md). + +## Versioning + +The following `@type` value is used: + +@type value | Notes +-------------------- | ----- +SymbolPackagePublish/4.9.0 | The initial release + +## Base URL + +The base URL for the following APIs is the value of the `@id` property of the `SymbolPackagePublish/4.9.0` resource in the +package source's [service index](service-index.md). For the documentation below, nuget.org's URL is used. Consider +`https://www.nuget.org/api/v2/symbolpackage` as a placeholder for the `@id` value found in the service index. + +## HTTP methods + +The `PUT` HTTP method is supported by this resource. + +## Push a symbol package + +nuget.org supports pushing new symbol packages format ([snupkg](../create-packages/Symbol-Packages-snupkg.md)) using the following API. + + PUT https://www.nuget.org/api/v2/symbolpackage + +Symbol packages with the same ID and version +can be submitted multiple times. A symbol package will be rejected in the following cases. +- A package with the same ID and version does not exist. +- A symbol package with the same ID and version was pushed but is not yet published. +- The symbol package ([snupkg](../create-packages/Symbol-Packages-snupkg.md)) is invalid (see [symbol package constraints](../create-packages/Symbol-Packages-snupkg.md)). + +### Request parameters + +Name | In | Type | Required | Notes +-------------- | ------ | ------ | -------- | ----- +X-NuGet-ApiKey | Header | string | yes | For example, `X-NuGet-ApiKey: {USER_API_KEY}` + +The API key is an opaque string gotten from the package source by the user and configured into the client. No +particular string format is mandated but the length of the API key should not exceed a reasonable size for HTTP header +values. + +### Request body + +The request body for the symbol push is same as with the request body of a package push request (see [package push and delete](package-publish-resource.md)). + +### Response + +Status Code | Meaning +----------- | ------- +201 | The symbol package was successfully pushed. +400 | The provided symbol package is invalid. +401 | The user is not authorized to perform this action. +404 | A corresponding package with the provided ID and version does not exist. +409 | A symbol package with the provided ID and version was pushed but it is not available yet. +413 | The package is too large. + diff --git a/docs/consume-packages/Overview-and-Workflow.md b/docs/consume-packages/Overview-and-Workflow.md index 05c72b8b6..43aa8cf7e 100644 --- a/docs/consume-packages/Overview-and-Workflow.md +++ b/docs/consume-packages/Overview-and-Workflow.md @@ -13,7 +13,7 @@ Between nuget.org and private package galleries that your organization might est ![Flow of going to a package source, finding a package, installing it in a project, then adding a using statement and calls to the package API](media/Overview-01-GeneralFlow.png) -\* _Visual Studio and dotnet.ex` only. The nuget install command does not modify project files or packages.config; entries must be managed manually._ +\* _Visual Studio and `dotnet.exe` only. The `nuget install` command does not modify project files or the `packages.config` file; entries must be managed manually._ For further details, see [Finding and Choosing Packages](../consume-packages/finding-and-choosing-packages.md) and [Different ways to install a NuGet package](ways-to-install-a-package.md). diff --git a/docs/consume-packages/Package-Restore.md b/docs/consume-packages/Package-Restore.md index e218a9d1e..17122999c 100644 --- a/docs/consume-packages/Package-Restore.md +++ b/docs/consume-packages/Package-Restore.md @@ -57,9 +57,9 @@ Package restore is primarily enabled through **Tools > Options > NuGet Package M
    ``` -
    - > [!Note] - > The `packageRestore/enabled` setting can be overridden globally by setting an environment variable called **EnableNuGetPackageRestore** with a value of TRUE or FALSE before launching Visual Studio or starting a build. + +> [!Note] +> The `packageRestore/enabled` setting can be overridden globally by setting an environment variable called **EnableNuGetPackageRestore** with a value of TRUE or FALSE before launching Visual Studio or starting a build. - **Automatically check for missing packages during build in Visual Studio**: controls automatic restore by changing the `packageRestore/automatic` setting in the `NuGet.Config` file as shown below (`%AppData%\NuGet\NuGet.Config` on Windows, `~/.nuget/NuGet/NuGet.Config` on Mac/Linux). When this option is set, running a build from Visual Studio automatically restores any missing packages. The option does not affect builds run from the command line using MSBuild. @@ -120,4 +120,4 @@ To avoid using the cache for HTTP sources, do one of the following: ## Troubleshooting -See [Troubleshooting package restore](package-restore-troubleshooting.md). \ No newline at end of file +See [Troubleshooting package restore](package-restore-troubleshooting.md). diff --git a/docs/consume-packages/Package-restore-troubleshooting.md b/docs/consume-packages/Package-restore-troubleshooting.md index c37ae3e1c..b20c754df 100644 --- a/docs/consume-packages/Package-restore-troubleshooting.md +++ b/docs/consume-packages/Package-restore-troubleshooting.md @@ -37,7 +37,7 @@ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. The missing file is {name}. ``` -This error occurs you attempt to build a project that contains references to one or more NuGet packages, but those packages are not presently installed on the computer or in the project. +This error occurs when you attempt to build a project that contains references to one or more NuGet packages, but those packages are not presently installed on the computer or in the project. - When using the PackageReference management format, the error means that the package is not installed in the *global-packages* folder as described on [Managing the global packages and cache folders](managing-the-global-packages-and-cache-folders.md). - When using `packages.config`, the error means that the package is not installed in the `packages` folder at the solution root. diff --git a/docs/create-packages/Creating-a-Package.md b/docs/create-packages/Creating-a-Package.md index 3e5c7e5c0..7ccf4004f 100644 --- a/docs/create-packages/Creating-a-Package.md +++ b/docs/create-packages/Creating-a-Package.md @@ -46,7 +46,7 @@ Required properties: - The package identifier, which must be unique across the gallery that hosts the package. - A specific version number in the form *Major.Minor.Patch[-Suffix]* where *-Suffix* identifies [pre-release versions](prerelease-packages.md) -- The package title as it should appears on the host (like nuget.org) +- The package title as it should appear on the host (like nuget.org) - Author and owner information. - A long description of the package. @@ -152,7 +152,7 @@ You then edit the file by hand so that it describes the exact content you want i ### From a convention-based working directory -Because a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension, its often easiest to create the folder structure you want on your local file system, then create the `.nuspec` file directly from that structure. The `nuget pack` command then automatically adds all files in that folder structure (excluding any folders that begin with `.`, allowing you keep private files in the same structure). +Because a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension, it's often easiest to create the folder structure you want on your local file system, then create the `.nuspec` file directly from that structure. The `nuget pack` command then automatically adds all files in that folder structure (excluding any folders that begin with `.`, allowing you to keep private files in the same structure). The advantage to this approach is that you don't need to specify in the manifest which files you want to include in the package (as explained later in this topic). You can simply have your build process produce the exact folder structure that goes into the package, and you can easily include other files that might not be part of a project otherwise: @@ -172,7 +172,7 @@ The folder conventions are as follows: | build | MSBuild `.targets` and `.props` files | Automatically inserted into the project file or `project.lock.json` (NuGet 3.x+). | | tools | Powershell scripts and programs accessible from the Package Manager Console | The `tools` folder is added to the `PATH` environment variable for the Package Manager Console only (Specifically, *not* to the `PATH` as set for MSBuild when building the project). | -Because your folder structure can contain any number of assemblies for any number of target frameworks, this method is necessary when creating packages that support multiple frameworks +Because your folder structure can contain any number of assemblies for any number of target frameworks, this method is necessary when creating packages that support multiple frameworks. In any case, once you have the desired folder structure in place, run the following command in that folder to create the `.nuspec` file: @@ -316,7 +316,7 @@ When you include a file named `readme.txt` in the package root, Visual Studio di In some cases, you might want to add custom build targets or properties in projects that consume your package, such as running a custom tool or process during build. You do this by placing files in the form `.targets` or `.props` (such as `Contoso.Utility.UsefulStuff.targets`) within the `\build` folder of the project. -Files in the root `\build` folder are considered suitable for all target frameworks. To provide framework-specific files, first place those within appropriate subfolders, such as the following: +Files in the root `\build` folder are considered suitable for all target frameworks. To provide framework-specific files, first place them within appropriate subfolders, such as the following: \build \netstandard1.4 diff --git a/docs/create-packages/Source-and-Config-File-Transformations.md b/docs/create-packages/Source-and-Config-File-Transformations.md index ec49c9e3c..ad1bb50a7 100644 --- a/docs/create-packages/Source-and-Config-File-Transformations.md +++ b/docs/create-packages/Source-and-Config-File-Transformations.md @@ -109,7 +109,7 @@ To see the effect of installing and uninstalling the package, create a new ASP.N ### XDT transforms -You can modify config files using [XDT syntax](https://msdn.microsoft.com/library/dd465326.aspx). You can also have NuGet replace tokens with [project properties](/dotnet/api/vslangproj.projectproperties?view=visualstudiosdk-2017&viewFallbackFrom=netframework-4.7) by including the property name within `$` delimeters (case-insensitive). +You can modify config files using [XDT syntax](https://msdn.microsoft.com/library/dd465326.aspx). You can also have NuGet replace tokens with [project properties](/dotnet/api/vslangproj.projectproperties?view=visualstudiosdk-2017&viewFallbackFrom=netframework-4.7) by including the property name within `$` delimiters (case-insensitive). For example, the following `app.config.install.xdt` file will insert an `appSettings` element into `app.config` containing the `FullPath`, `FileName`, and `ActiveConfigurationSettings` values from the project: diff --git a/docs/create-packages/Symbol-Packages-snupkg.md b/docs/create-packages/Symbol-Packages-snupkg.md new file mode 100644 index 000000000..6f4829dad --- /dev/null +++ b/docs/create-packages/Symbol-Packages-snupkg.md @@ -0,0 +1,111 @@ +--- +title: How to publish NuGet symbol packages using the new symbol package format '.snupkg'| Microsoft Docs +author: +- cristinamanu +- kraigb +ms.author: +- cristinamanu +- kraigb +manager: skofman +ms.date: 10/30/2018 +ms.topic: reference +ms.prod: nuget +ms.technology: null +description: How to create NuGet symbol packages (snupkg). +keywords: NuGet symbol packages, NuGet package debugging, supporting NuGet debugging, package symbols, symbol package conventions +ms.reviewer: +- anangaur +- karann +--- + + +# Creating symbol packages (.snupkg) + +## Prerequisites + +[nuget.exe v4.9.0 or above](https://www.nuget.org/downloads) or [dotnet.exe v2.2.0 or above](https://www.microsoft.com/net/download/dotnet-core/2.2), which implement the required [NuGet protocols](../api/nuget-protocols.md). + +## Creating a symbol package + +A snupkg symbol package can be created from a .nuspec file or from a .csproj file. NuGet.exe and dotnet.exe are both supported. When the options ```-Symbols -SymbolPackageFormat snupkg``` are used on the nuget.exe pack command a .snupkg file will be created in additon to the .nupkg file. + +Example commands to create .snupkg files +``` +dotnet pack MyPackage.csproj --include-symbols -p:SymbolPackageFormat=snupkg + +nuget pack MyPackage.nuspec -Symbols -SymbolPackageFormat snupkg + +nuget pack MyPackage.csproj -Symbols -SymbolPackageFormat snupkg + +msbuild /t:pack MyPackage.csproj /p:IncludeSymbols=true /p:SymbolPackageFormat=snupkg +``` + +`.snupkgs` are not produced by default. You must pass the `SymbolsPackageFormat` property along with `-Symbols` in case of nuget.exe, `--include-symbols` in case of dotnet.exe, or `/p:IncludeSymbols` in case of msbuild. + +SymbolsPackageFormat property can have one of the two values: `symbols.nupkg` (the default) or `snupkg`. If the SymbolsPackageFormat is not specified, it defaults to `symbols.nupkg` and a legacy symbol package will be created. + +> [!Note] +> The legacy format `.symbols.nupkg` is still supported but only for compatibility reasons (see [Legacy Symbol Packages](Symbol-Packages.md)). NuGet.org symbols server only accepts the new symbol package format - `.snupkg`. + +## Publishing a symbol package + +1. For convenience, first save your API key with NuGet (see [publish a package](../create-packages/publish-a-package.md)). + + ```cli + nuget SetApiKey Your-API-Key + ``` + +1. After publishing your primary package to nuget.org, push the symbol package as follows. + + ```cli + nuget push MyPackage.snupkg + ``` + +1. You can also push both primary and symbol packages at the same time using the below command. Both, .nupkg and .snupkg files need to be present in the current folder. + + ```cli + nuget push MyPackage.nupkg + ``` + +In this case, NuGet will publish to nuget.org the `MyPackage.nupkg` first followed by `MyPackage.snupkg`. + +## NuGet.org symbol server + +NuGet.org supports its own symbols server repository and only accepts the new symbol package format - `.snupkg`. Package consumers can use the symbols published to nuget.org symbol server by adding `https://symbols.nuget.org/download/symbols` to their symbol sources in Visual Studio, which allows stepping into package code in the Visual Studio debugger. See [Specify symbol (.pdb) and source files in the Visual Studio debugger](https://docs.microsoft.com/en-us/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger?view=vs-2017) for details on that process. + +### Nuget.org symbol package constraints + +The symbol packages supported on nuget.org have the following contraints + +- Only the following file extensions are allowed to be added to a symbol package. ```.pdb,.nuspec,.xml,.psmdcp,.rels,.p7s``` +- Only managed [Portable pdbs](https://github.com/dotnet/corefx/blob/master/src/System.Reflection.Metadata/specs/PortablePdb-Metadata.md) are currently supported on nuget symbol server. +- The pdbs and associated nupkg dlls need to be built with the compiler in Visual Studio version 15.9 or above (see [pdb crypto hash](https://github.com/dotnet/roslyn/issues/24429)) + +The symbol package publish on nuget.org will fail if any other file types are included in the .snupkg. + +### Symbol package validation and indexing + +Symbol packages published to [NuGet.org](https://www.nuget.org/) undergo several validations, such as virus checks. + +When the package has passed all validation checks, it might take a while for the symbols to index and be available for consumption from the NuGet.org symbol servers. If the package fails a validation check, the package details page for the .nupkg will update to display the associated error and you will also receive an email notifying you about it. + +Package validation and indexing usually takes under 15 minutes. If the package publishing is taking longer than expected, visit [status.nuget.org](https://status.nuget.org/) to check if nuget.org is experiencing any interruptions. If all systems are operational and the package hasn't been successfully published within an hour, please login to nuget.org and contact us using the Contact Support link on the package details page. + +## Symbol package structure + +The .nupkg file would be exactly the same as it is today, but the .snupkg file would have the following characteristics: + +1) The .snupkg will have the same id and version as the corresponding .nupkg. +2) The .snupkg will have the exact folder structure as the nupkg for any DLL or EXE files with the distinction that instead of DLLs/EXEs, their corresponding PDBs will be included in the same folder hierarchy. Files and folders with extensions other than PDB will be left out of the snupkg. +3) The .nuspec file in the .snupkg will also specify a new PackageType as below. This should the only one PackageType specified. +``` + + + +``` +4) If an author decides to use a custom nuspec to build their nupkg and snupkg, the snupkg should have the same folder hierarchy and files detailed in 2). +5) ```authors``` and ```owners``` field will be excluded from the snupkg's nuspec. + +## See Also + +[NuGet-Package-Debugging-&-Symbols-Improvements](https://github.com/NuGet/Home/wiki/NuGet-Package-Debugging-&-Symbols-Improvements) diff --git a/docs/create-packages/Symbol-Packages.md b/docs/create-packages/Symbol-Packages.md index 96355fb77..ba6cfce41 100644 --- a/docs/create-packages/Symbol-Packages.md +++ b/docs/create-packages/Symbol-Packages.md @@ -8,7 +8,11 @@ ms.topic: conceptual ms.reviewer: anangaur --- -# Creating symbol packages +# Creating symbol packages (legacy) + +> [!Important] +> The new recommended format for symbol packages is .snupkg. See [Creating symbol packages (.snupkg)](Symbol-Packages-snupkg.md).
    +> .symbols.nupkg is still supported but only for compatibility reasons. In addition to building packages for nuget.org or other sources, NuGet also supports creating associated symbol packages and publishing them to the SymbolSource repository. diff --git a/docs/guides/Create-UI-Controls.md b/docs/guides/Create-UI-Controls.md index e5126ffbf..05e91d47a 100644 --- a/docs/guides/Create-UI-Controls.md +++ b/docs/guides/Create-UI-Controls.md @@ -84,7 +84,11 @@ In the following example, the control implemented in `ManagedPackage.winmd` will To display a custom icon in the toolbox/assets pane, add an image to your project or the corresponding `design.dll` project with the name “Namespace.ControlName.extension” and set the build action to “Embedded Resource”. You must also ensure that the associated `AssemblyInfo.cs` specifies the ProvideMetadata attribute - `[assembly: ProvideMetadata(typeof(RegisterMetadata))]`. See this [sample](https://github.com/NuGet/Samples/blob/master/ExtensionSDKasNuGetPackage/NativePackage.Design/Properties/AssemblyInfo.cs#L20). -Supported formats are `.png`, `.jpg`, `.jpeg`, `.gif`, and `.bmp`. The recommended image size is 64 pixels by 64 pixels. +Supported formats are `.png`, `.jpg`, `.jpeg`, `.gif`, and `.bmp`. The recommended format is BMP24 in 16 pixels by 16 pixels. + +![Tool box icon sample](media/ColorPicker_16x16x24.bmp) + +The pink background is replaced at runtime. The icons are recolored when the Visual Studio theme is changed and that background color is expected. For more information, please reference [Images and Icons for Visual Studio](https://docs.microsoft.com/en-us/visualstudio/extensibility/ux-guidelines/images-and-icons-for-visual-studio). In the example below, the project contains an image file named “ManagedPackage.MyCustomControl.png”. diff --git a/docs/guides/media/ColorPicker_16x16x24.bmp b/docs/guides/media/ColorPicker_16x16x24.bmp new file mode 100644 index 0000000000000000000000000000000000000000..1ab3745030cd581bfc86554c46efd3e894939f9d GIT binary patch literal 824 zcmb7?F;2rk5JeYK(jY31kP}4I>D{|`?*sS`-jJ%`O`u)FuWY2@UiRo)bpR%rh)`hw4&o6m@b0w=kpq zGcef0a;Xx#w}U(wF~ERTQr9&mRaNP{nn!M5zpi~r5Clw=Wtq<-@hi`Bk-V30#M^)D zn9JwI+3&=_S!Q`$t+--@@7k8kFfUKfz%omcBuFSfiSEm?Bo(oB7KtR1k#4QU8JJHA M_Me|w-GGhx1`&fTk^lez literal 0 HcmV?d00001 diff --git a/docs/policies/NuGet-FAQ.md b/docs/policies/NuGet-FAQ.md index 452873bfc..088b5f531 100644 --- a/docs/policies/NuGet-FAQ.md +++ b/docs/policies/NuGet-FAQ.md @@ -161,7 +161,7 @@ NuGet recommends all packages to be signed. A design principle of package signin Note that dependencies listed for your package are generated automatically from the package itself and cannot be edited. -In addition, uploading packages to [staging.nuget.org](http://staging.nuget.org) is a great way to test and validate your package without making a package available in the public gallery. +In addition, uploading packages to [int.nugettest.org](https://int.nugettest.org) is a great way to test and validate your package without making a package available in the public gallery. **Is it possible to reserve names for packages that will be published in future?** @@ -177,9 +177,9 @@ We encourage the NuGet community to work together to resolve any disputes that m **Is it recommended to upload my test packages to nuget.org?** -For test purposes, you can use [staging.nuget.org](http://staging.nuget.org), or alternative public NuGet servers like [myget.org](https://myget.org) or [Visual Studio Team Services](https://blogs.msdn.microsoft.com/visualstudioalm/2015/08/27/announcing-package-management-support-for-vsotfs/). +For test purposes, you can use [int.nugettest.org](https://int.nugettest.org), or alternative public NuGet servers like [myget.org](https://myget.org) or [Visual Studio Team Services](https://blogs.msdn.microsoft.com/visualstudioalm/2015/08/27/announcing-package-management-support-for-vsotfs/). -Note that packages uploaded to staging.nuget.org may not be preserved. See [Goodbye preview](http://blog.nuget.org/20130419/goodbye-preview.html). +Note that packages uploaded to int.nugettest.org may not be preserved. **What is the maximum size of packages I can upload to nuget.org?** diff --git a/docs/reference/nuspec.md b/docs/reference/nuspec.md index 706cea747..5c033100e 100644 --- a/docs/reference/nuspec.md +++ b/docs/reference/nuspec.md @@ -142,7 +142,7 @@ With the exception of `$configuration$`, values in the project are used in prefe | --- | --- | --- | **$id$** | Project file | AssemblyName (title) from the project file | | **$version$** | AssemblyInfo | AssemblyInformationalVersion if present, otherwise AssemblyVersion | -| **$author$** | AssemblyInfo | AssemblyCompany | +| **$authors$** | AssemblyInfo | AssemblyCompany | | **$title$** | AssemblyInfo | AssemblyTitle | | **$description$** | AssemblyInfo | AssemblyDescription | | **$copyright$** | AssemblyInfo | AssemblyCopyright | diff --git a/docs/tools/cli-ref-pack.md b/docs/tools/cli-ref-pack.md index 9bb7b2afb..3e25dfd9d 100644 --- a/docs/tools/cli-ref-pack.md +++ b/docs/tools/cli-ref-pack.md @@ -33,6 +33,7 @@ where `` and `` specify the `.nuspec` or project file, | Exclude | Specifies one or more wildcard patterns to exclude when creating a package. To specify more than one pattern, repeat the -Exclude flag. See example below. | | ExcludeEmptyDirectories | Prevents inclusion of empty directories when building the package. | | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | +| ConfigFile | Specify the configuration file for the pack command. | | Help | Displays help information for the command. | | IncludeReferencedProjects | Indicates that the built package should include referenced projects either as dependencies or as part of the package. If a referenced project has a corresponding `.nuspec` file that has the same name as the project, then that referenced project is added as a dependency. Otherwise, the referenced project is added as part of the package. | | MinClientVersion | Set the *minClientVersion* attribute for the created package. This value will override the value of the existing *minClientVersion* attribute (if any) in the `.nuspec` file. | @@ -43,7 +44,7 @@ where `` and `` specify the `.nuspec` or project file, | OutputDirectory | Specifies the folder in which the created package is stored. If no folder is specified, the current folder is used. | | Properties | Should appear last on the command line after other options. Specifies a list of properties that override values in the project file; see [Common MSBuild Project Properties](/visualstudio/msbuild/common-msbuild-project-properties) for property names. The Properties argument here is a list of token=value pairs, separated by semicolons, where each occurrence of `$token$` in the `.nuspec` file will be replaced with the given value. Values can be strings in quotation marks. Note that for the "Configuration" property, the default is "Debug". To change to a Release configuration, use `-Properties Configuration=Release`. | | Suffix | *(3.4.4+)* Appends a suffix to the internally generated version number, typically used for appending build or other pre-release identifiers. For example, using `-suffix nightly` will create a package with a version number like `1.2.3-nightly`. Suffixes must start with a letter to avoid warnings, errors, and potential incompatibilities with different versions of NuGet and the NuGet Package Manager. | -| Symbols | Specifies that the package contains sources and symbols. When used with a `.nuspec` file, this creates a regular NuGet package file and the corresponding symbols package. | +| Symbols | Specifies that the package contains sources and symbols. When used with a `.nuspec` file, this creates a regular NuGet package file and the corresponding symbols package. By default it creates a [legacy symbol package](../create-packages/Symbol-Packages.md). The new recommended format for symbol packages is .snupkg. See [Creating symbol packages (.snupkg)](../create-packages/Symbol-Packages-snupkg.md). | | Tool | Specifies that the output files of the project should be placed in the `tool` folder. | | Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | | Version | Overrides the version number from the `.nuspec` file. | @@ -85,6 +86,9 @@ nuget pack foo.csproj -Build -Symbols -Properties owners=janedoe,xiaop;version=" # Create a package from project foo.csproj, using MSBuild version 12 to build the project nuget pack foo.csproj -Build -Symbols -MSBuildVersion 12 -Properties owners=janedoe,xiaop;version="1.0.5 +# Create a package from project foo.nuspec and the corresponding symbol package using the new recommended format .snupkg +nuget pack foo.nuspec -Symbols -SymbolPackageFormat snupkg + nuget pack foo.nuspec -Version 2.1.0 nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5 diff --git a/docs/what-is-nuget.md b/docs/what-is-nuget.md index c1e81175f..8fa2ac7f2 100644 --- a/docs/what-is-nuget.md +++ b/docs/what-is-nuget.md @@ -19,7 +19,7 @@ Because NuGet supports private hosts alongside the public nuget.org host, you ca ## The flow of packages between creators, hosts, and consumers -In its role as a public host, NuGet itself maintains the central repository of over 100,000 unique packages at [nuget.org](https://www.nuget.org). These packages are employed by millions of .NET/.NET Core developers every day. NuGet also enables you to host packages privately in the cloud (such as on Visual Studio Team Services), on a private network, or even on just your local file system. By doing so, those packages are available to only those developers that have access to the host, giving you the ability to make packages available to a specific group of consumers. The options are explained on [Hosting your own NuGet feeds](hosting-packages/overview.md). Through configuration options, you can also control exactly which hosts can be accessed by any given computer, thereby ensuring that packages are obtained from specific sources rather than a public repository like nuget.org. +In its role as a public host, NuGet itself maintains the central repository of over 100,000 unique packages at [nuget.org](https://www.nuget.org). These packages are employed by millions of .NET/.NET Core developers every day. NuGet also enables you to host packages privately in the cloud (such as on Azure DevOps), on a private network, or even on just your local file system. By doing so, those packages are available to only those developers that have access to the host, giving you the ability to make packages available to a specific group of consumers. The options are explained on [Hosting your own NuGet feeds](hosting-packages/overview.md). Through configuration options, you can also control exactly which hosts can be accessed by any given computer, thereby ensuring that packages are obtained from specific sources rather than a public repository like nuget.org. Whatever its nature, a host serves as the point of connection between package *creators* and package *consumers*. Creators build useful NuGet packages and publish them to a host. Consumers then search for useful and compatible packages on accessible hosts, downloading and including those packages in their projects. Once installed in a project, the packages' APIs are available to the rest of the project code. @@ -73,7 +73,7 @@ NuGet instead maintains a simple reference list of the packages upon which a pro With only the reference list, NuGet can then reinstall—that is, *restore*—all of those packages from public and/or private hosts at any later time. When committing a project to source control, or sharing it in some other way, you include only the reference list and exclude any package binaries (see [Packages and source control](consume-packages/packages-and-source-control.md).) -The computer that receives a project, such as a build server obtaining a copy of the project as part of an automated deployment system, simply asks NuGet to restore dependencies whenever they're needed. Build systems like Visual Studio Team Services provide "NuGet restore" steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository), they can invoke command like `nuget restore` (NuGet CLI), `dotnet restore` (dotnet CLI), or `Install-Package` (Package Manager Console) to obtain all the necessary packages. Visual Studio, for its part, automatically restores packages when building a project (provided that automatic restore is enabled, as described on [Package restore](consume-packages/package-restore.md)). +The computer that receives a project, such as a build server obtaining a copy of the project as part of an automated deployment system, simply asks NuGet to restore dependencies whenever they're needed. Build systems like Azure DevOps provide "NuGet restore" steps for this exact purpose. Similarly, when developers obtain a copy of a project (as when cloning a repository), they can invoke command like `nuget restore` (NuGet CLI), `dotnet restore` (dotnet CLI), or `Install-Package` (Package Manager Console) to obtain all the necessary packages. Visual Studio, for its part, automatically restores packages when building a project (provided that automatic restore is enabled, as described on [Package restore](consume-packages/package-restore.md)). Clearly, then, NuGet's primary role where developers are concerned is maintaining that reference list on behalf of your project and providing the means to efficiently restore (and update) those referenced packages. This list is maintained in one of two *package management formats*, as they're called: From ffbdf147f84f8bd60495d3288dff9a5275491c17 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 12 Nov 2018 19:44:51 -0800 Subject: [PATCH 0962/2943] Update Create-UI-Controls.md --- docs/guides/Create-UI-Controls.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/Create-UI-Controls.md b/docs/guides/Create-UI-Controls.md index 05e91d47a..ce72a46cb 100644 --- a/docs/guides/Create-UI-Controls.md +++ b/docs/guides/Create-UI-Controls.md @@ -86,7 +86,7 @@ To display a custom icon in the toolbox/assets pane, add an image to your projec Supported formats are `.png`, `.jpg`, `.jpeg`, `.gif`, and `.bmp`. The recommended format is BMP24 in 16 pixels by 16 pixels. -![Tool box icon sample](media/ColorPicker_16x16x24.bmp) +![Tool box icon sample](https://raw.githubusercontent.com/NuGet/docs.microsoft.com-nuget/live/docs/guides/media/ColorPicker_16x16x24.bmp) The pink background is replaced at runtime. The icons are recolored when the Visual Studio theme is changed and that background color is expected. For more information, please reference [Images and Icons for Visual Studio](https://docs.microsoft.com/en-us/visualstudio/extensibility/ux-guidelines/images-and-icons-for-visual-studio). From 1dc7920724aec91574fa74c996817f0fcdc8b0ae Mon Sep 17 00:00:00 2001 From: Pato Beltran Date: Tue, 13 Nov 2018 11:09:44 -0800 Subject: [PATCH 0963/2943] address feedback --- docs/tools/cli-ref-trusted-signers.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/tools/cli-ref-trusted-signers.md b/docs/tools/cli-ref-trusted-signers.md index 55e69ea33..15fa79288 100644 --- a/docs/tools/cli-ref-trusted-signers.md +++ b/docs/tools/cli-ref-trusted-signers.md @@ -30,7 +30,7 @@ Lists all the trusted signers in the configuration. This option will include all Adds a trusted signer with the given name to the config. This option has different gestures to add a trusted author or repository. -##Options for add based on a package +## Options for add based on a package ```cli nuget trusted-signers add -Name [options] @@ -47,7 +47,7 @@ where `` is one or more `.nupkg` files. Providing both `-Author` and `-Repository` at the same time is not supported. -##Options for add based on a service index +## Options for add based on a service index ```cli nuget trusted-signers add -Name [options] @@ -61,7 +61,7 @@ _Note_: This option will only add trusted repositories. | AllowUntrustedRoot | Specifies if the certificate for the trusted signer should be allowed to chain to an untrusted root. | | Owners | Semi-colon separated list of trusted owners to further restrict the trust of a repository. | -##Options for add based on the certificate information +## Options for add based on the certificate information ```cli nuget trusted-signers add -Name [options] From 7d982d210d047c9f32047ccd0b13bbdfe4d280c8 Mon Sep 17 00:00:00 2001 From: Pato Beltran Date: Tue, 13 Nov 2018 15:04:31 -0800 Subject: [PATCH 0964/2943] Specify that sync deletes certs --- docs/tools/cli-ref-trusted-signers.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/tools/cli-ref-trusted-signers.md b/docs/tools/cli-ref-trusted-signers.md index 15fa79288..651b7c839 100644 --- a/docs/tools/cli-ref-trusted-signers.md +++ b/docs/tools/cli-ref-trusted-signers.md @@ -83,6 +83,8 @@ Removes any trusted signers that match the given name. Requests the latest list of certificates used in a currently trusted repository to update the the existing certificate list in the trusted signer. +_Note_: This gesture will delete the current list of certificates and replace them with an up-to-date list from the repository. + ## Options | Option | Description | From 4dfcd87e78b8df6b1af69495c58ec7a70e7d1323 Mon Sep 17 00:00:00 2001 From: ridomin Date: Tue, 13 Nov 2018 21:12:57 -0800 Subject: [PATCH 0965/2943] Add Client Policies to Signed Packages ref --- docs/reference/Signed-Packages-Reference.md | 75 ++++++++++++++++++++- 1 file changed, 74 insertions(+), 1 deletion(-) diff --git a/docs/reference/Signed-Packages-Reference.md b/docs/reference/Signed-Packages-Reference.md index 3e56950f5..ebac1681b 100644 --- a/docs/reference/Signed-Packages-Reference.md +++ b/docs/reference/Signed-Packages-Reference.md @@ -101,7 +101,7 @@ Once a user has a certificate registered, all future package submissions **must* Users can also remove a registered certificate from the account. Once a certificate is removed, packages signed with that certificate fail at submission. Existing packages aren't affected. -## Configure package signing requirements +## Configure package signing submission requirements If you are the sole owner of a package, you are the required signer. That is, you can use any of the registered certificates to sign your packages and submit to nuget.org. @@ -110,3 +110,76 @@ If a package has multiple owners, by default, "Any" owner's certificates can be Similarly, if the default "Any" option is selected for a package where one owner has a certificate registered and another owner does not have any certificate registered, then nuget.org accepts either a signed package with a signature registered by one of its owners or an unsigned package (because one of the owners does not have any certificate registered). ![Configure package signers](media/configure-package-signers.png) + +## Customize package consumption requirements + +*NuGet 4.9.0+ and Visual Studio version 15.9 and later* + +You can customize how NuGet clients validate package signatures by enabling the `signatureValidationMode` to `required`. + +```xml + + + +``` + +This mode will verify that all packages are signed by any of the certificates trusted in the `nuget.config` file. This file allows you to specify which authors and/or repositories are trusted based on the certificate fingerprint. + +### Trust package author + +To trust packages based on the author signature use the `authors` element: + +```xml + + + + + +``` + +>[!TIP] +>Use the `nuget.exe` [verify command](https://docs.microsoft.com/en-us/nuget/tools/cli-ref-verify) to get the `SHA256` value of the certificate fingerprint. + + +### Trust all packages from a repository + +To trust packages based on the repository signature use the `repository` element: + +```xml + + + + + +``` + +### Trust Package Owners + +Repository signatures include additional metadata to identify who were the package owners at the time of submission. You can restrict packages from a repository based on a list owners: + + +```xml + + + + microsoft;nuget + + +``` + + +### Untrusted Root certificates + +In some situations you might want to enable signing and verification using certificates that do not trust to a trusted root in the local machine. You can use the `allowUntrustedRoot` attribute to customize this behavior. + +### Sync repository certificates + +Package repositories must announce the certificates they use in their [service index](https://docs.microsoft.com/en-us/nuget/api/service-index). Eventually the repository will update these certificates, e.g. when the certificate expires. When that happens, clients with specific policies will require to update the configuration to include the new added certificate. You can easily upgrade the trusted signers associated to a repository by using the `nuget.exe` [trusted-signers sync command](tools/cli-ref-trusted-signers.md#nuget-trusted-signers-sync--name-). + +### Schema reference + +The complete schema reference for the client policies can be found in the [nuget.config reference](reference/nuget-config-file#trustedsigners-section) \ No newline at end of file From 13b8e18e6f8891c6300821d34760e5c13577eb9d Mon Sep 17 00:00:00 2001 From: Pato Beltran Date: Wed, 14 Nov 2018 16:56:59 -0800 Subject: [PATCH 0966/2943] Add list sample output --- docs/tools/cli-ref-trusted-signers.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/docs/tools/cli-ref-trusted-signers.md b/docs/tools/cli-ref-trusted-signers.md index 651b7c839..ec987b5da 100644 --- a/docs/tools/cli-ref-trusted-signers.md +++ b/docs/tools/cli-ref-trusted-signers.md @@ -26,6 +26,28 @@ if none of `list|add|remove|sync` is specified, the command will default to `lis Lists all the trusted signers in the configuration. This option will include all the certificates (with fingerprint and fingerprint algorithm) each signer has. If a certificate has a preceding `[U]`, it means that certificate entry has `allowUntrustedRoot` set as `true`. +Below is an example output from this command: + +```cli +$ nuget trusted-signers +Registered trusted signers: + + + 1. nuget.org [repository] + Service Index: https://api.nuget.org/v3/index.json + Certificate fingerprint(s): + SHA256 - 0E5F38F57DC1BCC806D8494F4F90FBCEDD988B46760709CBEEC6F4219AA6157D + + 2. microsoft [author] + Certificate fingerprint(s): + SHA256 - 3F9001EA83C560D712C24CF213C3D312CB3BFF51EE89435D3430BD06B5D0EECE + + 3. myUntrustedAuthorSignature [author] + Certificate fingerprint(s): + [U] SHA256 - 518F9CF082C0872025EFB2587B6A6AB198208F63EA58DD54D2B9FF6735CA4434 + +``` + ## nuget trusted-signers add [options] Adds a trusted signer with the given name to the config. This option has different gestures to add a trusted author or repository. From 63ba54def39e08242c864e3fa8d0a00758c6ac58 Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Thu, 15 Nov 2018 13:36:15 -0800 Subject: [PATCH 0967/2943] add nu5036 related to bad license uri in 4.9.0 --- docs/reference/Errors-and-Warnings.md | 2 +- docs/reference/errors-and-warnings/NU5036.md | 27 ++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 docs/reference/errors-and-warnings/NU5036.md diff --git a/docs/reference/Errors-and-Warnings.md b/docs/reference/Errors-and-Warnings.md index e47942cd1..8c5e237cc 100644 --- a/docs/reference/Errors-and-Warnings.md +++ b/docs/reference/Errors-and-Warnings.md @@ -23,7 +23,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | Compatibility errors | [NU1201](./errors-and-warnings/NU1201.md), [NU1202](./errors-and-warnings/NU1202.md), [NU1203](./errors-and-warnings/NU1203.md), [NU1401](./errors-and-warnings/NU1401.md) | | NuGet internal errors | [NU1000](./errors-and-warnings/NU1000.md) | | Signed packages errors(creation and verification) | [NU3001](./errors-and-warnings/NU3001.md), [NU3004](./errors-and-warnings/NU3004.md), [NU3005](./errors-and-warnings/NU3005.md), [NU3008](./errors-and-warnings/NU3008.md), [NU3012](./errors-and-warnings/NU3012.md), [NU3028](./errors-and-warnings/NU3028.md) | -| Pack Errors | [NU5000](./errors-and-warnings/NU5000.md), [NU5001](./errors-and-warnings/NU5001.md), [NU5002](./errors-and-warnings/NU5002.md), [NU5003](./errors-and-warnings/NU5003.md), [NU5004](./errors-and-warnings/NU5004.md), [NU5005](./errors-and-warnings/NU5005.md), [NU5007](./errors-and-warnings/NU5007.md), [NU5008](./errors-and-warnings/NU5008.md), [NU5009](./errors-and-warnings/NU5009.md), [NU5010](./errors-and-warnings/NU5010.md), [NU5011](./errors-and-warnings/NU5011.md), [NU5012](./errors-and-warnings/NU5012.md), [NU5013](./errors-and-warnings/NU5013.md), [NU5014](./errors-and-warnings/NU5014.md), [NU5015](./errors-and-warnings/NU5015.md), [NU5016](./errors-and-warnings/NU5016.md), [NU5017](./errors-and-warnings/NU5017.md), [NU5018](./errors-and-warnings/NU5018.md), [NU5019](./errors-and-warnings/NU5019.md), [NU5020](./errors-and-warnings/NU5020.md), [NU5021](./errors-and-warnings/NU5021.md), [NU5022](./errors-and-warnings/NU5022.md), [NU5023](./errors-and-warnings/NU5023.md), [NU5024](./errors-and-warnings/NU5024.md), [NU5025](./errors-and-warnings/NU5025.md), [NU5026](./errors-and-warnings/NU5026.md), [NU5027](./errors-and-warnings/NU5027.md), [NU5028](./errors-and-warnings/NU5028.md), [NU5029](./errors-and-warnings/NU5029.md) +| Pack Errors | [NU5000](./errors-and-warnings/NU5000.md), [NU5001](./errors-and-warnings/NU5001.md), [NU5002](./errors-and-warnings/NU5002.md), [NU5003](./errors-and-warnings/NU5003.md), [NU5004](./errors-and-warnings/NU5004.md), [NU5005](./errors-and-warnings/NU5005.md), [NU5007](./errors-and-warnings/NU5007.md), [NU5008](./errors-and-warnings/NU5008.md), [NU5009](./errors-and-warnings/NU5009.md), [NU5010](./errors-and-warnings/NU5010.md), [NU5011](./errors-and-warnings/NU5011.md), [NU5012](./errors-and-warnings/NU5012.md), [NU5013](./errors-and-warnings/NU5013.md), [NU5014](./errors-and-warnings/NU5014.md), [NU5015](./errors-and-warnings/NU5015.md), [NU5016](./errors-and-warnings/NU5016.md), [NU5017](./errors-and-warnings/NU5017.md), [NU5018](./errors-and-warnings/NU5018.md), [NU5019](./errors-and-warnings/NU5019.md), [NU5020](./errors-and-warnings/NU5020.md), [NU5021](./errors-and-warnings/NU5021.md), [NU5022](./errors-and-warnings/NU5022.md), [NU5023](./errors-and-warnings/NU5023.md), [NU5024](./errors-and-warnings/NU5024.md), [NU5025](./errors-and-warnings/NU5025.md), [NU5026](./errors-and-warnings/NU5026.md), [NU5027](./errors-and-warnings/NU5027.md), [NU5028](./errors-and-warnings/NU5028.md), [NU5029](./errors-and-warnings/NU5029.md), [NU5036](./errors-and-warnings/NU5036.md) **Warnings** diff --git a/docs/reference/errors-and-warnings/NU5036.md b/docs/reference/errors-and-warnings/NU5036.md new file mode 100644 index 000000000..405c7a57f --- /dev/null +++ b/docs/reference/errors-and-warnings/NU5036.md @@ -0,0 +1,27 @@ +--- +title: NuGet Error NU5036 +description: NU5036 Error code +author: rrelyea +ms.author: karann +ms.date: 8/8/2018 +ms.topic: reference +ms.reviewer: anangaur +f1_keywords: + - NU5036 +--- + +# NuGet Error NU5036 +
    This package has an improperly escaped Url in LicenseUrl
    + +### Issue + +LicenseUrl metadata value in the nuspec file should be properly escaped. +Some versions of nuget pack functionality have a problem which will be updated asap. + +### Solution + +Use a fixed version of nuget pack functionality: +* "NuGet.exe pack" - fixed in 4.9.1 +* "dotnet.exe pack" - broken in 2.1.500. No fix available yet. (don't use new License expression or file feature yet, to avoid problem.) +* "msbuild /t:pack" - broken in Visual Studio 15.9.1. No fix available yet. (don't use new License expression or file feature yet, to avoid problem.) + From 0f5654148476a85f4ceab2b830504ba6e2d98096 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Sun, 18 Nov 2018 15:56:36 -0800 Subject: [PATCH 0968/2943] license docs (#1168) * Update Creating-a-Package.md * Update nuspec.md * Update nuspec.md * Update nuspec.md * Update nuspec.md * Update Creating-a-Package.md * Update nuspec.md --- docs/create-packages/Creating-a-Package.md | 12 ++++-- docs/reference/nuspec.md | 45 ++++++++++++++++++++++ 2 files changed, 53 insertions(+), 4 deletions(-) diff --git a/docs/create-packages/Creating-a-Package.md b/docs/create-packages/Creating-a-Package.md index 7ccf4004f..41ac4b3b5 100644 --- a/docs/create-packages/Creating-a-Package.md +++ b/docs/create-packages/Creating-a-Package.md @@ -56,7 +56,8 @@ Common optional properties: - Copyright information - A short description for the [Package Manager UI in Visual Studio](../tools/package-manager-ui.md) - A locale ID -- Home page and license URLs +- Project URL +- License as an expression or file (`licenseUrl` is being deprecated, use the [`license` nuspec metadata element](../reference/nuspec#license)) - An icon URL - Lists of dependencies and references - Tags that assist in gallery searches @@ -81,11 +82,14 @@ The following is a typical (but fictitious) `.nuspec` file, with comments descri users to easily find other packages by the same owners. --> dejanatc, rjdey - - - http://opensource.org/licenses/MS-PL + + http://github.com/contoso/UsefulStuff + + Apache-2.0 + + http://github.com/contoso/UsefulStuff/nuget_icon.png diff --git a/docs/reference/nuspec.md b/docs/reference/nuspec.md index 5c033100e..4753fd4b2 100644 --- a/docs/reference/nuspec.md +++ b/docs/reference/nuspec.md @@ -74,7 +74,52 @@ A comma-separated list of the package creators using profile names on nuget.org. #### projectUrl A URL for the package's home page, often shown in UI displays as well as nuget.org. #### licenseUrl +> [!Important] +> licenseUrl is being deprecated. Use license instead. + A URL for the package's license, often shown in UI displays as well as nuget.org. +#### license +An SPDX license expression or path to a license file within the package, often shown in UI displays as well as nuget.org. +If you’re licensing the package under a common license such as BSD-2-Clause or MIT, use the associated SPDX license identifier.
    For example: +`MIT` + +Here is the complete list of [SPDX license identifiers](https://spdx.org/licenses/). NuGet.org accepts only OSI or FSF approved licenses when using license type expression. + +If your package is licensed under multiple common licenses, you can specify a composite license using the [SPDX expression syntax version 2.0](https://spdx.org/spdx-specification-21-web-version#h.jxpfx0ykyb60).
    For example: +`BSD-2-Clause OR MIT` + +If you are using a license that hasn’t been assigned an SPDX identifier, or it is a custom license, you can package a file with the license text. For example: +```xml + + + ... + LICENSE.txt + ... + + + ... + + ... + + +``` +The exact syntax of NuGet's license expressions is described below in [ABNF](https://tools.ietf.org/html/rfc5234). +```cli +license-id = + +license-exception-id = + +simple-expression = license-id / license-id”+” + +compound-expression = 1*1(simple-expression / + simple-expression "WITH" license-exception-id / + compound-expression "AND" compound-expression / + compound-expression "OR" compound-expression ) / + "(" compound-expression ")" ) + +license-expression = 1*1(simple-expression / compound-expression / UNLICENSED) +``` + #### iconUrl A URL for a 64x64 image with transparency background to use as the icon for the package in UI display. Be sure this element contains the *direct image URL* and not the URL of a web page containing the image. For example, to use an image from GitHub, use the raw file URL like https://github.com/\/\/raw/\/\. From 30b11386002a89e8a9902c886cfff79e6f571782 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Sun, 18 Nov 2018 16:01:48 -0800 Subject: [PATCH 0969/2943] Update Creating-a-Package.md --- docs/create-packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Creating-a-Package.md b/docs/create-packages/Creating-a-Package.md index 41ac4b3b5..2d7f56ea6 100644 --- a/docs/create-packages/Creating-a-Package.md +++ b/docs/create-packages/Creating-a-Package.md @@ -57,7 +57,7 @@ Common optional properties: - A short description for the [Package Manager UI in Visual Studio](../tools/package-manager-ui.md) - A locale ID - Project URL -- License as an expression or file (`licenseUrl` is being deprecated, use the [`license` nuspec metadata element](../reference/nuspec#license)) +- License as an expression or file (`licenseUrl` is being deprecated, use the [`license` nuspec metadata element](../reference/nuspec.md#license)) - An icon URL - Lists of dependencies and references - Tags that assist in gallery searches From f7cf10316e1f38d22a3a07e37a90e98dd432e686 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Sun, 18 Nov 2018 16:03:24 -0800 Subject: [PATCH 0970/2943] master to live (#1169) * Fix typo in analyzers-conventions.md (#1039) (#1040) * metadata updates (#1044) * metadata updates * fix warning * some additional changes * Update NU3028.md (#1041) * Update NU3028.md https://github.com/NuGet/Home/issues/7173 * Update NU3028.md * Update NU3028.md * Update cli-ref-environment-variables.md * Don't call .Net Framework "full" * Added the versioning for Revocation mode functionality * Update TOC.md * Karann 4.8 relnotes (#1055) * Create NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update TOC.md * Update NuGet-Cross-Platform-Authentication-Plugin.md * Update Index.md * Update Supporting-Multiple-Target-Frameworks.md * Update Package-restore-troubleshooting.md (#1088) * Update Supporting-Multiple-Target-Frameworks.md (#1086) * Update Creating-a-Package.md (#1084) * Update nuspec.md (#1065) * Replace namespaces with prefixes * Be consistent about namespace/prefix reservation * Update the details for IsImplicitlyDefined packages (#1067) * Update the details for IsImplicitlyDefined packages * Update Package-Manager-UI.md * Update Package-Manager-UI.md * Update Package-Manager-UI.md * PR feedback * Create PackageReference-with-packages-lock-file.md (#1100) * Create PackageReference-with-packages-lock-file.md * Update PackageReference-with-packages-lock-file.md * Update PackageReference-with-packages-lock-file.md * Fixes #1085 (#1099) * ; -> : (#1098) * Revert "Create PackageReference-with-packages-lock-file.md" (#1101) * Revert "; -> : (#1098)" This reverts commit 6ffe30a427c5a2109958d945d48e48e296fd3178. * Revert "Fixes #1085 (#1099)" This reverts commit b9b6c2f13a073918c1650a65be9fe673c1104b70. * Revert "Create PackageReference-with-packages-lock-file.md (#1100)" This reverts commit 79f240d7433c0ac4d4fd88e7e8ab7f93c62227c4. * Update Create-UI-Controls.md * Update TOC.md (#1125) fixes #1124 Remove the link to docs for creating .NET Standard packages in VS2015, since .NET Core tooling was only pre-release in VS2015. Using the dotnet CLI is recommended over VS2015, if VS2017 can't be used for some reason. * Update Package-References-in-Project-Files.md (#1119) * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Replaced staging.nuget.org with int.nugettest.org (#1132) The staging.nuget.org is deprecated and it is recommended to switch to int.nugettest.org (see https://github.com/NuGet/NuGetGallery/issues/5627). * staging.nuget.org has been deprecated (#1131) See https://github.com/NuGet/NuGetGallery/issues/5627. * Update Overview-and-Workflow.md (#1130) * Update Overview-and-Workflow.md Update styling and typo in image caption as a correction for #1129 * Update Overview-and-Workflow.md * Update Package-restore-troubleshooting.md (#1123) Add missing word. * Add files via upload * Update tool box icon spec (#1149) * Update tool box icon spec * Update Create-UI-Controls.md * Update Create-UI-Controls.md * CC74600: Unnecessarily nested lists (#1091) Hello, @karann-msft, This proposed file change comes from https://github.com/NuGet/docs.microsoft.com-nuget.es-es/pull/4 . Could you review this contribution and help to merge if agreed? Many thanks in advance. * fix: typo in authors token (#1120) Based on issue #1072, I've corrected the docs in the appropriate place. * Fixed typo (#1117) Corrected the spelling of 'delimeters' to delimiters * Grammar (#1113) fixed some grammatical errors * Revert "CC74600: Unnecessarily nested lists (#1091)" (#1152) This reverts commit 1c8db5f63041aac6668f56d0a33b60e0a1fdd05c. * Fixed formatting for note (#1090) * Fix erroneous extra lines in PackageReference documentation (#1153) This removes some seemingly unintended extra lines introduced by #1119. * Fixed typo (#1154) * add configFile option for nugget pack (#1115) add missing -ConfigFile option for nugget pack * Updated what-is-nuget.md to reflect Issue #1111 (#1114) Updated Visual Studio Team System to Azure DevOps to reflect Issue #1111 * Add symbols docs. (#1128) * Add symbols docs. * Updates * Update Symbol-Packages-V2.md * Update Symbol-Packages-V2.md Adding validation info to publish page for Symbols packages. * Feedback * Update * Update * Fix a broken link. * Feedback * Update symbol-package-publish-resource.md * Update Symbol-Packages-V2.md * Feedback * Feedback * Update TOC.md * Rename Symbol-Packages-V2.md to Symbol-Packages-snupkg.md * Update Symbol-Packages.md * Update Symbol-Packages.md * Update Symbol-Packages-snupkg.md * Update Symbol-Packages-snupkg.md * Update Symbol-Packages-snupkg.md * Update cli-ref-pack.md * Update cli-ref-pack.md * Update Symbol-Packages-snupkg.md * Update symbol-package-publish-resource.md * license docs (#1168) * Update Creating-a-Package.md * Update nuspec.md * Update nuspec.md * Update nuspec.md * Update nuspec.md * Update Creating-a-Package.md * Update nuspec.md * Update Creating-a-Package.md --- docs/create-packages/Creating-a-Package.md | 12 ++++-- docs/reference/nuspec.md | 45 ++++++++++++++++++++++ 2 files changed, 53 insertions(+), 4 deletions(-) diff --git a/docs/create-packages/Creating-a-Package.md b/docs/create-packages/Creating-a-Package.md index 7ccf4004f..2d7f56ea6 100644 --- a/docs/create-packages/Creating-a-Package.md +++ b/docs/create-packages/Creating-a-Package.md @@ -56,7 +56,8 @@ Common optional properties: - Copyright information - A short description for the [Package Manager UI in Visual Studio](../tools/package-manager-ui.md) - A locale ID -- Home page and license URLs +- Project URL +- License as an expression or file (`licenseUrl` is being deprecated, use the [`license` nuspec metadata element](../reference/nuspec.md#license)) - An icon URL - Lists of dependencies and references - Tags that assist in gallery searches @@ -81,11 +82,14 @@ The following is a typical (but fictitious) `.nuspec` file, with comments descri users to easily find other packages by the same owners. --> dejanatc, rjdey - - - http://opensource.org/licenses/MS-PL + + http://github.com/contoso/UsefulStuff + + Apache-2.0 + + http://github.com/contoso/UsefulStuff/nuget_icon.png diff --git a/docs/reference/nuspec.md b/docs/reference/nuspec.md index 5c033100e..4753fd4b2 100644 --- a/docs/reference/nuspec.md +++ b/docs/reference/nuspec.md @@ -74,7 +74,52 @@ A comma-separated list of the package creators using profile names on nuget.org. #### projectUrl A URL for the package's home page, often shown in UI displays as well as nuget.org. #### licenseUrl +> [!Important] +> licenseUrl is being deprecated. Use license instead. + A URL for the package's license, often shown in UI displays as well as nuget.org. +#### license +An SPDX license expression or path to a license file within the package, often shown in UI displays as well as nuget.org. +If you’re licensing the package under a common license such as BSD-2-Clause or MIT, use the associated SPDX license identifier.
    For example: +`MIT` + +Here is the complete list of [SPDX license identifiers](https://spdx.org/licenses/). NuGet.org accepts only OSI or FSF approved licenses when using license type expression. + +If your package is licensed under multiple common licenses, you can specify a composite license using the [SPDX expression syntax version 2.0](https://spdx.org/spdx-specification-21-web-version#h.jxpfx0ykyb60).
    For example: +`BSD-2-Clause OR MIT` + +If you are using a license that hasn’t been assigned an SPDX identifier, or it is a custom license, you can package a file with the license text. For example: +```xml + + + ... + LICENSE.txt + ... + + + ... + + ... + + +``` +The exact syntax of NuGet's license expressions is described below in [ABNF](https://tools.ietf.org/html/rfc5234). +```cli +license-id = + +license-exception-id = + +simple-expression = license-id / license-id”+” + +compound-expression = 1*1(simple-expression / + simple-expression "WITH" license-exception-id / + compound-expression "AND" compound-expression / + compound-expression "OR" compound-expression ) / + "(" compound-expression ")" ) + +license-expression = 1*1(simple-expression / compound-expression / UNLICENSED) +``` + #### iconUrl A URL for a 64x64 image with transparency background to use as the icon for the package in UI display. Be sure this element contains the *direct image URL* and not the URL of a web page containing the image. For example, to use an image from GitHub, use the raw file URL like https://github.com/\/\/raw/\/\. From c825eb7e222d4a551431643f5b5617ae868ebe0a Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Sun, 18 Nov 2018 16:29:41 -0800 Subject: [PATCH 0971/2943] Update nuspec.md --- docs/reference/nuspec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/nuspec.md b/docs/reference/nuspec.md index 4753fd4b2..7031a8ca3 100644 --- a/docs/reference/nuspec.md +++ b/docs/reference/nuspec.md @@ -654,7 +654,7 @@ Empty folders can use `.` to opt out of providing content for certain combinatio Sample exists only to show a sample .nuspec file. en-US http://xunit.codeplex.com/ - http://xunit.codeplex.com/license + MIT
    ``` From 7cf953f5082785e2ee6fe2426c0accace0fc52ac Mon Sep 17 00:00:00 2001 From: Michael Bisbjerg Date: Mon, 19 Nov 2018 18:50:38 +0100 Subject: [PATCH 0972/2943] Spellings (#1171) Thank you for your contribution! --- docs/consume-packages/Package-References-in-Project-Files.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/consume-packages/Package-References-in-Project-Files.md b/docs/consume-packages/Package-References-in-Project-Files.md index c7ba01e47..f3453f8fe 100644 --- a/docs/consume-packages/Package-References-in-Project-Files.md +++ b/docs/consume-packages/Package-References-in-Project-Files.md @@ -234,6 +234,6 @@ You can control various behaviors of restore with lock file as described below: | Option | MSBuild equivalent option | |:--- |:--- | | `--use-lock-file` | Bootstraps use of lock file for a project. You can alternatively set `RestorePackagesWithLockFile` property in the project file | -| `--locked-mode` | Enables locked mode for restore. This is useful in CI/CD scenarios where you would like to get the erepeatable builds. This can be also by setting the `RestoreLockedMode` MSBuild property to `true` | +| `--locked-mode` | Enables locked mode for restore. This is useful in CI/CD scenarios where you would like to get the repeatable builds. This can be also by setting the `RestoreLockedMode` MSBuild property to `true` | | `--force-evaluate` | This option is useful with packages with floating version defined in the project. By default, NuGet restore will not update the package version automatically upon each restore unless you run restore with `--force-evaluate` option. | | `--lock-file-path` | Defines a custom lock file location for a project. This can be also achieved by setting the MSBuild property `NuGetLockFilePath`. By default, NuGet supports `packages.lock.json` at the root directory. If you have multiple projects in the same directory, NuGet supports project specific lock file `packages..lock.json` | From 200d7ec7ed9bf19ccea6c60fb321cd377b9805ac Mon Sep 17 00:00:00 2001 From: Justin Emgarten Date: Mon, 19 Nov 2018 14:10:24 -0800 Subject: [PATCH 0973/2943] Add Sleet to hosting-packages doc (#1166) --- docs/hosting-packages/Overview.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/hosting-packages/Overview.md b/docs/hosting-packages/Overview.md index ac394887b..3dc3196b9 100644 --- a/docs/hosting-packages/Overview.md +++ b/docs/hosting-packages/Overview.md @@ -27,6 +27,7 @@ There are also several other NuGet hosting products that support remote private - [NuGet Server (Open Source)](http://nuget-server.net), an open-source implementation similar to Inedo's NuGet Server - [LiGet](https://github.com/ai-traders/liget), an open-source implementation of NuGet V2 server that runs on kestrel in docker - [BaGet](https://github.com/loic-sharma/BaGet), an open-source implementation of NuGet V3 server built on ASP.NET Core +- [Sleet](https://github.com/emgarten/sleet), an open-source NuGet V3 static feed generator - [Artifactory](https://www.jfrog.com/artifactory/) from JFrog. - [Nexus](http://www.sonatype.org/nexus/) from Sonatype. - [TeamCity](https://www.jetbrains.com/teamcity/) from JetBrains. From ac271d721040538b0d0486cc032bd2250e6c8e7f Mon Sep 17 00:00:00 2001 From: ridomin Date: Wed, 21 Nov 2018 19:25:38 -0800 Subject: [PATCH 0974/2943] addressing loic and daniel's feedback --- docs/reference/Signed-Packages-Reference.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/docs/reference/Signed-Packages-Reference.md b/docs/reference/Signed-Packages-Reference.md index ebac1681b..e76c2a076 100644 --- a/docs/reference/Signed-Packages-Reference.md +++ b/docs/reference/Signed-Packages-Reference.md @@ -115,7 +115,7 @@ Similarly, if the default "Any" option is selected for a package where one owner *NuGet 4.9.0+ and Visual Studio version 15.9 and later* -You can customize how NuGet clients validate package signatures by enabling the `signatureValidationMode` to `required`. +You can customize how NuGet clients validate package signatures by setting the `signatureValidationMode` to `require`. ```xml @@ -123,7 +123,7 @@ You can customize how NuGet clients validate package signatures by enabling the ``` -This mode will verify that all packages are signed by any of the certificates trusted in the `nuget.config` file. This file allows you to specify which authors and/or repositories are trusted based on the certificate fingerprint. +This mode will verify that all packages are signed by any of the certificates trusted in the `nuget.config` file. This file allows you to specify which authors and/or repositories are trusted based on the certificate's fingerprint. ### Trust package author @@ -138,7 +138,7 @@ To trust packages based on the author signature use the `authors` element: ``` >[!TIP] ->Use the `nuget.exe` [verify command](https://docs.microsoft.com/en-us/nuget/tools/cli-ref-verify) to get the `SHA256` value of the certificate fingerprint. +>Use the `nuget.exe` [verify command](https://docs.microsoft.com/en-us/nuget/tools/cli-ref-verify) to get the `SHA256` value of the certificate's fingerprint. ### Trust all packages from a repository @@ -157,8 +157,7 @@ To trust packages based on the repository signature use the `repository` element ### Trust Package Owners -Repository signatures include additional metadata to identify who were the package owners at the time of submission. You can restrict packages from a repository based on a list owners: - +Repository signatures include additional metadata to determine the owners of the package at the time of submission. You can restrict packages from a repository based on a list of owners: ```xml @@ -174,11 +173,11 @@ Repository signatures include additional metadata to identify who were the packa ### Untrusted Root certificates -In some situations you might want to enable signing and verification using certificates that do not trust to a trusted root in the local machine. You can use the `allowUntrustedRoot` attribute to customize this behavior. +In some situations you may want to enable signing and verification using certificates that do not chain to a trusted root in the local machine. You can use the `allowUntrustedRoot` attribute to customize this behavior. ### Sync repository certificates -Package repositories must announce the certificates they use in their [service index](https://docs.microsoft.com/en-us/nuget/api/service-index). Eventually the repository will update these certificates, e.g. when the certificate expires. When that happens, clients with specific policies will require to update the configuration to include the new added certificate. You can easily upgrade the trusted signers associated to a repository by using the `nuget.exe` [trusted-signers sync command](tools/cli-ref-trusted-signers.md#nuget-trusted-signers-sync--name-). +Package repositories should announce the certificates they use in their [service index](https://docs.microsoft.com/en-us/nuget/api/service-index). Eventually the repository will update these certificates, e.g. when the certificate expires. When that happens, clients with specific policies will require an update to the configuration to include the newly added certificate. You can easily upgrade the trusted signers associated to a repository by using the `nuget.exe` [trusted-signers sync command](tools/cli-ref-trusted-signers.md#nuget-trusted-signers-sync--name-). ### Schema reference From e3c4e8f87ab49f9f8589d0198c4ec6619a378d20 Mon Sep 17 00:00:00 2001 From: ridomin Date: Wed, 21 Nov 2018 19:35:00 -0800 Subject: [PATCH 0975/2943] fix links --- docs/reference/Signed-Packages-Reference.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/reference/Signed-Packages-Reference.md b/docs/reference/Signed-Packages-Reference.md index e76c2a076..d7e5c58f9 100644 --- a/docs/reference/Signed-Packages-Reference.md +++ b/docs/reference/Signed-Packages-Reference.md @@ -177,8 +177,8 @@ In some situations you may want to enable signing and verification using certifi ### Sync repository certificates -Package repositories should announce the certificates they use in their [service index](https://docs.microsoft.com/en-us/nuget/api/service-index). Eventually the repository will update these certificates, e.g. when the certificate expires. When that happens, clients with specific policies will require an update to the configuration to include the newly added certificate. You can easily upgrade the trusted signers associated to a repository by using the `nuget.exe` [trusted-signers sync command](tools/cli-ref-trusted-signers.md#nuget-trusted-signers-sync--name-). +Package repositories should announce the certificates they use in their [service index](https://docs.microsoft.com/en-us/nuget/api/service-index). Eventually the repository will update these certificates, e.g. when the certificate expires. When that happens, clients with specific policies will require an update to the configuration to include the newly added certificate. You can easily upgrade the trusted signers associated to a repository by using the `nuget.exe` [trusted-signers sync command](/nuget/tools/cli-ref-trusted-signers.md#nuget-trusted-signers-sync--name-). ### Schema reference -The complete schema reference for the client policies can be found in the [nuget.config reference](reference/nuget-config-file#trustedsigners-section) \ No newline at end of file +The complete schema reference for the client policies can be found in the [nuget.config reference](/nuget/reference/nuget-config-file#trustedsigners-section) \ No newline at end of file From 1cb650501c4667469617286423c0c4ec66669542 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Mon, 26 Nov 2018 13:13:37 -0500 Subject: [PATCH 0976/2943] Fix snupkg documentation (#1174) The msbuild property is `SymbolPackageFormat`. See: https://github.com/NuGet/NuGet.Client/blob/3c9b61826814dc800a2a295f0985ce4f295483d6/src/NuGet.Core/NuGet.Build.Tasks.Pack/NuGet.Build.Tasks.Pack.targets#L42 --- docs/create-packages/Symbol-Packages-snupkg.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/create-packages/Symbol-Packages-snupkg.md b/docs/create-packages/Symbol-Packages-snupkg.md index 6f4829dad..13176c465 100644 --- a/docs/create-packages/Symbol-Packages-snupkg.md +++ b/docs/create-packages/Symbol-Packages-snupkg.md @@ -40,9 +40,9 @@ nuget pack MyPackage.csproj -Symbols -SymbolPackageFormat snupkg msbuild /t:pack MyPackage.csproj /p:IncludeSymbols=true /p:SymbolPackageFormat=snupkg ``` -`.snupkgs` are not produced by default. You must pass the `SymbolsPackageFormat` property along with `-Symbols` in case of nuget.exe, `--include-symbols` in case of dotnet.exe, or `/p:IncludeSymbols` in case of msbuild. +`.snupkgs` are not produced by default. You must pass the `SymbolPackageFormat` property along with `-Symbols` in case of nuget.exe, `--include-symbols` in case of dotnet.exe, or `/p:IncludeSymbols` in case of msbuild. -SymbolsPackageFormat property can have one of the two values: `symbols.nupkg` (the default) or `snupkg`. If the SymbolsPackageFormat is not specified, it defaults to `symbols.nupkg` and a legacy symbol package will be created. +SymbolPackageFormat property can have one of the two values: `symbols.nupkg` (the default) or `snupkg`. If the SymbolPackageFormat is not specified, it defaults to `symbols.nupkg` and a legacy symbol package will be created. > [!Note] > The legacy format `.symbols.nupkg` is still supported but only for compatibility reasons (see [Legacy Symbol Packages](Symbol-Packages.md)). NuGet.org symbols server only accepts the new symbol package format - `.snupkg`. From a1846edf70ddb2505d58e536e08e952d870931b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Mon, 26 Nov 2018 13:19:10 -0500 Subject: [PATCH 0977/2943] Master -> live (#1183) * Fix typo in analyzers-conventions.md (#1039) (#1040) * metadata updates (#1044) * metadata updates * fix warning * some additional changes * Update NU3028.md (#1041) * Update NU3028.md https://github.com/NuGet/Home/issues/7173 * Update NU3028.md * Update NU3028.md * Update cli-ref-environment-variables.md * Don't call .Net Framework "full" * Added the versioning for Revocation mode functionality * Update TOC.md * Karann 4.8 relnotes (#1055) * Create NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update TOC.md * Update NuGet-Cross-Platform-Authentication-Plugin.md * Update Index.md * Update Supporting-Multiple-Target-Frameworks.md * Update Package-restore-troubleshooting.md (#1088) * Update Supporting-Multiple-Target-Frameworks.md (#1086) * Update Creating-a-Package.md (#1084) * Update nuspec.md (#1065) * Replace namespaces with prefixes * Be consistent about namespace/prefix reservation * Update the details for IsImplicitlyDefined packages (#1067) * Update the details for IsImplicitlyDefined packages * Update Package-Manager-UI.md * Update Package-Manager-UI.md * Update Package-Manager-UI.md * PR feedback * Create PackageReference-with-packages-lock-file.md (#1100) * Create PackageReference-with-packages-lock-file.md * Update PackageReference-with-packages-lock-file.md * Update PackageReference-with-packages-lock-file.md * Fixes #1085 (#1099) * ; -> : (#1098) * Revert "Create PackageReference-with-packages-lock-file.md" (#1101) * Revert "; -> : (#1098)" This reverts commit 6ffe30a427c5a2109958d945d48e48e296fd3178. * Revert "Fixes #1085 (#1099)" This reverts commit b9b6c2f13a073918c1650a65be9fe673c1104b70. * Revert "Create PackageReference-with-packages-lock-file.md (#1100)" This reverts commit 79f240d7433c0ac4d4fd88e7e8ab7f93c62227c4. * Update Create-UI-Controls.md * Update TOC.md (#1125) fixes #1124 Remove the link to docs for creating .NET Standard packages in VS2015, since .NET Core tooling was only pre-release in VS2015. Using the dotnet CLI is recommended over VS2015, if VS2017 can't be used for some reason. * Update Package-References-in-Project-Files.md (#1119) * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Replaced staging.nuget.org with int.nugettest.org (#1132) The staging.nuget.org is deprecated and it is recommended to switch to int.nugettest.org (see https://github.com/NuGet/NuGetGallery/issues/5627). * staging.nuget.org has been deprecated (#1131) See https://github.com/NuGet/NuGetGallery/issues/5627. * Update Overview-and-Workflow.md (#1130) * Update Overview-and-Workflow.md Update styling and typo in image caption as a correction for #1129 * Update Overview-and-Workflow.md * Update Package-restore-troubleshooting.md (#1123) Add missing word. * Add files via upload * Update tool box icon spec (#1149) * Update tool box icon spec * Update Create-UI-Controls.md * Update Create-UI-Controls.md * CC74600: Unnecessarily nested lists (#1091) Hello, @karann-msft, This proposed file change comes from https://github.com/NuGet/docs.microsoft.com-nuget.es-es/pull/4 . Could you review this contribution and help to merge if agreed? Many thanks in advance. * fix: typo in authors token (#1120) Based on issue #1072, I've corrected the docs in the appropriate place. * Fixed typo (#1117) Corrected the spelling of 'delimeters' to delimiters * Grammar (#1113) fixed some grammatical errors * Revert "CC74600: Unnecessarily nested lists (#1091)" (#1152) This reverts commit 1c8db5f63041aac6668f56d0a33b60e0a1fdd05c. * Fixed formatting for note (#1090) * Fix erroneous extra lines in PackageReference documentation (#1153) This removes some seemingly unintended extra lines introduced by #1119. * Fixed typo (#1154) * add configFile option for nugget pack (#1115) add missing -ConfigFile option for nugget pack * Updated what-is-nuget.md to reflect Issue #1111 (#1114) Updated Visual Studio Team System to Azure DevOps to reflect Issue #1111 * Add documentation for client policies updates * fix link issues * Add symbols docs. (#1128) * Add symbols docs. * Updates * Update Symbol-Packages-V2.md * Update Symbol-Packages-V2.md Adding validation info to publish page for Symbols packages. * Feedback * Update * Update * Fix a broken link. * Feedback * Update symbol-package-publish-resource.md * Update Symbol-Packages-V2.md * Feedback * Feedback * Update TOC.md * Rename Symbol-Packages-V2.md to Symbol-Packages-snupkg.md * Update Symbol-Packages.md * Update Symbol-Packages.md * Update Symbol-Packages-snupkg.md * Update Symbol-Packages-snupkg.md * Update Symbol-Packages-snupkg.md * Update cli-ref-pack.md * Update cli-ref-pack.md * Update Symbol-Packages-snupkg.md * Update symbol-package-publish-resource.md * address feedback * Specify that sync deletes certs * Add list sample output * license docs (#1168) * Update Creating-a-Package.md * Update nuspec.md * Update nuspec.md * Update nuspec.md * Update nuspec.md * Update Creating-a-Package.md * Update nuspec.md * Update Creating-a-Package.md * Spellings (#1171) Thank you for your contribution! * Add Sleet to hosting-packages doc (#1166) * Fix snupkg documentation (#1174) The msbuild property is `SymbolPackageFormat`. See: https://github.com/NuGet/NuGet.Client/blob/3c9b61826814dc800a2a295f0985ce4f295483d6/src/NuGet.Core/NuGet.Build.Tasks.Pack/NuGet.Build.Tasks.Pack.targets#L42 --- docs/TOC.md | 3 + .../Package-References-in-Project-Files.md | 2 +- .../create-packages/Symbol-Packages-snupkg.md | 4 +- docs/hosting-packages/Overview.md | 1 + docs/reference/Errors-and-Warnings.md | 4 +- docs/reference/errors-and-warnings/NU3004.md | 11 +- docs/reference/errors-and-warnings/NU3034.md | 26 ++++ docs/reference/errors-and-warnings/NU3040.md | 23 +++ docs/reference/nuget-config-file.md | 52 ++++++- docs/tools/cli-ref-trusted-signers.md | 135 ++++++++++++++++++ 10 files changed, 250 insertions(+), 11 deletions(-) create mode 100644 docs/reference/errors-and-warnings/NU3034.md create mode 100644 docs/reference/errors-and-warnings/NU3040.md create mode 100644 docs/tools/cli-ref-trusted-signers.md diff --git a/docs/TOC.md b/docs/TOC.md index f3d15f12f..c388ea3d0 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -56,6 +56,7 @@ ### [spec](tools/cli-ref-spec.md) ### [update](tools/cli-ref-update.md) ### [verify](tools/cli-ref-verify.md) +### [trusted-signers](tools/cli-ref-trusted-signers.md) ### [Environment variables](tools/cli-ref-environment-variables.md) ### [Long path support](tools/cli-ref-long-path.md) ## [Package Manager UI](tools/package-manager-ui.md) @@ -130,6 +131,8 @@ ### [NuGet Warning NU3025](reference/errors-and-warnings/NU3025.md) ### [NuGet Warning NU3027](reference/errors-and-warnings/NU3027.md) ### [NuGet Warning NU3028](reference/errors-and-warnings/NU3028.md) +### [NuGet Error NU3034](reference/errors-and-warnings/NU3034.md) +### [NuGet Error NU3040](reference/errors-and-warnings/NU3040.md) ### [NuGet Error NU5000](reference/errors-and-warnings/NU5000.md) ### [NuGet Error NU5001](reference/errors-and-warnings/NU5001.md) ### [NuGet Error NU5002](reference/errors-and-warnings/NU5002.md) diff --git a/docs/consume-packages/Package-References-in-Project-Files.md b/docs/consume-packages/Package-References-in-Project-Files.md index c7ba01e47..f3453f8fe 100644 --- a/docs/consume-packages/Package-References-in-Project-Files.md +++ b/docs/consume-packages/Package-References-in-Project-Files.md @@ -234,6 +234,6 @@ You can control various behaviors of restore with lock file as described below: | Option | MSBuild equivalent option | |:--- |:--- | | `--use-lock-file` | Bootstraps use of lock file for a project. You can alternatively set `RestorePackagesWithLockFile` property in the project file | -| `--locked-mode` | Enables locked mode for restore. This is useful in CI/CD scenarios where you would like to get the erepeatable builds. This can be also by setting the `RestoreLockedMode` MSBuild property to `true` | +| `--locked-mode` | Enables locked mode for restore. This is useful in CI/CD scenarios where you would like to get the repeatable builds. This can be also by setting the `RestoreLockedMode` MSBuild property to `true` | | `--force-evaluate` | This option is useful with packages with floating version defined in the project. By default, NuGet restore will not update the package version automatically upon each restore unless you run restore with `--force-evaluate` option. | | `--lock-file-path` | Defines a custom lock file location for a project. This can be also achieved by setting the MSBuild property `NuGetLockFilePath`. By default, NuGet supports `packages.lock.json` at the root directory. If you have multiple projects in the same directory, NuGet supports project specific lock file `packages..lock.json` | diff --git a/docs/create-packages/Symbol-Packages-snupkg.md b/docs/create-packages/Symbol-Packages-snupkg.md index 6f4829dad..13176c465 100644 --- a/docs/create-packages/Symbol-Packages-snupkg.md +++ b/docs/create-packages/Symbol-Packages-snupkg.md @@ -40,9 +40,9 @@ nuget pack MyPackage.csproj -Symbols -SymbolPackageFormat snupkg msbuild /t:pack MyPackage.csproj /p:IncludeSymbols=true /p:SymbolPackageFormat=snupkg ``` -`.snupkgs` are not produced by default. You must pass the `SymbolsPackageFormat` property along with `-Symbols` in case of nuget.exe, `--include-symbols` in case of dotnet.exe, or `/p:IncludeSymbols` in case of msbuild. +`.snupkgs` are not produced by default. You must pass the `SymbolPackageFormat` property along with `-Symbols` in case of nuget.exe, `--include-symbols` in case of dotnet.exe, or `/p:IncludeSymbols` in case of msbuild. -SymbolsPackageFormat property can have one of the two values: `symbols.nupkg` (the default) or `snupkg`. If the SymbolsPackageFormat is not specified, it defaults to `symbols.nupkg` and a legacy symbol package will be created. +SymbolPackageFormat property can have one of the two values: `symbols.nupkg` (the default) or `snupkg`. If the SymbolPackageFormat is not specified, it defaults to `symbols.nupkg` and a legacy symbol package will be created. > [!Note] > The legacy format `.symbols.nupkg` is still supported but only for compatibility reasons (see [Legacy Symbol Packages](Symbol-Packages.md)). NuGet.org symbols server only accepts the new symbol package format - `.snupkg`. diff --git a/docs/hosting-packages/Overview.md b/docs/hosting-packages/Overview.md index ac394887b..3dc3196b9 100644 --- a/docs/hosting-packages/Overview.md +++ b/docs/hosting-packages/Overview.md @@ -27,6 +27,7 @@ There are also several other NuGet hosting products that support remote private - [NuGet Server (Open Source)](http://nuget-server.net), an open-source implementation similar to Inedo's NuGet Server - [LiGet](https://github.com/ai-traders/liget), an open-source implementation of NuGet V2 server that runs on kestrel in docker - [BaGet](https://github.com/loic-sharma/BaGet), an open-source implementation of NuGet V3 server built on ASP.NET Core +- [Sleet](https://github.com/emgarten/sleet), an open-source NuGet V3 static feed generator - [Artifactory](https://www.jfrog.com/artifactory/) from JFrog. - [Nexus](http://www.sonatype.org/nexus/) from Sonatype. - [TeamCity](https://www.jetbrains.com/teamcity/) from JetBrains. diff --git a/docs/reference/Errors-and-Warnings.md b/docs/reference/Errors-and-Warnings.md index e47942cd1..8095a0170 100644 --- a/docs/reference/Errors-and-Warnings.md +++ b/docs/reference/Errors-and-Warnings.md @@ -22,7 +22,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | 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) | | Compatibility errors | [NU1201](./errors-and-warnings/NU1201.md), [NU1202](./errors-and-warnings/NU1202.md), [NU1203](./errors-and-warnings/NU1203.md), [NU1401](./errors-and-warnings/NU1401.md) | | NuGet internal errors | [NU1000](./errors-and-warnings/NU1000.md) | -| Signed packages errors(creation and verification) | [NU3001](./errors-and-warnings/NU3001.md), [NU3004](./errors-and-warnings/NU3004.md), [NU3005](./errors-and-warnings/NU3005.md), [NU3008](./errors-and-warnings/NU3008.md), [NU3012](./errors-and-warnings/NU3012.md), [NU3028](./errors-and-warnings/NU3028.md) | +| Signed packages errors(creation and verification) | [NU3001](./errors-and-warnings/NU3001.md), [NU3004](./errors-and-warnings/NU3004.md), [NU3005](./errors-and-warnings/NU3005.md), [NU3008](./errors-and-warnings/NU3008.md), [NU3012](./errors-and-warnings/NU3012.md), [NU3028](./errors-and-warnings/NU3028.md), [NU3034](./errors-and-warnings/NU3034.md)| | Pack Errors | [NU5000](./errors-and-warnings/NU5000.md), [NU5001](./errors-and-warnings/NU5001.md), [NU5002](./errors-and-warnings/NU5002.md), [NU5003](./errors-and-warnings/NU5003.md), [NU5004](./errors-and-warnings/NU5004.md), [NU5005](./errors-and-warnings/NU5005.md), [NU5007](./errors-and-warnings/NU5007.md), [NU5008](./errors-and-warnings/NU5008.md), [NU5009](./errors-and-warnings/NU5009.md), [NU5010](./errors-and-warnings/NU5010.md), [NU5011](./errors-and-warnings/NU5011.md), [NU5012](./errors-and-warnings/NU5012.md), [NU5013](./errors-and-warnings/NU5013.md), [NU5014](./errors-and-warnings/NU5014.md), [NU5015](./errors-and-warnings/NU5015.md), [NU5016](./errors-and-warnings/NU5016.md), [NU5017](./errors-and-warnings/NU5017.md), [NU5018](./errors-and-warnings/NU5018.md), [NU5019](./errors-and-warnings/NU5019.md), [NU5020](./errors-and-warnings/NU5020.md), [NU5021](./errors-and-warnings/NU5021.md), [NU5022](./errors-and-warnings/NU5022.md), [NU5023](./errors-and-warnings/NU5023.md), [NU5024](./errors-and-warnings/NU5024.md), [NU5025](./errors-and-warnings/NU5025.md), [NU5026](./errors-and-warnings/NU5026.md), [NU5027](./errors-and-warnings/NU5027.md), [NU5028](./errors-and-warnings/NU5028.md), [NU5029](./errors-and-warnings/NU5029.md) **Warnings** @@ -35,5 +35,5 @@ The errors and warnings listed here are available only with [PackageReference-ba | Package fallback warnings | [NU1701](./errors-and-warnings/NU1701.md) | | Feed warnings | [NU1801](./errors-and-warnings/NU1801.md) | | NuGet internal warnings | [NU1500](./errors-and-warnings/NU1500.md) | -| Signed packages warnings(creation and verification) | [NU3000](./errors-and-warnings/NU3000.md), [NU3002](./errors-and-warnings/NU3002.md), [NU3003](./errors-and-warnings/NU3003.md), [NU3006](./errors-and-warnings/NU3006.md), [NU3007](./errors-and-warnings/NU3007.md), [NU3009](./errors-and-warnings/NU3009.md), [NU3010](./errors-and-warnings/NU3010.md), [NU3011](./errors-and-warnings/NU3011.md), [NU3013](./errors-and-warnings/NU3013.md), [NU3014](./errors-and-warnings/NU3014.md), [NU3015](./errors-and-warnings/NU3015.md), [NU3016](./errors-and-warnings/NU3016.md), [NU3017](./errors-and-warnings/NU3017.md), [NU3018](./errors-and-warnings/NU3018.md), [NU3019](./errors-and-warnings/NU3019.md), [NU3020](./errors-and-warnings/NU3020.md), [NU3021](./errors-and-warnings/NU3021.md), [NU3022](./errors-and-warnings/NU3022.md), [NU3023](./errors-and-warnings/NU3023.md), [NU3025](./errors-and-warnings/NU3025.md), [NU3027](./errors-and-warnings/NU3027.md) | +| Signed packages warnings(creation and verification) | [NU3000](./errors-and-warnings/NU3000.md), [NU3002](./errors-and-warnings/NU3002.md), [NU3003](./errors-and-warnings/NU3003.md), [NU3006](./errors-and-warnings/NU3006.md), [NU3007](./errors-and-warnings/NU3007.md), [NU3009](./errors-and-warnings/NU3009.md), [NU3010](./errors-and-warnings/NU3010.md), [NU3011](./errors-and-warnings/NU3011.md), [NU3013](./errors-and-warnings/NU3013.md), [NU3014](./errors-and-warnings/NU3014.md), [NU3015](./errors-and-warnings/NU3015.md), [NU3016](./errors-and-warnings/NU3016.md), [NU3017](./errors-and-warnings/NU3017.md), [NU3018](./errors-and-warnings/NU3018.md), [NU3019](./errors-and-warnings/NU3019.md), [NU3020](./errors-and-warnings/NU3020.md), [NU3021](./errors-and-warnings/NU3021.md), [NU3022](./errors-and-warnings/NU3022.md), [NU3023](./errors-and-warnings/NU3023.md), [NU3025](./errors-and-warnings/NU3025.md), [NU3027](./errors-and-warnings/NU3027.md), [NU3040](./errors-and-warnings/NU3040.md) | | Pack Warnings | [NU5100](./errors-and-warnings/NU5100.md), [NU5101](./errors-and-warnings/NU5101.md), [NU5102](./errors-and-warnings/NU5102.md), [NU5103](./errors-and-warnings/NU5103.md), [NU5104](./errors-and-warnings/NU5104.md), [NU5105](./errors-and-warnings/NU5105.md), [NU5106](./errors-and-warnings/NU5106.md), [NU5107](./errors-and-warnings/NU5107.md), [NU5108](./errors-and-warnings/NU5108.md), [NU5109](./errors-and-warnings/NU5109.md), [NU5110](./errors-and-warnings/NU5110.md), [NU5111](./errors-and-warnings/NU5111.md), [NU5112](./errors-and-warnings/NU5112.md), [NU5114](./errors-and-warnings/NU5114.md), [NU5115](./errors-and-warnings/NU5115.md), [NU5116](./errors-and-warnings/NU5116.md), [NU5117](./errors-and-warnings/NU5117.md), [NU5118](./errors-and-warnings/NU5118.md), [NU5119](./errors-and-warnings/NU5119.md), [NU5120](./errors-and-warnings/NU5120.md), [NU5121](./errors-and-warnings/NU5121.md), [NU5122](./errors-and-warnings/NU5122.md), [NU5123](./errors-and-warnings/NU5123.md), [NU5500](./errors-and-warnings/NU5500.md) diff --git a/docs/reference/errors-and-warnings/NU3004.md b/docs/reference/errors-and-warnings/NU3004.md index 8914c029a..8ca1d7fde 100644 --- a/docs/reference/errors-and-warnings/NU3004.md +++ b/docs/reference/errors-and-warnings/NU3004.md @@ -13,14 +13,19 @@ f1_keywords: # NuGet Error NU3004
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The package is not signed.
    +
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': signatureValidationMode is set to require, so packages are allowed only if signed by trusted signers; however, this package is unsigned.
    +
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': This repository indicated that all its packages are repository signed; however, this package is unsigned.
    ### Issue -NuGet client tried to verify an unsigned package. +**If from `nuget verify -signatures`** +NuGet client tried to verify an unsigned package. -### Solution +**If from restore or install when specifying `signatureValidationMode` to `require`** -Please ensure that any package passed to `nuget verify -signatures` command are contain a package signature. +The `require` validation mode does not support unsigned package and an unsigned package is trying to be installed. +### Solution +Please ensure that any package intended to be installed or passed to `nuget verify -signatures` command contains a package signature. diff --git a/docs/reference/errors-and-warnings/NU3034.md b/docs/reference/errors-and-warnings/NU3034.md new file mode 100644 index 000000000..a7fb44a97 --- /dev/null +++ b/docs/reference/errors-and-warnings/NU3034.md @@ -0,0 +1,26 @@ +--- +title: NuGet Error NU3034 +description: NU3034 Error code +author: patbel +ms.author: patbel +ms.date: 11/12/2018 +ms.topic: reference +ms.reviewer: rmpablos +f1_keywords: + - NU3034 +--- + +# NuGet Error NU3034 + +
    Package 'SamplePackage v1.0.0' from source 'https://source.com/index.json': signatureValidationMode is set to require, so packages are allowed only if signed by trusted signers; however, no trusted signers were specified.
    +
    Package 'SamplePackage v1.0.0' from source 'https://source.com/index.json': The package signature certificate fingerprint does not match any certificate fingerprint in the allow list.
    +
    Package 'SamplePackage v1.0.0' from source 'https://source.com/index.json': This repository indicated that all its packages are repository signed; however, it listed no signing certificates.
    +
    Package 'SamplePackage v1.0.0' from source 'https://source.com/index.json': This package was not repository signed with a certificate listed by this repository.
    + +### Issue + +There is a missing allow list, or the package signer does not match any signer in the list. This list could either be sent by the repository or specified in the [`trustedSigners`](../nuget-config-file.md#trustedsigners-section) section of the `nuget.config`. + +### Solution + +If in `require` mode, only packages signed by a trusted signer will pass validation. Otherwise, contact the repository where this was downlaoded from to let them know they have a package that does not comply with the repository signing security guidelines. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3040.md b/docs/reference/errors-and-warnings/NU3040.md new file mode 100644 index 000000000..0040b2619 --- /dev/null +++ b/docs/reference/errors-and-warnings/NU3040.md @@ -0,0 +1,23 @@ +--- +title: NuGet Warning NU3040 +description: NU3040 Warning code +author: patbel +ms.author: patbel +ms.date: 11/12/2018 +ms.topic: reference +ms.reviewer: rmpablos +f1_keywords: + - NU3040 +--- + +# NuGet Warning NU3040 + +
    There are two certificates with conflicting allowUntrustedRoot attributes in the computed settings. The allowUntrustedRoot attribute is going to be set to false. Certificate: SHA256-3F9001EA83C560D712C24CF213C3D312CB3BFF51EE89435D3430BD06B5D0EECE
    + +### Issue + +There are conflicting attributes in a certificate item in nuget.config. Two certificate items share the same `fingerprint` and `hashAlgorithm`, but have different `allowUntrustedRoot`. + +### Solution + +NuGet will take the most restrictive of those settings (`allowUntrustedRoot=false`), to remove the warning make sure to either deduplicate the certificate items or set `allowUntrustedRoot` to the same value on both. \ No newline at end of file diff --git a/docs/reference/nuget-config-file.md b/docs/reference/nuget-config-file.md index 0573a7d1b..88ac6cd7e 100644 --- a/docs/reference/nuget-config-file.md +++ b/docs/reference/nuget-config-file.md @@ -11,7 +11,7 @@ ms.topic: reference NuGet behavior is controlled by settings in different `NuGet.Config` files as described in [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md). -`nuget.config` is an XML file containing a top-level `` node, which then contains the section elements described in this topic. Each section contains zero or more `` elements with `key` and `value` attributes. See the [examples config file](#example-config-file). Setting names are case-insensitive, and values can use [environment variables](#using-environment-variables). +`nuget.config` is an XML file containing a top-level `` node, which then contains the section elements described in this topic. Each section contains zero or more items. See the [examples config file](#example-config-file). Setting names are case-insensitive, and values can use [environment variables](#using-environment-variables). In this topic: @@ -25,6 +25,7 @@ In this topic: - [apikeys](#apikeys) - [disabledPackageSources](#disabledpackagesources) - [activePackageSource](#activepackagesource) +- [trustedSigners section](#trustedsigners-section) - [Using environment variables](#using-environment-variables) - [Example config file](#example-config-file) @@ -46,6 +47,7 @@ Contains miscellaneous configuration settings, which can be set using the [`nuge | 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. This setting is overridden by the NUGET_PACKAGES environment variable, which takes precedence. | | 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). | +| signatureValidationMode | Specifies the validation mode used to verify package signatures for package install, and restore. Values are `accept`, `require`. Defaults to `accept`. **Example**: @@ -55,6 +57,7 @@ Contains miscellaneous configuration settings, which can be set using the [`nuge + ``` @@ -110,9 +113,9 @@ Controls whether the `packages` folder of a solution is included in source contr ## Package source sections -The `packageSources`, `packageSourceCredentials`, `apikeys`, `activePackageSource`, and `disabledPackageSources` all work together to configure how NuGet works with package repositories during install, restore, and update operations. +The `packageSources`, `packageSourceCredentials`, `apikeys`, `activePackageSource`, `disabledPackageSources` and `trustedSigners` all work together to configure how NuGet works with package repositories during install, restore, and update operations. -The [`nuget sources` command](../tools/cli-ref-sources.md) is generally used to manage these settings, except for `apikeys` which is managed using the [`nuget setapikey` command](../tools/cli-ref-setapikey.md). +The [`nuget sources` command](../tools/cli-ref-sources.md) is generally used to manage these settings, except for `apikeys` which is managed using the [`nuget setapikey` command](../tools/cli-ref-setapikey.md), and `trustedSigners` which is managed using the [`nuget trusted-signers` command](../tools/cli-ref-trusted-signers.md). Note that the source URL for nuget.org is `https://api.nuget.org/v3/index.json`. @@ -232,6 +235,35 @@ Identifies to the currently active source or indicates the aggregate of all sour ``` +## trustedSigners section + +Stores trusted signers used to allow package while installing or restoring. This list cannot be empty when the user sets `signatureValidationMode` to `require`. + +This section can be updated with the [`nuget trusted-signers` command](../tools/cli-ref-trusted-signers.md). + +**Schema**: + +A trusted signer has a collection of `certificate` items that enlist all the certificates that identify a given signer. A trusted signer can be either an `Author` or a `Repository`. + +A trusted *repository* also specifies the `serviceIndex` for the repository (which has to be a valid `https` uri) and can optionally specify a semi-colon delimited list of `owners` to restrict even more who is trusted from that specific repository. + +The supported hash algorithms used for a certificate fingerprint are `SHA256`, `SHA384` and `SHA512`. + +If a `certificate` specifies `allowUntrustedRoot` as `true` the given certificate is allowed to chain to an untrusted root while building the certificate chain as part of the signature verification. + +**Example**: + +```xml + + + + + + + microsoft;aspnet;nuget + + +``` ## Using environment variables @@ -308,5 +340,19 @@ Below is an example `nuget.config` file that illustrates a number of settings: + + + + + + + + + microsoft;aspnet;nuget + + ``` diff --git a/docs/tools/cli-ref-trusted-signers.md b/docs/tools/cli-ref-trusted-signers.md new file mode 100644 index 000000000..ec987b5da --- /dev/null +++ b/docs/tools/cli-ref-trusted-signers.md @@ -0,0 +1,135 @@ +--- +title: NuGet CLI trusted-signers command +description: Reference for the nuget.exe trusted-signers command +author: patbel +ms.author: patbel +ms.date: 11/12/2018 +ms.topic: reference +ms.reviewer: rmpablos +--- + +# trusted-signers command (NuGet CLI) + +**Applies to:** package consumption • **Supported versions:** 4.9+ + +Gets or sets trusted signers to the NuGet configuration. For additional usage, see [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md). For details on how the nuget.config schema looks like, refer to the [NuGet config file reference](../reference/nuget-config-file.md). + +## Usage + +```cli +nuget trusted-signers [options] +``` + +if none of `list|add|remove|sync` is specified, the command will default to `list`. + +## nuget trusted-signers list + +Lists all the trusted signers in the configuration. This option will include all the certificates (with fingerprint and fingerprint algorithm) each signer has. If a certificate has a preceding `[U]`, it means that certificate entry has `allowUntrustedRoot` set as `true`. + +Below is an example output from this command: + +```cli +$ nuget trusted-signers +Registered trusted signers: + + + 1. nuget.org [repository] + Service Index: https://api.nuget.org/v3/index.json + Certificate fingerprint(s): + SHA256 - 0E5F38F57DC1BCC806D8494F4F90FBCEDD988B46760709CBEEC6F4219AA6157D + + 2. microsoft [author] + Certificate fingerprint(s): + SHA256 - 3F9001EA83C560D712C24CF213C3D312CB3BFF51EE89435D3430BD06B5D0EECE + + 3. myUntrustedAuthorSignature [author] + Certificate fingerprint(s): + [U] SHA256 - 518F9CF082C0872025EFB2587B6A6AB198208F63EA58DD54D2B9FF6735CA4434 + +``` + +## nuget trusted-signers add [options] + +Adds a trusted signer with the given name to the config. This option has different gestures to add a trusted author or repository. + +## Options for add based on a package + +```cli +nuget trusted-signers add -Name [options] +``` + +where `` is one or more `.nupkg` files. + +| Option | Description | +| --- | --- | +| Author | Specifies that the author signature of the package(s) should be trusted. | +| Repository | Specifies that the repository signature or countersignature of the package(s) should be trusted. | +| AllowUntrustedRoot | Specifies if the certificate for the trusted signer should be allowed to chain to an untrusted root. | +| Owners | Semi-colon separated list of trusted owners to further restrict the trust of a repository. Only valid when using the `-Repository` option. | + +Providing both `-Author` and `-Repository` at the same time is not supported. + +## Options for add based on a service index + +```cli +nuget trusted-signers add -Name [options] +``` + +_Note_: This option will only add trusted repositories. + +| Option | Description | +| --- | --- | +| ServiceIndex | Specifies the V3 service index of the repository to be trusted. This repository has to support the repository signatures resource. If not provided, the command will look for a package source with the same `-Name` and get the service index from there. | +| AllowUntrustedRoot | Specifies if the certificate for the trusted signer should be allowed to chain to an untrusted root. | +| Owners | Semi-colon separated list of trusted owners to further restrict the trust of a repository. | + +## Options for add based on the certificate information + +```cli +nuget trusted-signers add -Name [options] +``` + +_Note_: If a trusted signer with the given name already exists, the certificate item will be added to that signer. Otherwise a trusted author will be created with a certificate item from given certificate information. + +| Option | Description | +| --- | --- | +| CertificateFingerprint | Specifies a certificate fingerprints of a certificate which signed packages must be signed with. A certificate fingerprint is a hash of the certificate. The hash algorithm used for calculating this hash should be specifies in the `FingerprintAlgorithm` option. | +| FingerprintAlgorithm | Specifies the hash algorithm used to calculate the certificate fingerprint. Defaults to `SHA256`. Values supported are `SHA256`, `SHA384` and `SHA512` | +| AllowUntrustedRoot | Specifies if the certificate for the trusted signer should be allowed to chain to an untrusted root. | + +## nuget trusted-signers remove -Name + +Removes any trusted signers that match the given name. + +## nuget trusted-signers sync -Name + +Requests the latest list of certificates used in a currently trusted repository to update the the existing certificate list in the trusted signer. + +_Note_: This gesture will delete the current list of certificates and replace them with an up-to-date list from the repository. + +## Options + +| Option | Description | +| --- | --- | +| ConfigFile | The NuGet configuration file to apply. If not specified, `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) is used.| +| ForceEnglishOutput | Forces nuget.exe to run using an invariant, English-based culture. | +| Help | Displays help information for the command. | +| Verbosity | Specifies the amount of detail displayed in the output: *normal*, *quiet*, *detailed*. | + +## Examples + +```cli +nuget trusted-signers list + +nuget trusted-signers Add -Name existingSource + +nuget trusted-signers Add -Name trustedRepo -ServiceIndex https://trustedRepo.test/v3ServiceIndex + +nuget trusted-signers Add -Name author1 -CertificateFingerprint CE40881FF5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E039 -FingerprintAlgorithm SHA256 + +nuget trusted-signers Add -Repository .\..\MyRepositorySignedPackage.nupkg -Name TrustedRepo + +nuget-trusted-signers Remove -Name TrustedRepo + +nuget-trusted-signers Sync -Name TrustedRepo +``` \ No newline at end of file From 75ad83a52cf4db25cb1fad2dea117c015230103c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Mon, 26 Nov 2018 15:09:24 -0500 Subject: [PATCH 0978/2943] Fix spellings (#1172) --- .../consume-packages/Package-References-in-Project-Files.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/consume-packages/Package-References-in-Project-Files.md b/docs/consume-packages/Package-References-in-Project-Files.md index f3453f8fe..a476eecbf 100644 --- a/docs/consume-packages/Package-References-in-Project-Files.md +++ b/docs/consume-packages/Package-References-in-Project-Files.md @@ -158,7 +158,7 @@ Conditions can also be applied at the `ItemGroup` level and will apply to all ch ## Locking dependencies *This feature is available with NuGet **4.9** or above and with Visual Studio 2017 **15.9 Preview 5** or above.* -Input to NuGet restore is a set of Package References from the project file (top-level or direct dependenices) 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: +Input to NuGet restore is a set of Package References 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. @@ -189,9 +189,9 @@ If this property is set, NuGet restore will generate a lock file - `packages.loc ### `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 NuGet detects a change in the defined dependenices 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. +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. -For CI/CD and other scenarios, where you would not want to change the package dependenies on the fly, you can do so by setting the `lockedmode` to `true`: +For CI/CD and other scenarios, where you would not want to change the package dependencies on the fly, you can do so by setting the `lockedmode` to `true`: For dotnet.exe, run: ``` From 44a0dbaab12fa0ccbd40da768e02a55ba5d3419f Mon Sep 17 00:00:00 2001 From: Jakub Januszkiewicz Date: Mon, 26 Nov 2018 21:12:06 +0100 Subject: [PATCH 0979/2943] fix formatting in Package-References-in-Project-Files.md (#1182) Fix formatting/typo in the first paragraph. --- .../Package-References-in-Project-Files.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/docs/consume-packages/Package-References-in-Project-Files.md b/docs/consume-packages/Package-References-in-Project-Files.md index a476eecbf..21057f303 100644 --- a/docs/consume-packages/Package-References-in-Project-Files.md +++ b/docs/consume-packages/Package-References-in-Project-Files.md @@ -9,13 +9,7 @@ ms.topic: conceptual # Package references (PackageReference) in project files -Package references, using the `PackageReference` node, manage NuGet dependencies directly within project files (as opposed to a separate `packages.config` file). Using PackageReference, as it's called, doesn't affect other aspects of NuGet; for example, settings in `NuGet. - - - - - -fig` files (including package sources) are still applied as explained in [Configuring NuGet Behavior](configuring-nuget-behavior.md). +Package references, using the `PackageReference` node, manage NuGet dependencies directly within project files (as opposed to a separate `packages.config` file). Using PackageReference, as it's called, doesn't affect other aspects of NuGet; for example, settings in `NuGet.config` files (including package sources) are still applied as explained in [Configuring NuGet Behavior](configuring-nuget-behavior.md). With PackageReference, you can also use MSBuild conditions to choose package references per target framework, configuration, platform, 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).) From 250ec87da0b50901e239b2e4935c52d3eaa7b263 Mon Sep 17 00:00:00 2001 From: Matthieu Penant Date: Mon, 26 Nov 2018 16:14:43 -0500 Subject: [PATCH 0980/2943] typo on dependencies in locking doc (#1175) From 99bcf2735144fff7e8156008781d57d1c6275340 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Mon, 26 Nov 2018 16:16:05 -0500 Subject: [PATCH 0981/2943] Improve sentences (#1181) * Improve sentences --- docs/create-packages/Symbol-Packages-snupkg.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/create-packages/Symbol-Packages-snupkg.md b/docs/create-packages/Symbol-Packages-snupkg.md index 13176c465..3a3800660 100644 --- a/docs/create-packages/Symbol-Packages-snupkg.md +++ b/docs/create-packages/Symbol-Packages-snupkg.md @@ -61,13 +61,13 @@ SymbolPackageFormat property can have one of the two values: `symbols.nupkg` (th nuget push MyPackage.snupkg ``` -1. You can also push both primary and symbol packages at the same time using the below command. Both, .nupkg and .snupkg files need to be present in the current folder. +1. You can also push both primary and symbol packages at the same time using the below command. Both .nupkg and .snupkg files need to be present in the current folder. ```cli nuget push MyPackage.nupkg ``` -In this case, NuGet will publish to nuget.org the `MyPackage.nupkg` first followed by `MyPackage.snupkg`. +NuGet will publish both packages to nuget.org. `MyPackage.nupkg` will be published first, followed by `MyPackage.snupkg`. ## NuGet.org symbol server From 0f83228b9b64a5335747c01c085c7a5f0c5c2168 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Tue, 27 Nov 2018 02:19:18 -0800 Subject: [PATCH 0982/2943] Add license warnings and errors (#1173) * update docs * address feedback * fix the wording of NU5035 * add samples --- docs/reference/errors-and-warnings/NU5030.md | 45 ++++++++++++++++++++ docs/reference/errors-and-warnings/NU5031.md | 21 +++++++++ docs/reference/errors-and-warnings/NU5032.md | 25 +++++++++++ docs/reference/errors-and-warnings/NU5033.md | 21 +++++++++ docs/reference/errors-and-warnings/NU5034.md | 24 +++++++++++ docs/reference/errors-and-warnings/NU5035.md | 22 ++++++++++ docs/reference/errors-and-warnings/NU5124.md | 23 ++++++++++ docs/reference/errors-and-warnings/NU5125.md | 21 +++++++++ docs/reference/msbuild-targets.md | 24 ++++++++++- 9 files changed, 225 insertions(+), 1 deletion(-) create mode 100644 docs/reference/errors-and-warnings/NU5030.md create mode 100644 docs/reference/errors-and-warnings/NU5031.md create mode 100644 docs/reference/errors-and-warnings/NU5032.md create mode 100644 docs/reference/errors-and-warnings/NU5033.md create mode 100644 docs/reference/errors-and-warnings/NU5034.md create mode 100644 docs/reference/errors-and-warnings/NU5035.md create mode 100644 docs/reference/errors-and-warnings/NU5124.md create mode 100644 docs/reference/errors-and-warnings/NU5125.md diff --git a/docs/reference/errors-and-warnings/NU5030.md b/docs/reference/errors-and-warnings/NU5030.md new file mode 100644 index 000000000..020351352 --- /dev/null +++ b/docs/reference/errors-and-warnings/NU5030.md @@ -0,0 +1,45 @@ +--- +title: NuGet Error NU5030 +description: NU5030 Error code +author: nkolev92 +ms.date: 11/15/2018 +ms.topic: reference +ms.reviewer: karann +f1_keywords: + - NU5030 +--- + +# NuGet Error NU5030 +
    The license file 'LICENSE.txt' does not exist in the package.
    + +### Issue + +The license file is referenced in the metadata with either PackageLicenseFile in the csproj or the license element in the nuspec, but the file itself was not included in the expected location within the package. + + +### Solution + +Include the file in the package, for example: + +If pack with the targets: +```xml + + LICENSE.txt + + + + + +``` + +If packing with a nuspec: +```xml + + + LICENSE.txt + + + + + +``` \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU5031.md b/docs/reference/errors-and-warnings/NU5031.md new file mode 100644 index 000000000..01ccd5ea7 --- /dev/null +++ b/docs/reference/errors-and-warnings/NU5031.md @@ -0,0 +1,21 @@ +--- +title: NuGet Error NU5031 +description: NU5031 Error code +author: nkolev92 +ms.date: 11/15/2018 +ms.topic: reference +ms.reviewer: karann +f1_keywords: + - NU5031 +--- + +# NuGet Error NU5031 +
    The license file 'LICENSE.txt' has an invalid extension. Valid options are .txt, .md or none.
    + +### Issue + +Only the listed file extensions are allowed. + +### Solution + +Use a file extensions from the allowed list. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU5032.md b/docs/reference/errors-and-warnings/NU5032.md new file mode 100644 index 000000000..fc9428664 --- /dev/null +++ b/docs/reference/errors-and-warnings/NU5032.md @@ -0,0 +1,25 @@ +--- +title: NuGet Error NU5032 +description: NU5032 Error code +author: nkolev92 +ms.date: 11/15/2018 +ms.topic: reference +ms.reviewer: karann +f1_keywords: + - NU5032 +--- + +# NuGet Error NU5032 +
    The license expression 'MIT OR OR Apache-2.0' cannot be parsed succesfully. The license expression is invalid.
    + +### Issue + +The license expression does not conform to the NuGet license expression grammar. + +### Solution + +In this case there are 2 'OR' operators. The operators have to be surrounded with operands. +For example: +``` +MIT OR Apache-2.0 +``` \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU5033.md b/docs/reference/errors-and-warnings/NU5033.md new file mode 100644 index 000000000..3569d58db --- /dev/null +++ b/docs/reference/errors-and-warnings/NU5033.md @@ -0,0 +1,21 @@ +--- +title: NuGet Error NU5033 +description: NU5033 Error code +author: nkolev92 +ms.date: 11/15/2018 +ms.topic: reference +ms.reviewer: karann +f1_keywords: + - NU5033 +--- + +# NuGet Error NU5033 +
    Invalid metadata. Cannot specify both a License Expression and a License File.
    + +### Issue + +The PackageLicenseExpression and PackageLicenseFile properties are mutually exclusive. + +### Solution + +Use one or the other. If you are using a well known license that's part of the standard license list, consider using an expression. Otherwise please use a license file. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU5034.md b/docs/reference/errors-and-warnings/NU5034.md new file mode 100644 index 000000000..9aac063ea --- /dev/null +++ b/docs/reference/errors-and-warnings/NU5034.md @@ -0,0 +1,24 @@ +--- +title: NuGet Error NU5029 +description: NU5029 Error code +author: mishra14 +ms.author: karann +ms.date: 8/8/2018 +ms.topic: reference +ms.reviewer: anangaur +f1_keywords: + - NU5029 +--- + +# NuGet Error NU5029 +
    NuspecProperties should be in the form of 'key1=value1;key2=value2'.
    + +### Issue + +Properties passed to `msbuild /t:pack /p:NuspecFile=project.nuspec` command were not in the right format to be parsed. + + +### Solution + +Please pass any nuspec properties using `/p:NuspecProperties` in the format of `key=value`. For instance `msbuild /t:pack /p:NuspecFile=project.nuspec /p:NuspecProperties="configuration=release"` + diff --git a/docs/reference/errors-and-warnings/NU5035.md b/docs/reference/errors-and-warnings/NU5035.md new file mode 100644 index 000000000..472e217be --- /dev/null +++ b/docs/reference/errors-and-warnings/NU5035.md @@ -0,0 +1,22 @@ +--- +title: NuGet Error NU5035 +description: NU5035 Error code +author: nkolev92 +ms.date: 11/15/2018 +ms.topic: reference +ms.reviewer: karann +f1_keywords: + - NU5035 +--- + +# NuGet Error NU5035 +
    The PackageLicenseUrl cannot be used in conjunction with the PackageLicenseFile and PackageLicenseExpression.
    + +### Issue + +When using PackageLicenseFile or PackageLicenseExpression, you should not set the PackageLicenseUrl property. +The licenseUrl metadata will be auto-generated by the client tools to a down-level friendly url. + +### Solution + +Do not set the PackageLicenseUrl. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU5124.md b/docs/reference/errors-and-warnings/NU5124.md new file mode 100644 index 000000000..39fcaec77 --- /dev/null +++ b/docs/reference/errors-and-warnings/NU5124.md @@ -0,0 +1,23 @@ +--- +title: NuGet Error NU5124 +description: NU5124 Error code +author: nkolev92 +ms.date: 11/15/2018 +ms.topic: reference +ms.reviewer: karann +f1_keywords: + - NU5124 +--- + +# NuGet Warning NU5124 +
    The license identifier 'Microsoft-SpecialLicense' is not recognized by the current toolset.
    + +### Issue + +The NuGet Client tools have a known list of license identifiers. As this knowledge is contained within the product, sometimes version of the tools is not aware of the standardization of the license. +Other times, the license simply is not a standardized license, with no clear timeline of ever becoming one. + +### Solution + +Use an updated client that understands the license identifier you are trying to use. +Use a license file instead of an expression if there is no timeline for the said license to become an SPDX standard license. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU5125.md b/docs/reference/errors-and-warnings/NU5125.md new file mode 100644 index 000000000..f993c6eea --- /dev/null +++ b/docs/reference/errors-and-warnings/NU5125.md @@ -0,0 +1,21 @@ +--- +title: NuGet Error NU5125 +description: NU5125 Error code +author: nkolev92 +ms.date: 11/15/2018 +ms.topic: reference +ms.reviewer: karann +f1_keywords: + - NU5125 +--- + +# NuGet Warning NU5125 +
    The 'licenseUrl' element will be deprecated. Consider using the 'license' element instead.
    + +### Issue + +The licenseUrl element is being replaced by the license element. The deprecation can be found [here](https://github.com/NuGet/Home/issues/4628). + +### Solution + +Use the license element. \ No newline at end of file diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index 85e566ae1..b1eaac74e 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -50,7 +50,9 @@ Note that the `Owners` and `Summary` properties from `.nuspec` are not supported | Description | Description | "Package Description" | | | Copyright | Copyright | empty | | | RequireLicenseAcceptance | PackageRequireLicenseAcceptance | false | | -| LicenseUrl | PackageLicenseUrl | empty | | +| license | PackageLicenseExpression | empty | Corresponds to `` | +| license | PackageLicenseFile | empty | Corresponds to ``. You may need to explicitly pack the referenced license file. | +| LicenseUrl | PackageLicenseUrl | empty | `licenseUrl` is being deprecated, use the PackageLicenseExpression or PackageLicenseFile property | | ProjectUrl | PackageProjectUrl | empty | | | IconUrl | PackageIconUrl | empty | | | Tags | PackageTags | empty | Tags are semi-colon delimited. | @@ -72,6 +74,8 @@ Note that the `Owners` and `Summary` properties from `.nuspec` are not supported - Copyright - PackageRequireLicenseAcceptance - DevelopmentDependency +- PackageLicenseExpression +- PackageLicenseFile - PackageLicenseUrl - PackageProjectUrl - PackageIconUrl @@ -180,6 +184,24 @@ This is the same as `IncludeSymbols`, except that it copies source files along w If a file of type Compile, is outside the project folder, then it's just added to `src\\`. +### Packing a license expression or a license file + +When using a license expression, the PackageLicenseExpression property should be used. +[License expression sample](#https://github.com/NuGet/Samples/tree/master/PackageLicenseExpressionExample). + +When packing a license file, you need to use PackageLicenseFile property to specify the package path, relative to the root of the package. In addition, you need to make sure that the file is included in the package. For example: + +```xml + + LICENSE.txt + + + + + +``` +[License life sample](#https://github.com/NuGet/Samples/tree/master/PackageLicenseFileExample). + ### IsTool When using `MSBuild /t:pack /p:IsTool=true`, all output files, as specified in the [Output Assemblies](#output-assemblies) scenario, are copied to the `tools` folder instead of the `lib` folder. Note that this is different from a `DotNetCliTool` which is specified by setting the `PackageType` in `.csproj` file. From e2cb661f78b0cec02a3096a50d0725dd1b2cc74e Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Tue, 27 Nov 2018 13:00:05 -0800 Subject: [PATCH 0983/2943] Clarify what kind of version strings are in registration and catalog (#1185) --- docs/api/catalog-resource.md | 2 +- docs/api/registration-base-url-resource.md | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/api/catalog-resource.md b/docs/api/catalog-resource.md index 11a5f1a45..37fda5f61 100644 --- a/docs/api/catalog-resource.md +++ b/docs/api/catalog-resource.md @@ -234,7 +234,7 @@ tags | array of strings | no | title | string | no | verbatimVersion | string | no | The version string as it's originally found in the .nuspec -The package `version` property is the full, normalized version string. This means that SemVer 2.0.0 build data can +The package `version` property is the full version string after normalization. This means that SemVer 2.0.0 build data can be included here. The `created` timestamp is when the package was first received by the package source, which is typically a short diff --git a/docs/api/registration-base-url-resource.md b/docs/api/registration-base-url-resource.md index b7a78c9d0..5e9c3f118 100644 --- a/docs/api/registration-base-url-resource.md +++ b/docs/api/registration-base-url-resource.md @@ -175,7 +175,10 @@ requireLicenseAcceptance | boolean | no | summary | string | no | tags | string or array of string | no | title | string | no | -version | string | yes | The version of the package +version | string | yes | The full version string after normalization + +The package `version` property is the full version string after normalization. This means that SemVer 2.0.0 build data +can be included here. The `dependencyGroups` property is an array of objects representing the dependencies of the package, grouped by target framework. If the package has no dependencies, the `dependencyGroups` property is missing, an empty array, or the From 9a7eb9e53dd26382f9ca5b3b3f062751fbe2fc1e Mon Sep 17 00:00:00 2001 From: Martin Andreas Ullrich Date: Tue, 27 Nov 2018 23:03:28 +0100 Subject: [PATCH 0984/2943] Change MSBuild arguments to hyphen format (#1167) --- .../Package-References-in-Project-Files.md | 2 +- docs/consume-packages/Package-Restore.md | 2 +- .../Package-restore-troubleshooting.md | 4 ++-- docs/create-packages/Symbol-Packages-snupkg.md | 4 ++-- ...nd-publish-a-package-using-visual-studio.md | 4 ++-- docs/reference/errors-and-warnings/NU5020.md | 4 ++-- docs/reference/errors-and-warnings/NU5022.md | 2 +- docs/reference/errors-and-warnings/NU5023.md | 4 ++-- docs/reference/errors-and-warnings/NU5024.md | 2 +- docs/reference/errors-and-warnings/NU5025.md | 4 ++-- docs/reference/errors-and-warnings/NU5028.md | 4 ++-- docs/reference/errors-and-warnings/NU5029.md | 4 ++-- docs/reference/errors-and-warnings/NU5114.md | 4 ++-- ...Get-Cross-Platform-Authentication-Plugin.md | 2 +- docs/reference/msbuild-targets.md | 18 +++++++++--------- docs/tools/cli-ref-long-path.md | 2 +- docs/tools/cli-ref-pack.md | 2 +- 17 files changed, 34 insertions(+), 34 deletions(-) diff --git a/docs/consume-packages/Package-References-in-Project-Files.md b/docs/consume-packages/Package-References-in-Project-Files.md index 21057f303..1ee286cd4 100644 --- a/docs/consume-packages/Package-References-in-Project-Files.md +++ b/docs/consume-packages/Package-References-in-Project-Files.md @@ -194,7 +194,7 @@ For dotnet.exe, run: For msbuild.exe, run: ``` -> msbuild.exe /t:restore /p:RestoreLockedMode=true +> msbuild.exe -t:restore -p:RestoreLockedMode=true ``` You may also set this conditional MSBuild property in your project file: diff --git a/docs/consume-packages/Package-Restore.md b/docs/consume-packages/Package-Restore.md index 17122999c..96af221f3 100644 --- a/docs/consume-packages/Package-Restore.md +++ b/docs/consume-packages/Package-Restore.md @@ -34,7 +34,7 @@ Package restore is triggered in the following ways: - **NuGet CLI**: use the [nuget restore](../tools/cli-ref-restore.md) command, which restores packages listed in the project file or in `packages.config`. You can also specify a solution file. -- **MSBuild**: use the [msbuild /t:restore](../reference/msbuild-targets.md#restore-target) command, which restores packages packages listed in the project file (PackageReference only). Available only in NuGet 4.x+ and MSBuild 15.1+, which are included with Visual Studio 2017. `nuget restore` and `dotnet restore` both use this command for applicable projects. +- **MSBuild**: use the [msbuild -t:restore](../reference/msbuild-targets.md#restore-target) command, which restores packages packages listed in the project file (PackageReference only). Available only in NuGet 4.x+ and MSBuild 15.1+, which are included with Visual Studio 2017. `nuget restore` and `dotnet restore` both use this command for applicable projects. - **Visual Studio Team Services**: When creating a build definition on Team Services, include the [NuGet restore](/vsts/build-release/tasks/package/nuget#restore-nuget-packages) or [.NET Core Restore](/vsts/build-release/tasks/build/dotnet-core#restore-nuget-packages) task in the definition before any build task. This task is included by default in a number of build templates. diff --git a/docs/consume-packages/Package-restore-troubleshooting.md b/docs/consume-packages/Package-restore-troubleshooting.md index b20c754df..c7277d95f 100644 --- a/docs/consume-packages/Package-restore-troubleshooting.md +++ b/docs/consume-packages/Package-restore-troubleshooting.md @@ -52,7 +52,7 @@ Use one of the following methods to restore the packages: - In Visual Studio, enable package restore by selecting the **Tools > NuGet Package Manager > Package Manager Settings** menu command, setting both options under **Package Restore**, and selecting **OK**. Then build the solution again. - For .NET Core projects, run `dotnet restore` or `dotnet build` (which automatically runs restore). - On the command line, run `nuget restore` (except for projects created with `dotnet`, in which case use `dotnet restore`). -- On the command line with projects using the PackageReference format, run `msbuild /t:restore`. +- On the command line with projects using the PackageReference format, run `msbuild -t:restore`. After a successful restore, the package should be present in the *global-packages* folder. For projects using PackageReference, a restore should recreate the `obj/project.assets.json` file; for projects using `packages.config`, the package should appear in the project's `packages` folder. The project should now build successfully. If not, [file an issue on GitHub](https://github.com/NuGet/docs.microsoft.com-nuget/issues) so we can follow up with you. @@ -68,7 +68,7 @@ Assets file '\project.assets.json' not found. Run a NuGet package restore The `project.assets.json` file maintains a project's dependency graph when using the PackageReference management format, which is used to make sure that all necessary packages are installed on the computer. Because this file is generated dynamically through package restore, it's typically not added to source control. As a result, this error occurs when building a project with a tool such as `msbuild` that does not automatically restore packages. -In this case, run `msbuild /t:restore` followed by `msbuild`, or use `dotnet build` (which restores packages automatically). You can also use any of the package restore methods in the [previous section](#missing). +In this case, run `msbuild -t:restore` followed by `msbuild`, or use `dotnet build` (which restores packages automatically). You can also use any of the package restore methods in the [previous section](#missing). diff --git a/docs/create-packages/Symbol-Packages-snupkg.md b/docs/create-packages/Symbol-Packages-snupkg.md index 3a3800660..bf608ce5f 100644 --- a/docs/create-packages/Symbol-Packages-snupkg.md +++ b/docs/create-packages/Symbol-Packages-snupkg.md @@ -37,10 +37,10 @@ nuget pack MyPackage.nuspec -Symbols -SymbolPackageFormat snupkg nuget pack MyPackage.csproj -Symbols -SymbolPackageFormat snupkg -msbuild /t:pack MyPackage.csproj /p:IncludeSymbols=true /p:SymbolPackageFormat=snupkg +msbuild -t:pack MyPackage.csproj -p:IncludeSymbols=true -p:SymbolPackageFormat=snupkg ``` -`.snupkgs` are not produced by default. You must pass the `SymbolPackageFormat` property along with `-Symbols` in case of nuget.exe, `--include-symbols` in case of dotnet.exe, or `/p:IncludeSymbols` in case of msbuild. +`.snupkgs` are not produced by default. You must pass the `SymbolPackageFormat` property along with `-Symbols` in case of nuget.exe, `--include-symbols` in case of dotnet.exe, or `-p:IncludeSymbols` in case of msbuild. SymbolPackageFormat property can have one of the two values: `symbols.nupkg` (the default) or `snupkg`. If the SymbolPackageFormat is not specified, it defaults to `symbols.nupkg` and a legacy symbol package will be created. diff --git a/docs/quickstart/create-and-publish-a-package-using-visual-studio.md b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md index c624ee1da..3c7f82fb9 100644 --- a/docs/quickstart/create-and-publish-a-package-using-visual-studio.md +++ b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md @@ -90,12 +90,12 @@ namespace AppLogger As an alternate to using the **Pack** menu command, NuGet 4.x+ and MSBuild 15.1+ supports a `pack` target when the project contains the necessary package data. Open a command prompt, navigate to your project folder and run the following command. (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.) ```cli -msbuild /t:pack /p:Configuration=Release +msbuild -t:pack -p:Configuration=Release ``` The package can then be found in the `bin\Release` folder. -For additional options with `msbuild /t:pack`, see [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md#pack-target). +For additional options with `msbuild -t:pack`, see [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md#pack-target). ## Publish the package diff --git a/docs/reference/errors-and-warnings/NU5020.md b/docs/reference/errors-and-warnings/NU5020.md index eb6669397..3a520d84e 100644 --- a/docs/reference/errors-and-warnings/NU5020.md +++ b/docs/reference/errors-and-warnings/NU5020.md @@ -15,10 +15,10 @@ f1_keywords: ### Issue -A source file was passed to `msbuild /t:pack` operation with an empty path. +A source file was passed to `msbuild -t:pack` operation with an empty path. ### Solution -Please ensure that all source files passed to `msbuild /t:pack` operation have a vaild path and exist on the disk. +Please ensure that all source files passed to `msbuild -t:pack` operation have a vaild path and exist on the disk. diff --git a/docs/reference/errors-and-warnings/NU5022.md b/docs/reference/errors-and-warnings/NU5022.md index 40d32546e..0cb36ee7a 100644 --- a/docs/reference/errors-and-warnings/NU5022.md +++ b/docs/reference/errors-and-warnings/NU5022.md @@ -15,7 +15,7 @@ f1_keywords: ### Issue -The `MinClientVersion` property passed to msbuild /t:pack operation is not a valid version string. +The `MinClientVersion` property passed to msbuild -t:pack operation is not a valid version string. ### Solution diff --git a/docs/reference/errors-and-warnings/NU5023.md b/docs/reference/errors-and-warnings/NU5023.md index 3ec6f47bd..d951d7c2b 100644 --- a/docs/reference/errors-and-warnings/NU5023.md +++ b/docs/reference/errors-and-warnings/NU5023.md @@ -15,10 +15,10 @@ f1_keywords: ### Issue -The project passed to the `msbuild /t:pack` does not contain an assets file in the obj directory. +The project passed to the `msbuild -t:pack` does not contain an assets file in the obj directory. ### Solution -Please run `msbuild /t:restore` operation on the project being packaged before running the pack operation. +Please run `msbuild -t:restore` operation on the project being packaged before running the pack operation. diff --git a/docs/reference/errors-and-warnings/NU5024.md b/docs/reference/errors-and-warnings/NU5024.md index eb3586e30..5ec378dbe 100644 --- a/docs/reference/errors-and-warnings/NU5024.md +++ b/docs/reference/errors-and-warnings/NU5024.md @@ -15,7 +15,7 @@ f1_keywords: ### Issue -The `PackageVersion` property passed to msbuild /t:pack operation is not a valid version string. +The `PackageVersion` property passed to msbuild -t:pack operation is not a valid version string. ### Solution diff --git a/docs/reference/errors-and-warnings/NU5025.md b/docs/reference/errors-and-warnings/NU5025.md index 5b2804ba2..8feacb2b3 100644 --- a/docs/reference/errors-and-warnings/NU5025.md +++ b/docs/reference/errors-and-warnings/NU5025.md @@ -15,10 +15,10 @@ f1_keywords: ### Issue -The project passed to the `msbuild /t:pack` does not contain a valid assets file in the obj directory. +The project passed to the `msbuild -t:pack` does not contain a valid assets file in the obj directory. ### Solution -Please run `msbuild /t:restore /p:restoreforce=true` operation on the project being packaged before running the pack operation. +Please run `msbuild -t:restore -p:restoreforce=true` operation on the project being packaged before running the pack operation. diff --git a/docs/reference/errors-and-warnings/NU5028.md b/docs/reference/errors-and-warnings/NU5028.md index d0205ef35..49cfe2bf8 100644 --- a/docs/reference/errors-and-warnings/NU5028.md +++ b/docs/reference/errors-and-warnings/NU5028.md @@ -15,10 +15,10 @@ f1_keywords: ### Issue -No project file was specified to the `msbuild /t:pack` operation. +No project file was specified to the `msbuild -t:pack` operation. ### Solution -Please specify the project to pack operation. You can either specify it in the cammand (`msbuild /t:pack project.csproj`) or run `msbuild /t:pack` operation in a folder containing a project file. +Please specify the project to pack operation. You can either specify it in the cammand (`msbuild -t:pack project.csproj`) or run `msbuild -t:pack` operation in a folder containing a project file. diff --git a/docs/reference/errors-and-warnings/NU5029.md b/docs/reference/errors-and-warnings/NU5029.md index 9aac063ea..3241cf882 100644 --- a/docs/reference/errors-and-warnings/NU5029.md +++ b/docs/reference/errors-and-warnings/NU5029.md @@ -15,10 +15,10 @@ f1_keywords: ### Issue -Properties passed to `msbuild /t:pack /p:NuspecFile=project.nuspec` command were not in the right format to be parsed. +Properties passed to `msbuild -t:pack -p:NuspecFile=project.nuspec` command were not in the right format to be parsed. ### Solution -Please pass any nuspec properties using `/p:NuspecProperties` in the format of `key=value`. For instance `msbuild /t:pack /p:NuspecFile=project.nuspec /p:NuspecProperties="configuration=release"` +Please pass any nuspec properties using `-p:NuspecProperties` in the format of `key=value`. For instance `msbuild -t:pack -p:NuspecFile=project.nuspec -p:NuspecProperties="configuration=release"` diff --git a/docs/reference/errors-and-warnings/NU5114.md b/docs/reference/errors-and-warnings/NU5114.md index 1cdc92c35..4bda02de6 100644 --- a/docs/reference/errors-and-warnings/NU5114.md +++ b/docs/reference/errors-and-warnings/NU5114.md @@ -15,10 +15,10 @@ f1_keywords: ### Issue -A property was specified in the project file and also passed through pack command using `-Properties` or `/p:NuspecProperties` options. +A property was specified in the project file and also passed through pack command using `-Properties` or `-p:NuspecProperties` options. ### Solution -Please ensure that is a property is defined in the project file then, you do not pass the same property through pack command using `-Properties` or `/p:NuspecProperties` options. +Please ensure that is a property is defined in the project file then, you do not pass the same property through pack command using `-Properties` or `-p:NuspecProperties` options. diff --git a/docs/reference/extensibility/NuGet-Cross-Platform-Authentication-Plugin.md b/docs/reference/extensibility/NuGet-Cross-Platform-Authentication-Plugin.md index cbb39dd9a..a1b0753de 100644 --- a/docs/reference/extensibility/NuGet-Cross-Platform-Authentication-Plugin.md +++ b/docs/reference/extensibility/NuGet-Cross-Platform-Authentication-Plugin.md @@ -27,7 +27,7 @@ There is no interactive switch on `dotnet build` and `dotnet publish`. ## Authentication in MSBuild Similar to dotnet.exe, MSBuild.exe is by default non interactive the MSBuild.exe authentication mechanism is device flow. -To allow the restore to pause and wait for authentication, call restore with `msbuild /t:restore /p:NuGetInteractive="true"`. +To allow the restore to pause and wait for authentication, call restore with `msbuild -t:restore -p:NuGetInteractive="true"`. ## Creating a cross platform authentication plugin diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index b1eaac74e..586b84bdb 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -32,7 +32,7 @@ Similarly, you can write an MSBuild task, write your own target and consume NuGe ## pack target -For .NET Standard projects using the PackageReference format, using `msbuild /t:pack` draws inputs from the project file to use in creating a NuGet package. +For .NET Standard projects using the PackageReference format, using `msbuild -t:pack` draws inputs from the project file to use in creating a NuGet package. The table below 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). @@ -176,7 +176,7 @@ Other pack specific metadata that you can set on any of the above items includes ### IncludeSymbols -When using `MSBuild /t:pack /p:IncludeSymbols=true`, the corresponding `.pdb` files are copied along with other output files (`.dll`, `.exe`, `.winmd`, `.xml`, `.json`, `.pri`). Note that setting `IncludeSymbols=true` creates a regular package *and* a symbols package. +When using `MSBuild -t:pack -p:IncludeSymbols=true`, the corresponding `.pdb` files are copied along with other output files (`.dll`, `.exe`, `.winmd`, `.xml`, `.json`, `.pri`). Note that setting `IncludeSymbols=true` creates a regular package *and* a symbols package. ### IncludeSource @@ -204,26 +204,26 @@ When packing a license file, you need to use PackageLicenseFile property to spec ### IsTool -When using `MSBuild /t:pack /p:IsTool=true`, all output files, as specified in the [Output Assemblies](#output-assemblies) scenario, are copied to the `tools` folder instead of the `lib` folder. Note that this is different from a `DotNetCliTool` which is specified by setting the `PackageType` in `.csproj` file. +When using `MSBuild -t:pack -p:IsTool=true`, all output files, as specified in the [Output Assemblies](#output-assemblies) scenario, are copied to the `tools` folder instead of the `lib` folder. Note that this is different from a `DotNetCliTool` which is specified by setting the `PackageType` in `.csproj` file. ### Packing using a .nuspec You can use a `.nuspec` file to pack your project provided that you have a SDK project file to 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. 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`: 1. `NuspecFile`: relative or absolute path to the `.nuspec` file being used for packing. -1. `NuspecProperties`: a semicolon-separated list of key=value pairs. Due to the way MSBuild command-line parsing works, multiple properties must be specified as follows: `/p:NuspecProperties=\"key1=value1;key2=value2\"`. +1. `NuspecProperties`: a semicolon-separated list of key=value pairs. Due to the way MSBuild command-line parsing works, multiple properties must be specified as follows: `-p:NuspecProperties=\"key1=value1;key2=value2\"`. 1. `NuspecBasePath`: Base path for the `.nuspec` file. If using `dotnet.exe` to pack your project, use a command like the following: ```cli -dotnet pack /p:NuspecFile= /p:NuspecProperties=<> /p:NuspecBasePath= +dotnet pack -p:NuspecFile= -p:NuspecProperties=<> -p:NuspecBasePath= ``` If using MSBuild to pack your project, use a command like the following: ```cli -msbuild /t:pack /p:NuspecFile= /p:NuspecProperties=<> /p:NuspecBasePath= +msbuild -t:pack -p:NuspecFile= -p:NuspecProperties=<> -p:NuspecBasePath= ``` Please note that packing a nuspec using dotnet.exe or msbuild also leads to building the project by default. This can be avoided by passing ```--no-build``` property to dotnet.exe, which is the equivalent of setting ```true ``` in your project file, along with setting ```false ``` in the project file @@ -300,7 +300,7 @@ An example: ## restore target -`MSBuild /t:restore` (which `nuget restore` and `dotnet restore` use with .NET Core projects), restores packages referenced in the project file as follows: +`MSBuild -t:restore` (which `nuget restore` and `dotnet restore` use with .NET Core projects), restores packages referenced in the project file as follows: 1. Read all project to project references 1. Read the project properties to find the intermediate folder and target frameworks @@ -313,7 +313,7 @@ The `restore` target works **only** for projects using the PackageReference form ### Restore properties -Additional restore settings may come from MSBuild properties in the project file. Values can also be set from the command line using the `/p:` switch (see Examples below). +Additional restore settings may come from MSBuild properties in the project file. Values can also be set from the command line using the `-p:` switch (see Examples below). | Property | Description | |--------|--------| @@ -332,7 +332,7 @@ Additional restore settings may come from MSBuild properties in the project file Command line: ```cli -msbuild /t:restore /p:RestoreConfigFile= +msbuild -t:restore -p:RestoreConfigFile= ``` Project file: diff --git a/docs/tools/cli-ref-long-path.md b/docs/tools/cli-ref-long-path.md index 0a13afa9c..2d59d2d19 100644 --- a/docs/tools/cli-ref-long-path.md +++ b/docs/tools/cli-ref-long-path.md @@ -34,6 +34,6 @@ Steps: > Enabling Other NuGet Tools to Support Long Paths > > - Dotnet CLI supports long paths regardless of the operating system or version. -> - Visual Studio or msbuild /t:restore does not yet support long paths. +> - Visual Studio or msbuild -t:restore does not yet support long paths. > - Software that uses NuGet Libraries to execute restore and other commands, will support long paths on the same systems that NuGet.exe works on, if they also set longPathAware in their windows manifest and configure UseLegacyPathHandling to false via App.Config [See more information](https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/) diff --git a/docs/tools/cli-ref-pack.md b/docs/tools/cli-ref-pack.md index 3e25dfd9d..0ccd8e116 100644 --- a/docs/tools/cli-ref-pack.md +++ b/docs/tools/cli-ref-pack.md @@ -11,7 +11,7 @@ ms.topic: reference **Applies to:** package creation • **Supported versions:** 2.7+ -Creates a NuGet package based on the specified `.nuspec` or project file. The `dotnet pack` command (see [dotnet Commands](dotnet-Commands.md)) and `msbuild /t:pack` (see [MSBuild targets](../reference/msbuild-targets.md)) may be used as alternates. +Creates a NuGet package based on the specified `.nuspec` or project file. The `dotnet pack` command (see [dotnet Commands](dotnet-Commands.md)) and `msbuild -t:pack` (see [MSBuild targets](../reference/msbuild-targets.md)) may be used as alternates. > [!Important] > Under Mono, creating a package from a project file is not supported. You also need to adjust non-local paths in the `.nuspec` file to Unix-style paths, as nuget.exe doesn't convert Windows pathnames itself. From 55304953d84fa4d879e50859dc7af1870649fa19 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 27 Nov 2018 17:11:46 -0800 Subject: [PATCH 0985/2943] 4.9.1 relnotes (#1177) * Create NuGet-4.9-RTM.md * Update Index.md * Update TOC.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md tweaks to release notes * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md --- docs/TOC.md | 1 + docs/release-notes/Index.md | 2 + docs/release-notes/NuGet-4.9-RTM.md | 124 ++++++++++++++++++++++++++++ 3 files changed, 127 insertions(+) create mode 100644 docs/release-notes/NuGet-4.9-RTM.md diff --git a/docs/TOC.md b/docs/TOC.md index c388ea3d0..07c77d777 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -225,6 +225,7 @@ ## [Deleting packages](policies/deleting-packages.md) # Release notes ## [Known Issues](release-notes/known-issues.md) +## [NuGet 4.9 RTM](release-notes/NuGet-4.9-RTM.md) ## [NuGet 4.8 RTM](release-notes/NuGet-4.8-RTM.md) ## [NuGet 4.7 RTM](release-notes/NuGet-4.7-RTM.md) ## [NuGet 4.6 RTM](release-notes/NuGet-4.6-RTM.md) diff --git a/docs/release-notes/Index.md b/docs/release-notes/Index.md index 916028f01..996cf4801 100644 --- a/docs/release-notes/Index.md +++ b/docs/release-notes/Index.md @@ -11,6 +11,8 @@ ms.topic: conceptual [Known Issues](../release-notes/known-issues.md) +[NuGet 4.9 RTM](../release-notes/NuGet-4.9-RTM.md) + [NuGet 4.8 RTM](../release-notes/nuget-4.8-rtm.md) [NuGet 4.7 RTM](../release-notes/nuget-4.7-rtm.md) diff --git a/docs/release-notes/NuGet-4.9-RTM.md b/docs/release-notes/NuGet-4.9-RTM.md new file mode 100644 index 000000000..d8a5ae791 --- /dev/null +++ b/docs/release-notes/NuGet-4.9-RTM.md @@ -0,0 +1,124 @@ +--- +title: NuGet 4.9 RTM Release Notes +description: Release notes for NuGet 4.9 including known issues, bug fixes, new features, and DCRs. +author: karann-msft +ms.author: karann +ms.date: 11/20/2018 +ms.topic: conceptual +--- + +# NuGet 4.9 Release Notes + +[Visual Studio 2017 15.9.0 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.9.0 functionality. + + +Command line versions of the same functionality are also available: +* NuGet.exe 4.9.x - [nuget.org/downloads](https://nuget.org/downloads) +* dotnet.exe - [.NET Core SDK 2.1.500](https://www.microsoft.com/net/download/visual-studio-sdks) + + +## Summary: What's New in 4.9.0 + +* Signing: Enable ClientPolicies to require use of a set of Trusted Authors and Repositories listed in NuGet.Config - [#6961](https://github.com/NuGet/Home/issues/6961) + +* create ".snupkg" files to contain symbols in pack -- enhance push to understand nuget protocol to accept snupkg files for symbol server - [#6878](https://github.com/NuGet/Home/issues/6878) + +* NuGet credential plugin V2 - [#6642](https://github.com/NuGet/Home/issues/6642) + +* Self-Contained NuGet Packages - License - [#4628](https://github.com/NuGet/Home/issues/4628) + +* Enable opt-in "GeneratePathProperty" metadata on a PackageReference to generate a per package MSBuild property to "Foo.Bar\1.0\" directory - [#6949](https://github.com/NuGet/Home/issues/6949) + +* Improve customer success with NuGet operations - [#7108](https://github.com/NuGet/Home/issues/7108) + +### Issues fixed in this release + +* Warnings elevated to errors (via WarnAsErrors) raised by PackageExtraction should never leave extracted package around - [#7445](https://github.com/NuGet/Home/issues/7445) + +* Badly signed packages should not end up in the global packages folder - [#7423](https://github.com/NuGet/Home/issues/7423) + +* binding redirect generation should not skip facade assemblies - [#7393](https://github.com/NuGet/Home/issues/7393) + +* VersionRange Equals doesn't compare floating ranges - [#7324](https://github.com/NuGet/Home/issues/7324) + +* Restore: performance regression using new .NET Core 2.1 HTTP stack - [#7314](https://github.com/NuGet/Home/issues/7314) + +* Update of a Package should not modify PrivateAssets of a PackageReference - [#7285](https://github.com/NuGet/Home/issues/7285) + +* Signing: signing should fail if a package has too many package entries (>65534) - [#7248](https://github.com/NuGet/Home/issues/7248) + +* "dotnet nuget push" codepath should support the new credential provider - [#7233](https://github.com/NuGet/Home/issues/7233) + +* Support executing plugins with invariant culture (as happens in docker) - [#7223](https://github.com/NuGet/Home/issues/7223) + +* nuget sources add should not delete credentials from NuGet.config - [#7200](https://github.com/NuGet/Home/issues/7200) + +* installing a devDependency PackageReference should default to excludeassets=compile - [#7084](https://github.com/NuGet/Home/issues/7084) + +* fix migrator option to be displayed for all projects and show error if project is incompatible - [#6958](https://github.com/NuGet/Home/issues/6958) + +* "dotnet add package" should commit the restore it performs to the assets file - [#6928](https://github.com/NuGet/Home/issues/6928) + +* Signing: improve signing related error messages - [#6906](https://github.com/NuGet/Home/issues/6906) + +* [Test Failure][zh-TW]String "Package Manager Console" doesn't localize on Package Manager Console - [#6381](https://github.com/NuGet/Home/issues/6381) + +* Error message around "Unable to find project information" should be a little more specific inside VS - [#5350](https://github.com/NuGet/Home/issues/5350) + +* Unhelpful error message when incorrectly using nuspec version tag of nuget pack - [#2714](https://github.com/NuGet/Home/issues/2714) + +* DCR - Signing: support NuGet protocol: RepositorySignatures/4.9.0 resource - [#7421](https://github.com/NuGet/Home/issues/7421) + +* DCR - .nupkg.metadata file will now be created during package extraction - contains "content-hash" - [#7283](https://github.com/NuGet/Home/issues/7283) + +* DCR - Skip authenticode verification for plugins while executing on Mono - [#7222](https://github.com/NuGet/Home/issues/7222) + +[List of all issues fixed in this release 4.9.0](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.9")
    + +## Summary: What's New in 4.9.1 + +* Add support for reading a writing to the nuget.config via a new command trusted-signers - [#7480](https://github.com/NuGet/Home/issues/7480) + +### Issues fixed in this release + +* Fix license link generation - [#7515](https://github.com/NuGet/Home/issues/7515) + +* Error codes regression for validating signatures - [#7492](https://github.com/NuGet/Home/issues/7492) + +* NuGet.Build.Tasks.Pack package does not have license information - [#7379](https://github.com/NuGet/Home/issues/7379) + +[List of all issues fixed in this release 4.9.1](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.9.1") + +## Known issues + +### dotnet.exe/nuget.exe doesn't use credentials when source name contains a whitespace - [#7517](https://github.com/NuGet/Home/issues/7517) + +#### Issue +When there is a whitespace in the source name, nuget.exe throws an error like `The ' ' character, hexadecimal value 0x20, cannot be included in a name.` + +#### Workaround +Change the name of the source to not contain a whitespace. + +### dotnet nuget push --interactive gives an error on Mac. - [#7519](https://github.com/NuGet/Home/issues/7519) + +#### Issue +The `--interactive` argument is not being forwarded by the dotnet cli and results in the error `error: Missing value for option 'interactive'` + +#### Workaround +Run any other dotnet command with the interactive option such as `dotnet restore --interactive` and authenticate. The authentication then might be cached by the credential provider. Then run `dotnet nuget push`. + +### LicenseAcceptanceWindow and LicenseFileWindow Accessibility issues - [#7452](https://github.com/NuGet/Home/issues/7452) + +#### Issue +The license acceptance window and license file window have accessibility issues with keyboard navigation and narration with screen reader and JAWS. + +#### Workaround +No workaround. + +### Packages in FallbackFolders installed by .NET Core SDK are custom installed, and fail signature validation. - [#7414](https://github.com/NuGet/Home/issues/7414) + +#### Issue +When using dotnet.exe 2.x to restore a project that multi-targets netcoreapp 1.x and netcoreapp 2.x, the fallback folder is treated as a file feed. This means, when restoring, NuGet will pick the package from the fallback folder and try to install it into the global packages folder and do the usual signing validation which fails. + +#### Workaround +Disable the usage of the fallback folder by setting the `RestoreAdditionalProjectSources` to nothing. `` Use this with caution as it will cause a lot of packages to be downloaded from NuGet.org which otherwise would be have been restored from the fallback folder. From 0c5a49ec6e0254a4e7a9d8bca7daeefb853c433a Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 27 Nov 2018 17:16:31 -0800 Subject: [PATCH 0986/2943] master -> live (#1187) * Fix typo in analyzers-conventions.md (#1039) (#1040) * metadata updates (#1044) * metadata updates * fix warning * some additional changes * Update NU3028.md (#1041) * Update NU3028.md https://github.com/NuGet/Home/issues/7173 * Update NU3028.md * Update NU3028.md * Update cli-ref-environment-variables.md * Don't call .Net Framework "full" * Added the versioning for Revocation mode functionality * Update TOC.md * Karann 4.8 relnotes (#1055) * Create NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update TOC.md * Update NuGet-Cross-Platform-Authentication-Plugin.md * Update Index.md * Update Supporting-Multiple-Target-Frameworks.md * Update Package-restore-troubleshooting.md (#1088) * Update Supporting-Multiple-Target-Frameworks.md (#1086) * Update Creating-a-Package.md (#1084) * Update nuspec.md (#1065) * Replace namespaces with prefixes * Be consistent about namespace/prefix reservation * Update the details for IsImplicitlyDefined packages (#1067) * Update the details for IsImplicitlyDefined packages * Update Package-Manager-UI.md * Update Package-Manager-UI.md * Update Package-Manager-UI.md * PR feedback * Create PackageReference-with-packages-lock-file.md (#1100) * Create PackageReference-with-packages-lock-file.md * Update PackageReference-with-packages-lock-file.md * Update PackageReference-with-packages-lock-file.md * Fixes #1085 (#1099) * ; -> : (#1098) * Revert "Create PackageReference-with-packages-lock-file.md" (#1101) * Revert "; -> : (#1098)" This reverts commit 6ffe30a427c5a2109958d945d48e48e296fd3178. * Revert "Fixes #1085 (#1099)" This reverts commit b9b6c2f13a073918c1650a65be9fe673c1104b70. * Revert "Create PackageReference-with-packages-lock-file.md (#1100)" This reverts commit 79f240d7433c0ac4d4fd88e7e8ab7f93c62227c4. * Update Create-UI-Controls.md * Update TOC.md (#1125) fixes #1124 Remove the link to docs for creating .NET Standard packages in VS2015, since .NET Core tooling was only pre-release in VS2015. Using the dotnet CLI is recommended over VS2015, if VS2017 can't be used for some reason. * Update Package-References-in-Project-Files.md (#1119) * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Replaced staging.nuget.org with int.nugettest.org (#1132) The staging.nuget.org is deprecated and it is recommended to switch to int.nugettest.org (see https://github.com/NuGet/NuGetGallery/issues/5627). * staging.nuget.org has been deprecated (#1131) See https://github.com/NuGet/NuGetGallery/issues/5627. * Update Overview-and-Workflow.md (#1130) * Update Overview-and-Workflow.md Update styling and typo in image caption as a correction for #1129 * Update Overview-and-Workflow.md * Update Package-restore-troubleshooting.md (#1123) Add missing word. * Add files via upload * Update tool box icon spec (#1149) * Update tool box icon spec * Update Create-UI-Controls.md * Update Create-UI-Controls.md * CC74600: Unnecessarily nested lists (#1091) Hello, @karann-msft, This proposed file change comes from https://github.com/NuGet/docs.microsoft.com-nuget.es-es/pull/4 . Could you review this contribution and help to merge if agreed? Many thanks in advance. * fix: typo in authors token (#1120) Based on issue #1072, I've corrected the docs in the appropriate place. * Fixed typo (#1117) Corrected the spelling of 'delimeters' to delimiters * Grammar (#1113) fixed some grammatical errors * Revert "CC74600: Unnecessarily nested lists (#1091)" (#1152) This reverts commit 1c8db5f63041aac6668f56d0a33b60e0a1fdd05c. * Fixed formatting for note (#1090) * Fix erroneous extra lines in PackageReference documentation (#1153) This removes some seemingly unintended extra lines introduced by #1119. * Fixed typo (#1154) * add configFile option for nugget pack (#1115) add missing -ConfigFile option for nugget pack * Updated what-is-nuget.md to reflect Issue #1111 (#1114) Updated Visual Studio Team System to Azure DevOps to reflect Issue #1111 * Add documentation for client policies updates * fix link issues * Add symbols docs. (#1128) * Add symbols docs. * Updates * Update Symbol-Packages-V2.md * Update Symbol-Packages-V2.md Adding validation info to publish page for Symbols packages. * Feedback * Update * Update * Fix a broken link. * Feedback * Update symbol-package-publish-resource.md * Update Symbol-Packages-V2.md * Feedback * Feedback * Update TOC.md * Rename Symbol-Packages-V2.md to Symbol-Packages-snupkg.md * Update Symbol-Packages.md * Update Symbol-Packages.md * Update Symbol-Packages-snupkg.md * Update Symbol-Packages-snupkg.md * Update Symbol-Packages-snupkg.md * Update cli-ref-pack.md * Update cli-ref-pack.md * Update Symbol-Packages-snupkg.md * Update symbol-package-publish-resource.md * address feedback * Specify that sync deletes certs * Add list sample output * license docs (#1168) * Update Creating-a-Package.md * Update nuspec.md * Update nuspec.md * Update nuspec.md * Update nuspec.md * Update Creating-a-Package.md * Update nuspec.md * Update Creating-a-Package.md * Spellings (#1171) Thank you for your contribution! * Add Sleet to hosting-packages doc (#1166) * Fix snupkg documentation (#1174) The msbuild property is `SymbolPackageFormat`. See: https://github.com/NuGet/NuGet.Client/blob/3c9b61826814dc800a2a295f0985ce4f295483d6/src/NuGet.Core/NuGet.Build.Tasks.Pack/NuGet.Build.Tasks.Pack.targets#L42 * Fix spellings (#1172) * fix formatting in Package-References-in-Project-Files.md (#1182) Fix formatting/typo in the first paragraph. * typo on dependencies in locking doc (#1175) * Improve sentences (#1181) * Improve sentences * Add license warnings and errors (#1173) * update docs * address feedback * fix the wording of NU5035 * add samples * Clarify what kind of version strings are in registration and catalog (#1185) * Change MSBuild arguments to hyphen format (#1167) * 4.9.1 relnotes (#1177) * Create NuGet-4.9-RTM.md * Update Index.md * Update TOC.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md tweaks to release notes * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md --- docs/TOC.md | 1 + docs/api/catalog-resource.md | 2 +- docs/api/registration-base-url-resource.md | 5 +- .../Package-References-in-Project-Files.md | 16 +-- docs/consume-packages/Package-Restore.md | 2 +- .../Package-restore-troubleshooting.md | 4 +- .../create-packages/Symbol-Packages-snupkg.md | 8 +- ...d-publish-a-package-using-visual-studio.md | 4 +- docs/reference/errors-and-warnings/NU5020.md | 4 +- docs/reference/errors-and-warnings/NU5022.md | 2 +- docs/reference/errors-and-warnings/NU5023.md | 4 +- docs/reference/errors-and-warnings/NU5024.md | 2 +- docs/reference/errors-and-warnings/NU5025.md | 4 +- docs/reference/errors-and-warnings/NU5028.md | 4 +- docs/reference/errors-and-warnings/NU5029.md | 4 +- docs/reference/errors-and-warnings/NU5030.md | 45 +++++++ docs/reference/errors-and-warnings/NU5031.md | 21 +++ docs/reference/errors-and-warnings/NU5032.md | 25 ++++ docs/reference/errors-and-warnings/NU5033.md | 21 +++ docs/reference/errors-and-warnings/NU5034.md | 24 ++++ docs/reference/errors-and-warnings/NU5035.md | 22 ++++ docs/reference/errors-and-warnings/NU5114.md | 4 +- docs/reference/errors-and-warnings/NU5124.md | 23 ++++ docs/reference/errors-and-warnings/NU5125.md | 21 +++ ...et-Cross-Platform-Authentication-Plugin.md | 2 +- docs/reference/msbuild-targets.md | 42 ++++-- docs/release-notes/Index.md | 2 + docs/release-notes/NuGet-4.9-RTM.md | 124 ++++++++++++++++++ docs/tools/cli-ref-long-path.md | 2 +- docs/tools/cli-ref-pack.md | 2 +- 30 files changed, 397 insertions(+), 49 deletions(-) create mode 100644 docs/reference/errors-and-warnings/NU5030.md create mode 100644 docs/reference/errors-and-warnings/NU5031.md create mode 100644 docs/reference/errors-and-warnings/NU5032.md create mode 100644 docs/reference/errors-and-warnings/NU5033.md create mode 100644 docs/reference/errors-and-warnings/NU5034.md create mode 100644 docs/reference/errors-and-warnings/NU5035.md create mode 100644 docs/reference/errors-and-warnings/NU5124.md create mode 100644 docs/reference/errors-and-warnings/NU5125.md create mode 100644 docs/release-notes/NuGet-4.9-RTM.md diff --git a/docs/TOC.md b/docs/TOC.md index c388ea3d0..07c77d777 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -225,6 +225,7 @@ ## [Deleting packages](policies/deleting-packages.md) # Release notes ## [Known Issues](release-notes/known-issues.md) +## [NuGet 4.9 RTM](release-notes/NuGet-4.9-RTM.md) ## [NuGet 4.8 RTM](release-notes/NuGet-4.8-RTM.md) ## [NuGet 4.7 RTM](release-notes/NuGet-4.7-RTM.md) ## [NuGet 4.6 RTM](release-notes/NuGet-4.6-RTM.md) diff --git a/docs/api/catalog-resource.md b/docs/api/catalog-resource.md index 11a5f1a45..37fda5f61 100644 --- a/docs/api/catalog-resource.md +++ b/docs/api/catalog-resource.md @@ -234,7 +234,7 @@ tags | array of strings | no | title | string | no | verbatimVersion | string | no | The version string as it's originally found in the .nuspec -The package `version` property is the full, normalized version string. This means that SemVer 2.0.0 build data can +The package `version` property is the full version string after normalization. This means that SemVer 2.0.0 build data can be included here. The `created` timestamp is when the package was first received by the package source, which is typically a short diff --git a/docs/api/registration-base-url-resource.md b/docs/api/registration-base-url-resource.md index b7a78c9d0..5e9c3f118 100644 --- a/docs/api/registration-base-url-resource.md +++ b/docs/api/registration-base-url-resource.md @@ -175,7 +175,10 @@ requireLicenseAcceptance | boolean | no | summary | string | no | tags | string or array of string | no | title | string | no | -version | string | yes | The version of the package +version | string | yes | The full version string after normalization + +The package `version` property is the full version string after normalization. This means that SemVer 2.0.0 build data +can be included here. The `dependencyGroups` property is an array of objects representing the dependencies of the package, grouped by target framework. If the package has no dependencies, the `dependencyGroups` property is missing, an empty array, or the diff --git a/docs/consume-packages/Package-References-in-Project-Files.md b/docs/consume-packages/Package-References-in-Project-Files.md index f3453f8fe..1ee286cd4 100644 --- a/docs/consume-packages/Package-References-in-Project-Files.md +++ b/docs/consume-packages/Package-References-in-Project-Files.md @@ -9,13 +9,7 @@ ms.topic: conceptual # Package references (PackageReference) in project files -Package references, using the `PackageReference` node, manage NuGet dependencies directly within project files (as opposed to a separate `packages.config` file). Using PackageReference, as it's called, doesn't affect other aspects of NuGet; for example, settings in `NuGet. - - - - - -fig` files (including package sources) are still applied as explained in [Configuring NuGet Behavior](configuring-nuget-behavior.md). +Package references, using the `PackageReference` node, manage NuGet dependencies directly within project files (as opposed to a separate `packages.config` file). Using PackageReference, as it's called, doesn't affect other aspects of NuGet; for example, settings in `NuGet.config` files (including package sources) are still applied as explained in [Configuring NuGet Behavior](configuring-nuget-behavior.md). With PackageReference, you can also use MSBuild conditions to choose package references per target framework, configuration, platform, 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).) @@ -158,7 +152,7 @@ Conditions can also be applied at the `ItemGroup` level and will apply to all ch ## Locking dependencies *This feature is available with NuGet **4.9** or above and with Visual Studio 2017 **15.9 Preview 5** or above.* -Input to NuGet restore is a set of Package References from the project file (top-level or direct dependenices) 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: +Input to NuGet restore is a set of Package References 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. @@ -189,9 +183,9 @@ If this property is set, NuGet restore will generate a lock file - `packages.loc ### `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 NuGet detects a change in the defined dependenices 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. +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. -For CI/CD and other scenarios, where you would not want to change the package dependenies on the fly, you can do so by setting the `lockedmode` to `true`: +For CI/CD and other scenarios, where you would not want to change the package dependencies on the fly, you can do so by setting the `lockedmode` to `true`: For dotnet.exe, run: ``` @@ -200,7 +194,7 @@ For dotnet.exe, run: For msbuild.exe, run: ``` -> msbuild.exe /t:restore /p:RestoreLockedMode=true +> msbuild.exe -t:restore -p:RestoreLockedMode=true ``` You may also set this conditional MSBuild property in your project file: diff --git a/docs/consume-packages/Package-Restore.md b/docs/consume-packages/Package-Restore.md index 17122999c..96af221f3 100644 --- a/docs/consume-packages/Package-Restore.md +++ b/docs/consume-packages/Package-Restore.md @@ -34,7 +34,7 @@ Package restore is triggered in the following ways: - **NuGet CLI**: use the [nuget restore](../tools/cli-ref-restore.md) command, which restores packages listed in the project file or in `packages.config`. You can also specify a solution file. -- **MSBuild**: use the [msbuild /t:restore](../reference/msbuild-targets.md#restore-target) command, which restores packages packages listed in the project file (PackageReference only). Available only in NuGet 4.x+ and MSBuild 15.1+, which are included with Visual Studio 2017. `nuget restore` and `dotnet restore` both use this command for applicable projects. +- **MSBuild**: use the [msbuild -t:restore](../reference/msbuild-targets.md#restore-target) command, which restores packages packages listed in the project file (PackageReference only). Available only in NuGet 4.x+ and MSBuild 15.1+, which are included with Visual Studio 2017. `nuget restore` and `dotnet restore` both use this command for applicable projects. - **Visual Studio Team Services**: When creating a build definition on Team Services, include the [NuGet restore](/vsts/build-release/tasks/package/nuget#restore-nuget-packages) or [.NET Core Restore](/vsts/build-release/tasks/build/dotnet-core#restore-nuget-packages) task in the definition before any build task. This task is included by default in a number of build templates. diff --git a/docs/consume-packages/Package-restore-troubleshooting.md b/docs/consume-packages/Package-restore-troubleshooting.md index b20c754df..c7277d95f 100644 --- a/docs/consume-packages/Package-restore-troubleshooting.md +++ b/docs/consume-packages/Package-restore-troubleshooting.md @@ -52,7 +52,7 @@ Use one of the following methods to restore the packages: - In Visual Studio, enable package restore by selecting the **Tools > NuGet Package Manager > Package Manager Settings** menu command, setting both options under **Package Restore**, and selecting **OK**. Then build the solution again. - For .NET Core projects, run `dotnet restore` or `dotnet build` (which automatically runs restore). - On the command line, run `nuget restore` (except for projects created with `dotnet`, in which case use `dotnet restore`). -- On the command line with projects using the PackageReference format, run `msbuild /t:restore`. +- On the command line with projects using the PackageReference format, run `msbuild -t:restore`. After a successful restore, the package should be present in the *global-packages* folder. For projects using PackageReference, a restore should recreate the `obj/project.assets.json` file; for projects using `packages.config`, the package should appear in the project's `packages` folder. The project should now build successfully. If not, [file an issue on GitHub](https://github.com/NuGet/docs.microsoft.com-nuget/issues) so we can follow up with you. @@ -68,7 +68,7 @@ Assets file '\project.assets.json' not found. Run a NuGet package restore The `project.assets.json` file maintains a project's dependency graph when using the PackageReference management format, which is used to make sure that all necessary packages are installed on the computer. Because this file is generated dynamically through package restore, it's typically not added to source control. As a result, this error occurs when building a project with a tool such as `msbuild` that does not automatically restore packages. -In this case, run `msbuild /t:restore` followed by `msbuild`, or use `dotnet build` (which restores packages automatically). You can also use any of the package restore methods in the [previous section](#missing). +In this case, run `msbuild -t:restore` followed by `msbuild`, or use `dotnet build` (which restores packages automatically). You can also use any of the package restore methods in the [previous section](#missing). diff --git a/docs/create-packages/Symbol-Packages-snupkg.md b/docs/create-packages/Symbol-Packages-snupkg.md index 13176c465..bf608ce5f 100644 --- a/docs/create-packages/Symbol-Packages-snupkg.md +++ b/docs/create-packages/Symbol-Packages-snupkg.md @@ -37,10 +37,10 @@ nuget pack MyPackage.nuspec -Symbols -SymbolPackageFormat snupkg nuget pack MyPackage.csproj -Symbols -SymbolPackageFormat snupkg -msbuild /t:pack MyPackage.csproj /p:IncludeSymbols=true /p:SymbolPackageFormat=snupkg +msbuild -t:pack MyPackage.csproj -p:IncludeSymbols=true -p:SymbolPackageFormat=snupkg ``` -`.snupkgs` are not produced by default. You must pass the `SymbolPackageFormat` property along with `-Symbols` in case of nuget.exe, `--include-symbols` in case of dotnet.exe, or `/p:IncludeSymbols` in case of msbuild. +`.snupkgs` are not produced by default. You must pass the `SymbolPackageFormat` property along with `-Symbols` in case of nuget.exe, `--include-symbols` in case of dotnet.exe, or `-p:IncludeSymbols` in case of msbuild. SymbolPackageFormat property can have one of the two values: `symbols.nupkg` (the default) or `snupkg`. If the SymbolPackageFormat is not specified, it defaults to `symbols.nupkg` and a legacy symbol package will be created. @@ -61,13 +61,13 @@ SymbolPackageFormat property can have one of the two values: `symbols.nupkg` (th nuget push MyPackage.snupkg ``` -1. You can also push both primary and symbol packages at the same time using the below command. Both, .nupkg and .snupkg files need to be present in the current folder. +1. You can also push both primary and symbol packages at the same time using the below command. Both .nupkg and .snupkg files need to be present in the current folder. ```cli nuget push MyPackage.nupkg ``` -In this case, NuGet will publish to nuget.org the `MyPackage.nupkg` first followed by `MyPackage.snupkg`. +NuGet will publish both packages to nuget.org. `MyPackage.nupkg` will be published first, followed by `MyPackage.snupkg`. ## NuGet.org symbol server diff --git a/docs/quickstart/create-and-publish-a-package-using-visual-studio.md b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md index c624ee1da..3c7f82fb9 100644 --- a/docs/quickstart/create-and-publish-a-package-using-visual-studio.md +++ b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md @@ -90,12 +90,12 @@ namespace AppLogger As an alternate to using the **Pack** menu command, NuGet 4.x+ and MSBuild 15.1+ supports a `pack` target when the project contains the necessary package data. Open a command prompt, navigate to your project folder and run the following command. (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.) ```cli -msbuild /t:pack /p:Configuration=Release +msbuild -t:pack -p:Configuration=Release ``` The package can then be found in the `bin\Release` folder. -For additional options with `msbuild /t:pack`, see [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md#pack-target). +For additional options with `msbuild -t:pack`, see [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md#pack-target). ## Publish the package diff --git a/docs/reference/errors-and-warnings/NU5020.md b/docs/reference/errors-and-warnings/NU5020.md index eb6669397..3a520d84e 100644 --- a/docs/reference/errors-and-warnings/NU5020.md +++ b/docs/reference/errors-and-warnings/NU5020.md @@ -15,10 +15,10 @@ f1_keywords: ### Issue -A source file was passed to `msbuild /t:pack` operation with an empty path. +A source file was passed to `msbuild -t:pack` operation with an empty path. ### Solution -Please ensure that all source files passed to `msbuild /t:pack` operation have a vaild path and exist on the disk. +Please ensure that all source files passed to `msbuild -t:pack` operation have a vaild path and exist on the disk. diff --git a/docs/reference/errors-and-warnings/NU5022.md b/docs/reference/errors-and-warnings/NU5022.md index 40d32546e..0cb36ee7a 100644 --- a/docs/reference/errors-and-warnings/NU5022.md +++ b/docs/reference/errors-and-warnings/NU5022.md @@ -15,7 +15,7 @@ f1_keywords: ### Issue -The `MinClientVersion` property passed to msbuild /t:pack operation is not a valid version string. +The `MinClientVersion` property passed to msbuild -t:pack operation is not a valid version string. ### Solution diff --git a/docs/reference/errors-and-warnings/NU5023.md b/docs/reference/errors-and-warnings/NU5023.md index 3ec6f47bd..d951d7c2b 100644 --- a/docs/reference/errors-and-warnings/NU5023.md +++ b/docs/reference/errors-and-warnings/NU5023.md @@ -15,10 +15,10 @@ f1_keywords: ### Issue -The project passed to the `msbuild /t:pack` does not contain an assets file in the obj directory. +The project passed to the `msbuild -t:pack` does not contain an assets file in the obj directory. ### Solution -Please run `msbuild /t:restore` operation on the project being packaged before running the pack operation. +Please run `msbuild -t:restore` operation on the project being packaged before running the pack operation. diff --git a/docs/reference/errors-and-warnings/NU5024.md b/docs/reference/errors-and-warnings/NU5024.md index eb3586e30..5ec378dbe 100644 --- a/docs/reference/errors-and-warnings/NU5024.md +++ b/docs/reference/errors-and-warnings/NU5024.md @@ -15,7 +15,7 @@ f1_keywords: ### Issue -The `PackageVersion` property passed to msbuild /t:pack operation is not a valid version string. +The `PackageVersion` property passed to msbuild -t:pack operation is not a valid version string. ### Solution diff --git a/docs/reference/errors-and-warnings/NU5025.md b/docs/reference/errors-and-warnings/NU5025.md index 5b2804ba2..8feacb2b3 100644 --- a/docs/reference/errors-and-warnings/NU5025.md +++ b/docs/reference/errors-and-warnings/NU5025.md @@ -15,10 +15,10 @@ f1_keywords: ### Issue -The project passed to the `msbuild /t:pack` does not contain a valid assets file in the obj directory. +The project passed to the `msbuild -t:pack` does not contain a valid assets file in the obj directory. ### Solution -Please run `msbuild /t:restore /p:restoreforce=true` operation on the project being packaged before running the pack operation. +Please run `msbuild -t:restore -p:restoreforce=true` operation on the project being packaged before running the pack operation. diff --git a/docs/reference/errors-and-warnings/NU5028.md b/docs/reference/errors-and-warnings/NU5028.md index d0205ef35..49cfe2bf8 100644 --- a/docs/reference/errors-and-warnings/NU5028.md +++ b/docs/reference/errors-and-warnings/NU5028.md @@ -15,10 +15,10 @@ f1_keywords: ### Issue -No project file was specified to the `msbuild /t:pack` operation. +No project file was specified to the `msbuild -t:pack` operation. ### Solution -Please specify the project to pack operation. You can either specify it in the cammand (`msbuild /t:pack project.csproj`) or run `msbuild /t:pack` operation in a folder containing a project file. +Please specify the project to pack operation. You can either specify it in the cammand (`msbuild -t:pack project.csproj`) or run `msbuild -t:pack` operation in a folder containing a project file. diff --git a/docs/reference/errors-and-warnings/NU5029.md b/docs/reference/errors-and-warnings/NU5029.md index 9aac063ea..3241cf882 100644 --- a/docs/reference/errors-and-warnings/NU5029.md +++ b/docs/reference/errors-and-warnings/NU5029.md @@ -15,10 +15,10 @@ f1_keywords: ### Issue -Properties passed to `msbuild /t:pack /p:NuspecFile=project.nuspec` command were not in the right format to be parsed. +Properties passed to `msbuild -t:pack -p:NuspecFile=project.nuspec` command were not in the right format to be parsed. ### Solution -Please pass any nuspec properties using `/p:NuspecProperties` in the format of `key=value`. For instance `msbuild /t:pack /p:NuspecFile=project.nuspec /p:NuspecProperties="configuration=release"` +Please pass any nuspec properties using `-p:NuspecProperties` in the format of `key=value`. For instance `msbuild -t:pack -p:NuspecFile=project.nuspec -p:NuspecProperties="configuration=release"` diff --git a/docs/reference/errors-and-warnings/NU5030.md b/docs/reference/errors-and-warnings/NU5030.md new file mode 100644 index 000000000..020351352 --- /dev/null +++ b/docs/reference/errors-and-warnings/NU5030.md @@ -0,0 +1,45 @@ +--- +title: NuGet Error NU5030 +description: NU5030 Error code +author: nkolev92 +ms.date: 11/15/2018 +ms.topic: reference +ms.reviewer: karann +f1_keywords: + - NU5030 +--- + +# NuGet Error NU5030 +
    The license file 'LICENSE.txt' does not exist in the package.
    + +### Issue + +The license file is referenced in the metadata with either PackageLicenseFile in the csproj or the license element in the nuspec, but the file itself was not included in the expected location within the package. + + +### Solution + +Include the file in the package, for example: + +If pack with the targets: +```xml + + LICENSE.txt + + + + + +``` + +If packing with a nuspec: +```xml + + + LICENSE.txt + + + + + +``` \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU5031.md b/docs/reference/errors-and-warnings/NU5031.md new file mode 100644 index 000000000..01ccd5ea7 --- /dev/null +++ b/docs/reference/errors-and-warnings/NU5031.md @@ -0,0 +1,21 @@ +--- +title: NuGet Error NU5031 +description: NU5031 Error code +author: nkolev92 +ms.date: 11/15/2018 +ms.topic: reference +ms.reviewer: karann +f1_keywords: + - NU5031 +--- + +# NuGet Error NU5031 +
    The license file 'LICENSE.txt' has an invalid extension. Valid options are .txt, .md or none.
    + +### Issue + +Only the listed file extensions are allowed. + +### Solution + +Use a file extensions from the allowed list. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU5032.md b/docs/reference/errors-and-warnings/NU5032.md new file mode 100644 index 000000000..fc9428664 --- /dev/null +++ b/docs/reference/errors-and-warnings/NU5032.md @@ -0,0 +1,25 @@ +--- +title: NuGet Error NU5032 +description: NU5032 Error code +author: nkolev92 +ms.date: 11/15/2018 +ms.topic: reference +ms.reviewer: karann +f1_keywords: + - NU5032 +--- + +# NuGet Error NU5032 +
    The license expression 'MIT OR OR Apache-2.0' cannot be parsed succesfully. The license expression is invalid.
    + +### Issue + +The license expression does not conform to the NuGet license expression grammar. + +### Solution + +In this case there are 2 'OR' operators. The operators have to be surrounded with operands. +For example: +``` +MIT OR Apache-2.0 +``` \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU5033.md b/docs/reference/errors-and-warnings/NU5033.md new file mode 100644 index 000000000..3569d58db --- /dev/null +++ b/docs/reference/errors-and-warnings/NU5033.md @@ -0,0 +1,21 @@ +--- +title: NuGet Error NU5033 +description: NU5033 Error code +author: nkolev92 +ms.date: 11/15/2018 +ms.topic: reference +ms.reviewer: karann +f1_keywords: + - NU5033 +--- + +# NuGet Error NU5033 +
    Invalid metadata. Cannot specify both a License Expression and a License File.
    + +### Issue + +The PackageLicenseExpression and PackageLicenseFile properties are mutually exclusive. + +### Solution + +Use one or the other. If you are using a well known license that's part of the standard license list, consider using an expression. Otherwise please use a license file. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU5034.md b/docs/reference/errors-and-warnings/NU5034.md new file mode 100644 index 000000000..9aac063ea --- /dev/null +++ b/docs/reference/errors-and-warnings/NU5034.md @@ -0,0 +1,24 @@ +--- +title: NuGet Error NU5029 +description: NU5029 Error code +author: mishra14 +ms.author: karann +ms.date: 8/8/2018 +ms.topic: reference +ms.reviewer: anangaur +f1_keywords: + - NU5029 +--- + +# NuGet Error NU5029 +
    NuspecProperties should be in the form of 'key1=value1;key2=value2'.
    + +### Issue + +Properties passed to `msbuild /t:pack /p:NuspecFile=project.nuspec` command were not in the right format to be parsed. + + +### Solution + +Please pass any nuspec properties using `/p:NuspecProperties` in the format of `key=value`. For instance `msbuild /t:pack /p:NuspecFile=project.nuspec /p:NuspecProperties="configuration=release"` + diff --git a/docs/reference/errors-and-warnings/NU5035.md b/docs/reference/errors-and-warnings/NU5035.md new file mode 100644 index 000000000..472e217be --- /dev/null +++ b/docs/reference/errors-and-warnings/NU5035.md @@ -0,0 +1,22 @@ +--- +title: NuGet Error NU5035 +description: NU5035 Error code +author: nkolev92 +ms.date: 11/15/2018 +ms.topic: reference +ms.reviewer: karann +f1_keywords: + - NU5035 +--- + +# NuGet Error NU5035 +
    The PackageLicenseUrl cannot be used in conjunction with the PackageLicenseFile and PackageLicenseExpression.
    + +### Issue + +When using PackageLicenseFile or PackageLicenseExpression, you should not set the PackageLicenseUrl property. +The licenseUrl metadata will be auto-generated by the client tools to a down-level friendly url. + +### Solution + +Do not set the PackageLicenseUrl. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU5114.md b/docs/reference/errors-and-warnings/NU5114.md index 1cdc92c35..4bda02de6 100644 --- a/docs/reference/errors-and-warnings/NU5114.md +++ b/docs/reference/errors-and-warnings/NU5114.md @@ -15,10 +15,10 @@ f1_keywords: ### Issue -A property was specified in the project file and also passed through pack command using `-Properties` or `/p:NuspecProperties` options. +A property was specified in the project file and also passed through pack command using `-Properties` or `-p:NuspecProperties` options. ### Solution -Please ensure that is a property is defined in the project file then, you do not pass the same property through pack command using `-Properties` or `/p:NuspecProperties` options. +Please ensure that is a property is defined in the project file then, you do not pass the same property through pack command using `-Properties` or `-p:NuspecProperties` options. diff --git a/docs/reference/errors-and-warnings/NU5124.md b/docs/reference/errors-and-warnings/NU5124.md new file mode 100644 index 000000000..39fcaec77 --- /dev/null +++ b/docs/reference/errors-and-warnings/NU5124.md @@ -0,0 +1,23 @@ +--- +title: NuGet Error NU5124 +description: NU5124 Error code +author: nkolev92 +ms.date: 11/15/2018 +ms.topic: reference +ms.reviewer: karann +f1_keywords: + - NU5124 +--- + +# NuGet Warning NU5124 +
    The license identifier 'Microsoft-SpecialLicense' is not recognized by the current toolset.
    + +### Issue + +The NuGet Client tools have a known list of license identifiers. As this knowledge is contained within the product, sometimes version of the tools is not aware of the standardization of the license. +Other times, the license simply is not a standardized license, with no clear timeline of ever becoming one. + +### Solution + +Use an updated client that understands the license identifier you are trying to use. +Use a license file instead of an expression if there is no timeline for the said license to become an SPDX standard license. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU5125.md b/docs/reference/errors-and-warnings/NU5125.md new file mode 100644 index 000000000..f993c6eea --- /dev/null +++ b/docs/reference/errors-and-warnings/NU5125.md @@ -0,0 +1,21 @@ +--- +title: NuGet Error NU5125 +description: NU5125 Error code +author: nkolev92 +ms.date: 11/15/2018 +ms.topic: reference +ms.reviewer: karann +f1_keywords: + - NU5125 +--- + +# NuGet Warning NU5125 +
    The 'licenseUrl' element will be deprecated. Consider using the 'license' element instead.
    + +### Issue + +The licenseUrl element is being replaced by the license element. The deprecation can be found [here](https://github.com/NuGet/Home/issues/4628). + +### Solution + +Use the license element. \ No newline at end of file diff --git a/docs/reference/extensibility/NuGet-Cross-Platform-Authentication-Plugin.md b/docs/reference/extensibility/NuGet-Cross-Platform-Authentication-Plugin.md index cbb39dd9a..a1b0753de 100644 --- a/docs/reference/extensibility/NuGet-Cross-Platform-Authentication-Plugin.md +++ b/docs/reference/extensibility/NuGet-Cross-Platform-Authentication-Plugin.md @@ -27,7 +27,7 @@ There is no interactive switch on `dotnet build` and `dotnet publish`. ## Authentication in MSBuild Similar to dotnet.exe, MSBuild.exe is by default non interactive the MSBuild.exe authentication mechanism is device flow. -To allow the restore to pause and wait for authentication, call restore with `msbuild /t:restore /p:NuGetInteractive="true"`. +To allow the restore to pause and wait for authentication, call restore with `msbuild -t:restore -p:NuGetInteractive="true"`. ## Creating a cross platform authentication plugin diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index 85e566ae1..586b84bdb 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -32,7 +32,7 @@ Similarly, you can write an MSBuild task, write your own target and consume NuGe ## pack target -For .NET Standard projects using the PackageReference format, using `msbuild /t:pack` draws inputs from the project file to use in creating a NuGet package. +For .NET Standard projects using the PackageReference format, using `msbuild -t:pack` draws inputs from the project file to use in creating a NuGet package. The table below 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). @@ -50,7 +50,9 @@ Note that the `Owners` and `Summary` properties from `.nuspec` are not supported | Description | Description | "Package Description" | | | Copyright | Copyright | empty | | | RequireLicenseAcceptance | PackageRequireLicenseAcceptance | false | | -| LicenseUrl | PackageLicenseUrl | empty | | +| license | PackageLicenseExpression | empty | Corresponds to `` | +| license | PackageLicenseFile | empty | Corresponds to ``. You may need to explicitly pack the referenced license file. | +| LicenseUrl | PackageLicenseUrl | empty | `licenseUrl` is being deprecated, use the PackageLicenseExpression or PackageLicenseFile property | | ProjectUrl | PackageProjectUrl | empty | | | IconUrl | PackageIconUrl | empty | | | Tags | PackageTags | empty | Tags are semi-colon delimited. | @@ -72,6 +74,8 @@ Note that the `Owners` and `Summary` properties from `.nuspec` are not supported - Copyright - PackageRequireLicenseAcceptance - DevelopmentDependency +- PackageLicenseExpression +- PackageLicenseFile - PackageLicenseUrl - PackageProjectUrl - PackageIconUrl @@ -172,7 +176,7 @@ Other pack specific metadata that you can set on any of the above items includes ### IncludeSymbols -When using `MSBuild /t:pack /p:IncludeSymbols=true`, the corresponding `.pdb` files are copied along with other output files (`.dll`, `.exe`, `.winmd`, `.xml`, `.json`, `.pri`). Note that setting `IncludeSymbols=true` creates a regular package *and* a symbols package. +When using `MSBuild -t:pack -p:IncludeSymbols=true`, the corresponding `.pdb` files are copied along with other output files (`.dll`, `.exe`, `.winmd`, `.xml`, `.json`, `.pri`). Note that setting `IncludeSymbols=true` creates a regular package *and* a symbols package. ### IncludeSource @@ -180,28 +184,46 @@ This is the same as `IncludeSymbols`, except that it copies source files along w If a file of type Compile, is outside the project folder, then it's just added to `src\\`. +### Packing a license expression or a license file + +When using a license expression, the PackageLicenseExpression property should be used. +[License expression sample](#https://github.com/NuGet/Samples/tree/master/PackageLicenseExpressionExample). + +When packing a license file, you need to use PackageLicenseFile property to specify the package path, relative to the root of the package. In addition, you need to make sure that the file is included in the package. For example: + +```xml + + LICENSE.txt + + + + + +``` +[License life sample](#https://github.com/NuGet/Samples/tree/master/PackageLicenseFileExample). + ### IsTool -When using `MSBuild /t:pack /p:IsTool=true`, all output files, as specified in the [Output Assemblies](#output-assemblies) scenario, are copied to the `tools` folder instead of the `lib` folder. Note that this is different from a `DotNetCliTool` which is specified by setting the `PackageType` in `.csproj` file. +When using `MSBuild -t:pack -p:IsTool=true`, all output files, as specified in the [Output Assemblies](#output-assemblies) scenario, are copied to the `tools` folder instead of the `lib` folder. Note that this is different from a `DotNetCliTool` which is specified by setting the `PackageType` in `.csproj` file. ### Packing using a .nuspec You can use a `.nuspec` file to pack your project provided that you have a SDK project file to 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. 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`: 1. `NuspecFile`: relative or absolute path to the `.nuspec` file being used for packing. -1. `NuspecProperties`: a semicolon-separated list of key=value pairs. Due to the way MSBuild command-line parsing works, multiple properties must be specified as follows: `/p:NuspecProperties=\"key1=value1;key2=value2\"`. +1. `NuspecProperties`: a semicolon-separated list of key=value pairs. Due to the way MSBuild command-line parsing works, multiple properties must be specified as follows: `-p:NuspecProperties=\"key1=value1;key2=value2\"`. 1. `NuspecBasePath`: Base path for the `.nuspec` file. If using `dotnet.exe` to pack your project, use a command like the following: ```cli -dotnet pack /p:NuspecFile= /p:NuspecProperties=<> /p:NuspecBasePath= +dotnet pack -p:NuspecFile= -p:NuspecProperties=<> -p:NuspecBasePath= ``` If using MSBuild to pack your project, use a command like the following: ```cli -msbuild /t:pack /p:NuspecFile= /p:NuspecProperties=<> /p:NuspecBasePath= +msbuild -t:pack -p:NuspecFile= -p:NuspecProperties=<> -p:NuspecBasePath= ``` Please note that packing a nuspec using dotnet.exe or msbuild also leads to building the project by default. This can be avoided by passing ```--no-build``` property to dotnet.exe, which is the equivalent of setting ```true ``` in your project file, along with setting ```false ``` in the project file @@ -278,7 +300,7 @@ An example: ## restore target -`MSBuild /t:restore` (which `nuget restore` and `dotnet restore` use with .NET Core projects), restores packages referenced in the project file as follows: +`MSBuild -t:restore` (which `nuget restore` and `dotnet restore` use with .NET Core projects), restores packages referenced in the project file as follows: 1. Read all project to project references 1. Read the project properties to find the intermediate folder and target frameworks @@ -291,7 +313,7 @@ The `restore` target works **only** for projects using the PackageReference form ### Restore properties -Additional restore settings may come from MSBuild properties in the project file. Values can also be set from the command line using the `/p:` switch (see Examples below). +Additional restore settings may come from MSBuild properties in the project file. Values can also be set from the command line using the `-p:` switch (see Examples below). | Property | Description | |--------|--------| @@ -310,7 +332,7 @@ Additional restore settings may come from MSBuild properties in the project file Command line: ```cli -msbuild /t:restore /p:RestoreConfigFile= +msbuild -t:restore -p:RestoreConfigFile= ``` Project file: diff --git a/docs/release-notes/Index.md b/docs/release-notes/Index.md index 916028f01..996cf4801 100644 --- a/docs/release-notes/Index.md +++ b/docs/release-notes/Index.md @@ -11,6 +11,8 @@ ms.topic: conceptual [Known Issues](../release-notes/known-issues.md) +[NuGet 4.9 RTM](../release-notes/NuGet-4.9-RTM.md) + [NuGet 4.8 RTM](../release-notes/nuget-4.8-rtm.md) [NuGet 4.7 RTM](../release-notes/nuget-4.7-rtm.md) diff --git a/docs/release-notes/NuGet-4.9-RTM.md b/docs/release-notes/NuGet-4.9-RTM.md new file mode 100644 index 000000000..d8a5ae791 --- /dev/null +++ b/docs/release-notes/NuGet-4.9-RTM.md @@ -0,0 +1,124 @@ +--- +title: NuGet 4.9 RTM Release Notes +description: Release notes for NuGet 4.9 including known issues, bug fixes, new features, and DCRs. +author: karann-msft +ms.author: karann +ms.date: 11/20/2018 +ms.topic: conceptual +--- + +# NuGet 4.9 Release Notes + +[Visual Studio 2017 15.9.0 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.9.0 functionality. + + +Command line versions of the same functionality are also available: +* NuGet.exe 4.9.x - [nuget.org/downloads](https://nuget.org/downloads) +* dotnet.exe - [.NET Core SDK 2.1.500](https://www.microsoft.com/net/download/visual-studio-sdks) + + +## Summary: What's New in 4.9.0 + +* Signing: Enable ClientPolicies to require use of a set of Trusted Authors and Repositories listed in NuGet.Config - [#6961](https://github.com/NuGet/Home/issues/6961) + +* create ".snupkg" files to contain symbols in pack -- enhance push to understand nuget protocol to accept snupkg files for symbol server - [#6878](https://github.com/NuGet/Home/issues/6878) + +* NuGet credential plugin V2 - [#6642](https://github.com/NuGet/Home/issues/6642) + +* Self-Contained NuGet Packages - License - [#4628](https://github.com/NuGet/Home/issues/4628) + +* Enable opt-in "GeneratePathProperty" metadata on a PackageReference to generate a per package MSBuild property to "Foo.Bar\1.0\" directory - [#6949](https://github.com/NuGet/Home/issues/6949) + +* Improve customer success with NuGet operations - [#7108](https://github.com/NuGet/Home/issues/7108) + +### Issues fixed in this release + +* Warnings elevated to errors (via WarnAsErrors) raised by PackageExtraction should never leave extracted package around - [#7445](https://github.com/NuGet/Home/issues/7445) + +* Badly signed packages should not end up in the global packages folder - [#7423](https://github.com/NuGet/Home/issues/7423) + +* binding redirect generation should not skip facade assemblies - [#7393](https://github.com/NuGet/Home/issues/7393) + +* VersionRange Equals doesn't compare floating ranges - [#7324](https://github.com/NuGet/Home/issues/7324) + +* Restore: performance regression using new .NET Core 2.1 HTTP stack - [#7314](https://github.com/NuGet/Home/issues/7314) + +* Update of a Package should not modify PrivateAssets of a PackageReference - [#7285](https://github.com/NuGet/Home/issues/7285) + +* Signing: signing should fail if a package has too many package entries (>65534) - [#7248](https://github.com/NuGet/Home/issues/7248) + +* "dotnet nuget push" codepath should support the new credential provider - [#7233](https://github.com/NuGet/Home/issues/7233) + +* Support executing plugins with invariant culture (as happens in docker) - [#7223](https://github.com/NuGet/Home/issues/7223) + +* nuget sources add should not delete credentials from NuGet.config - [#7200](https://github.com/NuGet/Home/issues/7200) + +* installing a devDependency PackageReference should default to excludeassets=compile - [#7084](https://github.com/NuGet/Home/issues/7084) + +* fix migrator option to be displayed for all projects and show error if project is incompatible - [#6958](https://github.com/NuGet/Home/issues/6958) + +* "dotnet add package" should commit the restore it performs to the assets file - [#6928](https://github.com/NuGet/Home/issues/6928) + +* Signing: improve signing related error messages - [#6906](https://github.com/NuGet/Home/issues/6906) + +* [Test Failure][zh-TW]String "Package Manager Console" doesn't localize on Package Manager Console - [#6381](https://github.com/NuGet/Home/issues/6381) + +* Error message around "Unable to find project information" should be a little more specific inside VS - [#5350](https://github.com/NuGet/Home/issues/5350) + +* Unhelpful error message when incorrectly using nuspec version tag of nuget pack - [#2714](https://github.com/NuGet/Home/issues/2714) + +* DCR - Signing: support NuGet protocol: RepositorySignatures/4.9.0 resource - [#7421](https://github.com/NuGet/Home/issues/7421) + +* DCR - .nupkg.metadata file will now be created during package extraction - contains "content-hash" - [#7283](https://github.com/NuGet/Home/issues/7283) + +* DCR - Skip authenticode verification for plugins while executing on Mono - [#7222](https://github.com/NuGet/Home/issues/7222) + +[List of all issues fixed in this release 4.9.0](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.9")
    + +## Summary: What's New in 4.9.1 + +* Add support for reading a writing to the nuget.config via a new command trusted-signers - [#7480](https://github.com/NuGet/Home/issues/7480) + +### Issues fixed in this release + +* Fix license link generation - [#7515](https://github.com/NuGet/Home/issues/7515) + +* Error codes regression for validating signatures - [#7492](https://github.com/NuGet/Home/issues/7492) + +* NuGet.Build.Tasks.Pack package does not have license information - [#7379](https://github.com/NuGet/Home/issues/7379) + +[List of all issues fixed in this release 4.9.1](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.9.1") + +## Known issues + +### dotnet.exe/nuget.exe doesn't use credentials when source name contains a whitespace - [#7517](https://github.com/NuGet/Home/issues/7517) + +#### Issue +When there is a whitespace in the source name, nuget.exe throws an error like `The ' ' character, hexadecimal value 0x20, cannot be included in a name.` + +#### Workaround +Change the name of the source to not contain a whitespace. + +### dotnet nuget push --interactive gives an error on Mac. - [#7519](https://github.com/NuGet/Home/issues/7519) + +#### Issue +The `--interactive` argument is not being forwarded by the dotnet cli and results in the error `error: Missing value for option 'interactive'` + +#### Workaround +Run any other dotnet command with the interactive option such as `dotnet restore --interactive` and authenticate. The authentication then might be cached by the credential provider. Then run `dotnet nuget push`. + +### LicenseAcceptanceWindow and LicenseFileWindow Accessibility issues - [#7452](https://github.com/NuGet/Home/issues/7452) + +#### Issue +The license acceptance window and license file window have accessibility issues with keyboard navigation and narration with screen reader and JAWS. + +#### Workaround +No workaround. + +### Packages in FallbackFolders installed by .NET Core SDK are custom installed, and fail signature validation. - [#7414](https://github.com/NuGet/Home/issues/7414) + +#### Issue +When using dotnet.exe 2.x to restore a project that multi-targets netcoreapp 1.x and netcoreapp 2.x, the fallback folder is treated as a file feed. This means, when restoring, NuGet will pick the package from the fallback folder and try to install it into the global packages folder and do the usual signing validation which fails. + +#### Workaround +Disable the usage of the fallback folder by setting the `RestoreAdditionalProjectSources` to nothing. `` Use this with caution as it will cause a lot of packages to be downloaded from NuGet.org which otherwise would be have been restored from the fallback folder. diff --git a/docs/tools/cli-ref-long-path.md b/docs/tools/cli-ref-long-path.md index 0a13afa9c..2d59d2d19 100644 --- a/docs/tools/cli-ref-long-path.md +++ b/docs/tools/cli-ref-long-path.md @@ -34,6 +34,6 @@ Steps: > Enabling Other NuGet Tools to Support Long Paths > > - Dotnet CLI supports long paths regardless of the operating system or version. -> - Visual Studio or msbuild /t:restore does not yet support long paths. +> - Visual Studio or msbuild -t:restore does not yet support long paths. > - Software that uses NuGet Libraries to execute restore and other commands, will support long paths on the same systems that NuGet.exe works on, if they also set longPathAware in their windows manifest and configure UseLegacyPathHandling to false via App.Config [See more information](https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/) diff --git a/docs/tools/cli-ref-pack.md b/docs/tools/cli-ref-pack.md index 3e25dfd9d..0ccd8e116 100644 --- a/docs/tools/cli-ref-pack.md +++ b/docs/tools/cli-ref-pack.md @@ -11,7 +11,7 @@ ms.topic: reference **Applies to:** package creation • **Supported versions:** 2.7+ -Creates a NuGet package based on the specified `.nuspec` or project file. The `dotnet pack` command (see [dotnet Commands](dotnet-Commands.md)) and `msbuild /t:pack` (see [MSBuild targets](../reference/msbuild-targets.md)) may be used as alternates. +Creates a NuGet package based on the specified `.nuspec` or project file. The `dotnet pack` command (see [dotnet Commands](dotnet-Commands.md)) and `msbuild -t:pack` (see [MSBuild targets](../reference/msbuild-targets.md)) may be used as alternates. > [!Important] > Under Mono, creating a package from a project file is not supported. You also need to adjust non-local paths in the `.nuspec` file to Unix-style paths, as nuget.exe doesn't convert Windows pathnames itself. From 9f056c7b7aa8e1832c5f9cc0cfc8156b26c96198 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 28 Nov 2018 19:28:31 -0800 Subject: [PATCH 0987/2943] updates to the error and warning list (#1191) --- docs/TOC.md | 222 ++++++++++++++------------ docs/reference/Errors-and-Warnings.md | 6 +- 2 files changed, 125 insertions(+), 103 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index 07c77d777..9ef020e80 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -85,107 +85,127 @@ ## [ID prefix reservation](reference/id-prefix-reservation.md) ## [NuGet client SDK](reference/nuget-client-sdk.md) ## [Signed packages](reference/signed-packages-reference.md) -## [Organizations on nuget.org](reference/organizations-on-nuget-org.md) -## [NuGet Errors](reference/Errors-and-Warnings.md) -### [NuGet Error NU1000](reference/errors-and-warnings/NU1000.md) -### [NuGet Error NU1001](reference/errors-and-warnings/NU1001.md) -### [NuGet Error NU1002](reference/errors-and-warnings/NU1002.md) -### [NuGet Error NU1003](reference/errors-and-warnings/NU1003.md) -### [NuGet Error NU1100](reference/errors-and-warnings/NU1100.md) -### [NuGet Error NU1101](reference/errors-and-warnings/NU1101.md) -### [NuGet Error NU1102](reference/errors-and-warnings/NU1102.md) -### [NuGet Error NU1103](reference/errors-and-warnings/NU1103.md) -### [NuGet Error NU1104](reference/errors-and-warnings/NU1104.md) -### [NuGet Error NU1105](reference/errors-and-warnings/NU1105.md) -### [NuGet Error NU1106](reference/errors-and-warnings/NU1106.md) -### [NuGet Error NU1107](reference/errors-and-warnings/NU1107.md) -### [NuGet Error NU1108](reference/errors-and-warnings/NU1108.md) -### [NuGet Error NU1201](reference/errors-and-warnings/NU1201.md) -### [NuGet Error NU1202](reference/errors-and-warnings/NU1202.md) -### [NuGet Error NU1203](reference/errors-and-warnings/NU1203.md) -### [NuGet Error NU1401](reference/errors-and-warnings/NU1401.md) -### [NuGet Warning NU3000](reference/errors-and-warnings/NU3000.md) -### [NuGet Error NU3001](reference/errors-and-warnings/NU3001.md) -### [NuGet Warning NU3002](reference/errors-and-warnings/NU3002.md) -### [NuGet Warning NU3003](reference/errors-and-warnings/NU3003.md) -### [NuGet Error NU3004](reference/errors-and-warnings/NU3004.md) -### [NuGet Error NU3005](reference/errors-and-warnings/NU3005.md) -### [NuGet Warning NU3006](reference/errors-and-warnings/NU3006.md) -### [NuGet Warning NU3007](reference/errors-and-warnings/NU3007.md) -### [NuGet Error NU3008](reference/errors-and-warnings/NU3008.md) -### [NuGet Warning NU3009](reference/errors-and-warnings/NU3009.md) -### [NuGet Warning NU3010](reference/errors-and-warnings/NU3010.md) -### [NuGet Warning NU3011](reference/errors-and-warnings/NU3011.md) -### [NuGet Error NU3012](reference/errors-and-warnings/NU3012.md) -### [NuGet Warning NU3013](reference/errors-and-warnings/NU3013.md) -### [NuGet Warning NU3014](reference/errors-and-warnings/NU3014.md) -### [NuGet Warning NU3015](reference/errors-and-warnings/NU3015.md) -### [NuGet Warning NU3016](reference/errors-and-warnings/NU3016.md) -### [NuGet Warning NU3017](reference/errors-and-warnings/NU3017.md) -### [NuGet Warning NU3018](reference/errors-and-warnings/NU3018.md) -### [NuGet Warning NU3019](reference/errors-and-warnings/NU3019.md) -### [NuGet Warning NU3020](reference/errors-and-warnings/NU3020.md) -### [NuGet Warning NU3021](reference/errors-and-warnings/NU3021.md) -### [NuGet Warning NU3022](reference/errors-and-warnings/NU3022.md) -### [NuGet Warning NU3023](reference/errors-and-warnings/NU3023.md) -### [NuGet Warning NU3025](reference/errors-and-warnings/NU3025.md) -### [NuGet Warning NU3027](reference/errors-and-warnings/NU3027.md) -### [NuGet Warning NU3028](reference/errors-and-warnings/NU3028.md) -### [NuGet Error NU3034](reference/errors-and-warnings/NU3034.md) -### [NuGet Error NU3040](reference/errors-and-warnings/NU3040.md) -### [NuGet Error NU5000](reference/errors-and-warnings/NU5000.md) -### [NuGet Error NU5001](reference/errors-and-warnings/NU5001.md) -### [NuGet Error NU5002](reference/errors-and-warnings/NU5002.md) -### [NuGet Error NU5003](reference/errors-and-warnings/NU5003.md) -### [NuGet Error NU5004](reference/errors-and-warnings/NU5004.md) -### [NuGet Error NU5005](reference/errors-and-warnings/NU5005.md) -### [NuGet Error NU5007](reference/errors-and-warnings/NU5007.md) -### [NuGet Error NU5008](reference/errors-and-warnings/NU5008.md) -### [NuGet Error NU5009](reference/errors-and-warnings/NU5009.md) -### [NuGet Error NU5010](reference/errors-and-warnings/NU5010.md) -### [NuGet Error NU5011](reference/errors-and-warnings/NU5011.md) -### [NuGet Error NU5012](reference/errors-and-warnings/NU5012.md) -### [NuGet Error NU5013](reference/errors-and-warnings/NU5013.md) -### [NuGet Error NU5014](reference/errors-and-warnings/NU5014.md) -### [NuGet Error NU5015](reference/errors-and-warnings/NU5015.md) -### [NuGet Error NU5016](reference/errors-and-warnings/NU5016.md) -### [NuGet Error NU5017](reference/errors-and-warnings/NU5017.md) -### [NuGet Error NU5018](reference/errors-and-warnings/NU5018.md) -### [NuGet Error NU5019](reference/errors-and-warnings/NU5019.md) -### [NuGet Error NU5020](reference/errors-and-warnings/NU5020.md) -### [NuGet Error NU5021](reference/errors-and-warnings/NU5021.md) -### [NuGet Error NU5022](reference/errors-and-warnings/NU5022.md) -### [NuGet Error NU5023](reference/errors-and-warnings/NU5023.md) -### [NuGet Error NU5024](reference/errors-and-warnings/NU5024.md) -### [NuGet Error NU5025](reference/errors-and-warnings/NU5025.md) -### [NuGet Error NU5026](reference/errors-and-warnings/NU5026.md) -### [NuGet Error NU5027](reference/errors-and-warnings/NU5027.md) -### [NuGet Error NU5028](reference/errors-and-warnings/NU5028.md) -### [NuGet Error NU5029](reference/errors-and-warnings/NU5029.md) -### [NuGet Warning NU5100](reference/errors-and-warnings/NU5100.md) -### [NuGet Warning NU5101](reference/errors-and-warnings/NU5101.md) -### [NuGet Warning NU5102](reference/errors-and-warnings/NU5102.md) -### [NuGet Warning NU5103](reference/errors-and-warnings/NU5103.md) -### [NuGet Warning NU5104](reference/errors-and-warnings/NU5104.md) -### [NuGet Warning NU5105](reference/errors-and-warnings/NU5105.md) -### [NuGet Warning NU5106](reference/errors-and-warnings/NU5106.md) -### [NuGet Warning NU5107](reference/errors-and-warnings/NU5107.md) -### [NuGet Warning NU5108](reference/errors-and-warnings/NU5108.md) -### [NuGet Warning NU5109](reference/errors-and-warnings/NU5109.md) -### [NuGet Warning NU5110](reference/errors-and-warnings/NU5110.md) -### [NuGet Warning NU5111](reference/errors-and-warnings/NU5111.md) -### [NuGet Warning NU5112](reference/errors-and-warnings/NU5112.md) -### [NuGet Warning NU5114](reference/errors-and-warnings/NU5114.md) -### [NuGet Warning NU5115](reference/errors-and-warnings/NU5115.md) -### [NuGet Warning NU5116](reference/errors-and-warnings/NU5116.md) -### [NuGet Warning NU5117](reference/errors-and-warnings/NU5117.md) -### [NuGet Warning NU5118](reference/errors-and-warnings/NU5118.md) -### [NuGet Warning NU5119](reference/errors-and-warnings/NU5119.md) -### [NuGet Warning NU5120](reference/errors-and-warnings/NU5120.md) -### [NuGet Warning NU5121](reference/errors-and-warnings/NU5121.md) -### [NuGet Warning NU5122](reference/errors-and-warnings/NU5122.md) -### [NuGet Warning NU5123](reference/errors-and-warnings/NU5123.md) -### [NuGet Warning NU5500](reference/errors-and-warnings/NU5500.md) +## [Organizations on NuGet.org](reference/organizations-on-nuget-org.md) +## [Errors and Warnings](reference/Errors-and-Warnings.md) +### [NU1000](reference/errors-and-warnings/NU1000.md) +### [NU1001](reference/errors-and-warnings/NU1001.md) +### [NU1002](reference/errors-and-warnings/NU1002.md) +### [NU1003](reference/errors-and-warnings/NU1003.md) +### [NU1100](reference/errors-and-warnings/NU1100.md) +### [NU1101](reference/errors-and-warnings/NU1101.md) +### [NU1102](reference/errors-and-warnings/NU1102.md) +### [NU1103](reference/errors-and-warnings/NU1103.md) +### [NU1104](reference/errors-and-warnings/NU1104.md) +### [NU1105](reference/errors-and-warnings/NU1105.md) +### [NU1106](reference/errors-and-warnings/NU1106.md) +### [NU1107](reference/errors-and-warnings/NU1107.md) +### [NU1108](reference/errors-and-warnings/NU1108.md) +### [NU1201](reference/errors-and-warnings/NU1201.md) +### [NU1202](reference/errors-and-warnings/NU1202.md) +### [NU1203](reference/errors-and-warnings/NU1203.md) +### [NU1401](reference/errors-and-warnings/NU1401.md) +### [NU1500](reference/errors-and-warnings/NU1500.md) +### [NU1501](reference/errors-and-warnings/NU1501.md) +### [NU1502](reference/errors-and-warnings/NU1502.md) +### [NU1503](reference/errors-and-warnings/NU1503.md) +### [NU1601](reference/errors-and-warnings/NU1601.md) +### [NU1602](reference/errors-and-warnings/NU1602.md) +### [NU1603](reference/errors-and-warnings/NU1603.md) +### [NU1604](reference/errors-and-warnings/NU1604.md) +### [NU1605](reference/errors-and-warnings/NU1605.md) +### [NU1608](reference/errors-and-warnings/NU1608.md) +### [NU1701](reference/errors-and-warnings/NU1701.md) +### [NU1801](reference/errors-and-warnings/NU1801.md) +### [NU3000](reference/errors-and-warnings/NU3000.md) +### [NU3001](reference/errors-and-warnings/NU3001.md) +### [NU3002](reference/errors-and-warnings/NU3002.md) +### [NU3003](reference/errors-and-warnings/NU3003.md) +### [NU3004](reference/errors-and-warnings/NU3004.md) +### [NU3005](reference/errors-and-warnings/NU3005.md) +### [NU3006](reference/errors-and-warnings/NU3006.md) +### [NU3007](reference/errors-and-warnings/NU3007.md) +### [NU3008](reference/errors-and-warnings/NU3008.md) +### [NU3009](reference/errors-and-warnings/NU3009.md) +### [NU3010](reference/errors-and-warnings/NU3010.md) +### [NU3011](reference/errors-and-warnings/NU3011.md) +### [NU3012](reference/errors-and-warnings/NU3012.md) +### [NU3013](reference/errors-and-warnings/NU3013.md) +### [NU3014](reference/errors-and-warnings/NU3014.md) +### [NU3015](reference/errors-and-warnings/NU3015.md) +### [NU3016](reference/errors-and-warnings/NU3016.md) +### [NU3017](reference/errors-and-warnings/NU3017.md) +### [NU3018](reference/errors-and-warnings/NU3018.md) +### [NU3019](reference/errors-and-warnings/NU3019.md) +### [NU3020](reference/errors-and-warnings/NU3020.md) +### [NU3021](reference/errors-and-warnings/NU3021.md) +### [NU3022](reference/errors-and-warnings/NU3022.md) +### [NU3023](reference/errors-and-warnings/NU3023.md) +### [NU3025](reference/errors-and-warnings/NU3025.md) +### [NU3027](reference/errors-and-warnings/NU3027.md) +### [NU3028](reference/errors-and-warnings/NU3028.md) +### [NU3034](reference/errors-and-warnings/NU3034.md) +### [NU3040](reference/errors-and-warnings/NU3040.md) +### [NU5000](reference/errors-and-warnings/NU5000.md) +### [NU5001](reference/errors-and-warnings/NU5001.md) +### [NU5002](reference/errors-and-warnings/NU5002.md) +### [NU5003](reference/errors-and-warnings/NU5003.md) +### [NU5004](reference/errors-and-warnings/NU5004.md) +### [NU5005](reference/errors-and-warnings/NU5005.md) +### [NU5007](reference/errors-and-warnings/NU5007.md) +### [NU5008](reference/errors-and-warnings/NU5008.md) +### [NU5009](reference/errors-and-warnings/NU5009.md) +### [NU5010](reference/errors-and-warnings/NU5010.md) +### [NU5011](reference/errors-and-warnings/NU5011.md) +### [NU5012](reference/errors-and-warnings/NU5012.md) +### [NU5013](reference/errors-and-warnings/NU5013.md) +### [NU5014](reference/errors-and-warnings/NU5014.md) +### [NU5015](reference/errors-and-warnings/NU5015.md) +### [NU5016](reference/errors-and-warnings/NU5016.md) +### [NU5017](reference/errors-and-warnings/NU5017.md) +### [NU5018](reference/errors-and-warnings/NU5018.md) +### [NU5019](reference/errors-and-warnings/NU5019.md) +### [NU5020](reference/errors-and-warnings/NU5020.md) +### [NU5021](reference/errors-and-warnings/NU5021.md) +### [NU5022](reference/errors-and-warnings/NU5022.md) +### [NU5023](reference/errors-and-warnings/NU5023.md) +### [NU5024](reference/errors-and-warnings/NU5024.md) +### [NU5025](reference/errors-and-warnings/NU5025.md) +### [NU5026](reference/errors-and-warnings/NU5026.md) +### [NU5027](reference/errors-and-warnings/NU5027.md) +### [NU5028](reference/errors-and-warnings/NU5028.md) +### [NU5029](reference/errors-and-warnings/NU5029.md) +### [NU5030](reference/errors-and-warnings/NU5030.md) +### [NU5031](reference/errors-and-warnings/NU5031.md) +### [NU5032](reference/errors-and-warnings/NU5032.md) +### [NU5033](reference/errors-and-warnings/NU5033.md) +### [NU5034](reference/errors-and-warnings/NU5034.md) +### [NU5035](reference/errors-and-warnings/NU5035.md) +### [NU5100](reference/errors-and-warnings/NU5100.md) +### [NU5101](reference/errors-and-warnings/NU5101.md) +### [NU5102](reference/errors-and-warnings/NU5102.md) +### [NU5103](reference/errors-and-warnings/NU5103.md) +### [NU5104](reference/errors-and-warnings/NU5104.md) +### [NU5105](reference/errors-and-warnings/NU5105.md) +### [NU5106](reference/errors-and-warnings/NU5106.md) +### [NU5107](reference/errors-and-warnings/NU5107.md) +### [NU5108](reference/errors-and-warnings/NU5108.md) +### [NU5109](reference/errors-and-warnings/NU5109.md) +### [NU5110](reference/errors-and-warnings/NU5110.md) +### [NU5111](reference/errors-and-warnings/NU5111.md) +### [NU5112](reference/errors-and-warnings/NU5112.md) +### [NU5114](reference/errors-and-warnings/NU5114.md) +### [NU5115](reference/errors-and-warnings/NU5115.md) +### [NU5116](reference/errors-and-warnings/NU5116.md) +### [NU5117](reference/errors-and-warnings/NU5117.md) +### [NU5118](reference/errors-and-warnings/NU5118.md) +### [NU5119](reference/errors-and-warnings/NU5119.md) +### [NU5120](reference/errors-and-warnings/NU5120.md) +### [NU5121](reference/errors-and-warnings/NU5121.md) +### [NU5122](reference/errors-and-warnings/NU5122.md) +### [NU5123](reference/errors-and-warnings/NU5123.md) +### [NU5124](reference/errors-and-warnings/NU5124.md) +### [NU5125](reference/errors-and-warnings/NU5125.md) +### [NU5500](reference/errors-and-warnings/NU5500.md) ## Extensibility ### [NuGet Cross Platform Plugins](reference/extensibility/NuGet-Cross-Platform-Plugins.md) diff --git a/docs/reference/Errors-and-Warnings.md b/docs/reference/Errors-and-Warnings.md index 8095a0170..3604afdd2 100644 --- a/docs/reference/Errors-and-Warnings.md +++ b/docs/reference/Errors-and-Warnings.md @@ -14,7 +14,7 @@ In NuGet 4.3.0+, errors and warnings are numbered as described in this topic and The errors and warnings listed here are available only with [PackageReference-based](../consume-packages/package-references-in-project-files.md) projects and NuGet 4.3.0+. NuGet also honors MSBuild properties to suppress warnings or elevate them to errors. For more information, see [How to: Suppress Compiler Warnings](/visualstudio/ide/how-to-suppress-compiler-warnings) in the Visual Studio documentation. -**Errors** +## Errors | Group | Error Numbers | | --- | --- | @@ -24,8 +24,9 @@ The errors and warnings listed here are available only with [PackageReference-ba | NuGet internal errors | [NU1000](./errors-and-warnings/NU1000.md) | | Signed packages errors(creation and verification) | [NU3001](./errors-and-warnings/NU3001.md), [NU3004](./errors-and-warnings/NU3004.md), [NU3005](./errors-and-warnings/NU3005.md), [NU3008](./errors-and-warnings/NU3008.md), [NU3012](./errors-and-warnings/NU3012.md), [NU3028](./errors-and-warnings/NU3028.md), [NU3034](./errors-and-warnings/NU3034.md)| | Pack Errors | [NU5000](./errors-and-warnings/NU5000.md), [NU5001](./errors-and-warnings/NU5001.md), [NU5002](./errors-and-warnings/NU5002.md), [NU5003](./errors-and-warnings/NU5003.md), [NU5004](./errors-and-warnings/NU5004.md), [NU5005](./errors-and-warnings/NU5005.md), [NU5007](./errors-and-warnings/NU5007.md), [NU5008](./errors-and-warnings/NU5008.md), [NU5009](./errors-and-warnings/NU5009.md), [NU5010](./errors-and-warnings/NU5010.md), [NU5011](./errors-and-warnings/NU5011.md), [NU5012](./errors-and-warnings/NU5012.md), [NU5013](./errors-and-warnings/NU5013.md), [NU5014](./errors-and-warnings/NU5014.md), [NU5015](./errors-and-warnings/NU5015.md), [NU5016](./errors-and-warnings/NU5016.md), [NU5017](./errors-and-warnings/NU5017.md), [NU5018](./errors-and-warnings/NU5018.md), [NU5019](./errors-and-warnings/NU5019.md), [NU5020](./errors-and-warnings/NU5020.md), [NU5021](./errors-and-warnings/NU5021.md), [NU5022](./errors-and-warnings/NU5022.md), [NU5023](./errors-and-warnings/NU5023.md), [NU5024](./errors-and-warnings/NU5024.md), [NU5025](./errors-and-warnings/NU5025.md), [NU5026](./errors-and-warnings/NU5026.md), [NU5027](./errors-and-warnings/NU5027.md), [NU5028](./errors-and-warnings/NU5028.md), [NU5029](./errors-and-warnings/NU5029.md) +| License specific Pack Errors | [NU5030](./errors-and-warnings/NU5030.md), [NU5031](./errors-and-warnings/NU5031.md), [NU5032](./errors-and-warnings/NU5032.md), [NU5033](./errors-and-warnings/NU5033.md), [NU5034](./errors-and-warnings/NU5034.md), [NU5035](./errors-and-warnings/NU5035.md) -**Warnings** +## Warnings | Group | Warning numbers | | --- | --- | @@ -37,3 +38,4 @@ The errors and warnings listed here are available only with [PackageReference-ba | NuGet internal warnings | [NU1500](./errors-and-warnings/NU1500.md) | | Signed packages warnings(creation and verification) | [NU3000](./errors-and-warnings/NU3000.md), [NU3002](./errors-and-warnings/NU3002.md), [NU3003](./errors-and-warnings/NU3003.md), [NU3006](./errors-and-warnings/NU3006.md), [NU3007](./errors-and-warnings/NU3007.md), [NU3009](./errors-and-warnings/NU3009.md), [NU3010](./errors-and-warnings/NU3010.md), [NU3011](./errors-and-warnings/NU3011.md), [NU3013](./errors-and-warnings/NU3013.md), [NU3014](./errors-and-warnings/NU3014.md), [NU3015](./errors-and-warnings/NU3015.md), [NU3016](./errors-and-warnings/NU3016.md), [NU3017](./errors-and-warnings/NU3017.md), [NU3018](./errors-and-warnings/NU3018.md), [NU3019](./errors-and-warnings/NU3019.md), [NU3020](./errors-and-warnings/NU3020.md), [NU3021](./errors-and-warnings/NU3021.md), [NU3022](./errors-and-warnings/NU3022.md), [NU3023](./errors-and-warnings/NU3023.md), [NU3025](./errors-and-warnings/NU3025.md), [NU3027](./errors-and-warnings/NU3027.md), [NU3040](./errors-and-warnings/NU3040.md) | | Pack Warnings | [NU5100](./errors-and-warnings/NU5100.md), [NU5101](./errors-and-warnings/NU5101.md), [NU5102](./errors-and-warnings/NU5102.md), [NU5103](./errors-and-warnings/NU5103.md), [NU5104](./errors-and-warnings/NU5104.md), [NU5105](./errors-and-warnings/NU5105.md), [NU5106](./errors-and-warnings/NU5106.md), [NU5107](./errors-and-warnings/NU5107.md), [NU5108](./errors-and-warnings/NU5108.md), [NU5109](./errors-and-warnings/NU5109.md), [NU5110](./errors-and-warnings/NU5110.md), [NU5111](./errors-and-warnings/NU5111.md), [NU5112](./errors-and-warnings/NU5112.md), [NU5114](./errors-and-warnings/NU5114.md), [NU5115](./errors-and-warnings/NU5115.md), [NU5116](./errors-and-warnings/NU5116.md), [NU5117](./errors-and-warnings/NU5117.md), [NU5118](./errors-and-warnings/NU5118.md), [NU5119](./errors-and-warnings/NU5119.md), [NU5120](./errors-and-warnings/NU5120.md), [NU5121](./errors-and-warnings/NU5121.md), [NU5122](./errors-and-warnings/NU5122.md), [NU5123](./errors-and-warnings/NU5123.md), [NU5500](./errors-and-warnings/NU5500.md) +| License specific Pack Warnings | [NU5124](./errors-and-warnings/NU5124.md), [NU5125](./errors-and-warnings/NU5125.md) \ No newline at end of file From 6f95c5a291fc1cda41580c5dc02378f98b48ecf9 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 00:22:33 -0800 Subject: [PATCH 0988/2943] Update Signed-Packages-Reference.md --- docs/reference/Signed-Packages-Reference.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/reference/Signed-Packages-Reference.md b/docs/reference/Signed-Packages-Reference.md index d7e5c58f9..33be83cad 100644 --- a/docs/reference/Signed-Packages-Reference.md +++ b/docs/reference/Signed-Packages-Reference.md @@ -111,7 +111,7 @@ Similarly, if the default "Any" option is selected for a package where one owner ![Configure package signers](media/configure-package-signers.png) -## Customize package consumption requirements +## Configure package consumption requirements *NuGet 4.9.0+ and Visual Studio version 15.9 and later* @@ -181,4 +181,4 @@ Package repositories should announce the certificates they use in their [service ### Schema reference -The complete schema reference for the client policies can be found in the [nuget.config reference](/nuget/reference/nuget-config-file#trustedsigners-section) \ No newline at end of file +The complete schema reference for the client policies can be found in the [nuget.config reference](/nuget/reference/nuget-config-file#trustedsigners-section) From f392119a57b02e417b216a4d0687e614f8ec0697 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 00:41:24 -0800 Subject: [PATCH 0989/2943] Update Sign-a-Package.md --- docs/create-packages/Sign-a-Package.md | 29 +++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index f064d66f7..577c853a0 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -10,11 +10,13 @@ ms.reviewer: anangaur # Signing NuGet Packages -Signing a package is a process that makes sure the package has not been modified since its creation. +Signed packages allows for content integrity verification checks which provides protection against content tampering. The package signature also serves as the single source of truth about the actual origin of the package and bolsters package authenticity for the consumer. This guide assumes you have already [created a package](creating-a-package.md). -## Prerequisites +## Get a code signing certificate -1. The package (a `.nupkg` file) to sign. See [Creating a package](creating-a-package.md). +Valid certificates may be obtained from a public certificate authority like such as [Symantec](https://trustcenter.websecurity.symantec.com/process/trust/productOptions?productType=SoftwareValidationClass3), [DigiCert](https://www.digicert.com/code-signing/), [Go Daddy](https://www.godaddy.com/web-security/code-signing-certificate), [Global Sign](https://www.globalsign.com/en/code-signing-certificate/), [Comodo](https://www.comodo.com/e-commerce/code-signing/code-signing-certificate.php), [Certum](https://www.certum.eu/certum/cert,offer_en_open_source_cs.xml), etc. The complete list of certification authorities trusted by Windows can be obtained from [http://aka.ms/trustcertpartners](http://aka.ms/trustcertpartners). + +You can use self-issued certificates for testing purposes. However, packages signed using self-issued certificates are not accepted by NuGet.org. Learn more about [creating a test certificate]() 1. nuget.exe 4.6.0 or later. See how to [Install NuGet CLI](../install-nuget-client-tools.md#nugetexe-cli). @@ -55,6 +57,27 @@ Signed packages don't require any specific action to be installed; however, if t > [!Warning] > Packages signed with untrusted certificates are considered as unsigned and are installed without any warnings or errors like any other unsigned package. +## Create a test certificate + +You can use self-issued certificates for testing purposes. To create a self-issued certificate, use the [New-SelfSignedCertificate PowerShell command](/powershell/module/pkiclient/new-selfsignedcertificate.md). + +```ps +New-SelfSignedCertificate -Subject "CN=NuGet Test Developer, OU=Use for testing purposes ONLY" ` + -FriendlyName "NuGetTestDeveloper" ` + -Type CodeSigning ` + -KeyUsage DigitalSignature ` + -KeyLength 2048 ` + -KeyAlgorithm RSA ` + -HashAlgorithm SHA256 ` + -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" ` + -CertStoreLocation "Cert:\CurrentUser\My" +``` + +This command creates a testing certificate available in the current user's personal certificate store. You can open the certificate store by running `certmgr.msc` to see the newly created certificate. + +> [!Warning] +> nuget.org does not accept packages signed with self-issued certificates. + ## See also [Signed Packages Reference](../reference/Signed-Packages-Reference.md) From 388b4605b82d3f1f6d19501c647679435121e967 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 01:18:47 -0800 Subject: [PATCH 0990/2943] Update Sign-a-Package.md --- docs/create-packages/Sign-a-Package.md | 59 +++++++++++++++----------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 577c853a0..159bcccf3 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -16,46 +16,48 @@ Signed packages allows for content integrity verification checks which provides Valid certificates may be obtained from a public certificate authority like such as [Symantec](https://trustcenter.websecurity.symantec.com/process/trust/productOptions?productType=SoftwareValidationClass3), [DigiCert](https://www.digicert.com/code-signing/), [Go Daddy](https://www.godaddy.com/web-security/code-signing-certificate), [Global Sign](https://www.globalsign.com/en/code-signing-certificate/), [Comodo](https://www.comodo.com/e-commerce/code-signing/code-signing-certificate.php), [Certum](https://www.certum.eu/certum/cert,offer_en_open_source_cs.xml), etc. The complete list of certification authorities trusted by Windows can be obtained from [http://aka.ms/trustcertpartners](http://aka.ms/trustcertpartners). -You can use self-issued certificates for testing purposes. However, packages signed using self-issued certificates are not accepted by NuGet.org. Learn more about [creating a test certificate]() +You can use self-issued certificates for testing purposes. However, packages signed using self-issued certificates are not accepted by NuGet.org. Learn more about [creating a test certificate](#create-a-test-certificate) -1. nuget.exe 4.6.0 or later. See how to [Install NuGet CLI](../install-nuget-client-tools.md#nugetexe-cli). +## Export the certificate file -1. [A code signing certificate](../reference/signed-packages-reference.md#get-a-code-signing-certificate). +* You can export an existing certificate to a binary DER format by using the Certificate Export Wizard. -## Sign a package +![Certificate Export Wizard](../reference/media/CertificateExportWizard.png) -To sign a package, use [nuget sign](../tools/cli-ref-sign.md): +* You can also export the certificate using the [Export-Certificate PowerShell command](/powershell/module/pkiclient/export-certificate.md). -```cli -nuget sign MyPackage.nupkg -CertificateSubjectName -Timestamper -``` +## Sign the package -As described in the command reference, you can use a certificate available in the certificate store or use a certificate from a file. +> [!note] +> Requires nuget.exe 4.6.0 or later -### Common problems when signing a package +Sign the package using [nuget sign](../tools/cli-ref-sign.md): -- The certificate is not valid for code signing. You must ensure the certificate specified has the appropriate extended key usage (EKU 1.3.6.1.5.5.7.3.3). -- The certificate does not satisfy the basic requirements such as the RSA SHA-256 signature algorithm or a public key 2048 bits or greater. -- The certificate has expired or has been revoked. -- The timestamp server does not satisfy the certificate requirements. +```cli +nuget sign MyPackage.nupkg -CertificateFilePath -Timestamper +``` -> [!Note] -> Signed packages should include a timestamp to make sure the signature remains valid when the signing certificate has expired. The sign operation produce a [warning NU3002](../reference/errors-and-warnings/NU3002.md) when signing without a timestamp. +* You can use a certificate available in the certificate store or use a certificate from a file. See CLI reference for [nuget sign](../tools/cli-ref-sign.md). +* Signed packages should include a timestamp to make sure the signature remains valid when the signing certificate has expired. Else the sign operation will produce a [warning](../reference/errors-and-warnings/NU3002.md). +* You can see the signature details of a given package using [nuget verify](../tools/cli-ref-verify.md). -## Verify a signed package +## Register the certificate on NuGet.org -Use [nuget verify](../tools/cli-ref-verify.md) to see the signature details of a given package: +To publish a signed package, you must first register the certificate with NuGet.org. You need the certificate as a `.cer` file in a binary DER format. -```cli -nuget verify -signature MyPackage.nupkg -``` +1. [Sign in](https://www.nuget.org/users/account/LogOn?returnUrl=%2F) to NuGet.org +1. Go to `Account settings` (or `Manage Organization` **>** `Edit Organziation` if you would like to register the certificate with an Organization account) +1. Expand the `Certificates` section and select `Register new certificate` +1. Browse and select the certficate file that was exported earlier -## Install a signed package +![Registered Certificates](../reference/media/registered-certs.png) -Signed packages don't require any specific action to be installed; however, if the content has been modified since it was signed, the installation is blocked and produces an [error NU3008](../reference/errors-and-warnings/NU3008.md). +**Note** +* One user can submit multiple certificates and the same certificate can be registered by multiple users. +* Once a user has a certificate registered, all future package submissions **must** be signed with one of the certificates. +* Users can also remove a registered certificate from the account. Once a certificate is removed, new packages signed with that certificate will fail at submission. Existing packages aren't affected. -> [!Warning] -> Packages signed with untrusted certificates are considered as unsigned and are installed without any warnings or errors like any other unsigned package. +You are now ready to publish the package to NuGet.org. See [Publishing packages](Publish-a-package.md). ## Create a test certificate @@ -78,6 +80,13 @@ This command creates a testing certificate available in the current user's perso > [!Warning] > nuget.org does not accept packages signed with self-issued certificates. +## Install a signed package + +Signed packages don't require any specific action to be installed; however, if the content has been modified since it was signed, the installation is blocked and produces an [error NU3008](../reference/errors-and-warnings/NU3008.md). + +> [!Warning] +> Packages signed with untrusted certificates are considered as unsigned and are installed without any warnings or errors like any other unsigned package. + ## See also [Signed Packages Reference](../reference/Signed-Packages-Reference.md) From 064fea26199507185afc0b285f67969454246b15 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 01:19:05 -0800 Subject: [PATCH 0991/2943] Update Sign-a-Package.md --- docs/create-packages/Sign-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 159bcccf3..10d4756a0 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -22,7 +22,7 @@ You can use self-issued certificates for testing purposes. However, packages sig * You can export an existing certificate to a binary DER format by using the Certificate Export Wizard. -![Certificate Export Wizard](../reference/media/CertificateExportWizard.png) + ![Certificate Export Wizard](../reference/media/CertificateExportWizard.png) * You can also export the certificate using the [Export-Certificate PowerShell command](/powershell/module/pkiclient/export-certificate.md). From 5a7b6aaa11345ae6d0797c70bb6af6e804a93ba1 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 01:43:00 -0800 Subject: [PATCH 0992/2943] Update Sign-a-Package.md --- docs/create-packages/Sign-a-Package.md | 29 +++++++++++++++++++------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 10d4756a0..e97446a6b 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -45,18 +45,19 @@ nuget sign MyPackage.nupkg -CertificateFilePath -Timestam To publish a signed package, you must first register the certificate with NuGet.org. You need the certificate as a `.cer` file in a binary DER format. -1. [Sign in](https://www.nuget.org/users/account/LogOn?returnUrl=%2F) to NuGet.org -1. Go to `Account settings` (or `Manage Organization` **>** `Edit Organziation` if you would like to register the certificate with an Organization account) -1. Expand the `Certificates` section and select `Register new certificate` -1. Browse and select the certficate file that was exported earlier - -![Registered Certificates](../reference/media/registered-certs.png) +1. [Sign in](https://www.nuget.org/users/account/LogOn?returnUrl=%2F) to NuGet.org. +1. Go to `Account settings` (or `Manage Organization` **>** `Edit Organziation` if you would like to register the certificate with an Organization account). +1. Expand the `Certificates` section and select `Register new`. +1. Browse and select the certficate file that was exported earlier. + ![Registered Certificates](../reference/media/registered-certs.png) **Note** * One user can submit multiple certificates and the same certificate can be registered by multiple users. -* Once a user has a certificate registered, all future package submissions **must** be signed with one of the certificates. +* Once a user has a certificate registered, all future package submissions **must** be signed with one of the certificates. See [Managing package signing requirements on NuGet.org]() * Users can also remove a registered certificate from the account. Once a certificate is removed, new packages signed with that certificate will fail at submission. Existing packages aren't affected. +## Publish the package + You are now ready to publish the package to NuGet.org. See [Publishing packages](Publish-a-package.md). ## Create a test certificate @@ -80,6 +81,18 @@ This command creates a testing certificate available in the current user's perso > [!Warning] > nuget.org does not accept packages signed with self-issued certificates. +## Managing package signing requirements on NuGet.org +1. [Sign in](https://www.nuget.org/users/account/LogOn?returnUrl=%2F) to NuGet.org. + +1. Go to `Manage Packages` + ![Configure package signers](../reference/media/configure-package-signers.png) + +* If you are the sole owner of a package, you are the required signer i.e. you can use any of the registered certificates to sign and publish your packages to NuGet.org. + +* If a package has multiple owners, by default, "Any" owner's certificates can be used to sign the package. As a co-owner of the package, you can override "Any" with yourself or any other co-owner to be the required signer. If you make an owner who does not have any certificate registered, then unsigned packages will be allowed. + +* Similarly, if the default "Any" option is selected for a package where one owner has a certificate registered and another owner does not have any certificate registered, then nuget.org accepts either a signed package with a signature registered by one of its owners or an unsigned package (because one of the owners does not have any certificate registered). + ## Install a signed package Signed packages don't require any specific action to be installed; however, if the content has been modified since it was signed, the installation is blocked and produces an [error NU3008](../reference/errors-and-warnings/NU3008.md). @@ -87,6 +100,6 @@ Signed packages don't require any specific action to be installed; however, if t > [!Warning] > Packages signed with untrusted certificates are considered as unsigned and are installed without any warnings or errors like any other unsigned package. -## See also +## Related Topics [Signed Packages Reference](../reference/Signed-Packages-Reference.md) From 32fef2aa3dbc8b5d622838e302a52ddc6359d3c4 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 01:45:52 -0800 Subject: [PATCH 0993/2943] Update Sign-a-Package.md --- docs/create-packages/Sign-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index e97446a6b..8260d32f1 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -81,7 +81,7 @@ This command creates a testing certificate available in the current user's perso > [!Warning] > nuget.org does not accept packages signed with self-issued certificates. -## Managing package signing requirements on NuGet.org +## Managing signing requirements for your package on NuGet.org 1. [Sign in](https://www.nuget.org/users/account/LogOn?returnUrl=%2F) to NuGet.org. 1. Go to `Manage Packages` From 3d478a8e76907a0731a5a6f41b7246672662042d Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 01:47:26 -0800 Subject: [PATCH 0994/2943] Update Sign-a-Package.md --- docs/create-packages/Sign-a-Package.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 8260d32f1..865761282 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -53,7 +53,7 @@ To publish a signed package, you must first register the certificate with NuGet. **Note** * One user can submit multiple certificates and the same certificate can be registered by multiple users. -* Once a user has a certificate registered, all future package submissions **must** be signed with one of the certificates. See [Managing package signing requirements on NuGet.org]() +* Once a user has a certificate registered, all future package submissions **must** be signed with one of the certificates. See [Manage signing requirements for your package on NuGet.org](#manage-signing-requirements-for-your-package-on-nugetorg) * Users can also remove a registered certificate from the account. Once a certificate is removed, new packages signed with that certificate will fail at submission. Existing packages aren't affected. ## Publish the package @@ -79,9 +79,9 @@ New-SelfSignedCertificate -Subject "CN=NuGet Test Developer, OU=Use for testing This command creates a testing certificate available in the current user's personal certificate store. You can open the certificate store by running `certmgr.msc` to see the newly created certificate. > [!Warning] -> nuget.org does not accept packages signed with self-issued certificates. +> NuGet.org does not accept packages signed with self-issued certificates. -## Managing signing requirements for your package on NuGet.org +## Manage signing requirements for your package on NuGet.org 1. [Sign in](https://www.nuget.org/users/account/LogOn?returnUrl=%2F) to NuGet.org. 1. Go to `Manage Packages` @@ -91,7 +91,7 @@ This command creates a testing certificate available in the current user's perso * If a package has multiple owners, by default, "Any" owner's certificates can be used to sign the package. As a co-owner of the package, you can override "Any" with yourself or any other co-owner to be the required signer. If you make an owner who does not have any certificate registered, then unsigned packages will be allowed. -* Similarly, if the default "Any" option is selected for a package where one owner has a certificate registered and another owner does not have any certificate registered, then nuget.org accepts either a signed package with a signature registered by one of its owners or an unsigned package (because one of the owners does not have any certificate registered). +* Similarly, if the default "Any" option is selected for a package where one owner has a certificate registered and another owner does not have any certificate registered, then NuGet.org accepts either a signed package with a signature registered by one of its owners or an unsigned package (because one of the owners does not have any certificate registered). ## Install a signed package From 5de6ba9eb3a57b804a6ea0b1aa3e5a33e7df9ca9 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 01:56:51 -0800 Subject: [PATCH 0995/2943] Create installing-signed-packages.md --- .../installing-signed-packages.md | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 docs/consume-packages/installing-signed-packages.md diff --git a/docs/consume-packages/installing-signed-packages.md b/docs/consume-packages/installing-signed-packages.md new file mode 100644 index 000000000..a39cad99d --- /dev/null +++ b/docs/consume-packages/installing-signed-packages.md @@ -0,0 +1,86 @@ +--- +title: Install a signed NuGet package +description: Describes the process of installing signed NuGet packages and configuring package signature trust settings. +author: karann-msft +ms.author: karann +ms.date: 11/29/2018 +ms.topic: conceptual +--- + +# Install a signed package + +Signed packages don't require any specific action to be installed; however, if the content has been modified since it was signed, the installation is blocked with error [NU3008](../reference/errors-and-warnings/NU3008.md). + +> [!Warning] +> Packages signed with untrusted certificates are considered as unsigned and are installed without any warnings or errors like any other unsigned package. + +## Configure package signature requirements + +*NuGet 4.9.0+ and Visual Studio version 15.9 and later* + +You can configure how NuGet clients validate package signatures by setting the `signatureValidationMode` to `require`. + +```xml + + + +``` + +This mode will verify that all packages are signed by any of the certificates trusted in the `nuget.config` file. This file allows you to specify which authors and/or repositories are trusted based on the certificate's fingerprint. + +### Trust package author + +To trust packages based on the author signature use the `authors` element: + +```xml + + + + + +``` + +>[!TIP] +>Use the `nuget.exe` [verify command](https://docs.microsoft.com/en-us/nuget/tools/cli-ref-verify) to get the `SHA256` value of the certificate's fingerprint. + + +### Trust all packages from a repository + +To trust packages based on the repository signature use the `repository` element: + +```xml + + + + + +``` + +### Trust Package Owners + +Repository signatures include additional metadata to determine the owners of the package at the time of submission. You can restrict packages from a repository based on a list of owners: + +```xml + + + + microsoft;nuget + + +``` + +### Untrusted Root certificates + +In some situations you may want to enable signing and verification using certificates that do not chain to a trusted root in the local machine. You can use the `allowUntrustedRoot` attribute to customize this behavior. + +### Sync repository certificates + +Package repositories should announce the certificates they use in their [service index](https://docs.microsoft.com/en-us/nuget/api/service-index). Eventually the repository will update these certificates, e.g. when the certificate expires. When that happens, clients with specific policies will require an update to the configuration to include the newly added certificate. You can easily upgrade the trusted signers associated to a repository by using the `nuget.exe` [trusted-signers sync command](/nuget/tools/cli-ref-trusted-signers.md#nuget-trusted-signers-sync--name-). + +### Schema reference + +The complete schema reference for the client policies can be found in the [nuget.config reference](/nuget/reference/nuget-config-file#trustedsigners-section) From 501217077db60df3aca1b5c5cbb41fc7c33beb7a Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 01:58:02 -0800 Subject: [PATCH 0996/2943] Update TOC.md --- docs/TOC.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/TOC.md b/docs/TOC.md index f3d15f12f..11e59aa12 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -10,6 +10,7 @@ ## [Overview and workflow](consume-packages/overview-and-workflow.md) ## [Finding and choosing packages](consume-packages/finding-and-choosing-packages.md) ## [Installing packages](consume-packages/ways-to-install-a-package.md) +###[Signed packages](consume-packages/installing-signed-packages.md) ## [Package restore](consume-packages/package-restore.md) ### [Troubleshooting](consume-packages/package-restore-troubleshooting.md) ## [Reinstalling and updating packages](consume-packages/reinstalling-and-updating-packages.md) From d63b3bc8e150701849a9aa536af45c9a0f8aaa06 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 02:01:10 -0800 Subject: [PATCH 0997/2943] Update Sign-a-Package.md --- docs/create-packages/Sign-a-Package.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 865761282..bcc9cc295 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -12,6 +12,9 @@ ms.reviewer: anangaur Signed packages allows for content integrity verification checks which provides protection against content tampering. The package signature also serves as the single source of truth about the actual origin of the package and bolsters package authenticity for the consumer. This guide assumes you have already [created a package](creating-a-package.md). +> [!Important] +> Package signing is currently supported only when using nuget.exe on Windows. Verification of signed packages is currently supported only when using nuget.exe or Visual Studio on Windows. + ## Get a code signing certificate Valid certificates may be obtained from a public certificate authority like such as [Symantec](https://trustcenter.websecurity.symantec.com/process/trust/productOptions?productType=SoftwareValidationClass3), [DigiCert](https://www.digicert.com/code-signing/), [Go Daddy](https://www.godaddy.com/web-security/code-signing-certificate), [Global Sign](https://www.globalsign.com/en/code-signing-certificate/), [Comodo](https://www.comodo.com/e-commerce/code-signing/code-signing-certificate.php), [Certum](https://www.certum.eu/certum/cert,offer_en_open_source_cs.xml), etc. The complete list of certification authorities trusted by Windows can be obtained from [http://aka.ms/trustcertpartners](http://aka.ms/trustcertpartners). From 166acc2c7c55d4728a43defc71236e00069abf7d Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 02:02:23 -0800 Subject: [PATCH 0998/2943] Update installing-signed-packages.md --- docs/consume-packages/installing-signed-packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/consume-packages/installing-signed-packages.md b/docs/consume-packages/installing-signed-packages.md index a39cad99d..1907f68d9 100644 --- a/docs/consume-packages/installing-signed-packages.md +++ b/docs/consume-packages/installing-signed-packages.md @@ -16,7 +16,7 @@ Signed packages don't require any specific action to be installed; however, if t ## Configure package signature requirements -*NuGet 4.9.0+ and Visual Studio version 15.9 and later* +*NuGet 4.9.0+ and Visual Studio version 15.9 and later on Windows* You can configure how NuGet clients validate package signatures by setting the `signatureValidationMode` to `require`. From 3b667b4c791a6924adcc3147ac2b191c9a26fbaa Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 02:03:25 -0800 Subject: [PATCH 0999/2943] Update Signed-Packages-Reference.md --- docs/reference/Signed-Packages-Reference.md | 137 +------------------- 1 file changed, 1 insertion(+), 136 deletions(-) diff --git a/docs/reference/Signed-Packages-Reference.md b/docs/reference/Signed-Packages-Reference.md index 33be83cad..a4ce3133b 100644 --- a/docs/reference/Signed-Packages-Reference.md +++ b/docs/reference/Signed-Packages-Reference.md @@ -27,47 +27,13 @@ For details on creating an author signed package, see [Signing Packages](../crea Package signing requires a code signing certificate, which is a special type of certificate that is valid for the `id-kp-codeSigning` purpose [[RFC 5280 section 4.2.1.12](https://tools.ietf.org/html/rfc5280#section-4.2.1.12)]. Additionally, the certificate must have an RSA public key length of 2048 bits or higher. -## Get a code signing certificate - -Valid certificates may be obtained from a public certificate authority like: - -- [Symantec](https://trustcenter.websecurity.symantec.com/process/trust/productOptions?productType=SoftwareValidationClass3) -- [DigiCert](https://www.digicert.com/code-signing/) -- [Go Daddy](https://www.godaddy.com/web-security/code-signing-certificate) -- [Global Sign](https://www.globalsign.com/en/code-signing-certificate/) -- [Comodo](https://www.comodo.com/e-commerce/code-signing/code-signing-certificate.php) -- [Certum](https://www.certum.eu/certum/cert,offer_en_open_source_cs.xml) - -The complete list of certification authorities trusted by Windows can be obtained from [http://aka.ms/trustcertpartners](http://aka.ms/trustcertpartners). - -## Create a test certificate - -You can use self-issued certificates for testing purposes. To create a self-issued certificate, use the [New-SelfSignedCertificate PowerShell command](/powershell/module/pkiclient/new-selfsignedcertificate.md). - -```ps -New-SelfSignedCertificate -Subject "CN=NuGet Test Developer, OU=Use for testing purposes ONLY" ` - -FriendlyName "NuGetTestDeveloper" ` - -Type CodeSigning ` - -KeyUsage DigitalSignature ` - -KeyLength 2048 ` - -KeyAlgorithm RSA ` - -HashAlgorithm SHA256 ` - -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" ` - -CertStoreLocation "Cert:\CurrentUser\My" -``` - -This command creates a testing certificate available in the current user's personal certificate store. You can open the certificate store by running `certmgr.msc` to see the newly created certificate. - -> [!Warning] -> nuget.org does not accept packages signed with self-issued certificates. - ## Timestamp requirements Signed packages should include an RFC 3161 timestamp to ensure signature validity beyond the package signing certificate's validity period. The certificate used to sign the timestamp must be valid for the `id-kp-timeStamping` purpose [[RFC 5280 section 4.2.1.12](https://tools.ietf.org/html/rfc5280#section-4.2.1.12)]. Additionally, the certificate must have an RSA public key length of 2048 bits or higher. Additional technical details can be found in the [package signature technical specs](https://github.com/NuGet/Home/wiki/Package-Signatures-Technical-Details) (GitHub). -## Signature requirements on nuget.org +## Signature requirements on NuGet.org nuget.org has additional requirements for accepting a signed package: @@ -81,104 +47,3 @@ nuget.org has additional requirements for accepting a signed package: - The author signing certificate must be valid for code signing. - The timestamp certificate must be valid for timestamping. - Must not be revoked at signing time. (This may not be knowable at submission time, so nuget.org periodically rechecks revocation status). - -## Register certificate on nuget.org - -To submit a signed package, you must first register the certificate with nuget.org. You need the certificate as a `.cer` file in a binary DER format. You can export an existing certificate to a binary DER format by using the Certificate Export Wizard. - -![Certificate Export Wizard](media/CertificateExportWizard.png) - -Advanced users can export the certificate using the [Export-Certificate PowerShell command](/powershell/module/pkiclient/export-certificate.md). - -To register the certificate with nuget.org, go to `Certificates` section on `Account settings` page (or the Organization's settings page) and select `Register new certificate`. - -![Registered Certificates](media/registered-certs.png) - -> [!Tip] -> One user can submit multiple certificates and the same certificate can be registered by multiple users. - -Once a user has a certificate registered, all future package submissions **must** be signed with one of the certificates. - -Users can also remove a registered certificate from the account. Once a certificate is removed, packages signed with that certificate fail at submission. Existing packages aren't affected. - -## Configure package signing submission requirements - -If you are the sole owner of a package, you are the required signer. That is, you can use any of the registered certificates to sign your packages and submit to nuget.org. - -If a package has multiple owners, by default, "Any" owner's certificates can be used to sign the package. As a co-owner of the package, you can override "Any" with yourself or any other co-owner to be the required signer. If you make an owner who does not have any certificate registered, then unsigned packages will be allowed. - -Similarly, if the default "Any" option is selected for a package where one owner has a certificate registered and another owner does not have any certificate registered, then nuget.org accepts either a signed package with a signature registered by one of its owners or an unsigned package (because one of the owners does not have any certificate registered). - -![Configure package signers](media/configure-package-signers.png) - -## Configure package consumption requirements - -*NuGet 4.9.0+ and Visual Studio version 15.9 and later* - -You can customize how NuGet clients validate package signatures by setting the `signatureValidationMode` to `require`. - -```xml - - - -``` - -This mode will verify that all packages are signed by any of the certificates trusted in the `nuget.config` file. This file allows you to specify which authors and/or repositories are trusted based on the certificate's fingerprint. - -### Trust package author - -To trust packages based on the author signature use the `authors` element: - -```xml - - - - - -``` - ->[!TIP] ->Use the `nuget.exe` [verify command](https://docs.microsoft.com/en-us/nuget/tools/cli-ref-verify) to get the `SHA256` value of the certificate's fingerprint. - - -### Trust all packages from a repository - -To trust packages based on the repository signature use the `repository` element: - -```xml - - - - - -``` - -### Trust Package Owners - -Repository signatures include additional metadata to determine the owners of the package at the time of submission. You can restrict packages from a repository based on a list of owners: - -```xml - - - - microsoft;nuget - - -``` - - -### Untrusted Root certificates - -In some situations you may want to enable signing and verification using certificates that do not chain to a trusted root in the local machine. You can use the `allowUntrustedRoot` attribute to customize this behavior. - -### Sync repository certificates - -Package repositories should announce the certificates they use in their [service index](https://docs.microsoft.com/en-us/nuget/api/service-index). Eventually the repository will update these certificates, e.g. when the certificate expires. When that happens, clients with specific policies will require an update to the configuration to include the newly added certificate. You can easily upgrade the trusted signers associated to a repository by using the `nuget.exe` [trusted-signers sync command](/nuget/tools/cli-ref-trusted-signers.md#nuget-trusted-signers-sync--name-). - -### Schema reference - -The complete schema reference for the client policies can be found in the [nuget.config reference](/nuget/reference/nuget-config-file#trustedsigners-section) From 02df435005fc22c5e0f44d1b6d6df8dd5f1e8dcf Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 02:04:59 -0800 Subject: [PATCH 1000/2943] Update ways-to-install-a-package.md --- docs/consume-packages/ways-to-install-a-package.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/consume-packages/ways-to-install-a-package.md b/docs/consume-packages/ways-to-install-a-package.md index dc62fd9f9..f7fcfc8a6 100644 --- a/docs/consume-packages/ways-to-install-a-package.md +++ b/docs/consume-packages/ways-to-install-a-package.md @@ -59,6 +59,7 @@ The general process is as follows: ## Related articles +- [Installing signed packages](installing-signed-packages.md) - [Overview and workflow of package consumption](../consume-packages/overview-and-workflow.md) - [Finding and choosing packages](../consume-packages/finding-and-choosing-packages.md) - [Managing the NuGet cache and global-packages folders](managing-the-global-packages-and-cache-folders.md) From 77f94e0163039b644722a513a9e06c37d75af71a Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 02:07:59 -0800 Subject: [PATCH 1001/2943] Update installing-signed-packages.md --- docs/consume-packages/installing-signed-packages.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/consume-packages/installing-signed-packages.md b/docs/consume-packages/installing-signed-packages.md index 1907f68d9..479002e4f 100644 --- a/docs/consume-packages/installing-signed-packages.md +++ b/docs/consume-packages/installing-signed-packages.md @@ -84,3 +84,8 @@ Package repositories should announce the certificates they use in their [service ### Schema reference The complete schema reference for the client policies can be found in the [nuget.config reference](/nuget/reference/nuget-config-file#trustedsigners-section) + +## Related articles + +- [Signing NuGet Packages](../create-packages/Sign-a-Package.md) +- [Signed Packages Reference](../reference/Signed-Packages-Reference.md) From 1e3f6210d44f298255d8fe3b0889193d5aacbb4a Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 02:08:13 -0800 Subject: [PATCH 1002/2943] Update Sign-a-Package.md --- docs/create-packages/Sign-a-Package.md | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index bcc9cc295..850b34db8 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -12,9 +12,6 @@ ms.reviewer: anangaur Signed packages allows for content integrity verification checks which provides protection against content tampering. The package signature also serves as the single source of truth about the actual origin of the package and bolsters package authenticity for the consumer. This guide assumes you have already [created a package](creating-a-package.md). -> [!Important] -> Package signing is currently supported only when using nuget.exe on Windows. Verification of signed packages is currently supported only when using nuget.exe or Visual Studio on Windows. - ## Get a code signing certificate Valid certificates may be obtained from a public certificate authority like such as [Symantec](https://trustcenter.websecurity.symantec.com/process/trust/productOptions?productType=SoftwareValidationClass3), [DigiCert](https://www.digicert.com/code-signing/), [Go Daddy](https://www.godaddy.com/web-security/code-signing-certificate), [Global Sign](https://www.globalsign.com/en/code-signing-certificate/), [Comodo](https://www.comodo.com/e-commerce/code-signing/code-signing-certificate.php), [Certum](https://www.certum.eu/certum/cert,offer_en_open_source_cs.xml), etc. The complete list of certification authorities trusted by Windows can be obtained from [http://aka.ms/trustcertpartners](http://aka.ms/trustcertpartners). @@ -96,13 +93,7 @@ This command creates a testing certificate available in the current user's perso * Similarly, if the default "Any" option is selected for a package where one owner has a certificate registered and another owner does not have any certificate registered, then NuGet.org accepts either a signed package with a signature registered by one of its owners or an unsigned package (because one of the owners does not have any certificate registered). -## Install a signed package - -Signed packages don't require any specific action to be installed; however, if the content has been modified since it was signed, the installation is blocked and produces an [error NU3008](../reference/errors-and-warnings/NU3008.md). - -> [!Warning] -> Packages signed with untrusted certificates are considered as unsigned and are installed without any warnings or errors like any other unsigned package. - -## Related Topics +## Related articles -[Signed Packages Reference](../reference/Signed-Packages-Reference.md) +- [Installing signed packages](installing-signed-packages.md) +- [Signed Packages Reference](../reference/Signed-Packages-Reference.md) From e0451945261168575b9bb933bc3c4b146be39c2f Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 02:10:01 -0800 Subject: [PATCH 1003/2943] Update Sign-a-Package.md --- docs/create-packages/Sign-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 850b34db8..f966e730d 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -14,7 +14,7 @@ Signed packages allows for content integrity verification checks which provides ## Get a code signing certificate -Valid certificates may be obtained from a public certificate authority like such as [Symantec](https://trustcenter.websecurity.symantec.com/process/trust/productOptions?productType=SoftwareValidationClass3), [DigiCert](https://www.digicert.com/code-signing/), [Go Daddy](https://www.godaddy.com/web-security/code-signing-certificate), [Global Sign](https://www.globalsign.com/en/code-signing-certificate/), [Comodo](https://www.comodo.com/e-commerce/code-signing/code-signing-certificate.php), [Certum](https://www.certum.eu/certum/cert,offer_en_open_source_cs.xml), etc. The complete list of certification authorities trusted by Windows can be obtained from [http://aka.ms/trustcertpartners](http://aka.ms/trustcertpartners). +Valid certificates may be obtained from a public certificate authority such as [Symantec](https://trustcenter.websecurity.symantec.com/process/trust/productOptions?productType=SoftwareValidationClass3), [DigiCert](https://www.digicert.com/code-signing/), [Go Daddy](https://www.godaddy.com/web-security/code-signing-certificate), [Global Sign](https://www.globalsign.com/en/code-signing-certificate/), [Comodo](https://www.comodo.com/e-commerce/code-signing/code-signing-certificate.php), [Certum](https://www.certum.eu/certum/cert,offer_en_open_source_cs.xml), etc. The complete list of certification authorities trusted by Windows can be obtained from [http://aka.ms/trustcertpartners](http://aka.ms/trustcertpartners). You can use self-issued certificates for testing purposes. However, packages signed using self-issued certificates are not accepted by NuGet.org. Learn more about [creating a test certificate](#create-a-test-certificate) From d8ade288f7a371c0bd889a1f1942b0a034f7fa9a Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 02:11:47 -0800 Subject: [PATCH 1004/2943] Update Signed-Packages-Reference.md --- docs/reference/Signed-Packages-Reference.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/reference/Signed-Packages-Reference.md b/docs/reference/Signed-Packages-Reference.md index a4ce3133b..fc38a3170 100644 --- a/docs/reference/Signed-Packages-Reference.md +++ b/docs/reference/Signed-Packages-Reference.md @@ -47,3 +47,9 @@ nuget.org has additional requirements for accepting a signed package: - The author signing certificate must be valid for code signing. - The timestamp certificate must be valid for timestamping. - Must not be revoked at signing time. (This may not be knowable at submission time, so nuget.org periodically rechecks revocation status). + + +## Related articles + +- [Signing NuGet Packages](../create-packages/Sign-a-Package.md) +- [Installing signed packages](installing-signed-packages.md) From 420247554e45c30b5b38221c9311f704f6d2ab63 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 02:13:49 -0800 Subject: [PATCH 1005/2943] Update Sign-a-Package.md --- docs/create-packages/Sign-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index f966e730d..6c38683b1 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -95,5 +95,5 @@ This command creates a testing certificate available in the current user's perso ## Related articles -- [Installing signed packages](installing-signed-packages.md) +- [Installing signed packages](../consume-packages/installing-signed-packages.md) - [Signed Packages Reference](../reference/Signed-Packages-Reference.md) From e7ffa024be7178aa095ddf4e00385b4096bf2188 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 02:19:47 -0800 Subject: [PATCH 1006/2943] Update installing-signed-packages.md --- docs/consume-packages/installing-signed-packages.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/consume-packages/installing-signed-packages.md b/docs/consume-packages/installing-signed-packages.md index 479002e4f..218dbacd1 100644 --- a/docs/consume-packages/installing-signed-packages.md +++ b/docs/consume-packages/installing-signed-packages.md @@ -87,5 +87,6 @@ The complete schema reference for the client policies can be found in the [nuget ## Related articles +- [Different ways to install a NuGet Package](ways-to-install-a-package.md) - [Signing NuGet Packages](../create-packages/Sign-a-Package.md) - [Signed Packages Reference](../reference/Signed-Packages-Reference.md) From 4913900f88d10bbceec182145edaf37d8c616c5a Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 02:22:52 -0800 Subject: [PATCH 1007/2943] Update Signed-Packages-Reference.md --- docs/reference/Signed-Packages-Reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/Signed-Packages-Reference.md b/docs/reference/Signed-Packages-Reference.md index fc38a3170..889c7faab 100644 --- a/docs/reference/Signed-Packages-Reference.md +++ b/docs/reference/Signed-Packages-Reference.md @@ -52,4 +52,4 @@ nuget.org has additional requirements for accepting a signed package: ## Related articles - [Signing NuGet Packages](../create-packages/Sign-a-Package.md) -- [Installing signed packages](installing-signed-packages.md) +- [Installing signed packages](../consume-packages/installing-signed-packages.md) From ce97dded7715f217ec44f6c8368ab0df19c38342 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 02:37:05 -0800 Subject: [PATCH 1008/2943] Fixes 1158 https://github.com/NuGet/docs.microsoft.com-nuget/issues/1158 --- docs/create-packages/Overview-and-Workflow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Overview-and-Workflow.md b/docs/create-packages/Overview-and-Workflow.md index feedc9d93..e919c2788 100644 --- a/docs/create-packages/Overview-and-Workflow.md +++ b/docs/create-packages/Overview-and-Workflow.md @@ -31,7 +31,7 @@ From there, you can consider a number of other options for your package: - [Creating Localized Packages](../create-packages/creating-localized-packages.md) describes how to structure a package with multiple language resources and how to use separate localized satellite packages. - [Pre-release Packages](../create-packages/prerelease-packages.md) demonstrates how to release alpha, beta, and rc packages to those customers who are interested. - [Source and Config File Transformations](../create-packages/source-and-config-file-transformations.md) describes how you can do both one-way token replacements in files that are added to a project, and modify `web.config` and `app.config` with settings that are also backed out when the package is uninstalled. -- [Symbol Packages](../create-packages/symbol-packages.md) offers guidance for supplying symbols for your library that allow consumers to step into your code while debugging. +- [Symbol Packages](../create-packages/symbol-packages-snupkg.md) offers guidance for supplying symbols for your library that allow consumers to step into your code while debugging. - [Package versioning](../reference/package-versioning.md) discusses how to identify the exact versions that you allow for your dependencies (other packages that you consume from your package). - [Native Packages](../create-packages/native-packages.md) describes the process for creating a package for C++ consumers. - [Signing Packages](../create-packages/sign-a-package.md) describes the process for adding a digital signature to a package. From ff3cc9e1a04caae38f3867a3c44a06a127e92f13 Mon Sep 17 00:00:00 2001 From: Andy Zivkovic Date: Thu, 29 Nov 2018 09:41:34 -0800 Subject: [PATCH 1009/2943] fix capitilisation of Newtonsoft.Json (#1194) fixes #1193 --- docs/quickstart/install-and-use-a-package-in-visual-studio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/quickstart/install-and-use-a-package-in-visual-studio.md b/docs/quickstart/install-and-use-a-package-in-visual-studio.md index b49ce7c18..5e1d0c2e1 100644 --- a/docs/quickstart/install-and-use-a-package-in-visual-studio.md +++ b/docs/quickstart/install-and-use-a-package-in-visual-studio.md @@ -59,7 +59,7 @@ To install the package, you can use either the Package Manager UI or the Package ![Locating Newtonsoft.Json package](media/QS_Use-08-Console1.png) -1. Enter the command `Install-Package Newtonsoft.json` (see [Install-Package](../tools/ps-ref-install-package.md)). The console window shows output for the command. Errors typically indicate that the package isn't compatible with the project's target framework. +1. Enter the command `Install-Package Newtonsoft.Json` (see [Install-Package](../tools/ps-ref-install-package.md)). The console window shows output for the command. Errors typically indicate that the package isn't compatible with the project's target framework. ## Use the Newtonsoft.Json API in the app From 2a8526b23ee65850500af375fef649fdac53b5d2 Mon Sep 17 00:00:00 2001 From: "J.F. Larente" Date: Thu, 29 Nov 2018 12:45:27 -0500 Subject: [PATCH 1010/2943] Fixed minor typo (#1192) Fixed 'requested' --- docs/reference/errors-and-warnings/NU1102.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/errors-and-warnings/NU1102.md b/docs/reference/errors-and-warnings/NU1102.md index e11cb9be1..c772fea16 100644 --- a/docs/reference/errors-and-warnings/NU1102.md +++ b/docs/reference/errors-and-warnings/NU1102.md @@ -18,4 +18,4 @@ f1_keywords: The package identifier is found but a version within the specified dependency range cannot be found on any of the sources. The range might be specified by a package and not the user. ### Solution -Edit the project file to correct the package version. Also check that the [NuGet configuration](../../consume-packages/Configuring-NuGet-Behavior.md) identifies the package sources your expect to be using. You may need to change the requeted version if this package is referenced by the project directly. \ No newline at end of file +Edit the project file to correct the package version. Also check that the [NuGet configuration](../../consume-packages/Configuring-NuGet-Behavior.md) identifies the package sources your expect to be using. You may need to change the requested version if this package is referenced by the project directly. From 9434cc8fa560b831dcd10286ef4a12ddbe54095f Mon Sep 17 00:00:00 2001 From: Andy Zivkovic Date: Thu, 29 Nov 2018 09:58:12 -0800 Subject: [PATCH 1011/2943] Fix more important capitlisation of Newtonsoft.Json (#1195) properly fixes #1193 --- docs/quickstart/install-and-use-a-package-in-visual-studio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/quickstart/install-and-use-a-package-in-visual-studio.md b/docs/quickstart/install-and-use-a-package-in-visual-studio.md index 5e1d0c2e1..d86816c81 100644 --- a/docs/quickstart/install-and-use-a-package-in-visual-studio.md +++ b/docs/quickstart/install-and-use-a-package-in-visual-studio.md @@ -102,7 +102,7 @@ With the Newtonsoft.Json package in the project, you can call its `JsonConvert.S 1. Even though you added the Newtonsoft.Json package to the project, red squiggles appears under `JsonConvert` because you need a `using` statement at the top of the code file: ```cs - using Newtonsoft.json; + using Newtonsoft.Json; ``` 1. Build and run the app by pressing F5 or selecting **Debug > Start Debugging**: From c6f85fef432c000da481513b9754d1e1612fafb4 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Thu, 29 Nov 2018 11:34:16 -0800 Subject: [PATCH 1012/2943] Update install-nuget-client-tools.md (#1189) --- docs/install-nuget-client-tools.md | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index e1235d059..acbaad53e 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -70,27 +70,25 @@ Installation: | Feature | dotnet CLI | nuget CLI (Windows) | nuget CLI (Mono) | Visual Studio (Windows) | Visual Studio for Mac | | --- | --- | --- | --- | --- | --- | | Search packages | | ✔ | ✔ | ✔ | ✔ | -| Install/uninstall packages | ✔(1) | ✔(2) | ✔ | ✔ | ✔ | +| Install/uninstall packages | ✔ | ✔(1) | ✔ | ✔ | ✔ | | Update packages | ✔ | ✔ | | ✔ | ✔ | -| Restore packages | ✔ | ✔ | ✔(3) | ✔ | ✔ | +| Restore packages | ✔ | ✔ | ✔(2) | ✔ | ✔ | | Manage package feeds (sources) | | ✔ | ✔ | ✔ | ✔ | -| Manage packages on a feed | ✔(1) | ✔ | ✔ | | | +| Manage packages on a feed | ✔ | ✔ | ✔ | | | | Set API keys for feeds | | ✔ | ✔ | | | -| Create packages(4) | ✔ | ✔ | ✔(5) | ✔ | | -| Publish packages | ✔(1) | ✔ | ✔ | ✔ | | +| Create packages(3) | ✔ | ✔ | ✔(4) | ✔ | | +| Publish packages | ✔ | ✔ | ✔ | ✔ | | | Replicate packages | | ✔ | ✔ | | | | Manage *global-package* and cache folders | ✔ | ✔ | ✔ | | | | Manage NuGet configuration | | ✔ | ✔ | | | -(1) Packages on nuget.org only +(1) Does not affect project files; use `dotnet.exe` instead. -(2) Does not affect project files; use `dotnet.exe` instead. +(2) Works only with `packages.config` file and not with solution (`.sln`) files. -(3) Works only with `packages.config` file and not with solution (`.sln`) files. +(3) Various advanced package features are available through the CLI only as they aren't represented in the Visual Studio UI tools. -(4) Various advanced package features are available through the CLI only as they aren't represented in the Visual Studio UI tools. - -(5) Works with `.nuspec` files but not with project files. +(4) Works with `.nuspec` files but not with project files. ### Related topics From a9f396088e19d50a075e146e5ac782f9a79769d8 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 16:42:45 -0800 Subject: [PATCH 1013/2943] Update Finding-and-Choosing-Packages.md --- .../Finding-and-Choosing-Packages.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/consume-packages/Finding-and-Choosing-Packages.md b/docs/consume-packages/Finding-and-Choosing-Packages.md index efce700f9..3d78c773b 100644 --- a/docs/consume-packages/Finding-and-Choosing-Packages.md +++ b/docs/consume-packages/Finding-and-Choosing-Packages.md @@ -96,6 +96,23 @@ At the same time, using a NuGet package means taking a dependency on it, so you > [!Note] > Always be mindful of a package's license terms, which you can see by selecting **License Info** on a package's listing page on nuget.org. If a package does not specify license terms, contact the package owner directly using the **Contact owners** link on the package page. Microsoft does not license any intellectual property to you from third party package providers and is not responsible for information provided by third parties. +## License URL deprecation +As we transition from [licenseUrl](../reference/nuspec#licenseurl) to [license](../reference/nuspec#license), some NuGet clients and NuGet feeds may not yet have the ability to surface licensing information in some cases. To maintain backward compatibility in such cases, the license URL points to this document which talks about how to retrieve the license information in such cases. + +If clicking on the license URL for a package brought you to this page, it implies the package contains a license file and +* You are connected to a feed that does not yet know how to interpret and surface the new license information to the client +**OR** +* You are using a client that does not yet know how to interpret and read the new license information that is potentially provided by the feed +**OR** +* A combination of both + +Here is how you could read the information contained in the license file inside the package: +1. Download the NuGet package, and unzip its contents to a folder. +1. Open the `.nuspec` file which would be at the root of that folder. +1. It should have a tag like `license\license.txt`. This implies the license file is named `license.txt` and it is inside a folder called `license` which would also be at the root of that folder. +1. Navigate to the `license` folder and open the `license.txt` file. + + ## Search Syntax NuGet package search works the same on nuget.org, from the NuGet CLI, and within the NuGet Package Manager extension in Visual Studio. In general, search is applied to keywords as well as package descriptions. From 5dd8f2be0a93d85aca91f5afeb0a9e9bb403a833 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 16:46:14 -0800 Subject: [PATCH 1014/2943] Update Finding-and-Choosing-Packages.md --- docs/consume-packages/Finding-and-Choosing-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/consume-packages/Finding-and-Choosing-Packages.md b/docs/consume-packages/Finding-and-Choosing-Packages.md index 3d78c773b..9c625964f 100644 --- a/docs/consume-packages/Finding-and-Choosing-Packages.md +++ b/docs/consume-packages/Finding-and-Choosing-Packages.md @@ -97,7 +97,7 @@ At the same time, using a NuGet package means taking a dependency on it, so you > Always be mindful of a package's license terms, which you can see by selecting **License Info** on a package's listing page on nuget.org. If a package does not specify license terms, contact the package owner directly using the **Contact owners** link on the package page. Microsoft does not license any intellectual property to you from third party package providers and is not responsible for information provided by third parties. ## License URL deprecation -As we transition from [licenseUrl](../reference/nuspec#licenseurl) to [license](../reference/nuspec#license), some NuGet clients and NuGet feeds may not yet have the ability to surface licensing information in some cases. To maintain backward compatibility in such cases, the license URL points to this document which talks about how to retrieve the license information in such cases. +As we transition from [licenseUrl](../reference/nuspec#licenseurl) to [license](../reference/nuspec#license), some NuGet clients and NuGet feeds may not yet have the ability to surface licensing information in some cases. To maintain backward compatibility, the license URL points to this document which talks about how to retrieve the license information in such cases. If clicking on the license URL for a package brought you to this page, it implies the package contains a license file and * You are connected to a feed that does not yet know how to interpret and surface the new license information to the client From 1591bb230e106b94162a87dd1d86fe427366730a Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 29 Nov 2018 16:46:29 -0800 Subject: [PATCH 1015/2943] master -> live (#1198) * Fix typo in analyzers-conventions.md (#1039) (#1040) * metadata updates (#1044) * metadata updates * fix warning * some additional changes * Update NU3028.md (#1041) * Update NU3028.md https://github.com/NuGet/Home/issues/7173 * Update NU3028.md * Update NU3028.md * Update cli-ref-environment-variables.md * Don't call .Net Framework "full" * Added the versioning for Revocation mode functionality * Update TOC.md * Karann 4.8 relnotes (#1055) * Create NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update TOC.md * Update NuGet-Cross-Platform-Authentication-Plugin.md * Update Index.md * Update Supporting-Multiple-Target-Frameworks.md * Update Package-restore-troubleshooting.md (#1088) * Update Supporting-Multiple-Target-Frameworks.md (#1086) * Update Creating-a-Package.md (#1084) * Update nuspec.md (#1065) * Replace namespaces with prefixes * Be consistent about namespace/prefix reservation * Update the details for IsImplicitlyDefined packages (#1067) * Update the details for IsImplicitlyDefined packages * Update Package-Manager-UI.md * Update Package-Manager-UI.md * Update Package-Manager-UI.md * PR feedback * Create PackageReference-with-packages-lock-file.md (#1100) * Create PackageReference-with-packages-lock-file.md * Update PackageReference-with-packages-lock-file.md * Update PackageReference-with-packages-lock-file.md * Fixes #1085 (#1099) * ; -> : (#1098) * Revert "Create PackageReference-with-packages-lock-file.md" (#1101) * Revert "; -> : (#1098)" This reverts commit 6ffe30a427c5a2109958d945d48e48e296fd3178. * Revert "Fixes #1085 (#1099)" This reverts commit b9b6c2f13a073918c1650a65be9fe673c1104b70. * Revert "Create PackageReference-with-packages-lock-file.md (#1100)" This reverts commit 79f240d7433c0ac4d4fd88e7e8ab7f93c62227c4. * Update Create-UI-Controls.md * Update TOC.md (#1125) fixes #1124 Remove the link to docs for creating .NET Standard packages in VS2015, since .NET Core tooling was only pre-release in VS2015. Using the dotnet CLI is recommended over VS2015, if VS2017 can't be used for some reason. * Update Package-References-in-Project-Files.md (#1119) * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Replaced staging.nuget.org with int.nugettest.org (#1132) The staging.nuget.org is deprecated and it is recommended to switch to int.nugettest.org (see https://github.com/NuGet/NuGetGallery/issues/5627). * staging.nuget.org has been deprecated (#1131) See https://github.com/NuGet/NuGetGallery/issues/5627. * Update Overview-and-Workflow.md (#1130) * Update Overview-and-Workflow.md Update styling and typo in image caption as a correction for #1129 * Update Overview-and-Workflow.md * Update Package-restore-troubleshooting.md (#1123) Add missing word. * Add files via upload * Update tool box icon spec (#1149) * Update tool box icon spec * Update Create-UI-Controls.md * Update Create-UI-Controls.md * CC74600: Unnecessarily nested lists (#1091) Hello, @karann-msft, This proposed file change comes from https://github.com/NuGet/docs.microsoft.com-nuget.es-es/pull/4 . Could you review this contribution and help to merge if agreed? Many thanks in advance. * fix: typo in authors token (#1120) Based on issue #1072, I've corrected the docs in the appropriate place. * Fixed typo (#1117) Corrected the spelling of 'delimeters' to delimiters * Grammar (#1113) fixed some grammatical errors * Revert "CC74600: Unnecessarily nested lists (#1091)" (#1152) This reverts commit 1c8db5f63041aac6668f56d0a33b60e0a1fdd05c. * Fixed formatting for note (#1090) * Fix erroneous extra lines in PackageReference documentation (#1153) This removes some seemingly unintended extra lines introduced by #1119. * Fixed typo (#1154) * add configFile option for nugget pack (#1115) add missing -ConfigFile option for nugget pack * Updated what-is-nuget.md to reflect Issue #1111 (#1114) Updated Visual Studio Team System to Azure DevOps to reflect Issue #1111 * Add documentation for client policies updates * fix link issues * Add symbols docs. (#1128) * Add symbols docs. * Updates * Update Symbol-Packages-V2.md * Update Symbol-Packages-V2.md Adding validation info to publish page for Symbols packages. * Feedback * Update * Update * Fix a broken link. * Feedback * Update symbol-package-publish-resource.md * Update Symbol-Packages-V2.md * Feedback * Feedback * Update TOC.md * Rename Symbol-Packages-V2.md to Symbol-Packages-snupkg.md * Update Symbol-Packages.md * Update Symbol-Packages.md * Update Symbol-Packages-snupkg.md * Update Symbol-Packages-snupkg.md * Update Symbol-Packages-snupkg.md * Update cli-ref-pack.md * Update cli-ref-pack.md * Update Symbol-Packages-snupkg.md * Update symbol-package-publish-resource.md * address feedback * Specify that sync deletes certs * Add list sample output * license docs (#1168) * Update Creating-a-Package.md * Update nuspec.md * Update nuspec.md * Update nuspec.md * Update nuspec.md * Update Creating-a-Package.md * Update nuspec.md * Update Creating-a-Package.md * Spellings (#1171) Thank you for your contribution! * Add Sleet to hosting-packages doc (#1166) * Fix snupkg documentation (#1174) The msbuild property is `SymbolPackageFormat`. See: https://github.com/NuGet/NuGet.Client/blob/3c9b61826814dc800a2a295f0985ce4f295483d6/src/NuGet.Core/NuGet.Build.Tasks.Pack/NuGet.Build.Tasks.Pack.targets#L42 * Fix spellings (#1172) * fix formatting in Package-References-in-Project-Files.md (#1182) Fix formatting/typo in the first paragraph. * typo on dependencies in locking doc (#1175) * Improve sentences (#1181) * Improve sentences * Add license warnings and errors (#1173) * update docs * address feedback * fix the wording of NU5035 * add samples * Clarify what kind of version strings are in registration and catalog (#1185) * Change MSBuild arguments to hyphen format (#1167) * 4.9.1 relnotes (#1177) * Create NuGet-4.9-RTM.md * Update Index.md * Update TOC.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md tweaks to release notes * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * updates to the error and warning list (#1191) * fix capitilisation of Newtonsoft.Json (#1194) fixes #1193 * Fixed minor typo (#1192) Fixed 'requested' * Fix more important capitlisation of Newtonsoft.Json (#1195) properly fixes #1193 * Update install-nuget-client-tools.md (#1189) * Update Finding-and-Choosing-Packages.md * Update Finding-and-Choosing-Packages.md --- docs/TOC.md | 222 ++++++++++-------- .../Finding-and-Choosing-Packages.md | 17 ++ docs/install-nuget-client-tools.md | 20 +- ...tall-and-use-a-package-in-visual-studio.md | 4 +- docs/reference/Errors-and-Warnings.md | 6 +- docs/reference/errors-and-warnings/NU1102.md | 2 +- 6 files changed, 154 insertions(+), 117 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index 07c77d777..9ef020e80 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -85,107 +85,127 @@ ## [ID prefix reservation](reference/id-prefix-reservation.md) ## [NuGet client SDK](reference/nuget-client-sdk.md) ## [Signed packages](reference/signed-packages-reference.md) -## [Organizations on nuget.org](reference/organizations-on-nuget-org.md) -## [NuGet Errors](reference/Errors-and-Warnings.md) -### [NuGet Error NU1000](reference/errors-and-warnings/NU1000.md) -### [NuGet Error NU1001](reference/errors-and-warnings/NU1001.md) -### [NuGet Error NU1002](reference/errors-and-warnings/NU1002.md) -### [NuGet Error NU1003](reference/errors-and-warnings/NU1003.md) -### [NuGet Error NU1100](reference/errors-and-warnings/NU1100.md) -### [NuGet Error NU1101](reference/errors-and-warnings/NU1101.md) -### [NuGet Error NU1102](reference/errors-and-warnings/NU1102.md) -### [NuGet Error NU1103](reference/errors-and-warnings/NU1103.md) -### [NuGet Error NU1104](reference/errors-and-warnings/NU1104.md) -### [NuGet Error NU1105](reference/errors-and-warnings/NU1105.md) -### [NuGet Error NU1106](reference/errors-and-warnings/NU1106.md) -### [NuGet Error NU1107](reference/errors-and-warnings/NU1107.md) -### [NuGet Error NU1108](reference/errors-and-warnings/NU1108.md) -### [NuGet Error NU1201](reference/errors-and-warnings/NU1201.md) -### [NuGet Error NU1202](reference/errors-and-warnings/NU1202.md) -### [NuGet Error NU1203](reference/errors-and-warnings/NU1203.md) -### [NuGet Error NU1401](reference/errors-and-warnings/NU1401.md) -### [NuGet Warning NU3000](reference/errors-and-warnings/NU3000.md) -### [NuGet Error NU3001](reference/errors-and-warnings/NU3001.md) -### [NuGet Warning NU3002](reference/errors-and-warnings/NU3002.md) -### [NuGet Warning NU3003](reference/errors-and-warnings/NU3003.md) -### [NuGet Error NU3004](reference/errors-and-warnings/NU3004.md) -### [NuGet Error NU3005](reference/errors-and-warnings/NU3005.md) -### [NuGet Warning NU3006](reference/errors-and-warnings/NU3006.md) -### [NuGet Warning NU3007](reference/errors-and-warnings/NU3007.md) -### [NuGet Error NU3008](reference/errors-and-warnings/NU3008.md) -### [NuGet Warning NU3009](reference/errors-and-warnings/NU3009.md) -### [NuGet Warning NU3010](reference/errors-and-warnings/NU3010.md) -### [NuGet Warning NU3011](reference/errors-and-warnings/NU3011.md) -### [NuGet Error NU3012](reference/errors-and-warnings/NU3012.md) -### [NuGet Warning NU3013](reference/errors-and-warnings/NU3013.md) -### [NuGet Warning NU3014](reference/errors-and-warnings/NU3014.md) -### [NuGet Warning NU3015](reference/errors-and-warnings/NU3015.md) -### [NuGet Warning NU3016](reference/errors-and-warnings/NU3016.md) -### [NuGet Warning NU3017](reference/errors-and-warnings/NU3017.md) -### [NuGet Warning NU3018](reference/errors-and-warnings/NU3018.md) -### [NuGet Warning NU3019](reference/errors-and-warnings/NU3019.md) -### [NuGet Warning NU3020](reference/errors-and-warnings/NU3020.md) -### [NuGet Warning NU3021](reference/errors-and-warnings/NU3021.md) -### [NuGet Warning NU3022](reference/errors-and-warnings/NU3022.md) -### [NuGet Warning NU3023](reference/errors-and-warnings/NU3023.md) -### [NuGet Warning NU3025](reference/errors-and-warnings/NU3025.md) -### [NuGet Warning NU3027](reference/errors-and-warnings/NU3027.md) -### [NuGet Warning NU3028](reference/errors-and-warnings/NU3028.md) -### [NuGet Error NU3034](reference/errors-and-warnings/NU3034.md) -### [NuGet Error NU3040](reference/errors-and-warnings/NU3040.md) -### [NuGet Error NU5000](reference/errors-and-warnings/NU5000.md) -### [NuGet Error NU5001](reference/errors-and-warnings/NU5001.md) -### [NuGet Error NU5002](reference/errors-and-warnings/NU5002.md) -### [NuGet Error NU5003](reference/errors-and-warnings/NU5003.md) -### [NuGet Error NU5004](reference/errors-and-warnings/NU5004.md) -### [NuGet Error NU5005](reference/errors-and-warnings/NU5005.md) -### [NuGet Error NU5007](reference/errors-and-warnings/NU5007.md) -### [NuGet Error NU5008](reference/errors-and-warnings/NU5008.md) -### [NuGet Error NU5009](reference/errors-and-warnings/NU5009.md) -### [NuGet Error NU5010](reference/errors-and-warnings/NU5010.md) -### [NuGet Error NU5011](reference/errors-and-warnings/NU5011.md) -### [NuGet Error NU5012](reference/errors-and-warnings/NU5012.md) -### [NuGet Error NU5013](reference/errors-and-warnings/NU5013.md) -### [NuGet Error NU5014](reference/errors-and-warnings/NU5014.md) -### [NuGet Error NU5015](reference/errors-and-warnings/NU5015.md) -### [NuGet Error NU5016](reference/errors-and-warnings/NU5016.md) -### [NuGet Error NU5017](reference/errors-and-warnings/NU5017.md) -### [NuGet Error NU5018](reference/errors-and-warnings/NU5018.md) -### [NuGet Error NU5019](reference/errors-and-warnings/NU5019.md) -### [NuGet Error NU5020](reference/errors-and-warnings/NU5020.md) -### [NuGet Error NU5021](reference/errors-and-warnings/NU5021.md) -### [NuGet Error NU5022](reference/errors-and-warnings/NU5022.md) -### [NuGet Error NU5023](reference/errors-and-warnings/NU5023.md) -### [NuGet Error NU5024](reference/errors-and-warnings/NU5024.md) -### [NuGet Error NU5025](reference/errors-and-warnings/NU5025.md) -### [NuGet Error NU5026](reference/errors-and-warnings/NU5026.md) -### [NuGet Error NU5027](reference/errors-and-warnings/NU5027.md) -### [NuGet Error NU5028](reference/errors-and-warnings/NU5028.md) -### [NuGet Error NU5029](reference/errors-and-warnings/NU5029.md) -### [NuGet Warning NU5100](reference/errors-and-warnings/NU5100.md) -### [NuGet Warning NU5101](reference/errors-and-warnings/NU5101.md) -### [NuGet Warning NU5102](reference/errors-and-warnings/NU5102.md) -### [NuGet Warning NU5103](reference/errors-and-warnings/NU5103.md) -### [NuGet Warning NU5104](reference/errors-and-warnings/NU5104.md) -### [NuGet Warning NU5105](reference/errors-and-warnings/NU5105.md) -### [NuGet Warning NU5106](reference/errors-and-warnings/NU5106.md) -### [NuGet Warning NU5107](reference/errors-and-warnings/NU5107.md) -### [NuGet Warning NU5108](reference/errors-and-warnings/NU5108.md) -### [NuGet Warning NU5109](reference/errors-and-warnings/NU5109.md) -### [NuGet Warning NU5110](reference/errors-and-warnings/NU5110.md) -### [NuGet Warning NU5111](reference/errors-and-warnings/NU5111.md) -### [NuGet Warning NU5112](reference/errors-and-warnings/NU5112.md) -### [NuGet Warning NU5114](reference/errors-and-warnings/NU5114.md) -### [NuGet Warning NU5115](reference/errors-and-warnings/NU5115.md) -### [NuGet Warning NU5116](reference/errors-and-warnings/NU5116.md) -### [NuGet Warning NU5117](reference/errors-and-warnings/NU5117.md) -### [NuGet Warning NU5118](reference/errors-and-warnings/NU5118.md) -### [NuGet Warning NU5119](reference/errors-and-warnings/NU5119.md) -### [NuGet Warning NU5120](reference/errors-and-warnings/NU5120.md) -### [NuGet Warning NU5121](reference/errors-and-warnings/NU5121.md) -### [NuGet Warning NU5122](reference/errors-and-warnings/NU5122.md) -### [NuGet Warning NU5123](reference/errors-and-warnings/NU5123.md) -### [NuGet Warning NU5500](reference/errors-and-warnings/NU5500.md) +## [Organizations on NuGet.org](reference/organizations-on-nuget-org.md) +## [Errors and Warnings](reference/Errors-and-Warnings.md) +### [NU1000](reference/errors-and-warnings/NU1000.md) +### [NU1001](reference/errors-and-warnings/NU1001.md) +### [NU1002](reference/errors-and-warnings/NU1002.md) +### [NU1003](reference/errors-and-warnings/NU1003.md) +### [NU1100](reference/errors-and-warnings/NU1100.md) +### [NU1101](reference/errors-and-warnings/NU1101.md) +### [NU1102](reference/errors-and-warnings/NU1102.md) +### [NU1103](reference/errors-and-warnings/NU1103.md) +### [NU1104](reference/errors-and-warnings/NU1104.md) +### [NU1105](reference/errors-and-warnings/NU1105.md) +### [NU1106](reference/errors-and-warnings/NU1106.md) +### [NU1107](reference/errors-and-warnings/NU1107.md) +### [NU1108](reference/errors-and-warnings/NU1108.md) +### [NU1201](reference/errors-and-warnings/NU1201.md) +### [NU1202](reference/errors-and-warnings/NU1202.md) +### [NU1203](reference/errors-and-warnings/NU1203.md) +### [NU1401](reference/errors-and-warnings/NU1401.md) +### [NU1500](reference/errors-and-warnings/NU1500.md) +### [NU1501](reference/errors-and-warnings/NU1501.md) +### [NU1502](reference/errors-and-warnings/NU1502.md) +### [NU1503](reference/errors-and-warnings/NU1503.md) +### [NU1601](reference/errors-and-warnings/NU1601.md) +### [NU1602](reference/errors-and-warnings/NU1602.md) +### [NU1603](reference/errors-and-warnings/NU1603.md) +### [NU1604](reference/errors-and-warnings/NU1604.md) +### [NU1605](reference/errors-and-warnings/NU1605.md) +### [NU1608](reference/errors-and-warnings/NU1608.md) +### [NU1701](reference/errors-and-warnings/NU1701.md) +### [NU1801](reference/errors-and-warnings/NU1801.md) +### [NU3000](reference/errors-and-warnings/NU3000.md) +### [NU3001](reference/errors-and-warnings/NU3001.md) +### [NU3002](reference/errors-and-warnings/NU3002.md) +### [NU3003](reference/errors-and-warnings/NU3003.md) +### [NU3004](reference/errors-and-warnings/NU3004.md) +### [NU3005](reference/errors-and-warnings/NU3005.md) +### [NU3006](reference/errors-and-warnings/NU3006.md) +### [NU3007](reference/errors-and-warnings/NU3007.md) +### [NU3008](reference/errors-and-warnings/NU3008.md) +### [NU3009](reference/errors-and-warnings/NU3009.md) +### [NU3010](reference/errors-and-warnings/NU3010.md) +### [NU3011](reference/errors-and-warnings/NU3011.md) +### [NU3012](reference/errors-and-warnings/NU3012.md) +### [NU3013](reference/errors-and-warnings/NU3013.md) +### [NU3014](reference/errors-and-warnings/NU3014.md) +### [NU3015](reference/errors-and-warnings/NU3015.md) +### [NU3016](reference/errors-and-warnings/NU3016.md) +### [NU3017](reference/errors-and-warnings/NU3017.md) +### [NU3018](reference/errors-and-warnings/NU3018.md) +### [NU3019](reference/errors-and-warnings/NU3019.md) +### [NU3020](reference/errors-and-warnings/NU3020.md) +### [NU3021](reference/errors-and-warnings/NU3021.md) +### [NU3022](reference/errors-and-warnings/NU3022.md) +### [NU3023](reference/errors-and-warnings/NU3023.md) +### [NU3025](reference/errors-and-warnings/NU3025.md) +### [NU3027](reference/errors-and-warnings/NU3027.md) +### [NU3028](reference/errors-and-warnings/NU3028.md) +### [NU3034](reference/errors-and-warnings/NU3034.md) +### [NU3040](reference/errors-and-warnings/NU3040.md) +### [NU5000](reference/errors-and-warnings/NU5000.md) +### [NU5001](reference/errors-and-warnings/NU5001.md) +### [NU5002](reference/errors-and-warnings/NU5002.md) +### [NU5003](reference/errors-and-warnings/NU5003.md) +### [NU5004](reference/errors-and-warnings/NU5004.md) +### [NU5005](reference/errors-and-warnings/NU5005.md) +### [NU5007](reference/errors-and-warnings/NU5007.md) +### [NU5008](reference/errors-and-warnings/NU5008.md) +### [NU5009](reference/errors-and-warnings/NU5009.md) +### [NU5010](reference/errors-and-warnings/NU5010.md) +### [NU5011](reference/errors-and-warnings/NU5011.md) +### [NU5012](reference/errors-and-warnings/NU5012.md) +### [NU5013](reference/errors-and-warnings/NU5013.md) +### [NU5014](reference/errors-and-warnings/NU5014.md) +### [NU5015](reference/errors-and-warnings/NU5015.md) +### [NU5016](reference/errors-and-warnings/NU5016.md) +### [NU5017](reference/errors-and-warnings/NU5017.md) +### [NU5018](reference/errors-and-warnings/NU5018.md) +### [NU5019](reference/errors-and-warnings/NU5019.md) +### [NU5020](reference/errors-and-warnings/NU5020.md) +### [NU5021](reference/errors-and-warnings/NU5021.md) +### [NU5022](reference/errors-and-warnings/NU5022.md) +### [NU5023](reference/errors-and-warnings/NU5023.md) +### [NU5024](reference/errors-and-warnings/NU5024.md) +### [NU5025](reference/errors-and-warnings/NU5025.md) +### [NU5026](reference/errors-and-warnings/NU5026.md) +### [NU5027](reference/errors-and-warnings/NU5027.md) +### [NU5028](reference/errors-and-warnings/NU5028.md) +### [NU5029](reference/errors-and-warnings/NU5029.md) +### [NU5030](reference/errors-and-warnings/NU5030.md) +### [NU5031](reference/errors-and-warnings/NU5031.md) +### [NU5032](reference/errors-and-warnings/NU5032.md) +### [NU5033](reference/errors-and-warnings/NU5033.md) +### [NU5034](reference/errors-and-warnings/NU5034.md) +### [NU5035](reference/errors-and-warnings/NU5035.md) +### [NU5100](reference/errors-and-warnings/NU5100.md) +### [NU5101](reference/errors-and-warnings/NU5101.md) +### [NU5102](reference/errors-and-warnings/NU5102.md) +### [NU5103](reference/errors-and-warnings/NU5103.md) +### [NU5104](reference/errors-and-warnings/NU5104.md) +### [NU5105](reference/errors-and-warnings/NU5105.md) +### [NU5106](reference/errors-and-warnings/NU5106.md) +### [NU5107](reference/errors-and-warnings/NU5107.md) +### [NU5108](reference/errors-and-warnings/NU5108.md) +### [NU5109](reference/errors-and-warnings/NU5109.md) +### [NU5110](reference/errors-and-warnings/NU5110.md) +### [NU5111](reference/errors-and-warnings/NU5111.md) +### [NU5112](reference/errors-and-warnings/NU5112.md) +### [NU5114](reference/errors-and-warnings/NU5114.md) +### [NU5115](reference/errors-and-warnings/NU5115.md) +### [NU5116](reference/errors-and-warnings/NU5116.md) +### [NU5117](reference/errors-and-warnings/NU5117.md) +### [NU5118](reference/errors-and-warnings/NU5118.md) +### [NU5119](reference/errors-and-warnings/NU5119.md) +### [NU5120](reference/errors-and-warnings/NU5120.md) +### [NU5121](reference/errors-and-warnings/NU5121.md) +### [NU5122](reference/errors-and-warnings/NU5122.md) +### [NU5123](reference/errors-and-warnings/NU5123.md) +### [NU5124](reference/errors-and-warnings/NU5124.md) +### [NU5125](reference/errors-and-warnings/NU5125.md) +### [NU5500](reference/errors-and-warnings/NU5500.md) ## Extensibility ### [NuGet Cross Platform Plugins](reference/extensibility/NuGet-Cross-Platform-Plugins.md) diff --git a/docs/consume-packages/Finding-and-Choosing-Packages.md b/docs/consume-packages/Finding-and-Choosing-Packages.md index efce700f9..9c625964f 100644 --- a/docs/consume-packages/Finding-and-Choosing-Packages.md +++ b/docs/consume-packages/Finding-and-Choosing-Packages.md @@ -96,6 +96,23 @@ At the same time, using a NuGet package means taking a dependency on it, so you > [!Note] > Always be mindful of a package's license terms, which you can see by selecting **License Info** on a package's listing page on nuget.org. If a package does not specify license terms, contact the package owner directly using the **Contact owners** link on the package page. Microsoft does not license any intellectual property to you from third party package providers and is not responsible for information provided by third parties. +## License URL deprecation +As we transition from [licenseUrl](../reference/nuspec#licenseurl) to [license](../reference/nuspec#license), some NuGet clients and NuGet feeds may not yet have the ability to surface licensing information in some cases. To maintain backward compatibility, the license URL points to this document which talks about how to retrieve the license information in such cases. + +If clicking on the license URL for a package brought you to this page, it implies the package contains a license file and +* You are connected to a feed that does not yet know how to interpret and surface the new license information to the client +**OR** +* You are using a client that does not yet know how to interpret and read the new license information that is potentially provided by the feed +**OR** +* A combination of both + +Here is how you could read the information contained in the license file inside the package: +1. Download the NuGet package, and unzip its contents to a folder. +1. Open the `.nuspec` file which would be at the root of that folder. +1. It should have a tag like `license\license.txt`. This implies the license file is named `license.txt` and it is inside a folder called `license` which would also be at the root of that folder. +1. Navigate to the `license` folder and open the `license.txt` file. + + ## Search Syntax NuGet package search works the same on nuget.org, from the NuGet CLI, and within the NuGet Package Manager extension in Visual Studio. In general, search is applied to keywords as well as package descriptions. diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index e1235d059..acbaad53e 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -70,27 +70,25 @@ Installation: | Feature | dotnet CLI | nuget CLI (Windows) | nuget CLI (Mono) | Visual Studio (Windows) | Visual Studio for Mac | | --- | --- | --- | --- | --- | --- | | Search packages | | ✔ | ✔ | ✔ | ✔ | -| Install/uninstall packages | ✔(1) | ✔(2) | ✔ | ✔ | ✔ | +| Install/uninstall packages | ✔ | ✔(1) | ✔ | ✔ | ✔ | | Update packages | ✔ | ✔ | | ✔ | ✔ | -| Restore packages | ✔ | ✔ | ✔(3) | ✔ | ✔ | +| Restore packages | ✔ | ✔ | ✔(2) | ✔ | ✔ | | Manage package feeds (sources) | | ✔ | ✔ | ✔ | ✔ | -| Manage packages on a feed | ✔(1) | ✔ | ✔ | | | +| Manage packages on a feed | ✔ | ✔ | ✔ | | | | Set API keys for feeds | | ✔ | ✔ | | | -| Create packages(4) | ✔ | ✔ | ✔(5) | ✔ | | -| Publish packages | ✔(1) | ✔ | ✔ | ✔ | | +| Create packages(3) | ✔ | ✔ | ✔(4) | ✔ | | +| Publish packages | ✔ | ✔ | ✔ | ✔ | | | Replicate packages | | ✔ | ✔ | | | | Manage *global-package* and cache folders | ✔ | ✔ | ✔ | | | | Manage NuGet configuration | | ✔ | ✔ | | | -(1) Packages on nuget.org only +(1) Does not affect project files; use `dotnet.exe` instead. -(2) Does not affect project files; use `dotnet.exe` instead. +(2) Works only with `packages.config` file and not with solution (`.sln`) files. -(3) Works only with `packages.config` file and not with solution (`.sln`) files. +(3) Various advanced package features are available through the CLI only as they aren't represented in the Visual Studio UI tools. -(4) Various advanced package features are available through the CLI only as they aren't represented in the Visual Studio UI tools. - -(5) Works with `.nuspec` files but not with project files. +(4) Works with `.nuspec` files but not with project files. ### Related topics diff --git a/docs/quickstart/install-and-use-a-package-in-visual-studio.md b/docs/quickstart/install-and-use-a-package-in-visual-studio.md index b49ce7c18..d86816c81 100644 --- a/docs/quickstart/install-and-use-a-package-in-visual-studio.md +++ b/docs/quickstart/install-and-use-a-package-in-visual-studio.md @@ -59,7 +59,7 @@ To install the package, you can use either the Package Manager UI or the Package ![Locating Newtonsoft.Json package](media/QS_Use-08-Console1.png) -1. Enter the command `Install-Package Newtonsoft.json` (see [Install-Package](../tools/ps-ref-install-package.md)). The console window shows output for the command. Errors typically indicate that the package isn't compatible with the project's target framework. +1. Enter the command `Install-Package Newtonsoft.Json` (see [Install-Package](../tools/ps-ref-install-package.md)). The console window shows output for the command. Errors typically indicate that the package isn't compatible with the project's target framework. ## Use the Newtonsoft.Json API in the app @@ -102,7 +102,7 @@ With the Newtonsoft.Json package in the project, you can call its `JsonConvert.S 1. Even though you added the Newtonsoft.Json package to the project, red squiggles appears under `JsonConvert` because you need a `using` statement at the top of the code file: ```cs - using Newtonsoft.json; + using Newtonsoft.Json; ``` 1. Build and run the app by pressing F5 or selecting **Debug > Start Debugging**: diff --git a/docs/reference/Errors-and-Warnings.md b/docs/reference/Errors-and-Warnings.md index 8095a0170..3604afdd2 100644 --- a/docs/reference/Errors-and-Warnings.md +++ b/docs/reference/Errors-and-Warnings.md @@ -14,7 +14,7 @@ In NuGet 4.3.0+, errors and warnings are numbered as described in this topic and The errors and warnings listed here are available only with [PackageReference-based](../consume-packages/package-references-in-project-files.md) projects and NuGet 4.3.0+. NuGet also honors MSBuild properties to suppress warnings or elevate them to errors. For more information, see [How to: Suppress Compiler Warnings](/visualstudio/ide/how-to-suppress-compiler-warnings) in the Visual Studio documentation. -**Errors** +## Errors | Group | Error Numbers | | --- | --- | @@ -24,8 +24,9 @@ The errors and warnings listed here are available only with [PackageReference-ba | NuGet internal errors | [NU1000](./errors-and-warnings/NU1000.md) | | Signed packages errors(creation and verification) | [NU3001](./errors-and-warnings/NU3001.md), [NU3004](./errors-and-warnings/NU3004.md), [NU3005](./errors-and-warnings/NU3005.md), [NU3008](./errors-and-warnings/NU3008.md), [NU3012](./errors-and-warnings/NU3012.md), [NU3028](./errors-and-warnings/NU3028.md), [NU3034](./errors-and-warnings/NU3034.md)| | Pack Errors | [NU5000](./errors-and-warnings/NU5000.md), [NU5001](./errors-and-warnings/NU5001.md), [NU5002](./errors-and-warnings/NU5002.md), [NU5003](./errors-and-warnings/NU5003.md), [NU5004](./errors-and-warnings/NU5004.md), [NU5005](./errors-and-warnings/NU5005.md), [NU5007](./errors-and-warnings/NU5007.md), [NU5008](./errors-and-warnings/NU5008.md), [NU5009](./errors-and-warnings/NU5009.md), [NU5010](./errors-and-warnings/NU5010.md), [NU5011](./errors-and-warnings/NU5011.md), [NU5012](./errors-and-warnings/NU5012.md), [NU5013](./errors-and-warnings/NU5013.md), [NU5014](./errors-and-warnings/NU5014.md), [NU5015](./errors-and-warnings/NU5015.md), [NU5016](./errors-and-warnings/NU5016.md), [NU5017](./errors-and-warnings/NU5017.md), [NU5018](./errors-and-warnings/NU5018.md), [NU5019](./errors-and-warnings/NU5019.md), [NU5020](./errors-and-warnings/NU5020.md), [NU5021](./errors-and-warnings/NU5021.md), [NU5022](./errors-and-warnings/NU5022.md), [NU5023](./errors-and-warnings/NU5023.md), [NU5024](./errors-and-warnings/NU5024.md), [NU5025](./errors-and-warnings/NU5025.md), [NU5026](./errors-and-warnings/NU5026.md), [NU5027](./errors-and-warnings/NU5027.md), [NU5028](./errors-and-warnings/NU5028.md), [NU5029](./errors-and-warnings/NU5029.md) +| License specific Pack Errors | [NU5030](./errors-and-warnings/NU5030.md), [NU5031](./errors-and-warnings/NU5031.md), [NU5032](./errors-and-warnings/NU5032.md), [NU5033](./errors-and-warnings/NU5033.md), [NU5034](./errors-and-warnings/NU5034.md), [NU5035](./errors-and-warnings/NU5035.md) -**Warnings** +## Warnings | Group | Warning numbers | | --- | --- | @@ -37,3 +38,4 @@ The errors and warnings listed here are available only with [PackageReference-ba | NuGet internal warnings | [NU1500](./errors-and-warnings/NU1500.md) | | Signed packages warnings(creation and verification) | [NU3000](./errors-and-warnings/NU3000.md), [NU3002](./errors-and-warnings/NU3002.md), [NU3003](./errors-and-warnings/NU3003.md), [NU3006](./errors-and-warnings/NU3006.md), [NU3007](./errors-and-warnings/NU3007.md), [NU3009](./errors-and-warnings/NU3009.md), [NU3010](./errors-and-warnings/NU3010.md), [NU3011](./errors-and-warnings/NU3011.md), [NU3013](./errors-and-warnings/NU3013.md), [NU3014](./errors-and-warnings/NU3014.md), [NU3015](./errors-and-warnings/NU3015.md), [NU3016](./errors-and-warnings/NU3016.md), [NU3017](./errors-and-warnings/NU3017.md), [NU3018](./errors-and-warnings/NU3018.md), [NU3019](./errors-and-warnings/NU3019.md), [NU3020](./errors-and-warnings/NU3020.md), [NU3021](./errors-and-warnings/NU3021.md), [NU3022](./errors-and-warnings/NU3022.md), [NU3023](./errors-and-warnings/NU3023.md), [NU3025](./errors-and-warnings/NU3025.md), [NU3027](./errors-and-warnings/NU3027.md), [NU3040](./errors-and-warnings/NU3040.md) | | Pack Warnings | [NU5100](./errors-and-warnings/NU5100.md), [NU5101](./errors-and-warnings/NU5101.md), [NU5102](./errors-and-warnings/NU5102.md), [NU5103](./errors-and-warnings/NU5103.md), [NU5104](./errors-and-warnings/NU5104.md), [NU5105](./errors-and-warnings/NU5105.md), [NU5106](./errors-and-warnings/NU5106.md), [NU5107](./errors-and-warnings/NU5107.md), [NU5108](./errors-and-warnings/NU5108.md), [NU5109](./errors-and-warnings/NU5109.md), [NU5110](./errors-and-warnings/NU5110.md), [NU5111](./errors-and-warnings/NU5111.md), [NU5112](./errors-and-warnings/NU5112.md), [NU5114](./errors-and-warnings/NU5114.md), [NU5115](./errors-and-warnings/NU5115.md), [NU5116](./errors-and-warnings/NU5116.md), [NU5117](./errors-and-warnings/NU5117.md), [NU5118](./errors-and-warnings/NU5118.md), [NU5119](./errors-and-warnings/NU5119.md), [NU5120](./errors-and-warnings/NU5120.md), [NU5121](./errors-and-warnings/NU5121.md), [NU5122](./errors-and-warnings/NU5122.md), [NU5123](./errors-and-warnings/NU5123.md), [NU5500](./errors-and-warnings/NU5500.md) +| License specific Pack Warnings | [NU5124](./errors-and-warnings/NU5124.md), [NU5125](./errors-and-warnings/NU5125.md) \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU1102.md b/docs/reference/errors-and-warnings/NU1102.md index e11cb9be1..c772fea16 100644 --- a/docs/reference/errors-and-warnings/NU1102.md +++ b/docs/reference/errors-and-warnings/NU1102.md @@ -18,4 +18,4 @@ f1_keywords: The package identifier is found but a version within the specified dependency range cannot be found on any of the sources. The range might be specified by a package and not the user. ### Solution -Edit the project file to correct the package version. Also check that the [NuGet configuration](../../consume-packages/Configuring-NuGet-Behavior.md) identifies the package sources your expect to be using. You may need to change the requeted version if this package is referenced by the project directly. \ No newline at end of file +Edit the project file to correct the package version. Also check that the [NuGet configuration](../../consume-packages/Configuring-NuGet-Behavior.md) identifies the package sources your expect to be using. You may need to change the requested version if this package is referenced by the project directly. From ffde9578c1e03231ab7dcb2730e388396a9f423f Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Mon, 3 Dec 2018 11:20:27 -0800 Subject: [PATCH 1016/2943] Update NU5034.md (#1201) --- docs/reference/errors-and-warnings/NU5034.md | 23 +++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/docs/reference/errors-and-warnings/NU5034.md b/docs/reference/errors-and-warnings/NU5034.md index 9aac063ea..1db56fd9e 100644 --- a/docs/reference/errors-and-warnings/NU5034.md +++ b/docs/reference/errors-and-warnings/NU5034.md @@ -1,24 +1,21 @@ --- -title: NuGet Error NU5029 -description: NU5029 Error code -author: mishra14 -ms.author: karann -ms.date: 8/8/2018 +title: NuGet Error NU5034 +description: NU5034 Error code +author: nkolev92 +ms.date: 11/15/2018 ms.topic: reference -ms.reviewer: anangaur +ms.reviewer: karann f1_keywords: - - NU5029 + - NU5034 --- -# NuGet Error NU5029 -
    NuspecProperties should be in the form of 'key1=value1;key2=value2'.
    +# NuGet Error NU5034 +
    The PackageLicenseExpressionVersion string '2.0.0-InvalidSystemVersion' is not a valid version.
    ### Issue -Properties passed to `msbuild /t:pack /p:NuspecFile=project.nuspec` command were not in the right format to be parsed. - +The PackageLicenseExpressionVersion string is a System.Version. That means no labels are allowed. ### Solution -Please pass any nuspec properties using `/p:NuspecProperties` in the format of `key=value`. For instance `msbuild /t:pack /p:NuspecFile=project.nuspec /p:NuspecProperties="configuration=release"` - +Change the property value to `2.0.0` From 67a8631aeaf9b43e2e12734530e5dd21127bd380 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 3 Dec 2018 16:41:17 -0800 Subject: [PATCH 1017/2943] fixing broken license sample links --- docs/reference/msbuild-targets.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index 586b84bdb..b00c6df38 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -187,7 +187,7 @@ If a file of type Compile, is outside the project folder, then it's just added t ### Packing a license expression or a license file When using a license expression, the PackageLicenseExpression property should be used. -[License expression sample](#https://github.com/NuGet/Samples/tree/master/PackageLicenseExpressionExample). +[License expression sample](https://github.com/NuGet/Samples/tree/master/PackageLicenseExpressionExample). When packing a license file, you need to use PackageLicenseFile property to specify the package path, relative to the root of the package. In addition, you need to make sure that the file is included in the package. For example: @@ -200,7 +200,7 @@ When packing a license file, you need to use PackageLicenseFile property to spec ``` -[License life sample](#https://github.com/NuGet/Samples/tree/master/PackageLicenseFileExample). +[License file sample](https://github.com/NuGet/Samples/tree/master/PackageLicenseFileExample). ### IsTool From af58d59669674c3bc0a230d5764e37020a9a3f1e Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 3 Dec 2018 16:45:10 -0800 Subject: [PATCH 1018/2943] master -> live (#1205) * Fix typo in analyzers-conventions.md (#1039) (#1040) * metadata updates (#1044) * metadata updates * fix warning * some additional changes * Update NU3028.md (#1041) * Update NU3028.md https://github.com/NuGet/Home/issues/7173 * Update NU3028.md * Update NU3028.md * Update cli-ref-environment-variables.md * Don't call .Net Framework "full" * Added the versioning for Revocation mode functionality * Update TOC.md * Karann 4.8 relnotes (#1055) * Create NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update NuGet-4.8-RTM.md * Update TOC.md * Update NuGet-Cross-Platform-Authentication-Plugin.md * Update Index.md * Update Supporting-Multiple-Target-Frameworks.md * Update Package-restore-troubleshooting.md (#1088) * Update Supporting-Multiple-Target-Frameworks.md (#1086) * Update Creating-a-Package.md (#1084) * Update nuspec.md (#1065) * Replace namespaces with prefixes * Be consistent about namespace/prefix reservation * Update the details for IsImplicitlyDefined packages (#1067) * Update the details for IsImplicitlyDefined packages * Update Package-Manager-UI.md * Update Package-Manager-UI.md * Update Package-Manager-UI.md * PR feedback * Create PackageReference-with-packages-lock-file.md (#1100) * Create PackageReference-with-packages-lock-file.md * Update PackageReference-with-packages-lock-file.md * Update PackageReference-with-packages-lock-file.md * Fixes #1085 (#1099) * ; -> : (#1098) * Revert "Create PackageReference-with-packages-lock-file.md" (#1101) * Revert "; -> : (#1098)" This reverts commit 6ffe30a427c5a2109958d945d48e48e296fd3178. * Revert "Fixes #1085 (#1099)" This reverts commit b9b6c2f13a073918c1650a65be9fe673c1104b70. * Revert "Create PackageReference-with-packages-lock-file.md (#1100)" This reverts commit 79f240d7433c0ac4d4fd88e7e8ab7f93c62227c4. * Update Create-UI-Controls.md * Update TOC.md (#1125) fixes #1124 Remove the link to docs for creating .NET Standard packages in VS2015, since .NET Core tooling was only pre-release in VS2015. Using the dotnet CLI is recommended over VS2015, if VS2017 can't be used for some reason. * Update Package-References-in-Project-Files.md (#1119) * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Update Package-References-in-Project-Files.md * Replaced staging.nuget.org with int.nugettest.org (#1132) The staging.nuget.org is deprecated and it is recommended to switch to int.nugettest.org (see https://github.com/NuGet/NuGetGallery/issues/5627). * staging.nuget.org has been deprecated (#1131) See https://github.com/NuGet/NuGetGallery/issues/5627. * Update Overview-and-Workflow.md (#1130) * Update Overview-and-Workflow.md Update styling and typo in image caption as a correction for #1129 * Update Overview-and-Workflow.md * Update Package-restore-troubleshooting.md (#1123) Add missing word. * Add files via upload * Update tool box icon spec (#1149) * Update tool box icon spec * Update Create-UI-Controls.md * Update Create-UI-Controls.md * CC74600: Unnecessarily nested lists (#1091) Hello, @karann-msft, This proposed file change comes from https://github.com/NuGet/docs.microsoft.com-nuget.es-es/pull/4 . Could you review this contribution and help to merge if agreed? Many thanks in advance. * fix: typo in authors token (#1120) Based on issue #1072, I've corrected the docs in the appropriate place. * Fixed typo (#1117) Corrected the spelling of 'delimeters' to delimiters * Grammar (#1113) fixed some grammatical errors * Revert "CC74600: Unnecessarily nested lists (#1091)" (#1152) This reverts commit 1c8db5f63041aac6668f56d0a33b60e0a1fdd05c. * Fixed formatting for note (#1090) * Fix erroneous extra lines in PackageReference documentation (#1153) This removes some seemingly unintended extra lines introduced by #1119. * Fixed typo (#1154) * add configFile option for nugget pack (#1115) add missing -ConfigFile option for nugget pack * Updated what-is-nuget.md to reflect Issue #1111 (#1114) Updated Visual Studio Team System to Azure DevOps to reflect Issue #1111 * Add documentation for client policies updates * fix link issues * Add symbols docs. (#1128) * Add symbols docs. * Updates * Update Symbol-Packages-V2.md * Update Symbol-Packages-V2.md Adding validation info to publish page for Symbols packages. * Feedback * Update * Update * Fix a broken link. * Feedback * Update symbol-package-publish-resource.md * Update Symbol-Packages-V2.md * Feedback * Feedback * Update TOC.md * Rename Symbol-Packages-V2.md to Symbol-Packages-snupkg.md * Update Symbol-Packages.md * Update Symbol-Packages.md * Update Symbol-Packages-snupkg.md * Update Symbol-Packages-snupkg.md * Update Symbol-Packages-snupkg.md * Update cli-ref-pack.md * Update cli-ref-pack.md * Update Symbol-Packages-snupkg.md * Update symbol-package-publish-resource.md * address feedback * Specify that sync deletes certs * Add list sample output * license docs (#1168) * Update Creating-a-Package.md * Update nuspec.md * Update nuspec.md * Update nuspec.md * Update nuspec.md * Update Creating-a-Package.md * Update nuspec.md * Update Creating-a-Package.md * Spellings (#1171) Thank you for your contribution! * Add Sleet to hosting-packages doc (#1166) * Fix snupkg documentation (#1174) The msbuild property is `SymbolPackageFormat`. See: https://github.com/NuGet/NuGet.Client/blob/3c9b61826814dc800a2a295f0985ce4f295483d6/src/NuGet.Core/NuGet.Build.Tasks.Pack/NuGet.Build.Tasks.Pack.targets#L42 * Fix spellings (#1172) * fix formatting in Package-References-in-Project-Files.md (#1182) Fix formatting/typo in the first paragraph. * typo on dependencies in locking doc (#1175) * Improve sentences (#1181) * Improve sentences * Add license warnings and errors (#1173) * update docs * address feedback * fix the wording of NU5035 * add samples * Clarify what kind of version strings are in registration and catalog (#1185) * Change MSBuild arguments to hyphen format (#1167) * 4.9.1 relnotes (#1177) * Create NuGet-4.9-RTM.md * Update Index.md * Update TOC.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md tweaks to release notes * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * Update NuGet-4.9-RTM.md * updates to the error and warning list (#1191) * fix capitilisation of Newtonsoft.Json (#1194) fixes #1193 * Fixed minor typo (#1192) Fixed 'requested' * Fix more important capitlisation of Newtonsoft.Json (#1195) properly fixes #1193 * Update install-nuget-client-tools.md (#1189) * Update Finding-and-Choosing-Packages.md * Update Finding-and-Choosing-Packages.md * Update NU5034.md (#1201) * fixing broken license sample links --- docs/reference/errors-and-warnings/NU5034.md | 23 +++++++++----------- docs/reference/msbuild-targets.md | 4 ++-- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/docs/reference/errors-and-warnings/NU5034.md b/docs/reference/errors-and-warnings/NU5034.md index 9aac063ea..1db56fd9e 100644 --- a/docs/reference/errors-and-warnings/NU5034.md +++ b/docs/reference/errors-and-warnings/NU5034.md @@ -1,24 +1,21 @@ --- -title: NuGet Error NU5029 -description: NU5029 Error code -author: mishra14 -ms.author: karann -ms.date: 8/8/2018 +title: NuGet Error NU5034 +description: NU5034 Error code +author: nkolev92 +ms.date: 11/15/2018 ms.topic: reference -ms.reviewer: anangaur +ms.reviewer: karann f1_keywords: - - NU5029 + - NU5034 --- -# NuGet Error NU5029 -
    NuspecProperties should be in the form of 'key1=value1;key2=value2'.
    +# NuGet Error NU5034 +
    The PackageLicenseExpressionVersion string '2.0.0-InvalidSystemVersion' is not a valid version.
    ### Issue -Properties passed to `msbuild /t:pack /p:NuspecFile=project.nuspec` command were not in the right format to be parsed. - +The PackageLicenseExpressionVersion string is a System.Version. That means no labels are allowed. ### Solution -Please pass any nuspec properties using `/p:NuspecProperties` in the format of `key=value`. For instance `msbuild /t:pack /p:NuspecFile=project.nuspec /p:NuspecProperties="configuration=release"` - +Change the property value to `2.0.0` diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index 586b84bdb..b00c6df38 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -187,7 +187,7 @@ If a file of type Compile, is outside the project folder, then it's just added t ### Packing a license expression or a license file When using a license expression, the PackageLicenseExpression property should be used. -[License expression sample](#https://github.com/NuGet/Samples/tree/master/PackageLicenseExpressionExample). +[License expression sample](https://github.com/NuGet/Samples/tree/master/PackageLicenseExpressionExample). When packing a license file, you need to use PackageLicenseFile property to specify the package path, relative to the root of the package. In addition, you need to make sure that the file is included in the package. For example: @@ -200,7 +200,7 @@ When packing a license file, you need to use PackageLicenseFile property to spec ``` -[License life sample](#https://github.com/NuGet/Samples/tree/master/PackageLicenseFileExample). +[License file sample](https://github.com/NuGet/Samples/tree/master/PackageLicenseFileExample). ### IsTool From 5c3bad6351dfd1c32bfddd3bdbdb09151637d517 Mon Sep 17 00:00:00 2001 From: Pascal Berger Date: Tue, 4 Dec 2018 18:00:25 +0100 Subject: [PATCH 1019/2943] Replace Team Services with Azure DevOps (#1196) --- docs/policies/NuGet-FAQ.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/policies/NuGet-FAQ.md b/docs/policies/NuGet-FAQ.md index 088b5f531..a4ca0a28a 100644 --- a/docs/policies/NuGet-FAQ.md +++ b/docs/policies/NuGet-FAQ.md @@ -34,7 +34,7 @@ For more information, see [Finding and choosing packages](../consume-packages/fi - Visual Studio on Windows supports the [Package Manager UI](../tools/package-manager-ui.md) and the [Package Manager Console](../tools/package-manager-console.md). - Visual Studio for Mac has built-in NuGet capabilities as described on [Including a NuGet package in your project](/visualstudio/mac/nuget-walkthrough). - Visual Studio Code (all platforms) does not have any direct NuGet integration. Use the [NuGet CLI](../tools/nuget-exe-cli-reference.md) or the [dotnet CLI](../tools/dotnet-commands.md). -- Visual Studio Team Services provides [a build step to restore NuGet packages](/vsts/build-release/tasks/package/nuget). You can also [host private NuGet package feeds on Team Services](https://www.visualstudio.com/docs/package/nuget/publish). +- Azure DevOps provides [a build step to restore NuGet packages](/vsts/build-release/tasks/package/nuget). You can also [host private NuGet package feeds on Azure DevOps](https://docs.microsoft.com/azure/devops/artifacts/nuget/publish). **How do I check the exact version of the NuGet tools that are installed?** @@ -177,7 +177,7 @@ We encourage the NuGet community to work together to resolve any disputes that m **Is it recommended to upload my test packages to nuget.org?** -For test purposes, you can use [int.nugettest.org](https://int.nugettest.org), or alternative public NuGet servers like [myget.org](https://myget.org) or [Visual Studio Team Services](https://blogs.msdn.microsoft.com/visualstudioalm/2015/08/27/announcing-package-management-support-for-vsotfs/). +For test purposes, you can use [int.nugettest.org](https://int.nugettest.org), or alternative public NuGet servers like [myget.org](https://myget.org) or [Azure DevOps](https://blogs.msdn.microsoft.com/visualstudioalm/2015/08/27/announcing-package-management-support-for-vsotfs/). Note that packages uploaded to int.nugettest.org may not be preserved. From 36466b6fd1c68048a71226feba927895bc2a326e Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 5 Dec 2018 14:44:14 -0800 Subject: [PATCH 1020/2943] final updates --- .../installing-signed-packages.md | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/docs/consume-packages/installing-signed-packages.md b/docs/consume-packages/installing-signed-packages.md index 218dbacd1..7d18ff043 100644 --- a/docs/consume-packages/installing-signed-packages.md +++ b/docs/consume-packages/installing-signed-packages.md @@ -16,26 +16,35 @@ Signed packages don't require any specific action to be installed; however, if t ## Configure package signature requirements -*NuGet 4.9.0+ and Visual Studio version 15.9 and later on Windows* +> [!Note] +> Requires NuGet 4.9.0+ and Visual Studio version 15.9 and later on Windows -You can configure how NuGet clients validate package signatures by setting the `signatureValidationMode` to `require`. +You can configure how NuGet clients validate package signatures by setting the `signatureValidationMode` to `require` in the [nuget.config](../reference/nuget-config-file) file using the [`nuget config`](../tools/cli-ref-config) command. + +```cmd +nuget.exe config -set signatureValidationMode=require +``` ```xml - + ``` -This mode will verify that all packages are signed by any of the certificates trusted in the `nuget.config` file. This file allows you to specify which authors and/or repositories are trusted based on the certificate's fingerprint. +This mode will verify that all packages are signed by any of the certificates trusted in the `nuget.config` file. This file allows you to specify which authors and/or repositories are trusted based on the certificate's fingerprint. ### Trust package author -To trust packages based on the author signature use the `authors` element: +To trust packages based on the author signature use the [`trusted-signers`](..tools/cli-ref-trusted-signers) command to set the `author` property in the nuget.config. + +```cmd +nuget.exe trusted-signers Add -Name MyCompanyCert -CertificateFingerprint CE40881FF5F0AD3E58965DA20A9F571EF1651A56933748E1BF1C99E537C4E039 -FingerprintAlgorithm SHA256 +``` ```xml - + ``` @@ -73,9 +82,11 @@ Repository signatures include additional metadata to determine the owners of the
    ``` +If a package has multiple owners, and any one of those owners is in the trusted list, the package installation will succeed. + ### Untrusted Root certificates -In some situations you may want to enable signing and verification using certificates that do not chain to a trusted root in the local machine. You can use the `allowUntrustedRoot` attribute to customize this behavior. +In some situations you may want to enable verification using certificates that do not chain to a trusted root in the local machine. You can use the `allowUntrustedRoot` attribute to customize this behavior. ### Sync repository certificates From c7385fea7095068acf5f6feacc8ce55dc82be278 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 5 Dec 2018 16:55:27 -0800 Subject: [PATCH 1021/2943] Update cli-ref-trusted-signers.md --- docs/tools/cli-ref-trusted-signers.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/tools/cli-ref-trusted-signers.md b/docs/tools/cli-ref-trusted-signers.md index ec987b5da..f112ec9a9 100644 --- a/docs/tools/cli-ref-trusted-signers.md +++ b/docs/tools/cli-ref-trusted-signers.md @@ -10,7 +10,7 @@ ms.reviewer: rmpablos # trusted-signers command (NuGet CLI) -**Applies to:** package consumption • **Supported versions:** 4.9+ +**Applies to:** package consumption • **Supported versions:** 4.9.1+ Gets or sets trusted signers to the NuGet configuration. For additional usage, see [Configuring NuGet Behavior](../consume-packages/configuring-nuget-behavior.md). For details on how the nuget.config schema looks like, refer to the [NuGet config file reference](../reference/nuget-config-file.md). @@ -132,4 +132,4 @@ nuget trusted-signers Add -Repository .\..\MyRepositorySignedPackage.nupkg -Name nuget-trusted-signers Remove -Name TrustedRepo nuget-trusted-signers Sync -Name TrustedRepo -``` \ No newline at end of file +``` From acd87d5af09637dcdaf40feae2633a6858ad97ef Mon Sep 17 00:00:00 2001 From: Ashish Jain Date: Fri, 7 Dec 2018 12:57:13 -0800 Subject: [PATCH 1022/2943] Update msbuild-targets.md --- docs/reference/msbuild-targets.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index b00c6df38..a7723f675 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -67,6 +67,7 @@ Note that the `Owners` and `Summary` properties from `.nuspec` are not supported ### pack target inputs - IsPackable +- SuppressDependenciesWhenPacking - PackageVersion - PackageId - Authors @@ -102,6 +103,10 @@ Note that the `Owners` and `Summary` properties from `.nuspec` are not supported ## pack scenarios +### Suppress dependencies + +To suppress package dependencies from generated NuGet package, set `SuppressDependenciesWhenPacking` to `true` which will allow skipping all the dependencies from generated nupkg file. + ### PackageIconUrl As part of the change for [NuGet Issue 352](https://github.com/NuGet/Home/issues/352), `PackageIconUrl` will eventually be changed to `PackageIconUri` and can be relative path to a icon file which will included at the root of the resulting package. From 84a517050264b73c5a239fd073ed8d1e87fea9ee Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Mon, 10 Dec 2018 11:30:19 -0800 Subject: [PATCH 1023/2943] Update Package-References-in-Project-Files.md --- docs/consume-packages/Package-References-in-Project-Files.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/consume-packages/Package-References-in-Project-Files.md b/docs/consume-packages/Package-References-in-Project-Files.md index 1ee286cd4..112aebadb 100644 --- a/docs/consume-packages/Package-References-in-Project-Files.md +++ b/docs/consume-packages/Package-References-in-Project-Files.md @@ -150,7 +150,7 @@ Conditions can also be applied at the `ItemGroup` level and will apply to all ch ``` ## Locking dependencies -*This feature is available with NuGet **4.9** or above and with Visual Studio 2017 **15.9 Preview 5** or above.* +*This feature is available with NuGet **4.9** or above and with Visual Studio 2017 **15.9** or above.* Input to NuGet restore is a set of Package References 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: From e94e3b818297b0ee5b0d471a1aae36088bb176d0 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Mon, 10 Dec 2018 11:53:18 -0800 Subject: [PATCH 1024/2943] Update Package-References-in-Project-Files.md --- docs/consume-packages/Package-References-in-Project-Files.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/consume-packages/Package-References-in-Project-Files.md b/docs/consume-packages/Package-References-in-Project-Files.md index 112aebadb..8b7bd5e8a 100644 --- a/docs/consume-packages/Package-References-in-Project-Files.md +++ b/docs/consume-packages/Package-References-in-Project-Files.md @@ -209,7 +209,7 @@ 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. ### Make lock file part of your source repository -If you are building an application, an executable and the project in question is at the end 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. From dcb5ab9d9fad2a17dc2ef157a36bd3bcdccf5fec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Mon, 10 Dec 2018 12:20:17 -0800 Subject: [PATCH 1025/2943] Document the repository signing v4.9.0 service index resource (#1204) Part of https://github.com/NuGet/Engineering/issues/1778 --- docs/api/repository-signatures-resource.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/api/repository-signatures-resource.md b/docs/api/repository-signatures-resource.md index 5a6cf6f71..951692d74 100644 --- a/docs/api/repository-signatures-resource.md +++ b/docs/api/repository-signatures-resource.md @@ -19,9 +19,6 @@ whether a repository signed package has been tampered or has an unexpected signi The resource used for fetching this repository signature information is the `RepositorySignatures` resource found in the [service index](service-index.md). -> [!Note] -> NuGet.org will start announcing the `RepositorySignatures` resource in the near future. - ## Versioning The following `@type` value is used: @@ -29,6 +26,7 @@ The following `@type` value is used: @type value | Notes -------------------------- | ----- RepositorySignatures/4.7.0 | The initial release +RepositorySignatures/4.9.0 | Allows enabling `allRepositorySigned` ## Base URL @@ -63,15 +61,19 @@ The following request fetches the repository signatures index. The repository signature index is a JSON document that contains an object with the following properties: -Name | Type | Required -------------------- | ---------------- | -------- -allRepositorySigned | boolean | yes -signingCertificates | array of objects | yes +Name | Type | Required | Notes +------------------- | ---------------- | -------- | ----- +allRepositorySigned | boolean | yes | Must be `false` on 4.7.0 resource +signingCertificates | array of objects | yes | The `allRepositorySigned` boolean is set to false if the package source has some packages that have no repository signature. If the boolean is set to true, all packages available on the source must have a repository signature produced by one of the signing certificates mentioned in `signingCertificates`. +> [!Warning] +> The `allRepositorySigned` boolean must be false on the 4.7.0 resource. NuGet v4.7 and v4.8 clients cannot install packages +> from sources that have `allRepositorySigned` set to true. + There should be one or more signing certificates in the `signingCertificates` array if the `allRepositorySigned` boolean is set to true. If the array is empty and `allRepositorySigned` is set to true, all packages from the source should be considered invalid, although a client policy may still allow consumption of packages. Each element in this array is a From 4e1f6e3fbc5bd61115a383db44aa50275101d420 Mon Sep 17 00:00:00 2001 From: Andrei Grigorev Date: Mon, 10 Dec 2018 17:48:34 -0800 Subject: [PATCH 1026/2943] Removed the mention of licenseExressionVersion since it is not emitted by any tools in pipeline at this moment. --- docs/api/registration-base-url-resource.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/api/registration-base-url-resource.md b/docs/api/registration-base-url-resource.md index 887659273..64c842564 100644 --- a/docs/api/registration-base-url-resource.md +++ b/docs/api/registration-base-url-resource.md @@ -167,8 +167,7 @@ description | string | no | iconUrl | string | no | id | string | yes | The ID of the package licenseUrl | string | no | -licenseExpression | string | no | The license expression equivalent to the one specified in the `<license type='expression'>` node in the package manifest. -licenseExpressionVersion | string | no | +licenseExpression | string | no | The license expression specified in the package manifest. listed | boolean | no | Should be considered as listed if absent minClientVersion | string | no | projectUrl | string | no | @@ -183,10 +182,12 @@ The `dependencyGroups` property is an array of objects representing the dependen framework. If the package has no dependencies, the `dependencyGroups` property is missing, an empty array, or the `dependencies` property of all groups is empty or missing. -`licenseExpression` and `licenseExpressionVersion` property may only appear in the `catalogEntry` if package's manifest -contains `<license type='expression'>` node. The value of the `licenseExpression` property complies with NuGet's -license expression syntax. The value of the `licenseExpressionVersion` property is a `System.Version` string that -indicates the version of the expression syntax used. If it is omitted, it should be assumed to be `1.0`. +`licenseExpression` property may only have value specified if package's manifest +contains `<license type='expression'>` element. The value of the `licenseExpression` property complies with +[SPDX license expression syntax](https://spdx.org/spdx-specification-21-web-version#h.jxpfx0ykyb60). + +`licenseExpression` property may have an empty value or property may not exist under `catalogEntry`. In both +cases it is an indication that the original package did not have license expression specified. #### Package dependency group From 9952ee730273b8e02b13f163dfbbe845fed38b0d Mon Sep 17 00:00:00 2001 From: Andrei Grigorev Date: Mon, 10 Dec 2018 17:53:14 -0800 Subject: [PATCH 1027/2943] minor fixes --- docs/api/registration-base-url-resource.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/api/registration-base-url-resource.md b/docs/api/registration-base-url-resource.md index 64c842564..80e1b3756 100644 --- a/docs/api/registration-base-url-resource.md +++ b/docs/api/registration-base-url-resource.md @@ -182,11 +182,11 @@ The `dependencyGroups` property is an array of objects representing the dependen framework. If the package has no dependencies, the `dependencyGroups` property is missing, an empty array, or the `dependencies` property of all groups is empty or missing. -`licenseExpression` property may only have value specified if package's manifest +`licenseExpression` property may only have value specified if the package manifest contains `<license type='expression'>` element. The value of the `licenseExpression` property complies with [SPDX license expression syntax](https://spdx.org/spdx-specification-21-web-version#h.jxpfx0ykyb60). -`licenseExpression` property may have an empty value or property may not exist under `catalogEntry`. In both +`licenseExpression` property may an empty string or property may not exist under `catalogEntry`. In both cases it is an indication that the original package did not have license expression specified. #### Package dependency group From 0c5cefeace0c292ad590af034312c777cff89dc9 Mon Sep 17 00:00:00 2001 From: Andrei Grigorev Date: Tue, 11 Dec 2018 17:23:03 -0800 Subject: [PATCH 1028/2943] Few missed words --- docs/api/registration-base-url-resource.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/api/registration-base-url-resource.md b/docs/api/registration-base-url-resource.md index 80e1b3756..fc058f6f6 100644 --- a/docs/api/registration-base-url-resource.md +++ b/docs/api/registration-base-url-resource.md @@ -182,12 +182,12 @@ The `dependencyGroups` property is an array of objects representing the dependen framework. If the package has no dependencies, the `dependencyGroups` property is missing, an empty array, or the `dependencies` property of all groups is empty or missing. -`licenseExpression` property may only have value specified if the package manifest +The `licenseExpression` property may only have value specified if the package manifest contains `<license type='expression'>` element. The value of the `licenseExpression` property complies with [SPDX license expression syntax](https://spdx.org/spdx-specification-21-web-version#h.jxpfx0ykyb60). -`licenseExpression` property may an empty string or property may not exist under `catalogEntry`. In both -cases it is an indication that the original package did not have license expression specified. +The `licenseExpression` property may be an empty string or property may not exist under `catalogEntry`. In both +cases it is an indication that the original package did not have a license expression specified. #### Package dependency group From a7a59d05236457e26e51b4500873322197e42f0f Mon Sep 17 00:00:00 2001 From: Andrei Grigorev Date: Thu, 13 Dec 2018 16:24:01 -0800 Subject: [PATCH 1029/2943] Missing article --- docs/api/registration-base-url-resource.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api/registration-base-url-resource.md b/docs/api/registration-base-url-resource.md index fc058f6f6..23c2b88d4 100644 --- a/docs/api/registration-base-url-resource.md +++ b/docs/api/registration-base-url-resource.md @@ -182,7 +182,7 @@ The `dependencyGroups` property is an array of objects representing the dependen framework. If the package has no dependencies, the `dependencyGroups` property is missing, an empty array, or the `dependencies` property of all groups is empty or missing. -The `licenseExpression` property may only have value specified if the package manifest +The `licenseExpression` property may only have a value specified if the package manifest contains `<license type='expression'>` element. The value of the `licenseExpression` property complies with [SPDX license expression syntax](https://spdx.org/spdx-specification-21-web-version#h.jxpfx0ykyb60). From 63dfbf5197298feceb905fb9380567432f87fa74 Mon Sep 17 00:00:00 2001 From: Martin Koudelka <42440351+v-makoud@users.noreply.github.com> Date: Fri, 14 Dec 2018 18:52:39 +0100 Subject: [PATCH 1030/2943] C55619: Moving space after asterisk in "*any *" as "*any* " (#1225) Hello @karann-msft, Translator has reported possible source content issue. Please review and merge the suggested proposed file change to avoid this error. If you make related fix in another PR, then share your PR number, so we can confirm and close this PR. Many thanks in advance. --- docs/create-packages/Prerelease-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Prerelease-Packages.md b/docs/create-packages/Prerelease-Packages.md index 2168d3db5..b4d67783f 100644 --- a/docs/create-packages/Prerelease-Packages.md +++ b/docs/create-packages/Prerelease-Packages.md @@ -59,7 +59,7 @@ In this convention, each version has three parts, `Major.Minor.Patch`, with the - `Minor`: New features, but backwards compatible - `Patch`: Backwards compatible bug fixes only -Pre-release versions are then denoted by appending a hyphen and a string after the patch number. Technically speaking, you can use *any *string after the hyphen and NuGet will treat the package as pre-release. NuGet then displays the full version number in the applicable UI, leaving consumers to interpret the meaning for themselves. +Pre-release versions are then denoted by appending a hyphen and a string after the patch number. Technically speaking, you can use *any* string after the hyphen and NuGet will treat the package as pre-release. NuGet then displays the full version number in the applicable UI, leaving consumers to interpret the meaning for themselves. With this in mind, it's generally good to follow recognized naming conventions such as the following: From 28f0bb7f5cd701aaab15bd9502235dd5ce927ded Mon Sep 17 00:00:00 2001 From: Andrei Grigorev Date: Fri, 14 Dec 2018 16:20:09 -0800 Subject: [PATCH 1031/2943] reduced the amount of text --- docs/api/registration-base-url-resource.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/docs/api/registration-base-url-resource.md b/docs/api/registration-base-url-resource.md index 23c2b88d4..577e3a3b7 100644 --- a/docs/api/registration-base-url-resource.md +++ b/docs/api/registration-base-url-resource.md @@ -167,7 +167,7 @@ description | string | no | iconUrl | string | no | id | string | yes | The ID of the package licenseUrl | string | no | -licenseExpression | string | no | The license expression specified in the package manifest. +licenseExpression | string | no | listed | boolean | no | Should be considered as listed if absent minClientVersion | string | no | projectUrl | string | no | @@ -182,13 +182,9 @@ The `dependencyGroups` property is an array of objects representing the dependen framework. If the package has no dependencies, the `dependencyGroups` property is missing, an empty array, or the `dependencies` property of all groups is empty or missing. -The `licenseExpression` property may only have a value specified if the package manifest -contains `<license type='expression'>` element. The value of the `licenseExpression` property complies with +The value of the `licenseExpression` property complies with [SPDX license expression syntax](https://spdx.org/spdx-specification-21-web-version#h.jxpfx0ykyb60). -The `licenseExpression` property may be an empty string or property may not exist under `catalogEntry`. In both -cases it is an indication that the original package did not have a license expression specified. - #### Package dependency group Each dependency group object has the following properties: From cb1dbcbd1dc401d7990aec85765a2fc4fd8adadc Mon Sep 17 00:00:00 2001 From: Andrei Grigorev Date: Fri, 14 Dec 2018 16:35:26 -0800 Subject: [PATCH 1032/2943] Changed documentation link for license expressions --- docs/api/registration-base-url-resource.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api/registration-base-url-resource.md b/docs/api/registration-base-url-resource.md index 577e3a3b7..266a1ccea 100644 --- a/docs/api/registration-base-url-resource.md +++ b/docs/api/registration-base-url-resource.md @@ -183,7 +183,7 @@ framework. If the package has no dependencies, the `dependencyGroups` property i `dependencies` property of all groups is empty or missing. The value of the `licenseExpression` property complies with -[SPDX license expression syntax](https://spdx.org/spdx-specification-21-web-version#h.jxpfx0ykyb60). +[NuGet license expression syntax](https://docs.microsoft.com/en-us/nuget/reference/nuspec#license). #### Package dependency group From 88a1a1569ec6e0ad9c9f7046c30a78844bb9eb8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Mon, 17 Dec 2018 21:57:26 -0800 Subject: [PATCH 1033/2943] Fix spelling --- docs/create-packages/Symbol-Packages-snupkg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Symbol-Packages-snupkg.md b/docs/create-packages/Symbol-Packages-snupkg.md index bf608ce5f..460db67c4 100644 --- a/docs/create-packages/Symbol-Packages-snupkg.md +++ b/docs/create-packages/Symbol-Packages-snupkg.md @@ -27,7 +27,7 @@ ms.reviewer: ## Creating a symbol package -A snupkg symbol package can be created from a .nuspec file or from a .csproj file. NuGet.exe and dotnet.exe are both supported. When the options ```-Symbols -SymbolPackageFormat snupkg``` are used on the nuget.exe pack command a .snupkg file will be created in additon to the .nupkg file. +A snupkg symbol package can be created from a .nuspec file or from a .csproj file. NuGet.exe and dotnet.exe are both supported. When the options ```-Symbols -SymbolPackageFormat snupkg``` are used on the nuget.exe pack command a .snupkg file will be created in addition to the .nupkg file. Example commands to create .snupkg files ``` From 2910792682d0bbd101a2b8512be46e90f3bbdc33 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Wed, 19 Dec 2018 14:00:25 -0800 Subject: [PATCH 1034/2943] Fix the license file packing guidance --- docs/reference/msbuild-targets.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index b00c6df38..525b25837 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -197,7 +197,7 @@ When packing a license file, you need to use PackageLicenseFile property to spec - + ``` [License file sample](https://github.com/NuGet/Samples/tree/master/PackageLicenseFileExample). From 77ef67c83a1c97ea7b33c9e215c37f8459be9644 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Wed, 19 Dec 2018 14:02:55 -0800 Subject: [PATCH 1035/2943] Update NU5030.md --- docs/reference/errors-and-warnings/NU5030.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/reference/errors-and-warnings/NU5030.md b/docs/reference/errors-and-warnings/NU5030.md index 020351352..d12bef452 100644 --- a/docs/reference/errors-and-warnings/NU5030.md +++ b/docs/reference/errors-and-warnings/NU5030.md @@ -28,7 +28,7 @@ If pack with the targets: - + ``` @@ -42,4 +42,4 @@ If packing with a nuspec:
    -``` \ No newline at end of file +``` From a79864448f9df0106d73777e2215b6fe22f65269 Mon Sep 17 00:00:00 2001 From: Marcel Gosselin Date: Thu, 20 Dec 2018 09:22:38 -0500 Subject: [PATCH 1036/2943] Fix typo in site name --- docs/create-packages/Supporting-Multiple-Target-Frameworks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Supporting-Multiple-Target-Frameworks.md b/docs/create-packages/Supporting-Multiple-Target-Frameworks.md index 41190f3cc..b95e37854 100644 --- a/docs/create-packages/Supporting-Multiple-Target-Frameworks.md +++ b/docs/create-packages/Supporting-Multiple-Target-Frameworks.md @@ -120,7 +120,7 @@ The supported profiles are as follows: When packaging libraries targeting the Portable Class Library it can be tricky to determine which NuGet target you should use in your folder names and `.nuspec` file, especially if targeting only a subset of the PCL. The following external resources will help you with this: -- [Framework profiles in .NET](http://blog.stephencleary.com/2012/05/framework-profiles-in-net.html) (stephenclearly.com) +- [Framework profiles in .NET](http://blog.stephencleary.com/2012/05/framework-profiles-in-net.html) (stephencleary.com) - [Portable Class Library profiles](http://embed.plnkr.co/03ck2dCtnJogBKHJ9EjY/preview) (plnkr.co): Table enumerating PCL profiles and their equivalent NuGet targets - [Portable Class Library profiles tool](https://github.com/StephenCleary/PortableLibraryProfiles) (github.com): command line tool for determining PCL profiles available on your system From 703485ff6ee40dfa8d6580d01150a0d7529d1deb Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Thu, 20 Dec 2018 14:47:38 -0800 Subject: [PATCH 1037/2943] Update NuGet-4.9-RTM.md --- docs/release-notes/NuGet-4.9-RTM.md | 42 +++++++++++++---------------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/docs/release-notes/NuGet-4.9-RTM.md b/docs/release-notes/NuGet-4.9-RTM.md index d8a5ae791..f8bc0ac1b 100644 --- a/docs/release-notes/NuGet-4.9-RTM.md +++ b/docs/release-notes/NuGet-4.9-RTM.md @@ -9,23 +9,23 @@ ms.topic: conceptual # NuGet 4.9 Release Notes -[Visual Studio 2017 15.9.0 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.9.0 functionality. - - -Command line versions of the same functionality are also available: -* NuGet.exe 4.9.x - [nuget.org/downloads](https://nuget.org/downloads) -* dotnet.exe - [.NET Core SDK 2.1.500](https://www.microsoft.com/net/download/visual-studio-sdks) +NuGet distribution vehicles: +| NuGet version | Available in Visual Studio version| Available in .NET SDK(s)| +|:---|:---|:---| +| **4.9.0** | Visual Studio 2017 version 15.9.0 | 2.1.500, 2.2.100 | +| **4.9.1** | n/a | n/a | +| [**4.9.2**](https://nuget.org/downloads) |[Visual Studio 2017 version 15.9.4](https://visualstudio.microsoft.com/downloads/) | [2.1.502, 2.2.101](https://www.microsoft.com/net/download/visual-studio-sdks) | ## Summary: What's New in 4.9.0 -* Signing: Enable ClientPolicies to require use of a set of Trusted Authors and Repositories listed in NuGet.Config - [#6961](https://github.com/NuGet/Home/issues/6961) +* Signing: Enable ClientPolicies to require use of a set of Trusted Authors and Repositories listed in NuGet.Config - [#6961](https://github.com/NuGet/Home/issues/6961), [blog post](https://blog.nuget.org/20181205/Lock-down-your-dependencies-using-configurable-trust-policies.html) -* create ".snupkg" files to contain symbols in pack -- enhance push to understand nuget protocol to accept snupkg files for symbol server - [#6878](https://github.com/NuGet/Home/issues/6878) +* create ".snupkg" files to contain symbols in pack -- enhance push to understand nuget protocol to accept snupkg files for symbol server - [#6878](https://github.com/NuGet/Home/issues/6878), [blog post](https://blog.nuget.org/20181116/Improved-debugging-experience-with-the-NuGet-org-symbol-server-and-snupkg.html) * NuGet credential plugin V2 - [#6642](https://github.com/NuGet/Home/issues/6642) -* Self-Contained NuGet Packages - License - [#4628](https://github.com/NuGet/Home/issues/4628) +* Self-Contained NuGet Packages - License - [#4628](https://github.com/NuGet/Home/issues/4628), [announcement](https://github.com/NuGet/Announcements/issues/32) * Enable opt-in "GeneratePathProperty" metadata on a PackageReference to generate a per package MSBuild property to "Foo.Bar\1.0\" directory - [#6949](https://github.com/NuGet/Home/issues/6949) @@ -89,31 +89,27 @@ Command line versions of the same functionality are also available: [List of all issues fixed in this release 4.9.1](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.9.1") -## Known issues +## Summary: What's New in 4.9.2 -### dotnet.exe/nuget.exe doesn't use credentials when source name contains a whitespace - [#7517](https://github.com/NuGet/Home/issues/7517) +### Issues fixed in this release -#### Issue -When there is a whitespace in the source name, nuget.exe throws an error like `The ' ' character, hexadecimal value 0x20, cannot be included in a name.` +* VS/dotnet.exe/nuget.exe/msbuild.exe restore doesn't use credentials when source name contains a whitespace - [#7517](https://github.com/NuGet/Home/issues/7517) -#### Workaround -Change the name of the source to not contain a whitespace. +* LicenseAcceptanceWindow and LicenseFileWindow Accessibility issues - [#7452](https://github.com/NuGet/Home/issues/7452) -### dotnet nuget push --interactive gives an error on Mac. - [#7519](https://github.com/NuGet/Home/issues/7519) +* Fix FormatException in DateTime.Parse from DateTimeConverter - [#7539](https://github.com/NuGet/Home/issues/7539) -#### Issue -The `--interactive` argument is not being forwarded by the dotnet cli and results in the error `error: Missing value for option 'interactive'` +[List of all issues fixed in this release 4.9.2](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.9.2") -#### Workaround -Run any other dotnet command with the interactive option such as `dotnet restore --interactive` and authenticate. The authentication then might be cached by the credential provider. Then run `dotnet nuget push`. +## Known issues -### LicenseAcceptanceWindow and LicenseFileWindow Accessibility issues - [#7452](https://github.com/NuGet/Home/issues/7452) +### dotnet nuget push --interactive gives an error on Mac. - [#7519](https://github.com/NuGet/Home/issues/7519) #### Issue -The license acceptance window and license file window have accessibility issues with keyboard navigation and narration with screen reader and JAWS. +The `--interactive` argument is not being forwarded by the dotnet cli and results in the error `error: Missing value for option 'interactive'` #### Workaround -No workaround. +Run any other dotnet command with the interactive option such as `dotnet restore --interactive` and authenticate. The authentication then might be cached by the credential provider. Then run `dotnet nuget push`. ### Packages in FallbackFolders installed by .NET Core SDK are custom installed, and fail signature validation. - [#7414](https://github.com/NuGet/Home/issues/7414) From 1338ab8eb4c12b949898197ad703b14f3d1a86ea Mon Sep 17 00:00:00 2001 From: Christopher Watford Date: Wed, 2 Jan 2019 10:35:38 -0500 Subject: [PATCH 1038/2943] Corrects minor grammar issues --- docs/reference/analyzers-conventions.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/reference/analyzers-conventions.md b/docs/reference/analyzers-conventions.md index 09202311e..eebfb9767 100644 --- a/docs/reference/analyzers-conventions.md +++ b/docs/reference/analyzers-conventions.md @@ -9,7 +9,7 @@ ms.topic: conceptual # Analyzer NuGet formats -The .NET Compiler Platform (also known as "Roslyn") allow developers to create [analyzers](https://github.com/dotnet/roslyn/wiki/How-To-Write-a-C%23-Analyzer-and-Code-Fix) that examine the syntax tree and semantics of code as it's being written. This provides developers with a way to create and domain-specific analysis tools, such as those that would help guide the use of a particular API or library. You can find more information on the [.NET/Roslyn](https://github.com/dotnet/roslyn/wiki) GitHub wiki. Also see the article, [Use Roslyn to Write a Live Code Analyzer for your API](https://msdn.microsoft.com/magazine/dn879356.aspx) in MSDN Magazine. +The .NET Compiler Platform (also known as "Roslyn") allows developers to create [analyzers](https://github.com/dotnet/roslyn/wiki/How-To-Write-a-C%23-Analyzer-and-Code-Fix) that examine the syntax tree and semantics of code as it's being written. This provides developers with a way to create domain-specific analysis tools, such as those that would help guide the use of a particular API or library. You can find more information on the [.NET/Roslyn](https://github.com/dotnet/roslyn/wiki) GitHub wiki. Also see the article, [Use Roslyn to Write a Live Code Analyzer for your API](https://msdn.microsoft.com/magazine/dn879356.aspx) in MSDN Magazine. Analyzers themselves are typically packaged and distributed as part of the NuGet packages that implement the API or library in question. @@ -41,13 +41,13 @@ The use of the `analyzers` folder is similar to that used for [target frameworks $/analyzers/{framework_name}{version}/{supported_architecture}/{supported_language}/{analyzer_name}.dll - **framework_name**: the *optional* API surface area of the .NET Framework that the contained DLLs need to run. `dotnet` is presently the only valid value because Roslyn is the only host that can run analyzers. If no target is specified, DLLs are assumed to apply to *all* targets. -- **supported_language**: the language for which the DLL applies, one of `cs` (C#) and `vb` (Visual Basic), and `fs` (F#). The language indicates that the analyzer should be loaded only for a project using that language. If no language is specified then DLL is assumed to apply to *all* languages that support analyzers. +- **supported_language**: the language for which the DLL applies, one of `cs` (C#) and `vb` (Visual Basic), and `fs` (F#). The language indicates that the analyzer should be loaded only for a project using that language. If no language is specified then the DLL is assumed to apply to *all* languages that support analyzers. - **analyzer_name**: specifies the DLLs of the analyzer. If you need additional files beyond DLLs, they must be included through a targets or properties files. ## Install and uninstall scripts -If the user's project is using `packages.config`, the MSBuild script that picks up the analyzer does not come into play, so you should `install.ps1` and `uninstall.ps1` in the `tools` folder with the contents that are described below. +If the user's project is using `packages.config`, the MSBuild script that picks up the analyzer does not come into play, so you should place `install.ps1` and `uninstall.ps1` in the `tools` folder with the contents that are described below. **install.ps1 file contents** From ce8e2e0558a6e8763f7c081a15b7d6749a53b1f0 Mon Sep 17 00:00:00 2001 From: Do Nhu Vy Date: Thu, 3 Jan 2019 16:50:24 +0700 Subject: [PATCH 1039/2943] Update version of Newtonsoft.Json in sample --- .../install-and-use-a-package-using-the-dotnet-cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 db1a94c4c..e3fc241ea 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 @@ -46,7 +46,7 @@ NuGet packages can be installed into a .NET project of some kind. For this walkt ```xml - + ``` From edadbb077850fef649477d9c8f480dd73bdd857f Mon Sep 17 00:00:00 2001 From: Mattias Karlsson Date: Mon, 7 Jan 2019 15:21:16 +0100 Subject: [PATCH 1040/2943] Add missing supported MSBuild versions --- docs/tools/cli-ref-pack.md | 2 +- docs/tools/cli-ref-restore.md | 2 +- docs/tools/cli-ref-update.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/tools/cli-ref-pack.md b/docs/tools/cli-ref-pack.md index 0ccd8e116..377b0f70c 100644 --- a/docs/tools/cli-ref-pack.md +++ b/docs/tools/cli-ref-pack.md @@ -38,7 +38,7 @@ where `` and `` specify the `.nuspec` or project file, | IncludeReferencedProjects | Indicates that the built package should include referenced projects either as dependencies or as part of the package. If a referenced project has a corresponding `.nuspec` file that has the same name as the project, then that referenced project is added as a dependency. Otherwise, the referenced project is added as part of the package. | | MinClientVersion | Set the *minClientVersion* attribute for the created package. This value will override the value of the existing *minClientVersion* attribute (if any) in the `.nuspec` file. | | MSBuildPath | *(4.0+)* Specifies the path of MSBuild to use with the command, taking precedence over `-MSBuildVersion`. | -| MSBuildVersion | *(3.2+)* Specifies the version of MSBuild to be used with this command. Supported values are 4, 12, 14, 15. By default the MSBuild in your path is picked, otherwise it defaults to the highest installed version of MSBuild. | +| MSBuildVersion | *(3.2+)* Specifies the version of MSBuild to be used with this command. Supported values are 4, 12, 14, 15.1, 15.3, 15.4, 15.5, 15.6, 15.7, 15.8, 15.9. By default the MSBuild in your path is picked, otherwise it defaults to the highest installed version of MSBuild. | | NoDefaultExcludes | Prevents default exclusion of NuGet package files and files and folders starting with a dot, such as `.svn` and `.gitignore`. | | NoPackageAnalysis | Specifies that pack should not run package analysis after building the package. | | OutputDirectory | Specifies the folder in which the created package is stored. If no folder is specified, the current folder is used. | diff --git a/docs/tools/cli-ref-restore.md b/docs/tools/cli-ref-restore.md index fdf38b853..311fa4eb8 100644 --- a/docs/tools/cli-ref-restore.md +++ b/docs/tools/cli-ref-restore.md @@ -34,7 +34,7 @@ where `` specifies the location of a solution or a `packages.config | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | | MSBuildPath | *(4.0+)* Specifies the path of MSBuild to use with the command, taking precedence over `-MSBuildVersion`. | -| MSBuildVersion | *(3.2+)* Specifies the version of MSBuild to be used with this command. Supported values are 4, 12, 14, 15. By default the MSBuild in your path is picked, otherwise it defaults to the highest installed version of MSBuild. | +| MSBuildVersion | *(3.2+)* Specifies the version of MSBuild to be used with this command. Supported values are 4, 12, 14, 15.1, 15.3, 15.4, 15.5, 15.6, 15.7, 15.8, 15.9. By default the MSBuild in your path is picked, otherwise it defaults to the highest installed version of MSBuild. | | NoCache | Prevents NuGet from using cached packages. See [Managing the global packages and cache folders](../consume-packages/managing-the-global-packages-and-cache-folders.md). | | NonInteractive | Suppresses prompts for user input or confirmations. | | OutputDirectory | Specifies the folder in which packages are installed. If no folder is specified, the current folder is used. Required when restoring with a `packages.config` file unless `PackagesDirectory` or `SolutionDirectory` is used.| diff --git a/docs/tools/cli-ref-update.md b/docs/tools/cli-ref-update.md index 6d3fd615c..7c23e9626 100644 --- a/docs/tools/cli-ref-update.md +++ b/docs/tools/cli-ref-update.md @@ -37,7 +37,7 @@ where `` identifies either a `packages.config` or solution file that | Help | Displays help information for the command. | | Id | Specifies a list of package IDs to update. | | MSBuildPath | *(4.0+)* Specifies the path of MSBuild to use with the command, taking precedence over `-MSBuildVersion`. | -| MSBuildVersion | *(3.2+)* Specifies the version of MSBuild to be used with this command. Supported values are 4, 12, 14, 15. By default the MSBuild in your path is picked, otherwise it defaults to the highest installed version of MSBuild. | +| MSBuildVersion | *(3.2+)* Specifies the version of MSBuild to be used with this command. Supported values are 4, 12, 14, 15.1, 15.3, 15.4, 15.5, 15.6, 15.7, 15.8, 15.9. By default the MSBuild in your path is picked, otherwise it defaults to the highest installed version of MSBuild. | | NonInteractive | Suppresses prompts for user input or confirmations. | | PreRelease | Allows updating to prerelease versions. This flag is not required when updating prerelease packages that are already installed. | | RepositoryPath | Specifies the local folder where packages are installed. | From 1403f7d87fb4be17ccafd74b0ccc10d1da977308 Mon Sep 17 00:00:00 2001 From: Aaron Kunz Date: Tue, 15 Jan 2019 18:38:27 +0100 Subject: [PATCH 1041/2943] Fix typo (#1263) --- docs/reference/target-frameworks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/target-frameworks.md b/docs/reference/target-frameworks.md index 939c21feb..ed922ee3d 100644 --- a/docs/reference/target-frameworks.md +++ b/docs/reference/target-frameworks.md @@ -23,7 +23,7 @@ NuGet uses target framework references in a variety of places to specifically id ## Supported frameworks -A framework is typically referenced by a short target framework moniker or TFM. In .NET Standard this is also is generalized to *TxM* to allow a single reference to multiple frameworks. +A framework is typically referenced by a short target framework moniker or TFM. In .NET Standard this is also generalized to *TxM* to allow a single reference to multiple frameworks. The NuGet clients support the frameworks in the table below. Equivalents are shown within brackets []. Note that some tools, such as `dotnet`, might use variations of canonical TFMs in some files. For example, `dotnet pack` uses `.NETCoreApp2.0` in a `.nuspec` file rather than `netcoreapp2.0`. The various NuGet client tools handle these variations properly, but you should always use canonical TFMs when editing files directly. From 7cbed41c5abe96fdf9dc2dca67077ec8f346f57c Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 15 Jan 2019 13:31:01 -0800 Subject: [PATCH 1042/2943] Fixes #1179 https://github.com/NuGet/docs.microsoft.com-nuget/issues/1179 --- docs/reference/msbuild-targets.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index 525b25837..73e7ff50b 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -189,6 +189,14 @@ If a file of type Compile, is outside the project folder, then it's just added t When using a license expression, the PackageLicenseExpression property should be used. [License expression sample](https://github.com/NuGet/Samples/tree/master/PackageLicenseExpressionExample). +```xml + + MIT + +``` + +[Learn more about license expressions and licenses that are accepted by NuGet.org](/nuspec.md#license). + When packing a license file, you need to use PackageLicenseFile property to specify the package path, relative to the root of the package. In addition, you need to make sure that the file is included in the package. For example: ```xml From ae2f8d0c763a858a8b357ad05c1002d9f6ff6d24 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 15 Jan 2019 13:36:39 -0800 Subject: [PATCH 1043/2943] Update msbuild-targets.md --- docs/reference/msbuild-targets.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index 73e7ff50b..9c967ac4b 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -195,7 +195,7 @@ When using a license expression, the PackageLicenseExpression property should be ``` -[Learn more about license expressions and licenses that are accepted by NuGet.org](/nuspec.md#license). +[Learn more about license expressions and licenses that are accepted by NuGet.org](nuspec.md#license). When packing a license file, you need to use PackageLicenseFile property to specify the package path, relative to the root of the package. In addition, you need to make sure that the file is included in the package. For example: From 696d85db184ef420ca50d5f4bb2381dd46613241 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 15 Jan 2019 13:45:36 -0800 Subject: [PATCH 1044/2943] Update nuspec.md --- docs/reference/nuspec.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/reference/nuspec.md b/docs/reference/nuspec.md index 7031a8ca3..a340c04cf 100644 --- a/docs/reference/nuspec.md +++ b/docs/reference/nuspec.md @@ -103,6 +103,9 @@ If you are using a license that hasn’t been assigned an SPDX identifier, or it
    ``` + +For the MSBuild equivalent, take a look at [Packing a license expression or a license file](msbuild-targets.md#packing-a-license-expression-or-a-license-file). + The exact syntax of NuGet's license expressions is described below in [ABNF](https://tools.ietf.org/html/rfc5234). ```cli license-id = From 51a06d6b33baa5e7fda59b4dfd89405d403c0ac2 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 15 Jan 2019 15:04:38 -0800 Subject: [PATCH 1045/2943] Update TOC.md --- docs/TOC.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/TOC.md b/docs/TOC.md index 55e29e8f9..332e1cbcd 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -181,6 +181,7 @@ ### [NU5033](reference/errors-and-warnings/NU5033.md) ### [NU5034](reference/errors-and-warnings/NU5034.md) ### [NU5035](reference/errors-and-warnings/NU5035.md) +### [NU5036](reference/errors-and-warnings/NU5036.md) ### [NU5100](reference/errors-and-warnings/NU5100.md) ### [NU5101](reference/errors-and-warnings/NU5101.md) ### [NU5102](reference/errors-and-warnings/NU5102.md) From 995e6fa87120d59bd7247e95fc50927ac863d925 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 16 Jan 2019 10:18:57 -0800 Subject: [PATCH 1046/2943] fixing #1244 fixing #1244 --- docs/consume-packages/Overview-and-Workflow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/consume-packages/Overview-and-Workflow.md b/docs/consume-packages/Overview-and-Workflow.md index 43aa8cf7e..22d59953f 100644 --- a/docs/consume-packages/Overview-and-Workflow.md +++ b/docs/consume-packages/Overview-and-Workflow.md @@ -30,7 +30,7 @@ When adding project code to a source repository, you typically don't include NuG ![Flow of restoring NuGet packages by cloning a repository and using either a restore command](media/Overview-02-RestoreFlow.png) -[Package Restore](../consume-packages/package-restore.md) uses the information in the project file or `packages.config` to reinstall all dependencies. Note that there are differences in the process involved, as described in [Dependency Resolution](../consume-packages/dependency-resolution.md). Also, the diagram above does not show a restore command for the Package Manager Console because you're with the Console you're already in the context of Visual Studio, which typically restores packages automatically and provides the solution-level command as shown. +[Package Restore](../consume-packages/package-restore.md) uses the information in the project file or `packages.config` to reinstall all dependencies. Note that there are differences in the process involved, as described in [Dependency Resolution](../consume-packages/dependency-resolution.md). Also, the diagram above does not show a restore command for the Package Manager Console because if you're with the Console you're already in the context of Visual Studio, which typically restores packages automatically and provides the solution-level command as shown. Occasionally it's necessary to reinstall packages that are already included in a project, which may also reinstall dependencies. This is easy to do using the `nuget reinstall` command or the NuGet Package Manager Console. For details, see [Reinstalling and Updating Packages](../consume-packages/reinstalling-and-updating-packages.md). From e65f27d9bd4ca9a24077d1217b7583b2b6107dc7 Mon Sep 17 00:00:00 2001 From: Shishir H Date: Fri, 18 Jan 2019 11:40:08 -0800 Subject: [PATCH 1047/2943] Add FAQs for nuget.org account management (#1269) --- .openpublishing.redirection.json | 5 + docs/TOC.md | 2 +- docs/_breadcrumb/toc.yml | 2 +- docs/faqs/NuGet-FAQ.md | 411 +++++++++++++++++++++++ docs/faqs/media/link-msa-dialog.png | Bin 0 -> 181179 bytes docs/{policies => faqs}/media/mtr.png | Bin docs/faqs/media/unmanaged-aad-tenant.png | Bin 0 -> 116440 bytes docs/index.md | 23 +- docs/policies/NuGet-FAQ.md | 239 ------------- 9 files changed, 439 insertions(+), 243 deletions(-) create mode 100644 docs/faqs/NuGet-FAQ.md create mode 100644 docs/faqs/media/link-msa-dialog.png rename docs/{policies => faqs}/media/mtr.png (100%) create mode 100644 docs/faqs/media/unmanaged-aad-tenant.png delete mode 100644 docs/policies/NuGet-FAQ.md diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index d57a0b5e3..c4f29c59d 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -109,6 +109,11 @@ "source_path": "docs/policies/command-line-reference.md", "redirect_url": "/nuget/tools/nuget-exe-cli-reference", "redirect_document_id": false + }, + { + "source_path": "docs/policies/nuget-faq.md", + "redirect_url": "/nuget/faqs/nuget-faq", + "redirect_document_id": false } ] } diff --git a/docs/TOC.md b/docs/TOC.md index 332e1cbcd..b3f16f4e2 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -239,7 +239,6 @@ ## [Project system support](visual-studio-extensibility/project-system-support.md) ## [Visual Studio templates](visual-studio-extensibility/visual-studio-templates.md) # Policies -## [NuGet FAQ](policies/nuget-faq.md) ## [Governance](policies/governance.md) ## [Ecosystem](policies/ecosystem.md) ## [Data Requests](policies/Data-requests.md) @@ -305,3 +304,4 @@ ## [NuGet 1.3](release-notes/NuGet-1.3.md) ## [NuGet 1.2](release-notes/NuGet-1.2.md) ## [NuGet 1.1](release-notes/NuGet-1.1.md) +# [FAQs](faqs/nuget-faq.md) \ No newline at end of file diff --git a/docs/_breadcrumb/toc.yml b/docs/_breadcrumb/toc.yml index b6992a03e..46e4576d1 100644 --- a/docs/_breadcrumb/toc.yml +++ b/docs/_breadcrumb/toc.yml @@ -35,7 +35,7 @@ topicHref: /nuget/visual-studio-extensibility/nuget-api-in-visual-studio - name: Policies tocHref: /nuget/policies/ - topicHref: /nuget/policies/nuget-faq + topicHref: /nuget/policies/governance - name: Release notes tocHref: /nuget/release-notes/ topicHref: /nuget/release-notes/index \ No newline at end of file diff --git a/docs/faqs/NuGet-FAQ.md b/docs/faqs/NuGet-FAQ.md new file mode 100644 index 000000000..71e215feb --- /dev/null +++ b/docs/faqs/NuGet-FAQ.md @@ -0,0 +1,411 @@ +--- +title: NuGet Frequently-Asked Questions +description: Common questions and answers for using NuGet on the command line and in Visual Studio, and working with the NuGet gallery. +author: shishirx34 +ms.author: shishirh +ms.date: 01/15/2019 +ms.topic: conceptual +--- + +# NuGet frequently-asked questions + +**What is required to run NuGet?** + +All the information around both UI and command-line tools is available in the [Install guide](../install-nuget-client-tools.md). + +**Does NuGet support Mono?** + +The command-line tool, `nuget.exe`, builds and runs under Mono 3.2+ and can create packages in Mono. + +Although `nuget.exe` works fully on Windows, there are known issues on Linux and OS X. Refer to [Mono issues](https://github.com/NuGet/Home/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+mono) on GitHub. + +A [graphical client](https://github.com/mrward/monodevelop-nuget-addin) is available as an add-in for MonoDevelop. + +**How can I determine what a package contains and whether it's stable and useful for my application?** + +The primary source for learning about a package is its listing page on nuget.org (or another private feed). Each package page on nuget.org includes a description of the package, its version history, and usage statistics. The **Info** section on the package page also contains a link to the project's web site where you typically find many examples and other documentation to help you learn how the package is used. + +For more information, see [Finding and choosing packages](../consume-packages/finding-and-choosing-packages.md). + +## NuGet in Visual Studio + +**How is NuGet supported in different Visual Studio products?** + +- Visual Studio on Windows supports the [Package Manager UI](../tools/package-manager-ui.md) and the [Package Manager Console](../tools/package-manager-console.md). +- Visual Studio for Mac has built-in NuGet capabilities as described on [Including a NuGet package in your project](/visualstudio/mac/nuget-walkthrough). +- Visual Studio Code (all platforms) does not have any direct NuGet integration. Use the [NuGet CLI](../tools/nuget-exe-cli-reference.md) or the [dotnet CLI](../tools/dotnet-commands.md). +- Azure DevOps provides [a build step to restore NuGet packages](/vsts/build-release/tasks/package/nuget). You can also [host private NuGet package feeds on Azure DevOps](https://docs.microsoft.com/azure/devops/artifacts/nuget/publish). + +**How do I check the exact version of the NuGet tools that are installed?** + +In Visual Studio, use the **Help > About Microsoft Visual Studio** command and look at the version displayed next to **NuGet Package Manager**. + +Alternatively, launch the Package Manager Console (**Tools > NuGet Package Manager > Package Manager Console**) and enter `$host` to see information about NuGet including the version. + +**What programming languages are supported by NuGet?** + +NuGet generally works for .NET languages and is designed to bring .NET libraries into a project. Because it also supports MSBuild and Visual Studio automation in some project types, it also supports other projects and languages to various degrees. + +The most recent version of NuGet supports C#, Visual Basic, F#, WiX, and C++. + +**What project templates are supported by NuGet?** + +NuGet has full support for a variety of project templates like Windows, Web, Cloud, SharePoint, Wix, and so on. + +**How do I update packages that are part of Visual Studio templates?** + +Go to the **Updates** tab in the Package Manager UI and select **Update All**, or use the [`Update-Package` command](../tools/ps-ref-update-package.md) from the Package Manager Console. + +To update the template itself, you need to manually update the template repository. See [Xavier Decoster's blog](http://www.xavierdecoster.com/update-project-template-to-latest-nuget-packages) on this subject. Note that this is done at your own risk, because manual updates might corrupt the template if the latest version of all dependencies are not compatible with each other. + +**Can I use NuGet outside of Visual Studio?** + +Yes, NuGet works directly from the command line. See the [Install guide](../install-nuget-client-tools.md) and the [CLI reference](../tools/nuget-exe-cli-reference.md). + +## NuGet command line + +**How do I get the latest version of NuGet command line tool?** + +See the [Install guide](../install-nuget-client-tools.md). + +**What is the license for nuget.exe?** + +You are allowed to redistribute nuget.exe under the terms of the MIT license. You are responsible for updating and servicing any copies of nuget.exe that you choose to redistribute. + +**Is it possible to extend the NuGet command line tool?** + +Yes, it's possible to add custom commands to `nuget.exe`, as described in [Rob Reynold's post](http://geekswithblogs.net/robz/archive/2011/07/15/extend-nuget-command-line.aspx). + +## NuGet Package Manager Console (Visual Studio on Windows) + +**How do I get access to the DTE object in the Package Manager console?** + +The top-level object in the Visual Studio automation object model is called the DTE (Development Tools Environment) object. The console provides this through a variable named `$DTE`. For more information, see [Automation Model Overview](/visualstudio/extensibility/internals/automation-model-overview) in the Visual Studio Extensibility documentation. + +**I try to cast the $DTE variable to the type DTE2, but I get an error: Cannot convert the "EnvDTE.DTEClass" value of type "EnvDTE.DTEClass" to type "EnvDTE80.DTE2". What's wrong?** + +This is a known issue with how PowerShell interacts with a COM object. Try the following: + +```ps +`$dte2 = Get-Interface $dte ([EnvDTE80.DTE2])` +``` + +`Get-Interface` is a helper function added by the NuGet PowerShell host. + +## Creating and publishing packages + +**How do I list my package in a feed?** + +See [Creating and publishing a package](../quickstart/create-and-publish-a-package.md). + +**I have multiple versions of my library that target different versions of the .NET Framework. How do I build a single package that supports this?** + +See [Supporting Multiple .NET Framework Versions and Profiles](../create-packages/supporting-multiple-target-frameworks.md). + +**How do I set up my own repository or feed?** + +See the [Hosting packages overview](../hosting-packages/overview.md). + +**How can I upload packages to my NuGet feed in bulk?** + +See [Bulk publishing NuGet packages](http://jeffhandley.com/archive/2012/12/13/Bulk-Publishing-NuGet-Packages.aspx) (jeffhandly.com). + +## Working with packages + +**What is the difference between a project-level package and a solution-level package?** + +A solution-level package (NuGet 3.x+) is installed only once in a solution and is then available for all projects in the solution. A project-level package is installed in each project that uses it. A solution-level package might also install new commands that can be called from within the Package Manager Console. + +**Is it possible to install NuGet packages without Internet connectivity?** + +Yes, see Scott Hanselman's Blog post [How to access NuGet when nuget.org is down (or you're on a plane)](http://www.hanselman.com/blog/HowToAccessNuGetWhenNuGetorgIsDownOrYoureOnAPlane.aspx) (hanselman.com). + +**How do I install packages in a different location from the default packages folder?** + +Set the [`repositoryPath`](../reference/nuget-config-file.md#config-section) setting in `Nuget.Config` using `nuget config -set repositoryPath=`. + +**How do I avoid adding the NuGet packages folder into to source control?** + +Set the [`disableSourceControlIntegration`](../reference/nuget-config-file.md#solution-section) in `Nuget.Config` to `true`. This key works at the solution level and hence need to be added to the `$(Solutiondir)\.nuget\Nuget.Config` file. Enabling package restore from Visual Studio creates this file automatically. + +**How do I turn off package restore?** + +See [Enabling and disabling package restore](../consume-packages/package-restore.md#enabling-and-disabling-package-restore). + +**Why do I get an "Unable to resolve dependency error" when installing a local package with remote dependencies?** + +You need to select the **All** source when installing a local package into the project. This aggregates all the feeds instead of using just one. The reason this error appears is that users of a local repository often want to avoid accidentally installing a remote package due to corporate polices. + +**I have multiple projects in the same folder, how can I use separate packages.config files for each project?** + +In most projects where separate projects live in separate folders, this is not a problem as NuGet identifies the `packages.config` files in each project. With NuGet 3.3+ and multiple projects in the same folder, you can insert the name of the project into the `packages.config` filenames use the pattern `packages.{project-name}.config`, and NuGet uses that file. + +This is not an issue when using PackageReference, as each project file contains its own list of dependencies. + +**I don't see nuget.org in my list of repositories, how do I get it back?** + +- Add `https://api.nuget.org/v3/index.json` to your list of sources, or +- Delete `%appdata%\.nuget\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) and let NuGet re-create it. + +**What are the default license terms if a package doesn't provide specific license information?** + +Each package is governed by the terms that are included with the package. You should review the applicable terms before accessing, downloading, or acquiring any packages. On nuget.org, use the **License Info** link on the package page. + +If a package does not specify the licensing terms, contact the package owner directly using the **Contact owners** link on the nuget.org package page. Microsoft does not license any intellectual property to you from third party package providers and is not responsible for information provided by third parties. + +## Managing packages on nuget.org + +**Can I edit package metadata after it's been uploaded?** + +NuGet recommends all packages to be signed. A design principle of package signing is that signed package content must be immutable, which includes the nuspec. Editing the package metadata results in changes to the nuspec, invalidating existing signatures. We recommend modifying existing workflows to not require editing the package metadata after the package has been created. + +Note that dependencies listed for your package are generated automatically from the package itself and cannot be edited. + +In addition, uploading packages to [int.nugettest.org](https://int.nugettest.org) is a great way to test and validate your package without making a package available in the public gallery. + +**Is it possible to reserve names for packages that will be published in future?** + +Yes. You can reserve IDs for packages on [nuget.org](https://www.nuget.org/) by requesting a package ID prefix for your account. In order to request a package ID prefix, follow the instructions in the [documentation](https://docs.microsoft.com/nuget/reference/id-prefix-reservation). + +**How do I claim ownership for packages ?** + +See [Managing package owners on nuget.org](../create-packages/publish-a-package.md#managing-package-owners-on-nugetorg). + +**How do I deal with a package owner who is violating my software license?** + +We encourage the NuGet community to work together to resolve any disputes that may arise between package owners and the owners of other software. We have crafted a [dispute resolution process](../policies/dispute-resolution.md) to follow before asking nuget.org administrators to intercede. + +**Is it recommended to upload my test packages to nuget.org?** + +For test purposes, you can use [int.nugettest.org](https://int.nugettest.org), or alternative public NuGet servers like [myget.org](https://myget.org) or [Azure DevOps](https://blogs.msdn.microsoft.com/visualstudioalm/2015/08/27/announcing-package-management-support-for-vsotfs/). + +Note that packages uploaded to int.nugettest.org may not be preserved. + +**What is the maximum size of packages I can upload to nuget.org?** + +nuget.org allows packages up to 250MB, but we recommend keeping packages under 1MB if possible and using dependencies to link packages together. As a rule of thumb, packages contain only one assembly to avoid collisions. + +NuGet uses HTTP to download packages, so larger packages have a higher likelihood of failed installs than smaller ones. + +It is possible to share dependencies between multiple packages, making the total download size for consumers of your NuGet packages smaller. + +Dependencies are mostly static and never change. When fixing a bug in code, the dependencies may not need to be updated. If you bundle dependencies, you end up reshipping larger packages every time. By splitting NuGet packages into related dependencies, upgrades are much more fine-grained for consumers of your package. + +## nuget.org not accessible + +**Why can't I download packages from or upload packages to nuget.org?** + +First, make sure you're using the latest versions of NuGet. If that version continues to fail, [contact support](https://www.nuget.org/policies/Contact) and provide additional connection troubleshooting information including: + +- The version of NuGet you're using +- The package sources you're using +- A restore log with detailed verbosity +- MTR or a Fiddler traces (see below) +- Your geographical area +- Whether your machine is behind a proxy or firewall? +- Is your machine located on a cloud providers' data center (Azure, AWS etc)? If yes, please provide the name of the provider and the region. + +*To capture MTR:* + +- Download WinMTR from [http://winmtr.net/download/](http://winmtr.net/) +- Enter `api.nuget.org` as the hostname and click **Start**. +- Wait until the **Sent** column is >= 100. + + ![Capturing MTR](media/mtr.png) + +- Copy text to clipboard. + +*To capture Fiddler:* + +- Install the latest version of [Fiddler](http://www.telerik.com/download/fiddler). +- Start Fiddler and disable capturing traffic using the **File > Capture Traffic** menu. +- Remove all sessions (select all items in the list, press the **Delete** key). +- Configure Fiddler to capture HTTPS traffic by checking **Decrypt HTTPS traffic** in the **HTTPS** tab of the **Tools > Fiddler Options...** menu. +- Close Visual Studio. +- Enable the **File > Capture Traffic** menu. +- Start Visual Studio or nuget.exe .exe and perform the actions that are not working. The traffic generated by these actions should show up in Fiddler. +- Once the actions have run, use **File > Save > All Sessions** to store the captured sessions. + +Note: it may be required to set the `HTTP_PROXY` environment variable to `http://127.0.0.1:8888` for routing NuGet traffic through Fiddler. + +If that fails, try the [tips mentioned in this StackOverflow post](http://stackoverflow.com/questions/21049908/using-fiddler-to-sniff-visual-studio-2013-requests-proxy-firewall). + +**What are the API endpoints for nuget.org?** + +- V3: `https://api.nuget.org/v3/index.json` +- V2: `https://www.nuget.org/api/v2/` (Note that the V2 API is deprecated and does not work with NuGet 4+.) + +## nuget.org Account Management + +### How to create a new nuget.org account? + +To create a nuget.org account, you need to have a personal Microsoft account (MSA) or an Azure Active Directory (AAD) account. If you do not have one, you can [create](https://signup.live.com) one. Follow the following steps if you have a MSA or AAD account. +1. Go to the [nuget.org login page](https://www.nuget.org/users/account/LogOn). +1. Click on **Sign in with Microsoft** button. +1. Enter your MSA/AAD account details. +1. Please accept the permissions to be given to the *NuGet.org* application. +1. You will be redirected to nuget.org, and asked to register a username. +1. Specify the username in the input box. Please note that the username **is** case sensitive and cannot be changed/renamed later. +1. Click on **Register** button. + +You now have a nuget.org account. You can perfrom account management on the [account settings](https://www.nuget.org/account) page. + +### How to recover nuget.org password login? + +Please note that the [nuget.org Password login has been discontinued](https://blog.nuget.org/20180515/NuGet.org-will-only-support-MSA-AAD-starting-June.html) and the only way to log in to nuget.org is with a personal Microsoft account (MSA) or Azure Active Directory (AAD) account. However, in case you are unable to access your associated MSA/AAD accounts you might need to use password login for recovering your nuget.org account. In this situation follow the steps below. +- **Requirement:** You will need to have access to the email that is associated with the account for which you need to recover the password. +- Go to the [Forgot password page](https://www.nuget.org/account/ForgotPassword) +- Enter the **email** address that is associated with the nuget.org account you wish to recover. +- Click the **Send** button. +- You will get an email to the specified email address account with a link to reset your password. Click on this link and set the new password. If you can't find the mail check your "junk" folder. +- Once done, you can now login with username/password on NuGet. +- To login with username/password, use the **Sign in using Nuget.org account** link on the [nuget.org login page](https://www.nuget.org/users/account/LogOn). + +### Which Microsoft account is linked to my nuget.org account? + +If you have forgotten which Microsoft account is associated with your nuget.org account, please follow the steps below to get assistance. +1. Go to [nuget.org login page](https://www.nuget.org/users/account/LogOn) and click on **Need assistance signing in?** link. +1. This will show you the pop-up dialog box for assistance. Follow the steps in this dialog box to understand the associated Microsoft account(s) for your nuget.org account. + +### How to change the Microsoft account I use for nuget.org login? +If you wish to change the Microsoft account for nuget.org user, follow the steps below. Lets say your Microsoft account with email `account1@outlook.com` is associated with your nuget.org account with username `MyNuGetAccount`. You wish to change the login to another Microsoft account with email `account2@outlook.com` +1. Please sign in using **currently associated Microsoft account** i.e. `account1@outlook.com` on the [login page](https://www.nuget.org/users/account/LogOn) after clicking **Sign in with Microsoft**. +1. Once logged in, go to your [account settings](https://www.nuget.org/account) page. +1. Expand the section for **Login Account**. Click on the **Change Account** button. +1. You will now be redirected to the microsoft login page. Please sign in with the account that you wish to change the association to i.e. `account2@outlook.com`. **Note**: you might need to click on **Sign out and sign in with different account** during the sign in flow to be able to login with a different Microsoft account. +1. If you see an error like below, see [Microsoft account is linked with another nuget.org account](#microsoft-account-is-linked-with-another-nugetorg-account) for more details. + >_Failed to update the Microsoft account with 'account2 '. This could happen if it is already linked to another NuGet account. Contact support for more information._ + +1. Once you have successfully signed in with your second account, you will be redirected back to your nuget.org account settings page and you should now see the new Microsoft account associated as the login account. Going forward you should use this account when signing into nuget.org. + +### Microsoft account is linked with another nuget.org account. + +If you tried changing your Microsoft login and saw the error below: +> _Failed to update the Microsoft account with 'account2 '. This could happen if it is already linked to another NuGet account. Contact support for more information._ + +Lets say you were trying to change Microsoft account login from `account1@outlook.com` for nuget.org user with username `MyNuGetAccount1` to another Microsoft account with email `account2@outlook.com`. And you see the error above. + +**What does the error above mean?** + +It means that there is another nuget.org account which is associated with the Microsoft account that you are trying to change it to i.e. in above example the Microsoft account with email `` is associated with another nuget.org account with, say, username `MyNuGetAccount2`. + +You cannot change the associated login with a Microsoft account that is linked to a different nuget.org account. + +**I forgot I had another nuget.org account, how do I find out which nuget.org account it is?** + +Login with the second Microsoft account on the [login page](https://www.nuget.org/users/account/LogOn?returnUrl=%2F# "login page"). This will log you into the nuget.org account that is currently associated with the second Microsoft account. You can then view the uploaded packages and perform account management on this account. + +**I do not care about this second nuget.org account, I want to change my login for first nuget.org account with the second Microsoft account. What do I do?** + +If you wish to not care about the second nuget.org account and still want to re-use the associated Microsoft account with email `account2@outlook.com`. + +You can release the association between the Microsoft account and nuget.org account by deleting the nuget.org account. +1. Follow the steps to [delete user](#how-to-delete-my-nugetorg-account) for the second nuget.org account `MyNuGetAccount2`. +1. Once this account is deleted, you can retry the steps to [change Microsoft account login](#how-to-change-the-microsoft-account-i-use-for-nugetorg-login). + +**Wait, I care about this second account too. I do not want to lose this account but change my associated account logins for first account.** + +You will need to create/use a third Microsoft account, say, with email `account3@outlook.com`. +1. First you should login with your second Microsoft account, `account2@outlook.com` on nuget.org. Follow the steps above to change associated logins and associate the third Microsoft account with this nuget.org account. +1. Once done, your second Microsoft account with email `account2@outlook.com` is free to be associated to your first nuget.org account, `MyNuGetAccount1`. Follow the same steps above to change microsoft logins to the second Microsoft account. + +### Signing in with Microsoft account shows me my email is linked to another Microsoft account +If you tried to sign in with your Microsoft account, say, with email `account1@outlook.com` and you see an error like below: +> _The account with email 'account1@outlook.com' is linked with another microsoft account._ +> +> _If you would like to update the linked Microsoft account you can do so from the account settings page._ + +**What does the error above mean?** + +When an account is created on nuget.org, there is a communication email address associated with that account. This is usually same as the email address that is used for associated Microsoft account. However, you could choose to specify a different email address for communication. So, technically, you could have a different Microsoft account, say with `account2@outlook.com` that is linked to nuget.org account with communication email address as `account1@outlook.com`. + +So the error above means that there already exists nuget.org account with communication email address `account1@outlook.com` but is associated with another Microsoft account with email **that is not** `account1@outlook.com`. + +**How do I find which Microsoft account is linked to this nuget.org account?** + +You should use the [sign in assistance](#which-microsoft-account-is-linked-to-my-nugetorg-account) flow to figure out which Microsoft account is linked to the nuget.org account with the email address `account1@outlook.com`. + +**I want to override that account with my Microsoft account** + +Follow the steps in [Unable to use microsoft login, how do I recover my nuget.org account](#unable-to-use-microsoft-login-how-do-i-recover-my-nugetorg-account) section to associate your Microsoft account with the existing nuget.org account. + +### Unable to use microsoft login, how do I recover my nuget.org account? + +If you tried using the [sign in assistance](#which-microsoft-account-is-linked-to-my-nugetorg-account) and you do not have access to the Microsoft account that is associated with your nuget.org account, please follow the steps below to link a new Microsoft account to your nuget.org account. +1. **Requirement**: You will need an access to a Microsoft account(which is not associated with any existing nuget.org accounts). If you do not have one, you can [create](https://signup.live.com) one. +2. Follow the [steps to recover your password login](#how-to-recover-nugetorg-password-login), if you have the password login skip this step. +3. [Login to nuget.org](https://www.nuget.org/users/account/LogOnNuGetAccount) using the username/password login. +4. Once logged in, you will see the popup dialog show up like below. This is the password discontinuation dialog box. +5. **NOTE**: Please ignore the instruction to login with the specified Microsoft account. You can now link your nuget.org account to any other Microsoft login. +6. Click on the button **Sign in with Microsoft** and login with the Microsoft account that you have an access to, as mentioned in step 1. +7. Your account will now be linked to the new Microsoft account, which you can use to log into nuget.org going forward. + + ![Link MSA Dialog](media/link-msa-dialog.png) + +### How to transform my nuget.org account to an organization? + +If you want to transform your account to an organization, and this account is already associated with a Microsoft account login, please follow the steps given in the documentation for [organizations on nuget org](https://docs.microsoft.com/en-us/nuget/reference/organizations-on-nuget-org). + +If however, your nuget.org account is not associated/linked with a Microsoft account, you can follow the steps below to transform this account to an organization. +1. **Requirement**: You need to have an individual account first created on nuget.org to be used as an admin on the org account. If you do not have one, please [create a new nuget.org account](#how-to-create-a-nugetorg-account) +2. Follow the [steps to recover your password login](#how-to-recover-nugetorg-password-login) for your nuget.org account if you do not have password login for it, if you do, skip this step. +3. [Login to nuget.org](https://www.nuget.org/users/account/LogOnNuGetAccount) using the username/password login. +4. Once logged in, you will see the popup dialog show up like below. This is the password discontinuation dialog box. + > [!Important] + > Ignore this dialog box, **do not** click on the **Sign in with microsoft** button. + +5. Go to [https://www.nuget.org/account/transform](https://www.nuget.org/account/transform). This will allow you to convert the nuget.org account to an org without linking to a Microsoft account. +6. Specify the admin username for your personal nuget.org account/the account you created in Step 1. +7. Follow the instructions to complete transformation of this account to an organization. + + ![Link MSA Dialog](media/link-msa-dialog.png) + +### nuget.org login issues for AAD accounts with unmanaged tenant? + +If you see an error like below during your login flow with your email account domain(@yourdomain.com), see the steps below to recover your nuget.org account. + +

    + +

    + +**What is this unmanaged state thing during login? And why is this happening now?** + +Your account seems to be previously registered as a personal Microsoft account and it worked fine, however, now it seems like your account has been registered as an "Unmanaged" tenant in the Azure Active Directory (the identity service which we use to authenticate Microsoft accounts). + +This could have happened if you or someone from your organization(with @yourdomain.com email address) registered with one of the AAD integrated services or did a [self-service signup for Azure Active Directory](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-self-service-signup), which creates such an "Unmanaged" tenant for the used Microsoft account domain(@yourdomain.com in your case). + +**What can I do to recover my account?** + +At this moment there is not a way for us (nuget.org) to authenticate accounts with such "Unmanaged" tenant accounts in Azure Active directory. We are looking in to a better way to authenticate such accounts. + +If you want to login to nuget.org with your Microsoft account(@yourdomain.com), you(or an administrator at your company) will need to claim the ownership of the AAD by doing a DNS validation to authenticate users with email address "@yourdomain.com". Please follow the steps for [domains admin takeover](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/domains-admin-takeover) documented by the Azure Active directory. Once this is done, your normal login should start working. + +**I don’t want to do all that, what is the other way to recover my account?** + +You can [create](https://www.microsoft.com/en-us/account) a new Microsoft account (with an email **not** associated with @yourdomain.com). Follow steps given in [recover your nuget.org account](#unable-to-use-microsoft-login-how-do-i-recover-my-nugetorg-account) section. + +### How do I change my nuget.org account username? + +You cannot. As a matter of policy we do not allow the change of usernames as of yet. The only way to change your username is to create a new account with the desired username. We recommend you delete your existing account before you create a new one, otherwise you will not be able to reuse your registered Microsoft account. +> [!Important] +> Deleting the user will still **reserve** the `username`. You will not be able to reuse the same username again and **this includes the change of casings**. As an example if you created a user with username `mycoolname` and you want to change this to `MyCoolName`(casing changes), it will not be possible after deleting the user. + +Follow the steps given in [delete your nuget.org account](#how-to-delete-my-nugetorg-account) section and to [register a new account](#how-to-create-a-new-nugetorg-account) with correct username. + +### How to delete my nuget.org account? + +To delete your account, please note that we recommend that you transfer the ownership of any packages where you are the sole owner. You can read more about [managing package owners](https://docs.microsoft.com/en-us/nuget/create-packages/publish-a-package#managing-package-owners-on-nugetorg) on how to do it. This will also help us expedite your request. + +> [!Important] +> Deleting the user will result in following: +> 1. Revoke associated API key(s). +> 2. Remove the account as an owner for any child packages. +> 3. Dissociate all previously existent ID prefix reservations with this account. +> 4. Remove the account as a member of any organizations. +> 5. Your username will be reserved and no one will be able to re-use it again without our permissions. + +Follow the following steps to proceed with account deletion. +1. [Login to nuget.org](https://www.nuget.org/users/account/LogOn) with the account you wish to delete. +2. Click on this url: [https://www.nuget.org/account/delete](https://www.nuget.org/account/delete) and follow the steps to submit the request for deleting the account. + +Our customer support will process this request and perform the account deletion. \ No newline at end of file diff --git a/docs/faqs/media/link-msa-dialog.png b/docs/faqs/media/link-msa-dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..1a2f759ed1797ea8a109b35f62b3e1d68026143f GIT binary patch literal 181179 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%0DBrIluhUOo@OLiu=ag+{HDJf1Q@n&@5C)3!z05t8 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
    -t2kx2MW6K9Fsmdo$ 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 literal 0 HcmV?d00001 diff --git a/docs/policies/media/mtr.png b/docs/faqs/media/mtr.png similarity index 100% rename from docs/policies/media/mtr.png rename to docs/faqs/media/mtr.png diff --git a/docs/faqs/media/unmanaged-aad-tenant.png b/docs/faqs/media/unmanaged-aad-tenant.png new file mode 100644 index 0000000000000000000000000000000000000000..03e74d160ea64fb6a58ac40616f1b4fdb5ce2d5b GIT binary patch literal 116440 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 literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index cf044c080..6c93ee657 100644 --- a/docs/index.md +++ b/docs/index.md @@ -218,7 +218,7 @@ hide_bc: true
  • - +
    @@ -229,7 +229,26 @@ hide_bc: true

    Policies

    -

    Frequently-asked questions along with information about NuGet as an open-source project, deleting packages, and resolving disputes.

    +

    Information about NuGet as an open-source project, governance, ecosystem and dispute resolution.

    +
    +
    +
    + +
    +
  • +
  • + +
    +
    +
    +
    +
    + +
    +
    +
    +

    FAQs

    +

    Frequently-asked questions along with information about NuGet as an open-source project, deleting packages and account management.

    diff --git a/docs/policies/NuGet-FAQ.md b/docs/policies/NuGet-FAQ.md deleted file mode 100644 index a4ca0a28a..000000000 --- a/docs/policies/NuGet-FAQ.md +++ /dev/null @@ -1,239 +0,0 @@ ---- -title: NuGet Frequently-Asked Questions -description: Common questions and answers for using NuGet on the command line and in Visual Studio, and working with the NuGet gallery. -author: karann-msft -ms.author: karann -ms.date: 01/11/2018 -ms.topic: conceptual ---- - -# NuGet frequently-asked questions - -**What is required to run NuGet?** - -All the information around both UI and command-line tools is available in the [Install guide](../install-nuget-client-tools.md). - -**Does NuGet support Mono?** - -The command-line tool, `nuget.exe`, builds and runs under Mono 3.2+ and can create packages in Mono. - -Although `nuget.exe` works fully on Windows, there are known issues on Linux and OS X. Refer to [Mono issues](https://github.com/NuGet/Home/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+mono) on GitHub. - -A [graphical client](https://github.com/mrward/monodevelop-nuget-addin) is available as an add-in for MonoDevelop. - -**How can I determine what a package contains and whether it's stable and useful for my application?** - -The primary source for learning about a package is its listing page on nuget.org (or another private feed). Each package page on nuget.org includes a description of the package, its version history, and usage statistics. The **Info** section on the package page also contains a link to the project's web site where you typically find many examples and other documentation to help you learn how the package is used. - -For more information, see [Finding and choosing packages](../consume-packages/finding-and-choosing-packages.md). - -## NuGet in Visual Studio - -**How is NuGet supported in different Visual Studio products?** - -- Visual Studio on Windows supports the [Package Manager UI](../tools/package-manager-ui.md) and the [Package Manager Console](../tools/package-manager-console.md). -- Visual Studio for Mac has built-in NuGet capabilities as described on [Including a NuGet package in your project](/visualstudio/mac/nuget-walkthrough). -- Visual Studio Code (all platforms) does not have any direct NuGet integration. Use the [NuGet CLI](../tools/nuget-exe-cli-reference.md) or the [dotnet CLI](../tools/dotnet-commands.md). -- Azure DevOps provides [a build step to restore NuGet packages](/vsts/build-release/tasks/package/nuget). You can also [host private NuGet package feeds on Azure DevOps](https://docs.microsoft.com/azure/devops/artifacts/nuget/publish). - -**How do I check the exact version of the NuGet tools that are installed?** - -In Visual Studio, use the **Help > About Microsoft Visual Studio** command and look at the version displayed next to **NuGet Package Manager**. - -Alternatively, launch the Package Manager Console (**Tools > NuGet Package Manager > Package Manager Console**) and enter `$host` to see information about NuGet including the version. - -**What programming languages are supported by NuGet?** - -NuGet generally works for .NET languages and is designed to bring .NET libraries into a project. Because it also supports MSBuild and Visual Studio automation in some project types, it also supports other projects and languages to various degrees. - -The most recent version of NuGet supports C#, Visual Basic, F#, WiX, and C++. - -**What project templates are supported by NuGet?** - -NuGet has full support for a variety of project templates like Windows, Web, Cloud, SharePoint, Wix, and so on. - -**How do I update packages that are part of Visual Studio templates?** - -Go to the **Updates** tab in the Package Manager UI and select **Update All**, or use the [`Update-Package` command](../tools/ps-ref-update-package.md) from the Package Manager Console. - -To update the template itself, you need to manually update the template repository. See [Xavier Decoster's blog](http://www.xavierdecoster.com/update-project-template-to-latest-nuget-packages) on this subject. Note that this is done at your own risk, because manual updates might corrupt the template if the latest version of all dependencies are not compatible with each other. - -**Can I use NuGet outside of Visual Studio?** - -Yes, NuGet works directly from the command line. See the [Install guide](../install-nuget-client-tools.md) and the [CLI reference](../tools/nuget-exe-cli-reference.md). - -## NuGet command line - -**How do I get the latest version of NuGet command line tool?** - -See the [Install guide](../install-nuget-client-tools.md). - -**What is the license for nuget.exe?** - -You are allowed to redistribute nuget.exe under the terms of the MIT license. You are responsible for updating and servicing any copies of nuget.exe that you choose to redistribute. - -**Is it possible to extend the NuGet command line tool?** - -Yes, it's possible to add custom commands to `nuget.exe`, as described in [Rob Reynold's post](http://geekswithblogs.net/robz/archive/2011/07/15/extend-nuget-command-line.aspx). - -## NuGet Package Manager Console (Visual Studio on Windows) - -**How do I get access to the DTE object in the Package Manager console?** - -The top-level object in the Visual Studio automation object model is called the DTE (Development Tools Environment) object. The console provides this through a variable named `$DTE`. For more information, see [Automation Model Overview](/visualstudio/extensibility/internals/automation-model-overview) in the Visual Studio Extensibility documentation. - -**I try to cast the $DTE variable to the type DTE2, but I get an error: Cannot convert the "EnvDTE.DTEClass" value of type "EnvDTE.DTEClass" to type "EnvDTE80.DTE2". What's wrong?** - -This is a known issue with how PowerShell interacts with a COM object. Try the following: - -```ps -`$dte2 = Get-Interface $dte ([EnvDTE80.DTE2])` -``` - -`Get-Interface` is a helper function added by the NuGet PowerShell host. - -## Creating and publishing packages - -**How do I list my package in a feed?** - -See [Creating and publishing a package](../quickstart/create-and-publish-a-package.md). - -**I have multiple versions of my library that target different versions of the .NET Framework. How do I build a single package that supports this?** - -See [Supporting Multiple .NET Framework Versions and Profiles](../create-packages/supporting-multiple-target-frameworks.md). - -**How do I set up my own repository or feed?** - -See the [Hosting packages overview](../hosting-packages/overview.md). - -**How can I upload packages to my NuGet feed in bulk?** - -See [Bulk publishing NuGet packages](http://jeffhandley.com/archive/2012/12/13/Bulk-Publishing-NuGet-Packages.aspx) (jeffhandly.com). - -## Working with packages - -**What is the difference between a project-level package and a solution-level package?** - -A solution-level package (NuGet 3.x+) is installed only once in a solution and is then available for all projects in the solution. A project-level package is installed in each project that uses it. A solution-level package might also install new commands that can be called from within the Package Manager Console. - -**Is it possible to install NuGet packages without Internet connectivity?** - -Yes, see Scott Hanselman's Blog post [How to access NuGet when nuget.org is down (or you're on a plane)](http://www.hanselman.com/blog/HowToAccessNuGetWhenNuGetorgIsDownOrYoureOnAPlane.aspx) (hanselman.com). - -**How do I install packages in a different location from the default packages folder?** - -Set the [`repositoryPath`](../reference/nuget-config-file.md#config-section) setting in `Nuget.Config` using `nuget config -set repositoryPath=`. - -**How do I avoid adding the NuGet packages folder into to source control?** - -Set the [`disableSourceControlIntegration`](../reference/nuget-config-file.md#solution-section) in `Nuget.Config` to `true`. This key works at the solution level and hence need to be added to the `$(Solutiondir)\.nuget\Nuget.Config` file. Enabling package restore from Visual Studio creates this file automatically. - -**How do I turn off package restore?** - -See [Enabling and disabling package restore](../consume-packages/package-restore.md#enabling-and-disabling-package-restore). - -**Why do I get an "Unable to resolve dependency error" when installing a local package with remote dependencies?** - -You need to select the **All** source when installing a local package into the project. This aggregates all the feeds instead of using just one. The reason this error appears is that users of a local repository often want to avoid accidentally installing a remote package due to corporate polices. - -**I have multiple projects in the same folder, how can I use separate packages.config files for each project?** - -In most projects where separate projects live in separate folders, this is not a problem as NuGet identifies the `packages.config` files in each project. With NuGet 3.3+ and multiple projects in the same folder, you can insert the name of the project into the `packages.config` filenames use the pattern `packages.{project-name}.config`, and NuGet uses that file. - -This is not an issue when using PackageReference, as each project file contains its own list of dependencies. - -**I don't see nuget.org in my list of repositories, how do I get it back?** - -- Add `https://api.nuget.org/v3/index.json` to your list of sources, or -- Delete `%appdata%\.nuget\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) and let NuGet re-create it. - -**What are the default license terms if a package doesn't provide specific license information?** - -Each package is governed by the terms that are included with the package. You should review the applicable terms before accessing, downloading, or acquiring any packages. On nuget.org, use the **License Info** link on the package page. - -If a package does not specify the licensing terms, contact the package owner directly using the **Contact owners** link on the nuget.org package page. Microsoft does not license any intellectual property to you from third party package providers and is not responsible for information provided by third parties. - -## Managing packages on nuget.org - -**Can I edit package metadata after it's been uploaded?** - -NuGet recommends all packages to be signed. A design principle of package signing is that signed package content must be immutable, which includes the nuspec. Editing the package metadata results in changes to the nuspec, invalidating existing signatures. We recommend modifying existing workflows to not require editing the package metadata after the package has been created. - -Note that dependencies listed for your package are generated automatically from the package itself and cannot be edited. - -In addition, uploading packages to [int.nugettest.org](https://int.nugettest.org) is a great way to test and validate your package without making a package available in the public gallery. - -**Is it possible to reserve names for packages that will be published in future?** - -Yes. You can reserve IDs for packages on [nuget.org](https://www.nuget.org/) by requesting a package ID prefix for your account. In order to request a package ID prefix, follow the instructions in the [documentation](https://docs.microsoft.com/nuget/reference/id-prefix-reservation). - -**How do I claim ownership for packages ?** - -See [Managing package owners on nuget.org](../create-packages/publish-a-package.md#managing-package-owners-on-nugetorg). - -**How do I deal with a package owner who is violating my software license?** - -We encourage the NuGet community to work together to resolve any disputes that may arise between package owners and the owners of other software. We have crafted a [dispute resolution process](../policies/dispute-resolution.md) to follow before asking nuget.org administrators to intercede. - -**Is it recommended to upload my test packages to nuget.org?** - -For test purposes, you can use [int.nugettest.org](https://int.nugettest.org), or alternative public NuGet servers like [myget.org](https://myget.org) or [Azure DevOps](https://blogs.msdn.microsoft.com/visualstudioalm/2015/08/27/announcing-package-management-support-for-vsotfs/). - -Note that packages uploaded to int.nugettest.org may not be preserved. - -**What is the maximum size of packages I can upload to nuget.org?** - -nuget.org allows packages up to 250MB, but we recommend keeping packages under 1MB if possible and using dependencies to link packages together. As a rule of thumb, packages contain only one assembly to avoid collisions. - -NuGet uses HTTP to download packages, so larger packages have a higher likelihood of failed installs than smaller ones. - -It is possible to share dependencies between multiple packages, making the total download size for consumers of your NuGet packages smaller. - -Dependencies are mostly static and never change. When fixing a bug in code, the dependencies may not need to be updated. If you bundle dependencies, you end up reshipping larger packages every time. By splitting NuGet packages into related dependencies, upgrades are much more fine-grained for consumers of your package. - -## nuget.org not accessible - -**Why can't I download packages from or upload packages to nuget.org?** - -First, make sure you're using the latest versions of NuGet. If that version continues to fail, [contact support](https://www.nuget.org/policies/Contact) and provide additional connection troubleshooting information including: - -- The version of NuGet you're using -- The package sources you're using -- A restore log with detailed verbosity -- MTR or a Fiddler traces (see below) -- Your geographical area -- Your operating system version -- Machine configuration (CPU, Network, hard drive) -- Whether your machine is behind a proxy or firewall -- The versions of .NET that are installed on the machine -- Versions of cross-platform tools such as .NET CLI, or DNU that you're using - -*To capture MTR:* - -- Download WinMTR from [http://winmtr.net/download/](http://winmtr.net/) -- Enter `api.nuget.org` as the hostname and click **Start**. -- Wait until the **Sent** column is >= 100. - - ![Capturing MTR](media/mtr.png) - -- Copy text to clipboard. - -*To capture Fiddler:* - -- Install the latest version of [Fiddler](http://www.telerik.com/download/fiddler). -- Start Fiddler and disable capturing traffic using the **File > Capture Traffic** menu. -- Remove all sessions (select all items in the list, press the **Delete** key). -- Configure Fiddler to capture HTTPS traffic by checking **Decrypt HTTPS traffic** in the **HTTPS** tab of the **Tools > Fiddler Options...** menu. -- Close Visual Studio. -- Enable the **File > Capture Traffic** menu. -- Start Visual Studio or nuget.exe .exe and perform the actions that are not working. The traffic generated by these actions should show up in Fiddler. -- Once the actions have run, use **File > Save > All Sessions** to store the captured sessions. - -Note: it may be required to set the `HTTP_PROXY` environment variable to `http://127.0.0.1:8888` for routing NuGet traffic through Fiddler. - -If that fails, try the [tips mentioned in this StackOverflow post](http://stackoverflow.com/questions/21049908/using-fiddler-to-sniff-visual-studio-2013-requests-proxy-firewall). - -**What are the API endpoints for nuget.org?** - -V3: `https://api.nuget.org/v3/index.json` -V2: `https://www.nuget.org/api/v2/` (Note that the V2 API is deprecated and does not work with NuGet 4+.) From f711997e3d678dc178f7e19b6851afa2608b0e94 Mon Sep 17 00:00:00 2001 From: Shishir H Date: Fri, 18 Jan 2019 12:51:32 -0800 Subject: [PATCH 1048/2943] Remove index for FAQs (#1272) --- docs/faqs/NuGet-FAQ.md | 2 +- docs/index.md | 19 ------------------- 2 files changed, 1 insertion(+), 20 deletions(-) diff --git a/docs/faqs/NuGet-FAQ.md b/docs/faqs/NuGet-FAQ.md index 71e215feb..e80329b47 100644 --- a/docs/faqs/NuGet-FAQ.md +++ b/docs/faqs/NuGet-FAQ.md @@ -235,7 +235,7 @@ If that fails, try the [tips mentioned in this StackOverflow post](http://stacko - V3: `https://api.nuget.org/v3/index.json` - V2: `https://www.nuget.org/api/v2/` (Note that the V2 API is deprecated and does not work with NuGet 4+.) -## nuget.org Account Management +## nuget.org account management ### How to create a new nuget.org account? diff --git a/docs/index.md b/docs/index.md index 6c93ee657..7edf578c0 100644 --- a/docs/index.md +++ b/docs/index.md @@ -236,25 +236,6 @@ hide_bc: true
  • -
  • - -
    -
    -
    -
    -
    - -
    -
    -
    -

    FAQs

    -

    Frequently-asked questions along with information about NuGet as an open-source project, deleting packages and account management.

    -
    -
    -
    -
    -
    -
  • From e2381053b30ba6e9ee2377b25b6e0105c0c67dcd Mon Sep 17 00:00:00 2001 From: Shishir H Date: Fri, 18 Jan 2019 14:42:58 -0800 Subject: [PATCH 1049/2943] Fix snupkg upload nuget version (#1273) --- docs/create-packages/Symbol-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Symbol-Packages.md b/docs/create-packages/Symbol-Packages.md index ba6cfce41..09f681284 100644 --- a/docs/create-packages/Symbol-Packages.md +++ b/docs/create-packages/Symbol-Packages.md @@ -95,7 +95,7 @@ A symbol package can be built by conventions, from a folder structure as describ ## Publishing a symbol package > [!Important] -> To push packages to nuget.org you must use [nuget.exe v4.1.0 or above](https://www.nuget.org/downloads), which implements the required [NuGet protocols](../api/nuget-protocols.md). +> To push packages to nuget.org you must use [nuget.exe v4.9.1 or above](https://www.nuget.org/downloads), which implements the required [NuGet protocols](../api/nuget-protocols.md). 1. For convenience, first save your API key with NuGet (see [publish a package](../create-packages/publish-a-package.md), which will apply to both nuget.org and symbolsource.org, because symbolsource.org will check with nuget.org to verify that you are the package owner. From c4eef7d963980efc747887ead11cce7ede382929 Mon Sep 17 00:00:00 2001 From: Zach Reynolds Date: Tue, 22 Jan 2019 16:20:55 -0500 Subject: [PATCH 1050/2943] Fix attribute name for excluding references (#1274) * Fix attribute name for excluding references --- docs/consume-packages/Dependency-Resolution.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/consume-packages/Dependency-Resolution.md b/docs/consume-packages/Dependency-Resolution.md index 69c60ffd6..cd9e4335f 100644 --- a/docs/consume-packages/Dependency-Resolution.md +++ b/docs/consume-packages/Dependency-Resolution.md @@ -112,10 +112,10 @@ There are scenarios in which assemblies with the same name might be referenced m To resolve this, you must directly reference the `C.dll` you want (or use another package that references the right one), and then add a dependency on Package C that excludes all its assets. This is done as follows depending on the package management format in use: -- [PackageReference](../consume-packages/package-references-in-project-files.md): add `Exclude="All"` in the dependency: +- [PackageReference](../consume-packages/package-references-in-project-files.md): add `ExcludeAssets="All"` in the dependency: ```xml - + ``` - `packages.config`: remove the reference to PackageC from the `.csproj` file so that it references only the version of `C.dll` that you want. From 2f732fce2f4397b2662c74bfcd0bcd4b2fd0f81a Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Thu, 24 Jan 2019 16:27:12 -0800 Subject: [PATCH 1051/2943] Clarify native code docs Fixes discussion of native packages and clarifies that it is binaries, not source code in the packages Per request of @starmessage in #925 /cc @loic-sharma @zivkan @karann-msft --- docs/create-packages/Native-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Native-Packages.md b/docs/create-packages/Native-Packages.md index ff041c63e..f4864c1c6 100644 --- a/docs/create-packages/Native-Packages.md +++ b/docs/create-packages/Native-Packages.md @@ -9,7 +9,7 @@ ms.topic: conceptual # Creating native packages -A native package contains native C++ code instead of managed code, allowing it to be used within C++ projects. (See [Native C++ Packages](../consume-packages/finding-and-choosing-packages.md#native-c-packages) in the Consume section.) +A native package contains native binaries instead of managed assemblies, allowing it to be used within C++ (or similar) projects. (See [Native C++ Packages](../consume-packages/finding-and-choosing-packages.md#native-c-packages) in the Consume section.) To be consumable in a C++ project, a package must target the `native` framework. At present there are not any version numbers associated with this framework as NuGet treats all C++ projects the same. From ddfee5dbabd1839af92aace86e98b63e0695adb8 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 25 Jan 2019 11:10:49 -0800 Subject: [PATCH 1052/2943] Update NuGet-4.9-RTM.md --- docs/release-notes/NuGet-4.9-RTM.md | 38 +++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/NuGet-4.9-RTM.md b/docs/release-notes/NuGet-4.9-RTM.md index f8bc0ac1b..fe66fa99d 100644 --- a/docs/release-notes/NuGet-4.9-RTM.md +++ b/docs/release-notes/NuGet-4.9-RTM.md @@ -13,9 +13,11 @@ NuGet distribution vehicles: | NuGet version | Available in Visual Studio version| Available in .NET SDK(s)| |:---|:---|:---| -| **4.9.0** | Visual Studio 2017 version 15.9.0 | 2.1.500, 2.2.100 | -| **4.9.1** | n/a | n/a | +| [**4.9.0**](https://nuget.org/downloads) | [Visual Studio 2017 version 15.9.0](https://visualstudio.microsoft.com/downloads/) | [2.1.500, 2.2.100](https://www.microsoft.com/net/download/visual-studio-sdks) | +| [**4.9.1**](https://nuget.org/downloads) | n/a | n/a | | [**4.9.2**](https://nuget.org/downloads) |[Visual Studio 2017 version 15.9.4](https://visualstudio.microsoft.com/downloads/) | [2.1.502, 2.2.101](https://www.microsoft.com/net/download/visual-studio-sdks) | +| [**4.9.3**](https://nuget.org/downloads) |[Visual Studio 2017 version 15.9.6](https://visualstudio.microsoft.com/downloads/) | [2.1.502, 2.2.101](https://www.microsoft.com/net/download/visual-studio-sdks) | + ## Summary: What's New in 4.9.0 @@ -31,6 +33,8 @@ NuGet distribution vehicles: * Improve customer success with NuGet operations - [#7108](https://github.com/NuGet/Home/issues/7108) +* Enable repeatable package restores using a lock file - [#5602](https://github.com/NuGet/Home/issues/5602), [announcement](https://github.com/NuGet/Announcements/issues/28), [blog post](https://blog.nuget.org/20181217/Enable-repeatable-package-restores-using-a-lock-file.html) + ### Issues fixed in this release * Warnings elevated to errors (via WarnAsErrors) raised by PackageExtraction should never leave extracted package around - [#7445](https://github.com/NuGet/Home/issues/7445) @@ -118,3 +122,33 @@ When using dotnet.exe 2.x to restore a project that multi-targets netcoreapp 1.x #### Workaround Disable the usage of the fallback folder by setting the `RestoreAdditionalProjectSources` to nothing. `` Use this with caution as it will cause a lot of packages to be downloaded from NuGet.org which otherwise would be have been restored from the fallback folder. + +## 4.9.3 Release Notes + +### Issues fixed in this release +#### "Repeatable Package Restores Using a Lock File" Issues + +* Locked mode not working as hash is calculated incorrectly for previously cached packages - [#7682](https://github.com/NuGet/Home/issues/7682) + +* Restore resolves to a different version than defined in `packages.lock.json` file - [#7667](https://github.com/NuGet/Home/issues/7667) + +* '--locked-mode / RestoreLockedMode' causes spurious Restore failures when ProjectReferences are involved - [#7646](https://github.com/NuGet/Home/issues/7646) + +* MSBuild SDK resolver tries to validate SHA for a SDK package which fails restore when using packages.lock.json - [#7599](https://github.com/NuGet/Home/issues/7599) + +#### "Lock Down Your Dependencies Using Configurable Trust Policies" Issues +* dotnet.exe should not evaluate trusted-signers while signed packages are not supported - [#7574](https://github.com/NuGet/Home/issues/7574) + +* Order of trustedSigners in config file affects trust evaluation - [#7572](https://github.com/NuGet/Home/issues/7572) + +* Can't implement ISettings [Caused by refactoring of settings APIs to support Trust Policies feature] - [#7614](https://github.com/NuGet/Home/issues/7614) + +#### "Improved Debugging Experience" Issues + +* Cannot publish symbol package for .NET Core Global Tool - [#7632](https://github.com/NuGet/Home/issues/7632) + +#### "Self-Contained NuGet Packages - License" Issues + +* Error building symbol .snupkg package when using embedded license file - [#7591](https://github.com/NuGet/Home/issues/7591) + +[Issues List](https://github.com/nuget/home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.9.3") From f4241b80d3549ad53822fdc212e05d6ee7672fdb Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 25 Jan 2019 11:11:51 -0800 Subject: [PATCH 1053/2943] Update NuGet-4.9-RTM.md --- docs/release-notes/NuGet-4.9-RTM.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/NuGet-4.9-RTM.md b/docs/release-notes/NuGet-4.9-RTM.md index fe66fa99d..5f87ee537 100644 --- a/docs/release-notes/NuGet-4.9-RTM.md +++ b/docs/release-notes/NuGet-4.9-RTM.md @@ -123,7 +123,7 @@ When using dotnet.exe 2.x to restore a project that multi-targets netcoreapp 1.x #### Workaround Disable the usage of the fallback folder by setting the `RestoreAdditionalProjectSources` to nothing. `` Use this with caution as it will cause a lot of packages to be downloaded from NuGet.org which otherwise would be have been restored from the fallback folder. -## 4.9.3 Release Notes +## Summary: What's New in 4.9.3 ### Issues fixed in this release #### "Repeatable Package Restores Using a Lock File" Issues @@ -151,4 +151,4 @@ Disable the usage of the fallback folder by setting the `RestoreAdditionalProjec * Error building symbol .snupkg package when using embedded license file - [#7591](https://github.com/NuGet/Home/issues/7591) -[Issues List](https://github.com/nuget/home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.9.3") +[List of all issues fixed in this release 4.9.3](https://github.com/nuget/home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.9.3") From 85ed305ef00ce26fa689bcc8175a1ea1885e7cb9 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 25 Jan 2019 11:12:56 -0800 Subject: [PATCH 1054/2943] Update NuGet-4.9-RTM.md --- docs/release-notes/NuGet-4.9-RTM.md | 35 ++++++++++++++--------------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/docs/release-notes/NuGet-4.9-RTM.md b/docs/release-notes/NuGet-4.9-RTM.md index 5f87ee537..c8eb2fedf 100644 --- a/docs/release-notes/NuGet-4.9-RTM.md +++ b/docs/release-notes/NuGet-4.9-RTM.md @@ -105,24 +105,6 @@ NuGet distribution vehicles: [List of all issues fixed in this release 4.9.2](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.9.2") -## Known issues - -### dotnet nuget push --interactive gives an error on Mac. - [#7519](https://github.com/NuGet/Home/issues/7519) - -#### Issue -The `--interactive` argument is not being forwarded by the dotnet cli and results in the error `error: Missing value for option 'interactive'` - -#### Workaround -Run any other dotnet command with the interactive option such as `dotnet restore --interactive` and authenticate. The authentication then might be cached by the credential provider. Then run `dotnet nuget push`. - -### Packages in FallbackFolders installed by .NET Core SDK are custom installed, and fail signature validation. - [#7414](https://github.com/NuGet/Home/issues/7414) - -#### Issue -When using dotnet.exe 2.x to restore a project that multi-targets netcoreapp 1.x and netcoreapp 2.x, the fallback folder is treated as a file feed. This means, when restoring, NuGet will pick the package from the fallback folder and try to install it into the global packages folder and do the usual signing validation which fails. - -#### Workaround -Disable the usage of the fallback folder by setting the `RestoreAdditionalProjectSources` to nothing. `` Use this with caution as it will cause a lot of packages to be downloaded from NuGet.org which otherwise would be have been restored from the fallback folder. - ## Summary: What's New in 4.9.3 ### Issues fixed in this release @@ -152,3 +134,20 @@ Disable the usage of the fallback folder by setting the `RestoreAdditionalProjec * Error building symbol .snupkg package when using embedded license file - [#7591](https://github.com/NuGet/Home/issues/7591) [List of all issues fixed in this release 4.9.3](https://github.com/nuget/home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.9.3") +## Known issues + +### dotnet nuget push --interactive gives an error on Mac. - [#7519](https://github.com/NuGet/Home/issues/7519) + +#### Issue +The `--interactive` argument is not being forwarded by the dotnet cli and results in the error `error: Missing value for option 'interactive'` + +#### Workaround +Run any other dotnet command with the interactive option such as `dotnet restore --interactive` and authenticate. The authentication then might be cached by the credential provider. Then run `dotnet nuget push`. + +### Packages in FallbackFolders installed by .NET Core SDK are custom installed, and fail signature validation. - [#7414](https://github.com/NuGet/Home/issues/7414) + +#### Issue +When using dotnet.exe 2.x to restore a project that multi-targets netcoreapp 1.x and netcoreapp 2.x, the fallback folder is treated as a file feed. This means, when restoring, NuGet will pick the package from the fallback folder and try to install it into the global packages folder and do the usual signing validation which fails. + +#### Workaround +Disable the usage of the fallback folder by setting the `RestoreAdditionalProjectSources` to nothing. `` Use this with caution as it will cause a lot of packages to be downloaded from NuGet.org which otherwise would be have been restored from the fallback folder. From 585394f063e95dcbc24d7ac0ce07de643eaf6f4d Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 25 Jan 2019 11:22:58 -0800 Subject: [PATCH 1055/2943] Update NuGet-4.9-RTM.md --- docs/release-notes/NuGet-4.9-RTM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/NuGet-4.9-RTM.md b/docs/release-notes/NuGet-4.9-RTM.md index c8eb2fedf..6611d156b 100644 --- a/docs/release-notes/NuGet-4.9-RTM.md +++ b/docs/release-notes/NuGet-4.9-RTM.md @@ -16,7 +16,7 @@ NuGet distribution vehicles: | [**4.9.0**](https://nuget.org/downloads) | [Visual Studio 2017 version 15.9.0](https://visualstudio.microsoft.com/downloads/) | [2.1.500, 2.2.100](https://www.microsoft.com/net/download/visual-studio-sdks) | | [**4.9.1**](https://nuget.org/downloads) | n/a | n/a | | [**4.9.2**](https://nuget.org/downloads) |[Visual Studio 2017 version 15.9.4](https://visualstudio.microsoft.com/downloads/) | [2.1.502, 2.2.101](https://www.microsoft.com/net/download/visual-studio-sdks) | -| [**4.9.3**](https://nuget.org/downloads) |[Visual Studio 2017 version 15.9.6](https://visualstudio.microsoft.com/downloads/) | [2.1.502, 2.2.101](https://www.microsoft.com/net/download/visual-studio-sdks) | +| [**4.9.3**](https://nuget.org/downloads) |[Visual Studio 2017 version 15.9.6](https://visualstudio.microsoft.com/downloads/) | n/a | ## Summary: What's New in 4.9.0 From 85cdd6c974d95d77a0fc193d6263b9217e430b86 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 25 Jan 2019 16:41:30 -0800 Subject: [PATCH 1056/2943] Create NuGet-5.0-preview.md --- docs/release-notes/NuGet-5.0-preview.md | 91 +++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 docs/release-notes/NuGet-5.0-preview.md diff --git a/docs/release-notes/NuGet-5.0-preview.md b/docs/release-notes/NuGet-5.0-preview.md new file mode 100644 index 000000000..e4db514d2 --- /dev/null +++ b/docs/release-notes/NuGet-5.0-preview.md @@ -0,0 +1,91 @@ +--- +title: NuGet 5.0 preview Release Notes +description: Release notes for NuGet 5.0 previews including known issues, bug fixes, new features, and DCRs. +author: anangaur +ms.author: anangaur +ms.date: 1/25/2019 +ms.topic: conceptual +--- + +# NuGet 5.0 preview Release Notes + +## Summary: What's New in 5.0 preview 2 + +### Issues fixed in this release + +#### Bugs: + +* VS 16.0's NuGet UI has unreadable tabs due to color problems - [#7735](https://github.com/NuGet/Home/issues/7735) + +* NuGet.Core & NuGet.Clients License.txt clarification - [#7629](https://github.com/NuGet/Home/issues/7629) + +* Restore unnecessarily enumerates global package folder in attempt to determine type - [#7596](https://github.com/NuGet/Home/issues/7596) + +* Errors from lock file enforcement should show up in Error List Window - [#7429](https://github.com/NuGet/Home/issues/7429) + +* Fix NuGet.Configuration issues - [#7326](https://github.com/NuGet/Home/issues/7326) + +* Adapt to MSBuild updating it's install location. - [#7325](https://github.com/NuGet/Home/issues/7325) + +* NuGet.Build.Tasks.Pack should be a development dependency - [#7249](https://github.com/NuGet/Home/issues/7249) + +* Add pack extension point for including debug symbols - [#7234](https://github.com/NuGet/Home/issues/7234) + +* dotnet pack should preserve dependency version range in the created nupkg. (even if floating version is used) - [#7232](https://github.com/NuGet/Home/issues/7232) + +* dotnet restore fails on authenticated source when user-level config also has source - [#7209](https://github.com/NuGet/Home/issues/7209) + +* Pack should not restrict the set of BuildActions for content files - [#7155](https://github.com/NuGet/Home/issues/7155) + +* Using a projectreference which requires AssetTargetFallback to succeed, should warn. - [#7137](https://github.com/NuGet/Home/issues/7137) + +* Deadlock due to threading issues when calling into CPS (CommonProjectSystem) - [#7103](https://github.com/NuGet/Home/issues/7103) + +* dotnet add package won't use credentials from global config for a source specified in local config - [#6935](https://github.com/NuGet/Home/issues/6935) + +* Threading issues with MEF being called on async codepaths - [#6771](https://github.com/NuGet/Home/issues/6771) + +* Signing: error reported twice and without call stack - [#6455](https://github.com/NuGet/Home/issues/6455) + +* Installing a signed package with untrusted signing certificate should show error - [#6318](https://github.com/NuGet/Home/issues/6318) + +* NuGet restore improperly NoOps when 2 projects are sharing obj directory - [#6114](https://github.com/NuGet/Home/issues/6114) + +* Cannot use PAT with dotnet restore on Linux with packages from authenticated feed - [#5651](https://github.com/NuGet/Home/issues/5651) + +* dotnet restore fails due to disabled machine wide feed - [#5410](https://github.com/NuGet/Home/issues/5410) + +#### DCRs + +* NuGet 5.0 assemblies to require .NET 4.7.2 (via TFM change) - [#7510](https://github.com/NuGet/Home/issues/7510) + +* NuGetLicenseData from NuGet.Packaging should be a public type. Update license metadata ingested from spdx. - [#7471](https://github.com/NuGet/Home/issues/7471) + +* Remove obsolete Settings APIs - [#7294](https://github.com/NuGet/Home/issues/7294) + +* Workaround restore timeouts on systems with 1 cpu - [#6742](https://github.com/NuGet/Home/issues/6742) + +* NuGet prefers NTLM auth even if there are credentials in NuGet.config - add config option to filter auth types for credentials - [#5286](https://github.com/NuGet/Home/issues/5286) + +* Enable EmbedInteropTypes for PackageReference (matching Packages.Config capability) - [#2365](https://github.com/NuGet/Home/issues/2365) + +[List of all issues fixed in this release 4.9.2](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.9.2") + + +## Known issues + +### dotnet nuget push --interactive gives an error on Mac. - [#7519](https://github.com/NuGet/Home/issues/7519) + +#### Issue +The `--interactive` argument is not being forwarded by the dotnet cli and results in the error `error: Missing value for option 'interactive'` + +#### Workaround +Run any other dotnet command with the interactive option such as `dotnet restore --interactive` and authenticate. The authentication then might be cached by the credential provider. Then run `dotnet nuget push`. + +### Packages in FallbackFolders installed by .NET Core SDK are custom installed, and fail signature validation. - [#7414](https://github.com/NuGet/Home/issues/7414) + +#### Issue +When using dotnet.exe 2.x to restore a project that multi-targets netcoreapp 1.x and netcoreapp 2.x, the fallback folder is treated as a file feed. This means, when restoring, NuGet will pick the package from the fallback folder and try to install it into the global packages folder and do the usual signing validation which fails. + +#### Workaround +Disable the usage of the fallback folder by setting the `RestoreAdditionalProjectSources` to nothing. `` Use this with caution as it will cause a lot of packages to be downloaded from NuGet.org which otherwise would be have been restored from the fallback folder. From 954be602ce311ae51cabf20e1a117dab2ae8d116 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 25 Jan 2019 16:43:27 -0800 Subject: [PATCH 1057/2943] Update NuGet-5.0-preview.md --- docs/release-notes/NuGet-5.0-preview.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/release-notes/NuGet-5.0-preview.md b/docs/release-notes/NuGet-5.0-preview.md index e4db514d2..9b5526f67 100644 --- a/docs/release-notes/NuGet-5.0-preview.md +++ b/docs/release-notes/NuGet-5.0-preview.md @@ -1,5 +1,5 @@ --- -title: NuGet 5.0 preview Release Notes +title: NuGet 5.0-preview Release Notes description: Release notes for NuGet 5.0 previews including known issues, bug fixes, new features, and DCRs. author: anangaur ms.author: anangaur @@ -7,9 +7,9 @@ ms.date: 1/25/2019 ms.topic: conceptual --- -# NuGet 5.0 preview Release Notes +# NuGet 5.0.0-preview Release Notes -## Summary: What's New in 5.0 preview 2 +## Summary: What's New in 5.0.0-preview2 ### Issues fixed in this release @@ -69,7 +69,7 @@ ms.topic: conceptual * Enable EmbedInteropTypes for PackageReference (matching Packages.Config capability) - [#2365](https://github.com/NuGet/Home/issues/2365) -[List of all issues fixed in this release 4.9.2](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.9.2") +[List of all issues fixed in this release 5.0.0-preview2](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.9.2") ## Known issues From 23c91655b8492d421beb03d1dc350de559bbdcf6 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Fri, 25 Jan 2019 17:12:19 -0800 Subject: [PATCH 1058/2943] Update NuGet-5.0-preview.md --- docs/release-notes/NuGet-5.0-preview.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/NuGet-5.0-preview.md b/docs/release-notes/NuGet-5.0-preview.md index 9b5526f67..79b57d24c 100644 --- a/docs/release-notes/NuGet-5.0-preview.md +++ b/docs/release-notes/NuGet-5.0-preview.md @@ -7,9 +7,9 @@ ms.date: 1/25/2019 ms.topic: conceptual --- -# NuGet 5.0.0-preview Release Notes +# NuGet 5.0 Preview 2 Release Notes -## Summary: What's New in 5.0.0-preview2 +## Summary: What's New in 5.0 Preview 2 ### Issues fixed in this release From 4d3888c9094de2808988d7864e4e1de0190a8544 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Sat, 26 Jan 2019 13:09:44 -0800 Subject: [PATCH 1059/2943] Update NuGet-5.0-preview.md --- docs/release-notes/NuGet-5.0-preview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/NuGet-5.0-preview.md b/docs/release-notes/NuGet-5.0-preview.md index 79b57d24c..9fccca61b 100644 --- a/docs/release-notes/NuGet-5.0-preview.md +++ b/docs/release-notes/NuGet-5.0-preview.md @@ -7,7 +7,7 @@ ms.date: 1/25/2019 ms.topic: conceptual --- -# NuGet 5.0 Preview 2 Release Notes +# NuGet 5.0 Preview Release Notes ## Summary: What's New in 5.0 Preview 2 From f573e751623c71442354809d57fa6d24504e02b4 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Sat, 26 Jan 2019 13:10:26 -0800 Subject: [PATCH 1060/2943] Update Index.md --- docs/release-notes/Index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/release-notes/Index.md b/docs/release-notes/Index.md index 996cf4801..84e5896e4 100644 --- a/docs/release-notes/Index.md +++ b/docs/release-notes/Index.md @@ -11,6 +11,8 @@ ms.topic: conceptual [Known Issues](../release-notes/known-issues.md) +[NuGet 5.0 preview](../release-notes/NuGet-5.0-preview.md) + [NuGet 4.9 RTM](../release-notes/NuGet-4.9-RTM.md) [NuGet 4.8 RTM](../release-notes/nuget-4.8-rtm.md) From d02b9f7b83b02be3b7e1846b2cfc5f16acd32301 Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Wed, 30 Jan 2019 14:20:58 -0800 Subject: [PATCH 1061/2943] v3 is very recommended. v2 is very deprecated. improving wording. strong enough? too strong? i think we are way too weak with advice now. --- docs/faqs/NuGet-FAQ.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/faqs/NuGet-FAQ.md b/docs/faqs/NuGet-FAQ.md index e80329b47..8b79cff39 100644 --- a/docs/faqs/NuGet-FAQ.md +++ b/docs/faqs/NuGet-FAQ.md @@ -230,10 +230,15 @@ Note: it may be required to set the `HTTP_PROXY` environment variable to `http:/ If that fails, try the [tips mentioned in this StackOverflow post](http://stackoverflow.com/questions/21049908/using-fiddler-to-sniff-visual-studio-2013-requests-proxy-firewall). -**What are the API endpoints for nuget.org?** +## What is the API endpoint for nuget.org? + +### Strongly Recommended - V3: `https://api.nuget.org/v3/index.json` -- V2: `https://www.nuget.org/api/v2/` (Note that the V2 API is deprecated and does not work with NuGet 4+.) + +### What is a slower, less reliable, but works in ancient versions of NuGet.exe (< 4.0) + +- V2: `https://www.nuget.org/api/v2/` (DEPRECATED!!!) ## nuget.org account management @@ -408,4 +413,4 @@ Follow the following steps to proceed with account deletion. 1. [Login to nuget.org](https://www.nuget.org/users/account/LogOn) with the account you wish to delete. 2. Click on this url: [https://www.nuget.org/account/delete](https://www.nuget.org/account/delete) and follow the steps to submit the request for deleting the account. -Our customer support will process this request and perform the account deletion. \ No newline at end of file +Our customer support will process this request and perform the account deletion. From da20ae7ec4cd238c9e4db19d487a6f80a85e7881 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 31 Jan 2019 01:29:46 -0800 Subject: [PATCH 1062/2943] adding file extensions supported by license --- docs/reference/nuspec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/nuspec.md b/docs/reference/nuspec.md index a340c04cf..8d83896c9 100644 --- a/docs/reference/nuspec.md +++ b/docs/reference/nuspec.md @@ -88,7 +88,7 @@ Here is the complete list of [SPDX license identifiers](https://spdx.org/license If your package is licensed under multiple common licenses, you can specify a composite license using the [SPDX expression syntax version 2.0](https://spdx.org/spdx-specification-21-web-version#h.jxpfx0ykyb60).
    For example: `BSD-2-Clause OR MIT` -If you are using a license that hasn’t been assigned an SPDX identifier, or it is a custom license, you can package a file with the license text. For example: +If you are using a license that hasn’t been assigned an SPDX identifier, or it is a custom license, you can package a file (only `.txt.` or `.md`) with the license text. For example: ```xml From 4e33efbb07cee66ab5b7d584fee0355203ed65eb Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Thu, 31 Jan 2019 12:18:53 -0800 Subject: [PATCH 1063/2943] Improvements based on feedback and cooling down --- docs/faqs/NuGet-FAQ.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/faqs/NuGet-FAQ.md b/docs/faqs/NuGet-FAQ.md index 8b79cff39..0c1bda9b4 100644 --- a/docs/faqs/NuGet-FAQ.md +++ b/docs/faqs/NuGet-FAQ.md @@ -233,12 +233,14 @@ If that fails, try the [tips mentioned in this StackOverflow post](http://stacko ## What is the API endpoint for nuget.org? ### Strongly Recommended - +- For the vast majority of uses, we strongly recommend you access nuget.org via the v3 protocol uri. - V3: `https://api.nuget.org/v3/index.json` -### What is a slower, less reliable, but works in ancient versions of NuGet.exe (< 4.0) - +### Useful for NuGet Clients before 3.0 or *NuGet.exe List* Users +- Older clients can still use the v2 protocol to reach nuget.org. However, please note, NuGet clients 3.0 or later will have slower and less-reliable service using the v2 protocol. +- *NuGet.exe List* only works with the v2 protocol. - V2: `https://www.nuget.org/api/v2/` (DEPRECATED!!!) +- Note: the "www." is important. ## nuget.org account management From 8dd226b4d5247cc023a53cc4128f156fd0e757e3 Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Thu, 31 Jan 2019 14:56:01 -0800 Subject: [PATCH 1064/2943] Update TOC.md --- docs/TOC.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/TOC.md b/docs/TOC.md index b3f16f4e2..431314620 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -246,6 +246,7 @@ ## [Deleting packages](policies/deleting-packages.md) # Release notes ## [Known Issues](release-notes/known-issues.md) +## [NuGet 5.0 preview](release-notes/NuGet-5.0-preview.md) ## [NuGet 4.9 RTM](release-notes/NuGet-4.9-RTM.md) ## [NuGet 4.8 RTM](release-notes/NuGet-4.8-RTM.md) ## [NuGet 4.7 RTM](release-notes/NuGet-4.7-RTM.md) @@ -304,4 +305,4 @@ ## [NuGet 1.3](release-notes/NuGet-1.3.md) ## [NuGet 1.2](release-notes/NuGet-1.2.md) ## [NuGet 1.1](release-notes/NuGet-1.1.md) -# [FAQs](faqs/nuget-faq.md) \ No newline at end of file +# [FAQs](faqs/nuget-faq.md) From 623d0fae6644e2100a8cbff0d6624d0e14f074bf Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 1 Feb 2019 13:29:58 -0800 Subject: [PATCH 1065/2943] Update NuGet-FAQ.md --- docs/faqs/NuGet-FAQ.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/faqs/NuGet-FAQ.md b/docs/faqs/NuGet-FAQ.md index 0c1bda9b4..23940ac59 100644 --- a/docs/faqs/NuGet-FAQ.md +++ b/docs/faqs/NuGet-FAQ.md @@ -232,16 +232,17 @@ If that fails, try the [tips mentioned in this StackOverflow post](http://stacko ## What is the API endpoint for nuget.org? -### Strongly Recommended -- For the vast majority of uses, we strongly recommend you access nuget.org via the v3 protocol uri. -- V3: `https://api.nuget.org/v3/index.json` +To use nuget.org as a package repository with NuGet clients, you would need to use the following V3 API endpoint: -### Useful for NuGet Clients before 3.0 or *NuGet.exe List* Users +**`https://api.nuget.org/v3/index.json`** + +### V2 API endpoint for older 3.0 NuGet clients - Older clients can still use the v2 protocol to reach nuget.org. However, please note, NuGet clients 3.0 or later will have slower and less-reliable service using the v2 protocol. -- *NuGet.exe List* only works with the v2 protocol. - V2: `https://www.nuget.org/api/v2/` (DEPRECATED!!!) - Note: the "www." is important. +- *NuGet.exe List* only works with the v2 protocol. + ## nuget.org account management ### How to create a new nuget.org account? From c01204145e779dfa40ec93628b1a8fe125b1ac3b Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Fri, 1 Feb 2019 13:33:05 -0800 Subject: [PATCH 1066/2943] Update NuGet-FAQ.md --- docs/faqs/NuGet-FAQ.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/faqs/NuGet-FAQ.md b/docs/faqs/NuGet-FAQ.md index 23940ac59..db8c74541 100644 --- a/docs/faqs/NuGet-FAQ.md +++ b/docs/faqs/NuGet-FAQ.md @@ -236,12 +236,11 @@ To use nuget.org as a package repository with NuGet clients, you would need to **`https://api.nuget.org/v3/index.json`** -### V2 API endpoint for older 3.0 NuGet clients -- Older clients can still use the v2 protocol to reach nuget.org. However, please note, NuGet clients 3.0 or later will have slower and less-reliable service using the v2 protocol. -- V2: `https://www.nuget.org/api/v2/` (DEPRECATED!!!) -- Note: the "www." is important. +Older clients can still use the v2 protocol to reach nuget.org. However, please note, NuGet clients 3.0 or later will have slower and less-reliable service using the v2 protocol: -- *NuGet.exe List* only works with the v2 protocol. +`https://www.nuget.org/api/v2/` (DEPRECATED!!!) **Note:** the "www." is important. + +Additionally, *NuGet.exe List* only works with the v2 protocol. ## nuget.org account management From 5bcb4634e0524ad185debb3ef6692df2b323872a Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Mon, 4 Feb 2019 10:26:45 -0800 Subject: [PATCH 1067/2943] Clarify nuget.exe list protocol (#1299) --- docs/api/overview.md | 30 +++++++++++++++++++++++++----- docs/faqs/NuGet-FAQ.md | 8 +++----- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/docs/api/overview.md b/docs/api/overview.md index 89532ae0b..eddfd5d70 100644 --- a/docs/api/overview.md +++ b/docs/api/overview.md @@ -53,17 +53,17 @@ Non-breaking protocol changes have been made to the API since it was first relea The **service index** describes a variety of resources. The current set of supported resources are as follows: -Resource name | Required | Description ----------------------------------------------------------------------- | -------- | ----------- +Resource name | Required | Description +---------------------------------------------------------------------- | -------- | ----------- [`PackagePublish`](package-publish-resource.md) | yes | Push and delete (or unlist) packages. [`SearchQueryService`](search-query-service-resource.md) | yes | Filter and search for packages by keyword. [`RegistrationsBaseUrl`](registration-base-url-resource.md) | yes | Get package metadata. [`PackageBaseAddress`](package-base-address-resource.md) | yes | Get package content (.nupkg). [`SearchAutocompleteService`](search-autocomplete-service-resource.md) | no | Discover package IDs and versions by substring. [`ReportAbuseUriTemplate`](report-abuse-resource.md) | no | Construct a URL to access a "report abuse" web page. -[`RepositorySignatures`](repository-signatures-resource.md) | no | Get certificates used for repository signing. -[`Catalog`](catalog-resource.md) | no | Full record of all package events. -[`SymbolPackagePublish`](symbol-package-publish-resource.md) | no | Push symbol packages. +[`RepositorySignatures`](repository-signatures-resource.md) | no | Get certificates used for repository signing. +[`Catalog`](catalog-resource.md) | no | Full record of all package events. +[`SymbolPackagePublish`](symbol-package-publish-resource.md) | no | Push symbol packages. In general, all non-binary data returned by a API resource are serialized using JSON. The response schema returned by each resource in the service index is defined individually for that resource. For more information about @@ -79,6 +79,26 @@ that the implementation does not understand should be ignored. > report abuse URL (tracked by [NuGet/Home#4924](https://github.com/NuGet/Home/issues/4924)). Other clients may opt > to simply not show a report abuse URL to the user. +### Undocumented resources on nuget.org + +The V3 service index on nuget.org has some resources that are not documented above. There are a few reasons for not +documenting a resource. + +First, we don't document resources used as an implementation detail of nuget.org. The `SearchGalleryQueryService` +falls into this category. [NuGetGallery](https://github.com/NuGet/NuGetGallery) uses this resource to delegate some V2 +(OData) queries to our search index instead of using the database. This resource was introduced for scalability reasons +and is not intended for external use. + +Second, we don't document resources that never shipped in an RTM version of the official client. +`PackageDisplayMetadataUriTemplate` and `PackageVersionDisplayMetadataUriTemplate` fall into this category. + +Thirdly, we don't document resources that are tightly coupled with the V2 protocol, which itself is intentionally +undocumented. The `LegacyGallery` resource falls into this category. This resource allows a V3 service index to point to +a corresponding V2 source URL. This resource supports the `nuget.exe list`. + +If a resource is not documented here, we *strongly* recommend that you do not take a dependency on them. We may remove +or change the behavior of these undocumented resources which could break your implementation in unexpected ways. + ## Timestamps All timestamps returned by the API are UTC or are otherwise specified using diff --git a/docs/faqs/NuGet-FAQ.md b/docs/faqs/NuGet-FAQ.md index db8c74541..302fe41b1 100644 --- a/docs/faqs/NuGet-FAQ.md +++ b/docs/faqs/NuGet-FAQ.md @@ -232,15 +232,13 @@ If that fails, try the [tips mentioned in this StackOverflow post](http://stacko ## What is the API endpoint for nuget.org? -To use nuget.org as a package repository with NuGet clients, you would need to use the following V3 API endpoint: +To use nuget.org as a package repository with NuGet clients, you should use the following V3 API endpoint: **`https://api.nuget.org/v3/index.json`** -Older clients can still use the v2 protocol to reach nuget.org. However, please note, NuGet clients 3.0 or later will have slower and less-reliable service using the v2 protocol: +Older clients can still use the V2 protocol to reach nuget.org. However, please note, NuGet clients 3.0 or later will have slower and less-reliable service using the V2 protocol: -`https://www.nuget.org/api/v2/` (DEPRECATED!!!) **Note:** the "www." is important. - -Additionally, *NuGet.exe List* only works with the v2 protocol. +`https://www.nuget.org/api/v2` (DEPRECATED!!!) **Note:** use "www." for the best reliability. ## nuget.org account management From 680414376ea7e34fc8cfafeaf83a14efb0b49692 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Sun, 10 Feb 2019 13:12:38 -0800 Subject: [PATCH 1068/2943] Add link to creating symbol packages to quickstart --- .../create-and-publish-a-package-using-the-dotnet-cli.md | 1 + 1 file changed, 1 insertion(+) 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 a75e09de0..9eb9dbb1b 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 @@ -104,4 +104,5 @@ Once you have a `.nupkg` file, you publish it to nuget.org using the `dotnet nug - [Support multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) - [Package versioning](../reference/package-versioning.md) - [Creating localized packages](../create-packages/creating-localized-packages.md) +- [Creating symbol packages](../create-packages/symbol-packages-snupkg.md) - [Signing packages](../create-packages/Sign-a-package.md) From 3b220b320e67ea51a7dda283ca855b3f1533c353 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Sun, 10 Feb 2019 13:14:56 -0800 Subject: [PATCH 1069/2943] VSTS -> Azure Artifacts --- docs/hosting-packages/Overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hosting-packages/Overview.md b/docs/hosting-packages/Overview.md index 3dc3196b9..3c42822f3 100644 --- a/docs/hosting-packages/Overview.md +++ b/docs/hosting-packages/Overview.md @@ -20,7 +20,7 @@ For all such purposes, NuGet supports setting up private package sources in the There are also several other NuGet hosting products that support remote private feeds, including the following: -- [Visual Studio Team Services Package Management](https://www.visualstudio.com/docs/package/nuget/publish), which is also available on Team Foundation Server 2017 and later. +- [Azure Artifacts](https://www.visualstudio.com/docs/package/nuget/publish), which is also available on Team Foundation Server 2017 and later. - [MyGet](http://myget.org) - [ProGet](http://inedo.com/proget) from Inedo - [NuGet Server](http://nugetserver.net/), a community project from Inedo From 12acc11887669143c75a0bbbe48e1a30d68d73eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Sun, 10 Feb 2019 14:06:44 -0800 Subject: [PATCH 1070/2943] Improve the snupkg documentation --- .../create-packages/Symbol-Packages-snupkg.md | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/docs/create-packages/Symbol-Packages-snupkg.md b/docs/create-packages/Symbol-Packages-snupkg.md index 460db67c4..df79d307d 100644 --- a/docs/create-packages/Symbol-Packages-snupkg.md +++ b/docs/create-packages/Symbol-Packages-snupkg.md @@ -21,28 +21,36 @@ ms.reviewer: # Creating symbol packages (.snupkg) +Symbol packages allow you to improve the debugging experience of your NuGet package. + ## Prerequisites [nuget.exe v4.9.0 or above](https://www.nuget.org/downloads) or [dotnet.exe v2.2.0 or above](https://www.microsoft.com/net/download/dotnet-core/2.2), which implement the required [NuGet protocols](../api/nuget-protocols.md). ## Creating a symbol package -A snupkg symbol package can be created from a .nuspec file or from a .csproj file. NuGet.exe and dotnet.exe are both supported. When the options ```-Symbols -SymbolPackageFormat snupkg``` are used on the nuget.exe pack command a .snupkg file will be created in addition to the .nupkg file. +You can create a snupkg symbol package using dotnet.exe, NuGet.exe, or MSBuild. If you're using NuGet.exe, you can use the following commands to create a .snupkg file in addition to the .nupkg file: -Example commands to create .snupkg files ``` -dotnet pack MyPackage.csproj --include-symbols -p:SymbolPackageFormat=snupkg - nuget pack MyPackage.nuspec -Symbols -SymbolPackageFormat snupkg nuget pack MyPackage.csproj -Symbols -SymbolPackageFormat snupkg +``` -msbuild -t:pack MyPackage.csproj -p:IncludeSymbols=true -p:SymbolPackageFormat=snupkg +If you're using dotnet.exe or MSBuild, use the following steps to create a .snupkg file in addition to the .nupkg file: + +1. Add the following properties to your .csproj file: + +``` + + true + snupkg + ``` -`.snupkgs` are not produced by default. You must pass the `SymbolPackageFormat` property along with `-Symbols` in case of nuget.exe, `--include-symbols` in case of dotnet.exe, or `-p:IncludeSymbols` in case of msbuild. +2. Pack your project with `dotnet pack MyPackage.csproj` or `msbuild -t:pack MyPackage.csproj`. -SymbolPackageFormat property can have one of the two values: `symbols.nupkg` (the default) or `snupkg`. If the SymbolPackageFormat is not specified, it defaults to `symbols.nupkg` and a legacy symbol package will be created. +The `SymbolPackageFormat` property can have one of the two values: `symbols.nupkg` (the default) or `snupkg`. If the SymbolPackageFormat is not specified, it defaults to `symbols.nupkg` and a legacy symbol package will be created. > [!Note] > The legacy format `.symbols.nupkg` is still supported but only for compatibility reasons (see [Legacy Symbol Packages](Symbol-Packages.md)). NuGet.org symbols server only accepts the new symbol package format - `.snupkg`. From af33497628f4ca35e6a2f5661b0a40433a4f6b62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Sun, 10 Feb 2019 14:13:32 -0800 Subject: [PATCH 1071/2943] Tweak --- docs/create-packages/Symbol-Packages-snupkg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Symbol-Packages-snupkg.md b/docs/create-packages/Symbol-Packages-snupkg.md index df79d307d..37df8b577 100644 --- a/docs/create-packages/Symbol-Packages-snupkg.md +++ b/docs/create-packages/Symbol-Packages-snupkg.md @@ -50,7 +50,7 @@ If you're using dotnet.exe or MSBuild, use the following steps to create a .snup 2. Pack your project with `dotnet pack MyPackage.csproj` or `msbuild -t:pack MyPackage.csproj`. -The `SymbolPackageFormat` property can have one of the two values: `symbols.nupkg` (the default) or `snupkg`. If the SymbolPackageFormat is not specified, it defaults to `symbols.nupkg` and a legacy symbol package will be created. +The `SymbolPackageFormat` property can have one of the two values: `symbols.nupkg` (the default) or `snupkg`. If the `SymbolPackageFormat` property is not specified, it defaults to `symbols.nupkg` and a legacy symbol package will be created. > [!Note] > The legacy format `.symbols.nupkg` is still supported but only for compatibility reasons (see [Legacy Symbol Packages](Symbol-Packages.md)). NuGet.org symbols server only accepts the new symbol package format - `.snupkg`. From a1c3849886ad9208c68f185e1adad3333d700da3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Sun, 10 Feb 2019 14:16:16 -0800 Subject: [PATCH 1072/2943] Tweak --- docs/create-packages/Symbol-Packages-snupkg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Symbol-Packages-snupkg.md b/docs/create-packages/Symbol-Packages-snupkg.md index 37df8b577..d71de2d74 100644 --- a/docs/create-packages/Symbol-Packages-snupkg.md +++ b/docs/create-packages/Symbol-Packages-snupkg.md @@ -21,7 +21,7 @@ ms.reviewer: # Creating symbol packages (.snupkg) -Symbol packages allow you to improve the debugging experience of your NuGet package. +Symbol packages allow you to improve the debugging experience of your NuGet packages. ## Prerequisites From 03b64e18320085d0682f173441e6477739ba75b2 Mon Sep 17 00:00:00 2001 From: Ken Dale Date: Tue, 12 Feb 2019 11:34:24 -0500 Subject: [PATCH 1073/2943] Change $authors$ to $author$ --- docs/reference/nuspec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/nuspec.md b/docs/reference/nuspec.md index 8d83896c9..451bd433c 100644 --- a/docs/reference/nuspec.md +++ b/docs/reference/nuspec.md @@ -190,7 +190,7 @@ With the exception of `$configuration$`, values in the project are used in prefe | --- | --- | --- | **$id$** | Project file | AssemblyName (title) from the project file | | **$version$** | AssemblyInfo | AssemblyInformationalVersion if present, otherwise AssemblyVersion | -| **$authors$** | AssemblyInfo | AssemblyCompany | +| **$author$** | AssemblyInfo | AssemblyCompany | | **$title$** | AssemblyInfo | AssemblyTitle | | **$description$** | AssemblyInfo | AssemblyDescription | | **$copyright$** | AssemblyInfo | AssemblyCopyright | From 59d61888dca16bc3ff84fa4575f663705478331f Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Tue, 12 Feb 2019 13:51:31 -0800 Subject: [PATCH 1074/2943] Update target-frameworks.md --- docs/reference/target-frameworks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/reference/target-frameworks.md b/docs/reference/target-frameworks.md index ed922ee3d..a26f03d2a 100644 --- a/docs/reference/target-frameworks.md +++ b/docs/reference/target-frameworks.md @@ -62,6 +62,7 @@ Windows Phone (SL) | wp | wp [wp7] | Windows Phone (UWP) | | wpa81 | Universal Windows Platform | uap | uap [uap10.0] | | | | uap10.0 | +| | | uap10.0.xxxxx (where xxxxx is the build number of the min target version) | .NET Standard | netstandard | netstandard1.0 | | | | netstandard1.1 | | | | netstandard1.2 | From 81420181bdfd6d4596499f1114af42491b873665 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 13 Feb 2019 11:41:07 -0800 Subject: [PATCH 1075/2943] Update NuGet-4.9-RTM.md --- docs/release-notes/NuGet-4.9-RTM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/NuGet-4.9-RTM.md b/docs/release-notes/NuGet-4.9-RTM.md index c8eb2fedf..98262c658 100644 --- a/docs/release-notes/NuGet-4.9-RTM.md +++ b/docs/release-notes/NuGet-4.9-RTM.md @@ -16,7 +16,7 @@ NuGet distribution vehicles: | [**4.9.0**](https://nuget.org/downloads) | [Visual Studio 2017 version 15.9.0](https://visualstudio.microsoft.com/downloads/) | [2.1.500, 2.2.100](https://www.microsoft.com/net/download/visual-studio-sdks) | | [**4.9.1**](https://nuget.org/downloads) | n/a | n/a | | [**4.9.2**](https://nuget.org/downloads) |[Visual Studio 2017 version 15.9.4](https://visualstudio.microsoft.com/downloads/) | [2.1.502, 2.2.101](https://www.microsoft.com/net/download/visual-studio-sdks) | -| [**4.9.3**](https://nuget.org/downloads) |[Visual Studio 2017 version 15.9.6](https://visualstudio.microsoft.com/downloads/) | [2.1.502, 2.2.101](https://www.microsoft.com/net/download/visual-studio-sdks) | +| [**4.9.3**](https://nuget.org/downloads) |[Visual Studio 2017 version 15.9.6](https://visualstudio.microsoft.com/downloads/) | [2.1.504, 2.2.104](https://www.microsoft.com/net/download/visual-studio-sdks) | ## Summary: What's New in 4.9.0 From a6e6ab881d4f415773ec3f88391b60350b843846 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 13 Feb 2019 11:45:03 -0800 Subject: [PATCH 1076/2943] Update target-frameworks.md --- docs/reference/target-frameworks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/target-frameworks.md b/docs/reference/target-frameworks.md index a26f03d2a..465542eb3 100644 --- a/docs/reference/target-frameworks.md +++ b/docs/reference/target-frameworks.md @@ -62,7 +62,7 @@ Windows Phone (SL) | wp | wp [wp7] | Windows Phone (UWP) | | wpa81 | Universal Windows Platform | uap | uap [uap10.0] | | | | uap10.0 | -| | | uap10.0.xxxxx (where xxxxx is the build number of the min target version) | +| | | uap10.0.xxxxx (where 10.0.xxxxx is the target platform min version of the consuming app) | .NET Standard | netstandard | netstandard1.0 | | | | netstandard1.1 | | | | netstandard1.2 | From bf8f5f7dcbb616b7dbbf356858e32ad578b8b44c Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Wed, 13 Feb 2019 11:58:42 -0800 Subject: [PATCH 1077/2943] Update Dependency-Resolution.md (#1284) --- docs/consume-packages/Dependency-Resolution.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/consume-packages/Dependency-Resolution.md b/docs/consume-packages/Dependency-Resolution.md index cd9e4335f..90a0d5282 100644 --- a/docs/consume-packages/Dependency-Resolution.md +++ b/docs/consume-packages/Dependency-Resolution.md @@ -19,7 +19,9 @@ When multiple packages have the same dependency, then the same package ID can ap When installing packages into projects using the PackageReference format, NuGet adds references to a flat package graph in the appropriate file and resolves conflicts ahead of time. This process is referred to as *transitive restore*. Reinstalling or restoring packages is then a process of downloading the packages listed in the graph, resulting in faster and more predictable builds. You can also take advantage of wildcard (floating) versions, such as 2.8.\*, avoiding expensive and error prone calls to `nuget update` on the client machines and build servers. -When the NuGet restore process runs prior to a build, it resolves dependencies first in memory, then writes the resulting graph to a file called `project.assets.json` in the `obj` folder of a project using PackageReference. MSBuild then reads this file and translates it into a set of folders where potential references can be found, and then adds them to the project tree in memory. +When the NuGet restore process runs prior to a build, it resolves dependencies first in memory, then writes the resulting graph to a file called `project.assets.json`. +The assets file is located at `MSBuildProjectExtensionsPath`, which defaults to the project's 'obj' folder. +MSBuild then reads this file and translates it into a set of folders where potential references can be found, and then adds them to the project tree in memory. The lock file is temporary and should not be added to source control. It's listed by default in both `.gitignore` and `.tfignore`. See [Packages and source control](packages-and-source-control.md). From 3c05d9b263080b643baa6a8142bf5904ea12cd11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Wed, 13 Feb 2019 13:25:54 -0800 Subject: [PATCH 1078/2943] Address feedback --- docs/create-packages/Symbol-Packages-snupkg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Symbol-Packages-snupkg.md b/docs/create-packages/Symbol-Packages-snupkg.md index d71de2d74..cf085cae2 100644 --- a/docs/create-packages/Symbol-Packages-snupkg.md +++ b/docs/create-packages/Symbol-Packages-snupkg.md @@ -48,7 +48,7 @@ If you're using dotnet.exe or MSBuild, use the following steps to create a .snup ``` -2. Pack your project with `dotnet pack MyPackage.csproj` or `msbuild -t:pack MyPackage.csproj`. +1. Pack your project with `dotnet pack MyPackage.csproj` or `msbuild -t:pack MyPackage.csproj`. The `SymbolPackageFormat` property can have one of the two values: `symbols.nupkg` (the default) or `snupkg`. If the `SymbolPackageFormat` property is not specified, it defaults to `symbols.nupkg` and a legacy symbol package will be created. From 2f0b06431492aea55d0fc1a5d36cc294303ca65b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Wed, 13 Feb 2019 13:29:42 -0800 Subject: [PATCH 1079/2943] Undo feedback --- docs/create-packages/Symbol-Packages-snupkg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Symbol-Packages-snupkg.md b/docs/create-packages/Symbol-Packages-snupkg.md index cf085cae2..d71de2d74 100644 --- a/docs/create-packages/Symbol-Packages-snupkg.md +++ b/docs/create-packages/Symbol-Packages-snupkg.md @@ -48,7 +48,7 @@ If you're using dotnet.exe or MSBuild, use the following steps to create a .snup ``` -1. Pack your project with `dotnet pack MyPackage.csproj` or `msbuild -t:pack MyPackage.csproj`. +2. Pack your project with `dotnet pack MyPackage.csproj` or `msbuild -t:pack MyPackage.csproj`. The `SymbolPackageFormat` property can have one of the two values: `symbols.nupkg` (the default) or `snupkg`. If the `SymbolPackageFormat` property is not specified, it defaults to `symbols.nupkg` and a legacy symbol package will be created. From 38a29cf837915a5bd76ef6a9ee96a08eabb0c917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Wed, 13 Feb 2019 13:35:45 -0800 Subject: [PATCH 1080/2943] Formatting --- docs/create-packages/Symbol-Packages-snupkg.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/create-packages/Symbol-Packages-snupkg.md b/docs/create-packages/Symbol-Packages-snupkg.md index d71de2d74..00fcf85f1 100644 --- a/docs/create-packages/Symbol-Packages-snupkg.md +++ b/docs/create-packages/Symbol-Packages-snupkg.md @@ -41,14 +41,14 @@ If you're using dotnet.exe or MSBuild, use the following steps to create a .snup 1. Add the following properties to your .csproj file: -``` - - true - snupkg - -``` + ```xml + + true + snupkg + + ``` -2. Pack your project with `dotnet pack MyPackage.csproj` or `msbuild -t:pack MyPackage.csproj`. +1. Pack your project with `dotnet pack MyPackage.csproj` or `msbuild -t:pack MyPackage.csproj`. The `SymbolPackageFormat` property can have one of the two values: `symbols.nupkg` (the default) or `snupkg`. If the `SymbolPackageFormat` property is not specified, it defaults to `symbols.nupkg` and a legacy symbol package will be created. From 58e2627f6ae4a0ea14bf53247ef4a93a6b596ca9 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 13 Feb 2019 17:17:10 -0800 Subject: [PATCH 1081/2943] Update NuGet-5.0-preview.md --- docs/release-notes/NuGet-5.0-preview.md | 54 +++++++++++++++++++------ 1 file changed, 41 insertions(+), 13 deletions(-) diff --git a/docs/release-notes/NuGet-5.0-preview.md b/docs/release-notes/NuGet-5.0-preview.md index 9fccca61b..fac9c5f83 100644 --- a/docs/release-notes/NuGet-5.0-preview.md +++ b/docs/release-notes/NuGet-5.0-preview.md @@ -9,11 +9,43 @@ ms.topic: conceptual # NuGet 5.0 Preview Release Notes +## NuGet 5.0 Preview Releases + +* February 13, 2019 - [NuGet 5.0 Preview 3](#summary-whats-new-in-50-preview-3) +* January 23, 2019 - [NuGet 5.0 Preview 2](#summary-whats-new-in-50-preview-2) + +## Summary: What's New in NuGet 5.0 Preview 3 + +### Issues fixed in this release + +**Bugs:** + +* nuget.exe /? should list correct msbuild versions - [#7794](https://github.com/NuGet/Home/issues/7794) + +* NuGet.targets(498,5): error : Could not find a part of the path '/tmp/NuGetScratch - on mono - [#7793](https://github.com/NuGet/Home/issues/7793) + +* restore unnecessarily enumerates the contents of all versions of referenced package in the machine cache - [#7639](https://github.com/NuGet/Home/issues/7639) + +* MSBuild auto-detection always selects 16.0 after installing VS 2019 Preview - [#7621](https://github.com/NuGet/Home/issues/7621) + +* dotnet list package on a solution outputs duplicate entries for framework - [#7607](https://github.com/NuGet/Home/issues/7607) + +* Exception "Empty path name is not legal" when calling IVsPackageInstaller.InstallPackage on old projects and packages folder does not exist. - [#5936](https://github.com/NuGet/Home/issues/5936) + +* msbuild /t:restore minimal verbosity should be more minimal - [#4695](https://github.com/NuGet/Home/issues/4695) + +**DCRs** + +* Allow package authors to define build assets transitive behavior - [#6091](https://github.com/NuGet/Home/issues/6091) + +* Enable restore in VS to succeed if a project is not part of solution or is not loaded, but has previously been restored - [#5820](https://github.com/NuGet/Home/issues/5820) + + ## Summary: What's New in 5.0 Preview 2 ### Issues fixed in this release -#### Bugs: +**Bugs:** * VS 16.0's NuGet UI has unreadable tabs due to color problems - [#7735](https://github.com/NuGet/Home/issues/7735) @@ -55,7 +87,7 @@ ms.topic: conceptual * dotnet restore fails due to disabled machine wide feed - [#5410](https://github.com/NuGet/Home/issues/5410) -#### DCRs +**DCRs** * NuGet 5.0 assemblies to require .NET 4.7.2 (via TFM change) - [#7510](https://github.com/NuGet/Home/issues/7510) @@ -72,20 +104,16 @@ ms.topic: conceptual [List of all issues fixed in this release 5.0.0-preview2](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.9.2") -## Known issues - -### dotnet nuget push --interactive gives an error on Mac. - [#7519](https://github.com/NuGet/Home/issues/7519) +### Known issues -#### Issue +#### dotnet nuget push --interactive gives an error on Mac. - [#7519](https://github.com/NuGet/Home/issues/7519) +**Issue** The `--interactive` argument is not being forwarded by the dotnet cli and results in the error `error: Missing value for option 'interactive'` - -#### Workaround +**Workaround** Run any other dotnet command with the interactive option such as `dotnet restore --interactive` and authenticate. The authentication then might be cached by the credential provider. Then run `dotnet nuget push`. -### Packages in FallbackFolders installed by .NET Core SDK are custom installed, and fail signature validation. - [#7414](https://github.com/NuGet/Home/issues/7414) - -#### Issue +#### Packages in FallbackFolders installed by .NET Core SDK are custom installed, and fail signature validation. - [#7414](https://github.com/NuGet/Home/issues/7414) +**Issue** When using dotnet.exe 2.x to restore a project that multi-targets netcoreapp 1.x and netcoreapp 2.x, the fallback folder is treated as a file feed. This means, when restoring, NuGet will pick the package from the fallback folder and try to install it into the global packages folder and do the usual signing validation which fails. - -#### Workaround +**Workaround** Disable the usage of the fallback folder by setting the `RestoreAdditionalProjectSources` to nothing. `` Use this with caution as it will cause a lot of packages to be downloaded from NuGet.org which otherwise would be have been restored from the fallback folder. From 77d671337700b53e53281c9f437254917eaa6a88 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 13 Feb 2019 17:18:51 -0800 Subject: [PATCH 1082/2943] Update NuGet-5.0-preview.md --- docs/release-notes/NuGet-5.0-preview.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/release-notes/NuGet-5.0-preview.md b/docs/release-notes/NuGet-5.0-preview.md index fac9c5f83..2249364f6 100644 --- a/docs/release-notes/NuGet-5.0-preview.md +++ b/docs/release-notes/NuGet-5.0-preview.md @@ -103,7 +103,6 @@ ms.topic: conceptual [List of all issues fixed in this release 5.0.0-preview2](https://github.com/NuGet/Home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.9.2") - ### Known issues #### dotnet nuget push --interactive gives an error on Mac. - [#7519](https://github.com/NuGet/Home/issues/7519) From 1ab750ff17e55c763d646c50e7630138804ce8b8 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 13 Feb 2019 17:34:00 -0800 Subject: [PATCH 1083/2943] Update NuGet-5.0-preview.md --- docs/release-notes/NuGet-5.0-preview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/NuGet-5.0-preview.md b/docs/release-notes/NuGet-5.0-preview.md index 2249364f6..d9cc31993 100644 --- a/docs/release-notes/NuGet-5.0-preview.md +++ b/docs/release-notes/NuGet-5.0-preview.md @@ -16,7 +16,7 @@ ms.topic: conceptual ## Summary: What's New in NuGet 5.0 Preview 3 -### Issues fixed in this release +### Issues fixed in this release **Bugs:** From f600d3d1f5a62f4134297eb2f9c1030e6174e041 Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Thu, 14 Feb 2019 08:30:28 -0800 Subject: [PATCH 1084/2943] add details of the endpoint uri for "int.nugettest.org" (#1313) * add details of the API Endpoint for "int.nugettest.org" --- docs/faqs/NuGet-FAQ.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/faqs/NuGet-FAQ.md b/docs/faqs/NuGet-FAQ.md index 302fe41b1..8f4d22b9a 100644 --- a/docs/faqs/NuGet-FAQ.md +++ b/docs/faqs/NuGet-FAQ.md @@ -161,7 +161,7 @@ NuGet recommends all packages to be signed. A design principle of package signin Note that dependencies listed for your package are generated automatically from the package itself and cannot be edited. -In addition, uploading packages to [int.nugettest.org](https://int.nugettest.org) is a great way to test and validate your package without making a package available in the public gallery. +In addition, uploading packages to [int.nugettest.org](https://int.nugettest.org) is a great way to test and validate your package without making a package available in the public gallery. API Endpoint: https://apiint.nugettest.org/v3/index.json **Is it possible to reserve names for packages that will be published in future?** From 2767a56dc3ff988fc59d7339104da289a6298c42 Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Thu, 14 Feb 2019 10:35:19 -0800 Subject: [PATCH 1085/2943] Improve tools.json doc to emphasize SemVer vs. chronological sorting (#1315) --- docs/api/tools-json.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/api/tools-json.md b/docs/api/tools-json.md index 5e7ca89af..28ac7e479 100644 --- a/docs/api/tools-json.md +++ b/docs/api/tools-json.md @@ -52,12 +52,17 @@ Name | Type | Required | Notes version | string | yes | A SemVer 2.0.0 string url | string | yes | An absolute URL for downloading this version of nuget.exe stage | string | yes | An enum string -uploaded | string | yes | An approximate timestamp of when the version was made available +uploaded | string | yes | An approximate ISO 8601 timestamp of when the version was made available -The items in the array will be sorted in descending, SemVer 2.0.0 order. This guarantee is meant to ease the burden on -a client looking for the latest version. +The items in the array will be sorted in descending, SemVer 2.0.0 order. This guarantee is meant to reduce the burden +of a client that is interested in highest version number. However this does mean that the list is not sorted in +chronological order. For example, if a lower major version is serviced at a date later than a higher major version, +this serviced version will not appear at the top of the list. If you want the latest version released by +*timestamp*, simply sort the array by the `uploaded` string. This works because the `uploaded` timestamp is in the +[ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format which can be sorted chronologically by +using a lexicographical sort (i.e. a simple string sort). -The `stage` property indicates how vettect this version of the tool is. +The `stage` property indicates how vetted this version of the tool is. Stage | Meaning ------------------ | ------ @@ -66,7 +71,7 @@ Released | Available on the download site but is not yet recommended f ReleasedAndBlessed | Available on the download site and is recommended for consumption One simple approach for having the latest, recommended version is to take the first version in the list that has the -`stage` value of `ReleasedAndBlessed`. +`stage` value of `ReleasedAndBlessed`. This works because the versions are sorted in SemVer 2.0.0 order. The `NuGet.CommandLine` package on nuget.org is typically only updated with `ReleasedAndBlessed` versions. From 68aabccbd39ed5da8b8c40da8944ecd7a61121da Mon Sep 17 00:00:00 2001 From: lindexi Date: Mon, 18 Feb 2019 17:04:42 +0800 Subject: [PATCH 1086/2943] Update nuspec.md --- docs/reference/nuspec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/nuspec.md b/docs/reference/nuspec.md index 8d83896c9..97c54cc6b 100644 --- a/docs/reference/nuspec.md +++ b/docs/reference/nuspec.md @@ -88,7 +88,7 @@ Here is the complete list of [SPDX license identifiers](https://spdx.org/license If your package is licensed under multiple common licenses, you can specify a composite license using the [SPDX expression syntax version 2.0](https://spdx.org/spdx-specification-21-web-version#h.jxpfx0ykyb60).
    For example: `BSD-2-Clause OR MIT` -If you are using a license that hasn’t been assigned an SPDX identifier, or it is a custom license, you can package a file (only `.txt.` or `.md`) with the license text. For example: +If you are using a license that hasn’t been assigned an SPDX identifier, or it is a custom license, you can package a file (only `.txt` or `.md`) with the license text. For example: ```xml From 29c4a8accec76e29615bbdbd6b2f9dad2aeefa9a Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Tue, 19 Feb 2019 09:52:01 -0800 Subject: [PATCH 1087/2943] Remove bad example that suggests that floating versions are valid in the nuspec (#1317) --- docs/reference/Package-Versioning.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/reference/Package-Versioning.md b/docs/reference/Package-Versioning.md index 51a6edd5f..4a5ae0724 100644 --- a/docs/reference/Package-Versioning.md +++ b/docs/reference/Package-Versioning.md @@ -183,9 +183,6 @@ The `version` attribute in a `` element describes the range versions - - - From 2544c102f5b30878b8b87e2f6ffe0a5264022b5f Mon Sep 17 00:00:00 2001 From: gauravdixit3 <47734882+gauravdixit3@users.noreply.github.com> Date: Thu, 21 Feb 2019 11:17:34 +0530 Subject: [PATCH 1088/2943] Update NU1101.md --- docs/reference/errors-and-warnings/NU1101.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/errors-and-warnings/NU1101.md b/docs/reference/errors-and-warnings/NU1101.md index 469005b7f..eadaca093 100644 --- a/docs/reference/errors-and-warnings/NU1101.md +++ b/docs/reference/errors-and-warnings/NU1101.md @@ -18,4 +18,4 @@ f1_keywords: The package cannot be found on any sources. ### Solution -Examine the project's dependencies in Visual Studio to be sure you're using the correct package identifier and version number. Also check that the [NuGet configuration](../../consume-packages/Configuring-NuGet-Behavior.md) identifies the package sources your expect to be using. If you use packages that have [Semantic Versioning 2.0.0](../../reference/package-versioning.md#semantic-versioning-200), please make sure that you are using the V3 feed, `https://api.nuget.org/v3/index.json`, in the [NuGet configuration](../../consume-packages/Configuring-NuGet-Behavior.md). \ No newline at end of file +Examine the project's dependencies in Visual Studio to be sure you're using the correct package identifier and version number. Also check that the [NuGet configuration](../../consume-packages/Configuring-NuGet-Behavior.md) identifies the package sources you are expected to be using. If you use packages that have [Semantic Versioning 2.0.0](../../reference/package-versioning.md#semantic-versioning-200), please make sure that you are using the V3 feed, `https://api.nuget.org/v3/index.json`, in the [NuGet configuration](../../consume-packages/Configuring-NuGet-Behavior.md). From 49495d63b70790d70c4970dacc4155a33f51efa0 Mon Sep 17 00:00:00 2001 From: Andrei Grigorev Date: Fri, 22 Feb 2019 11:43:01 -0800 Subject: [PATCH 1089/2943] licenses.nuget.org documentation (#1281) licenses.nuget.org documentation --- docs/TOC.md | 1 + docs/reference/licenses.nuget.org.md | 71 ++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 docs/reference/licenses.nuget.org.md diff --git a/docs/TOC.md b/docs/TOC.md index 431314620..6264fb06a 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -87,6 +87,7 @@ ## [NuGet client SDK](reference/nuget-client-sdk.md) ## [Signed packages](reference/signed-packages-reference.md) ## [Organizations on NuGet.org](reference/organizations-on-nuget-org.md) +## [licenses.nuget.org](reference/licenses.nuget.org.md) ## [Errors and Warnings](reference/Errors-and-Warnings.md) ### [NU1000](reference/errors-and-warnings/NU1000.md) ### [NU1001](reference/errors-and-warnings/NU1001.md) diff --git a/docs/reference/licenses.nuget.org.md b/docs/reference/licenses.nuget.org.md new file mode 100644 index 000000000..56d54c46c --- /dev/null +++ b/docs/reference/licenses.nuget.org.md @@ -0,0 +1,71 @@ +# licenses.nuget.org + +## Rationale + +With the introduction of the [license expressions](nuspec.md#license) a requirement emerged to have a reliable service +that would provide a reference text for individual license identifiers, exception identifiers or license expressions. +An additional requirement for this service is to have a stable URL schema, that is not susceptible to link rot, +so that we can safely use it to provide backwards compatibility for older clients. + +Licenses.nuget.org fulfills that role. Nuget.org uses it to provide the license text reference for packages that +specify their license using a license expression. `nuget pack` or packing with other +[client tools](https://docs.microsoft.com/en-us/nuget/install-nuget-client-tools) set +the [`licenseUrl`](nuspec.md#licenseurl) element to point to licenses.nuget.org to provide backwards +compatibility with older clients that don't support the `license` element. + +## Protocol + +Licenses.nuget.org is intended to be viewed by people in their browsers, no machine-readable responses are provided. +HTTPS protocol must be used and requests are expected to be constructed in a certain way. It only supports `GET` requests. +It accepts license expressions or license exception identifiers as an input in a way specified below. Please note, that all +elements of license expressions are case sensitive, and therefore all input to licenses.nuget.org is case sensitive as well. + +### License expressions + +#### Request + +License expressions (including the trivial cases when expression consists of a single license) have to be +[URL-encoded](https://tools.ietf.org/html/rfc3986#section-2.1) and used as a path in the request to +licenses.nuget.org. + +| License expression | URL to use | +|:---|:---| +MIT | https://licenses.nuget.org/MIT +(MIT) | https://licenses.nuget.org/(MIT) +(LGPL-2.0-only WITH FLTK-exception OR Apache-2.0+) | https://licenses.nuget.org/(LGPL-2.0-only%20WITH%20FLTK-exception%20OR%20Apache-2.0+) + +The service supports only license identifiers and license exception identifiers that are accepted by +nuget.org. All license expressions that contain unsupported license identifiers +or license exception identifiers or that does not conform to license expression syntax are considered +invalid. + +#### Response + +Licenses.nuget.org responds to requests containing valid license expressions with an HTTP 200 status code and +a web page containing a description of the license expression: +* if supplied license expression contains a single license identifier a web page is returned that contains that +license reference text; +* if supplied license expression is a composite license expression, a web page is returned that contains +the license expression with links to individual license or license exception references. + +Any requests that contain an invalid license expression result in an HTTP 404 response. + +### License exceptions + +#### Request + +License exception identifiers must be URL-encoded and used as a path in the request to licenses.nuget.org. +Only a single license exception identifier can be supplied in a single request. No additional characters besides +license exception identifier may present in the path portion of the URL. + +| License exception identifier | URL to use | +|:---|:---| +FLTK-exception | https://licenses.nuget.org/FLTK-exception +openvpn-openssl-exception | https://licenses.nuget.org/openvpn-openssl-exception + +#### Response + +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 From 99f220ab1c3a1c36ef37a049ed44e1fd104a33f2 Mon Sep 17 00:00:00 2001 From: Clyde D'Souza Date: Sat, 23 Feb 2019 22:33:03 +1300 Subject: [PATCH 1090/2943] Updated text to Azure DevOps Services Updated text from 'Visual Studio Team Services' to 'Azure DevOps Services'. --- docs/create-packages/Publish-a-package.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/create-packages/Publish-a-package.md b/docs/create-packages/Publish-a-package.md index d9d0b648c..c221e7a8b 100644 --- a/docs/create-packages/Publish-a-package.md +++ b/docs/create-packages/Publish-a-package.md @@ -23,7 +23,7 @@ For nuget.org, you must sign in with a Microsoft account, with which you'll be a ![NuGet sign in location](media/publish_NuGetSignIn.png) -Next, you can either upload the package through the nuget.org web portal, push to nuget.org from the command line (requires `nuget.exe` 4.1.0+) , or publish as part of a CI/CD process through Visual Studio Team Services, as described in the following sections. +Next, you can either upload the package through the nuget.org web portal, push to nuget.org from the command line (requires `nuget.exe` 4.1.0+) , or publish as part of a CI/CD process through Azure DevOps Services, as described in the following sections. ### Web portal: use the Upload Package tab on nuget.org @@ -88,9 +88,9 @@ Note that it might take a while for your package to be indexed and appear in sea ![Message indicating a package is not yet published](media/publish_NotYetIndexed.png) -### Visual Studio Team Services (CI/CD) +### Azure DevOps Services (CI/CD) -If you push packages to nuget.org using Visual Studio Team Services as part of your Continuous Integration/Deployment process, you must use `nuget.exe` 4.1 or above in the NuGet tasks. Details can be found on [Using the latest NuGet in your build](https://blogs.msdn.microsoft.com/devops/2017/09/29/using-the-latest-nuget-in-your-build/) (Microsoft DevOps blog). +If you push packages to nuget.org using Azure DevOps Services as part of your Continuous Integration/Deployment process, you must use `nuget.exe` 4.1 or above in the NuGet tasks. Details can be found on [Using the latest NuGet in your build](https://blogs.msdn.microsoft.com/devops/2017/09/29/using-the-latest-nuget-in-your-build/) (Microsoft DevOps blog). ## Managing package owners on nuget.org From 776ad520689454f3a12dd5d6b462c52421768bf9 Mon Sep 17 00:00:00 2001 From: Clyde D'Souza Date: Sat, 23 Feb 2019 22:35:05 +1300 Subject: [PATCH 1091/2943] Updated text to Azure Artifacts Updated text from ' Visual Studio Team Services Package Management' to 'Azure Artifacts'. --- docs/create-packages/Publish-a-package.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/create-packages/Publish-a-package.md b/docs/create-packages/Publish-a-package.md index c221e7a8b..925193e6d 100644 --- a/docs/create-packages/Publish-a-package.md +++ b/docs/create-packages/Publish-a-package.md @@ -13,9 +13,9 @@ ms.reviewer: anangaur Once you have created a package and have your `.nupkg` file in hand, it's a simple process to make it available to other developers, either publicly or privately: - Public packages are made available to all developers globally through [nuget.org](https://www.nuget.org/packages/manage/upload) as described in this article (requires NuGet 4.1.0+). -- Private packages are available to only a team or organization, by hosting them either a file share, a private NuGet server, [Visual Studio Team Services Package Management](https://www.visualstudio.com/docs/package/nuget/publish), or a third-party repository such as myget, ProGet, Nexus Repository, and Artifactory. For additional details, see [Hosting Packages Overview](../hosting-packages/overview.md). +- Private packages are available to only a team or organization, by hosting them either a file share, a private NuGet server, [Azure Artifacts](https://www.visualstudio.com/docs/package/nuget/publish), or a third-party repository such as myget, ProGet, Nexus Repository, and Artifactory. For additional details, see [Hosting Packages Overview](../hosting-packages/overview.md). -This article covers publishing to nuget.org; for publishing to Visual Studio Team Services, see [Package Management](https://www.visualstudio.com/docs/package/nuget/publish). +This article covers publishing to nuget.org; for publishing to Azure Artifacts, see [Package Management](https://www.visualstudio.com/docs/package/nuget/publish). ## Publish to nuget.org From e8e6e097130a979aa8dba92cdb6c00c3dacd25e3 Mon Sep 17 00:00:00 2001 From: Andrew Stanton Date: Sat, 23 Feb 2019 10:06:26 -0500 Subject: [PATCH 1092/2943] Fixing $authors$ to $author$ nuget pack for a csproj only works when $author$ is used in the nuspec and the [AssemblyCompany] is populated. $authors$ does not work. This resolves content feedback items https://github.com/NuGet/docs.microsoft.com-nuget/issues/1226 and should revert the changes made in https://github.com/NuGet/docs.microsoft.com-nuget/issues/1072 --- docs/reference/nuspec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/nuspec.md b/docs/reference/nuspec.md index 8d83896c9..451bd433c 100644 --- a/docs/reference/nuspec.md +++ b/docs/reference/nuspec.md @@ -190,7 +190,7 @@ With the exception of `$configuration$`, values in the project are used in prefe | --- | --- | --- | **$id$** | Project file | AssemblyName (title) from the project file | | **$version$** | AssemblyInfo | AssemblyInformationalVersion if present, otherwise AssemblyVersion | -| **$authors$** | AssemblyInfo | AssemblyCompany | +| **$author$** | AssemblyInfo | AssemblyCompany | | **$title$** | AssemblyInfo | AssemblyTitle | | **$description$** | AssemblyInfo | AssemblyDescription | | **$copyright$** | AssemblyInfo | AssemblyCopyright | From 50078732cac4452d3908d82cab5109e7a0820a43 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 26 Feb 2019 13:40:50 -0800 Subject: [PATCH 1093/2943] addresses Improve the docs/experience for deleting packages #6935 addresses Improve the docs/experience for deleting packages #6935 --- docs/faqs/NuGet-FAQ.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/faqs/NuGet-FAQ.md b/docs/faqs/NuGet-FAQ.md index 8f4d22b9a..33a751bc0 100644 --- a/docs/faqs/NuGet-FAQ.md +++ b/docs/faqs/NuGet-FAQ.md @@ -414,3 +414,7 @@ Follow the following steps to proceed with account deletion. 2. Click on this url: [https://www.nuget.org/account/delete](https://www.nuget.org/account/delete) and follow the steps to submit the request for deleting the account. Our customer support will process this request and perform the account deletion. + +### How to delete a package published to NuGet.org? +In general, we do not support deleting packages published to NuGet.org. Read more about our [policy on deleting packages](../policies/deleting-packages). + From 9e5f53983ce1e80fa5ffa31431da23ef4fa39cb9 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 26 Feb 2019 14:06:04 -0800 Subject: [PATCH 1094/2943] Update NuGet-FAQ.md --- docs/faqs/NuGet-FAQ.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/faqs/NuGet-FAQ.md b/docs/faqs/NuGet-FAQ.md index 33a751bc0..da4c36263 100644 --- a/docs/faqs/NuGet-FAQ.md +++ b/docs/faqs/NuGet-FAQ.md @@ -153,7 +153,7 @@ Each package is governed by the terms that are included with the package. You sh If a package does not specify the licensing terms, contact the package owner directly using the **Contact owners** link on the nuget.org package page. Microsoft does not license any intellectual property to you from third party package providers and is not responsible for information provided by third parties. -## Managing packages on nuget.org +## Managing packages on NuGet.org **Can I edit package metadata after it's been uploaded?** @@ -163,6 +163,9 @@ Note that dependencies listed for your package are generated automatically from In addition, uploading packages to [int.nugettest.org](https://int.nugettest.org) is a great way to test and validate your package without making a package available in the public gallery. API Endpoint: https://apiint.nugettest.org/v3/index.json +**Can I delete a package published to NuGet.org?** +In general, we do not support deleting a package published to NuGet.org. Read more about our [policy on deleting packages](../policies/deleting-packages). + **Is it possible to reserve names for packages that will be published in future?** Yes. You can reserve IDs for packages on [nuget.org](https://www.nuget.org/) by requesting a package ID prefix for your account. In order to request a package ID prefix, follow the instructions in the [documentation](https://docs.microsoft.com/nuget/reference/id-prefix-reservation). @@ -414,7 +417,3 @@ Follow the following steps to proceed with account deletion. 2. Click on this url: [https://www.nuget.org/account/delete](https://www.nuget.org/account/delete) and follow the steps to submit the request for deleting the account. Our customer support will process this request and perform the account deletion. - -### How to delete a package published to NuGet.org? -In general, we do not support deleting packages published to NuGet.org. Read more about our [policy on deleting packages](../policies/deleting-packages). - From 72d84a5d0e8d331aea5d19a95ced625c62176e9f Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 26 Feb 2019 14:07:00 -0800 Subject: [PATCH 1095/2943] Update NuGet-FAQ.md --- docs/faqs/NuGet-FAQ.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/faqs/NuGet-FAQ.md b/docs/faqs/NuGet-FAQ.md index da4c36263..211ba0d78 100644 --- a/docs/faqs/NuGet-FAQ.md +++ b/docs/faqs/NuGet-FAQ.md @@ -164,6 +164,7 @@ Note that dependencies listed for your package are generated automatically from In addition, uploading packages to [int.nugettest.org](https://int.nugettest.org) is a great way to test and validate your package without making a package available in the public gallery. API Endpoint: https://apiint.nugettest.org/v3/index.json **Can I delete a package published to NuGet.org?** + In general, we do not support deleting a package published to NuGet.org. Read more about our [policy on deleting packages](../policies/deleting-packages). **Is it possible to reserve names for packages that will be published in future?** From fc458bd3b0364a442a24686a2a7ead4e4d7f35bb Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 26 Feb 2019 14:40:48 -0800 Subject: [PATCH 1096/2943] Update Deleting-Packages.md --- docs/policies/Deleting-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/policies/Deleting-Packages.md b/docs/policies/Deleting-Packages.md index 5c07e62fc..7f5fe0046 100644 --- a/docs/policies/Deleting-Packages.md +++ b/docs/policies/Deleting-Packages.md @@ -18,7 +18,7 @@ nuget.org does supports *unlisting* a package, which can be done in the package ## Exceptions -In exceptional situations such as copyright infringement and potentially harmful content, packages can be deleted manually by the NuGet team. Submit a support request through [NuGet Gallery](http://www.nuget.org) to start the process. +In exceptional situations such as copyright infringement and potentially harmful content, packages can be deleted manually by the NuGet team. You can report a package using the "Report abuse" button on the package details page on NuGet.org to start the process. If you are the package owner, login to your NuGet.org account to reach NuGet support using the "Contact support" button on the package details page. ## Prohibited use From 9aac1e2f9daf9428840d0220ebcd59be6698c8b4 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 26 Feb 2019 14:43:00 -0800 Subject: [PATCH 1097/2943] Update Deleting-Packages.md --- docs/policies/Deleting-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/policies/Deleting-Packages.md b/docs/policies/Deleting-Packages.md index 7f5fe0046..6d1221197 100644 --- a/docs/policies/Deleting-Packages.md +++ b/docs/policies/Deleting-Packages.md @@ -18,7 +18,7 @@ nuget.org does supports *unlisting* a package, which can be done in the package ## Exceptions -In exceptional situations such as copyright infringement and potentially harmful content, packages can be deleted manually by the NuGet team. You can report a package using the "Report abuse" button on the package details page on NuGet.org to start the process. If you are the package owner, login to your NuGet.org account to reach NuGet support using the "Contact support" button on the package details page. +In exceptional situations such as copyright infringement and potentially harmful content, packages can be deleted manually by the NuGet team. You can report a package using the "Report abuse" button on the NuGet.org package details page. If you are the package owner, login to your NuGet.org account to reach NuGet support using the "Contact support" button on the NuGet.org package details page. ## Prohibited use From ace60c6906e74e8d6180f09205cad3064e37180c Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Thu, 28 Feb 2019 17:09:20 -0800 Subject: [PATCH 1098/2943] 5.0p4 release notes --- docs/release-notes/NuGet-5.0-preview.md | 56 +++++++++++++++++++++---- 1 file changed, 48 insertions(+), 8 deletions(-) diff --git a/docs/release-notes/NuGet-5.0-preview.md b/docs/release-notes/NuGet-5.0-preview.md index 2249364f6..b673285a8 100644 --- a/docs/release-notes/NuGet-5.0-preview.md +++ b/docs/release-notes/NuGet-5.0-preview.md @@ -9,11 +9,57 @@ ms.topic: conceptual # NuGet 5.0 Preview Release Notes +NuGet distribution vehicles: + +| NuGet version | Available in Visual Studio version| Available in .NET SDK(s)| +|:---|:---|:---| +| [**5.0.0-p4**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.0.0-preview4/rc](https://visualstudio.microsoft.com/downloads/) | [2.1.600, 2.2.200](https://www.microsoft.com/net/download/visual-studio-sdks) | + ## NuGet 5.0 Preview Releases +* February 27, 2010 - [NuGet 5.0 Preview 4](#summary-whats-new-in-50-preview-4) * February 13, 2019 - [NuGet 5.0 Preview 3](#summary-whats-new-in-50-preview-3) * January 23, 2019 - [NuGet 5.0 Preview 2](#summary-whats-new-in-50-preview-2) +## Summary: What's New in NuGet 5.0 Preview 4 + +### Issues fixed in this release + +**Bugs:** + +* NuGet.VisualStudio.IVsPackageInstaller - calling on a project with no package references always uses packages.config, even if the default is set to PackageReference - [#7005](https://github.com/NuGet/Home/issues/7005) + +* PMC: Update-Package reinstall fails ("Unable to find package") on delisted packages. - [#7268](https://github.com/NuGet/Home/issues/7268) + +* Add third party notice in our repo and VSIX - [#7409](https://github.com/NuGet/Home/issues/7409) + +* NuGet.VisualStudio.IVsPackageInstaller.InstallPackage should install latest version when no version given - [#7493](https://github.com/NuGet/Home/issues/7493) + +* --interactive support for dotnet nuget push - [#7519](https://github.com/NuGet/Home/issues/7519) + +* When restoring with lock file, NU1603 warning shouldn't be raised. - [#7529](https://github.com/NuGet/Home/issues/7529) + +* NuGet should not print project path during restore with minimal logging - [#7647](https://github.com/NuGet/Home/issues/7647) + +* --interactive support for dotnet remove package - [#7727](https://github.com/NuGet/Home/issues/7727) + +* Add back NuGet.Packaging.Core with TypeForwardedTo attrs - [#7768](https://github.com/NuGet/Home/issues/7768) + +* plugins_cache needs shorter path to work well - [#7770](https://github.com/NuGet/Home/issues/7770) + +* Prefer path for msbuild discovery if user didn't ask for specific msbuild version - [#7786](https://github.com/NuGet/Home/issues/7786) + +**DCRs:** + +* limit http request number per source through NuGet.Config - [#4538](https://github.com/NuGet/Home/issues/4538) + +* NuGet should target Net472 (to help Cleanup the 16.0 build of the VSIX) - [#7143](https://github.com/NuGet/Home/issues/7143) + +* PMC: Remove OpenPackagePage command - [#7384](https://github.com/NuGet/Home/issues/7384) + +* Make NetCoreApp 3.0 map to NetStandard 2.1 - [#7762](https://github.com/NuGet/Home/issues/7762) + + ## Summary: What's New in NuGet 5.0 Preview 3 ### Issues fixed in this release @@ -34,7 +80,7 @@ ms.topic: conceptual * msbuild /t:restore minimal verbosity should be more minimal - [#4695](https://github.com/NuGet/Home/issues/4695) -**DCRs** +**DCRs:** * Allow package authors to define build assets transitive behavior - [#6091](https://github.com/NuGet/Home/issues/6091) @@ -87,7 +133,7 @@ ms.topic: conceptual * dotnet restore fails due to disabled machine wide feed - [#5410](https://github.com/NuGet/Home/issues/5410) -**DCRs** +**DCRs:** * NuGet 5.0 assemblies to require .NET 4.7.2 (via TFM change) - [#7510](https://github.com/NuGet/Home/issues/7510) @@ -105,12 +151,6 @@ ms.topic: conceptual ### Known issues -#### dotnet nuget push --interactive gives an error on Mac. - [#7519](https://github.com/NuGet/Home/issues/7519) -**Issue** -The `--interactive` argument is not being forwarded by the dotnet cli and results in the error `error: Missing value for option 'interactive'` -**Workaround** -Run any other dotnet command with the interactive option such as `dotnet restore --interactive` and authenticate. The authentication then might be cached by the credential provider. Then run `dotnet nuget push`. - #### Packages in FallbackFolders installed by .NET Core SDK are custom installed, and fail signature validation. - [#7414](https://github.com/NuGet/Home/issues/7414) **Issue** When using dotnet.exe 2.x to restore a project that multi-targets netcoreapp 1.x and netcoreapp 2.x, the fallback folder is treated as a file feed. This means, when restoring, NuGet will pick the package from the fallback folder and try to install it into the global packages folder and do the usual signing validation which fails. From eeb74fc1bb9e8ca7c51d2d0c282cbc09317e4920 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 28 Feb 2019 17:38:48 -0800 Subject: [PATCH 1099/2943] Update NuGet-5.0-preview.md --- docs/release-notes/NuGet-5.0-preview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/NuGet-5.0-preview.md b/docs/release-notes/NuGet-5.0-preview.md index b673285a8..fa2c65424 100644 --- a/docs/release-notes/NuGet-5.0-preview.md +++ b/docs/release-notes/NuGet-5.0-preview.md @@ -13,7 +13,7 @@ NuGet distribution vehicles: | NuGet version | Available in Visual Studio version| Available in .NET SDK(s)| |:---|:---|:---| -| [**5.0.0-p4**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.0.0-preview4/rc](https://visualstudio.microsoft.com/downloads/) | [2.1.600, 2.2.200](https://www.microsoft.com/net/download/visual-studio-sdks) | +| [**5.0.0-p4**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.0.0-preview4/rc](https://docs.microsoft.com/en-us/visualstudio/releases/2019/release-notes-preview) | [2.1.600, 2.2.200](https://www.microsoft.com/net/download/visual-studio-sdks) | ## NuGet 5.0 Preview Releases From fcb4ac7b5e9a76f52304bbe425758c32cf12052e Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Thu, 28 Feb 2019 17:44:05 -0800 Subject: [PATCH 1100/2943] Update NuGet-5.0-preview.md --- docs/release-notes/NuGet-5.0-preview.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/release-notes/NuGet-5.0-preview.md b/docs/release-notes/NuGet-5.0-preview.md index fa2c65424..55790b567 100644 --- a/docs/release-notes/NuGet-5.0-preview.md +++ b/docs/release-notes/NuGet-5.0-preview.md @@ -59,6 +59,8 @@ NuGet distribution vehicles: * Make NetCoreApp 3.0 map to NetStandard 2.1 - [#7762](https://github.com/NuGet/Home/issues/7762) +* Add netstandard2.0 support to NuGet.* packages - [#6516](https://github.com/NuGet/Home/issues/6516) + ## Summary: What's New in NuGet 5.0 Preview 3 From 742b78f02e64622f83bad31fd44a7e374876e20f Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 28 Feb 2019 18:01:38 -0800 Subject: [PATCH 1101/2943] Update NuGet-5.0-preview.md --- docs/release-notes/NuGet-5.0-preview.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/release-notes/NuGet-5.0-preview.md b/docs/release-notes/NuGet-5.0-preview.md index 55790b567..aba168b53 100644 --- a/docs/release-notes/NuGet-5.0-preview.md +++ b/docs/release-notes/NuGet-5.0-preview.md @@ -9,12 +9,6 @@ ms.topic: conceptual # NuGet 5.0 Preview Release Notes -NuGet distribution vehicles: - -| NuGet version | Available in Visual Studio version| Available in .NET SDK(s)| -|:---|:---|:---| -| [**5.0.0-p4**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.0.0-preview4/rc](https://docs.microsoft.com/en-us/visualstudio/releases/2019/release-notes-preview) | [2.1.600, 2.2.200](https://www.microsoft.com/net/download/visual-studio-sdks) | - ## NuGet 5.0 Preview Releases * February 27, 2010 - [NuGet 5.0 Preview 4](#summary-whats-new-in-50-preview-4) From 67d50091b775db9eb419a12358efa14057bb0493 Mon Sep 17 00:00:00 2001 From: Kirill Basin Date: Fri, 1 Mar 2019 13:42:14 +1100 Subject: [PATCH 1102/2943] Update NuGet-5.0-preview.md Fixed typo in latest release date --- docs/release-notes/NuGet-5.0-preview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/NuGet-5.0-preview.md b/docs/release-notes/NuGet-5.0-preview.md index aba168b53..af461f7d9 100644 --- a/docs/release-notes/NuGet-5.0-preview.md +++ b/docs/release-notes/NuGet-5.0-preview.md @@ -11,7 +11,7 @@ ms.topic: conceptual ## NuGet 5.0 Preview Releases -* February 27, 2010 - [NuGet 5.0 Preview 4](#summary-whats-new-in-50-preview-4) +* February 27, 2019 - [NuGet 5.0 Preview 4](#summary-whats-new-in-50-preview-4) * February 13, 2019 - [NuGet 5.0 Preview 3](#summary-whats-new-in-50-preview-3) * January 23, 2019 - [NuGet 5.0 Preview 2](#summary-whats-new-in-50-preview-2) From 36c9353d2bff2f8b85f3e65f51ef4c2ebdd79028 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Fri, 1 Mar 2019 13:49:20 -0800 Subject: [PATCH 1103/2943] Update ID-Prefix-Reservation.md --- docs/reference/ID-Prefix-Reservation.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/reference/ID-Prefix-Reservation.md b/docs/reference/ID-Prefix-Reservation.md index baee4e30d..5a0b7cf2b 100644 --- a/docs/reference/ID-Prefix-Reservation.md +++ b/docs/reference/ID-Prefix-Reservation.md @@ -80,6 +80,8 @@ When reviewing any application for ID prefix reservation, the [nuget.org](https: 1. Are the identifying properties of the packages that match the package ID prefix clear and consistent (especially the package author)? +1. Do the packages have a license (using the [license](https://docs.microsoft.com/en-us/nuget/reference/nuspec#license) metadata element and NOT licenseUrl which is being deprecated)? + ## Third party feed provider scenarios If a third party feed provider is interested in implementing their own service to provide prefix reservations, you can do so by modifying the search service in the NuGet V3 feed providers. The addition in the feed search service is to add the *verified* property, with examples for the V3 feeds below. The NuGet client will not support the added property in the V2 feed. From b316e007b9a2d9e17f204ac33a3987e6744efcb8 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Fri, 1 Mar 2019 13:55:40 -0800 Subject: [PATCH 1104/2943] Update NuGet-5.0-preview.md --- docs/release-notes/NuGet-5.0-preview.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/release-notes/NuGet-5.0-preview.md b/docs/release-notes/NuGet-5.0-preview.md index af461f7d9..a836cc888 100644 --- a/docs/release-notes/NuGet-5.0-preview.md +++ b/docs/release-notes/NuGet-5.0-preview.md @@ -11,15 +11,15 @@ ms.topic: conceptual ## NuGet 5.0 Preview Releases -* February 27, 2019 - [NuGet 5.0 Preview 4](#summary-whats-new-in-50-preview-4) -* February 13, 2019 - [NuGet 5.0 Preview 3](#summary-whats-new-in-50-preview-3) -* January 23, 2019 - [NuGet 5.0 Preview 2](#summary-whats-new-in-50-preview-2) +* February 27, 2019 - [NuGet 5.0 Preview 4](#whats-new-in-nuget-50-preview-4) +* February 13, 2019 - [NuGet 5.0 Preview 3](#whats-new-in-nuget-50-preview-3) +* January 23, 2019 - [NuGet 5.0 Preview 2](#whats-new-in-nuget-50-preview-2) -## Summary: What's New in NuGet 5.0 Preview 4 +## What's New in NuGet 5.0 Preview 4 ### Issues fixed in this release -**Bugs:** +**Bugs** * NuGet.VisualStudio.IVsPackageInstaller - calling on a project with no package references always uses packages.config, even if the default is set to PackageReference - [#7005](https://github.com/NuGet/Home/issues/7005) @@ -43,7 +43,7 @@ ms.topic: conceptual * Prefer path for msbuild discovery if user didn't ask for specific msbuild version - [#7786](https://github.com/NuGet/Home/issues/7786) -**DCRs:** +**DCRs** * limit http request number per source through NuGet.Config - [#4538](https://github.com/NuGet/Home/issues/4538) @@ -56,11 +56,11 @@ ms.topic: conceptual * Add netstandard2.0 support to NuGet.* packages - [#6516](https://github.com/NuGet/Home/issues/6516) -## Summary: What's New in NuGet 5.0 Preview 3 +## What's New in NuGet 5.0 Preview 3 ### Issues fixed in this release -**Bugs:** +**Bugs** * nuget.exe /? should list correct msbuild versions - [#7794](https://github.com/NuGet/Home/issues/7794) @@ -76,18 +76,18 @@ ms.topic: conceptual * msbuild /t:restore minimal verbosity should be more minimal - [#4695](https://github.com/NuGet/Home/issues/4695) -**DCRs:** +**DCRs** * Allow package authors to define build assets transitive behavior - [#6091](https://github.com/NuGet/Home/issues/6091) * Enable restore in VS to succeed if a project is not part of solution or is not loaded, but has previously been restored - [#5820](https://github.com/NuGet/Home/issues/5820) -## Summary: What's New in 5.0 Preview 2 +## What's New in NuGet 5.0 Preview 2 ### Issues fixed in this release -**Bugs:** +**Bugs** * VS 16.0's NuGet UI has unreadable tabs due to color problems - [#7735](https://github.com/NuGet/Home/issues/7735) @@ -129,7 +129,7 @@ ms.topic: conceptual * dotnet restore fails due to disabled machine wide feed - [#5410](https://github.com/NuGet/Home/issues/5410) -**DCRs:** +**DCRs** * NuGet 5.0 assemblies to require .NET 4.7.2 (via TFM change) - [#7510](https://github.com/NuGet/Home/issues/7510) From 33c0bed2b0606345bb6227084625d76ca1a8b92a Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Fri, 1 Mar 2019 16:58:00 -0800 Subject: [PATCH 1105/2943] Add API docs for the package details template resource --- docs/TOC.md | 3 +- docs/api/overview.md | 3 +- docs/api/package-details-template-resource.md | 67 +++++++++++++++++++ 3 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 docs/api/package-details-template-resource.md diff --git a/docs/TOC.md b/docs/TOC.md index 6264fb06a..1e4414049 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -229,9 +229,10 @@ ## [Autocomplete](api/search-autocomplete-service-resource.md) ## [Package metadata](api/registration-base-url-resource.md) ## [Package content](api/package-base-address-resource.md) -## [Report abuse URL](api/report-abuse-resource.md) ## [Repository signatures](api/repository-signatures-resource.md) ## [Catalog](api/catalog-resource.md) +## [Report abuse URL](api/report-abuse-resource.md) +## [Package details URL](api/package-details-template-resource.md) ## [Rate limits](api/rate-limits.md) ## [nuget.org protocols](api/nuget-protocols.md) ## [tools.json](api/tools-json.md) diff --git a/docs/api/overview.md b/docs/api/overview.md index eddfd5d70..767eec658 100644 --- a/docs/api/overview.md +++ b/docs/api/overview.md @@ -60,10 +60,11 @@ Resource name | Require [`RegistrationsBaseUrl`](registration-base-url-resource.md) | yes | Get package metadata. [`PackageBaseAddress`](package-base-address-resource.md) | yes | Get package content (.nupkg). [`SearchAutocompleteService`](search-autocomplete-service-resource.md) | no | Discover package IDs and versions by substring. -[`ReportAbuseUriTemplate`](report-abuse-resource.md) | no | Construct a URL to access a "report abuse" web page. [`RepositorySignatures`](repository-signatures-resource.md) | no | Get certificates used for repository signing. [`Catalog`](catalog-resource.md) | no | Full record of all package events. [`SymbolPackagePublish`](symbol-package-publish-resource.md) | no | Push symbol packages. +[`ReportAbuseUriTemplate`](report-abuse-resource.md) | no | Construct a URL to access a report abuse web page. +[`PackageDetailsUriTemplate`](package-details-template-resource.md) | no | Construct a URL to access a package details web page. In general, all non-binary data returned by a API resource are serialized using JSON. The response schema returned by each resource in the service index is defined individually for that resource. For more information about diff --git a/docs/api/package-details-template-resource.md b/docs/api/package-details-template-resource.md new file mode 100644 index 000000000..4f0d91631 --- /dev/null +++ b/docs/api/package-details-template-resource.md @@ -0,0 +1,67 @@ +--- +title: Package Details URL Template, NuGet API +description: The package details URL template allows clients to display in their UI a web link to more package details +author: joelverhagen +ms.author: jver +ms.date: 3/1/2019 +ms.topic: reference +ms.reviewer: ananguar +--- + +# Package details URL template + +It is possible for a client to build a URL that can be used by the user to see more package details in their web +browser. This is useful when a package source wants show additional information about a package that may not fit within +the scope of what the NuGet client application shows. + +The resource used for building this URL is the `PackageDetailsUriTemplate` resource found in the +[service index](service-index.md). + +## Versioning + +The following `@type` values are used: + +@type value | Notes +------------------------------- | ----- +PackageDetailsUriTemplate/5.0.0 | The initial release + +## URL template + +The URL for the following API is the value of the `@id` property associated with one of the aforementioned +resource `@type` values. + +## HTTP methods + +Although the client is not intended to make requests to the package details URL on behalf of the user, the web page +should support the `GET` method to allow a clicked URL to be easily opened in a web browser. + +## Construct the URL + +Given a known package ID and version, the client implementation can construct a URL used to access a web interface. The +client implementation should display this constructed URL (or clickable link) to the user allowing them to open a web +browser to the URL and to learn more about the package. The contents of the package details page is determined by the +server implementation. + +The URL must be an absolute URL and the scheme (protocol) must be HTTPS. + +The value of the `@id` in the service index is a URL string containing any of the following placeholder tokens: + +### URL placeholders + +Name | Type | Required | Notes +----------- | ------- | -------- | ----- +`{id}` | string | no | The package ID to get details for +`{version}` | string | no | The package version to get details for + +The `{id}` and `{version}` values interpreted by the server implementation must be case insensitive and not sensitive to +whether the version is normalized. In other words, the server should accept the package ID with any casing and +also accept non-normalized versions. + +For example, nuget.org's package details template looks like this: + + https://www.nuget.org/packages/{id}/{version} + +If the client implementation needs to display a link to the package details for NuGet.Versioning 4.3.0, it would +produce the following URL and provide it to the user: + + https://www.nuget.org/packages/NuGet.Versioning/4.3.0 From 9683cca7e76cfc3c81f615fa9b65b1f2fbfcd2d4 Mon Sep 17 00:00:00 2001 From: Clyde D'Souza Date: Sun, 10 Mar 2019 22:34:40 +1300 Subject: [PATCH 1106/2943] Remove typo Remove the period and space at the beginning of the sentence. --- docs/create-packages/Publish-a-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Publish-a-package.md b/docs/create-packages/Publish-a-package.md index 925193e6d..37b4c1f35 100644 --- a/docs/create-packages/Publish-a-package.md +++ b/docs/create-packages/Publish-a-package.md @@ -78,7 +78,7 @@ To submit signed packages, you must first [register the certificate](../referenc Packages pushed to nuget.org undergo several validations, such as virus checks. (All packages on nuget.org are periodically scanned.) -. When the package has passed all validation checks, it might take a while for it to be indexed and appear in search results. Once indexing is complete, you receive an email confirming that the package was successfully published. If the package fails a validation check, the package details page will update to display the associated error and you also receive an email notifying you about it. +When the package has passed all validation checks, it might take a while for it to be indexed and appear in search results. Once indexing is complete, you receive an email confirming that the package was successfully published. If the package fails a validation check, the package details page will update to display the associated error and you also receive an email notifying you about it. Package validation and indexing usually takes under 15 minutes. If the package publishing is taking longer than expected, visit [status.nuget.org](https://status.nuget.org/) to check if nuget.org is experiencing any interruptions. If all systems are operational and the package hasn't been successfully published within an hour, please login to nuget.org and contact us using the Contact Support link on the package page. From c2d1ee4004c041ca6a183660fa22567de0c9c02b Mon Sep 17 00:00:00 2001 From: Clyde D'Souza Date: Sun, 10 Mar 2019 22:49:06 +1300 Subject: [PATCH 1107/2943] Update incorrect link Previous link didn't have the `register-the-certificate-on-nugetorg` section. Fix the link to redirect to correct page that has this section. --- docs/create-packages/Publish-a-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Publish-a-package.md b/docs/create-packages/Publish-a-package.md index 925193e6d..98b7dfa8d 100644 --- a/docs/create-packages/Publish-a-package.md +++ b/docs/create-packages/Publish-a-package.md @@ -69,7 +69,7 @@ To push packages to nuget.org you must use [nuget.exe v4.1.0 or above](https://w #### Publish signed packages -To submit signed packages, you must first [register the certificate](../reference/Signed-Packages-Reference.md#register-certificate-on-nugetorg) used for signing the packages. +To submit signed packages, you must first [register the certificate](../Sign-a-Package.md#register-the-certificate-on-nugetorg) used for signing the packages. > [!Warning] > nuget.org rejects packages that don't satisfy the [signed package requirements](../reference/Signed-Packages-Reference.md#signature-requirements-on-nugetorg). From a2dca75840e516220720fb23a7c2faabd2468235 Mon Sep 17 00:00:00 2001 From: Clyde D'Souza Date: Sun, 10 Mar 2019 22:54:05 +1300 Subject: [PATCH 1108/2943] Fix relative link Fix relative link to the sign the package page. --- docs/create-packages/Publish-a-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Publish-a-package.md b/docs/create-packages/Publish-a-package.md index 98b7dfa8d..f4745acc6 100644 --- a/docs/create-packages/Publish-a-package.md +++ b/docs/create-packages/Publish-a-package.md @@ -69,7 +69,7 @@ To push packages to nuget.org you must use [nuget.exe v4.1.0 or above](https://w #### Publish signed packages -To submit signed packages, you must first [register the certificate](../Sign-a-Package.md#register-the-certificate-on-nugetorg) used for signing the packages. +To submit signed packages, you must first [register the certificate](../create-packages/Sign-a-Package.md#register-the-certificate-on-nugetorg) used for signing the packages. > [!Warning] > nuget.org rejects packages that don't satisfy the [signed package requirements](../reference/Signed-Packages-Reference.md#signature-requirements-on-nugetorg). From 80aba8a61982b19b64f78fe90a874b7a96d93e95 Mon Sep 17 00:00:00 2001 From: Tarik Guney <369188+tarikguney@users.noreply.github.com> Date: Thu, 14 Mar 2019 16:04:44 -0600 Subject: [PATCH 1109/2943] Update Prerelease-Packages.md Changed `they` to `the`. --- docs/create-packages/Prerelease-Packages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Prerelease-Packages.md b/docs/create-packages/Prerelease-Packages.md index b4d67783f..df62b7778 100644 --- a/docs/create-packages/Prerelease-Packages.md +++ b/docs/create-packages/Prerelease-Packages.md @@ -51,7 +51,7 @@ By default, NuGet does not include pre-release versions when working with packag ## Semantic versioning -The [Semantic Versioning or SemVer convention](http://semver.org/spec/v1.0.0.html) describes how to utilize strings in version numbers to convey they meaning of the underlying code. +The [Semantic Versioning or SemVer convention](http://semver.org/spec/v1.0.0.html) describes how to utilize strings in version numbers to convey the meaning of the underlying code. In this convention, each version has three parts, `Major.Minor.Patch`, with the following meaning: From 8954678e11c3ae8a3d282ddcbe212e454a24db38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Mon, 18 Mar 2019 14:10:20 -0700 Subject: [PATCH 1110/2943] Improve FAQ wording (#1352) --- docs/faqs/NuGet-FAQ.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/faqs/NuGet-FAQ.md b/docs/faqs/NuGet-FAQ.md index 211ba0d78..c4f03d24e 100644 --- a/docs/faqs/NuGet-FAQ.md +++ b/docs/faqs/NuGet-FAQ.md @@ -341,8 +341,8 @@ Follow the steps in [Unable to use microsoft login, how do I recover my nuget.or ### Unable to use microsoft login, how do I recover my nuget.org account? If you tried using the [sign in assistance](#which-microsoft-account-is-linked-to-my-nugetorg-account) and you do not have access to the Microsoft account that is associated with your nuget.org account, please follow the steps below to link a new Microsoft account to your nuget.org account. -1. **Requirement**: You will need an access to a Microsoft account(which is not associated with any existing nuget.org accounts). If you do not have one, you can [create](https://signup.live.com) one. -2. Follow the [steps to recover your password login](#how-to-recover-nugetorg-password-login), if you have the password login skip this step. +1. **Requirement**: You will need access to a Microsoft account which is not associated with any existing nuget.org accounts. If you do not have one, you can [create](https://signup.live.com) one. +2. If you've forgotten your username and password for your nuget.org account, follow the [steps to recover your password login](#how-to-recover-nugetorg-password-login). 3. [Login to nuget.org](https://www.nuget.org/users/account/LogOnNuGetAccount) using the username/password login. 4. Once logged in, you will see the popup dialog show up like below. This is the password discontinuation dialog box. 5. **NOTE**: Please ignore the instruction to login with the specified Microsoft account. You can now link your nuget.org account to any other Microsoft login. From 529bfc1696b761eb88f4ad750f8c19838cc6aae7 Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Mon, 18 Mar 2019 16:36:25 -0700 Subject: [PATCH 1111/2943] remove confusing words about install.ps1 not working in v3 -- really should be about PackageRef...which is covered elsewhere --- docs/create-packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Creating-a-Package.md b/docs/create-packages/Creating-a-Package.md index 2d7f56ea6..7ee7ec555 100644 --- a/docs/create-packages/Creating-a-Package.md +++ b/docs/create-packages/Creating-a-Package.md @@ -161,7 +161,7 @@ Because a NuGet package is just a ZIP file that's been renamed with the `.nupkg` The advantage to this approach is that you don't need to specify in the manifest which files you want to include in the package (as explained later in this topic). You can simply have your build process produce the exact folder structure that goes into the package, and you can easily include other files that might not be part of a project otherwise: - Content and source code that should be injected into the target project. -- PowerShell scripts (packages used in NuGet 2.x can include installation scripts as well, which is not supported in NuGet 3.x and later). +- PowerShell scripts - Transformations to existing configuration and source code files in a project. The folder conventions are as follows: From 0a67f0b6be1a62db86f951a54ee0a2d0d608a57c Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Fri, 22 Mar 2019 15:10:12 -0700 Subject: [PATCH 1112/2943] document security fixes in release notes --- docs/release-notes/NuGet-4.3-RTM.md | 9 ++++++++- docs/release-notes/NuGet-4.4-RTM.md | 9 ++++++++- docs/release-notes/NuGet-4.5-RTM.md | 9 ++++++++- docs/release-notes/NuGet-4.6-rtm.md | 9 +++++++-- docs/release-notes/NuGet-4.7-RTM.md | 9 +++++++-- docs/release-notes/NuGet-4.8-RTM.md | 8 ++++++-- docs/release-notes/NuGet-4.9-RTM.md | 6 ++++++ 7 files changed, 50 insertions(+), 9 deletions(-) diff --git a/docs/release-notes/NuGet-4.3-RTM.md b/docs/release-notes/NuGet-4.3-RTM.md index e4e881756..c2e6887b1 100644 --- a/docs/release-notes/NuGet-4.3-RTM.md +++ b/docs/release-notes/NuGet-4.3-RTM.md @@ -8,10 +8,17 @@ ms.topic: conceptual ms.reviewer: anangaur --- -# NuGet 4.3 RTM Release Notes +# NuGet 4.3 Release Notes [Visual Studio 2017 15.3 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.3 RTM which adds support for new scenarios such as .NET Standard 2.0/.NET Core 2.0, contains many quality fixes, and improves performance. This release also brings several improvements like support for Semantic Versioning 2.0.0, MSBuild integration of NuGet warnings and errors, and more. +## Summary: What's New in 4.3.0 + +## Summary: What's New in 4.3.1 + +* Security Fix: Permissions on files created inside ~/.nuget are too open [#7673](https://github.com/NuGet/Home/issues/7673) [CVE-2019-0757](https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2019-0757) +* Security Fix: Files inside of NUPKGs can have a relative path above the NUPKG directory [#7906](https://github.com/NuGet/Home/issues/7906) + ## Known issues ### NuGet restore may treat disabled package sources as enabled in some cases diff --git a/docs/release-notes/NuGet-4.4-RTM.md b/docs/release-notes/NuGet-4.4-RTM.md index bb45b954e..e0b0728c2 100644 --- a/docs/release-notes/NuGet-4.4-RTM.md +++ b/docs/release-notes/NuGet-4.4-RTM.md @@ -8,10 +8,17 @@ ms.topic: conceptual ms.reviewer: anangaur --- -# NuGet 4.4 RTM Release Notes +# NuGet 4.4 Release Notes [Visual Studio 2017 15.4 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.4 RTM. +## Summary: What's New in 4.4.0 + +## Summary: What's New in 4.4.3 + +* Security Fix: Permissions on files created inside ~/.nuget are too open [#7673](https://github.com/NuGet/Home/issues/7673) [CVE-2019-0757](https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2019-0757) +* Security Fix: Files inside of NUPKGs can have a relative path above the NUPKG directory [#7906](https://github.com/NuGet/Home/issues/7906) + ## Known issues ### Issues with .NET Standard 2.0 with .NET Framework & NuGet diff --git a/docs/release-notes/NuGet-4.5-RTM.md b/docs/release-notes/NuGet-4.5-RTM.md index 01a19af68..cedade895 100644 --- a/docs/release-notes/NuGet-4.5-RTM.md +++ b/docs/release-notes/NuGet-4.5-RTM.md @@ -7,10 +7,17 @@ ms.date: 12/4/2017 ms.topic: conceptual --- -# NuGet 4.5 RTM Release Notes +# NuGet 4.5 Release Notes [Visual Studio 2017 15.5 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with [NuGet 4.5 RTM](https://dist.nuget.org/win-x86-commandline/v4.5.0/nuget.exe). +## Summary: What's New in 4.5.0 + +## Summary: What's New in 4.5.3 + +* Security Fix: Permissions on files created inside ~/.nuget are too open [#7673](https://github.com/NuGet/Home/issues/7673) [CVE-2019-0757](https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2019-0757) +* Security Fix: Files inside of NUPKGs can have a relative path above the NUPKG directory [#7906](https://github.com/NuGet/Home/issues/7906) + ## Known issues ### Issues with .NET Standard 2.0 with .NET Framework & NuGet diff --git a/docs/release-notes/NuGet-4.6-rtm.md b/docs/release-notes/NuGet-4.6-rtm.md index 891dc0b67..b6ed55c20 100644 --- a/docs/release-notes/NuGet-4.6-rtm.md +++ b/docs/release-notes/NuGet-4.6-rtm.md @@ -7,16 +7,21 @@ ms.date: 3/7/2018 ms.topic: conceptual --- -# NuGet 4.6 RTM Release Notes +# NuGet 4.6 Release Notes [Visual Studio 2017 15.6 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with [NuGet 4.6.0](https://dist.nuget.org/win-x86-commandline/v4.6.0/nuget.exe). -## Summary: What's New in this Release +## Summary: What's New in 4.6.0 * We have added support for [signing packages](../create-packages/sign-a-package.md). * Visual Studio 2017 and nuget.exe now verifies package integrity before installing, restoring packages for [signed packages](../reference/signed-packages-reference.md). * We have improved performance of successive restores. +## Summary: What's New in 4.6.4 + +* Security Fix: Permissions on files created inside ~/.nuget are too open [#7673](https://github.com/NuGet/Home/issues/7673) [CVE-2019-0757](https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2019-0757) +* Security Fix: Files inside of NUPKGs can have a relative path above the NUPKG directory [#7906](https://github.com/NuGet/Home/issues/7906) + ## Known issues ### Issues with .NET Standard 2.0 with .NET Framework & NuGet diff --git a/docs/release-notes/NuGet-4.7-RTM.md b/docs/release-notes/NuGet-4.7-RTM.md index 6cb986751..3299124e1 100644 --- a/docs/release-notes/NuGet-4.7-RTM.md +++ b/docs/release-notes/NuGet-4.7-RTM.md @@ -7,16 +7,21 @@ ms.date: 5/14/2018 ms.topic: conceptual --- -# NuGet 4.7 RTM Release Notes +# NuGet 4.7 Release Notes [Visual Studio 2017 15.7 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with [NuGet 4.7.0](https://dist.nuget.org/win-x86-commandline/v4.7.0/nuget.exe). -## Summary: What's New in this Release +## Summary: What's New in 4.7.0 * We have augmented package signing to enable [Repository Signed packages](https://github.com/NuGet/Home/wiki/Repository-Signatures) * With Visual Studio Version 15.7, we have introduced the capability to [migrate existing projects that use the packages.config format to use PackageReference](https://docs.microsoft.com/en-us/nuget/reference/migrate-packages-config-to-package-reference) instead. +## Summary: What's New in 4.7.3 + +* Security Fix: Permissions on files created inside ~/.nuget are too open [#7673](https://github.com/NuGet/Home/issues/7673) [CVE-2019-0757](https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2019-0757) +* Security Fix: Files inside of NUPKGs can have a relative path above the NUPKG directory [#7906](https://github.com/NuGet/Home/issues/7906) + ## Known issues ### The `Migrate packages.config to PackageReference...` option is not available in the right-click context menu diff --git a/docs/release-notes/NuGet-4.8-RTM.md b/docs/release-notes/NuGet-4.8-RTM.md index f7b8b2a18..53b2ed285 100644 --- a/docs/release-notes/NuGet-4.8-RTM.md +++ b/docs/release-notes/NuGet-4.8-RTM.md @@ -7,7 +7,7 @@ ms.date: 5/14/2018 ms.topic: conceptual --- -# NuGet 4.8 RTM Release Notes +# NuGet 4.8 Release Notes [Visual Studio 2017 15.8 RTW](https://www.visualstudio.com/news/releasenotes/vs2017-relnotes) comes with NuGet 4.8 functionality. @@ -17,12 +17,16 @@ Command line versions of the same functionality are also available: * DotNet.exe - [.NET Core SDK 2.1.400](https://www.microsoft.com/net/download/visual-studio-sdks) -## Summary: What's New in this Release +## Summary: What's New in 4.8.0 * NuGet.exe now supports longfilenames on Windows 10 - [#6937](https://github.com/NuGet/Home/issues/6937) * Authentication plugins now work across MsBuild, DotNet.exe, NuGet.exe and Visual Studio, including cross platform. The first generation of authentication plugins were not supported in MsBuild, DotNet.exe. Note: VS 2017 15.9 Preview builds have a VSTS authentication plugin included. [#6486](https://github.com/NuGet/Home/issues/6486) * MsBuild's SDK Resolver now builds as part of NuGet and installs with NuGet tools for VS. This will avoid versions getting out sync. [#6799](https://github.com/NuGet/Home/issues/6799) * PackageReference now supports DevelopmentDependency metadata - [#4125](https://github.com/NuGet/Home/issues/4125) +## Summary: What's New in 4.8.2 + +* Security Fix: Permissions on files created inside ~/.nuget are too open [#7673](https://github.com/NuGet/Home/issues/7673) [CVE-2019-0757](https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2019-0757) + ## Known issues ### Installing signed packages on a CI machine or in an offline environment takes longer than usual diff --git a/docs/release-notes/NuGet-4.9-RTM.md b/docs/release-notes/NuGet-4.9-RTM.md index 98262c658..e098443d0 100644 --- a/docs/release-notes/NuGet-4.9-RTM.md +++ b/docs/release-notes/NuGet-4.9-RTM.md @@ -134,6 +134,12 @@ NuGet distribution vehicles: * Error building symbol .snupkg package when using embedded license file - [#7591](https://github.com/NuGet/Home/issues/7591) [List of all issues fixed in this release 4.9.3](https://github.com/nuget/home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%224.9.3") + +## Summary: What's New in 4.9.4 + +* Security Fix: Permissions on files created inside ~/.nuget are too open [#7673](https://github.com/NuGet/Home/issues/7673) [CVE-2019-0757](https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2019-0757) + + ## Known issues ### dotnet nuget push --interactive gives an error on Mac. - [#7519](https://github.com/NuGet/Home/issues/7519) From 03d5748ed3840d4f9b56b8a42c3ddb04ead2d367 Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Fri, 22 Mar 2019 16:54:37 -0700 Subject: [PATCH 1113/2943] more granular release detail --- docs/release-notes/NuGet-4.4-RTM.md | 5 ++++- docs/release-notes/NuGet-4.5-RTM.md | 5 ++++- docs/release-notes/NuGet-4.6-rtm.md | 5 ++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/docs/release-notes/NuGet-4.4-RTM.md b/docs/release-notes/NuGet-4.4-RTM.md index e0b0728c2..5ca141eb5 100644 --- a/docs/release-notes/NuGet-4.4-RTM.md +++ b/docs/release-notes/NuGet-4.4-RTM.md @@ -14,9 +14,12 @@ ms.reviewer: anangaur ## Summary: What's New in 4.4.0 -## Summary: What's New in 4.4.3 +## Summary: What's New in 4.4.2 * Security Fix: Permissions on files created inside ~/.nuget are too open [#7673](https://github.com/NuGet/Home/issues/7673) [CVE-2019-0757](https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2019-0757) + +## Summary: What's New in 4.4.3 + * Security Fix: Files inside of NUPKGs can have a relative path above the NUPKG directory [#7906](https://github.com/NuGet/Home/issues/7906) ## Known issues diff --git a/docs/release-notes/NuGet-4.5-RTM.md b/docs/release-notes/NuGet-4.5-RTM.md index cedade895..507e183f7 100644 --- a/docs/release-notes/NuGet-4.5-RTM.md +++ b/docs/release-notes/NuGet-4.5-RTM.md @@ -13,9 +13,12 @@ ms.topic: conceptual ## Summary: What's New in 4.5.0 -## Summary: What's New in 4.5.3 +## Summary: What's New in 4.5.2 * Security Fix: Permissions on files created inside ~/.nuget are too open [#7673](https://github.com/NuGet/Home/issues/7673) [CVE-2019-0757](https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2019-0757) + +## Summary: What's New in 4.5.3 + * Security Fix: Files inside of NUPKGs can have a relative path above the NUPKG directory [#7906](https://github.com/NuGet/Home/issues/7906) ## Known issues diff --git a/docs/release-notes/NuGet-4.6-rtm.md b/docs/release-notes/NuGet-4.6-rtm.md index b6ed55c20..b1e089539 100644 --- a/docs/release-notes/NuGet-4.6-rtm.md +++ b/docs/release-notes/NuGet-4.6-rtm.md @@ -17,9 +17,12 @@ ms.topic: conceptual * Visual Studio 2017 and nuget.exe now verifies package integrity before installing, restoring packages for [signed packages](../reference/signed-packages-reference.md). * We have improved performance of successive restores. -## Summary: What's New in 4.6.4 +## Summary: What's New in 4.6.3 * Security Fix: Permissions on files created inside ~/.nuget are too open [#7673](https://github.com/NuGet/Home/issues/7673) [CVE-2019-0757](https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2019-0757) + +## Summary: What's New in 4.6.4 + * Security Fix: Files inside of NUPKGs can have a relative path above the NUPKG directory [#7906](https://github.com/NuGet/Home/issues/7906) ## Known issues From fc6b6c1fa7705dde21e290773bff1125292647e5 Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Fri, 22 Mar 2019 16:55:40 -0700 Subject: [PATCH 1114/2943] more granular release detail --- docs/release-notes/NuGet-4.7-RTM.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/NuGet-4.7-RTM.md b/docs/release-notes/NuGet-4.7-RTM.md index 3299124e1..627222fc0 100644 --- a/docs/release-notes/NuGet-4.7-RTM.md +++ b/docs/release-notes/NuGet-4.7-RTM.md @@ -17,9 +17,12 @@ ms.topic: conceptual * With Visual Studio Version 15.7, we have introduced the capability to [migrate existing projects that use the packages.config format to use PackageReference](https://docs.microsoft.com/en-us/nuget/reference/migrate-packages-config-to-package-reference) instead. -## Summary: What's New in 4.7.3 +## Summary: What's New in 4.7.2 * Security Fix: Permissions on files created inside ~/.nuget are too open [#7673](https://github.com/NuGet/Home/issues/7673) [CVE-2019-0757](https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2019-0757) + +## Summary: What's New in 4.7.3 + * Security Fix: Files inside of NUPKGs can have a relative path above the NUPKG directory [#7906](https://github.com/NuGet/Home/issues/7906) ## Known issues From 10bfee20908e96efb3fe3f472e3863b735346e1c Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 25 Mar 2019 15:37:07 -0700 Subject: [PATCH 1115/2943] Revert "Add API docs for the package details template resource" --- docs/TOC.md | 3 +- docs/api/overview.md | 3 +- docs/api/package-details-template-resource.md | 67 ------------------- 3 files changed, 2 insertions(+), 71 deletions(-) delete mode 100644 docs/api/package-details-template-resource.md diff --git a/docs/TOC.md b/docs/TOC.md index 1e4414049..6264fb06a 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -229,10 +229,9 @@ ## [Autocomplete](api/search-autocomplete-service-resource.md) ## [Package metadata](api/registration-base-url-resource.md) ## [Package content](api/package-base-address-resource.md) +## [Report abuse URL](api/report-abuse-resource.md) ## [Repository signatures](api/repository-signatures-resource.md) ## [Catalog](api/catalog-resource.md) -## [Report abuse URL](api/report-abuse-resource.md) -## [Package details URL](api/package-details-template-resource.md) ## [Rate limits](api/rate-limits.md) ## [nuget.org protocols](api/nuget-protocols.md) ## [tools.json](api/tools-json.md) diff --git a/docs/api/overview.md b/docs/api/overview.md index 767eec658..eddfd5d70 100644 --- a/docs/api/overview.md +++ b/docs/api/overview.md @@ -60,11 +60,10 @@ Resource name | Require [`RegistrationsBaseUrl`](registration-base-url-resource.md) | yes | Get package metadata. [`PackageBaseAddress`](package-base-address-resource.md) | yes | Get package content (.nupkg). [`SearchAutocompleteService`](search-autocomplete-service-resource.md) | no | Discover package IDs and versions by substring. +[`ReportAbuseUriTemplate`](report-abuse-resource.md) | no | Construct a URL to access a "report abuse" web page. [`RepositorySignatures`](repository-signatures-resource.md) | no | Get certificates used for repository signing. [`Catalog`](catalog-resource.md) | no | Full record of all package events. [`SymbolPackagePublish`](symbol-package-publish-resource.md) | no | Push symbol packages. -[`ReportAbuseUriTemplate`](report-abuse-resource.md) | no | Construct a URL to access a report abuse web page. -[`PackageDetailsUriTemplate`](package-details-template-resource.md) | no | Construct a URL to access a package details web page. In general, all non-binary data returned by a API resource are serialized using JSON. The response schema returned by each resource in the service index is defined individually for that resource. For more information about diff --git a/docs/api/package-details-template-resource.md b/docs/api/package-details-template-resource.md deleted file mode 100644 index 4f0d91631..000000000 --- a/docs/api/package-details-template-resource.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Package Details URL Template, NuGet API -description: The package details URL template allows clients to display in their UI a web link to more package details -author: joelverhagen -ms.author: jver -ms.date: 3/1/2019 -ms.topic: reference -ms.reviewer: ananguar ---- - -# Package details URL template - -It is possible for a client to build a URL that can be used by the user to see more package details in their web -browser. This is useful when a package source wants show additional information about a package that may not fit within -the scope of what the NuGet client application shows. - -The resource used for building this URL is the `PackageDetailsUriTemplate` resource found in the -[service index](service-index.md). - -## Versioning - -The following `@type` values are used: - -@type value | Notes -------------------------------- | ----- -PackageDetailsUriTemplate/5.0.0 | The initial release - -## URL template - -The URL for the following API is the value of the `@id` property associated with one of the aforementioned -resource `@type` values. - -## HTTP methods - -Although the client is not intended to make requests to the package details URL on behalf of the user, the web page -should support the `GET` method to allow a clicked URL to be easily opened in a web browser. - -## Construct the URL - -Given a known package ID and version, the client implementation can construct a URL used to access a web interface. The -client implementation should display this constructed URL (or clickable link) to the user allowing them to open a web -browser to the URL and to learn more about the package. The contents of the package details page is determined by the -server implementation. - -The URL must be an absolute URL and the scheme (protocol) must be HTTPS. - -The value of the `@id` in the service index is a URL string containing any of the following placeholder tokens: - -### URL placeholders - -Name | Type | Required | Notes ------------ | ------- | -------- | ----- -`{id}` | string | no | The package ID to get details for -`{version}` | string | no | The package version to get details for - -The `{id}` and `{version}` values interpreted by the server implementation must be case insensitive and not sensitive to -whether the version is normalized. In other words, the server should accept the package ID with any casing and -also accept non-normalized versions. - -For example, nuget.org's package details template looks like this: - - https://www.nuget.org/packages/{id}/{version} - -If the client implementation needs to display a link to the package details for NuGet.Versioning 4.3.0, it would -produce the following URL and provide it to the user: - - https://www.nuget.org/packages/NuGet.Versioning/4.3.0 From 60f638d40df15e2e3d68b98a93d23d7503e62e4a Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Mon, 25 Mar 2019 16:22:28 -0700 Subject: [PATCH 1116/2943] Add API docs for the package details template resource (#1363) Progress on https://github.com/NuGet/Home/issues/5299 --- docs/TOC.md | 3 +- docs/api/overview.md | 3 +- docs/api/package-details-template-resource.md | 68 +++++++++++++++++++ 3 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 docs/api/package-details-template-resource.md diff --git a/docs/TOC.md b/docs/TOC.md index 6264fb06a..1e4414049 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -229,9 +229,10 @@ ## [Autocomplete](api/search-autocomplete-service-resource.md) ## [Package metadata](api/registration-base-url-resource.md) ## [Package content](api/package-base-address-resource.md) -## [Report abuse URL](api/report-abuse-resource.md) ## [Repository signatures](api/repository-signatures-resource.md) ## [Catalog](api/catalog-resource.md) +## [Report abuse URL](api/report-abuse-resource.md) +## [Package details URL](api/package-details-template-resource.md) ## [Rate limits](api/rate-limits.md) ## [nuget.org protocols](api/nuget-protocols.md) ## [tools.json](api/tools-json.md) diff --git a/docs/api/overview.md b/docs/api/overview.md index eddfd5d70..767eec658 100644 --- a/docs/api/overview.md +++ b/docs/api/overview.md @@ -60,10 +60,11 @@ Resource name | Require [`RegistrationsBaseUrl`](registration-base-url-resource.md) | yes | Get package metadata. [`PackageBaseAddress`](package-base-address-resource.md) | yes | Get package content (.nupkg). [`SearchAutocompleteService`](search-autocomplete-service-resource.md) | no | Discover package IDs and versions by substring. -[`ReportAbuseUriTemplate`](report-abuse-resource.md) | no | Construct a URL to access a "report abuse" web page. [`RepositorySignatures`](repository-signatures-resource.md) | no | Get certificates used for repository signing. [`Catalog`](catalog-resource.md) | no | Full record of all package events. [`SymbolPackagePublish`](symbol-package-publish-resource.md) | no | Push symbol packages. +[`ReportAbuseUriTemplate`](report-abuse-resource.md) | no | Construct a URL to access a report abuse web page. +[`PackageDetailsUriTemplate`](package-details-template-resource.md) | no | Construct a URL to access a package details web page. In general, all non-binary data returned by a API resource are serialized using JSON. The response schema returned by each resource in the service index is defined individually for that resource. For more information about diff --git a/docs/api/package-details-template-resource.md b/docs/api/package-details-template-resource.md new file mode 100644 index 000000000..4d126fbf5 --- /dev/null +++ b/docs/api/package-details-template-resource.md @@ -0,0 +1,68 @@ +--- +title: Package Details URL Template, NuGet API +description: The package details URL template allows clients to display in their UI a web link to more package details +author: joelverhagen +ms.author: jver +ms.date: 3/1/2019 +ms.topic: reference +ms.reviewer: ananguar +--- + +# Package details URL template + +It is possible for a client to build a URL that can be used by the user to see more package details in their web +browser. This is useful when a package source wants show additional information about a package that may not fit within +the scope of what the NuGet client application shows. + +The resource used for building this URL is the `PackageDetailsUriTemplate` resource found in the +[service index](service-index.md). + +## Versioning + +The following `@type` values are used: + +@type value | Notes +------------------------------- | ----- +PackageDetailsUriTemplate/5.1.0 | The initial release + +## URL template + +The URL for the following API is the value of the `@id` property associated with one of the aforementioned +resource `@type` values. + +## HTTP methods + +Although the client is not intended to make requests to the package details URL on behalf of the user, the web page +should support the `GET` method to allow a clicked URL to be easily opened in a web browser. + +## Construct the URL + +Given a known package ID and version, the client implementation can construct a URL used to access a web interface. The +client implementation should display this constructed URL (or clickable link) to the user allowing them to open a web +browser to the URL and to learn more about the package. The contents of the package details page is determined by the +server implementation. + +The URL must be an absolute URL and the scheme (protocol) must be HTTPS. + +The value of the `@id` in the service index is a URL string containing any of the following placeholder tokens: + +### URL placeholders + +Name | Type | Required | Notes +----------- | ------- | -------- | ----- +`{id}` | string | no | The package ID to get details for +`{version}` | string | no | The package version to get details for + +The server should accept `{id}` and `{version}` values with any casing. In addition, the server should not be sensitive +to whether the version is +[normalized](https://docs.microsoft.com/en-us/nuget/reference/package-versioning#normalized-version-numbers). In other +words, the server should accept also accept non-normalized versions. + +For example, nuget.org's package details template looks like this: + + https://www.nuget.org/packages/{id}/{version} + +If the client implementation needs to display a link to the package details for NuGet.Versioning 4.3.0, it would +produce the following URL and provide it to the user: + + https://www.nuget.org/packages/NuGet.Versioning/4.3.0 From e3866a2cbc35195b0847c79707c4932b2ce0b487 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Fri, 29 Mar 2019 10:21:24 -0700 Subject: [PATCH 1117/2943] Fixing #1259 Fixing #1259 --- docs/tools/Package-Manager-UI.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tools/Package-Manager-UI.md b/docs/tools/Package-Manager-UI.md index 2d540ce7e..12bad2856 100644 --- a/docs/tools/Package-Manager-UI.md +++ b/docs/tools/Package-Manager-UI.md @@ -122,7 +122,7 @@ To manage package sources: 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. -1. Use the up and down arrow buttons to change the priority order of the package sources. Visual Studio searches these sources in the priority order when restoring packages for a project. For more information, see [Package restore](../consume-packages/package-restore.md). +1. Using the up and down arrow buttons does not change the priority order of the package sources. Visual Studio ignores the order of package sources, using the package from whichever source is first to respond to requests. For more information, see [Package restore](../consume-packages/package-restore.md). > [!Tip] > If a package source reappears after deleting it, it may be listed in a computer-level or user-level `NuGet.Config` files. See [Configuring NuGet behavior](../consume-packages/configuring-nuget-behavior.md) for the location of these files, then remove the source by editing the files manually or using the [nuget sources command](../tools/nuget-exe-CLI-reference.md). From 5a4e8571a9dd7e43a35b7dcc1ce50e154ad97308 Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Fri, 29 Mar 2019 10:33:05 -0700 Subject: [PATCH 1118/2943] Address comments --- docs/TOC.md | 23 ++++++------ docs/api/overview.md | 36 +++++++++---------- docs/api/package-details-template-resource.md | 4 +-- 3 files changed, 32 insertions(+), 31 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index 1e4414049..facfdadc4 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -221,18 +221,19 @@ ### [project.json impact](archive/project-json-impact.md) # API ## [Overview](api/overview.md) +## Resources +### [Autocomplete](api/search-autocomplete-service-resource.md) +### [Catalog](api/catalog-resource.md) +### [Package content](api/package-base-address-resource.md) +### [Package details URL](api/package-details-template-resource.md) +### [Package metadata](api/registration-base-url-resource.md) +### [Push and delete](api/package-publish-resource.md) +### [Push symbol packages](api/symbol-package-publish-resource.md) +### [Report abuse URL](api/report-abuse-resource.md) +### [Repository signatures](api/repository-signatures-resource.md) +### [Search](api/search-query-service-resource.md) +### [Service index](api/service-index.md) ## [How-to: query for all packages using the API](guides/api/query-for-all-published-packages.md) -## [Service index](api/service-index.md) -## [Push and delete](api/package-publish-resource.md) -## [Push symbol packages](api/symbol-package-publish-resource.md) -## [Search](api/search-query-service-resource.md) -## [Autocomplete](api/search-autocomplete-service-resource.md) -## [Package metadata](api/registration-base-url-resource.md) -## [Package content](api/package-base-address-resource.md) -## [Repository signatures](api/repository-signatures-resource.md) -## [Catalog](api/catalog-resource.md) -## [Report abuse URL](api/report-abuse-resource.md) -## [Package details URL](api/package-details-template-resource.md) ## [Rate limits](api/rate-limits.md) ## [nuget.org protocols](api/nuget-protocols.md) ## [tools.json](api/tools-json.md) diff --git a/docs/api/overview.md b/docs/api/overview.md index 767eec658..c15016af6 100644 --- a/docs/api/overview.md +++ b/docs/api/overview.md @@ -53,18 +53,18 @@ Non-breaking protocol changes have been made to the API since it was first relea The **service index** describes a variety of resources. The current set of supported resources are as follows: -Resource name | Required | Description ----------------------------------------------------------------------- | -------- | ----------- -[`PackagePublish`](package-publish-resource.md) | yes | Push and delete (or unlist) packages. -[`SearchQueryService`](search-query-service-resource.md) | yes | Filter and search for packages by keyword. -[`RegistrationsBaseUrl`](registration-base-url-resource.md) | yes | Get package metadata. -[`PackageBaseAddress`](package-base-address-resource.md) | yes | Get package content (.nupkg). -[`SearchAutocompleteService`](search-autocomplete-service-resource.md) | no | Discover package IDs and versions by substring. -[`RepositorySignatures`](repository-signatures-resource.md) | no | Get certificates used for repository signing. -[`Catalog`](catalog-resource.md) | no | Full record of all package events. -[`SymbolPackagePublish`](symbol-package-publish-resource.md) | no | Push symbol packages. -[`ReportAbuseUriTemplate`](report-abuse-resource.md) | no | Construct a URL to access a report abuse web page. -[`PackageDetailsUriTemplate`](package-details-template-resource.md) | no | Construct a URL to access a package details web page. +Resource name | Required | Description +-------------------------------------------------------------------- | -------- | ----------- +[Catalog](catalog-resource.md) | no | Full record of all package events. +[PackageBaseAddress](package-base-address-resource.md) | yes | Get package content (.nupkg). +[PackageDetailsUriTemplate](package-details-template-resource.md) | no | Construct a URL to access a package details web page. +[PackagePublish](package-publish-resource.md) | yes | Push and delete (or unlist) packages. +[RegistrationsBaseUrl](registration-base-url-resource.md) | yes | Get package metadata. +[ReportAbuseUriTemplate](report-abuse-resource.md) | no | Construct a URL to access a report abuse web page. +[RepositorySignatures](repository-signatures-resource.md) | no | Get certificates used for repository signing. +[SearchAutocompleteService](search-autocomplete-service-resource.md) | no | Discover package IDs and versions by substring. +[SearchQueryService](search-query-service-resource.md) | yes | Filter and search for packages by keyword. +[SymbolPackagePublish](symbol-package-publish-resource.md) | no | Push symbol packages. In general, all non-binary data returned by a API resource are serialized using JSON. The response schema returned by each resource in the service index is defined individually for that resource. For more information about @@ -141,12 +141,12 @@ client retries three times when encountering any 500-level status code or TCP/DN ## HTTP request headers -Name | Description ------------------------- | ----------- -X-NuGet-ApiKey | Required for push and delete, see [`PackagePublish` resource](package-publish-resource.md) -X-NuGet-Client-Version | **Deprecated** and replaced by `X-NuGet-Protocol-Version` -X-NuGet-Protocol-Version | Required in certain cases only on nuget.org, see [nuget.org protocols](NuGet-Protocols.md) -X-NuGet-Session-Id | *Optional*. NuGet clients v4.7+ identify HTTP requests that are part of the same NuGet client session. For `PackageReference` restore operations there is a single session id, for other scenarios such as auto complete, and `packages.config` restore there may be several different session id's due to how the code is factored. +Name | Description +-------------------------- | ----------- +`X-NuGet-ApiKey` | Required for push and delete, see [`PackagePublish` resource](package-publish-resource.md) +`X-NuGet-Client-Version` | **Deprecated** and replaced by `X-NuGet-Protocol-Version` +`X-NuGet-Protocol-Version` | Required in certain cases only on nuget.org, see [nuget.org protocols](NuGet-Protocols.md) +`X-NuGet-Session-Id` | *Optional*. NuGet clients v4.7+ identify HTTP requests that are part of the same NuGet client session. For `PackageReference` restore operations there is a single session id, for other scenarios such as auto complete, and `packages.config` restore there may be several different session id's due to how the code is factored. ## Authentication diff --git a/docs/api/package-details-template-resource.md b/docs/api/package-details-template-resource.md index 4d126fbf5..d2e332ef8 100644 --- a/docs/api/package-details-template-resource.md +++ b/docs/api/package-details-template-resource.md @@ -11,8 +11,8 @@ ms.reviewer: ananguar # Package details URL template It is possible for a client to build a URL that can be used by the user to see more package details in their web -browser. This is useful when a package source wants show additional information about a package that may not fit within -the scope of what the NuGet client application shows. +browser. This is useful when a package source wants to show additional information about a package that may not fit +within the scope of what the NuGet client application shows. The resource used for building this URL is the `PackageDetailsUriTemplate` resource found in the [service index](service-index.md). From 7d3408cd1e7c34b728189d955dc3992a3c141b10 Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Fri, 29 Mar 2019 10:39:00 -0700 Subject: [PATCH 1119/2943] Move a long line out of the table --- docs/api/overview.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/api/overview.md b/docs/api/overview.md index c15016af6..68e7c5e24 100644 --- a/docs/api/overview.md +++ b/docs/api/overview.md @@ -141,12 +141,16 @@ client retries three times when encountering any 500-level status code or TCP/DN ## HTTP request headers -Name | Description --------------------------- | ----------- -`X-NuGet-ApiKey` | Required for push and delete, see [`PackagePublish` resource](package-publish-resource.md) -`X-NuGet-Client-Version` | **Deprecated** and replaced by `X-NuGet-Protocol-Version` -`X-NuGet-Protocol-Version` | Required in certain cases only on nuget.org, see [nuget.org protocols](NuGet-Protocols.md) -`X-NuGet-Session-Id` | *Optional*. NuGet clients v4.7+ identify HTTP requests that are part of the same NuGet client session. For `PackageReference` restore operations there is a single session id, for other scenarios such as auto complete, and `packages.config` restore there may be several different session id's due to how the code is factored. +Name | Description +------------------------ | ----------- +X-NuGet-ApiKey | Required for push and delete, see [`PackagePublish` resource](package-publish-resource.md) +X-NuGet-Client-Version | **Deprecated** and replaced by `X-NuGet-Protocol-Version` +X-NuGet-Protocol-Version | Required in certain cases only on nuget.org, see [nuget.org protocols](NuGet-Protocols.md) +X-NuGet-Session-Id | *Optional*. NuGet clients v4.7+ identify HTTP requests that are part of the same NuGet client session. + +The `X-NuGet-Session-Id` has a single value for all operations related to a single restore in `PackageReference`. For +other scenarios such as autocomplete and `packages.config` restore there may be several different session ID's due to +how the code is factored. ## Authentication From cf9e49884e80b25319bffb4581e7b4899304c38a Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Fri, 29 Mar 2019 17:48:05 -0700 Subject: [PATCH 1120/2943] improve nu1605 based on feedback issues in docs. --- docs/reference/errors-and-warnings/NU1605.md | 29 ++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/docs/reference/errors-and-warnings/NU1605.md b/docs/reference/errors-and-warnings/NU1605.md index b9ddcccb0..6b4e11114 100644 --- a/docs/reference/errors-and-warnings/NU1605.md +++ b/docs/reference/errors-and-warnings/NU1605.md @@ -12,10 +12,35 @@ f1_keywords: # NuGet Warning NU1605 +## Example 1 +
    Detected package downgrade: 'PackageB' from 4.0.0 to 3.5.0. Reference the package directly from the project to select a different version.
    'PackageA' 3.5.0 -> 'PackageB' 3.5.0
    'PackageC' 4.0.0 -> 'PackageD' 4.0.0 -> 'PackageB' 4.0.0
    ### Issue -A dependency package specified a version constraint on a higher version of a package than restore ultimately resolved. That is, because of the "nearest wins" rule when resolving packages, a nearer package in the graph may have overridden a distant package. +A dependency package specified a version constraint on a higher version of a package than restore ultimately resolved. That is, because of the [`nearest-wins`](https://docs.microsoft.com/en-us/nuget/consume-packages/dependency-resolution#nearest-wins) rule when resolving packages, a nearer package in the graph may have overridden a distant package. + +### Solution +To the project exhibiting the restore error, add a package reference to the higher version of the package + +In the example above, you would add a package reference to Package B version 4.0.0: + +
    +  'PackageA' 3.5.0 -> 'PackageB' 3.5.0
    + 'PackageC' 4.0.0 -> 'PackageD' 4.0.0 -> 'PackageB' 4.0.0
    + 'PackageB' 4.0.0 +
    + +Since, [`nearest-wins`](https://docs.microsoft.com/en-us/nuget/consume-packages/dependency-resolution#nearest-wins), the direct package reference to PackageB 4.0.0 (made at level 1), will take precedence over PackageB (made at level 2). + +## Example 2 + +
    Detected package downgrade: Microsoft.NETCore.App from 2.1.8 to 2.1.0. Reference the package directly from the project to select a different version.
    + test -> mvc -> Microsoft.NETCore.App (>= 2.1.8)
    + test -> Microsoft.NETCore.App (>= 2.1.0)
    +
    + +### Issue +The mvc project specified a version constraint on a higher version of a package than restore ultimately resolved. That is, because of the [`nearest-wins`](https://docs.microsoft.com/en-us/nuget/consume-packages/dependency-resolution#nearest-wins) rule when resolving packages, a nearer package in the graph may have overridden a distant package. ### Solution -Add a direct reference to the project for the higher version of the package that you want to use. \ No newline at end of file +This specific error (with Microsoft.NETCore.App package) is improved my moving your .NET Core SDK to 2.2.100 or later. A related doc page about (Self-contained deployment runtime roll forward)[https://docs.microsoft.com/en-us/dotnet/core/deploying/runtime-patch-selection] may help. Microsoft.NETCore.App is an auto-referenced package that the .NET Core SDK before version 3.0.100 chooses to bring in automatically. \ No newline at end of file From 7e9973eafa25bfcbd3b0ce3c9e568c398a26c9e7 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Mon, 1 Apr 2019 13:44:14 -0700 Subject: [PATCH 1121/2943] Replace NuGet.Client package with NuGet.Commands --- docs/reference/NuGet-Client-SDK.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/NuGet-Client-SDK.md b/docs/reference/NuGet-Client-SDK.md index 1de910521..f0b961359 100644 --- a/docs/reference/NuGet-Client-SDK.md +++ b/docs/reference/NuGet-Client-SDK.md @@ -12,7 +12,7 @@ ms.topic: conceptual > [!Note] > Not to be confused with the [NuGet *Web* API](https://docs.microsoft.com/en-us/nuget/api/overview) -The *NuGet Client SDK* refers to a group of .NET libraries centered around [NuGet.Client](https://www.nuget.org/packages/NuGet.Client), [Nuget.Packaging](https://www.nuget.org/packages/NuGet.Packaging), and [NuGet.Protocol](https://www.nuget.org/packages/NuGet.Protocol). These packages replace the earlier [NuGet.Core](https://www.nuget.org/packages/NuGet.Core/) library. +The *NuGet Client SDK* refers to a group of .NET libraries centered around [NuGet.Commands](https://www.nuget.org/packages/NuGet.Commands), [Nuget.Packaging](https://www.nuget.org/packages/NuGet.Packaging), and [NuGet.Protocol](https://www.nuget.org/packages/NuGet.Protocol). These packages replace the earlier [NuGet.Core](https://www.nuget.org/packages/NuGet.Core/) library. We are working on having a stable surface area that we can document soon. From 84c37be577b6025bba1ec3e238c024b1004daa66 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 2 Apr 2019 11:53:18 -0700 Subject: [PATCH 1122/2943] Create NuGet-5.0-RTM.md --- docs/release-notes/NuGet-5.0-RTM.md | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 docs/release-notes/NuGet-5.0-RTM.md diff --git a/docs/release-notes/NuGet-5.0-RTM.md b/docs/release-notes/NuGet-5.0-RTM.md new file mode 100644 index 000000000..03138443b --- /dev/null +++ b/docs/release-notes/NuGet-5.0-RTM.md @@ -0,0 +1,32 @@ +--- +title: NuGet 5.0 RTM Release Notes +description: Release notes for NuGet 5.0 including known issues, bug fixes, new features, and DCRs. +author: karann-msft +ms.author: karann +ms.date: 11/20/2018 +ms.topic: conceptual +--- + +# NuGet 5.0 Release Notes + +NuGet distribution vehicles: + +| NuGet version | Available in Visual Studio version| Available in .NET SDK(s)| +|:---|:---|:---| +| [**5.0.0**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.0.0](https://visualstudio.microsoft.com/downloads/) | [2.1.500, 2.2.100](https://www.microsoft.com/net/download/visual-studio-sdks) | + +## Summary: What's New in 5.0 + +* Foo bar - [#6961](https://github.com/NuGet/Home/issues/6961), [blog post](https://blog.nuget.org/20181205/Lock-down-your-dependencies-using-configurable-trust-policies.html) + +### Issues fixed in this release + +## Known issues + +### Foo bar isn't foo enough - [#7519](https://github.com/NuGet/Home/issues/7519) + +#### Issue +Foo bar :( + +#### Workaround +FOO BAR !! :) From 2001e1cf7f3edb4db82aca48afdf105be2777a3f Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 2 Apr 2019 11:54:13 -0700 Subject: [PATCH 1123/2943] Update Index.md --- docs/release-notes/Index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/Index.md b/docs/release-notes/Index.md index 84e5896e4..6af37870b 100644 --- a/docs/release-notes/Index.md +++ b/docs/release-notes/Index.md @@ -11,7 +11,7 @@ ms.topic: conceptual [Known Issues](../release-notes/known-issues.md) -[NuGet 5.0 preview](../release-notes/NuGet-5.0-preview.md) +[NuGet 5.0 RTM](../release-notes/NuGet-5.0-RTM.md) [NuGet 4.9 RTM](../release-notes/NuGet-4.9-RTM.md) From 30c7455b44df1652d01b3a1732491f5880cdfe42 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 2 Apr 2019 13:17:53 -0700 Subject: [PATCH 1124/2943] Update NuGet-5.0-RTM.md --- docs/release-notes/NuGet-5.0-RTM.md | 116 +++++++++++++++++++++++++++- 1 file changed, 114 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/NuGet-5.0-RTM.md b/docs/release-notes/NuGet-5.0-RTM.md index 03138443b..499e8d9b1 100644 --- a/docs/release-notes/NuGet-5.0-RTM.md +++ b/docs/release-notes/NuGet-5.0-RTM.md @@ -13,7 +13,7 @@ NuGet distribution vehicles: | NuGet version | Available in Visual Studio version| Available in .NET SDK(s)| |:---|:---|:---| -| [**5.0.0**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.0.0](https://visualstudio.microsoft.com/downloads/) | [2.1.500, 2.2.100](https://www.microsoft.com/net/download/visual-studio-sdks) | +| [**5.0.0**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.0.0](https://visualstudio.microsoft.com/downloads/) | [2.2.105](https://www.microsoft.com/net/download/visual-studio-sdks) | ## Summary: What's New in 5.0 @@ -21,7 +21,113 @@ NuGet distribution vehicles: ### Issues fixed in this release -## Known issues +**Bugs** + +* NuGet.VisualStudio.IVsPackageInstaller - calling on a project with no package references always uses packages.config, even if the default is set to PackageReference - [#7005](https://github.com/NuGet/Home/issues/7005) + +* PMC: Update-Package reinstall fails ("Unable to find package") on delisted packages. - [#7268](https://github.com/NuGet/Home/issues/7268) + +* Add third party notice in our repo and VSIX - [#7409](https://github.com/NuGet/Home/issues/7409) + +* NuGet.VisualStudio.IVsPackageInstaller.InstallPackage should install latest version when no version given - [#7493](https://github.com/NuGet/Home/issues/7493) + +* --interactive support for dotnet nuget push - [#7519](https://github.com/NuGet/Home/issues/7519) + +* When restoring with lock file, NU1603 warning shouldn't be raised. - [#7529](https://github.com/NuGet/Home/issues/7529) + +* NuGet should not print project path during restore with minimal logging - [#7647](https://github.com/NuGet/Home/issues/7647) + +* --interactive support for dotnet remove package - [#7727](https://github.com/NuGet/Home/issues/7727) + +* Add back NuGet.Packaging.Core with TypeForwardedTo attrs - [#7768](https://github.com/NuGet/Home/issues/7768) + +* plugins_cache needs shorter path to work well - [#7770](https://github.com/NuGet/Home/issues/7770) + +* Prefer path for msbuild discovery if user didn't ask for specific msbuild version - [#7786](https://github.com/NuGet/Home/issues/7786) + +* nuget.exe /? should list correct msbuild versions - [#7794](https://github.com/NuGet/Home/issues/7794) + +* NuGet.targets(498,5): error : Could not find a part of the path '/tmp/NuGetScratch - on mono - [#7793](https://github.com/NuGet/Home/issues/7793) + +* restore unnecessarily enumerates the contents of all versions of referenced package in the machine cache - [#7639](https://github.com/NuGet/Home/issues/7639) + +* MSBuild auto-detection always selects 16.0 after installing VS 2019 Preview - [#7621](https://github.com/NuGet/Home/issues/7621) + +* dotnet list package on a solution outputs duplicate entries for framework - [#7607](https://github.com/NuGet/Home/issues/7607) + +* Exception "Empty path name is not legal" when calling IVsPackageInstaller.InstallPackage on old projects and packages folder does not exist. - [#5936](https://github.com/NuGet/Home/issues/5936) + +* msbuild /t:restore minimal verbosity should be more minimal - [#4695](https://github.com/NuGet/Home/issues/4695) + +* VS 16.0's NuGet UI has unreadable tabs due to color problems - [#7735](https://github.com/NuGet/Home/issues/7735) + +* NuGet.Core & NuGet.Clients License.txt clarification - [#7629](https://github.com/NuGet/Home/issues/7629) + +* Restore unnecessarily enumerates global package folder in attempt to determine type - [#7596](https://github.com/NuGet/Home/issues/7596) + +* Errors from lock file enforcement should show up in Error List Window - [#7429](https://github.com/NuGet/Home/issues/7429) + +* Fix NuGet.Configuration issues - [#7326](https://github.com/NuGet/Home/issues/7326) + +* Adapt to MSBuild updating it's install location. - [#7325](https://github.com/NuGet/Home/issues/7325) + +* NuGet.Build.Tasks.Pack should be a development dependency - [#7249](https://github.com/NuGet/Home/issues/7249) + +* Add pack extension point for including debug symbols - [#7234](https://github.com/NuGet/Home/issues/7234) + +* dotnet pack should preserve dependency version range in the created nupkg. (even if floating version is used) - [#7232](https://github.com/NuGet/Home/issues/7232) + +* dotnet restore fails on authenticated source when user-level config also has source - [#7209](https://github.com/NuGet/Home/issues/7209) + +* Pack should not restrict the set of BuildActions for content files - [#7155](https://github.com/NuGet/Home/issues/7155) + +* Using a projectreference which requires AssetTargetFallback to succeed, should warn. - [#7137](https://github.com/NuGet/Home/issues/7137) + +* Deadlock due to threading issues when calling into CPS (CommonProjectSystem) - [#7103](https://github.com/NuGet/Home/issues/7103) + +* dotnet add package won't use credentials from global config for a source specified in local config - [#6935](https://github.com/NuGet/Home/issues/6935) + +* Threading issues with MEF being called on async codepaths - [#6771](https://github.com/NuGet/Home/issues/6771) + +* Signing: error reported twice and without call stack - [#6455](https://github.com/NuGet/Home/issues/6455) + +* Installing a signed package with untrusted signing certificate should show error - [#6318](https://github.com/NuGet/Home/issues/6318) + +* NuGet restore improperly NoOps when 2 projects are sharing obj directory - [#6114](https://github.com/NuGet/Home/issues/6114) + +* Cannot use PAT with dotnet restore on Linux with packages from authenticated feed - [#5651](https://github.com/NuGet/Home/issues/5651) + +* dotnet restore fails due to disabled machine wide feed - [#5410](https://github.com/NuGet/Home/issues/5410) + +**DCRs** + +* limit http request number per source through NuGet.Config - [#4538](https://github.com/NuGet/Home/issues/4538) + +* NuGet should target Net472 (to help Cleanup the 16.0 build of the VSIX) - [#7143](https://github.com/NuGet/Home/issues/7143) + +* PMC: Remove OpenPackagePage command - [#7384](https://github.com/NuGet/Home/issues/7384) + +* Make NetCoreApp 3.0 map to NetStandard 2.1 - [#7762](https://github.com/NuGet/Home/issues/7762) + +* Add netstandard2.0 support to NuGet.* packages - [#6516](https://github.com/NuGet/Home/issues/6516) + +* Allow package authors to define build assets transitive behavior - [#6091](https://github.com/NuGet/Home/issues/6091) + +* Enable restore in VS to succeed if a project is not part of solution or is not loaded, but has previously been restored - [#5820](https://github.com/NuGet/Home/issues/5820) + +* NuGet 5.0 assemblies to require .NET 4.7.2 (via TFM change) - [#7510](https://github.com/NuGet/Home/issues/7510) + +* NuGetLicenseData from NuGet.Packaging should be a public type. Update license metadata ingested from spdx. - [#7471](https://github.com/NuGet/Home/issues/7471) + +* Remove obsolete Settings APIs - [#7294](https://github.com/NuGet/Home/issues/7294) + +* Workaround restore timeouts on systems with 1 cpu - [#6742](https://github.com/NuGet/Home/issues/6742) + +* NuGet prefers NTLM auth even if there are credentials in NuGet.config - add config option to filter auth types for credentials - [#5286](https://github.com/NuGet/Home/issues/5286) + +* Enable EmbedInteropTypes for PackageReference (matching Packages.Config capability) - [#2365](https://github.com/NuGet/Home/issues/2365) + +### Known issues ### Foo bar isn't foo enough - [#7519](https://github.com/NuGet/Home/issues/7519) @@ -30,3 +136,9 @@ Foo bar :( #### Workaround FOO BAR !! :) + +#### Packages in FallbackFolders installed by .NET Core SDK are custom installed, and fail signature validation. - [#7414](https://github.com/NuGet/Home/issues/7414) +**Issue** +When using dotnet.exe 2.x to restore a project that multi-targets netcoreapp 1.x and netcoreapp 2.x, the fallback folder is treated as a file feed. This means, when restoring, NuGet will pick the package from the fallback folder and try to install it into the global packages folder and do the usual signing validation which fails. +**Workaround** +Disable the usage of the fallback folder by setting the `RestoreAdditionalProjectSources` to nothing. `` Use this with caution as it will cause a lot of packages to be downloaded from NuGet.org which otherwise would be have been restored from the fallback folder. From 06f1f4fd6287cb7c7642d074cfd3aef13d15d6ee Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 2 Apr 2019 13:23:22 -0700 Subject: [PATCH 1125/2943] Update NuGet-5.0-RTM.md --- docs/release-notes/NuGet-5.0-RTM.md | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/docs/release-notes/NuGet-5.0-RTM.md b/docs/release-notes/NuGet-5.0-RTM.md index 499e8d9b1..8d5c5651b 100644 --- a/docs/release-notes/NuGet-5.0-RTM.md +++ b/docs/release-notes/NuGet-5.0-RTM.md @@ -3,7 +3,7 @@ title: NuGet 5.0 RTM Release Notes description: Release notes for NuGet 5.0 including known issues, bug fixes, new features, and DCRs. author: karann-msft ms.author: karann -ms.date: 11/20/2018 +ms.date: 04/02/2019 ms.topic: conceptual --- @@ -129,16 +129,8 @@ NuGet distribution vehicles: ### Known issues -### Foo bar isn't foo enough - [#7519](https://github.com/NuGet/Home/issues/7519) - -#### Issue -Foo bar :( - -#### Workaround -FOO BAR !! :) - #### Packages in FallbackFolders installed by .NET Core SDK are custom installed, and fail signature validation. - [#7414](https://github.com/NuGet/Home/issues/7414) -**Issue** -When using dotnet.exe 2.x to restore a project that multi-targets netcoreapp 1.x and netcoreapp 2.x, the fallback folder is treated as a file feed. This means, when restoring, NuGet will pick the package from the fallback folder and try to install it into the global packages folder and do the usual signing validation which fails. -**Workaround** +**Issue**
    +When using dotnet.exe 2.x to restore a project that multi-targets netcoreapp 1.x and netcoreapp 2.x, the fallback folder is treated as a file feed. This means, when restoring, NuGet will pick the package from the fallback folder and try to install it into the global packages folder and do the usual signing validation which fails.
    +**Workaround**
    Disable the usage of the fallback folder by setting the `RestoreAdditionalProjectSources` to nothing. `` Use this with caution as it will cause a lot of packages to be downloaded from NuGet.org which otherwise would be have been restored from the fallback folder. From 108801a655983256ed47a52cdc1fd9d461767ac7 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 2 Apr 2019 13:32:56 -0700 Subject: [PATCH 1126/2943] Update TOC.md --- docs/TOC.md | 62 +++++++++++++++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index facfdadc4..7b538e972 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -10,7 +10,7 @@ ## [Overview and workflow](consume-packages/overview-and-workflow.md) ## [Finding and choosing packages](consume-packages/finding-and-choosing-packages.md) ## [Installing packages](consume-packages/ways-to-install-a-package.md) -###[Signed packages](consume-packages/installing-signed-packages.md) +### [Signed packages](consume-packages/installing-signed-packages.md) ## [Package restore](consume-packages/package-restore.md) ### [Troubleshooting](consume-packages/package-restore-troubleshooting.md) ## [Reinstalling and updating packages](consume-packages/reinstalling-and-updating-packages.md) @@ -249,7 +249,7 @@ ## [Deleting packages](policies/deleting-packages.md) # Release notes ## [Known Issues](release-notes/known-issues.md) -## [NuGet 5.0 preview](release-notes/NuGet-5.0-preview.md) +## [NuGet 5.0 RTM](release-notes/NuGet-5.0-RTM.md) ## [NuGet 4.9 RTM](release-notes/NuGet-4.9-RTM.md) ## [NuGet 4.8 RTM](release-notes/NuGet-4.8-RTM.md) ## [NuGet 4.7 RTM](release-notes/NuGet-4.7-RTM.md) @@ -280,32 +280,34 @@ ## [NuGet 3.0 RC](release-notes/NuGet-3.0-RC.md) ## [NuGet 3.0 Beta](release-notes/NuGet-3.0-Beta.md) ## [NuGet 3.0 Preview](release-notes/NuGet-3.0-Preview.md) -## [NuGet 2.12](release-notes/NuGet-2.12.md) -## [NuGet 2.12 RC](release-notes/NuGet-2.12-RC.md) -## [NuGet 2.9 RC](release-notes/NuGet-2.9-RC.md) -## [NuGet 2.8.7](release-notes/NuGet-2.8.7.md) -## [NuGet 2.8.6](release-notes/NuGet-2.8.6.md) -## [NuGet 2.8.5](release-notes/NuGet-2.8.5.md) -## [NuGet 2.8.3](release-notes/NuGet-2.8.3.md) -## [NuGet 2.8.2](release-notes/NuGet-2.8.2.md) -## [NuGet 2.8.1](release-notes/NuGet-2.8.1.md) -## [NuGet 2.8](release-notes/NuGet-2.8.md) -## [NuGet 2.7.2](release-notes/NuGet-2.7.2.md) -## [NuGet 2.7.1](release-notes/NuGet-2.7.1.md) -## [NuGet 2.7](release-notes/NuGet-2.7.md) -## [NuGet 2.6.1-for-WebMatrix](release-notes/NuGet-2.6.1-for-WebMatrix.md) -## [NuGet 2.6](release-notes/NuGet-2.6.md) -## [NuGet 2.5](release-notes/NuGet-2.5.md) -## [NuGet 2.2.1](release-notes/NuGet-2.2.1.md) -## [NuGet 2.2](release-notes/NuGet-2.2.md) -## [NuGet 2.1](release-notes/NuGet-2.1.md) -## [NuGet 2.0](release-notes/NuGet-2.0.md) -## [NuGet 1.8](release-notes/NuGet-1.8.md) -## [NuGet 1.7](release-notes/NuGet-1.7.md) -## [NuGet 1.6](release-notes/NuGet-1.6.md) -## [NuGet 1.5](release-notes/NuGet-1.5.md) -## [NuGet 1.4](release-notes/NuGet-1.4.md) -## [NuGet 1.3](release-notes/NuGet-1.3.md) -## [NuGet 1.2](release-notes/NuGet-1.2.md) -## [NuGet 1.1](release-notes/NuGet-1.1.md) +## NuGet 2.x +### [NuGet 2.12](release-notes/NuGet-2.12.md) +### [NuGet 2.12 RC](release-notes/NuGet-2.12-RC.md) +### [NuGet 2.9 RC](release-notes/NuGet-2.9-RC.md) +### [NuGet 2.8.7](release-notes/NuGet-2.8.7.md) +### [NuGet 2.8.6](release-notes/NuGet-2.8.6.md) +### [NuGet 2.8.5](release-notes/NuGet-2.8.5.md) +### [NuGet 2.8.3](release-notes/NuGet-2.8.3.md) +### [NuGet 2.8.2](release-notes/NuGet-2.8.2.md) +### [NuGet 2.8.1](release-notes/NuGet-2.8.1.md) +### [NuGet 2.8](release-notes/NuGet-2.8.md) +### [NuGet 2.7.2](release-notes/NuGet-2.7.2.md) +### [NuGet 2.7.1](release-notes/NuGet-2.7.1.md) +### [NuGet 2.7](release-notes/NuGet-2.7.md) +### [NuGet 2.6.1-for-WebMatrix](release-notes/NuGet-2.6.1-for-WebMatrix.md) +### [NuGet 2.6](release-notes/NuGet-2.6.md) +### [NuGet 2.5](release-notes/NuGet-2.5.md) +### [NuGet 2.2.1](release-notes/NuGet-2.2.1.md) +### [NuGet 2.2](release-notes/NuGet-2.2.md) +### [NuGet 2.1](release-notes/NuGet-2.1.md) +### [NuGet 2.0](release-notes/NuGet-2.0.md) +## NuGet 1.x +### [NuGet 1.8](release-notes/NuGet-1.8.md) +### [NuGet 1.7](release-notes/NuGet-1.7.md) +### [NuGet 1.6](release-notes/NuGet-1.6.md) +### [NuGet 1.5](release-notes/NuGet-1.5.md) +### [NuGet 1.4](release-notes/NuGet-1.4.md) +### [NuGet 1.3](release-notes/NuGet-1.3.md) +### [NuGet 1.2](release-notes/NuGet-1.2.md) +### [NuGet 1.1](release-notes/NuGet-1.1.md) # [FAQs](faqs/nuget-faq.md) From a4f027de363b332aca51efaf6bee2c5d51057d38 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 2 Apr 2019 13:38:54 -0700 Subject: [PATCH 1127/2943] Update TOC.md --- docs/TOC.md | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index 7b538e972..e08d17f44 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -259,27 +259,28 @@ ## [NuGet 4.3 RTM](release-notes/NuGet-4.3-RTM.md) ## [NuGet 4.0 RTM](release-notes/NuGet-4.0-RTM.md) ## [NuGet 4.0 RC](release-notes/NuGet-4.0-RC.md) -## [NuGet 3.5 RTM](release-notes/NuGet-3.5-RTM.md) -## [NuGet 3.5 RC](release-notes/NuGet-3.5-RC.md) -## [NuGet 3.5 Beta2](release-notes/NuGet-3.5-Beta2.md) -## [NuGet 3.5 Beta](release-notes/NuGet-3.5-Beta.md) -## [NuGet 3.4.4](release-notes/NuGet-3.4.4.md) -## [NuGet 3.4.3](release-notes/NuGet-3.4.3.md) -## [NuGet 3.4.2](release-notes/NuGet-3.4.2.md) -## [NuGet 3.4.1](release-notes/NuGet-3.4.1.md) -## [NuGet 3.4](release-notes/NuGet-3.4.md) -## [NuGet 3.4 RC](release-notes/NuGet-3.4-RC.md) -## [NuGet 3.3](release-notes/NuGet-3.3.md) -## [NuGet 3.2.1](release-notes/NuGet-3.2.1.md) -## [NuGet 3.2](release-notes/NuGet-3.2.md) -## [NuGet 3.2 RC](release-notes/NuGet-3.2-RC.md) -## [NuGet 3.1.1](release-notes/NuGet-3.1.1.md) -## [NuGet 3.1](release-notes/NuGet-3.1.md) -## [NuGet 3.0.0](release-notes/NuGet-3.0.0.md) -## [NuGet 3.0 RC2](release-notes/NuGet-3.0-RC2.md) -## [NuGet 3.0 RC](release-notes/NuGet-3.0-RC.md) -## [NuGet 3.0 Beta](release-notes/NuGet-3.0-Beta.md) -## [NuGet 3.0 Preview](release-notes/NuGet-3.0-Preview.md) +## NuGet 3.x +### [NuGet 3.5 RTM](release-notes/NuGet-3.5-RTM.md) +### [NuGet 3.5 RC](release-notes/NuGet-3.5-RC.md) +### [NuGet 3.5 Beta2](release-notes/NuGet-3.5-Beta2.md) +### [NuGet 3.5 Beta](release-notes/NuGet-3.5-Beta.md) +### [NuGet 3.4.4](release-notes/NuGet-3.4.4.md) +### [NuGet 3.4.3](release-notes/NuGet-3.4.3.md) +### [NuGet 3.4.2](release-notes/NuGet-3.4.2.md) +### [NuGet 3.4.1](release-notes/NuGet-3.4.1.md) +### [NuGet 3.4](release-notes/NuGet-3.4.md) +### [NuGet 3.4 RC](release-notes/NuGet-3.4-RC.md) +### [NuGet 3.3](release-notes/NuGet-3.3.md) +### [NuGet 3.2.1](release-notes/NuGet-3.2.1.md) +### [NuGet 3.2](release-notes/NuGet-3.2.md) +### [NuGet 3.2 RC](release-notes/NuGet-3.2-RC.md) +### [NuGet 3.1.1](release-notes/NuGet-3.1.1.md) +### [NuGet 3.1](release-notes/NuGet-3.1.md) +### [NuGet 3.0.0](release-notes/NuGet-3.0.0.md) +### [NuGet 3.0 RC2](release-notes/NuGet-3.0-RC2.md) +### [NuGet 3.0 RC](release-notes/NuGet-3.0-RC.md) +### [NuGet 3.0 Beta](release-notes/NuGet-3.0-Beta.md) +### [NuGet 3.0 Preview](release-notes/NuGet-3.0-Preview.md) ## NuGet 2.x ### [NuGet 2.12](release-notes/NuGet-2.12.md) ### [NuGet 2.12 RC](release-notes/NuGet-2.12-RC.md) From a85b28f3fcebf96d25b839dcd2f6150b167f1ed0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Tue, 2 Apr 2019 15:19:51 -0700 Subject: [PATCH 1128/2943] Tweak wording (#1375) --- docs/api/search-autocomplete-service-resource.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/api/search-autocomplete-service-resource.md b/docs/api/search-autocomplete-service-resource.md index cf60d3dc2..0ccb08e62 100644 --- a/docs/api/search-autocomplete-service-resource.md +++ b/docs/api/search-autocomplete-service-resource.md @@ -123,8 +123,8 @@ Name | Type | Required | Notes --------- | ---------------- | -------- | ----- data | array of strings | yes | The package versions matched by the request -The package versions in the `data` array could contain SemVer 2.0.0 build metadata (e.g. `1.0.0+metadata`) if the -`semVerLevel=2.0.0` was provided in the query string. +The package versions in the `data` array may contain SemVer 2.0.0 build metadata (e.g. `1.0.0+metadata`) if the +`semVerLevel=2.0.0` is provided in the query string. ### Sample request From d052f006e93d38022bc358fbefc24d30f85acf89 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 2 Apr 2019 16:41:55 -0700 Subject: [PATCH 1129/2943] Update NuGet-5.0-RTM.md --- docs/release-notes/NuGet-5.0-RTM.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/release-notes/NuGet-5.0-RTM.md b/docs/release-notes/NuGet-5.0-RTM.md index 8d5c5651b..fd043da70 100644 --- a/docs/release-notes/NuGet-5.0-RTM.md +++ b/docs/release-notes/NuGet-5.0-RTM.md @@ -23,6 +23,12 @@ NuGet distribution vehicles: **Bugs** +* When doing a NoOp restore, avoid obj\*dgspec.json write - [#7854](https://github.com/NuGet/Home/issues/7854) + +* Permissions on files created inside ~/.nuget are too open - [#7673](https://github.com/NuGet/Home/issues/7673) + +* dotnet list package --outdated doesn't work with sources that need auth - [#7605](https://github.com/NuGet/Home/issues/7605) + * NuGet.VisualStudio.IVsPackageInstaller - calling on a project with no package references always uses packages.config, even if the default is set to PackageReference - [#7005](https://github.com/NuGet/Home/issues/7005) * PMC: Update-Package reinstall fails ("Unable to find package") on delisted packages. - [#7268](https://github.com/NuGet/Home/issues/7268) @@ -101,6 +107,12 @@ NuGet distribution vehicles: **DCRs** +* Warn of future removal of "dotnet pack project.json" - [#7928](https://github.com/NuGet/Home/issues/7928) +  +* Add a deprecation warning for Gen1 credential plugin - [#7819](https://github.com/NuGet/Home/issues/7819) +  +* Signing: Enabled Repo to require client verification of every package as repo signed -- via RepositorySignatures/5.0.0 resource - [#7759](https://github.com/NuGet/Home/issues/7759) + * limit http request number per source through NuGet.Config - [#4538](https://github.com/NuGet/Home/issues/4538) * NuGet should target Net472 (to help Cleanup the 16.0 build of the VSIX) - [#7143](https://github.com/NuGet/Home/issues/7143) From 6c76f07cbfa83f3fe34c031b4c598bb43b01fd0d Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 2 Apr 2019 16:53:01 -0700 Subject: [PATCH 1130/2943] Update NuGet-5.0-RTM.md --- docs/release-notes/NuGet-5.0-RTM.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/NuGet-5.0-RTM.md b/docs/release-notes/NuGet-5.0-RTM.md index fd043da70..9e84359b4 100644 --- a/docs/release-notes/NuGet-5.0-RTM.md +++ b/docs/release-notes/NuGet-5.0-RTM.md @@ -13,7 +13,11 @@ NuGet distribution vehicles: | NuGet version | Available in Visual Studio version| Available in .NET SDK(s)| |:---|:---|:---| -| [**5.0.0**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.0.0](https://visualstudio.microsoft.com/downloads/) | [2.2.105](https://www.microsoft.com/net/download/visual-studio-sdks) | +| [**5.0.0**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.0.0](https://visualstudio.microsoft.com/downloads/) | 2.1.602^, 2.2.202^^ | + +^ Installed with Visual Studio 2019 with .NET Core workload + +^^ Available as an optional install with Visual Studio 2019 with .NET Core workload ## Summary: What's New in 5.0 From 2d697ba12eb471da1ae6cc74ae2cf64af6ed9f42 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 2 Apr 2019 17:56:05 -0700 Subject: [PATCH 1131/2943] Update NuGet-5.0-RTM.md --- docs/release-notes/NuGet-5.0-RTM.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/release-notes/NuGet-5.0-RTM.md b/docs/release-notes/NuGet-5.0-RTM.md index 9e84359b4..22a1407fd 100644 --- a/docs/release-notes/NuGet-5.0-RTM.md +++ b/docs/release-notes/NuGet-5.0-RTM.md @@ -13,17 +13,17 @@ NuGet distribution vehicles: | NuGet version | Available in Visual Studio version| Available in .NET SDK(s)| |:---|:---|:---| -| [**5.0.0**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.0.0](https://visualstudio.microsoft.com/downloads/) | 2.1.602^, 2.2.202^^ | +| [**5.0.0**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.0.0](https://visualstudio.microsoft.com/downloads/) | 2.1.6021, 2.2.2022 | -^ Installed with Visual Studio 2019 with .NET Core workload +1Installed with Visual Studio 2019 with .NET Core workload -^^ Available as an optional install with Visual Studio 2019 with .NET Core workload +2Available as an optional install with Visual Studio 2019 with .NET Core workload ## Summary: What's New in 5.0 * Foo bar - [#6961](https://github.com/NuGet/Home/issues/6961), [blog post](https://blog.nuget.org/20181205/Lock-down-your-dependencies-using-configurable-trust-policies.html) -### Issues fixed in this release +## Issues fixed in this release **Bugs** @@ -143,10 +143,10 @@ NuGet distribution vehicles: * Enable EmbedInteropTypes for PackageReference (matching Packages.Config capability) - [#2365](https://github.com/NuGet/Home/issues/2365) -### Known issues +## Known issues -#### Packages in FallbackFolders installed by .NET Core SDK are custom installed, and fail signature validation. - [#7414](https://github.com/NuGet/Home/issues/7414) -**Issue**
    +### Packages in FallbackFolders installed by .NET Core SDK are custom installed, and fail signature validation. - [#7414](https://github.com/NuGet/Home/issues/7414) +#### Issue When using dotnet.exe 2.x to restore a project that multi-targets netcoreapp 1.x and netcoreapp 2.x, the fallback folder is treated as a file feed. This means, when restoring, NuGet will pick the package from the fallback folder and try to install it into the global packages folder and do the usual signing validation which fails.
    -**Workaround**
    +#### Workaround Disable the usage of the fallback folder by setting the `RestoreAdditionalProjectSources` to nothing. `` Use this with caution as it will cause a lot of packages to be downloaded from NuGet.org which otherwise would be have been restored from the fallback folder. From a139249fd20008560a16021fc9cba1faafab3da4 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 2 Apr 2019 18:11:24 -0700 Subject: [PATCH 1132/2943] Update NuGet-5.0-RTM.md --- docs/release-notes/NuGet-5.0-RTM.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/NuGet-5.0-RTM.md b/docs/release-notes/NuGet-5.0-RTM.md index 22a1407fd..7cf2b9a6b 100644 --- a/docs/release-notes/NuGet-5.0-RTM.md +++ b/docs/release-notes/NuGet-5.0-RTM.md @@ -13,7 +13,7 @@ NuGet distribution vehicles: | NuGet version | Available in Visual Studio version| Available in .NET SDK(s)| |:---|:---|:---| -| [**5.0.0**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.0.0](https://visualstudio.microsoft.com/downloads/) | 2.1.6021, 2.2.2022 | +| [**5.0.0**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.0](https://visualstudio.microsoft.com/downloads/) | 2.1.6021, 2.2.2022 | 1Installed with Visual Studio 2019 with .NET Core workload @@ -21,7 +21,11 @@ NuGet distribution vehicles: ## Summary: What's New in 5.0 -* Foo bar - [#6961](https://github.com/NuGet/Home/issues/6961), [blog post](https://blog.nuget.org/20181205/Lock-down-your-dependencies-using-configurable-trust-policies.html) +* Support solution filter when restoring the solution via CLI or in Visual Studio - [#5820](https://github.com/NuGet/Home/issues/5820) +* `BuildTransitive` folder enables packages to transitively contribute targets/props to the host project - [#6091](https://github.com/NuGet/Home/issues/6091) +* Better support for PackageReference scenarios in NuGet IVs APIs - [#7005](https://github.com/NuGet/Home/issues/7005), [#7493](https://github.com/NuGet/Home/issues/7493) +* `dotnet pack project.json` has been deprecated - [#7928](https://github.com/NuGet/Home/issues/7928) +* Gen 1 Credential Provider plugin is no longer supported - [#7819](https://github.com/NuGet/Home/issues/7819) ## Issues fixed in this release From a22e72c07448ef6c669d1657b3a26a8e2531523b Mon Sep 17 00:00:00 2001 From: Maira Wenzel Date: Tue, 2 Apr 2019 23:08:31 -0700 Subject: [PATCH 1133/2943] metadata fixes --- docs/docfx.json | 3 ++- docs/reference/licenses.nuget.org.md | 18 ++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/docs/docfx.json b/docs/docfx.json index 9b875c8c3..19ee61793 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -41,7 +41,8 @@ "ROBOTS": "INDEX,FOLLOW", "ms.topic": "conceptual", "ms.prod": "nuget", - "ms.technology": null, + "author": "karann-msft", + "ms.author": "karann", "ms.reviewer": [ "karann", "unnir" diff --git a/docs/reference/licenses.nuget.org.md b/docs/reference/licenses.nuget.org.md index 56d54c46c..5c98a18a5 100644 --- a/docs/reference/licenses.nuget.org.md +++ b/docs/reference/licenses.nuget.org.md @@ -1,8 +1,13 @@ +--- +title: licenses.nuget.org +author: agr +ms.date: 02/22/2019 +--- # licenses.nuget.org ## Rationale -With the introduction of the [license expressions](nuspec.md#license) a requirement emerged to have a reliable service +With the introduction of the [license expressions](nuspec.md#license), a requirement emerged to have a reliable service that would provide a reference text for individual license identifiers, exception identifiers or license expressions. An additional requirement for this service is to have a stable URL schema, that is not susceptible to link rot, so that we can safely use it to provide backwards compatibility for older clients. @@ -30,9 +35,9 @@ licenses.nuget.org. | License expression | URL to use | |:---|:---| -MIT | https://licenses.nuget.org/MIT -(MIT) | https://licenses.nuget.org/(MIT) -(LGPL-2.0-only WITH FLTK-exception OR Apache-2.0+) | https://licenses.nuget.org/(LGPL-2.0-only%20WITH%20FLTK-exception%20OR%20Apache-2.0+) +| MIT | | +| (MIT) | | +| (LGPL-2.0-only WITH FLTK-exception OR Apache-2.0+) | | The service supports only license identifiers and license exception identifiers that are accepted by nuget.org. All license expressions that contain unsupported license identifiers @@ -43,6 +48,7 @@ invalid. Licenses.nuget.org responds to requests containing valid license expressions with an HTTP 200 status code and a web page containing a description of the license expression: + * if supplied license expression contains a single license identifier a web page is returned that contains that license reference text; * if supplied license expression is a composite license expression, a web page is returned that contains @@ -60,8 +66,8 @@ license exception identifier may present in the path portion of the URL. | License exception identifier | URL to use | |:---|:---| -FLTK-exception | https://licenses.nuget.org/FLTK-exception -openvpn-openssl-exception | https://licenses.nuget.org/openvpn-openssl-exception +|FLTK-exception | | +|openvpn-openssl-exception | | #### Response From 5783c1a8c89e9dd2ed1e30c80c9e7938e53e2866 Mon Sep 17 00:00:00 2001 From: Jeffrey Date: Wed, 3 Apr 2019 08:31:21 -0700 Subject: [PATCH 1134/2943] Fix typo (#1376) --- docs/reference/errors-and-warnings/NU3034.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/errors-and-warnings/NU3034.md b/docs/reference/errors-and-warnings/NU3034.md index a7fb44a97..2002a4343 100644 --- a/docs/reference/errors-and-warnings/NU3034.md +++ b/docs/reference/errors-and-warnings/NU3034.md @@ -23,4 +23,4 @@ There is a missing allow list, or the package signer does not match any signer i ### Solution -If in `require` mode, only packages signed by a trusted signer will pass validation. Otherwise, contact the repository where this was downlaoded from to let them know they have a package that does not comply with the repository signing security guidelines. \ No newline at end of file +If in `require` mode, only packages signed by a trusted signer will pass validation. Otherwise, contact the repository where this was downloaded from to let them know they have a package that does not comply with the repository signing security guidelines. From cae43b93b4d3f414275d11cd587560b69d79a547 Mon Sep 17 00:00:00 2001 From: Jeffrey Date: Wed, 3 Apr 2019 08:57:15 -0700 Subject: [PATCH 1135/2943] Fix indentation (#1377) --- docs/reference/nuget-config-file.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/reference/nuget-config-file.md b/docs/reference/nuget-config-file.md index 88ac6cd7e..8d9374698 100644 --- a/docs/reference/nuget-config-file.md +++ b/docs/reference/nuget-config-file.md @@ -347,12 +347,12 @@ Below is an example `nuget.config` file that illustrates a number of settings: --> - - - - - microsoft;aspnet;nuget - + + + + + microsoft;aspnet;nuget + ``` From 55d583deeee298677a22e6b7ed8d13fdd4067ee6 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 3 Apr 2019 11:21:28 -0700 Subject: [PATCH 1136/2943] Update TOC.md --- docs/TOC.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index e08d17f44..4cb25c06c 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -250,15 +250,16 @@ # Release notes ## [Known Issues](release-notes/known-issues.md) ## [NuGet 5.0 RTM](release-notes/NuGet-5.0-RTM.md) -## [NuGet 4.9 RTM](release-notes/NuGet-4.9-RTM.md) -## [NuGet 4.8 RTM](release-notes/NuGet-4.8-RTM.md) -## [NuGet 4.7 RTM](release-notes/NuGet-4.7-RTM.md) -## [NuGet 4.6 RTM](release-notes/NuGet-4.6-RTM.md) -## [NuGet 4.5 RTM](release-notes/NuGet-4.5-RTM.md) -## [NuGet 4.4 RTM](release-notes/NuGet-4.4-RTM.md) -## [NuGet 4.3 RTM](release-notes/NuGet-4.3-RTM.md) -## [NuGet 4.0 RTM](release-notes/NuGet-4.0-RTM.md) -## [NuGet 4.0 RC](release-notes/NuGet-4.0-RC.md) +## NuGet 4.x +### [NuGet 4.9 RTM](release-notes/NuGet-4.9-RTM.md) +### [NuGet 4.8 RTM](release-notes/NuGet-4.8-RTM.md) +### [NuGet 4.7 RTM](release-notes/NuGet-4.7-RTM.md) +### [NuGet 4.6 RTM](release-notes/NuGet-4.6-RTM.md) +### [NuGet 4.5 RTM](release-notes/NuGet-4.5-RTM.md) +### [NuGet 4.4 RTM](release-notes/NuGet-4.4-RTM.md) +### [NuGet 4.3 RTM](release-notes/NuGet-4.3-RTM.md) +### [NuGet 4.0 RTM](release-notes/NuGet-4.0-RTM.md) +### [NuGet 4.0 RC](release-notes/NuGet-4.0-RC.md) ## NuGet 3.x ### [NuGet 3.5 RTM](release-notes/NuGet-3.5-RTM.md) ### [NuGet 3.5 RC](release-notes/NuGet-3.5-RC.md) From 7f03022821d2dd9c6ad20fd6d4fd415763fa2a86 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 3 Apr 2019 11:29:26 -0700 Subject: [PATCH 1137/2943] Update NuGet-5.0-RTM.md --- docs/release-notes/NuGet-5.0-RTM.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/NuGet-5.0-RTM.md b/docs/release-notes/NuGet-5.0-RTM.md index 7cf2b9a6b..c559aab92 100644 --- a/docs/release-notes/NuGet-5.0-RTM.md +++ b/docs/release-notes/NuGet-5.0-RTM.md @@ -24,8 +24,8 @@ NuGet distribution vehicles: * Support solution filter when restoring the solution via CLI or in Visual Studio - [#5820](https://github.com/NuGet/Home/issues/5820) * `BuildTransitive` folder enables packages to transitively contribute targets/props to the host project - [#6091](https://github.com/NuGet/Home/issues/6091) * Better support for PackageReference scenarios in NuGet IVs APIs - [#7005](https://github.com/NuGet/Home/issues/7005), [#7493](https://github.com/NuGet/Home/issues/7493) -* `dotnet pack project.json` has been deprecated - [#7928](https://github.com/NuGet/Home/issues/7928) -* Gen 1 Credential Provider plugin is no longer supported - [#7819](https://github.com/NuGet/Home/issues/7819) +* `nuget.exe pack project.json` has been deprecated - [#7928](https://github.com/NuGet/Home/issues/7928) +* Gen 1 Credential Provider plugin has been superseded by [Gen 2](https://aka.ms/nuget-cross-platform-authentication-plugin) and will soon be deprecated - [#7819](https://github.com/NuGet/Home/issues/7819) ## Issues fixed in this release From 793232cd07dceeb946d247af00aca04e0f479cdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Wed, 3 Apr 2019 11:30:29 -0700 Subject: [PATCH 1138/2943] Update docs/release-notes/NuGet-5.0-RTM.md Co-Authored-By: karann-msft --- docs/release-notes/NuGet-5.0-RTM.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/NuGet-5.0-RTM.md b/docs/release-notes/NuGet-5.0-RTM.md index c559aab92..10ed75a89 100644 --- a/docs/release-notes/NuGet-5.0-RTM.md +++ b/docs/release-notes/NuGet-5.0-RTM.md @@ -153,4 +153,8 @@ NuGet distribution vehicles: #### Issue When using dotnet.exe 2.x to restore a project that multi-targets netcoreapp 1.x and netcoreapp 2.x, the fallback folder is treated as a file feed. This means, when restoring, NuGet will pick the package from the fallback folder and try to install it into the global packages folder and do the usual signing validation which fails.
    #### Workaround -Disable the usage of the fallback folder by setting the `RestoreAdditionalProjectSources` to nothing. `` Use this with caution as it will cause a lot of packages to be downloaded from NuGet.org which otherwise would be have been restored from the fallback folder. +Disable the usage of the fallback folder by setting the `RestoreAdditionalProjectSources` to nothing: + +`` + +Use this with caution as packages that would be restored from the fallback folder will now be downloaded from NuGet.org. From 89656434524ea8ad5fbb94a1ea392d9b1bdb10a5 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 3 Apr 2019 11:32:56 -0700 Subject: [PATCH 1139/2943] Update NuGet-5.0-RTM.md --- docs/release-notes/NuGet-5.0-RTM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/NuGet-5.0-RTM.md b/docs/release-notes/NuGet-5.0-RTM.md index 10ed75a89..e356da88f 100644 --- a/docs/release-notes/NuGet-5.0-RTM.md +++ b/docs/release-notes/NuGet-5.0-RTM.md @@ -31,7 +31,7 @@ NuGet distribution vehicles: **Bugs** -* When doing a NoOp restore, avoid obj\*dgspec.json write - [#7854](https://github.com/NuGet/Home/issues/7854) +* When doing a NoOp restore, avoid *.dgspec.json write in obj directory - [#7854](https://github.com/NuGet/Home/issues/7854) * Permissions on files created inside ~/.nuget are too open - [#7673](https://github.com/NuGet/Home/issues/7673) From 15f76917abd4858db4c766f4535b3ab22dc94fd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Wed, 3 Apr 2019 11:35:24 -0700 Subject: [PATCH 1140/2943] Apply suggestions from code review Co-Authored-By: karann-msft --- docs/release-notes/NuGet-5.0-RTM.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/release-notes/NuGet-5.0-RTM.md b/docs/release-notes/NuGet-5.0-RTM.md index e356da88f..7763674d5 100644 --- a/docs/release-notes/NuGet-5.0-RTM.md +++ b/docs/release-notes/NuGet-5.0-RTM.md @@ -35,7 +35,7 @@ NuGet distribution vehicles: * Permissions on files created inside ~/.nuget are too open - [#7673](https://github.com/NuGet/Home/issues/7673) -* dotnet list package --outdated doesn't work with sources that need auth - [#7605](https://github.com/NuGet/Home/issues/7605) +* `dotnet list package --outdated` doesn't work with sources that need auth - [#7605](https://github.com/NuGet/Home/issues/7605) * NuGet.VisualStudio.IVsPackageInstaller - calling on a project with no package references always uses packages.config, even if the default is set to PackageReference - [#7005](https://github.com/NuGet/Home/issues/7005) @@ -59,7 +59,7 @@ NuGet distribution vehicles: * Prefer path for msbuild discovery if user didn't ask for specific msbuild version - [#7786](https://github.com/NuGet/Home/issues/7786) -* nuget.exe /? should list correct msbuild versions - [#7794](https://github.com/NuGet/Home/issues/7794) +* `nuget.exe /?` should list correct msbuild versions - [#7794](https://github.com/NuGet/Home/issues/7794) * NuGet.targets(498,5): error : Could not find a part of the path '/tmp/NuGetScratch - on mono - [#7793](https://github.com/NuGet/Home/issues/7793) @@ -83,33 +83,33 @@ NuGet distribution vehicles: * Fix NuGet.Configuration issues - [#7326](https://github.com/NuGet/Home/issues/7326) -* Adapt to MSBuild updating it's install location. - [#7325](https://github.com/NuGet/Home/issues/7325) +* Adapt to MSBuild updating its install location - [#7325](https://github.com/NuGet/Home/issues/7325) * NuGet.Build.Tasks.Pack should be a development dependency - [#7249](https://github.com/NuGet/Home/issues/7249) * Add pack extension point for including debug symbols - [#7234](https://github.com/NuGet/Home/issues/7234) -* dotnet pack should preserve dependency version range in the created nupkg. (even if floating version is used) - [#7232](https://github.com/NuGet/Home/issues/7232) +* `dotnet pack` should preserve dependency version range in the created nupkg (even if floating version is used) - [#7232](https://github.com/NuGet/Home/issues/7232) -* dotnet restore fails on authenticated source when user-level config also has source - [#7209](https://github.com/NuGet/Home/issues/7209) +* `dotnet restore` fails on authenticated source when user-level config also has source - [#7209](https://github.com/NuGet/Home/issues/7209) * Pack should not restrict the set of BuildActions for content files - [#7155](https://github.com/NuGet/Home/issues/7155) -* Using a projectreference which requires AssetTargetFallback to succeed, should warn. - [#7137](https://github.com/NuGet/Home/issues/7137) +* Using a ProjectReference which requires AssetTargetFallback to succeed, should warn. - [#7137](https://github.com/NuGet/Home/issues/7137) * Deadlock due to threading issues when calling into CPS (CommonProjectSystem) - [#7103](https://github.com/NuGet/Home/issues/7103) -* dotnet add package won't use credentials from global config for a source specified in local config - [#6935](https://github.com/NuGet/Home/issues/6935) +* `dotnet add package` doesn't use credentials from global config for a source specified in local config - [#6935](https://github.com/NuGet/Home/issues/6935) -* Threading issues with MEF being called on async codepaths - [#6771](https://github.com/NuGet/Home/issues/6771) +* Threading issues with MEF being called on async code paths - [#6771](https://github.com/NuGet/Home/issues/6771) -* Signing: error reported twice and without call stack - [#6455](https://github.com/NuGet/Home/issues/6455) +* Signing: error reported twice and without call stack - [#6455](https://github.com/NuGet/Home/issues/6455) * Installing a signed package with untrusted signing certificate should show error - [#6318](https://github.com/NuGet/Home/issues/6318) * NuGet restore improperly NoOps when 2 projects are sharing obj directory - [#6114](https://github.com/NuGet/Home/issues/6114) -* Cannot use PAT with dotnet restore on Linux with packages from authenticated feed - [#5651](https://github.com/NuGet/Home/issues/5651) +* Cannot use PAT with `dotnet restore` on Linux with packages from authenticated feed - [#5651](https://github.com/NuGet/Home/issues/5651) * dotnet restore fails due to disabled machine wide feed - [#5410](https://github.com/NuGet/Home/issues/5410) From f253b12a9b5d0d79a0ad17cb18cd0e57187ce055 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 3 Apr 2019 11:45:52 -0700 Subject: [PATCH 1141/2943] Update NuGet-5.0-RTM.md --- docs/release-notes/NuGet-5.0-RTM.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/NuGet-5.0-RTM.md b/docs/release-notes/NuGet-5.0-RTM.md index 7763674d5..9131437e9 100644 --- a/docs/release-notes/NuGet-5.0-RTM.md +++ b/docs/release-notes/NuGet-5.0-RTM.md @@ -21,7 +21,7 @@ NuGet distribution vehicles: ## Summary: What's New in 5.0 -* Support solution filter when restoring the solution via CLI or in Visual Studio - [#5820](https://github.com/NuGet/Home/issues/5820) +* Support for restoring [filtered solutions](https://docs.microsoft.com/en-us/visualstudio/ide/filtered-solutions?view=vs-2019) in Visual Studio 2019 - [#5820](https://github.com/NuGet/Home/issues/5820) * `BuildTransitive` folder enables packages to transitively contribute targets/props to the host project - [#6091](https://github.com/NuGet/Home/issues/6091) * Better support for PackageReference scenarios in NuGet IVs APIs - [#7005](https://github.com/NuGet/Home/issues/7005), [#7493](https://github.com/NuGet/Home/issues/7493) * `nuget.exe pack project.json` has been deprecated - [#7928](https://github.com/NuGet/Home/issues/7928) @@ -133,7 +133,7 @@ NuGet distribution vehicles: * Allow package authors to define build assets transitive behavior - [#6091](https://github.com/NuGet/Home/issues/6091) -* Enable restore in VS to succeed if a project is not part of solution or is not loaded, but has previously been restored - [#5820](https://github.com/NuGet/Home/issues/5820) +* Support VS 2019 Solution Filter feature. Also supports project not in solution, or unloaded projects. Need to restore complete solution (via CLI or VS) first - [#5820](https://github.com/NuGet/Home/issues/5820) * NuGet 5.0 assemblies to require .NET 4.7.2 (via TFM change) - [#7510](https://github.com/NuGet/Home/issues/7510) From f7aa66da1b493a93d7dfe01dc2a05513d52e3e62 Mon Sep 17 00:00:00 2001 From: Tim Heuer Date: Wed, 3 Apr 2019 12:45:52 -0700 Subject: [PATCH 1142/2943] Fixing bad link Bad link that went directly to MD file for the powershell command. Just removed the extension so it was the right link. --- docs/create-packages/Sign-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 6c38683b1..ff98e7382 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -62,7 +62,7 @@ You are now ready to publish the package to NuGet.org. See [Publishing packages] ## Create a test certificate -You can use self-issued certificates for testing purposes. To create a self-issued certificate, use the [New-SelfSignedCertificate PowerShell command](/powershell/module/pkiclient/new-selfsignedcertificate.md). +You can use self-issued certificates for testing purposes. To create a self-issued certificate, use the [New-SelfSignedCertificate PowerShell command](/powershell/module/pkiclient/new-selfsignedcertificate). ```ps New-SelfSignedCertificate -Subject "CN=NuGet Test Developer, OU=Use for testing purposes ONLY" ` From f50c780cf16bc72a3ea0f7aa77c42bf5a91a2e8f Mon Sep 17 00:00:00 2001 From: Tim Heuer Date: Wed, 3 Apr 2019 12:55:48 -0700 Subject: [PATCH 1143/2943] Wrong argument used in example Fixing up the wrong argument used for CertificatePath and fixing another incorrect URI that is going to a 404 page --- docs/create-packages/Sign-a-Package.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 6c38683b1..f4537ff9d 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -24,7 +24,7 @@ You can use self-issued certificates for testing purposes. However, packages sig ![Certificate Export Wizard](../reference/media/CertificateExportWizard.png) -* You can also export the certificate using the [Export-Certificate PowerShell command](/powershell/module/pkiclient/export-certificate.md). +* You can also export the certificate using the [Export-Certificate PowerShell command](/powershell/module/pkiclient/export-certificate). ## Sign the package @@ -34,7 +34,7 @@ You can use self-issued certificates for testing purposes. However, packages sig Sign the package using [nuget sign](../tools/cli-ref-sign.md): ```cli -nuget sign MyPackage.nupkg -CertificateFilePath -Timestamper +nuget sign MyPackage.nupkg -CertificatePath -Timestamper ``` * You can use a certificate available in the certificate store or use a certificate from a file. See CLI reference for [nuget sign](../tools/cli-ref-sign.md). From 3a0c261bffcd822c70e19141935216f890e57281 Mon Sep 17 00:00:00 2001 From: Tim Heuer Date: Wed, 3 Apr 2019 13:55:01 -0700 Subject: [PATCH 1144/2943] Adding documentation note about Timestamper Added a note about timestamper service URL argument to check with certificate provider --- docs/create-packages/Sign-a-Package.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 6cf4662c9..9b0ecbbad 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -37,6 +37,9 @@ Sign the package using [nuget sign](../tools/cli-ref-sign.md): nuget sign MyPackage.nupkg -CertificatePath -Timestamper ``` +> [!note] +> For the `Timestamper` optional argument, often times the provider of your certificate authority you will use has a timestamping server URL for you to use. Consult with your provider's documentation and/or support for that service URL. + * You can use a certificate available in the certificate store or use a certificate from a file. See CLI reference for [nuget sign](../tools/cli-ref-sign.md). * Signed packages should include a timestamp to make sure the signature remains valid when the signing certificate has expired. Else the sign operation will produce a [warning](../reference/errors-and-warnings/NU3002.md). * You can see the signature details of a given package using [nuget verify](../tools/cli-ref-verify.md). From cf51a1a4dec630b952c7a67548c5c6bb5514ef63 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 3 Apr 2019 18:22:57 -0700 Subject: [PATCH 1145/2943] Update NuGet-5.0-RTM.md --- docs/release-notes/NuGet-5.0-RTM.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/release-notes/NuGet-5.0-RTM.md b/docs/release-notes/NuGet-5.0-RTM.md index 9131437e9..7a26762f6 100644 --- a/docs/release-notes/NuGet-5.0-RTM.md +++ b/docs/release-notes/NuGet-5.0-RTM.md @@ -13,7 +13,7 @@ NuGet distribution vehicles: | NuGet version | Available in Visual Studio version| Available in .NET SDK(s)| |:---|:---|:---| -| [**5.0.0**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.0](https://visualstudio.microsoft.com/downloads/) | 2.1.6021, 2.2.2022 | +| [**5.0.0**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.0](https://visualstudio.microsoft.com/downloads/) | [2.1.602](https://dotnet.microsoft.com/download/dotnet-core/2.1)1, [2.2.202](https://dotnet.microsoft.com/download/dotnet-core/2.2)2 | 1Installed with Visual Studio 2019 with .NET Core workload @@ -147,6 +147,8 @@ NuGet distribution vehicles: * Enable EmbedInteropTypes for PackageReference (matching Packages.Config capability) - [#2365](https://github.com/NuGet/Home/issues/2365) +**[List of all issues fixed in this release - 5.0 RTM](https://github.com/NuGet/Home/milestone/84?closed=1)** + ## Known issues ### Packages in FallbackFolders installed by .NET Core SDK are custom installed, and fail signature validation. - [#7414](https://github.com/NuGet/Home/issues/7414) @@ -155,6 +157,6 @@ When using dotnet.exe 2.x to restore a project that multi-targets netcoreapp 1.x #### Workaround Disable the usage of the fallback folder by setting the `RestoreAdditionalProjectSources` to nothing: -`` +`` Use this with caution as packages that would be restored from the fallback folder will now be downloaded from NuGet.org. From c6b6c82a7a8a16640860b4d8cbca0b867f910943 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 3 Apr 2019 18:29:09 -0700 Subject: [PATCH 1146/2943] Update Sign-a-Package.md --- docs/create-packages/Sign-a-Package.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/create-packages/Sign-a-Package.md b/docs/create-packages/Sign-a-Package.md index 9b0ecbbad..3a4a38200 100644 --- a/docs/create-packages/Sign-a-Package.md +++ b/docs/create-packages/Sign-a-Package.md @@ -37,8 +37,8 @@ Sign the package using [nuget sign](../tools/cli-ref-sign.md): nuget sign MyPackage.nupkg -CertificatePath -Timestamper ``` -> [!note] -> For the `Timestamper` optional argument, often times the provider of your certificate authority you will use has a timestamping server URL for you to use. Consult with your provider's documentation and/or support for that service URL. +> [!Tip] +> The certificate provider often also provides a timestamping server URL which you can use for the `Timestamper` optional argument show above. Consult with your provider's documentation and/or support for that service URL. * You can use a certificate available in the certificate store or use a certificate from a file. See CLI reference for [nuget sign](../tools/cli-ref-sign.md). * Signed packages should include a timestamp to make sure the signature remains valid when the signing certificate has expired. Else the sign operation will produce a [warning](../reference/errors-and-warnings/NU3002.md). From 08c36a5c80fd800764208e3f92a933dfad96ed17 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Mon, 8 Apr 2019 14:32:39 -0700 Subject: [PATCH 1147/2943] fixing 1388 fixes https://github.com/NuGet/docs.microsoft.com-nuget/issues/1388 --- docs/what-is-nuget.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/what-is-nuget.md b/docs/what-is-nuget.md index 8fa2ac7f2..60abd1b79 100644 --- a/docs/what-is-nuget.md +++ b/docs/what-is-nuget.md @@ -32,7 +32,7 @@ A "compatible" package means that it contains assemblies built for at least one Package developers who require APIs outside of .NET Standard, on the other hand, create separate assemblies for the different target frameworks they want to support and include all of those assemblies in the same package (which is called "multi-targeting"). When a consumer installs such a package, NuGet extracts only those assemblies that are needed by the project. This minimizes the package's footprint in the final application and/or assemblies produced by that project. A multi-targeting package is, of course, more difficult for its creator to maintain. > [!Note] -> Targeting .NET Standard supercedes the previous approach of using various portable class library (PCL) targets. This documentation therefore focuses on creating packages for .NET Standard. +> Targeting .NET Standard supersedes the previous approach of using various portable class library (PCL) targets. This documentation therefore focuses on creating packages for .NET Standard. ## NuGet tools From 1b17c829ebc64791f629b4e3b6755931726b11d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Mon, 8 Apr 2019 16:19:00 -0700 Subject: [PATCH 1148/2943] Hide the skeleton in the closet (#1391) --- docs/api/repository-signatures-resource.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/api/repository-signatures-resource.md b/docs/api/repository-signatures-resource.md index 951692d74..4edb39e67 100644 --- a/docs/api/repository-signatures-resource.md +++ b/docs/api/repository-signatures-resource.md @@ -26,7 +26,8 @@ The following `@type` value is used: @type value | Notes -------------------------- | ----- RepositorySignatures/4.7.0 | The initial release -RepositorySignatures/4.9.0 | Allows enabling `allRepositorySigned` +RepositorySignatures/4.9.0 | Supported by NuGet v4.9+ clients +RepositorySignatures/5.0.0 | Allows enabling `allRepositorySigned`. Supported by NuGet v5.0+ clients ## Base URL @@ -63,7 +64,7 @@ The repository signature index is a JSON document that contains an object with t Name | Type | Required | Notes ------------------- | ---------------- | -------- | ----- -allRepositorySigned | boolean | yes | Must be `false` on 4.7.0 resource +allRepositorySigned | boolean | yes | Must be `false` on 4.7.0 and 4.9.0 resources signingCertificates | array of objects | yes | The `allRepositorySigned` boolean is set to false if the package source has some packages that have no repository @@ -71,8 +72,8 @@ signature. If the boolean is set to true, all packages available on the source m signature produced by one of the signing certificates mentioned in `signingCertificates`. > [!Warning] -> The `allRepositorySigned` boolean must be false on the 4.7.0 resource. NuGet v4.7 and v4.8 clients cannot install packages -> from sources that have `allRepositorySigned` set to true. +> The `allRepositorySigned` boolean must be false on the 4.7.0 and 4.9.0 resources. NuGet v4.7, v4.8, and v4.9 clients cannot +> install packages from sources that have `allRepositorySigned` set to true. There should be one or more signing certificates in the `signingCertificates` array if the `allRepositorySigned` boolean is set to true. If the array is empty and `allRepositorySigned` is set to true, all packages from the source should be From 0ce99969bfd81bb9212fd33b0a06dee2520fc8eb Mon Sep 17 00:00:00 2001 From: Heng Liu Date: Thu, 28 Mar 2019 10:59:30 -0700 Subject: [PATCH 1149/2943] update 1 and add 11 error msgs --- docs/reference/errors-and-warnings/NU3022.md | 8 ++-- docs/reference/errors-and-warnings/NU3024.md | 47 ++++++++++++++++++++ docs/reference/errors-and-warnings/NU3026.md | 24 ++++++++++ docs/reference/errors-and-warnings/NU3029.md | 24 ++++++++++ docs/reference/errors-and-warnings/NU3030.md | 27 +++++++++++ docs/reference/errors-and-warnings/NU3031.md | 24 ++++++++++ docs/reference/errors-and-warnings/NU3032.md | 41 +++++++++++++++++ docs/reference/errors-and-warnings/NU3033.md | 41 +++++++++++++++++ docs/reference/errors-and-warnings/NU3035.md | 22 +++++++++ docs/reference/errors-and-warnings/NU3036.md | 43 ++++++++++++++++++ docs/reference/errors-and-warnings/NU3037.md | 27 +++++++++++ docs/reference/errors-and-warnings/NU3038.md | 22 +++++++++ 12 files changed, 345 insertions(+), 5 deletions(-) create mode 100644 docs/reference/errors-and-warnings/NU3024.md create mode 100644 docs/reference/errors-and-warnings/NU3026.md create mode 100644 docs/reference/errors-and-warnings/NU3029.md create mode 100644 docs/reference/errors-and-warnings/NU3030.md create mode 100644 docs/reference/errors-and-warnings/NU3031.md create mode 100644 docs/reference/errors-and-warnings/NU3032.md create mode 100644 docs/reference/errors-and-warnings/NU3033.md create mode 100644 docs/reference/errors-and-warnings/NU3035.md create mode 100644 docs/reference/errors-and-warnings/NU3036.md create mode 100644 docs/reference/errors-and-warnings/NU3037.md create mode 100644 docs/reference/errors-and-warnings/NU3038.md diff --git a/docs/reference/errors-and-warnings/NU3022.md b/docs/reference/errors-and-warnings/NU3022.md index 49436563a..38a9ded05 100644 --- a/docs/reference/errors-and-warnings/NU3022.md +++ b/docs/reference/errors-and-warnings/NU3022.md @@ -23,7 +23,7 @@ The certificate used to timestamp the package signature has an unsupported signa ### Solution -Please ensure that the Timstamp Authority's signing certificate has one of the following signature algorithms - +Please ensure that the timestamp authority's signing certificate has one of the following signature algorithms - * `sha256WithRSAEncryption` * `sha384WithRSAEncryption` * `sha512WithRSAEncryption` @@ -41,9 +41,7 @@ The certificate used to timestamp the package signature has an unsupported signa ### Solution -Please request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package) using the `-Timestamper` option such that the Timestamp Authority signing certificate has one of the following signature algorithms - +Please request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package) using the `-Timestamper` option such that the timestamp authority signing certificate has one of the following signature algorithms - * `sha256WithRSAEncryption` * `sha384WithRSAEncryption` -* `sha512WithRSAEncryption` - - +* `sha512WithRSAEncryption` \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3024.md b/docs/reference/errors-and-warnings/NU3024.md new file mode 100644 index 000000000..14262a92f --- /dev/null +++ b/docs/reference/errors-and-warnings/NU3024.md @@ -0,0 +1,47 @@ +--- +title: NuGet Warning NU3024 +description: NU3024 Warning code +author: heng-liu +ms.author: henli +ms.date: 3/18/2019 +ms.topic: reference +ms.reviewer: dtivel +f1_keywords: + - NU3024 +--- + +# NuGet Warning NU3024 + +## Scenario 1 + +
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature's timestamp certificate has an unsupported digest algorithm.
    + +### Issue + +The certificate used to timestamp the package signature has an unsupported digest algorithm. + + +### Solution + +Ensure that the Timstamp Authority's signing certificate has one of the following digest algorithms - +* `SHA-2-256` +* `SHA-2-384` +* `SHA-2-512` + + + +## Scenario 2 + +
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The timestamp certificate has an unsupported digest algorithm. The following algorithms are supported: SHA-2-256, SHA-2-384, SHA-2-512.
    + +### Issue + +The certificate used to timestamp the package signature has an unsupported digest algorithm. + + +### Solution + +Request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package) using the `-Timestamper` option such that the Timestamp Authority signing certificate has one of the following digest algorithms - +* `SHA-2-256` +* `SHA-2-384` +* `SHA-2-512` \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3026.md b/docs/reference/errors-and-warnings/NU3026.md new file mode 100644 index 000000000..cdf3bfe6e --- /dev/null +++ b/docs/reference/errors-and-warnings/NU3026.md @@ -0,0 +1,24 @@ +--- +title: NuGet Warning NU3026 +description: NU3026 Warning code +author: heng-liu +ms.author: henli +ms.date: 3/18/2019 +ms.topic: reference +ms.reviewer: dtivel +f1_keywords: + - NU3026 +--- + +# NuGet Warning NU3026 + +
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The timestamp response is invalid.  Nonces did not match.
    + +### Issue + +The timestamp authority did not return an expected nonce in its response; therefore, its response is invalid. + + +### Solution + +Try to re-sign and timestamp the package. If the problem persists, contact the timestamp authority to discover the source of the problem. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3029.md b/docs/reference/errors-and-warnings/NU3029.md new file mode 100644 index 000000000..2a3d72974 --- /dev/null +++ b/docs/reference/errors-and-warnings/NU3029.md @@ -0,0 +1,24 @@ +--- +title: NuGet Warning NU3029 +description: NU3029 Warning code +author: heng-liu +ms.author: henli +ms.date: 3/18/2019 +ms.topic: reference +ms.reviewer: dtivel +f1_keywords: + - NU3029 +--- + +# NuGet Warning NU3029 + +
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The timestamp signature is invalid.
    + +### Issue + +The timestamp signature is invalid. + + +### Solution + +Try to re-sign and timestamp the package with a valid timestamp. If the problem persists, contact the timestamp authority to discover the source of the problem. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3030.md b/docs/reference/errors-and-warnings/NU3030.md new file mode 100644 index 000000000..90b820732 --- /dev/null +++ b/docs/reference/errors-and-warnings/NU3030.md @@ -0,0 +1,27 @@ +--- +title: NuGet Warning NU3030 +description: NU3030 Warning code +author: heng-liu +ms.author: henli +ms.date: 3/18/2019 +ms.topic: reference +ms.reviewer: dtivel +f1_keywords: + - NU3030 +--- + +# NuGet Warning NU3030 + +
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature's timestamp's message imprint uses an unsupported hash algorithm.
    + +### Issue + +The primary signature's timestamp's message imprint uses an unsupported hash algorithm. + + +### Solution + +Request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package) using the `-Timestamper` option such that the timestamp's message imprint uses one of the following hash algorithms - +* `SHA-2-256` +* `SHA-2-384` +* `SHA-2-512` \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3031.md b/docs/reference/errors-and-warnings/NU3031.md new file mode 100644 index 000000000..7dbecdfaf --- /dev/null +++ b/docs/reference/errors-and-warnings/NU3031.md @@ -0,0 +1,24 @@ +--- +title: NuGet Warning NU3031 +description: NU3031 Warning code +author: heng-liu +ms.author: henli +ms.date: 3/18/2019 +ms.topic: reference +ms.reviewer: dtivel +f1_keywords: + - NU3031 +--- + +# NuGet Warning NU3031 + +
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The repository countersignature is invalid.
    + +### Issue + +The repository countersignature is invalid. + + +### Solution + +Contact the repository that countersigned the package. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3032.md b/docs/reference/errors-and-warnings/NU3032.md new file mode 100644 index 000000000..f578fb99e --- /dev/null +++ b/docs/reference/errors-and-warnings/NU3032.md @@ -0,0 +1,41 @@ +--- +title: NuGet Warning NU3032 +description: NU3032 Warning code +author: heng-liu +ms.author: henli +ms.date: 3/18/2019 +ms.topic: reference +ms.reviewer: dtivel +f1_keywords: + - NU3032 +--- + +# NuGet Warning NU3032 + +## Scenario 1 + +
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The package already contains a repository countersignature. Please remove the existing signature before adding a new repository countersignature.
    + +### Issue + +A signed package must not contain more than 1 repository countersignature. The package already contained a repository countersignature when attempting to add a new repository countersignature. + + +### Solution + +Remove the existing signature before adding a new repository countersignature. + + + +## Scenario 2 + +
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The package signature contains multiple repository countersignatures.
    + +### Issue + +The package signature contains multiple repository countersignatures. + + +### Solution + +Contact the repository that countersigned the package. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3033.md b/docs/reference/errors-and-warnings/NU3033.md new file mode 100644 index 000000000..d711116ff --- /dev/null +++ b/docs/reference/errors-and-warnings/NU3033.md @@ -0,0 +1,41 @@ +--- +title: NuGet Warning NU3033 +description: NU3033 Warning code +author: heng-liu +ms.author: henli +ms.date: 3/18/2019 +ms.topic: reference +ms.reviewer: dtivel +f1_keywords: + - NU3033 +--- + +# NuGet Warning NU3033 + +## Scenario 1 + +
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': A repository primary signature must not have a repository countersignature.
    + +### Issue + +The primary signature should be either an author signature or a repository signature. It must not be a repository countersignature. A repository primary signature cannot have a repository countersignature. + + +### Solution + +Try to re-sign the package with either an author signature or a repository signature as the primary signature, then re-countersign the package. + + + +## Scenario 2 + +
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': A repository primary signature must not have a repository countersignature.
    + +### Issue + +The primary signature should be either an author signature or a repository signature. It must not be a repository countersignature. A repository primary signature cannot have a repository countersignature. + + +### Solution + +Contact the repository that countersigned the package. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3035.md b/docs/reference/errors-and-warnings/NU3035.md new file mode 100644 index 000000000..783100154 --- /dev/null +++ b/docs/reference/errors-and-warnings/NU3035.md @@ -0,0 +1,22 @@ +--- +title: NuGet Warning NU3035 +description: NU3035 Warning code +author: heng-liu +ms.author: henli +ms.date: 3/18/2019 +ms.topic: reference +ms.reviewer: dtivel +f1_keywords: + - NU3035 +--- + +# NuGet Warning NU3035 + +### Issue + +A complete certificate chain could not be built for the repository countersignature's signing certificate. + + +### Solution + +Try to re-sign and timestamp the package. If the problem persists, contact the timestamp authority to discover the source of the problem. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3036.md b/docs/reference/errors-and-warnings/NU3036.md new file mode 100644 index 000000000..caf93cad9 --- /dev/null +++ b/docs/reference/errors-and-warnings/NU3036.md @@ -0,0 +1,43 @@ +--- +title: NuGet Warning NU3036 +description: NU3036 Warning code +author: heng-liu +ms.author: henli +ms.date: 3/18/2019 +ms.topic: reference +ms.reviewer: dtivel +f1_keywords: + - NU3036 +--- + +# NuGet Warning NU3036 + +## Scenario 1 + +
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The timestamp's generalized time is outside the timestamping certificate's validity period.
    + +### Issue + +The timestamp's generalized time is outside the timestamping certificate's validity period. + + +### Solution + +Try to re-sign and timestamp the package. If the problem persists, contact the timestamp authority to discover the source of the problem. + + + +## Scenario 2 + +
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature's timestamp's generalized time is outside the timestamping certificate's validity period.
    + +### Issue + +The certificate used to timestamp the package signature is invalid as the timestamp's generalized time is outside the timestamping certificate's validity period. + + +### Solution + +Request the package author to re-sign and timestamp the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package). If the problem persists, request the package author to contact the timestamp authority to discover the source of the problem. + + diff --git a/docs/reference/errors-and-warnings/NU3037.md b/docs/reference/errors-and-warnings/NU3037.md new file mode 100644 index 000000000..d4a6504df --- /dev/null +++ b/docs/reference/errors-and-warnings/NU3037.md @@ -0,0 +1,27 @@ +--- +title: NuGet Warning NU3037 +description: NU3037 Warning code +author: heng-liu +ms.author: henli +ms.date: 3/18/2019 +ms.topic: reference +ms.reviewer: dtivel +f1_keywords: + - NU3037 +--- + +# NuGet Warning NU3037 + +### Issue + +A NuGet package signature has expired. +A package signature shares the same validity period as the certificate used to generate the signature. A package signature is invalid outside of that validity period. +When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), a package with an expired package signature is treated as an unsigned package and installed anyway. NU3037 is raised as a warning. +When NuGet’s signature validation mode is set to require, a package with an expired package signature is blocked from installation, and NU3037 is elevated from a warning to an error. Require mode requires non-expired package signatures. +To ensure long-term validity --- even beyond the signing certificate’s validity period --- a package signature should be timestamped with a trusted timestamp. Trusted timestamps must be added while a package signature is still valid and not expired. + + +### Solution + +* Resign the package with a non-expired certificate. Optionally, add a trusted timestamp at the time of signing to ensure long-term validity of the signature. +* For accept mode only, ignore the warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3038.md b/docs/reference/errors-and-warnings/NU3038.md new file mode 100644 index 000000000..129b96b31 --- /dev/null +++ b/docs/reference/errors-and-warnings/NU3038.md @@ -0,0 +1,22 @@ +--- +title: NuGet Warning NU3038 +description: NU3038 Warning code +author: heng-liu +ms.author: henli +ms.date: 3/18/2019 +ms.topic: reference +ms.reviewer: dtivel +f1_keywords: + - NU3038 +--- + +# NuGet Warning NU3038 + +### Issue + +Verification settings require a repository countersignature, but the package does not have a repository countersignature. + + +### Solution + +Use a package source that has the repository countersigned package. \ No newline at end of file From e85a31b184c3d9aa658aab2ce4961899dd1a2759 Mon Sep 17 00:00:00 2001 From: Heng Liu Date: Thu, 28 Mar 2019 11:07:03 -0700 Subject: [PATCH 1150/2943] fix spelling mistakes --- docs/reference/errors-and-warnings/NU3022.md | 4 +++- docs/reference/errors-and-warnings/NU3024.md | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/reference/errors-and-warnings/NU3022.md b/docs/reference/errors-and-warnings/NU3022.md index 38a9ded05..9e14c7669 100644 --- a/docs/reference/errors-and-warnings/NU3022.md +++ b/docs/reference/errors-and-warnings/NU3022.md @@ -44,4 +44,6 @@ The certificate used to timestamp the package signature has an unsupported signa Please request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package) using the `-Timestamper` option such that the timestamp authority signing certificate has one of the following signature algorithms - * `sha256WithRSAEncryption` * `sha384WithRSAEncryption` -* `sha512WithRSAEncryption` \ No newline at end of file +* `sha512WithRSAEncryption` + + diff --git a/docs/reference/errors-and-warnings/NU3024.md b/docs/reference/errors-and-warnings/NU3024.md index 14262a92f..0ada88d2f 100644 --- a/docs/reference/errors-and-warnings/NU3024.md +++ b/docs/reference/errors-and-warnings/NU3024.md @@ -23,7 +23,7 @@ The certificate used to timestamp the package signature has an unsupported diges ### Solution -Ensure that the Timstamp Authority's signing certificate has one of the following digest algorithms - +Ensure that the timestamp authority's signing certificate has one of the following digest algorithms - * `SHA-2-256` * `SHA-2-384` * `SHA-2-512` @@ -41,7 +41,7 @@ The certificate used to timestamp the package signature has an unsupported diges ### Solution -Request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package) using the `-Timestamper` option such that the Timestamp Authority signing certificate has one of the following digest algorithms - +Request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package) using the `-Timestamper` option such that the timestamp authority signing certificate has one of the following digest algorithms - * `SHA-2-256` * `SHA-2-384` * `SHA-2-512` \ No newline at end of file From f14b129bc1e094dd440d938b91dfe34d85b306fe Mon Sep 17 00:00:00 2001 From: Heng Liu Date: Thu, 28 Mar 2019 11:23:57 -0700 Subject: [PATCH 1151/2943] remove extra space --- docs/reference/errors-and-warnings/NU3026.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/errors-and-warnings/NU3026.md b/docs/reference/errors-and-warnings/NU3026.md index cdf3bfe6e..0b573e615 100644 --- a/docs/reference/errors-and-warnings/NU3026.md +++ b/docs/reference/errors-and-warnings/NU3026.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3026 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The timestamp response is invalid.  Nonces did not match.
    +
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The timestamp response is invalid. Nonces did not match.
    ### Issue From 74eec5ebb0106faa8dd3a449cd56f5449edcf026 Mon Sep 17 00:00:00 2001 From: Heng Liu Date: Thu, 28 Mar 2019 11:45:19 -0700 Subject: [PATCH 1152/2943] update NU3035 --- docs/reference/errors-and-warnings/NU3035.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/errors-and-warnings/NU3035.md b/docs/reference/errors-and-warnings/NU3035.md index 783100154..0385ee801 100644 --- a/docs/reference/errors-and-warnings/NU3035.md +++ b/docs/reference/errors-and-warnings/NU3035.md @@ -19,4 +19,4 @@ A complete certificate chain could not be built for the repository countersignat ### Solution -Try to re-sign and timestamp the package. If the problem persists, contact the timestamp authority to discover the source of the problem. \ No newline at end of file +Contact the timestamp authority to discover the source of the problem. \ No newline at end of file From ef33b28433035b7ee2f175d444a8c98265008fbe Mon Sep 17 00:00:00 2001 From: Heng Liu Date: Thu, 28 Mar 2019 11:50:52 -0700 Subject: [PATCH 1153/2943] replace all instances of source.com with contoso.com in existing package signing docs --- docs/reference/errors-and-warnings/NU3000.md | 6 +++--- docs/reference/errors-and-warnings/NU3002.md | 2 +- docs/reference/errors-and-warnings/NU3003.md | 4 ++-- docs/reference/errors-and-warnings/NU3004.md | 6 +++--- docs/reference/errors-and-warnings/NU3005.md | 6 +++--- docs/reference/errors-and-warnings/NU3006.md | 2 +- docs/reference/errors-and-warnings/NU3007.md | 2 +- docs/reference/errors-and-warnings/NU3008.md | 2 +- docs/reference/errors-and-warnings/NU3009.md | 2 +- docs/reference/errors-and-warnings/NU3010.md | 2 +- docs/reference/errors-and-warnings/NU3011.md | 2 +- docs/reference/errors-and-warnings/NU3012.md | 4 ++-- docs/reference/errors-and-warnings/NU3013.md | 4 ++-- docs/reference/errors-and-warnings/NU3014.md | 4 ++-- docs/reference/errors-and-warnings/NU3015.md | 4 ++-- docs/reference/errors-and-warnings/NU3016.md | 2 +- docs/reference/errors-and-warnings/NU3017.md | 4 ++-- docs/reference/errors-and-warnings/NU3018.md | 2 +- docs/reference/errors-and-warnings/NU3019.md | 4 ++-- docs/reference/errors-and-warnings/NU3020.md | 4 ++-- docs/reference/errors-and-warnings/NU3021.md | 4 ++-- docs/reference/errors-and-warnings/NU3022.md | 4 ++-- docs/reference/errors-and-warnings/NU3023.md | 4 ++-- docs/reference/errors-and-warnings/NU3024.md | 4 ++-- docs/reference/errors-and-warnings/NU3025.md | 4 ++-- docs/reference/errors-and-warnings/NU3026.md | 2 +- docs/reference/errors-and-warnings/NU3027.md | 2 +- docs/reference/errors-and-warnings/NU3029.md | 2 +- docs/reference/errors-and-warnings/NU3030.md | 2 +- docs/reference/errors-and-warnings/NU3031.md | 2 +- docs/reference/errors-and-warnings/NU3032.md | 4 ++-- docs/reference/errors-and-warnings/NU3033.md | 4 ++-- docs/reference/errors-and-warnings/NU3034.md | 8 ++++---- docs/reference/errors-and-warnings/NU3036.md | 4 ++-- 34 files changed, 59 insertions(+), 59 deletions(-) diff --git a/docs/reference/errors-and-warnings/NU3000.md b/docs/reference/errors-and-warnings/NU3000.md index 476f5d46e..38f35e295 100644 --- a/docs/reference/errors-and-warnings/NU3000.md +++ b/docs/reference/errors-and-warnings/NU3000.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature does not have a timestamp.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature does not have a timestamp.
    ### Issue @@ -29,7 +29,7 @@ To enable long-term signature validity after the signature certificate has expir ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': Multiple timestamps are not accepted.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': Multiple timestamps are not accepted.
    ### Issue @@ -44,7 +44,7 @@ Please ensure that a package signature contains upto 1 timestamp. ## Scenario 3 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The repository countersignature does not have a timestamp.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The repository countersignature does not have a timestamp.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3002.md b/docs/reference/errors-and-warnings/NU3002.md index 3c8281951..814cc95e4 100644 --- a/docs/reference/errors-and-warnings/NU3002.md +++ b/docs/reference/errors-and-warnings/NU3002.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3002 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The '-Timestamper' option was not provided. The signed package will not be timestamped. To learn more about this option, please visit https://docs.nuget.org/docs/reference/command-line-reference.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The '-Timestamper' option was not provided. The signed package will not be timestamped. To learn more about this option, please visit https://docs.nuget.org/docs/reference/command-line-reference.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3003.md b/docs/reference/errors-and-warnings/NU3003.md index 17c3ecb24..43f087afd 100644 --- a/docs/reference/errors-and-warnings/NU3003.md +++ b/docs/reference/errors-and-warnings/NU3003.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The package is not signed. Unable to verify signature from an unsigned package.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package is not signed. Unable to verify signature from an unsigned package.
    ### Issue @@ -29,7 +29,7 @@ Please file an issue at [NuGet/Home](https://github.com/NuGet/Home/issues) along ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The package signature is invalid or cannot be verified on this platform.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package signature is invalid or cannot be verified on this platform.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3004.md b/docs/reference/errors-and-warnings/NU3004.md index 8ca1d7fde..ca112eadd 100644 --- a/docs/reference/errors-and-warnings/NU3004.md +++ b/docs/reference/errors-and-warnings/NU3004.md @@ -12,9 +12,9 @@ f1_keywords: # NuGet Error NU3004 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The package is not signed.
    -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': signatureValidationMode is set to require, so packages are allowed only if signed by trusted signers; however, this package is unsigned.
    -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': This repository indicated that all its packages are repository signed; however, this package is unsigned.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package is not signed.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': signatureValidationMode is set to require, so packages are allowed only if signed by trusted signers; however, this package is unsigned.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': This repository indicated that all its packages are repository signed; however, this package is unsigned.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3005.md b/docs/reference/errors-and-warnings/NU3005.md index f6c55e84a..ab46369d0 100644 --- a/docs/reference/errors-and-warnings/NU3005.md +++ b/docs/reference/errors-and-warnings/NU3005.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The package contains an invalid package signature file.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package contains an invalid package signature file.
    ### Issue @@ -29,7 +29,7 @@ Please request the package author to re-sign the package using the `nuget sign` ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The package contains multiple package signature files.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package contains multiple package signature files.
    ### Issue @@ -44,7 +44,7 @@ Please request the package author to re-sign the package using the `nuget sign` ## Scenario 3 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The package does not contain a valid package signature file.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package does not contain a valid package signature file.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3006.md b/docs/reference/errors-and-warnings/NU3006.md index e7568af8c..f35558186 100644 --- a/docs/reference/errors-and-warnings/NU3006.md +++ b/docs/reference/errors-and-warnings/NU3006.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3006 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': Signed Zip64 packages are not supported.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': Signed Zip64 packages are not supported.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3007.md b/docs/reference/errors-and-warnings/NU3007.md index 14e4af511..64aa2d812 100644 --- a/docs/reference/errors-and-warnings/NU3007.md +++ b/docs/reference/errors-and-warnings/NU3007.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3007 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The package signature format version is not supported. Updating your client may solve this problem.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package signature format version is not supported. Updating your client may solve this problem.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3008.md b/docs/reference/errors-and-warnings/NU3008.md index 312ecd536..d4d77f7db 100644 --- a/docs/reference/errors-and-warnings/NU3008.md +++ b/docs/reference/errors-and-warnings/NU3008.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Error NU3008 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The package integrity check failed.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package integrity check failed.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3009.md b/docs/reference/errors-and-warnings/NU3009.md index cd6ca0ea4..a1af373ec 100644 --- a/docs/reference/errors-and-warnings/NU3009.md +++ b/docs/reference/errors-and-warnings/NU3009.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3009 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The package signature file does not contain exactly one primary signature.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package signature file does not contain exactly one primary signature.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3010.md b/docs/reference/errors-and-warnings/NU3010.md index 3d2d3834a..d2f6d9f3f 100644 --- a/docs/reference/errors-and-warnings/NU3010.md +++ b/docs/reference/errors-and-warnings/NU3010.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3010 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature does not have a signing certificate.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature does not have a signing certificate.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3011.md b/docs/reference/errors-and-warnings/NU3011.md index 93113a678..e582e40e9 100644 --- a/docs/reference/errors-and-warnings/NU3011.md +++ b/docs/reference/errors-and-warnings/NU3011.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3011 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature is invalid.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature is invalid.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3012.md b/docs/reference/errors-and-warnings/NU3012.md index 46784a23e..a32ed9d72 100644 --- a/docs/reference/errors-and-warnings/NU3012.md +++ b/docs/reference/errors-and-warnings/NU3012.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature validation failed.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature validation failed.
    ### Issue @@ -29,7 +29,7 @@ You can get more details about the problem by looking at the debug logs. If the ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature found a chain building issue:  A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature found a chain building issue:  A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3013.md b/docs/reference/errors-and-warnings/NU3013.md index 4ba8dc19f..5616cd8c4 100644 --- a/docs/reference/errors-and-warnings/NU3013.md +++ b/docs/reference/errors-and-warnings/NU3013.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The signing certificate has an unsupported signature algorithm.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The signing certificate has an unsupported signature algorithm.
    ### Issue @@ -32,7 +32,7 @@ Please ensure that the signing certificate has one of the following signature al ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature's certificate has an unsupported signature algorithm.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's certificate has an unsupported signature algorithm.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3014.md b/docs/reference/errors-and-warnings/NU3014.md index 04522853a..15b4dad20 100644 --- a/docs/reference/errors-and-warnings/NU3014.md +++ b/docs/reference/errors-and-warnings/NU3014.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The signing certificate does not meet a minimum public key length requirement.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The signing certificate does not meet a minimum public key length requirement.
    ### Issue @@ -29,7 +29,7 @@ Please ensure that the signing certificate has an RSA public key of length >= 20 ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature's certificate does not meet a minimum public key length requirement.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's certificate does not meet a minimum public key length requirement.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3015.md b/docs/reference/errors-and-warnings/NU3015.md index ded1653f3..63523e992 100644 --- a/docs/reference/errors-and-warnings/NU3015.md +++ b/docs/reference/errors-and-warnings/NU3015.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The lifetime signing EKU in the primary signature's certificate is not supported.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The lifetime signing EKU in the primary signature's certificate is not supported.
    ### Issue @@ -29,7 +29,7 @@ Please ensure that the signing certificate does not have lifetime signing Extend ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The lifetime signing EKU in the signing certificate is not supported.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The lifetime signing EKU in the signing certificate is not supported.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3016.md b/docs/reference/errors-and-warnings/NU3016.md index bf85c53e7..e8904c801 100644 --- a/docs/reference/errors-and-warnings/NU3016.md +++ b/docs/reference/errors-and-warnings/NU3016.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3016 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The package hash uses an unsupported hash algorithm.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package hash uses an unsupported hash algorithm.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3017.md b/docs/reference/errors-and-warnings/NU3017.md index 70b30943a..1c3d89d9f 100644 --- a/docs/reference/errors-and-warnings/NU3017.md +++ b/docs/reference/errors-and-warnings/NU3017.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The signing certificate is not yet valid.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The signing certificate is not yet valid.
    ### Issue @@ -29,7 +29,7 @@ Please ensure that the signing certificate is currently valid. ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature's certificate is not yet valid.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's certificate is not yet valid.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3018.md b/docs/reference/errors-and-warnings/NU3018.md index 5fe447c3b..4d654ff34 100644 --- a/docs/reference/errors-and-warnings/NU3018.md +++ b/docs/reference/errors-and-warnings/NU3018.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3018 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature found a chain building issue: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature found a chain building issue: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3019.md b/docs/reference/errors-and-warnings/NU3019.md index 7c60256b7..15a961249 100644 --- a/docs/reference/errors-and-warnings/NU3019.md +++ b/docs/reference/errors-and-warnings/NU3019.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The timestamp integrity check failed.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The timestamp integrity check failed.
    ### Issue @@ -29,7 +29,7 @@ Please try to re-sign and timestamp the package. If the problem persists, contac ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature's timestamp integrity check failed.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's timestamp integrity check failed.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3020.md b/docs/reference/errors-and-warnings/NU3020.md index d02117412..381932a27 100644 --- a/docs/reference/errors-and-warnings/NU3020.md +++ b/docs/reference/errors-and-warnings/NU3020.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The timestamp does not have a signing certificate.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The timestamp does not have a signing certificate.
    ### Issue @@ -29,7 +29,7 @@ Please try to re-sign and timestamp the package. If the problem persists, contac ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature's timestamp does not have a signing certificate.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's timestamp does not have a signing certificate.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3021.md b/docs/reference/errors-and-warnings/NU3021.md index 3c2bd0f16..6ad218480 100644 --- a/docs/reference/errors-and-warnings/NU3021.md +++ b/docs/reference/errors-and-warnings/NU3021.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature's timestamp signature validation failed.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's timestamp signature validation failed.
    ### Issue @@ -29,7 +29,7 @@ Please request the package author to re-sign the package using the `nuget sign` ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The timestamp signature validation failed.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The timestamp signature validation failed.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3022.md b/docs/reference/errors-and-warnings/NU3022.md index 9e14c7669..643d49406 100644 --- a/docs/reference/errors-and-warnings/NU3022.md +++ b/docs/reference/errors-and-warnings/NU3022.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature's timestamp certificate has an unsupported signature algorithm.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's timestamp certificate has an unsupported signature algorithm.
    ### Issue @@ -32,7 +32,7 @@ Please ensure that the timestamp authority's signing certificate has one of the ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The timestamp certificate has an unsupported signature algorithm (SHA1). The following algorithms are supported: SHA256RSA, SHA384RSA, SHA512RSA.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The timestamp certificate has an unsupported signature algorithm (SHA1). The following algorithms are supported: SHA256RSA, SHA384RSA, SHA512RSA.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3023.md b/docs/reference/errors-and-warnings/NU3023.md index 943831878..9af8eaa8c 100644 --- a/docs/reference/errors-and-warnings/NU3023.md +++ b/docs/reference/errors-and-warnings/NU3023.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The timestamp certificate does not meet a minimum public key length requirement.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The timestamp certificate does not meet a minimum public key length requirement.
    ### Issue @@ -29,7 +29,7 @@ Please ensure that the Timestamp Authority's signing certificate has an RSA pub ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature's timestamp certificate does not meet a minimum public key length requirement.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's timestamp certificate does not meet a minimum public key length requirement.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3024.md b/docs/reference/errors-and-warnings/NU3024.md index 0ada88d2f..e6f93bcf3 100644 --- a/docs/reference/errors-and-warnings/NU3024.md +++ b/docs/reference/errors-and-warnings/NU3024.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature's timestamp certificate has an unsupported digest algorithm.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's timestamp certificate has an unsupported digest algorithm.
    ### Issue @@ -32,7 +32,7 @@ Ensure that the timestamp authority's signing certificate has one of the followi ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The timestamp certificate has an unsupported digest algorithm. The following algorithms are supported: SHA-2-256, SHA-2-384, SHA-2-512.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The timestamp certificate has an unsupported digest algorithm. The following algorithms are supported: SHA-2-256, SHA-2-384, SHA-2-512.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3025.md b/docs/reference/errors-and-warnings/NU3025.md index aae8b3989..3c48e9f06 100644 --- a/docs/reference/errors-and-warnings/NU3025.md +++ b/docs/reference/errors-and-warnings/NU3025.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The timestamp signing certificate is not yet valid.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The timestamp signing certificate is not yet valid.
    ### Issue @@ -29,7 +29,7 @@ Please ensure that the Timestamp Authority's signing certificate is currently va ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature's timestamp signing certificate is not yet valid.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's timestamp signing certificate is not yet valid.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3026.md b/docs/reference/errors-and-warnings/NU3026.md index 0b573e615..6043be068 100644 --- a/docs/reference/errors-and-warnings/NU3026.md +++ b/docs/reference/errors-and-warnings/NU3026.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3026 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The timestamp response is invalid. Nonces did not match.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The timestamp response is invalid. Nonces did not match.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3027.md b/docs/reference/errors-and-warnings/NU3027.md index 48bf0ecdc..8281320d4 100644 --- a/docs/reference/errors-and-warnings/NU3027.md +++ b/docs/reference/errors-and-warnings/NU3027.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3027 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The signature should be timestamped to enable long-term signature validity after the certificate has expired.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The signature should be timestamped to enable long-term signature validity after the certificate has expired.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3029.md b/docs/reference/errors-and-warnings/NU3029.md index 2a3d72974..2365de1c3 100644 --- a/docs/reference/errors-and-warnings/NU3029.md +++ b/docs/reference/errors-and-warnings/NU3029.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3029 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The timestamp signature is invalid.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The timestamp signature is invalid.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3030.md b/docs/reference/errors-and-warnings/NU3030.md index 90b820732..0849646a2 100644 --- a/docs/reference/errors-and-warnings/NU3030.md +++ b/docs/reference/errors-and-warnings/NU3030.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3030 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature's timestamp's message imprint uses an unsupported hash algorithm.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's timestamp's message imprint uses an unsupported hash algorithm.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3031.md b/docs/reference/errors-and-warnings/NU3031.md index 7dbecdfaf..90c9cfc84 100644 --- a/docs/reference/errors-and-warnings/NU3031.md +++ b/docs/reference/errors-and-warnings/NU3031.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3031 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The repository countersignature is invalid.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The repository countersignature is invalid.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3032.md b/docs/reference/errors-and-warnings/NU3032.md index f578fb99e..35c10fc90 100644 --- a/docs/reference/errors-and-warnings/NU3032.md +++ b/docs/reference/errors-and-warnings/NU3032.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The package already contains a repository countersignature. Please remove the existing signature before adding a new repository countersignature.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package already contains a repository countersignature. Please remove the existing signature before adding a new repository countersignature.
    ### Issue @@ -29,7 +29,7 @@ Remove the existing signature before adding a new repository countersignature. ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The package signature contains multiple repository countersignatures.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package signature contains multiple repository countersignatures.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3033.md b/docs/reference/errors-and-warnings/NU3033.md index d711116ff..0ef9f0d6e 100644 --- a/docs/reference/errors-and-warnings/NU3033.md +++ b/docs/reference/errors-and-warnings/NU3033.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': A repository primary signature must not have a repository countersignature.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': A repository primary signature must not have a repository countersignature.
    ### Issue @@ -29,7 +29,7 @@ Try to re-sign the package with either an author signature or a repository signa ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': A repository primary signature must not have a repository countersignature.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': A repository primary signature must not have a repository countersignature.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3034.md b/docs/reference/errors-and-warnings/NU3034.md index 2002a4343..c1c139fd9 100644 --- a/docs/reference/errors-and-warnings/NU3034.md +++ b/docs/reference/errors-and-warnings/NU3034.md @@ -12,10 +12,10 @@ f1_keywords: # NuGet Error NU3034 -
    Package 'SamplePackage v1.0.0' from source 'https://source.com/index.json': signatureValidationMode is set to require, so packages are allowed only if signed by trusted signers; however, no trusted signers were specified.
    -
    Package 'SamplePackage v1.0.0' from source 'https://source.com/index.json': The package signature certificate fingerprint does not match any certificate fingerprint in the allow list.
    -
    Package 'SamplePackage v1.0.0' from source 'https://source.com/index.json': This repository indicated that all its packages are repository signed; however, it listed no signing certificates.
    -
    Package 'SamplePackage v1.0.0' from source 'https://source.com/index.json': This package was not repository signed with a certificate listed by this repository.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': signatureValidationMode is set to require, so packages are allowed only if signed by trusted signers; however, no trusted signers were specified.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The package signature certificate fingerprint does not match any certificate fingerprint in the allow list.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': This repository indicated that all its packages are repository signed; however, it listed no signing certificates.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': This package was not repository signed with a certificate listed by this repository.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3036.md b/docs/reference/errors-and-warnings/NU3036.md index caf93cad9..7cdf82143 100644 --- a/docs/reference/errors-and-warnings/NU3036.md +++ b/docs/reference/errors-and-warnings/NU3036.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The timestamp's generalized time is outside the timestamping certificate's validity period.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The timestamp's generalized time is outside the timestamping certificate's validity period.
    ### Issue @@ -29,7 +29,7 @@ Try to re-sign and timestamp the package. If the problem persists, contact the t ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://source.com/index.json': The primary signature's timestamp's generalized time is outside the timestamping certificate's validity period.
    +
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's timestamp's generalized time is outside the timestamping certificate's validity period.
    ### Issue From b41f588049841d0cf582318b011e4c85c22f312f Mon Sep 17 00:00:00 2001 From: Heng Liu Date: Mon, 1 Apr 2019 15:09:13 -0700 Subject: [PATCH 1154/2943] change http to https in all package signing docs & change NU3024 --- docs/reference/errors-and-warnings/NU3000.md | 6 +++--- docs/reference/errors-and-warnings/NU3002.md | 2 +- docs/reference/errors-and-warnings/NU3003.md | 4 ++-- docs/reference/errors-and-warnings/NU3004.md | 6 +++--- docs/reference/errors-and-warnings/NU3005.md | 6 +++--- docs/reference/errors-and-warnings/NU3006.md | 2 +- docs/reference/errors-and-warnings/NU3007.md | 2 +- docs/reference/errors-and-warnings/NU3008.md | 2 +- docs/reference/errors-and-warnings/NU3009.md | 2 +- docs/reference/errors-and-warnings/NU3010.md | 2 +- docs/reference/errors-and-warnings/NU3011.md | 2 +- docs/reference/errors-and-warnings/NU3012.md | 4 ++-- docs/reference/errors-and-warnings/NU3013.md | 4 ++-- docs/reference/errors-and-warnings/NU3014.md | 4 ++-- docs/reference/errors-and-warnings/NU3015.md | 4 ++-- docs/reference/errors-and-warnings/NU3016.md | 2 +- docs/reference/errors-and-warnings/NU3017.md | 4 ++-- docs/reference/errors-and-warnings/NU3018.md | 2 +- docs/reference/errors-and-warnings/NU3019.md | 4 ++-- docs/reference/errors-and-warnings/NU3020.md | 4 ++-- docs/reference/errors-and-warnings/NU3021.md | 4 ++-- docs/reference/errors-and-warnings/NU3022.md | 4 ++-- docs/reference/errors-and-warnings/NU3023.md | 4 ++-- docs/reference/errors-and-warnings/NU3024.md | 10 +++++----- docs/reference/errors-and-warnings/NU3025.md | 4 ++-- docs/reference/errors-and-warnings/NU3026.md | 2 +- docs/reference/errors-and-warnings/NU3027.md | 2 +- docs/reference/errors-and-warnings/NU3029.md | 2 +- docs/reference/errors-and-warnings/NU3030.md | 2 +- docs/reference/errors-and-warnings/NU3031.md | 2 +- docs/reference/errors-and-warnings/NU3032.md | 4 ++-- docs/reference/errors-and-warnings/NU3033.md | 4 ++-- docs/reference/errors-and-warnings/NU3036.md | 4 ++-- 33 files changed, 58 insertions(+), 58 deletions(-) diff --git a/docs/reference/errors-and-warnings/NU3000.md b/docs/reference/errors-and-warnings/NU3000.md index 38f35e295..bf2d00f9b 100644 --- a/docs/reference/errors-and-warnings/NU3000.md +++ b/docs/reference/errors-and-warnings/NU3000.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature does not have a timestamp.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The primary signature does not have a timestamp.
    ### Issue @@ -29,7 +29,7 @@ To enable long-term signature validity after the signature certificate has expir ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': Multiple timestamps are not accepted.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': Multiple timestamps are not accepted.
    ### Issue @@ -44,7 +44,7 @@ Please ensure that a package signature contains upto 1 timestamp. ## Scenario 3 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The repository countersignature does not have a timestamp.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The repository countersignature does not have a timestamp.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3002.md b/docs/reference/errors-and-warnings/NU3002.md index 814cc95e4..2d2cc9a8c 100644 --- a/docs/reference/errors-and-warnings/NU3002.md +++ b/docs/reference/errors-and-warnings/NU3002.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3002 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The '-Timestamper' option was not provided. The signed package will not be timestamped. To learn more about this option, please visit https://docs.nuget.org/docs/reference/command-line-reference.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The '-Timestamper' option was not provided. The signed package will not be timestamped. To learn more about this option, please visit https://docs.nuget.org/docs/reference/command-line-reference.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3003.md b/docs/reference/errors-and-warnings/NU3003.md index 43f087afd..f11c8253a 100644 --- a/docs/reference/errors-and-warnings/NU3003.md +++ b/docs/reference/errors-and-warnings/NU3003.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package is not signed. Unable to verify signature from an unsigned package.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The package is not signed. Unable to verify signature from an unsigned package.
    ### Issue @@ -29,7 +29,7 @@ Please file an issue at [NuGet/Home](https://github.com/NuGet/Home/issues) along ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package signature is invalid or cannot be verified on this platform.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The package signature is invalid or cannot be verified on this platform.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3004.md b/docs/reference/errors-and-warnings/NU3004.md index ca112eadd..ab4dcad2c 100644 --- a/docs/reference/errors-and-warnings/NU3004.md +++ b/docs/reference/errors-and-warnings/NU3004.md @@ -12,9 +12,9 @@ f1_keywords: # NuGet Error NU3004 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package is not signed.
    -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': signatureValidationMode is set to require, so packages are allowed only if signed by trusted signers; however, this package is unsigned.
    -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': This repository indicated that all its packages are repository signed; however, this package is unsigned.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The package is not signed.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': signatureValidationMode is set to require, so packages are allowed only if signed by trusted signers; however, this package is unsigned.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': This repository indicated that all its packages are repository signed; however, this package is unsigned.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3005.md b/docs/reference/errors-and-warnings/NU3005.md index ab46369d0..bf5321d2e 100644 --- a/docs/reference/errors-and-warnings/NU3005.md +++ b/docs/reference/errors-and-warnings/NU3005.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package contains an invalid package signature file.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The package contains an invalid package signature file.
    ### Issue @@ -29,7 +29,7 @@ Please request the package author to re-sign the package using the `nuget sign` ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package contains multiple package signature files.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The package contains multiple package signature files.
    ### Issue @@ -44,7 +44,7 @@ Please request the package author to re-sign the package using the `nuget sign` ## Scenario 3 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package does not contain a valid package signature file.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The package does not contain a valid package signature file.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3006.md b/docs/reference/errors-and-warnings/NU3006.md index f35558186..549f938e2 100644 --- a/docs/reference/errors-and-warnings/NU3006.md +++ b/docs/reference/errors-and-warnings/NU3006.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3006 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': Signed Zip64 packages are not supported.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': Signed Zip64 packages are not supported.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3007.md b/docs/reference/errors-and-warnings/NU3007.md index 64aa2d812..9ad06dcb0 100644 --- a/docs/reference/errors-and-warnings/NU3007.md +++ b/docs/reference/errors-and-warnings/NU3007.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3007 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package signature format version is not supported. Updating your client may solve this problem.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The package signature format version is not supported. Updating your client may solve this problem.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3008.md b/docs/reference/errors-and-warnings/NU3008.md index d4d77f7db..e9b0aef1a 100644 --- a/docs/reference/errors-and-warnings/NU3008.md +++ b/docs/reference/errors-and-warnings/NU3008.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Error NU3008 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package integrity check failed.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The package integrity check failed.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3009.md b/docs/reference/errors-and-warnings/NU3009.md index a1af373ec..94630911f 100644 --- a/docs/reference/errors-and-warnings/NU3009.md +++ b/docs/reference/errors-and-warnings/NU3009.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3009 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package signature file does not contain exactly one primary signature.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The package signature file does not contain exactly one primary signature.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3010.md b/docs/reference/errors-and-warnings/NU3010.md index d2f6d9f3f..4d6f608b7 100644 --- a/docs/reference/errors-and-warnings/NU3010.md +++ b/docs/reference/errors-and-warnings/NU3010.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3010 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature does not have a signing certificate.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The primary signature does not have a signing certificate.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3011.md b/docs/reference/errors-and-warnings/NU3011.md index e582e40e9..801c638c1 100644 --- a/docs/reference/errors-and-warnings/NU3011.md +++ b/docs/reference/errors-and-warnings/NU3011.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3011 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature is invalid.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The primary signature is invalid.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3012.md b/docs/reference/errors-and-warnings/NU3012.md index a32ed9d72..e131ac363 100644 --- a/docs/reference/errors-and-warnings/NU3012.md +++ b/docs/reference/errors-and-warnings/NU3012.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature validation failed.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The primary signature validation failed.
    ### Issue @@ -29,7 +29,7 @@ You can get more details about the problem by looking at the debug logs. If the ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature found a chain building issue:  A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The primary signature found a chain building issue:  A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3013.md b/docs/reference/errors-and-warnings/NU3013.md index 5616cd8c4..dc7c72c83 100644 --- a/docs/reference/errors-and-warnings/NU3013.md +++ b/docs/reference/errors-and-warnings/NU3013.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The signing certificate has an unsupported signature algorithm.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The signing certificate has an unsupported signature algorithm.
    ### Issue @@ -32,7 +32,7 @@ Please ensure that the signing certificate has one of the following signature al ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's certificate has an unsupported signature algorithm.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The primary signature's certificate has an unsupported signature algorithm.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3014.md b/docs/reference/errors-and-warnings/NU3014.md index 15b4dad20..26841f98b 100644 --- a/docs/reference/errors-and-warnings/NU3014.md +++ b/docs/reference/errors-and-warnings/NU3014.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The signing certificate does not meet a minimum public key length requirement.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The signing certificate does not meet a minimum public key length requirement.
    ### Issue @@ -29,7 +29,7 @@ Please ensure that the signing certificate has an RSA public key of length >= 20 ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's certificate does not meet a minimum public key length requirement.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The primary signature's certificate does not meet a minimum public key length requirement.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3015.md b/docs/reference/errors-and-warnings/NU3015.md index 63523e992..61b82a55c 100644 --- a/docs/reference/errors-and-warnings/NU3015.md +++ b/docs/reference/errors-and-warnings/NU3015.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The lifetime signing EKU in the primary signature's certificate is not supported.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The lifetime signing EKU in the primary signature's certificate is not supported.
    ### Issue @@ -29,7 +29,7 @@ Please ensure that the signing certificate does not have lifetime signing Extend ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The lifetime signing EKU in the signing certificate is not supported.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The lifetime signing EKU in the signing certificate is not supported.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3016.md b/docs/reference/errors-and-warnings/NU3016.md index e8904c801..a43b2e1dd 100644 --- a/docs/reference/errors-and-warnings/NU3016.md +++ b/docs/reference/errors-and-warnings/NU3016.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3016 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package hash uses an unsupported hash algorithm.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The package hash uses an unsupported hash algorithm.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3017.md b/docs/reference/errors-and-warnings/NU3017.md index 1c3d89d9f..e9a6a603b 100644 --- a/docs/reference/errors-and-warnings/NU3017.md +++ b/docs/reference/errors-and-warnings/NU3017.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The signing certificate is not yet valid.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The signing certificate is not yet valid.
    ### Issue @@ -29,7 +29,7 @@ Please ensure that the signing certificate is currently valid. ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's certificate is not yet valid.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The primary signature's certificate is not yet valid.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3018.md b/docs/reference/errors-and-warnings/NU3018.md index 4d654ff34..a2071c9a1 100644 --- a/docs/reference/errors-and-warnings/NU3018.md +++ b/docs/reference/errors-and-warnings/NU3018.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3018 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature found a chain building issue: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The primary signature found a chain building issue: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3019.md b/docs/reference/errors-and-warnings/NU3019.md index 15a961249..f3ffb061f 100644 --- a/docs/reference/errors-and-warnings/NU3019.md +++ b/docs/reference/errors-and-warnings/NU3019.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The timestamp integrity check failed.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The timestamp integrity check failed.
    ### Issue @@ -29,7 +29,7 @@ Please try to re-sign and timestamp the package. If the problem persists, contac ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's timestamp integrity check failed.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The primary signature's timestamp integrity check failed.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3020.md b/docs/reference/errors-and-warnings/NU3020.md index 381932a27..be6be4fbc 100644 --- a/docs/reference/errors-and-warnings/NU3020.md +++ b/docs/reference/errors-and-warnings/NU3020.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The timestamp does not have a signing certificate.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The timestamp does not have a signing certificate.
    ### Issue @@ -29,7 +29,7 @@ Please try to re-sign and timestamp the package. If the problem persists, contac ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's timestamp does not have a signing certificate.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The primary signature's timestamp does not have a signing certificate.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3021.md b/docs/reference/errors-and-warnings/NU3021.md index 6ad218480..589bba68b 100644 --- a/docs/reference/errors-and-warnings/NU3021.md +++ b/docs/reference/errors-and-warnings/NU3021.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's timestamp signature validation failed.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The primary signature's timestamp signature validation failed.
    ### Issue @@ -29,7 +29,7 @@ Please request the package author to re-sign the package using the `nuget sign` ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The timestamp signature validation failed.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The timestamp signature validation failed.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3022.md b/docs/reference/errors-and-warnings/NU3022.md index 643d49406..dcd018a04 100644 --- a/docs/reference/errors-and-warnings/NU3022.md +++ b/docs/reference/errors-and-warnings/NU3022.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's timestamp certificate has an unsupported signature algorithm.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The primary signature's timestamp certificate has an unsupported signature algorithm.
    ### Issue @@ -32,7 +32,7 @@ Please ensure that the timestamp authority's signing certificate has one of the ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The timestamp certificate has an unsupported signature algorithm (SHA1). The following algorithms are supported: SHA256RSA, SHA384RSA, SHA512RSA.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The timestamp certificate has an unsupported signature algorithm (SHA1). The following algorithms are supported: SHA256RSA, SHA384RSA, SHA512RSA.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3023.md b/docs/reference/errors-and-warnings/NU3023.md index 9af8eaa8c..3c1e3fa54 100644 --- a/docs/reference/errors-and-warnings/NU3023.md +++ b/docs/reference/errors-and-warnings/NU3023.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The timestamp certificate does not meet a minimum public key length requirement.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The timestamp certificate does not meet a minimum public key length requirement.
    ### Issue @@ -29,7 +29,7 @@ Please ensure that the Timestamp Authority's signing certificate has an RSA pub ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's timestamp certificate does not meet a minimum public key length requirement.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The primary signature's timestamp certificate does not meet a minimum public key length requirement.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3024.md b/docs/reference/errors-and-warnings/NU3024.md index e6f93bcf3..90ea6805e 100644 --- a/docs/reference/errors-and-warnings/NU3024.md +++ b/docs/reference/errors-and-warnings/NU3024.md @@ -14,16 +14,16 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's timestamp certificate has an unsupported digest algorithm.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The timestamp signature has an unsupported digest algorithm. The following algorithms are supported: : SHA-2-256, SHA-2-384, SHA-2-512.
    ### Issue -The certificate used to timestamp the package signature has an unsupported digest algorithm. +The timestamp's signature has an unsupported digest algorithm. ### Solution -Ensure that the timestamp authority's signing certificate has one of the following digest algorithms - +Ensure that the timestamp authority's signature has one of the following digest algorithms - * `SHA-2-256` * `SHA-2-384` * `SHA-2-512` @@ -32,11 +32,11 @@ Ensure that the timestamp authority's signing certificate has one of the followi ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The timestamp certificate has an unsupported digest algorithm. The following algorithms are supported: SHA-2-256, SHA-2-384, SHA-2-512.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The primary signature's timestamp signature has an unsupported digest algorithm.
    ### Issue -The certificate used to timestamp the package signature has an unsupported digest algorithm. +The timestamp's signature has an unsupported digest algorithm. ### Solution diff --git a/docs/reference/errors-and-warnings/NU3025.md b/docs/reference/errors-and-warnings/NU3025.md index 3c48e9f06..f9e462ad4 100644 --- a/docs/reference/errors-and-warnings/NU3025.md +++ b/docs/reference/errors-and-warnings/NU3025.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The timestamp signing certificate is not yet valid.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The timestamp signing certificate is not yet valid.
    ### Issue @@ -29,7 +29,7 @@ Please ensure that the Timestamp Authority's signing certificate is currently va ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's timestamp signing certificate is not yet valid.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The primary signature's timestamp signing certificate is not yet valid.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3026.md b/docs/reference/errors-and-warnings/NU3026.md index 6043be068..8d078a2d4 100644 --- a/docs/reference/errors-and-warnings/NU3026.md +++ b/docs/reference/errors-and-warnings/NU3026.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3026 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The timestamp response is invalid. Nonces did not match.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The timestamp response is invalid. Nonces did not match.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3027.md b/docs/reference/errors-and-warnings/NU3027.md index 8281320d4..4c93255ad 100644 --- a/docs/reference/errors-and-warnings/NU3027.md +++ b/docs/reference/errors-and-warnings/NU3027.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3027 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The signature should be timestamped to enable long-term signature validity after the certificate has expired.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The signature should be timestamped to enable long-term signature validity after the certificate has expired.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3029.md b/docs/reference/errors-and-warnings/NU3029.md index 2365de1c3..689e83f96 100644 --- a/docs/reference/errors-and-warnings/NU3029.md +++ b/docs/reference/errors-and-warnings/NU3029.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3029 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The timestamp signature is invalid.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The timestamp signature is invalid.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3030.md b/docs/reference/errors-and-warnings/NU3030.md index 0849646a2..1597efdd2 100644 --- a/docs/reference/errors-and-warnings/NU3030.md +++ b/docs/reference/errors-and-warnings/NU3030.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3030 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's timestamp's message imprint uses an unsupported hash algorithm.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The primary signature's timestamp's message imprint uses an unsupported hash algorithm.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3031.md b/docs/reference/errors-and-warnings/NU3031.md index 90c9cfc84..d590213c0 100644 --- a/docs/reference/errors-and-warnings/NU3031.md +++ b/docs/reference/errors-and-warnings/NU3031.md @@ -12,7 +12,7 @@ f1_keywords: # NuGet Warning NU3031 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The repository countersignature is invalid.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The repository countersignature is invalid.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3032.md b/docs/reference/errors-and-warnings/NU3032.md index 35c10fc90..447de425b 100644 --- a/docs/reference/errors-and-warnings/NU3032.md +++ b/docs/reference/errors-and-warnings/NU3032.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package already contains a repository countersignature. Please remove the existing signature before adding a new repository countersignature.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The package already contains a repository countersignature. Please remove the existing signature before adding a new repository countersignature.
    ### Issue @@ -29,7 +29,7 @@ Remove the existing signature before adding a new repository countersignature. ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The package signature contains multiple repository countersignatures.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The package signature contains multiple repository countersignatures.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3033.md b/docs/reference/errors-and-warnings/NU3033.md index 0ef9f0d6e..33d79443d 100644 --- a/docs/reference/errors-and-warnings/NU3033.md +++ b/docs/reference/errors-and-warnings/NU3033.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': A repository primary signature must not have a repository countersignature.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': A repository primary signature must not have a repository countersignature.
    ### Issue @@ -29,7 +29,7 @@ Try to re-sign the package with either an author signature or a repository signa ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': A repository primary signature must not have a repository countersignature.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': A repository primary signature must not have a repository countersignature.
    ### Issue diff --git a/docs/reference/errors-and-warnings/NU3036.md b/docs/reference/errors-and-warnings/NU3036.md index 7cdf82143..aef382d4b 100644 --- a/docs/reference/errors-and-warnings/NU3036.md +++ b/docs/reference/errors-and-warnings/NU3036.md @@ -14,7 +14,7 @@ f1_keywords: ## Scenario 1 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The timestamp's generalized time is outside the timestamping certificate's validity period.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The timestamp's generalized time is outside the timestamping certificate's validity period.
    ### Issue @@ -29,7 +29,7 @@ Try to re-sign and timestamp the package. If the problem persists, contact the t ## Scenario 2 -
    Package 'SamplePackage v1.0.0' from source 'http://contoso.com/index.json': The primary signature's timestamp's generalized time is outside the timestamping certificate's validity period.
    +
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The primary signature's timestamp's generalized time is outside the timestamping certificate's validity period.
    ### Issue From 49373118e5fc251ee2c5d9e2c92a02ded8435f76 Mon Sep 17 00:00:00 2001 From: Heng Liu Date: Fri, 5 Apr 2019 22:07:48 -0700 Subject: [PATCH 1155/2943] update TOC and index page, add note for some msg --- docs/TOC.md | 11 +++++++++++ docs/reference/Errors-and-Warnings.md | 4 ++-- docs/reference/errors-and-warnings/NU3003.md | 4 ++++ docs/reference/errors-and-warnings/NU3009.md | 4 ++++ docs/reference/errors-and-warnings/NU3010.md | 4 ++++ docs/reference/errors-and-warnings/NU3011.md | 4 ++++ docs/reference/errors-and-warnings/NU3012.md | 7 ++++++- docs/reference/errors-and-warnings/NU3013.md | 5 +++++ docs/reference/errors-and-warnings/NU3014.md | 4 ++++ docs/reference/errors-and-warnings/NU3015.md | 4 ++++ docs/reference/errors-and-warnings/NU3016.md | 4 ++++ docs/reference/errors-and-warnings/NU3017.md | 4 ++++ docs/reference/errors-and-warnings/NU3018.md | 4 ++++ docs/reference/errors-and-warnings/NU3019.md | 3 +++ docs/reference/errors-and-warnings/NU3020.md | 3 +++ docs/reference/errors-and-warnings/NU3021.md | 3 +++ docs/reference/errors-and-warnings/NU3022.md | 3 +++ docs/reference/errors-and-warnings/NU3023.md | 3 +++ docs/reference/errors-and-warnings/NU3024.md | 7 ++++++- docs/reference/errors-and-warnings/NU3025.md | 3 +++ docs/reference/errors-and-warnings/NU3028.md | 5 +++++ docs/reference/errors-and-warnings/NU3030.md | 7 ++++++- docs/reference/errors-and-warnings/NU3036.md | 3 +++ docs/reference/errors-and-warnings/NU3037.md | 9 ++++++--- 24 files changed, 104 insertions(+), 8 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index 4cb25c06c..a9e6de9ad 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -142,10 +142,21 @@ ### [NU3021](reference/errors-and-warnings/NU3021.md) ### [NU3022](reference/errors-and-warnings/NU3022.md) ### [NU3023](reference/errors-and-warnings/NU3023.md) +### [NU3024](reference/errors-and-warnings/NU3024.md) ### [NU3025](reference/errors-and-warnings/NU3025.md) +### [NU3026](reference/errors-and-warnings/NU3026.md) ### [NU3027](reference/errors-and-warnings/NU3027.md) ### [NU3028](reference/errors-and-warnings/NU3028.md) +### [NU3029](reference/errors-and-warnings/NU3029.md) +### [NU3030](reference/errors-and-warnings/NU3030.md) +### [NU3031](reference/errors-and-warnings/NU3031.md) +### [NU3032](reference/errors-and-warnings/NU3032.md) +### [NU3033](reference/errors-and-warnings/NU3033.md) ### [NU3034](reference/errors-and-warnings/NU3034.md) +### [NU3035](reference/errors-and-warnings/NU3035.md) +### [NU3036](reference/errors-and-warnings/NU3036.md) +### [NU3037](reference/errors-and-warnings/NU3037.md) +### [NU3038](reference/errors-and-warnings/NU3038.md) ### [NU3040](reference/errors-and-warnings/NU3040.md) ### [NU5000](reference/errors-and-warnings/NU5000.md) ### [NU5001](reference/errors-and-warnings/NU5001.md) diff --git a/docs/reference/Errors-and-Warnings.md b/docs/reference/Errors-and-Warnings.md index 70e0595cf..1af6d8ccf 100644 --- a/docs/reference/Errors-and-Warnings.md +++ b/docs/reference/Errors-and-Warnings.md @@ -22,7 +22,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | 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) | | Compatibility errors | [NU1201](./errors-and-warnings/NU1201.md), [NU1202](./errors-and-warnings/NU1202.md), [NU1203](./errors-and-warnings/NU1203.md), [NU1401](./errors-and-warnings/NU1401.md) | | NuGet internal errors | [NU1000](./errors-and-warnings/NU1000.md) | -| Signed packages errors(creation and verification) | [NU3001](./errors-and-warnings/NU3001.md), [NU3004](./errors-and-warnings/NU3004.md), [NU3005](./errors-and-warnings/NU3005.md), [NU3008](./errors-and-warnings/NU3008.md), [NU3012](./errors-and-warnings/NU3012.md), [NU3028](./errors-and-warnings/NU3028.md), [NU3034](./errors-and-warnings/NU3034.md)| +| Signed packages errors(creation and verification) | [NU3001](./errors-and-warnings/NU3001.md), [NU3004](./errors-and-warnings/NU3004.md), [NU3005](./errors-and-warnings/NU3005.md), [NU3008](./errors-and-warnings/NU3008.md), [NU3034](./errors-and-warnings/NU3034.md)| | Pack Errors | [NU5000](./errors-and-warnings/NU5000.md), [NU5001](./errors-and-warnings/NU5001.md), [NU5002](./errors-and-warnings/NU5002.md), [NU5003](./errors-and-warnings/NU5003.md), [NU5004](./errors-and-warnings/NU5004.md), [NU5005](./errors-and-warnings/NU5005.md), [NU5007](./errors-and-warnings/NU5007.md), [NU5008](./errors-and-warnings/NU5008.md), [NU5009](./errors-and-warnings/NU5009.md), [NU5010](./errors-and-warnings/NU5010.md), [NU5011](./errors-and-warnings/NU5011.md), [NU5012](./errors-and-warnings/NU5012.md), [NU5013](./errors-and-warnings/NU5013.md), [NU5014](./errors-and-warnings/NU5014.md), [NU5015](./errors-and-warnings/NU5015.md), [NU5016](./errors-and-warnings/NU5016.md), [NU5017](./errors-and-warnings/NU5017.md), [NU5018](./errors-and-warnings/NU5018.md), [NU5019](./errors-and-warnings/NU5019.md), [NU5020](./errors-and-warnings/NU5020.md), [NU5021](./errors-and-warnings/NU5021.md), [NU5022](./errors-and-warnings/NU5022.md), [NU5023](./errors-and-warnings/NU5023.md), [NU5024](./errors-and-warnings/NU5024.md), [NU5025](./errors-and-warnings/NU5025.md), [NU5026](./errors-and-warnings/NU5026.md), [NU5027](./errors-and-warnings/NU5027.md), [NU5028](./errors-and-warnings/NU5028.md), [NU5029](./errors-and-warnings/NU5029.md), [NU5036](./errors-and-warnings/NU5036.md) | License specific Pack Errors | [NU5030](./errors-and-warnings/NU5030.md), [NU5031](./errors-and-warnings/NU5031.md), [NU5032](./errors-and-warnings/NU5032.md), [NU5033](./errors-and-warnings/NU5033.md), [NU5034](./errors-and-warnings/NU5034.md), [NU5035](./errors-and-warnings/NU5035.md) @@ -36,6 +36,6 @@ The errors and warnings listed here are available only with [PackageReference-ba | Package fallback warnings | [NU1701](./errors-and-warnings/NU1701.md) | | Feed warnings | [NU1801](./errors-and-warnings/NU1801.md) | | NuGet internal warnings | [NU1500](./errors-and-warnings/NU1500.md) | -| Signed packages warnings(creation and verification) | [NU3000](./errors-and-warnings/NU3000.md), [NU3002](./errors-and-warnings/NU3002.md), [NU3003](./errors-and-warnings/NU3003.md), [NU3006](./errors-and-warnings/NU3006.md), [NU3007](./errors-and-warnings/NU3007.md), [NU3009](./errors-and-warnings/NU3009.md), [NU3010](./errors-and-warnings/NU3010.md), [NU3011](./errors-and-warnings/NU3011.md), [NU3013](./errors-and-warnings/NU3013.md), [NU3014](./errors-and-warnings/NU3014.md), [NU3015](./errors-and-warnings/NU3015.md), [NU3016](./errors-and-warnings/NU3016.md), [NU3017](./errors-and-warnings/NU3017.md), [NU3018](./errors-and-warnings/NU3018.md), [NU3019](./errors-and-warnings/NU3019.md), [NU3020](./errors-and-warnings/NU3020.md), [NU3021](./errors-and-warnings/NU3021.md), [NU3022](./errors-and-warnings/NU3022.md), [NU3023](./errors-and-warnings/NU3023.md), [NU3025](./errors-and-warnings/NU3025.md), [NU3027](./errors-and-warnings/NU3027.md), [NU3040](./errors-and-warnings/NU3040.md) | +| Signed packages warnings(creation and verification) | [NU3000](./errors-and-warnings/NU3000.md), [NU3002](./errors-and-warnings/NU3002.md), [NU3003](./errors-and-warnings/NU3003.md), [NU3006](./errors-and-warnings/NU3006.md), [NU3007](./errors-and-warnings/NU3007.md), [NU3009](./errors-and-warnings/NU3009.md), [NU3010](./errors-and-warnings/NU3010.md), [NU3011](./errors-and-warnings/NU3011.md), [NU3012](./errors-and-warnings/NU3012.md), [NU3013](./errors-and-warnings/NU3013.md), [NU3014](./errors-and-warnings/NU3014.md), [NU3015](./errors-and-warnings/NU3015.md), [NU3016](./errors-and-warnings/NU3016.md), [NU3017](./errors-and-warnings/NU3017.md), [NU3018](./errors-and-warnings/NU3018.md), [NU3019](./errors-and-warnings/NU3019.md), [NU3020](./errors-and-warnings/NU3020.md), [NU3021](./errors-and-warnings/NU3021.md), [NU3022](./errors-and-warnings/NU3022.md), [NU3023](./errors-and-warnings/NU3023.md), [NU3024](./errors-and-warnings/NU3024.md), [NU3025](./errors-and-warnings/NU3025.md), [NU3026](./errors-and-warnings/NU3026.md), [NU3027](./errors-and-warnings/NU3027.md), [NU3028](./errors-and-warnings/NU3028.md), [NU3029](./errors-and-warnings/NU3029.md), [NU3030](./errors-and-warnings/NU3030.md), [NU3031](./errors-and-warnings/NU3031.md), [NU3032](./errors-and-warnings/NU3032.md), [NU3033](./errors-and-warnings/NU3033.md), [NU3035](./errors-and-warnings/NU3035.md), [NU3036](./errors-and-warnings/NU3036.md), [NU3037](./errors-and-warnings/NU3037.md), [NU3038](./errors-and-warnings/NU3038.md), [NU3040](./errors-and-warnings/NU3040.md) | | Pack Warnings | [NU5100](./errors-and-warnings/NU5100.md), [NU5101](./errors-and-warnings/NU5101.md), [NU5102](./errors-and-warnings/NU5102.md), [NU5103](./errors-and-warnings/NU5103.md), [NU5104](./errors-and-warnings/NU5104.md), [NU5105](./errors-and-warnings/NU5105.md), [NU5106](./errors-and-warnings/NU5106.md), [NU5107](./errors-and-warnings/NU5107.md), [NU5108](./errors-and-warnings/NU5108.md), [NU5109](./errors-and-warnings/NU5109.md), [NU5110](./errors-and-warnings/NU5110.md), [NU5111](./errors-and-warnings/NU5111.md), [NU5112](./errors-and-warnings/NU5112.md), [NU5114](./errors-and-warnings/NU5114.md), [NU5115](./errors-and-warnings/NU5115.md), [NU5116](./errors-and-warnings/NU5116.md), [NU5117](./errors-and-warnings/NU5117.md), [NU5118](./errors-and-warnings/NU5118.md), [NU5119](./errors-and-warnings/NU5119.md), [NU5120](./errors-and-warnings/NU5120.md), [NU5121](./errors-and-warnings/NU5121.md), [NU5122](./errors-and-warnings/NU5122.md), [NU5123](./errors-and-warnings/NU5123.md), [NU5500](./errors-and-warnings/NU5500.md) | License specific Pack Warnings | [NU5124](./errors-and-warnings/NU5124.md), [NU5125](./errors-and-warnings/NU5125.md) \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3003.md b/docs/reference/errors-and-warnings/NU3003.md index f11c8253a..419dd0237 100644 --- a/docs/reference/errors-and-warnings/NU3003.md +++ b/docs/reference/errors-and-warnings/NU3003.md @@ -40,4 +40,8 @@ NuGet client tried to verify a package which contains an invalid package signatu Please file an issue at [NuGet/Home](https://github.com/NuGet/Home/issues) along with the package that generated this problem and the platform on which the issue was encountered. +## Note + +When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3003 is raised as a warning. +When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3003 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3009.md b/docs/reference/errors-and-warnings/NU3009.md index 94630911f..21806fece 100644 --- a/docs/reference/errors-and-warnings/NU3009.md +++ b/docs/reference/errors-and-warnings/NU3009.md @@ -24,3 +24,7 @@ NuGet client tried to verify a package signature which contained multiple `Signe Please request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package). If the problem persists, then please file an issue at [NuGet/Home](https://github.com/NuGet/Home/issues) along with the package that generated this problem. +### Note + +When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3009 is raised as a warning. +When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3009 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3010.md b/docs/reference/errors-and-warnings/NU3010.md index 4d6f608b7..d97075f27 100644 --- a/docs/reference/errors-and-warnings/NU3010.md +++ b/docs/reference/errors-and-warnings/NU3010.md @@ -24,3 +24,7 @@ NuGet client tried to verify a package signature with a `SignerInfo` entry that Please request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package). If the problem persists, then please file an issue at [NuGet/Home](https://github.com/NuGet/Home/issues) along with the package that generated this problem. +### Note + +When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3010 is raised as a warning. +When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3010 is elevated from a warning to an error. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3011.md b/docs/reference/errors-and-warnings/NU3011.md index 801c638c1..261174901 100644 --- a/docs/reference/errors-and-warnings/NU3011.md +++ b/docs/reference/errors-and-warnings/NU3011.md @@ -24,3 +24,7 @@ NuGet client was unable to read the certificate chain for the signing certificat Please request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package). If the problem persists, then please file an issue at [NuGet/Home](https://github.com/NuGet/Home/issues) along with the package that generated this problem. +### Note + +When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3011 is raised as a warning. +When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3011 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3012.md b/docs/reference/errors-and-warnings/NU3012.md index e131ac363..e5a602951 100644 --- a/docs/reference/errors-and-warnings/NU3012.md +++ b/docs/reference/errors-and-warnings/NU3012.md @@ -10,7 +10,7 @@ f1_keywords: - NU3012 --- -# NuGet Error NU3012 +# NuGet Warning NU3012 ## Scenario 1 @@ -41,3 +41,8 @@ NuGet client failed to verify the certificate chain for the signing certificate Please ensure that the package signature has a valid certificate chain. You can verify the package signature by running the `nuget verify -signatures` command on the package. If the problem persists, then please file an issue at [NuGet/Home](https://github.com/NuGet/Home/issues) along with the package that generated this problem. +### Note + +When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3012 is raised as a warning in most cases. +When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3012 is elevated from a warning to an error. + diff --git a/docs/reference/errors-and-warnings/NU3013.md b/docs/reference/errors-and-warnings/NU3013.md index dc7c72c83..b07f0b8f5 100644 --- a/docs/reference/errors-and-warnings/NU3013.md +++ b/docs/reference/errors-and-warnings/NU3013.md @@ -47,3 +47,8 @@ Please ensure that the package was signed using a certificate with one of the fo * `sha512WithRSAEncryption` +## Note + +When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3013 is raised as a warning. +When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3013 is elevated from a warning to an error. + diff --git a/docs/reference/errors-and-warnings/NU3014.md b/docs/reference/errors-and-warnings/NU3014.md index 26841f98b..9b44a99d1 100644 --- a/docs/reference/errors-and-warnings/NU3014.md +++ b/docs/reference/errors-and-warnings/NU3014.md @@ -41,3 +41,7 @@ The certificate used to sign the package does not meet the minimum public key le Please ensure that the package was signed using a signing certificate with an RSA public key of length >= 2048 bits. +## Note + +When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3014 is raised as a warning. +When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3014 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3015.md b/docs/reference/errors-and-warnings/NU3015.md index 61b82a55c..37b4c3b73 100644 --- a/docs/reference/errors-and-warnings/NU3015.md +++ b/docs/reference/errors-and-warnings/NU3015.md @@ -41,3 +41,7 @@ The certificate used to sign the package has an unsupported Extended Key Usage. Please ensure that the package was signed using a signing certificate that does not have lifetime signing Extended Key Usage. +## Note + +When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3015 is raised as a warning. +When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3015 is elevated from a warning to an error. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3016.md b/docs/reference/errors-and-warnings/NU3016.md index a43b2e1dd..50ea7b2b9 100644 --- a/docs/reference/errors-and-warnings/NU3016.md +++ b/docs/reference/errors-and-warnings/NU3016.md @@ -27,3 +27,7 @@ Please ensure that the package was signed with one of the following hash algori * `sha512` +### Note + +When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3016 is raised as a warning. +When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3016 is elevated from a warning to an error. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3017.md b/docs/reference/errors-and-warnings/NU3017.md index e9a6a603b..030e34409 100644 --- a/docs/reference/errors-and-warnings/NU3017.md +++ b/docs/reference/errors-and-warnings/NU3017.md @@ -41,3 +41,7 @@ The certificate used to sign the package has a validity in the future, but is no Please request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package) with a signing certificate which is currently valid. +## Note + +When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3017 is raised as a warning. +When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3017 is elevated from a warning to an error. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3018.md b/docs/reference/errors-and-warnings/NU3018.md index a2071c9a1..3fcae8e81 100644 --- a/docs/reference/errors-and-warnings/NU3018.md +++ b/docs/reference/errors-and-warnings/NU3018.md @@ -24,3 +24,7 @@ NuGet client failed to verify the certificate chain for the signing certificate Please ensure that the package signature has a valid certificate chain. You can verify the package signature by running the `nuget verify -signatures` command on the package. If the problem persists, then please file an issue at [NuGet/Home](https://github.com/NuGet/Home/issues) along with the package that generated this problem. +### Note + +When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3018 is raised as a warning. +When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3018 is elevated from a warning to an error in most cases. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3019.md b/docs/reference/errors-and-warnings/NU3019.md index f3ffb061f..4a64d54c7 100644 --- a/docs/reference/errors-and-warnings/NU3019.md +++ b/docs/reference/errors-and-warnings/NU3019.md @@ -41,3 +41,6 @@ The timestamp on the package signature has changed since it was generated by the Please request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package). If the problem persists, request the package author to contact the Timestamp Authority to discover the source of the problem. +## Note + +When running `nuget verify -signatures` command, NU3019 is raised as an error. Otherwise, NU3019 is raised as a warning. diff --git a/docs/reference/errors-and-warnings/NU3020.md b/docs/reference/errors-and-warnings/NU3020.md index be6be4fbc..6831830b6 100644 --- a/docs/reference/errors-and-warnings/NU3020.md +++ b/docs/reference/errors-and-warnings/NU3020.md @@ -41,3 +41,6 @@ The timestamp on the package signature does not contain a signing certificate. Please request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package). If the problem persists, request the package author to contact the Timestamp Authority to discover the source of the problem. +## Note + +When running `nuget verify -signatures` command, NU3020 is raised as an error. Otherwise, NU3020 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3021.md b/docs/reference/errors-and-warnings/NU3021.md index 589bba68b..27f2189b6 100644 --- a/docs/reference/errors-and-warnings/NU3021.md +++ b/docs/reference/errors-and-warnings/NU3021.md @@ -41,3 +41,6 @@ The `SignedCms` object inside the timestamp on the package signature could not v Please try to re-sign and timestamp the package. If the problem persists, contact the Timestamp Authority to discover the source of the problem. +## Note + +When running `nuget verify -signatures` command, NU3021 is raised as an error. Otherwise, NU3021 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3022.md b/docs/reference/errors-and-warnings/NU3022.md index dcd018a04..c8c666205 100644 --- a/docs/reference/errors-and-warnings/NU3022.md +++ b/docs/reference/errors-and-warnings/NU3022.md @@ -47,3 +47,6 @@ Please request the package author to re-sign the package using the `nuget sign` * `sha512WithRSAEncryption` +## Note + +When running `nuget verify -signatures` command, NU3022 is raised as an error. Otherwise, NU3022 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3023.md b/docs/reference/errors-and-warnings/NU3023.md index 3c1e3fa54..89c9dfd2a 100644 --- a/docs/reference/errors-and-warnings/NU3023.md +++ b/docs/reference/errors-and-warnings/NU3023.md @@ -41,3 +41,6 @@ The certificate used to timestamp the package signature does not meet a minimum Please ensure that the package signature was timestamped using a signing certificate with an RSA public key of length >= 2048 bits. +## Note + +When running `nuget verify -signatures` command, NU3023 is raised as an error. Otherwise, NU3023 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3024.md b/docs/reference/errors-and-warnings/NU3024.md index 90ea6805e..f00ea104f 100644 --- a/docs/reference/errors-and-warnings/NU3024.md +++ b/docs/reference/errors-and-warnings/NU3024.md @@ -44,4 +44,9 @@ The timestamp's signature has an unsupported digest algorithm. Request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package) using the `-Timestamper` option such that the timestamp authority signing certificate has one of the following digest algorithms - * `SHA-2-256` * `SHA-2-384` -* `SHA-2-512` \ No newline at end of file +* `SHA-2-512` + + +## Note + +When running `nuget verify -signatures` command, NU3024 is raised as an error. Otherwise, NU3024 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3025.md b/docs/reference/errors-and-warnings/NU3025.md index f9e462ad4..183414c03 100644 --- a/docs/reference/errors-and-warnings/NU3025.md +++ b/docs/reference/errors-and-warnings/NU3025.md @@ -41,3 +41,6 @@ The certificate used to sign the package has a validity in the future, but is no Please request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package). If the problem persists, request the package author to contact the Timestamp Authority to discover the source of the problem. +## Note + +When running `nuget verify -signatures` command, NU3025 is raised as an error. Otherwise, NU3025 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3028.md b/docs/reference/errors-and-warnings/NU3028.md index fd650d9e8..faa1888ef 100644 --- a/docs/reference/errors-and-warnings/NU3028.md +++ b/docs/reference/errors-and-warnings/NU3028.md @@ -32,3 +32,8 @@ However, in some cases, this may have unintended concequences such as the packag When the revocation check mode is set to `offline`, the warning will be downgraded to an info.
    The author primary signature's timestamp found a chain building issue: The revocation function was unable to check revocation because the certificate is not available in the cached certificate revocation list and NUGET_CERT_REVOCATION_MODE environment variable has been set to offline. For more information, visit https://aka.ms/certificateRevocationMode.
    + +### Note + +NU3028 is raised as an error in most cases. +When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3028 is raised as a warning in some cases. diff --git a/docs/reference/errors-and-warnings/NU3030.md b/docs/reference/errors-and-warnings/NU3030.md index 1597efdd2..cd3b976a2 100644 --- a/docs/reference/errors-and-warnings/NU3030.md +++ b/docs/reference/errors-and-warnings/NU3030.md @@ -24,4 +24,9 @@ The primary signature's timestamp's message imprint uses an unsupported hash alg Request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package) using the `-Timestamper` option such that the timestamp's message imprint uses one of the following hash algorithms - * `SHA-2-256` * `SHA-2-384` -* `SHA-2-512` \ No newline at end of file +* `SHA-2-512` + + +### Note + +When running `nuget verify -signatures` command, NU3030 is raised as an error. Otherwise, NU3030 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3036.md b/docs/reference/errors-and-warnings/NU3036.md index aef382d4b..fea028e54 100644 --- a/docs/reference/errors-and-warnings/NU3036.md +++ b/docs/reference/errors-and-warnings/NU3036.md @@ -41,3 +41,6 @@ The certificate used to timestamp the package signature is invalid as the timest Request the package author to re-sign and timestamp the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package). If the problem persists, request the package author to contact the timestamp authority to discover the source of the problem. +## Note + +When running `nuget verify -signatures` command, NU3036 is raised as an error. Otherwise, NU3036 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3037.md b/docs/reference/errors-and-warnings/NU3037.md index d4a6504df..128492e04 100644 --- a/docs/reference/errors-and-warnings/NU3037.md +++ b/docs/reference/errors-and-warnings/NU3037.md @@ -16,12 +16,15 @@ f1_keywords: A NuGet package signature has expired. A package signature shares the same validity period as the certificate used to generate the signature. A package signature is invalid outside of that validity period. -When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), a package with an expired package signature is treated as an unsigned package and installed anyway. NU3037 is raised as a warning. -When NuGet’s signature validation mode is set to require, a package with an expired package signature is blocked from installation, and NU3037 is elevated from a warning to an error. Require mode requires non-expired package signatures. To ensure long-term validity --- even beyond the signing certificate’s validity period --- a package signature should be timestamped with a trusted timestamp. Trusted timestamps must be added while a package signature is still valid and not expired. ### Solution * Resign the package with a non-expired certificate. Optionally, add a trusted timestamp at the time of signing to ensure long-term validity of the signature. -* For accept mode only, ignore the warning. \ No newline at end of file +* For accept mode only, ignore the warning. + +###Note + +When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), a package with an expired package signature is treated as an unsigned package and installed anyway. NU3037 is raised as a warning. +When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3037 is elevated from a warning to an error. \ No newline at end of file From d26053a8af5785d54ba091fd1f66b1e80cb64e79 Mon Sep 17 00:00:00 2001 From: Heng Liu Date: Tue, 9 Apr 2019 10:12:30 -0700 Subject: [PATCH 1156/2943] remove It must not be a repository countersignature --- docs/reference/errors-and-warnings/NU3033.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/reference/errors-and-warnings/NU3033.md b/docs/reference/errors-and-warnings/NU3033.md index 33d79443d..ffabc561a 100644 --- a/docs/reference/errors-and-warnings/NU3033.md +++ b/docs/reference/errors-and-warnings/NU3033.md @@ -18,8 +18,7 @@ f1_keywords: ### Issue -The primary signature should be either an author signature or a repository signature. It must not be a repository countersignature. A repository primary signature cannot have a repository countersignature. - +The primary signature should be either an author signature or a repository signature. A repository primary signature cannot have a repository countersignature. ### Solution @@ -33,8 +32,7 @@ Try to re-sign the package with either an author signature or a repository signa ### Issue -The primary signature should be either an author signature or a repository signature. It must not be a repository countersignature. A repository primary signature cannot have a repository countersignature. - +The primary signature should be either an author signature or a repository signature. A repository primary signature cannot have a repository countersignature. ### Solution From d354d8dc1d0ebed1221995f3a9c55f87e11df5ac Mon Sep 17 00:00:00 2001 From: Heng Liu Date: Tue, 9 Apr 2019 11:12:33 -0700 Subject: [PATCH 1157/2943] add space in index page & update NU3037 --- docs/reference/Errors-and-Warnings.md | 4 ++-- docs/reference/errors-and-warnings/NU3037.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/reference/Errors-and-Warnings.md b/docs/reference/Errors-and-Warnings.md index 1af6d8ccf..b77c344e1 100644 --- a/docs/reference/Errors-and-Warnings.md +++ b/docs/reference/Errors-and-Warnings.md @@ -22,7 +22,7 @@ The errors and warnings listed here are available only with [PackageReference-ba | 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) | | Compatibility errors | [NU1201](./errors-and-warnings/NU1201.md), [NU1202](./errors-and-warnings/NU1202.md), [NU1203](./errors-and-warnings/NU1203.md), [NU1401](./errors-and-warnings/NU1401.md) | | NuGet internal errors | [NU1000](./errors-and-warnings/NU1000.md) | -| Signed packages errors(creation and verification) | [NU3001](./errors-and-warnings/NU3001.md), [NU3004](./errors-and-warnings/NU3004.md), [NU3005](./errors-and-warnings/NU3005.md), [NU3008](./errors-and-warnings/NU3008.md), [NU3034](./errors-and-warnings/NU3034.md)| +| Signed packages errors (creation and verification) | [NU3001](./errors-and-warnings/NU3001.md), [NU3004](./errors-and-warnings/NU3004.md), [NU3005](./errors-and-warnings/NU3005.md), [NU3008](./errors-and-warnings/NU3008.md), [NU3034](./errors-and-warnings/NU3034.md)| | Pack Errors | [NU5000](./errors-and-warnings/NU5000.md), [NU5001](./errors-and-warnings/NU5001.md), [NU5002](./errors-and-warnings/NU5002.md), [NU5003](./errors-and-warnings/NU5003.md), [NU5004](./errors-and-warnings/NU5004.md), [NU5005](./errors-and-warnings/NU5005.md), [NU5007](./errors-and-warnings/NU5007.md), [NU5008](./errors-and-warnings/NU5008.md), [NU5009](./errors-and-warnings/NU5009.md), [NU5010](./errors-and-warnings/NU5010.md), [NU5011](./errors-and-warnings/NU5011.md), [NU5012](./errors-and-warnings/NU5012.md), [NU5013](./errors-and-warnings/NU5013.md), [NU5014](./errors-and-warnings/NU5014.md), [NU5015](./errors-and-warnings/NU5015.md), [NU5016](./errors-and-warnings/NU5016.md), [NU5017](./errors-and-warnings/NU5017.md), [NU5018](./errors-and-warnings/NU5018.md), [NU5019](./errors-and-warnings/NU5019.md), [NU5020](./errors-and-warnings/NU5020.md), [NU5021](./errors-and-warnings/NU5021.md), [NU5022](./errors-and-warnings/NU5022.md), [NU5023](./errors-and-warnings/NU5023.md), [NU5024](./errors-and-warnings/NU5024.md), [NU5025](./errors-and-warnings/NU5025.md), [NU5026](./errors-and-warnings/NU5026.md), [NU5027](./errors-and-warnings/NU5027.md), [NU5028](./errors-and-warnings/NU5028.md), [NU5029](./errors-and-warnings/NU5029.md), [NU5036](./errors-and-warnings/NU5036.md) | License specific Pack Errors | [NU5030](./errors-and-warnings/NU5030.md), [NU5031](./errors-and-warnings/NU5031.md), [NU5032](./errors-and-warnings/NU5032.md), [NU5033](./errors-and-warnings/NU5033.md), [NU5034](./errors-and-warnings/NU5034.md), [NU5035](./errors-and-warnings/NU5035.md) @@ -36,6 +36,6 @@ The errors and warnings listed here are available only with [PackageReference-ba | Package fallback warnings | [NU1701](./errors-and-warnings/NU1701.md) | | Feed warnings | [NU1801](./errors-and-warnings/NU1801.md) | | NuGet internal warnings | [NU1500](./errors-and-warnings/NU1500.md) | -| Signed packages warnings(creation and verification) | [NU3000](./errors-and-warnings/NU3000.md), [NU3002](./errors-and-warnings/NU3002.md), [NU3003](./errors-and-warnings/NU3003.md), [NU3006](./errors-and-warnings/NU3006.md), [NU3007](./errors-and-warnings/NU3007.md), [NU3009](./errors-and-warnings/NU3009.md), [NU3010](./errors-and-warnings/NU3010.md), [NU3011](./errors-and-warnings/NU3011.md), [NU3012](./errors-and-warnings/NU3012.md), [NU3013](./errors-and-warnings/NU3013.md), [NU3014](./errors-and-warnings/NU3014.md), [NU3015](./errors-and-warnings/NU3015.md), [NU3016](./errors-and-warnings/NU3016.md), [NU3017](./errors-and-warnings/NU3017.md), [NU3018](./errors-and-warnings/NU3018.md), [NU3019](./errors-and-warnings/NU3019.md), [NU3020](./errors-and-warnings/NU3020.md), [NU3021](./errors-and-warnings/NU3021.md), [NU3022](./errors-and-warnings/NU3022.md), [NU3023](./errors-and-warnings/NU3023.md), [NU3024](./errors-and-warnings/NU3024.md), [NU3025](./errors-and-warnings/NU3025.md), [NU3026](./errors-and-warnings/NU3026.md), [NU3027](./errors-and-warnings/NU3027.md), [NU3028](./errors-and-warnings/NU3028.md), [NU3029](./errors-and-warnings/NU3029.md), [NU3030](./errors-and-warnings/NU3030.md), [NU3031](./errors-and-warnings/NU3031.md), [NU3032](./errors-and-warnings/NU3032.md), [NU3033](./errors-and-warnings/NU3033.md), [NU3035](./errors-and-warnings/NU3035.md), [NU3036](./errors-and-warnings/NU3036.md), [NU3037](./errors-and-warnings/NU3037.md), [NU3038](./errors-and-warnings/NU3038.md), [NU3040](./errors-and-warnings/NU3040.md) | +| Signed packages warnings (creation and verification) | [NU3000](./errors-and-warnings/NU3000.md), [NU3002](./errors-and-warnings/NU3002.md), [NU3003](./errors-and-warnings/NU3003.md), [NU3006](./errors-and-warnings/NU3006.md), [NU3007](./errors-and-warnings/NU3007.md), [NU3009](./errors-and-warnings/NU3009.md), [NU3010](./errors-and-warnings/NU3010.md), [NU3011](./errors-and-warnings/NU3011.md), [NU3012](./errors-and-warnings/NU3012.md), [NU3013](./errors-and-warnings/NU3013.md), [NU3014](./errors-and-warnings/NU3014.md), [NU3015](./errors-and-warnings/NU3015.md), [NU3016](./errors-and-warnings/NU3016.md), [NU3017](./errors-and-warnings/NU3017.md), [NU3018](./errors-and-warnings/NU3018.md), [NU3019](./errors-and-warnings/NU3019.md), [NU3020](./errors-and-warnings/NU3020.md), [NU3021](./errors-and-warnings/NU3021.md), [NU3022](./errors-and-warnings/NU3022.md), [NU3023](./errors-and-warnings/NU3023.md), [NU3024](./errors-and-warnings/NU3024.md), [NU3025](./errors-and-warnings/NU3025.md), [NU3026](./errors-and-warnings/NU3026.md), [NU3027](./errors-and-warnings/NU3027.md), [NU3028](./errors-and-warnings/NU3028.md), [NU3029](./errors-and-warnings/NU3029.md), [NU3030](./errors-and-warnings/NU3030.md), [NU3031](./errors-and-warnings/NU3031.md), [NU3032](./errors-and-warnings/NU3032.md), [NU3033](./errors-and-warnings/NU3033.md), [NU3035](./errors-and-warnings/NU3035.md), [NU3036](./errors-and-warnings/NU3036.md), [NU3037](./errors-and-warnings/NU3037.md), [NU3038](./errors-and-warnings/NU3038.md), [NU3040](./errors-and-warnings/NU3040.md) | | Pack Warnings | [NU5100](./errors-and-warnings/NU5100.md), [NU5101](./errors-and-warnings/NU5101.md), [NU5102](./errors-and-warnings/NU5102.md), [NU5103](./errors-and-warnings/NU5103.md), [NU5104](./errors-and-warnings/NU5104.md), [NU5105](./errors-and-warnings/NU5105.md), [NU5106](./errors-and-warnings/NU5106.md), [NU5107](./errors-and-warnings/NU5107.md), [NU5108](./errors-and-warnings/NU5108.md), [NU5109](./errors-and-warnings/NU5109.md), [NU5110](./errors-and-warnings/NU5110.md), [NU5111](./errors-and-warnings/NU5111.md), [NU5112](./errors-and-warnings/NU5112.md), [NU5114](./errors-and-warnings/NU5114.md), [NU5115](./errors-and-warnings/NU5115.md), [NU5116](./errors-and-warnings/NU5116.md), [NU5117](./errors-and-warnings/NU5117.md), [NU5118](./errors-and-warnings/NU5118.md), [NU5119](./errors-and-warnings/NU5119.md), [NU5120](./errors-and-warnings/NU5120.md), [NU5121](./errors-and-warnings/NU5121.md), [NU5122](./errors-and-warnings/NU5122.md), [NU5123](./errors-and-warnings/NU5123.md), [NU5500](./errors-and-warnings/NU5500.md) | License specific Pack Warnings | [NU5124](./errors-and-warnings/NU5124.md), [NU5125](./errors-and-warnings/NU5125.md) \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3037.md b/docs/reference/errors-and-warnings/NU3037.md index 128492e04..47201b039 100644 --- a/docs/reference/errors-and-warnings/NU3037.md +++ b/docs/reference/errors-and-warnings/NU3037.md @@ -26,5 +26,5 @@ To ensure long-term validity --- even beyond the signing certificate’s validit ###Note -When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), a package with an expired package signature is treated as an unsigned package and installed anyway. NU3037 is raised as a warning. -When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3037 is elevated from a warning to an error. \ No newline at end of file +When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), a package with an expired package signature is treated as an unsigned package and installed anyway. NU3037 is raised as a warning. +When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3037 is elevated from a warning to an error. \ No newline at end of file From 9b0ffe2e162d1624f32a903ac8d70f16ca79f53d Mon Sep 17 00:00:00 2001 From: Heng Liu Date: Tue, 9 Apr 2019 14:41:39 -0700 Subject: [PATCH 1158/2943] fix some space and grammar issues --- docs/reference/errors-and-warnings/NU3003.md | 4 ++-- docs/reference/errors-and-warnings/NU3009.md | 4 ++-- docs/reference/errors-and-warnings/NU3010.md | 4 ++-- docs/reference/errors-and-warnings/NU3011.md | 4 ++-- docs/reference/errors-and-warnings/NU3012.md | 2 +- docs/reference/errors-and-warnings/NU3013.md | 2 +- docs/reference/errors-and-warnings/NU3014.md | 2 +- docs/reference/errors-and-warnings/NU3016.md | 2 +- docs/reference/errors-and-warnings/NU3018.md | 2 +- docs/reference/errors-and-warnings/NU3028.md | 2 +- 10 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/reference/errors-and-warnings/NU3003.md b/docs/reference/errors-and-warnings/NU3003.md index 419dd0237..3640b14ab 100644 --- a/docs/reference/errors-and-warnings/NU3003.md +++ b/docs/reference/errors-and-warnings/NU3003.md @@ -42,6 +42,6 @@ Please file an issue at [NuGet/Home](https://github.com/NuGet/Home/issues) along ## Note -When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3003 is raised as a warning. -When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3003 is elevated from a warning to an error. +When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3003 is raised as a warning. +When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3003 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3009.md b/docs/reference/errors-and-warnings/NU3009.md index 21806fece..b3e66bda5 100644 --- a/docs/reference/errors-and-warnings/NU3009.md +++ b/docs/reference/errors-and-warnings/NU3009.md @@ -26,5 +26,5 @@ Please request the package author to re-sign the package using the `nuget sign` ### Note -When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3009 is raised as a warning. -When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3009 is elevated from a warning to an error. +When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3009 is raised as a warning. +When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3009 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3010.md b/docs/reference/errors-and-warnings/NU3010.md index d97075f27..f020cd383 100644 --- a/docs/reference/errors-and-warnings/NU3010.md +++ b/docs/reference/errors-and-warnings/NU3010.md @@ -26,5 +26,5 @@ Please request the package author to re-sign the package using the `nuget sign` ### Note -When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3010 is raised as a warning. -When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3010 is elevated from a warning to an error. \ No newline at end of file +When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3010 is raised as a warning. +When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3010 is elevated from a warning to an error. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3011.md b/docs/reference/errors-and-warnings/NU3011.md index 261174901..182e7e843 100644 --- a/docs/reference/errors-and-warnings/NU3011.md +++ b/docs/reference/errors-and-warnings/NU3011.md @@ -26,5 +26,5 @@ Please request the package author to re-sign the package using the `nuget sign` ### Note -When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3011 is raised as a warning. -When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3011 is elevated from a warning to an error. +When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3011 is raised as a warning. +When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3011 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3012.md b/docs/reference/errors-and-warnings/NU3012.md index e5a602951..78a6d1829 100644 --- a/docs/reference/errors-and-warnings/NU3012.md +++ b/docs/reference/errors-and-warnings/NU3012.md @@ -43,6 +43,6 @@ Please ensure that the package signature has a valid certificate chain. You can ### Note -When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3012 is raised as a warning in most cases. +When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3012 is raised as a warning in most cases. When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3012 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3013.md b/docs/reference/errors-and-warnings/NU3013.md index b07f0b8f5..2cf3e1671 100644 --- a/docs/reference/errors-and-warnings/NU3013.md +++ b/docs/reference/errors-and-warnings/NU3013.md @@ -49,6 +49,6 @@ Please ensure that the package was signed using a certificate with one of the fo ## Note -When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3013 is raised as a warning. +When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3013 is raised as a warning. When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3013 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3014.md b/docs/reference/errors-and-warnings/NU3014.md index 9b44a99d1..9a1c8410d 100644 --- a/docs/reference/errors-and-warnings/NU3014.md +++ b/docs/reference/errors-and-warnings/NU3014.md @@ -43,5 +43,5 @@ Please ensure that the package was signed using a signing certificate with an RS ## Note -When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3014 is raised as a warning. +When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3014 is raised as a warning. When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3014 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3016.md b/docs/reference/errors-and-warnings/NU3016.md index 50ea7b2b9..3fb9dfa0f 100644 --- a/docs/reference/errors-and-warnings/NU3016.md +++ b/docs/reference/errors-and-warnings/NU3016.md @@ -29,5 +29,5 @@ Please ensure that the package was signed with one of the following hash algori ### Note -When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3016 is raised as a warning. +When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3016 is raised as a warning. When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3016 is elevated from a warning to an error. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3018.md b/docs/reference/errors-and-warnings/NU3018.md index 3fcae8e81..79badcaf5 100644 --- a/docs/reference/errors-and-warnings/NU3018.md +++ b/docs/reference/errors-and-warnings/NU3018.md @@ -26,5 +26,5 @@ Please ensure that the package signature has a valid certificate chain. You can ### Note -When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3018 is raised as a warning. +When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3018 is raised as a warning. When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3018 is elevated from a warning to an error in most cases. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3028.md b/docs/reference/errors-and-warnings/NU3028.md index faa1888ef..c6fc53e24 100644 --- a/docs/reference/errors-and-warnings/NU3028.md +++ b/docs/reference/errors-and-warnings/NU3028.md @@ -36,4 +36,4 @@ When the revocation check mode is set to `offline`, the warning will be downgrad ### Note NU3028 is raised as an error in most cases. -When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3028 is raised as a warning in some cases. +When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3028 is raised as a warning in some cases. From 0c154392e55addcc84f0c446e2824d02bbb4876f Mon Sep 17 00:00:00 2001 From: Heng Liu Date: Tue, 9 Apr 2019 15:29:39 -0700 Subject: [PATCH 1159/2943] add some missing updates on grammar --- docs/reference/errors-and-warnings/NU3012.md | 2 +- docs/reference/errors-and-warnings/NU3013.md | 2 +- docs/reference/errors-and-warnings/NU3014.md | 2 +- docs/reference/errors-and-warnings/NU3015.md | 4 ++-- docs/reference/errors-and-warnings/NU3016.md | 2 +- docs/reference/errors-and-warnings/NU3017.md | 4 ++-- docs/reference/errors-and-warnings/NU3018.md | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/reference/errors-and-warnings/NU3012.md b/docs/reference/errors-and-warnings/NU3012.md index 78a6d1829..4dde561b7 100644 --- a/docs/reference/errors-and-warnings/NU3012.md +++ b/docs/reference/errors-and-warnings/NU3012.md @@ -44,5 +44,5 @@ Please ensure that the package signature has a valid certificate chain. You can ### Note When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3012 is raised as a warning in most cases. -When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3012 is elevated from a warning to an error. +When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3012 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3013.md b/docs/reference/errors-and-warnings/NU3013.md index 2cf3e1671..f1c936808 100644 --- a/docs/reference/errors-and-warnings/NU3013.md +++ b/docs/reference/errors-and-warnings/NU3013.md @@ -50,5 +50,5 @@ Please ensure that the package was signed using a certificate with one of the fo ## Note When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3013 is raised as a warning. -When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3013 is elevated from a warning to an error. +When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3013 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3014.md b/docs/reference/errors-and-warnings/NU3014.md index 9a1c8410d..181211662 100644 --- a/docs/reference/errors-and-warnings/NU3014.md +++ b/docs/reference/errors-and-warnings/NU3014.md @@ -44,4 +44,4 @@ Please ensure that the package was signed using a signing certificate with an RS ## Note When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3014 is raised as a warning. -When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3014 is elevated from a warning to an error. +When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3014 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3015.md b/docs/reference/errors-and-warnings/NU3015.md index 37b4c3b73..34f5cfe10 100644 --- a/docs/reference/errors-and-warnings/NU3015.md +++ b/docs/reference/errors-and-warnings/NU3015.md @@ -43,5 +43,5 @@ Please ensure that the package was signed using a signing certificate that does ## Note -When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3015 is raised as a warning. -When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3015 is elevated from a warning to an error. \ No newline at end of file +When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3015 is raised as a warning. +When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3015 is elevated from a warning to an error. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3016.md b/docs/reference/errors-and-warnings/NU3016.md index 3fb9dfa0f..8315926e7 100644 --- a/docs/reference/errors-and-warnings/NU3016.md +++ b/docs/reference/errors-and-warnings/NU3016.md @@ -30,4 +30,4 @@ Please ensure that the package was signed with one of the following hash algori ### Note When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3016 is raised as a warning. -When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3016 is elevated from a warning to an error. \ No newline at end of file +When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3016 is elevated from a warning to an error. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3017.md b/docs/reference/errors-and-warnings/NU3017.md index 030e34409..0670f1a2d 100644 --- a/docs/reference/errors-and-warnings/NU3017.md +++ b/docs/reference/errors-and-warnings/NU3017.md @@ -43,5 +43,5 @@ Please request the package author to re-sign the package using the `nuget sign` ## Note -When NuGet’s [signature validation mode] (https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3017 is raised as a warning. -When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3017 is elevated from a warning to an error. \ No newline at end of file +When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3017 is raised as a warning. +When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3017 is elevated from a warning to an error. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3018.md b/docs/reference/errors-and-warnings/NU3018.md index 79badcaf5..4ab3941ad 100644 --- a/docs/reference/errors-and-warnings/NU3018.md +++ b/docs/reference/errors-and-warnings/NU3018.md @@ -27,4 +27,4 @@ Please ensure that the package signature has a valid certificate chain. You can ### Note When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3018 is raised as a warning. -When NuGet’s signature validation mode is set to require, or running `nuget verify -signatures` command, NU3018 is elevated from a warning to an error in most cases. \ No newline at end of file +When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3018 is elevated from a warning to an error in most cases. \ No newline at end of file From 5294d44ad99583ad99d739c06c0eb62deab74d89 Mon Sep 17 00:00:00 2001 From: Heng Liu Date: Wed, 10 Apr 2019 11:58:58 -0700 Subject: [PATCH 1160/2943] change note format --- docs/reference/errors-and-warnings/NU3003.md | 6 ++---- docs/reference/errors-and-warnings/NU3009.md | 6 ++---- docs/reference/errors-and-warnings/NU3010.md | 6 ++---- docs/reference/errors-and-warnings/NU3011.md | 6 ++---- docs/reference/errors-and-warnings/NU3012.md | 6 ++---- docs/reference/errors-and-warnings/NU3013.md | 6 ++---- docs/reference/errors-and-warnings/NU3014.md | 6 ++---- docs/reference/errors-and-warnings/NU3015.md | 6 ++---- docs/reference/errors-and-warnings/NU3016.md | 6 ++---- docs/reference/errors-and-warnings/NU3017.md | 6 ++---- docs/reference/errors-and-warnings/NU3018.md | 6 ++---- docs/reference/errors-and-warnings/NU3019.md | 5 ++--- docs/reference/errors-and-warnings/NU3020.md | 5 ++--- docs/reference/errors-and-warnings/NU3021.md | 5 ++--- docs/reference/errors-and-warnings/NU3022.md | 5 ++--- docs/reference/errors-and-warnings/NU3023.md | 5 ++--- docs/reference/errors-and-warnings/NU3024.md | 5 ++--- docs/reference/errors-and-warnings/NU3025.md | 5 ++--- docs/reference/errors-and-warnings/NU3028.md | 6 ++---- docs/reference/errors-and-warnings/NU3030.md | 5 ++--- docs/reference/errors-and-warnings/NU3036.md | 5 ++--- docs/reference/errors-and-warnings/NU3037.md | 6 ++---- 22 files changed, 44 insertions(+), 79 deletions(-) diff --git a/docs/reference/errors-and-warnings/NU3003.md b/docs/reference/errors-and-warnings/NU3003.md index 3640b14ab..0aad4d060 100644 --- a/docs/reference/errors-and-warnings/NU3003.md +++ b/docs/reference/errors-and-warnings/NU3003.md @@ -40,8 +40,6 @@ NuGet client tried to verify a package which contains an invalid package signatu Please file an issue at [NuGet/Home](https://github.com/NuGet/Home/issues) along with the package that generated this problem and the platform on which the issue was encountered. -## Note - -When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3003 is raised as a warning. -When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3003 is elevated from a warning to an error. +> [!Note] +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3003 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3003 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3009.md b/docs/reference/errors-and-warnings/NU3009.md index b3e66bda5..6e120e502 100644 --- a/docs/reference/errors-and-warnings/NU3009.md +++ b/docs/reference/errors-and-warnings/NU3009.md @@ -24,7 +24,5 @@ NuGet client tried to verify a package signature which contained multiple `Signe Please request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package). If the problem persists, then please file an issue at [NuGet/Home](https://github.com/NuGet/Home/issues) along with the package that generated this problem. -### Note - -When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3009 is raised as a warning. -When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3009 is elevated from a warning to an error. +> [!Note] +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3009 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3009 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3010.md b/docs/reference/errors-and-warnings/NU3010.md index f020cd383..2e9e5826a 100644 --- a/docs/reference/errors-and-warnings/NU3010.md +++ b/docs/reference/errors-and-warnings/NU3010.md @@ -24,7 +24,5 @@ NuGet client tried to verify a package signature with a `SignerInfo` entry that Please request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package). If the problem persists, then please file an issue at [NuGet/Home](https://github.com/NuGet/Home/issues) along with the package that generated this problem. -### Note - -When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3010 is raised as a warning. -When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3010 is elevated from a warning to an error. \ No newline at end of file +> [!Note] +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3010 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3010 is elevated from a warning to an error. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3011.md b/docs/reference/errors-and-warnings/NU3011.md index 182e7e843..77adaa286 100644 --- a/docs/reference/errors-and-warnings/NU3011.md +++ b/docs/reference/errors-and-warnings/NU3011.md @@ -24,7 +24,5 @@ NuGet client was unable to read the certificate chain for the signing certificat Please request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package). If the problem persists, then please file an issue at [NuGet/Home](https://github.com/NuGet/Home/issues) along with the package that generated this problem. -### Note - -When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3011 is raised as a warning. -When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3011 is elevated from a warning to an error. +> [!Note] +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3011 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3011 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3012.md b/docs/reference/errors-and-warnings/NU3012.md index 4dde561b7..6b538a7d7 100644 --- a/docs/reference/errors-and-warnings/NU3012.md +++ b/docs/reference/errors-and-warnings/NU3012.md @@ -41,8 +41,6 @@ NuGet client failed to verify the certificate chain for the signing certificate Please ensure that the package signature has a valid certificate chain. You can verify the package signature by running the `nuget verify -signatures` command on the package. If the problem persists, then please file an issue at [NuGet/Home](https://github.com/NuGet/Home/issues) along with the package that generated this problem. -### Note - -When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3012 is raised as a warning in most cases. -When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3012 is elevated from a warning to an error. +> [!Note] +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3012 is raised as a warning in most cases. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3012 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3013.md b/docs/reference/errors-and-warnings/NU3013.md index f1c936808..3f96bd505 100644 --- a/docs/reference/errors-and-warnings/NU3013.md +++ b/docs/reference/errors-and-warnings/NU3013.md @@ -47,8 +47,6 @@ Please ensure that the package was signed using a certificate with one of the fo * `sha512WithRSAEncryption` -## Note - -When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3013 is raised as a warning. -When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3013 is elevated from a warning to an error. +> [!Note] +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3013 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3013 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3014.md b/docs/reference/errors-and-warnings/NU3014.md index 181211662..a682c1010 100644 --- a/docs/reference/errors-and-warnings/NU3014.md +++ b/docs/reference/errors-and-warnings/NU3014.md @@ -41,7 +41,5 @@ The certificate used to sign the package does not meet the minimum public key le Please ensure that the package was signed using a signing certificate with an RSA public key of length >= 2048 bits. -## Note - -When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3014 is raised as a warning. -When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3014 is elevated from a warning to an error. +> [!Note] +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3014 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3014 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3015.md b/docs/reference/errors-and-warnings/NU3015.md index 34f5cfe10..f62527abf 100644 --- a/docs/reference/errors-and-warnings/NU3015.md +++ b/docs/reference/errors-and-warnings/NU3015.md @@ -41,7 +41,5 @@ The certificate used to sign the package has an unsupported Extended Key Usage. Please ensure that the package was signed using a signing certificate that does not have lifetime signing Extended Key Usage. -## Note - -When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3015 is raised as a warning. -When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3015 is elevated from a warning to an error. \ No newline at end of file +> [!Note] +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3015 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3015 is elevated from a warning to an error. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3016.md b/docs/reference/errors-and-warnings/NU3016.md index 8315926e7..13063aceb 100644 --- a/docs/reference/errors-and-warnings/NU3016.md +++ b/docs/reference/errors-and-warnings/NU3016.md @@ -27,7 +27,5 @@ Please ensure that the package was signed with one of the following hash algori * `sha512` -### Note - -When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3016 is raised as a warning. -When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3016 is elevated from a warning to an error. \ No newline at end of file +> [!Note] +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3016 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3016 is elevated from a warning to an error. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3017.md b/docs/reference/errors-and-warnings/NU3017.md index 0670f1a2d..1c3a23262 100644 --- a/docs/reference/errors-and-warnings/NU3017.md +++ b/docs/reference/errors-and-warnings/NU3017.md @@ -41,7 +41,5 @@ The certificate used to sign the package has a validity in the future, but is no Please request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package) with a signing certificate which is currently valid. -## Note - -When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3017 is raised as a warning. -When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3017 is elevated from a warning to an error. \ No newline at end of file +> [!Note] +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3017 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3017 is elevated from a warning to an error. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3018.md b/docs/reference/errors-and-warnings/NU3018.md index 4ab3941ad..d122caa32 100644 --- a/docs/reference/errors-and-warnings/NU3018.md +++ b/docs/reference/errors-and-warnings/NU3018.md @@ -24,7 +24,5 @@ NuGet client failed to verify the certificate chain for the signing certificate Please ensure that the package signature has a valid certificate chain. You can verify the package signature by running the `nuget verify -signatures` command on the package. If the problem persists, then please file an issue at [NuGet/Home](https://github.com/NuGet/Home/issues) along with the package that generated this problem. -### Note - -When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3018 is raised as a warning. -When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3018 is elevated from a warning to an error in most cases. \ No newline at end of file +> [!Note] +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3018 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3018 is elevated from a warning to an error in most cases. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3019.md b/docs/reference/errors-and-warnings/NU3019.md index 4a64d54c7..ecefcee1e 100644 --- a/docs/reference/errors-and-warnings/NU3019.md +++ b/docs/reference/errors-and-warnings/NU3019.md @@ -41,6 +41,5 @@ The timestamp on the package signature has changed since it was generated by the Please request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package). If the problem persists, request the package author to contact the Timestamp Authority to discover the source of the problem. -## Note - -When running `nuget verify -signatures` command, NU3019 is raised as an error. Otherwise, NU3019 is raised as a warning. +> [!Note] +> When running `nuget verify -signatures` command, NU3019 is raised as an error. Otherwise, NU3019 is raised as a warning. diff --git a/docs/reference/errors-and-warnings/NU3020.md b/docs/reference/errors-and-warnings/NU3020.md index 6831830b6..2ad7bafe1 100644 --- a/docs/reference/errors-and-warnings/NU3020.md +++ b/docs/reference/errors-and-warnings/NU3020.md @@ -41,6 +41,5 @@ The timestamp on the package signature does not contain a signing certificate. Please request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package). If the problem persists, request the package author to contact the Timestamp Authority to discover the source of the problem. -## Note - -When running `nuget verify -signatures` command, NU3020 is raised as an error. Otherwise, NU3020 is raised as a warning. \ No newline at end of file +> [!Note] +> When running `nuget verify -signatures` command, NU3020 is raised as an error. Otherwise, NU3020 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3021.md b/docs/reference/errors-and-warnings/NU3021.md index 27f2189b6..52beb7730 100644 --- a/docs/reference/errors-and-warnings/NU3021.md +++ b/docs/reference/errors-and-warnings/NU3021.md @@ -41,6 +41,5 @@ The `SignedCms` object inside the timestamp on the package signature could not v Please try to re-sign and timestamp the package. If the problem persists, contact the Timestamp Authority to discover the source of the problem. -## Note - -When running `nuget verify -signatures` command, NU3021 is raised as an error. Otherwise, NU3021 is raised as a warning. \ No newline at end of file +> [!Note] +> When running `nuget verify -signatures` command, NU3021 is raised as an error. Otherwise, NU3021 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3022.md b/docs/reference/errors-and-warnings/NU3022.md index c8c666205..1cda2319c 100644 --- a/docs/reference/errors-and-warnings/NU3022.md +++ b/docs/reference/errors-and-warnings/NU3022.md @@ -47,6 +47,5 @@ Please request the package author to re-sign the package using the `nuget sign` * `sha512WithRSAEncryption` -## Note - -When running `nuget verify -signatures` command, NU3022 is raised as an error. Otherwise, NU3022 is raised as a warning. \ No newline at end of file +> [!Note] +> When running `nuget verify -signatures` command, NU3022 is raised as an error. Otherwise, NU3022 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3023.md b/docs/reference/errors-and-warnings/NU3023.md index 89c9dfd2a..8bbd71bed 100644 --- a/docs/reference/errors-and-warnings/NU3023.md +++ b/docs/reference/errors-and-warnings/NU3023.md @@ -41,6 +41,5 @@ The certificate used to timestamp the package signature does not meet a minimum Please ensure that the package signature was timestamped using a signing certificate with an RSA public key of length >= 2048 bits. -## Note - -When running `nuget verify -signatures` command, NU3023 is raised as an error. Otherwise, NU3023 is raised as a warning. \ No newline at end of file +> [!Note] +> When running `nuget verify -signatures` command, NU3023 is raised as an error. Otherwise, NU3023 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3024.md b/docs/reference/errors-and-warnings/NU3024.md index f00ea104f..f3477191e 100644 --- a/docs/reference/errors-and-warnings/NU3024.md +++ b/docs/reference/errors-and-warnings/NU3024.md @@ -47,6 +47,5 @@ Request the package author to re-sign the package using the `nuget sign` command * `SHA-2-512` -## Note - -When running `nuget verify -signatures` command, NU3024 is raised as an error. Otherwise, NU3024 is raised as a warning. \ No newline at end of file +> [!Note] +> When running `nuget verify -signatures` command, NU3024 is raised as an error. Otherwise, NU3024 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3025.md b/docs/reference/errors-and-warnings/NU3025.md index 183414c03..17e152cce 100644 --- a/docs/reference/errors-and-warnings/NU3025.md +++ b/docs/reference/errors-and-warnings/NU3025.md @@ -41,6 +41,5 @@ The certificate used to sign the package has a validity in the future, but is no Please request the package author to re-sign the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package). If the problem persists, request the package author to contact the Timestamp Authority to discover the source of the problem. -## Note - -When running `nuget verify -signatures` command, NU3025 is raised as an error. Otherwise, NU3025 is raised as a warning. \ No newline at end of file +> [!Note] +> When running `nuget verify -signatures` command, NU3025 is raised as an error. Otherwise, NU3025 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3028.md b/docs/reference/errors-and-warnings/NU3028.md index c6fc53e24..69cfaeb02 100644 --- a/docs/reference/errors-and-warnings/NU3028.md +++ b/docs/reference/errors-and-warnings/NU3028.md @@ -33,7 +33,5 @@ When the revocation check mode is set to `offline`, the warning will be downgrad
    The author primary signature's timestamp found a chain building issue: The revocation function was unable to check revocation because the certificate is not available in the cached certificate revocation list and NUGET_CERT_REVOCATION_MODE environment variable has been set to offline. For more information, visit https://aka.ms/certificateRevocationMode.
    -### Note - -NU3028 is raised as an error in most cases. -When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3028 is raised as a warning in some cases. +> [!Note] +> NU3028 is raised as an error in most cases. When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3028 is raised as a warning in some cases. diff --git a/docs/reference/errors-and-warnings/NU3030.md b/docs/reference/errors-and-warnings/NU3030.md index cd3b976a2..6ef9cf528 100644 --- a/docs/reference/errors-and-warnings/NU3030.md +++ b/docs/reference/errors-and-warnings/NU3030.md @@ -27,6 +27,5 @@ Request the package author to re-sign the package using the `nuget sign` command * `SHA-2-512` -### Note - -When running `nuget verify -signatures` command, NU3030 is raised as an error. Otherwise, NU3030 is raised as a warning. \ No newline at end of file +> [!Note] +> When running `nuget verify -signatures` command, NU3030 is raised as an error. Otherwise, NU3030 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3036.md b/docs/reference/errors-and-warnings/NU3036.md index fea028e54..96034119c 100644 --- a/docs/reference/errors-and-warnings/NU3036.md +++ b/docs/reference/errors-and-warnings/NU3036.md @@ -41,6 +41,5 @@ The certificate used to timestamp the package signature is invalid as the timest Request the package author to re-sign and timestamp the package using the `nuget sign` command as described in [NuGet docs](https://docs.microsoft.com/en-us/nuget/create-packages/sign-a-package). If the problem persists, request the package author to contact the timestamp authority to discover the source of the problem. -## Note - -When running `nuget verify -signatures` command, NU3036 is raised as an error. Otherwise, NU3036 is raised as a warning. \ No newline at end of file +> [!Note] +> When running `nuget verify -signatures` command, NU3036 is raised as an error. Otherwise, NU3036 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3037.md b/docs/reference/errors-and-warnings/NU3037.md index 47201b039..a903f2b2e 100644 --- a/docs/reference/errors-and-warnings/NU3037.md +++ b/docs/reference/errors-and-warnings/NU3037.md @@ -24,7 +24,5 @@ To ensure long-term validity --- even beyond the signing certificate’s validit * Resign the package with a non-expired certificate. Optionally, add a trusted timestamp at the time of signing to ensure long-term validity of the signature. * For accept mode only, ignore the warning. -###Note - -When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), a package with an expired package signature is treated as an unsigned package and installed anyway. NU3037 is raised as a warning. -When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3037 is elevated from a warning to an error. \ No newline at end of file +> [!Note] +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), a package with an expired package signature is treated as an unsigned package and installed anyway. NU3037 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3037 is elevated from a warning to an error. \ No newline at end of file From cd02a8f13ce8b6da9b57a1d2884a7d2ea2807368 Mon Sep 17 00:00:00 2001 From: Heng Liu Date: Wed, 10 Apr 2019 13:24:29 -0700 Subject: [PATCH 1161/2943] change note msg into 2 lines --- docs/reference/errors-and-warnings/NU3003.md | 3 ++- docs/reference/errors-and-warnings/NU3009.md | 3 ++- docs/reference/errors-and-warnings/NU3010.md | 3 ++- docs/reference/errors-and-warnings/NU3011.md | 3 ++- docs/reference/errors-and-warnings/NU3012.md | 3 ++- docs/reference/errors-and-warnings/NU3013.md | 3 ++- docs/reference/errors-and-warnings/NU3014.md | 3 ++- docs/reference/errors-and-warnings/NU3015.md | 3 ++- docs/reference/errors-and-warnings/NU3016.md | 3 ++- docs/reference/errors-and-warnings/NU3017.md | 3 ++- docs/reference/errors-and-warnings/NU3018.md | 3 ++- docs/reference/errors-and-warnings/NU3028.md | 3 ++- docs/reference/errors-and-warnings/NU3037.md | 3 ++- 13 files changed, 26 insertions(+), 13 deletions(-) diff --git a/docs/reference/errors-and-warnings/NU3003.md b/docs/reference/errors-and-warnings/NU3003.md index 0aad4d060..0f511cc54 100644 --- a/docs/reference/errors-and-warnings/NU3003.md +++ b/docs/reference/errors-and-warnings/NU3003.md @@ -41,5 +41,6 @@ NuGet client tried to verify a package which contains an invalid package signatu Please file an issue at [NuGet/Home](https://github.com/NuGet/Home/issues) along with the package that generated this problem and the platform on which the issue was encountered. > [!Note] -> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3003 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3003 is elevated from a warning to an error. +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3003 is raised as a warning. +> When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3003 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3009.md b/docs/reference/errors-and-warnings/NU3009.md index 6e120e502..73ed8e14e 100644 --- a/docs/reference/errors-and-warnings/NU3009.md +++ b/docs/reference/errors-and-warnings/NU3009.md @@ -25,4 +25,5 @@ Please request the package author to re-sign the package using the `nuget sign` > [!Note] -> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3009 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3009 is elevated from a warning to an error. +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3009 is raised as a warning. +> When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3009 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3010.md b/docs/reference/errors-and-warnings/NU3010.md index 2e9e5826a..415b7ccbb 100644 --- a/docs/reference/errors-and-warnings/NU3010.md +++ b/docs/reference/errors-and-warnings/NU3010.md @@ -25,4 +25,5 @@ Please request the package author to re-sign the package using the `nuget sign` > [!Note] -> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3010 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3010 is elevated from a warning to an error. \ No newline at end of file +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3010 is raised as a warning. +> When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3010 is elevated from a warning to an error. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3011.md b/docs/reference/errors-and-warnings/NU3011.md index 77adaa286..3bbc83895 100644 --- a/docs/reference/errors-and-warnings/NU3011.md +++ b/docs/reference/errors-and-warnings/NU3011.md @@ -25,4 +25,5 @@ Please request the package author to re-sign the package using the `nuget sign` > [!Note] -> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3011 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3011 is elevated from a warning to an error. +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3011 is raised as a warning. +> When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3011 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3012.md b/docs/reference/errors-and-warnings/NU3012.md index 6b538a7d7..978631d45 100644 --- a/docs/reference/errors-and-warnings/NU3012.md +++ b/docs/reference/errors-and-warnings/NU3012.md @@ -42,5 +42,6 @@ Please ensure that the package signature has a valid certificate chain. You can > [!Note] -> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3012 is raised as a warning in most cases. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3012 is elevated from a warning to an error. +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3012 is raised as a warning in most cases. +> When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3012 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3013.md b/docs/reference/errors-and-warnings/NU3013.md index 3f96bd505..9d7987655 100644 --- a/docs/reference/errors-and-warnings/NU3013.md +++ b/docs/reference/errors-and-warnings/NU3013.md @@ -48,5 +48,6 @@ Please ensure that the package was signed using a certificate with one of the fo > [!Note] -> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3013 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3013 is elevated from a warning to an error. +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3013 is raised as a warning. +> When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3013 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3014.md b/docs/reference/errors-and-warnings/NU3014.md index a682c1010..915eac03f 100644 --- a/docs/reference/errors-and-warnings/NU3014.md +++ b/docs/reference/errors-and-warnings/NU3014.md @@ -42,4 +42,5 @@ Please ensure that the package was signed using a signing certificate with an RS > [!Note] -> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3014 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3014 is elevated from a warning to an error. +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3014 is raised as a warning. +> When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3014 is elevated from a warning to an error. diff --git a/docs/reference/errors-and-warnings/NU3015.md b/docs/reference/errors-and-warnings/NU3015.md index f62527abf..19dabf7b9 100644 --- a/docs/reference/errors-and-warnings/NU3015.md +++ b/docs/reference/errors-and-warnings/NU3015.md @@ -42,4 +42,5 @@ Please ensure that the package was signed using a signing certificate that does > [!Note] -> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3015 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3015 is elevated from a warning to an error. \ No newline at end of file +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3015 is raised as a warning. +> When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3015 is elevated from a warning to an error. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3016.md b/docs/reference/errors-and-warnings/NU3016.md index 13063aceb..a0b1f053a 100644 --- a/docs/reference/errors-and-warnings/NU3016.md +++ b/docs/reference/errors-and-warnings/NU3016.md @@ -28,4 +28,5 @@ Please ensure that the package was signed with one of the following hash algori > [!Note] -> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3016 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3016 is elevated from a warning to an error. \ No newline at end of file +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3016 is raised as a warning. +> When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3016 is elevated from a warning to an error. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3017.md b/docs/reference/errors-and-warnings/NU3017.md index 1c3a23262..66d09b529 100644 --- a/docs/reference/errors-and-warnings/NU3017.md +++ b/docs/reference/errors-and-warnings/NU3017.md @@ -42,4 +42,5 @@ Please request the package author to re-sign the package using the `nuget sign` > [!Note] -> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3017 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3017 is elevated from a warning to an error. \ No newline at end of file +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3017 is raised as a warning. +> When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3017 is elevated from a warning to an error. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3018.md b/docs/reference/errors-and-warnings/NU3018.md index d122caa32..68bc84a75 100644 --- a/docs/reference/errors-and-warnings/NU3018.md +++ b/docs/reference/errors-and-warnings/NU3018.md @@ -25,4 +25,5 @@ Please ensure that the package signature has a valid certificate chain. You can > [!Note] -> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3018 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3018 is elevated from a warning to an error in most cases. \ No newline at end of file +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3018 is raised as a warning. +> When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3018 is elevated from a warning to an error in most cases. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3028.md b/docs/reference/errors-and-warnings/NU3028.md index 69cfaeb02..530a0a071 100644 --- a/docs/reference/errors-and-warnings/NU3028.md +++ b/docs/reference/errors-and-warnings/NU3028.md @@ -34,4 +34,5 @@ When the revocation check mode is set to `offline`, the warning will be downgrad
    The author primary signature's timestamp found a chain building issue: The revocation function was unable to check revocation because the certificate is not available in the cached certificate revocation list and NUGET_CERT_REVOCATION_MODE environment variable has been set to offline. For more information, visit https://aka.ms/certificateRevocationMode.
    > [!Note] -> NU3028 is raised as an error in most cases. When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3028 is raised as a warning in some cases. +> NU3028 is raised as an error in most cases. +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), NU3028 is raised as a warning in some cases. diff --git a/docs/reference/errors-and-warnings/NU3037.md b/docs/reference/errors-and-warnings/NU3037.md index a903f2b2e..8d124ba3d 100644 --- a/docs/reference/errors-and-warnings/NU3037.md +++ b/docs/reference/errors-and-warnings/NU3037.md @@ -25,4 +25,5 @@ To ensure long-term validity --- even beyond the signing certificate’s validit * For accept mode only, ignore the warning. > [!Note] -> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), a package with an expired package signature is treated as an unsigned package and installed anyway. NU3037 is raised as a warning. When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3037 is elevated from a warning to an error. \ No newline at end of file +> When NuGet’s [signature validation mode](https://docs.microsoft.com/en-us/nuget/consume-packages/installing-signed-packages#configure-package-signature-requirements) is set to accept (default), a package with an expired package signature is treated as an unsigned package and installed anyway. NU3037 is raised as a warning. +> When NuGet’s signature validation mode is set to require, or when running the `nuget verify -signatures` command, NU3037 is elevated from a warning to an error. \ No newline at end of file From 2cb665563dc3d78ae3a5b6c72d23d74c2116811c Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 10 Apr 2019 15:28:42 -0700 Subject: [PATCH 1162/2943] fixes 1393 fixes https://github.com/NuGet/docs.microsoft.com-nuget/issues/1393 --- docs/reference/nuspec.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/reference/nuspec.md b/docs/reference/nuspec.md index 322ff6e16..dce5bb720 100644 --- a/docs/reference/nuspec.md +++ b/docs/reference/nuspec.md @@ -726,5 +726,4 @@ In this example, the following are installed for specific project targets: - .NET4 -> `System.Web`, `System.Net` - .NET4 Client Profile -> `System.Net` - Silverlight 3 -> `System.Json` -- Silverlight 4 -> `System.Windows.Controls.DomainServices` - WindowsPhone -> `Microsoft.Devices.Sensors` From 654faeddc2d267fa0fc84a380e91584c1e4a18b0 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 10 Apr 2019 15:55:40 -0700 Subject: [PATCH 1163/2943] Update docs/reference/errors-and-warnings/NU1605.md --- docs/reference/errors-and-warnings/NU1605.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/errors-and-warnings/NU1605.md b/docs/reference/errors-and-warnings/NU1605.md index 6b4e11114..7843c1490 100644 --- a/docs/reference/errors-and-warnings/NU1605.md +++ b/docs/reference/errors-and-warnings/NU1605.md @@ -43,4 +43,4 @@ Since, [`nearest-wins`](https://docs.microsoft.com/en-us/nuget/consume-packages/ The mvc project specified a version constraint on a higher version of a package than restore ultimately resolved. That is, because of the [`nearest-wins`](https://docs.microsoft.com/en-us/nuget/consume-packages/dependency-resolution#nearest-wins) rule when resolving packages, a nearer package in the graph may have overridden a distant package. ### Solution -This specific error (with Microsoft.NETCore.App package) is improved my moving your .NET Core SDK to 2.2.100 or later. A related doc page about (Self-contained deployment runtime roll forward)[https://docs.microsoft.com/en-us/dotnet/core/deploying/runtime-patch-selection] may help. Microsoft.NETCore.App is an auto-referenced package that the .NET Core SDK before version 3.0.100 chooses to bring in automatically. \ No newline at end of file +This specific error (with Microsoft.NETCore.App package) is improved by moving your .NET Core SDK to 2.2.100 or later. A related doc page about (Self-contained deployment runtime roll forward)[https://docs.microsoft.com/en-us/dotnet/core/deploying/runtime-patch-selection] may help. Microsoft.NETCore.App is an auto-referenced package that the .NET Core SDK before version 3.0.100 chooses to bring in automatically. From 1c9d4b74aea10d66147af29ceefca852cebe4914 Mon Sep 17 00:00:00 2001 From: Heng Liu Date: Wed, 10 Apr 2019 15:59:19 -0700 Subject: [PATCH 1164/2943] add 'the' --- docs/reference/errors-and-warnings/NU3019.md | 2 +- docs/reference/errors-and-warnings/NU3020.md | 2 +- docs/reference/errors-and-warnings/NU3021.md | 2 +- docs/reference/errors-and-warnings/NU3022.md | 2 +- docs/reference/errors-and-warnings/NU3023.md | 2 +- docs/reference/errors-and-warnings/NU3024.md | 2 +- docs/reference/errors-and-warnings/NU3025.md | 2 +- docs/reference/errors-and-warnings/NU3030.md | 2 +- docs/reference/errors-and-warnings/NU3036.md | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/reference/errors-and-warnings/NU3019.md b/docs/reference/errors-and-warnings/NU3019.md index ecefcee1e..bd30c0a69 100644 --- a/docs/reference/errors-and-warnings/NU3019.md +++ b/docs/reference/errors-and-warnings/NU3019.md @@ -42,4 +42,4 @@ Please request the package author to re-sign the package using the `nuget sign` > [!Note] -> When running `nuget verify -signatures` command, NU3019 is raised as an error. Otherwise, NU3019 is raised as a warning. +> When running the `nuget verify -signatures` command, NU3019 is raised as an error. Otherwise, NU3019 is raised as a warning. diff --git a/docs/reference/errors-and-warnings/NU3020.md b/docs/reference/errors-and-warnings/NU3020.md index 2ad7bafe1..e73df3f9b 100644 --- a/docs/reference/errors-and-warnings/NU3020.md +++ b/docs/reference/errors-and-warnings/NU3020.md @@ -42,4 +42,4 @@ Please request the package author to re-sign the package using the `nuget sign` > [!Note] -> When running `nuget verify -signatures` command, NU3020 is raised as an error. Otherwise, NU3020 is raised as a warning. \ No newline at end of file +> When running the `nuget verify -signatures` command, NU3020 is raised as an error. Otherwise, NU3020 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3021.md b/docs/reference/errors-and-warnings/NU3021.md index 52beb7730..08ed98c34 100644 --- a/docs/reference/errors-and-warnings/NU3021.md +++ b/docs/reference/errors-and-warnings/NU3021.md @@ -42,4 +42,4 @@ Please try to re-sign and timestamp the package. If the problem persists, contac > [!Note] -> When running `nuget verify -signatures` command, NU3021 is raised as an error. Otherwise, NU3021 is raised as a warning. \ No newline at end of file +> When running the `nuget verify -signatures` command, NU3021 is raised as an error. Otherwise, NU3021 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3022.md b/docs/reference/errors-and-warnings/NU3022.md index 1cda2319c..ed38a4297 100644 --- a/docs/reference/errors-and-warnings/NU3022.md +++ b/docs/reference/errors-and-warnings/NU3022.md @@ -48,4 +48,4 @@ Please request the package author to re-sign the package using the `nuget sign` > [!Note] -> When running `nuget verify -signatures` command, NU3022 is raised as an error. Otherwise, NU3022 is raised as a warning. \ No newline at end of file +> When running the `nuget verify -signatures` command, NU3022 is raised as an error. Otherwise, NU3022 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3023.md b/docs/reference/errors-and-warnings/NU3023.md index 8bbd71bed..a68b07867 100644 --- a/docs/reference/errors-and-warnings/NU3023.md +++ b/docs/reference/errors-and-warnings/NU3023.md @@ -42,4 +42,4 @@ Please ensure that the package signature was timestamped using a signing certifi > [!Note] -> When running `nuget verify -signatures` command, NU3023 is raised as an error. Otherwise, NU3023 is raised as a warning. \ No newline at end of file +> When running the `nuget verify -signatures` command, NU3023 is raised as an error. Otherwise, NU3023 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3024.md b/docs/reference/errors-and-warnings/NU3024.md index f3477191e..cb2c11193 100644 --- a/docs/reference/errors-and-warnings/NU3024.md +++ b/docs/reference/errors-and-warnings/NU3024.md @@ -48,4 +48,4 @@ Request the package author to re-sign the package using the `nuget sign` command > [!Note] -> When running `nuget verify -signatures` command, NU3024 is raised as an error. Otherwise, NU3024 is raised as a warning. \ No newline at end of file +> When running the `nuget verify -signatures` command, NU3024 is raised as an error. Otherwise, NU3024 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3025.md b/docs/reference/errors-and-warnings/NU3025.md index 17e152cce..21bf3e3e2 100644 --- a/docs/reference/errors-and-warnings/NU3025.md +++ b/docs/reference/errors-and-warnings/NU3025.md @@ -42,4 +42,4 @@ Please request the package author to re-sign the package using the `nuget sign` > [!Note] -> When running `nuget verify -signatures` command, NU3025 is raised as an error. Otherwise, NU3025 is raised as a warning. \ No newline at end of file +> When running the `nuget verify -signatures` command, NU3025 is raised as an error. Otherwise, NU3025 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3030.md b/docs/reference/errors-and-warnings/NU3030.md index 6ef9cf528..9d75a41da 100644 --- a/docs/reference/errors-and-warnings/NU3030.md +++ b/docs/reference/errors-and-warnings/NU3030.md @@ -28,4 +28,4 @@ Request the package author to re-sign the package using the `nuget sign` command > [!Note] -> When running `nuget verify -signatures` command, NU3030 is raised as an error. Otherwise, NU3030 is raised as a warning. \ No newline at end of file +> When running the `nuget verify -signatures` command, NU3030 is raised as an error. Otherwise, NU3030 is raised as a warning. \ No newline at end of file diff --git a/docs/reference/errors-and-warnings/NU3036.md b/docs/reference/errors-and-warnings/NU3036.md index 96034119c..f9aa7c5d9 100644 --- a/docs/reference/errors-and-warnings/NU3036.md +++ b/docs/reference/errors-and-warnings/NU3036.md @@ -42,4 +42,4 @@ Request the package author to re-sign and timestamp the package using the `nuget > [!Note] -> When running `nuget verify -signatures` command, NU3036 is raised as an error. Otherwise, NU3036 is raised as a warning. \ No newline at end of file +> When running the `nuget verify -signatures` command, NU3036 is raised as an error. Otherwise, NU3036 is raised as a warning. \ No newline at end of file From 2d1a2c01c2f8ba0f6672938dcfb826d73e98887c Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Wed, 10 Apr 2019 17:14:57 -0700 Subject: [PATCH 1165/2943] Apply suggestions from code review --- docs/reference/errors-and-warnings/NU1605.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/reference/errors-and-warnings/NU1605.md b/docs/reference/errors-and-warnings/NU1605.md index 7843c1490..7b2580242 100644 --- a/docs/reference/errors-and-warnings/NU1605.md +++ b/docs/reference/errors-and-warnings/NU1605.md @@ -17,10 +17,10 @@ f1_keywords:
    Detected package downgrade: 'PackageB' from 4.0.0 to 3.5.0. Reference the package directly from the project to select a different version.
    'PackageA' 3.5.0 -> 'PackageB' 3.5.0
    'PackageC' 4.0.0 -> 'PackageD' 4.0.0 -> 'PackageB' 4.0.0
    ### Issue -A dependency package specified a version constraint on a higher version of a package than restore ultimately resolved. That is, because of the [`nearest-wins`](https://docs.microsoft.com/en-us/nuget/consume-packages/dependency-resolution#nearest-wins) rule when resolving packages, a nearer package in the graph may have overridden a distant package. +A dependency package specified a version constraint on a higher version of a package than restore ultimately resolved. That is because of the [nearest-wins](https://docs.microsoft.com/en-us/nuget/consume-packages/dependency-resolution#nearest-wins) rule - when resolving packages, the version of the nearer package in the graph will override that of the distant package with the same ID. ### Solution -To the project exhibiting the restore error, add a package reference to the higher version of the package +To the project exhibiting the restore error, add a package reference to the higher version of the package. In the example above, you would add a package reference to Package B version 4.0.0: @@ -30,7 +30,7 @@ In the example above, you would add a package reference to Package B version 4.0 'PackageB' 4.0.0 -Since, [`nearest-wins`](https://docs.microsoft.com/en-us/nuget/consume-packages/dependency-resolution#nearest-wins), the direct package reference to PackageB 4.0.0 (made at level 1), will take precedence over PackageB (made at level 2). +Since, [nearest-wins](https://docs.microsoft.com/en-us/nuget/consume-packages/dependency-resolution#nearest-wins), the direct package reference to PackageB v4.0.0, will take precedence over the transitive reference to PackageB v3.5.0. ## Example 2 @@ -40,7 +40,7 @@ Since, [`nearest-wins`](https://docs.microsoft.com/en-us/nuget/consume-packages/ ### Issue -The mvc project specified a version constraint on a higher version of a package than restore ultimately resolved. That is, because of the [`nearest-wins`](https://docs.microsoft.com/en-us/nuget/consume-packages/dependency-resolution#nearest-wins) rule when resolving packages, a nearer package in the graph may have overridden a distant package. +The mvc project specified a version constraint on a higher version of a package than restore ultimately resolved. That is because of the [nearest-wins](https://docs.microsoft.com/en-us/nuget/consume-packages/dependency-resolution#nearest-wins) rule - when resolving packages, the version of the nearer package in the graph will override that of the distant package with the same ID. ### Solution -This specific error (with Microsoft.NETCore.App package) is improved by moving your .NET Core SDK to 2.2.100 or later. A related doc page about (Self-contained deployment runtime roll forward)[https://docs.microsoft.com/en-us/dotnet/core/deploying/runtime-patch-selection] may help. Microsoft.NETCore.App is an auto-referenced package that the .NET Core SDK before version 3.0.100 chooses to bring in automatically. +This specific error (with Microsoft.NETCore.App package) is improved my moving your .NET Core SDK to 2.2.100 or later. Microsoft.NETCore.App is an auto-referenced package that the .NET Core SDK before version 3.0.100 chooses to bring in automatically. Also see (Self-contained deployment runtime roll forward)[https://docs.microsoft.com/en-us/dotnet/core/deploying/runtime-patch-selection]. From 0c77da89a413bd620aefb23b426e797963cf42e3 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Thu, 11 Apr 2019 18:54:58 -0700 Subject: [PATCH 1166/2943] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b6b44c6cc..087489c93 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ The NuGet documentation contained in this repository is hosted on docs.microsoft.com/nuget. This repository was migrated from the former NuGetDocs repository, https://github.com/NuGet/NuGetDocs, which is no longer in active use. -Contributions to this docset are welcome. Please submit PRs to the *live* branch, which is what's published to the live docs site. (The master branch is used for staging larger series of changes.) +Contributions to this docset are welcome. Please submit PRs to the *master* branch. (The master branch is used for staging changes which is periodically merged into the *live* branch which is what's published to the live docs site.) NuGet follows the [.NET Foundation Contributors Code of Conduct](https://github.com/dotnet/home/blob/master/guidance/be-nice.md). Please take a few minutes to review it. From 5c83e3cc40c4e0af72b7ad9a0a9aee481b476296 Mon Sep 17 00:00:00 2001 From: xp44mm <34696643@qq.com> Date: Fri, 12 Apr 2019 10:27:04 +0800 Subject: [PATCH 1167/2943] Update ps-ref-update-package.md --- docs/tools/ps-ref-update-package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tools/ps-ref-update-package.md b/docs/tools/ps-ref-update-package.md index d980e628b..3577c7882 100644 --- a/docs/tools/ps-ref-update-package.md +++ b/docs/tools/ps-ref-update-package.md @@ -41,7 +41,7 @@ Update-Package Microsoft.AspNet.MVC -Version 5.0.0. | Reinstall | Resintalls packages using their currently installed versions. See [Reinstalling and updating packages](../consume-packages/reinstalling-and-updating-packages.md). | | FileConflictAction | The action to take when asked to overwrite or ignore existing files referenced by the project. Possible values are *Overwrite, Ignore, None, OverwriteAll*, and *IgnoreAll* (3.0+). | | DependencyVersion | The version of the dependency packages to use, which can be one of the following:
    • *Lowest* (default): the lowest version
    • *HighestPatch*: the version with the lowest major, lowest minor, highest patch
    • *HighestMinor*: the version with the lowest major, highest minor, highest patch
    • *Highest* (default for Update-Package with no parameters): the highest version
    You can set the default value using the [`dependencyVersion`](../reference/nuget-config-file.md#config-section) setting in the `Nuget.Config` file. | -| ToHighestPatch | Constrains upgrades to only versions with the same Minor version as the currently installed package. | +| ToHighestPatch | equivalent to -Safe. | | ToHighestMinor | Constrains upgrades to only versions with the same Major version as the currently installed package. | | WhatIf | Shows what would happen when running the command without actually performing the update. | From 1d87e1588df270d3ba6671c4f34af74b0d889203 Mon Sep 17 00:00:00 2001 From: Mark Adamson Date: Wed, 17 Apr 2019 16:46:36 +0100 Subject: [PATCH 1168/2943] Fix typo on nuget page --- docs/tools/cli-ref-restore.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tools/cli-ref-restore.md b/docs/tools/cli-ref-restore.md index 311fa4eb8..464db8d0f 100644 --- a/docs/tools/cli-ref-restore.md +++ b/docs/tools/cli-ref-restore.md @@ -66,7 +66,7 @@ The restore command performs the following steps: 2. Determine the packages folder using the following priority order (NuGet gives an error if none of these folders are found): - The folder specified with `-PackagesDirectory`. - - The `repositoryPath` vale in `Nuget.Config` + - The `repositoryPath` value in `Nuget.Config` - The folder specified with `-SolutionDirectory` - `$(SolutionDir)\packages` From 903a2dca8d1380feec6e6d4356201820be6b376f Mon Sep 17 00:00:00 2001 From: Andy Zivkovic Date: Wed, 17 Apr 2019 10:14:07 -0700 Subject: [PATCH 1169/2943] Change NU5125 so customers know how to resolve the warning --- docs/reference/errors-and-warnings/NU5125.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/reference/errors-and-warnings/NU5125.md b/docs/reference/errors-and-warnings/NU5125.md index f993c6eea..d6a21b797 100644 --- a/docs/reference/errors-and-warnings/NU5125.md +++ b/docs/reference/errors-and-warnings/NU5125.md @@ -14,8 +14,10 @@ f1_keywords: ### Issue -The licenseUrl element is being replaced by the license element. The deprecation can be found [here](https://github.com/NuGet/Home/issues/4628). +The `licenseUrl` element is being replaced by the `license` element. ### Solution -Use the license element. \ No newline at end of file +If you create your NuGet package using `dotnet pack` or `msbuild -t:pack`, follow the documentation on [packaging a license expression or a license file using MSBuild targets](../msbuild-targets.md#packing-a-license-expression-or-a-license-file). + +If you use a `.nuspec` file, use the [`license` element](../nuspec.md#license). From f2ef6f84d160709c9e6c4e5788ad5b8634d642a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Wed, 17 Apr 2019 14:10:42 -0700 Subject: [PATCH 1170/2943] Improve `dotnet` command reference --- docs/tools/dotnet-Commands.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/tools/dotnet-Commands.md b/docs/tools/dotnet-Commands.md index 250e3411c..352287943 100644 --- a/docs/tools/dotnet-Commands.md +++ b/docs/tools/dotnet-Commands.md @@ -9,7 +9,7 @@ ms.topic: conceptual # dotnet commands -The `dotnet` command-line interface, which runs on Windows, Mac OS X, and Linux, provides a number of essential nuget.exe commands as listed below. If dotnet satisfies your needs, it's not necessary to use `nuget.exe`. +The `dotnet` command-line interface provides several NuGet commands and supports Windows, Linux, and macOS. For complete information on `dotnet`, see [.NET Core command-line interface (CLI) tools](/dotnet/core/tools/?tabs=netcore2x). @@ -19,9 +19,10 @@ For complete information on `dotnet`, see [.NET Core command-line interface (CLI - [**dotnet remove package**](/dotnet/core/tools/dotnet-remove-package): Removes a package reference from the project file. - [**dotnet restore**](/dotnet/core/tools/dotnet-restore?tabs=netcore2x): Restores the dependencies and tools of a project. As of NuGet 4.0, this runs the same code as `nuget restore`. - [**dotnet nuget locals**](/dotnet/core/tools/dotnet-nuget-locals): Lists locations of the *global-packages*, *http-cache*, and *temp* folders and clears the contents of those folders. +- [**dotnet new nugetconfig**](/dotnet/core/tools/dotnet-new): Creates a [`nuget.config`](https://docs.microsoft.com/en-us/nuget/reference/nuget-config-file) file to configure NuGet's behavior. ## Package creation -- [**dotnet pack**](/dotnet/core/tools/dotnet-pack?tabs=netcore2x): Packs the code into a NuGet package. As of NuGet 4.0, this runs the same code as `nuget pack`. -- [**dotnet nuget push**](/dotnet/core/tools/dotnet-nuget-push): Pushes a package to a server and publishes it, applicable to nuget.org, Visual Studio Team Services, and third-party NuGet servers. -- [**dotnet nuget delete**](/dotnet/core/tools/dotnet-nuget-delete): Deletes or unlists a package from a host, applicable to nuget.org, Visual Studio Team Services, and third-party NuGet servers. +- [**dotnet pack**](/dotnet/core/tools/dotnet-pack?tabs=netcore2x): Packs the code into a NuGet package. +- [**dotnet nuget push**](/dotnet/core/tools/dotnet-nuget-push): Pushes a package to a server and publishes it, applicable to nuget.org, Azure Artifacts, and third-party NuGet servers. +- [**dotnet nuget delete**](/dotnet/core/tools/dotnet-nuget-delete): Deletes or unlists a package from a host, applicable to nuget.org, Azure Artifacts, and third-party NuGet servers. From 24f7fda469123c315bd04a289c657bb6b8af6485 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Wed, 17 Apr 2019 14:43:16 -0700 Subject: [PATCH 1171/2943] Update --- docs/tools/dotnet-Commands.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/tools/dotnet-Commands.md b/docs/tools/dotnet-Commands.md index 352287943..6e22c76fb 100644 --- a/docs/tools/dotnet-Commands.md +++ b/docs/tools/dotnet-Commands.md @@ -24,5 +24,5 @@ For complete information on `dotnet`, see [.NET Core command-line interface (CLI ## Package creation - [**dotnet pack**](/dotnet/core/tools/dotnet-pack?tabs=netcore2x): Packs the code into a NuGet package. -- [**dotnet nuget push**](/dotnet/core/tools/dotnet-nuget-push): Pushes a package to a server and publishes it, applicable to nuget.org, Azure Artifacts, and third-party NuGet servers. -- [**dotnet nuget delete**](/dotnet/core/tools/dotnet-nuget-delete): Deletes or unlists a package from a host, applicable to nuget.org, Azure Artifacts, and third-party NuGet servers. +- [**dotnet nuget push**](/dotnet/core/tools/dotnet-nuget-push): Publishes a package to a NuGet server. Applicable to nuget.org, Azure Artifacts, and [third-party NuGet servers](https://docs.microsoft.com/en-us/nuget/hosting-packages/overview). +- [**dotnet nuget delete**](/dotnet/core/tools/dotnet-nuget-delete): Deletes or unlists a package from a NuGet server. Applicable to nuget.org, Azure Artifacts, and [third-party NuGet servers](https://docs.microsoft.com/en-us/nuget/hosting-packages/overview). From 103ab471f7867f22f00dae5ca41b2e098e0d13b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Wed, 17 Apr 2019 15:53:26 -0700 Subject: [PATCH 1172/2943] Clarify NuGet SDK vs NuGet API --- docs/reference/NuGet-Client-SDK.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/reference/NuGet-Client-SDK.md b/docs/reference/NuGet-Client-SDK.md index f0b961359..c0623f6c4 100644 --- a/docs/reference/NuGet-Client-SDK.md +++ b/docs/reference/NuGet-Client-SDK.md @@ -9,13 +9,13 @@ ms.topic: conceptual # NuGet Client SDK -> [!Note] -> Not to be confused with the [NuGet *Web* API](https://docs.microsoft.com/en-us/nuget/api/overview) - -The *NuGet Client SDK* refers to a group of .NET libraries centered around [NuGet.Commands](https://www.nuget.org/packages/NuGet.Commands), [Nuget.Packaging](https://www.nuget.org/packages/NuGet.Packaging), and [NuGet.Protocol](https://www.nuget.org/packages/NuGet.Protocol). These packages replace the earlier [NuGet.Core](https://www.nuget.org/packages/NuGet.Core/) library. +The *NuGet Client SDK* refers to a group of NuGet packages centered around [NuGet.Commands](https://www.nuget.org/packages/NuGet.Commands), [NuGet.Packaging](https://www.nuget.org/packages/NuGet.Packaging), and [NuGet.Protocol](https://www.nuget.org/packages/NuGet.Protocol). These packages replace the earlier [NuGet.Core](https://www.nuget.org/packages/NuGet.Core/) library. We are working on having a stable surface area that we can document soon. +> [!Note] +> For documentation on the NuGet protocol, please refer to the [NuGet Server API](https://docs.microsoft.com/en-us/nuget/api/overview) + ## Source code The source code is published on GitHub in the project [NuGet/NuGet.Client](https://github.com/NuGet/NuGet.Client). From cdbf9edf5c5fd2d9075d6a96801b319881908b03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Wed, 17 Apr 2019 15:55:52 -0700 Subject: [PATCH 1173/2943] Punctuation --- docs/reference/NuGet-Client-SDK.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/NuGet-Client-SDK.md b/docs/reference/NuGet-Client-SDK.md index c0623f6c4..e7cee1222 100644 --- a/docs/reference/NuGet-Client-SDK.md +++ b/docs/reference/NuGet-Client-SDK.md @@ -14,7 +14,7 @@ The *NuGet Client SDK* refers to a group of NuGet packages centered around [NuGe We are working on having a stable surface area that we can document soon. > [!Note] -> For documentation on the NuGet protocol, please refer to the [NuGet Server API](https://docs.microsoft.com/en-us/nuget/api/overview) +> For documentation on the NuGet protocol, please refer to the [NuGet Server API](https://docs.microsoft.com/en-us/nuget/api/overview). ## Source code From 621a44f3ad164a559da285211a2140cdb842c0af Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Thu, 18 Apr 2019 11:04:36 -0700 Subject: [PATCH 1174/2943] Improve the MSBuild targets documentation (#1395) * document msbuild properties and environment variables --- docs/reference/msbuild-targets.md | 26 +++++++++++++++++++-- docs/tools/cli-ref-environment-variables.md | 6 ++++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index b3067ae5e..e2e4e85e5 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -317,7 +317,7 @@ An example: 1. Read all project to project references 1. Read the project properties to find the intermediate folder and target frameworks -1. Pass msbuild data to NuGet.Build.Tasks.dll +1. Pass MSBuild data to NuGet.Build.Tasks.dll 1. Run restore 1. Download packages 1. Write assets file, targets, and props @@ -336,9 +336,14 @@ Additional restore settings may come from MSBuild properties in the project file | RestoreConfigFile | Path to a `Nuget.Config` file to apply. | | RestoreNoCache | If true, avoids using cached packages. See [Managing the global packages and cache folders](../consume-packages/managing-the-global-packages-and-cache-folders.md). | | RestoreIgnoreFailedSources | If true, ignores failing or missing package sources. | +| RestoreFallbackFolders | Fallback folders, used in the same way the user packages folder is used. | +| RestoreAdditionalProjectSources | Additional sources to use during restore. | +| RestoreAdditionalProjectFallbackFolders | Additional fallback folders to use during restore. | +| RestoreAdditionalProjectFallbackFoldersExcludes | Excludes fallback folders specified in `RestoreAdditionalProjectFallbackFolders` | | RestoreTaskAssemblyFile | Path to `NuGet.Build.Tasks.dll`. | | RestoreGraphProjectInput | Semicolon-delimited list of projects to restore, which should contain absolute paths. | -| RestoreOutputPath | Output folder, defaulting to the `obj` folder. | +| RestoreUseSkipNonexistentTargets | When the projects are collected via MSBuild it determines whether they are collected using the `SkipNonexistentTargets` optimization. When not set, defaults to `true`. The consequence is a fail-fast behavior when a project's targets cannot be imported. | +| MSBuildProjectExtensionsPath | Output folder, defaulting to `BaseIntermediateOutputPath` and the `obj` folder. | #### Examples @@ -366,6 +371,23 @@ Restore creates the following files in the build `obj` folder: | `{projectName}.projectFileExtension.nuget.g.props` | References to MSBuild props contained in packages | | `{projectName}.projectFileExtension.nuget.g.targets` | References to MSBuild targets contained in packages | +### Restoring and building with one MSBuild command + +Due to the fact that NuGet can restore packages that bring down MSBuild targets and props, the restore and build evaluations are run with different global properties. +This means that the following will have an unpredictable and often incorrect behavior. + +```cli +msbuild -t:restore,build +``` + + Instead the recommended approach is: + +```cli +msbuild -t:build -restore +``` + +The same logic applies to other targets similar to `build`. + ### PackageTargetFallback The `PackageTargetFallback` element allows you to specify a set of compatible targets to be used when restoring packages. It's designed to allow packages that use a dotnet [TxM](../reference/target-frameworks.md) to work with compatible packages that don't declare a dotnet TxM. That is, if your project uses the dotnet TxM, then all the packages it depends on must also have a dotnet TxM, unless you add the `` to your project in order to allow non-dotnet platforms to be compatible with dotnet. diff --git a/docs/tools/cli-ref-environment-variables.md b/docs/tools/cli-ref-environment-variables.md index f1ed6dd04..098eafb1b 100644 --- a/docs/tools/cli-ref-environment-variables.md +++ b/docs/tools/cli-ref-environment-variables.md @@ -13,6 +13,9 @@ The behavior of the nuget.exe CLI can be configured through a number of environm In general, options specified directly on the command line or in NuGet configuration files have precedence, but there are a few exceptions such as *FORCE_NUGET_EXE_INTERACTIVE*. If you find that nuget.exe behaves differently between different computers, an environment variable could be the cause. For example, Azure Web Apps Kudu (used during deployment) has *NUGET_XMLDOC_MODE* set to *skip* to speed up package restore performance and save disk space. +The NuGet CLI uses MSBuild to read the project files. All environment variables are available as [properties](/visualstudio/msbuild/msbuild-command-line-reference) during the MSBuild evaluation. +The list of properties documented in [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md#restore-properties) can also be set as environment variables. + | Variable | Description | Remarks | | --- | --- | --- | | http_proxy | Http proxy used for NuGet HTTP operations. | This would be specified as `http://:@proxy.com`. | @@ -29,4 +32,5 @@ In general, options specified directly on the command line or in NuGet configura | NUGET_RESTORE_MSBUILD_VERBOSITY | Sets the MSBuild log verbosity. | Default is *quiet* ("/v:q"). Possible values *q[uiet]*, *m[inimal]*, *n[ormal]*, *d[etailed]*, and *diag[nostic]*. | | NUGET_SHOW_STACK | Determines whether the full exception (including stack trace) should be displayed to the user. | Specified as *true* or *false* (default). | | 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 pefromed when a signed package is installed or restored. When not set, defaults to `online`.| Possible values *online* (default), *offline*. Related to [NU3028](../reference/errors-and-warnings/NU3028.md) | +| 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](../reference/errors-and-warnings/NU3028.md) | + From 2138aea4589896b6225d00bab6c453e29f8d9d1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Fri, 19 Apr 2019 08:26:25 -0700 Subject: [PATCH 1175/2943] Address feedback --- docs/reference/NuGet-Client-SDK.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/NuGet-Client-SDK.md b/docs/reference/NuGet-Client-SDK.md index e7cee1222..8291dedfc 100644 --- a/docs/reference/NuGet-Client-SDK.md +++ b/docs/reference/NuGet-Client-SDK.md @@ -14,7 +14,7 @@ The *NuGet Client SDK* refers to a group of NuGet packages centered around [NuGe We are working on having a stable surface area that we can document soon. > [!Note] -> For documentation on the NuGet protocol, please refer to the [NuGet Server API](https://docs.microsoft.com/en-us/nuget/api/overview). +> For documentation on the NuGet server protocol, please refer to the [NuGet Server API](/nuget/api/overview). ## Source code From 9705e28b2493093c918a56f8f4cfbe2859114a19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Fri, 19 Apr 2019 08:27:41 -0700 Subject: [PATCH 1176/2943] Make link relative --- docs/reference/NuGet-Client-SDK.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/NuGet-Client-SDK.md b/docs/reference/NuGet-Client-SDK.md index 8291dedfc..64291cd92 100644 --- a/docs/reference/NuGet-Client-SDK.md +++ b/docs/reference/NuGet-Client-SDK.md @@ -14,7 +14,7 @@ The *NuGet Client SDK* refers to a group of NuGet packages centered around [NuGe We are working on having a stable surface area that we can document soon. > [!Note] -> For documentation on the NuGet server protocol, please refer to the [NuGet Server API](/nuget/api/overview). +> For documentation on the NuGet server protocol, please refer to the [NuGet Server API](~/nuget/api/overview). ## Source code From 576995035d33d839eb8649e219e5f2563106290b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Fri, 19 Apr 2019 08:38:57 -0700 Subject: [PATCH 1177/2943] Fix --- docs/reference/NuGet-Client-SDK.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/NuGet-Client-SDK.md b/docs/reference/NuGet-Client-SDK.md index 64291cd92..fd10fd5a2 100644 --- a/docs/reference/NuGet-Client-SDK.md +++ b/docs/reference/NuGet-Client-SDK.md @@ -14,7 +14,7 @@ The *NuGet Client SDK* refers to a group of NuGet packages centered around [NuGe We are working on having a stable surface area that we can document soon. > [!Note] -> For documentation on the NuGet server protocol, please refer to the [NuGet Server API](~/nuget/api/overview). +> For documentation on the NuGet server protocol, please refer to the [NuGet Server API](~/api/overview). ## Source code From 3aaf6cd7ccb767d8ba196b5ffb03ba5d0e723495 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Fri, 19 Apr 2019 08:53:41 -0700 Subject: [PATCH 1178/2943] :( --- docs/reference/NuGet-Client-SDK.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/NuGet-Client-SDK.md b/docs/reference/NuGet-Client-SDK.md index fd10fd5a2..8291dedfc 100644 --- a/docs/reference/NuGet-Client-SDK.md +++ b/docs/reference/NuGet-Client-SDK.md @@ -14,7 +14,7 @@ The *NuGet Client SDK* refers to a group of NuGet packages centered around [NuGe We are working on having a stable surface area that we can document soon. > [!Note] -> For documentation on the NuGet server protocol, please refer to the [NuGet Server API](~/api/overview). +> For documentation on the NuGet server protocol, please refer to the [NuGet Server API](/nuget/api/overview). ## Source code From 1243a9a40275fc73a3f6dba3d6ee02c60625e69d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Fri, 19 Apr 2019 08:55:12 -0700 Subject: [PATCH 1179/2943] Fix --- docs/tools/dotnet-Commands.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/tools/dotnet-Commands.md b/docs/tools/dotnet-Commands.md index 6e22c76fb..1cabefb67 100644 --- a/docs/tools/dotnet-Commands.md +++ b/docs/tools/dotnet-Commands.md @@ -24,5 +24,5 @@ For complete information on `dotnet`, see [.NET Core command-line interface (CLI ## Package creation - [**dotnet pack**](/dotnet/core/tools/dotnet-pack?tabs=netcore2x): Packs the code into a NuGet package. -- [**dotnet nuget push**](/dotnet/core/tools/dotnet-nuget-push): Publishes a package to a NuGet server. Applicable to nuget.org, Azure Artifacts, and [third-party NuGet servers](https://docs.microsoft.com/en-us/nuget/hosting-packages/overview). -- [**dotnet nuget delete**](/dotnet/core/tools/dotnet-nuget-delete): Deletes or unlists a package from a NuGet server. Applicable to nuget.org, Azure Artifacts, and [third-party NuGet servers](https://docs.microsoft.com/en-us/nuget/hosting-packages/overview). +- [**dotnet nuget push**](/dotnet/core/tools/dotnet-nuget-push): Publishes a package to a NuGet server. Applicable to nuget.org, Azure Artifacts, and [third-party NuGet servers](/nuget/hosting-packages/overview). +- [**dotnet nuget delete**](/dotnet/core/tools/dotnet-nuget-delete): Deletes or unlists a package from a NuGet server. Applicable to nuget.org, Azure Artifacts, and [third-party NuGet servers](/nuget/hosting-packages/overview). From 165e6cb1ecf01abaa630a350ae8b74d64f52e6fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Fri, 19 Apr 2019 09:14:47 -0700 Subject: [PATCH 1180/2943] :( --- docs/reference/NuGet-Client-SDK.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/NuGet-Client-SDK.md b/docs/reference/NuGet-Client-SDK.md index 8291dedfc..bd38b1513 100644 --- a/docs/reference/NuGet-Client-SDK.md +++ b/docs/reference/NuGet-Client-SDK.md @@ -14,7 +14,7 @@ The *NuGet Client SDK* refers to a group of NuGet packages centered around [NuGe We are working on having a stable surface area that we can document soon. > [!Note] -> For documentation on the NuGet server protocol, please refer to the [NuGet Server API](/nuget/api/overview). +> For documentation on the NuGet server protocol, please refer to the [NuGet Server API](../api/overview). ## Source code From df367ff87cd5ebcddcd940e2d92d47fa031e836b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Fri, 19 Apr 2019 09:16:03 -0700 Subject: [PATCH 1181/2943] Update dotnet-Commands.md --- docs/tools/dotnet-Commands.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/tools/dotnet-Commands.md b/docs/tools/dotnet-Commands.md index 1cabefb67..e33c4a6a0 100644 --- a/docs/tools/dotnet-Commands.md +++ b/docs/tools/dotnet-Commands.md @@ -24,5 +24,5 @@ For complete information on `dotnet`, see [.NET Core command-line interface (CLI ## Package creation - [**dotnet pack**](/dotnet/core/tools/dotnet-pack?tabs=netcore2x): Packs the code into a NuGet package. -- [**dotnet nuget push**](/dotnet/core/tools/dotnet-nuget-push): Publishes a package to a NuGet server. Applicable to nuget.org, Azure Artifacts, and [third-party NuGet servers](/nuget/hosting-packages/overview). -- [**dotnet nuget delete**](/dotnet/core/tools/dotnet-nuget-delete): Deletes or unlists a package from a NuGet server. Applicable to nuget.org, Azure Artifacts, and [third-party NuGet servers](/nuget/hosting-packages/overview). +- [**dotnet nuget push**](/dotnet/core/tools/dotnet-nuget-push): Publishes a package to a NuGet server. Applicable to nuget.org, Azure Artifacts, and [third-party NuGet servers](../hosting-packages/overview.md). +- [**dotnet nuget delete**](/dotnet/core/tools/dotnet-nuget-delete): Deletes or unlists a package from a NuGet server. Applicable to nuget.org, Azure Artifacts, and [third-party NuGet servers](../hosting-packages/overview.md). From eadac4b2f30ccedaa366dbb0c21fa7e4f6745676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Fri, 19 Apr 2019 09:16:21 -0700 Subject: [PATCH 1182/2943] Update NuGet-Client-SDK.md --- docs/reference/NuGet-Client-SDK.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/NuGet-Client-SDK.md b/docs/reference/NuGet-Client-SDK.md index bd38b1513..58abb2fdb 100644 --- a/docs/reference/NuGet-Client-SDK.md +++ b/docs/reference/NuGet-Client-SDK.md @@ -14,7 +14,7 @@ The *NuGet Client SDK* refers to a group of NuGet packages centered around [NuGe We are working on having a stable surface area that we can document soon. > [!Note] -> For documentation on the NuGet server protocol, please refer to the [NuGet Server API](../api/overview). +> For documentation on the NuGet server protocol, please refer to the [NuGet Server API](~/api/overview.md). ## Source code From c1894da1e3301a7342c1c1996fefbc6ce6d272aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Fri, 19 Apr 2019 11:47:42 -0700 Subject: [PATCH 1183/2943] Update dotnet-Commands.md --- docs/tools/dotnet-Commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tools/dotnet-Commands.md b/docs/tools/dotnet-Commands.md index e33c4a6a0..5d02b68f3 100644 --- a/docs/tools/dotnet-Commands.md +++ b/docs/tools/dotnet-Commands.md @@ -19,7 +19,7 @@ For complete information on `dotnet`, see [.NET Core command-line interface (CLI - [**dotnet remove package**](/dotnet/core/tools/dotnet-remove-package): Removes a package reference from the project file. - [**dotnet restore**](/dotnet/core/tools/dotnet-restore?tabs=netcore2x): Restores the dependencies and tools of a project. As of NuGet 4.0, this runs the same code as `nuget restore`. - [**dotnet nuget locals**](/dotnet/core/tools/dotnet-nuget-locals): Lists locations of the *global-packages*, *http-cache*, and *temp* folders and clears the contents of those folders. -- [**dotnet new nugetconfig**](/dotnet/core/tools/dotnet-new): Creates a [`nuget.config`](https://docs.microsoft.com/en-us/nuget/reference/nuget-config-file) file to configure NuGet's behavior. +- [**dotnet new nugetconfig**](/dotnet/core/tools/dotnet-new): Creates a [`nuget.config`](../reference/nuget-config-file) file to configure NuGet's behavior. ## Package creation From fc7f4fc1ea7b63afc3d039784fe1407f17caef8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Fri, 19 Apr 2019 11:47:55 -0700 Subject: [PATCH 1184/2943] Update dotnet-Commands.md --- docs/tools/dotnet-Commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tools/dotnet-Commands.md b/docs/tools/dotnet-Commands.md index 5d02b68f3..7aa625db2 100644 --- a/docs/tools/dotnet-Commands.md +++ b/docs/tools/dotnet-Commands.md @@ -19,7 +19,7 @@ For complete information on `dotnet`, see [.NET Core command-line interface (CLI - [**dotnet remove package**](/dotnet/core/tools/dotnet-remove-package): Removes a package reference from the project file. - [**dotnet restore**](/dotnet/core/tools/dotnet-restore?tabs=netcore2x): Restores the dependencies and tools of a project. As of NuGet 4.0, this runs the same code as `nuget restore`. - [**dotnet nuget locals**](/dotnet/core/tools/dotnet-nuget-locals): Lists locations of the *global-packages*, *http-cache*, and *temp* folders and clears the contents of those folders. -- [**dotnet new nugetconfig**](/dotnet/core/tools/dotnet-new): Creates a [`nuget.config`](../reference/nuget-config-file) file to configure NuGet's behavior. +- [**dotnet new nugetconfig**](/dotnet/core/tools/dotnet-new): Creates a [`nuget.config`](../reference/nuget-config-file.md) file to configure NuGet's behavior. ## Package creation From c76beef38cbbaa88358230e43a86e70bb44a426a Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Tue, 23 Apr 2019 21:57:53 -0700 Subject: [PATCH 1185/2943] Rename buildCrossTargeting to buildMultiTargeting Rename `/buildCrossTargeting` to `/buildMultiTargeting` Addresses #1412 --- docs/create-packages/Creating-a-Package.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Creating-a-Package.md b/docs/create-packages/Creating-a-Package.md index 2d7f56ea6..a2f599774 100644 --- a/docs/create-packages/Creating-a-Package.md +++ b/docs/create-packages/Creating-a-Package.md @@ -352,7 +352,7 @@ Including MSBuild props and targets in a package was [introduced with NuGet 2.5] When NuGet installs a package with `\build` files, it adds MSBuild `` elements in the project file pointing to the `.targets` and `.props` files. (`.props` is added at the top of the project file; `.targets` is added at the bottom.) A separate conditional MSBuild `` element is added for each target framework. -MSBuild `.props` and `.targets` files for cross-framework targeting can be placed in the `\buildCrossTargeting` folder. During package installation, NuGet adds the corresponding `` elements to the project file with the condition, that the target framework is not set (the MSBuild property `$(TargetFramework)` must be empty). +MSBuild `.props` and `.targets` files for cross-framework targeting can be placed in the `\buildMultiTargeting` folder. During package installation, NuGet adds the corresponding `` elements to the project file with the condition, that the target framework is not set (the MSBuild property `$(TargetFramework)` must be empty). With NuGet 3.x, targets are not added to the project but are instead made available through the `project.lock.json`. From 6fb3ec14996a0188bdaa9e1278f80b022fb048f9 Mon Sep 17 00:00:00 2001 From: Sam Rueby Date: Thu, 25 Apr 2019 09:27:22 -0400 Subject: [PATCH 1186/2943] Made contentFiles example clear that it goes inside of metadata section contentFiles is similar to the files section. The files section went outside of metadata. It took several attempts before realizing that contentFiles needs to go inside of metadata. Made the example clearer that contentFiles goes inside of metadata. --- docs/reference/nuspec.md | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/docs/reference/nuspec.md b/docs/reference/nuspec.md index dce5bb720..3515fde87 100644 --- a/docs/reference/nuspec.md +++ b/docs/reference/nuspec.md @@ -624,23 +624,29 @@ Empty folders can use `.` to opt out of providing content for certain combinatio #### Example contentFiles section ```xml - - - - + + + + ... + + + + - - + + - - + + - - + + - - - + + + +
    +
    ``` ## Example nuspec files From acacd67459b9e4a05e24b4bbf938b3a0e9966385 Mon Sep 17 00:00:00 2001 From: Cristina Manu Date: Thu, 25 Apr 2019 13:55:44 -0700 Subject: [PATCH 1187/2943] Increase the Package Push api limit to 350. --- docs/api/rate-limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api/rate-limits.md b/docs/api/rate-limits.md index fad87da06..854f5f127 100644 --- a/docs/api/rate-limits.md +++ b/docs/api/rate-limits.md @@ -50,5 +50,5 @@ The following tables list the rate limits for the NuGet.org API. | API | Limit Type | Limit Value | API usecase | |:---|:---|:---|:--- | -**PUT** `/api/v2/package` | API Key | 250 / hour | Upload a new NuGet package (version) via v2 push endpoint +**PUT** `/api/v2/package` | API Key | 350 / hour | Upload a new NuGet package (version) via v2 push endpoint **DELETE** `/api/v2/package/{id}/{version}` | API Key | 250 / hour | Unlist a NuGet package (version) via v2 endpoint From 45d4ec5d1106f35d3f6e5ad9141b6e2a1354a24a Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Thu, 25 Apr 2019 18:04:17 -0700 Subject: [PATCH 1188/2943] improve NU1201 - NetStandard referencing NetCoreApp improve for the NS2.0 references a NCA2.0 project case based on feedback issue: https://developercommunity.visualstudio.com/content/problem/355202/project-myproject-is-not-compatible-with-netstanda.html --- docs/reference/errors-and-warnings/NU1201.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docs/reference/errors-and-warnings/NU1201.md b/docs/reference/errors-and-warnings/NU1201.md index ea80f817b..6fd890c0b 100644 --- a/docs/reference/errors-and-warnings/NU1201.md +++ b/docs/reference/errors-and-warnings/NU1201.md @@ -12,6 +12,7 @@ f1_keywords: # NuGet Error NU1201 +### Example 1
    Project 'ProjectA' is not compatible with 'TargetFramework'. Project 'ProjectA' supports:
    - 'TargetFrameworkA'
    - 'TargetFrameworkB'
    ### Issue @@ -20,3 +21,22 @@ A dependency project doesn't contain a framework compatible with the current pro ### Solution Change the project's target framework to an equal or lower version than the consuming project. +### Example 2 - NetStandard targetted projects cannot reference NetCoreApp targetted projects +
    Project 'ProjectB' is not compatible with netstandard2.0 (.NETStandard,Version=v2.0). Project 'ProjectB' supports: netcoreapp2.0 (.NETCoreApp,Version=v2.0)
    + +### Issue +In this case: +- ProjectA targets NetStandard 2.0 +- ProjectB targets NetCoreApp 2.0 +- ProjectA has a project reference to ProjectB + +NetStandard projects can never depend on a NetCoreApp project. + +### Solution +Either: +- change ProjectA to target NetCoreApp 2.0 + +or + +- change ProjectB to target NetStandard 2.0 + From dd2e4437e45bb2f33d34243bf8376bb2fb2eadff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Mon, 29 Apr 2019 09:39:32 -0700 Subject: [PATCH 1189/2943] Fix incorrect attribute alias Addresses https://github.com/NuGet/docs.microsoft.com-nuget/issues/1118 --- docs/tools/cli-ref-push.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tools/cli-ref-push.md b/docs/tools/cli-ref-push.md index 3765ae186..acfa7a95d 100644 --- a/docs/tools/cli-ref-push.md +++ b/docs/tools/cli-ref-push.md @@ -62,5 +62,5 @@ nuget push foo.nupkg 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -Source https://api.nu nuget push foo.nupkg 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -nuget push foo.nupkg 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -s https://customsource/ +nuget push foo.nupkg 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -src https://customsource/ ``` From 1d12ad440b7155a62800866d0c5af13d6ff1e9e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Mon, 29 Apr 2019 09:53:57 -0700 Subject: [PATCH 1190/2943] Update prerelease information for .NET SDK --- docs/create-packages/Prerelease-Packages.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/create-packages/Prerelease-Packages.md b/docs/create-packages/Prerelease-Packages.md index df62b7778..7b687946f 100644 --- a/docs/create-packages/Prerelease-Packages.md +++ b/docs/create-packages/Prerelease-Packages.md @@ -17,7 +17,7 @@ A stable release is one that's considered reliable enough to be used in producti To support the software release lifecycle, NuGet 1.6 and later allows for the distribution of pre-release packages, where the version number includes a semantic versioning suffix such as `-alpha`, `-beta`, or `-rc`. For more information, see [Package versioning](../reference/package-versioning.md#pre-release-versions). -You can specify such versions in two ways: +You can specify such versions in three ways: - `.nuspec` file: include the semantic version suffix in the `version` element: @@ -25,7 +25,15 @@ You can specify such versions in two ways: 1.0.1-alpha ``` -- Assembly attributes: when building a package from a Visual Studio project (`.csproj` or `.vbproj`), use the `AssemblyInformationalVersionAttribute` to specify the version: +- `.csproj` file: include the semantic version suffix in the `PackageVersion` element: + + ```xml + + 1.0.1-alpha + + ``` + +- Assembly attributes: specify the version using `AssemblyInformationalVersionAttribute`: ```cs [assembly: AssemblyInformationalVersion("1.0.1-beta")] From 6dc082618ebc43da3b260f4de43f2ca8273868ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Mon, 29 Apr 2019 13:10:15 -0700 Subject: [PATCH 1191/2943] Address feedback --- docs/create-packages/Prerelease-Packages.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/create-packages/Prerelease-Packages.md b/docs/create-packages/Prerelease-Packages.md index 7b687946f..49449ea0f 100644 --- a/docs/create-packages/Prerelease-Packages.md +++ b/docs/create-packages/Prerelease-Packages.md @@ -17,15 +17,15 @@ A stable release is one that's considered reliable enough to be used in producti To support the software release lifecycle, NuGet 1.6 and later allows for the distribution of pre-release packages, where the version number includes a semantic versioning suffix such as `-alpha`, `-beta`, or `-rc`. For more information, see [Package versioning](../reference/package-versioning.md#pre-release-versions). -You can specify such versions in three ways: +You can specify such versions using one of the following ways: -- `.nuspec` file: include the semantic version suffix in the `version` element: +- `nuget.exe`: include the semantic version suffix in the `.nuspec` file's `version` element: ```xml 1.0.1-alpha ``` -- `.csproj` file: include the semantic version suffix in the `PackageVersion` element: +- `dotnet.exe`: include the semantic version suffix in the `.csproj` file's `PackageVersion` element: ```xml From 268a02fcfc066e087047b5b60d6d98c5294ac7c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Mon, 29 Apr 2019 13:21:46 -0700 Subject: [PATCH 1192/2943] Work --- docs/create-packages/Prerelease-Packages.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/create-packages/Prerelease-Packages.md b/docs/create-packages/Prerelease-Packages.md index 49449ea0f..a317a2fd9 100644 --- a/docs/create-packages/Prerelease-Packages.md +++ b/docs/create-packages/Prerelease-Packages.md @@ -19,13 +19,13 @@ To support the software release lifecycle, NuGet 1.6 and later allows for the di You can specify such versions using one of the following ways: -- `nuget.exe`: include the semantic version suffix in the `.nuspec` file's `version` element: +- [`nuget.exe`](../tools/nuget-exe-cli-reference.md): include the semantic version suffix in the `.nuspec` file's `version` element: ```xml 1.0.1-alpha ``` -- `dotnet.exe`: include the semantic version suffix in the `.csproj` file's `PackageVersion` element: +- [dotnet CLI](/dotnet/articles/core/tools/index): include the semantic version suffix in the `.csproj` file's `PackageVersion` element: ```xml From d4eb4e97afdac35a626ff578bd3f999d9189bcec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Mon, 29 Apr 2019 14:22:11 -0700 Subject: [PATCH 1193/2943] Address even more feedback! \o/ --- docs/create-packages/Prerelease-Packages.md | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/docs/create-packages/Prerelease-Packages.md b/docs/create-packages/Prerelease-Packages.md index a317a2fd9..c83c5a73a 100644 --- a/docs/create-packages/Prerelease-Packages.md +++ b/docs/create-packages/Prerelease-Packages.md @@ -19,13 +19,7 @@ To support the software release lifecycle, NuGet 1.6 and later allows for the di You can specify such versions using one of the following ways: -- [`nuget.exe`](../tools/nuget-exe-cli-reference.md): include the semantic version suffix in the `.nuspec` file's `version` element: - - ```xml - 1.0.1-alpha - ``` - -- [dotnet CLI](/dotnet/articles/core/tools/index): include the semantic version suffix in the `.csproj` file's `PackageVersion` element: +- **If your project uses [`PackageReference`](../consume-packages/package-references-in-project-files)**: include the semantic version suffix in the `.csproj` file's `PackageVersion` element: ```xml @@ -33,15 +27,13 @@ You can specify such versions using one of the following ways: ``` -- Assembly attributes: specify the version using `AssemblyInformationalVersionAttribute`: +- **If your project has a [`packages.config`](../reference/packages-config) file**: include the semantic version suffix in the [`.nuspec`](../reference/nuspec) file's [`version`](../reference/nuspec#version) element: - ```cs - [assembly: AssemblyInformationalVersion("1.0.1-beta")] + ```xml + 1.0.1-alpha ``` - NuGet picks up this value instead of the one specified in the `AssemblyVersion` attribute, which does not support semantic versioning. - -When you’re ready to release a stable version, just remove the suffix and the package takes precedence over any pre-release versions. Again, see [Package versioning](../reference/package-versioning.md#pre-release-versions). +When you're ready to release a stable version, just remove the suffix and the package takes precedence over any pre-release versions. Again, see [Package versioning](../reference/package-versioning.md#pre-release-versions). ## Installing and updating pre-release packages From 0b1dca14d1333d7c183a66c7c12d861260a26c27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Mon, 29 Apr 2019 14:27:07 -0700 Subject: [PATCH 1194/2943] Fix links --- docs/create-packages/Prerelease-Packages.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/create-packages/Prerelease-Packages.md b/docs/create-packages/Prerelease-Packages.md index c83c5a73a..2f5499d59 100644 --- a/docs/create-packages/Prerelease-Packages.md +++ b/docs/create-packages/Prerelease-Packages.md @@ -19,7 +19,7 @@ To support the software release lifecycle, NuGet 1.6 and later allows for the di You can specify such versions using one of the following ways: -- **If your project uses [`PackageReference`](../consume-packages/package-references-in-project-files)**: include the semantic version suffix in the `.csproj` file's `PackageVersion` element: +- **If your project uses [`PackageReference`](../consume-packages/package-references-in-project-files.md)**: include the semantic version suffix in the `.csproj` file's [`PackageVersion`](/dotnet/core/tools/csproj.md#packageversion) element: ```xml @@ -27,7 +27,7 @@ You can specify such versions using one of the following ways: ``` -- **If your project has a [`packages.config`](../reference/packages-config) file**: include the semantic version suffix in the [`.nuspec`](../reference/nuspec) file's [`version`](../reference/nuspec#version) element: +- **If your project has a [`packages.config`](../reference/packages-config.md) file**: include the semantic version suffix in the [`.nuspec`](../reference/nuspec.md) file's [`version`](../reference/nuspec.md#version) element: ```xml 1.0.1-alpha From 2e3585787c4c6808fd05aaad8962c020fd1ceb71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= Date: Tue, 30 Apr 2019 13:21:02 -0700 Subject: [PATCH 1195/2943] Clarify that symbol publishing requires V3 service index (#1426) --- docs/create-packages/Symbol-Packages-snupkg.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/create-packages/Symbol-Packages-snupkg.md b/docs/create-packages/Symbol-Packages-snupkg.md index 00fcf85f1..c70d7d75a 100644 --- a/docs/create-packages/Symbol-Packages-snupkg.md +++ b/docs/create-packages/Symbol-Packages-snupkg.md @@ -50,10 +50,10 @@ If you're using dotnet.exe or MSBuild, use the following steps to create a .snup 1. Pack your project with `dotnet pack MyPackage.csproj` or `msbuild -t:pack MyPackage.csproj`. -The `SymbolPackageFormat` property can have one of the two values: `symbols.nupkg` (the default) or `snupkg`. If the `SymbolPackageFormat` property is not specified, it defaults to `symbols.nupkg` and a legacy symbol package will be created. +The [`SymbolPackageFormat`](/dotnet/core/tools/csproj.md#symbolpackageformat) property can have one of two values: `symbols.nupkg` (the default) or `snupkg`. If the [`SymbolPackageFormat`](/dotnet/core/tools/csproj.md#symbolpackageformat) property is not specified, a legacy symbol package will be created. > [!Note] -> The legacy format `.symbols.nupkg` is still supported but only for compatibility reasons (see [Legacy Symbol Packages](Symbol-Packages.md)). NuGet.org symbols server only accepts the new symbol package format - `.snupkg`. +> The legacy format `.symbols.nupkg` is still supported but only for compatibility reasons (see [Legacy Symbol Packages](Symbol-Packages.md)). NuGet.org's symbol server only accepts the new symbol package format - `.snupkg`. ## Publishing a symbol package @@ -77,6 +77,9 @@ The `SymbolPackageFormat` property can have one of the two values: `symbols.nupk NuGet will publish both packages to nuget.org. `MyPackage.nupkg` will be published first, followed by `MyPackage.snupkg`. +> [!Note] +> If the symbol package isn't published, check that you've configured the NuGet.org source as `https://api.nuget.org/v3/index.json`. Symbol package publishing is only supported by [the NuGet V3 API](../api/overview.md#versioning). + ## NuGet.org symbol server NuGet.org supports its own symbols server repository and only accepts the new symbol package format - `.snupkg`. Package consumers can use the symbols published to nuget.org symbol server by adding `https://symbols.nuget.org/download/symbols` to their symbol sources in Visual Studio, which allows stepping into package code in the Visual Studio debugger. See [Specify symbol (.pdb) and source files in the Visual Studio debugger](https://docs.microsoft.com/en-us/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger?view=vs-2017) for details on that process. From 274411a0de4a8d4449003343557c6bc47669065c Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Fri, 3 May 2019 10:10:09 +1000 Subject: [PATCH 1196/2943] add netcoreapp2.2 and net48 --- docs/reference/target-frameworks.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/reference/target-frameworks.md b/docs/reference/target-frameworks.md index 465542eb3..477c86863 100644 --- a/docs/reference/target-frameworks.md +++ b/docs/reference/target-frameworks.md @@ -43,6 +43,7 @@ The NuGet clients support the frameworks in the table below. Equivalents are sho | | | net47 | | | | net471 | | | | net472 | +| | | net48 | |Microsoft Store (Windows Store) | netcore | netcore [netcore45] | | | | netcore45 [win, win8] | | | | netcore451 [win81] | @@ -75,6 +76,7 @@ Universal Windows Platform | uap | uap [uap10.0] | | | | netcoreapp1.1 | | | | netcoreapp2.0 | | | | netcoreapp2.1 | +| | | netcoreapp2.2 | Tizen | tizen | tizen3 | | | | tizen4 | From 5dd982989c702085242ce0509742ffccc9f74efa Mon Sep 17 00:00:00 2001 From: Mallikarjun Kalkere Date: Fri, 3 May 2019 15:56:36 -0400 Subject: [PATCH 1197/2943] #1431 - ensuring or ensure? Typo/Spelling fix --- docs/consume-packages/configuring-nuget-behavior.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/consume-packages/configuring-nuget-behavior.md b/docs/consume-packages/configuring-nuget-behavior.md index 58c92047e..3575fd58a 100644 --- a/docs/consume-packages/configuring-nuget-behavior.md +++ b/docs/consume-packages/configuring-nuget-behavior.md @@ -191,7 +191,7 @@ NuGet then loads and applies settings as follows, depending on where it's invoke ## NuGet defaults file -The `NuGetDefaults.Config` file exists to specify package sources from which packages are installed and updated, and to control the default target for publishing packages with `nuget push`. Because administrators can conveniently (using Group Policy, for example) deploy consistent `NuGetDefaults.Config` files to developer and build machines, they can ensuring that everyone in the organization is using the correct package sources rather than nuget.org. +The `NuGetDefaults.Config` file exists to specify package sources from which packages are installed and updated, and to control the default target for publishing packages with `nuget push`. Because administrators can conveniently (using Group Policy, for example) deploy consistent `NuGetDefaults.Config` files to developer and build machines, they can ensure that everyone in the organization is using the correct package sources rather than nuget.org. > [!Important] > The `NuGetDefaults.Config` file never causes a package source to be removed from a developer's NuGet configuration. That means if the developer has already used NuGet and therefore has the nuget.org package source registered, it won't be removed after the creation of a `NuGetDefaults.Config` file. From 4ecea516c10c2f8c22dca09b839691b8da1b314b Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Mon, 13 May 2019 17:58:30 -0700 Subject: [PATCH 1198/2943] Show example of msbuild arguments env var --- docs/tools/cli-ref-environment-variables.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tools/cli-ref-environment-variables.md b/docs/tools/cli-ref-environment-variables.md index 098eafb1b..7293615ee 100644 --- a/docs/tools/cli-ref-environment-variables.md +++ b/docs/tools/cli-ref-environment-variables.md @@ -28,7 +28,7 @@ The list of properties documented in [NuGet pack and restore as MSBuild targets] | NUGET_HTTP_CACHE_PATH | Path to use for the *http-cache* folder as described on [Managing the global packages and cache folders](../consume-packages/managing-the-global-packages-and-cache-folders.md). | Specified as absolute path. | | NUGET_PERSIST_DG | Flag indicating if dg files (data collected from MSBuild) should be persisted. | Specified as *true* or *false* (default), if NUGET_PERSIST_DG_PATH not set will be stored to temporary directory (NuGetScratch folder in current environment temp directory). | | NUGET_PERSIST_DG_PATH | Path to persist dg files. | Specified as absolute path, this option is only used when *NUGET_PERSIST_DG* is set to true. | -| NUGET_RESTORE_MSBUILD_ARGS | Sets additional MSBuild arguments. | | +| NUGET_RESTORE_MSBUILD_ARGS | Sets additional MSBuild arguments. | Pass arguments identically to how you would pass them to msbuild.exe. An example of setting a project property Foo from the command line to value Bar would be /p:Foo=Bar | | NUGET_RESTORE_MSBUILD_VERBOSITY | Sets the MSBuild log verbosity. | Default is *quiet* ("/v:q"). Possible values *q[uiet]*, *m[inimal]*, *n[ormal]*, *d[etailed]*, and *diag[nostic]*. | | NUGET_SHOW_STACK | Determines whether the full exception (including stack trace) should be displayed to the user. | Specified as *true* or *false* (default). | | 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). | From 6c388caf3850e7355d8e373fb89adadcee15afab Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Tue, 14 May 2019 10:04:43 -0700 Subject: [PATCH 1199/2943] 5.0.2 rel notes --- docs/release-notes/NuGet-5.0-RTM.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/release-notes/NuGet-5.0-RTM.md b/docs/release-notes/NuGet-5.0-RTM.md index 7a26762f6..a39e8e51f 100644 --- a/docs/release-notes/NuGet-5.0-RTM.md +++ b/docs/release-notes/NuGet-5.0-RTM.md @@ -14,6 +14,7 @@ NuGet distribution vehicles: | NuGet version | Available in Visual Studio version| Available in .NET SDK(s)| |:---|:---|:---| | [**5.0.0**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.0](https://visualstudio.microsoft.com/downloads/) | [2.1.602](https://dotnet.microsoft.com/download/dotnet-core/2.1)1, [2.2.202](https://dotnet.microsoft.com/download/dotnet-core/2.2)2 | +| [**5.0.2**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.0.4](https://visualstudio.microsoft.com/downloads/) | [2.1.60X](https://dotnet.microsoft.com/download/dotnet-core/2.1)1, [2.2.20X](https://dotnet.microsoft.com/download/dotnet-core/2.2)2 | 1Installed with Visual Studio 2019 with .NET Core workload @@ -149,6 +150,13 @@ NuGet distribution vehicles: **[List of all issues fixed in this release - 5.0 RTM](https://github.com/NuGet/Home/milestone/84?closed=1)** +## Summary: What's New in 5.0.2 + +* Security (when run via dotnet.exe or mono.exe) - The obj folder should be created with correct permissions [#7908](https://github.com/NuGet/Home/issues/7908) + +* nuget.exe restore on mono/MacOS fails with custom nuget.config and `PackageSignatureValidity: False` [#8011](https://github.com/NuGet/Home/issues/8011) + + ## Known issues ### Packages in FallbackFolders installed by .NET Core SDK are custom installed, and fail signature validation. - [#7414](https://github.com/NuGet/Home/issues/7414) From 4086dca4d73c6215d399e316f035109d3ec34dbe Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 14 May 2019 10:16:45 -0700 Subject: [PATCH 1200/2943] Update cli-ref-environment-variables.md --- docs/tools/cli-ref-environment-variables.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tools/cli-ref-environment-variables.md b/docs/tools/cli-ref-environment-variables.md index 7293615ee..f6f369c41 100644 --- a/docs/tools/cli-ref-environment-variables.md +++ b/docs/tools/cli-ref-environment-variables.md @@ -28,7 +28,7 @@ The list of properties documented in [NuGet pack and restore as MSBuild targets] | NUGET_HTTP_CACHE_PATH | Path to use for the *http-cache* folder as described on [Managing the global packages and cache folders](../consume-packages/managing-the-global-packages-and-cache-folders.md). | Specified as absolute path. | | NUGET_PERSIST_DG | Flag indicating if dg files (data collected from MSBuild) should be persisted. | Specified as *true* or *false* (default), if NUGET_PERSIST_DG_PATH not set will be stored to temporary directory (NuGetScratch folder in current environment temp directory). | | NUGET_PERSIST_DG_PATH | Path to persist dg files. | Specified as absolute path, this option is only used when *NUGET_PERSIST_DG* is set to true. | -| NUGET_RESTORE_MSBUILD_ARGS | Sets additional MSBuild arguments. | Pass arguments identically to how you would pass them to msbuild.exe. An example of setting a project property Foo from the command line to value Bar would be /p:Foo=Bar | +| NUGET_RESTORE_MSBUILD_ARGS | Sets additional MSBuild arguments. | Pass arguments identical to how you would pass them to msbuild.exe. An example of setting a project property Foo from the command line to value Bar would be /p:Foo=Bar | | NUGET_RESTORE_MSBUILD_VERBOSITY | Sets the MSBuild log verbosity. | Default is *quiet* ("/v:q"). Possible values *q[uiet]*, *m[inimal]*, *n[ormal]*, *d[etailed]*, and *diag[nostic]*. | | NUGET_SHOW_STACK | Determines whether the full exception (including stack trace) should be displayed to the user. | Specified as *true* or *false* (default). | | 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). | From ad35c3866ccccd6870bb3206f069dc51e6bb953e Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 14 May 2019 10:37:29 -0700 Subject: [PATCH 1201/2943] Clarifies that you cannot pass multiple source Fixes https://github.com/NuGet/docs.microsoft.com-nuget/issues/936 --- docs/tools/cli-ref-sources.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/tools/cli-ref-sources.md b/docs/tools/cli-ref-sources.md index 58ff630c1..0d88f65f9 100644 --- a/docs/tools/cli-ref-sources.md +++ b/docs/tools/cli-ref-sources.md @@ -21,7 +21,7 @@ Note that the source URL for nuget.org is `https://api.nuget.org/v3/index.json`. nuget sources -Name -Source ``` -where `` is one of *List, Add, Remove, Enable, Disable,* or *Update*, `` is the name of the source, and `` is the source's URL. +where `` is one of *List, Add, Remove, Enable, Disable,* or *Update*, `` is the name of the source, and `` is the source's URL. You can operate on only one source at a time. ## Options @@ -49,7 +49,7 @@ nuget sources Add -Name "MyServer" -Source \\myserver\packages nuget sources Disable -Name "MyServer" -nuget source Enable -Name "nuget.org" +nuget sources Enable -Name "nuget.org" nuget sources add -name foo.bar -source C:\NuGet\local -username foo -password bar -StorePasswordInClearText -configfile %AppData%\NuGet\my.config ``` From 04aa250d9a396ce7eae25ad7cb2554bb934b753e Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 14 May 2019 13:42:26 -0700 Subject: [PATCH 1202/2943] toc updates --- docs/TOC.md | 329 +++++++++++++++++++++++++++------------------------- 1 file changed, 173 insertions(+), 156 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index a9e6de9ad..9c32717fd 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -1,43 +1,81 @@ # [What is NuGet?](what-is-nuget.md) # [Install NuGet client tools](install-nuget-client-tools.md) -# Quickstarts -## [Install and use a package (dotnet CLI)](quickstart/install-and-use-a-package-using-the-dotnet-cli.md) -## [Install and use a package (Visual Studio)](quickstart/install-and-use-a-package-in-visual-studio.md) -## [Create and publish a NET Standard package (dotnet CLI)](quickstart/create-and-publish-a-package-using-the-dotnet-cli.md) -## [Create and publish a NET Standard package (Visual Studio)](quickstart/create-and-publish-a-package-using-visual-studio.md) -## [Create and publish a NET Framework package (Visual Studio)](quickstart/create-and-publish-a-package-using-visual-studio-net-framework.md) # Consume packages -## [Overview and workflow](consume-packages/overview-and-workflow.md) -## [Finding and choosing packages](consume-packages/finding-and-choosing-packages.md) -## [Installing packages](consume-packages/ways-to-install-a-package.md) -### [Signed packages](consume-packages/installing-signed-packages.md) -## [Package restore](consume-packages/package-restore.md) -### [Troubleshooting](consume-packages/package-restore-troubleshooting.md) -## [Reinstalling and updating packages](consume-packages/reinstalling-and-updating-packages.md) -## [Packages and source control](consume-packages/packages-and-source-control.md) -## [Managing the global packages and cache folders](consume-packages/managing-the-global-packages-and-cache-folders.md) -## [Configuring NuGet behavior](consume-packages/configuring-nuget-behavior.md) -## [Dependency resolution](consume-packages/dependency-resolution.md) +## Overview +### [Overview and workflow](consume-packages/overview-and-workflow.md) +### [Ways to install a package](consume-packages/ways-to-install-a-package.md) +## Quickstarts +### [Install and use a package (dotnet CLI)](quickstart/install-and-use-a-package-using-the-dotnet-cli.md) +### [Install and use a package (Visual Studio)](quickstart/install-and-use-a-package-in-visual-studio.md) +## How-to guides +### [Find and choose packages](consume-packages/finding-and-choosing-packages.md) +### [Include packages in Visual Studio](tools/package-manager-ui.md) +### [Include packages in PowerShell](tools/package-manager-console.md) +### Include packages using the dotnet CLI +### Include packages using the NuGet CLI +### [Include packages in Visual Studio for Mac](/visualstudio/mac/nuget-walkthrough?view=vsmac-2019) +### [Install a signed package](consume-packages/installing-signed-packages.md) +### Manage and update packages +#### [Restore packages](consume-packages/package-restore.md) +##### [Troubleshooting](consume-packages/package-restore-troubleshooting.md) +#### [Reinstall and update packages](consume-packages/reinstalling-and-updating-packages.md) +#### [Manage global packages and cache folders](consume-packages/managing-the-global-packages-and-cache-folders.md) +#### [Packages and source control](consume-packages/packages-and-source-control.md) +### Package references +#### [Package references in project files](consume-packages/package-references-in-project-files.md) +#### [Migrate packages.config to PackageReference](reference/migrate-packages-config-to-package-reference.md) +#### [packages.config](reference/packages-config.md) +#### [Dependency resolution](consume-packages/dependency-resolution.md) +### Configure NuGet +#### [Configure NuGet behavior](consume-packages/configuring-nuget-behavior.md) # Create packages -## [Overview and workflow](create-packages/overview-and-workflow.md) -## [Creating a package](create-packages/creating-a-package.md) -## [Supporting multiple target frameworks](create-packages/supporting-multiple-target-frameworks.md) -## [Source and config file transformations](create-packages/source-and-config-file-transformations.md) -## [Creating localized packages](create-packages/creating-localized-packages.md) -## [Prerelease packages](create-packages/prerelease-packages.md) -## [Creating Native packages](create-packages/native-packages.md) -## [Creating Symbol packages](create-packages/symbol-packages-snupkg.md) -## [Signing packages](create-packages/sign-a-package.md) -## [Publishing a package](create-packages/publish-a-package.md) -## Guides -### [Create UWP packages](guides/create-uwp-packages.md) -### [Creating UI controls as NuGet packages](guides/create-UI-controls.md) -### [Create packages for Xamarin with Visual Studio 2015](guides/create-packages-for-xamarin.md) -# Host packages -## [Overview](hosting-packages/overview.md) -## [Local feeds](hosting-packages/local-feeds.md) -## [NuGet.Server](hosting-packages/nuget-server.md) -# Tools +## Overview +### [Overview and workflow](create-packages/overview-and-workflow.md) +## Quickstarts +### [Create and publish a NET Standard package (dotnet CLI)](quickstart/create-and-publish-a-package-using-the-dotnet-cli.md) +### [Create and publish a NET Standard package (Visual Studio)](quickstart/create-and-publish-a-package-using-visual-studio.md) +### [Create and publish a NET Framework package (Visual Studio)](quickstart/create-and-publish-a-package-using-visual-studio-net-framework.md) +## How-to guides +### [Create a package](create-packages/creating-a-package.md) +### [Create a C++ package](create-packages/native-packages.md) +### [Create a UWP package](guides/create-uwp-packages.md) +### [Create a package using MSBuild](reference/msbuild-targets.md) +### [Support multiple target frameworks](create-packages/supporting-multiple-target-frameworks.md) +### [Modify source files and config files](create-packages/source-and-config-file-transformations.md) +### Create other package types +#### [Build a prerelease package](create-packages/prerelease-packages.md) +#### [Create a localized package](create-packages/creating-localized-packages.md) +#### [Create a symbol package](create-packages/symbol-packages-snupkg.md) +#### [Create UI controls as a NuGet package](guides/create-UI-controls.md) +#### [Create an analyzer as a NuGet package](reference/analyzers-conventions.md) +#### [Create a package for Xamarin with Visual Studio 2015](guides/create-packages-for-xamarin.md) +### [Sign a package](create-packages/sign-a-package.md) +### Publish packages +#### [Publish a package](create-packages/publish-a-package.md) +### Host packages +#### [Overview](hosting-packages/overview.md) +#### [Local feeds](hosting-packages/local-feeds.md) +#### [NuGet.Server](hosting-packages/nuget-server.md) +### Extensibility +#### [NuGet Cross Platform Plugins](reference/extensibility/NuGet-Cross-Platform-Plugins.md) +#### [NuGet cross platform authentication plugin](reference/extensibility/nuget-cross-platform-authentication-plugin.md) +#### [NuGet credential providers for Visual Studio](reference/extensibility/nuget-credential-providers-for-visual-studio.md) +#### [nuget.exe credential providers](reference/extensibility/nuget-exe-credential-providers.md) +### Visual Studio extensibility +#### [NuGet API in Visual Studio](visual-studio-extensibility/nuget-api-in-visual-studio.md) +#### [Project system support](visual-studio-extensibility/project-system-support.md) +#### [Visual Studio templates](visual-studio-extensibility/visual-studio-templates.md) +### Archived content +#### [project.json management format](archive/project-json.md) +#### [project.json and UWP](archive/project-json-and-uwp.md) +#### [project.json impact](archive/project-json-impact.md) +# Concepts +## [Package versioning](reference/package-versioning.md) +# Reference +## [.nuspec](reference/nuspec.md) +## [nuget.config file](reference/nuget-config-file.md) +## [Target frameworks](reference/target-frameworks.md) +## [dotnet CLI](tools/dotnet-Commands.md) ## [nuget.exe CLI reference](tools/nuget-exe-cli-reference.md) ### [add](tools/cli-ref-add.md) ### [config](tools/cli-ref-config.md) @@ -60,8 +98,6 @@ ### [trusted-signers](tools/cli-ref-trusted-signers.md) ### [Environment variables](tools/cli-ref-environment-variables.md) ### [Long path support](tools/cli-ref-long-path.md) -## [Package Manager UI](tools/package-manager-ui.md) -## [Package Manager Console](tools/package-manager-console.md) ## [PowerShell reference](tools/powershell-reference.md) ### [Add-BindingRedirect](tools/ps-ref-add-bindingredirect.md) ### [Find-Package](tools/ps-ref-find-package.md) @@ -72,22 +108,8 @@ ### [Sync-Package](tools/ps-ref-sync-package.md) ### [Uninstall-Package](tools/ps-ref-uninstall-package.md) ### [Update-Package](tools/ps-ref-update-package.md) -## [dotnet commands](tools/dotnet-Commands.md) -# Reference -## [.nuspec](reference/nuspec.md) -## [Package references in project files](consume-packages/package-references-in-project-files.md) -## [Migrate packages.config to PackageReference](reference/migrate-packages-config-to-package-reference.md) -## [packages.config](reference/packages-config.md) -## [Package versioning](reference/package-versioning.md) -## [nuget.config file](reference/nuget-config-file.md) -## [MSBuild targets](reference/msbuild-targets.md) -## [Target frameworks](reference/target-frameworks.md) -## [Analyzers conventions](reference/analyzers-conventions.md) -## [ID prefix reservation](reference/id-prefix-reservation.md) ## [NuGet client SDK](reference/nuget-client-sdk.md) ## [Signed packages](reference/signed-packages-reference.md) -## [Organizations on NuGet.org](reference/organizations-on-nuget-org.md) -## [licenses.nuget.org](reference/licenses.nuget.org.md) ## [Errors and Warnings](reference/Errors-and-Warnings.md) ### [NU1000](reference/errors-and-warnings/NU1000.md) ### [NU1001](reference/errors-and-warnings/NU1001.md) @@ -220,107 +242,102 @@ ### [NU5124](reference/errors-and-warnings/NU5124.md) ### [NU5125](reference/errors-and-warnings/NU5125.md) ### [NU5500](reference/errors-and-warnings/NU5500.md) - -## Extensibility -### [NuGet Cross Platform Plugins](reference/extensibility/NuGet-Cross-Platform-Plugins.md) -### [NuGet cross platform authentication plugin](reference/extensibility/nuget-cross-platform-authentication-plugin.md) -### [NuGet credential providers for Visual Studio](reference/extensibility/nuget-credential-providers-for-visual-studio.md) -### [nuget.exe credential providers](reference/extensibility/nuget-exe-credential-providers.md) -## Archived content -### [project.json management format](archive/project-json.md) -### [project.json and UWP](archive/project-json-and-uwp.md) -### [project.json impact](archive/project-json-impact.md) -# API -## [Overview](api/overview.md) -## Resources -### [Autocomplete](api/search-autocomplete-service-resource.md) -### [Catalog](api/catalog-resource.md) -### [Package content](api/package-base-address-resource.md) -### [Package details URL](api/package-details-template-resource.md) -### [Package metadata](api/registration-base-url-resource.md) -### [Push and delete](api/package-publish-resource.md) -### [Push symbol packages](api/symbol-package-publish-resource.md) -### [Report abuse URL](api/report-abuse-resource.md) -### [Repository signatures](api/repository-signatures-resource.md) -### [Search](api/search-query-service-resource.md) -### [Service index](api/service-index.md) -## [How-to: query for all packages using the API](guides/api/query-for-all-published-packages.md) -## [Rate limits](api/rate-limits.md) -## [nuget.org protocols](api/nuget-protocols.md) -## [tools.json](api/tools-json.md) -# Visual Studio extensibility -## [NuGet API in Visual Studio](visual-studio-extensibility/nuget-api-in-visual-studio.md) -## [Project system support](visual-studio-extensibility/project-system-support.md) -## [Visual Studio templates](visual-studio-extensibility/visual-studio-templates.md) -# Policies -## [Governance](policies/governance.md) -## [Ecosystem](policies/ecosystem.md) -## [Data Requests](policies/Data-requests.md) -## [Dispute resolution](policies/dispute-resolution.md) -## [Deleting packages](policies/deleting-packages.md) -# Release notes -## [Known Issues](release-notes/known-issues.md) -## [NuGet 5.0 RTM](release-notes/NuGet-5.0-RTM.md) -## NuGet 4.x -### [NuGet 4.9 RTM](release-notes/NuGet-4.9-RTM.md) -### [NuGet 4.8 RTM](release-notes/NuGet-4.8-RTM.md) -### [NuGet 4.7 RTM](release-notes/NuGet-4.7-RTM.md) -### [NuGet 4.6 RTM](release-notes/NuGet-4.6-RTM.md) -### [NuGet 4.5 RTM](release-notes/NuGet-4.5-RTM.md) -### [NuGet 4.4 RTM](release-notes/NuGet-4.4-RTM.md) -### [NuGet 4.3 RTM](release-notes/NuGet-4.3-RTM.md) -### [NuGet 4.0 RTM](release-notes/NuGet-4.0-RTM.md) -### [NuGet 4.0 RC](release-notes/NuGet-4.0-RC.md) -## NuGet 3.x -### [NuGet 3.5 RTM](release-notes/NuGet-3.5-RTM.md) -### [NuGet 3.5 RC](release-notes/NuGet-3.5-RC.md) -### [NuGet 3.5 Beta2](release-notes/NuGet-3.5-Beta2.md) -### [NuGet 3.5 Beta](release-notes/NuGet-3.5-Beta.md) -### [NuGet 3.4.4](release-notes/NuGet-3.4.4.md) -### [NuGet 3.4.3](release-notes/NuGet-3.4.3.md) -### [NuGet 3.4.2](release-notes/NuGet-3.4.2.md) -### [NuGet 3.4.1](release-notes/NuGet-3.4.1.md) -### [NuGet 3.4](release-notes/NuGet-3.4.md) -### [NuGet 3.4 RC](release-notes/NuGet-3.4-RC.md) -### [NuGet 3.3](release-notes/NuGet-3.3.md) -### [NuGet 3.2.1](release-notes/NuGet-3.2.1.md) -### [NuGet 3.2](release-notes/NuGet-3.2.md) -### [NuGet 3.2 RC](release-notes/NuGet-3.2-RC.md) -### [NuGet 3.1.1](release-notes/NuGet-3.1.1.md) -### [NuGet 3.1](release-notes/NuGet-3.1.md) -### [NuGet 3.0.0](release-notes/NuGet-3.0.0.md) -### [NuGet 3.0 RC2](release-notes/NuGet-3.0-RC2.md) -### [NuGet 3.0 RC](release-notes/NuGet-3.0-RC.md) -### [NuGet 3.0 Beta](release-notes/NuGet-3.0-Beta.md) -### [NuGet 3.0 Preview](release-notes/NuGet-3.0-Preview.md) -## NuGet 2.x -### [NuGet 2.12](release-notes/NuGet-2.12.md) -### [NuGet 2.12 RC](release-notes/NuGet-2.12-RC.md) -### [NuGet 2.9 RC](release-notes/NuGet-2.9-RC.md) -### [NuGet 2.8.7](release-notes/NuGet-2.8.7.md) -### [NuGet 2.8.6](release-notes/NuGet-2.8.6.md) -### [NuGet 2.8.5](release-notes/NuGet-2.8.5.md) -### [NuGet 2.8.3](release-notes/NuGet-2.8.3.md) -### [NuGet 2.8.2](release-notes/NuGet-2.8.2.md) -### [NuGet 2.8.1](release-notes/NuGet-2.8.1.md) -### [NuGet 2.8](release-notes/NuGet-2.8.md) -### [NuGet 2.7.2](release-notes/NuGet-2.7.2.md) -### [NuGet 2.7.1](release-notes/NuGet-2.7.1.md) -### [NuGet 2.7](release-notes/NuGet-2.7.md) -### [NuGet 2.6.1-for-WebMatrix](release-notes/NuGet-2.6.1-for-WebMatrix.md) -### [NuGet 2.6](release-notes/NuGet-2.6.md) -### [NuGet 2.5](release-notes/NuGet-2.5.md) -### [NuGet 2.2.1](release-notes/NuGet-2.2.1.md) -### [NuGet 2.2](release-notes/NuGet-2.2.md) -### [NuGet 2.1](release-notes/NuGet-2.1.md) -### [NuGet 2.0](release-notes/NuGet-2.0.md) -## NuGet 1.x -### [NuGet 1.8](release-notes/NuGet-1.8.md) -### [NuGet 1.7](release-notes/NuGet-1.7.md) -### [NuGet 1.6](release-notes/NuGet-1.6.md) -### [NuGet 1.5](release-notes/NuGet-1.5.md) -### [NuGet 1.4](release-notes/NuGet-1.4.md) -### [NuGet 1.3](release-notes/NuGet-1.3.md) -### [NuGet 1.2](release-notes/NuGet-1.2.md) -### [NuGet 1.1](release-notes/NuGet-1.1.md) -# [FAQs](faqs/nuget-faq.md) +# NuGet.org +## [ID prefix reservation](reference/id-prefix-reservation.md) +## [Organizations on NuGet.org](reference/organizations-on-nuget-org.md) +## [licenses.nuget.org](reference/licenses.nuget.org.md) +## Policies +### [Governance](policies/governance.md) +### [Ecosystem](policies/ecosystem.md) +### [Data Requests](policies/Data-requests.md) +### [Dispute resolution](policies/dispute-resolution.md) +### [Deleting packages](policies/deleting-packages.md) +## Reference +## NuGet API +### [Overview](api/overview.md) +### Resources +#### [Autocomplete](api/search-autocomplete-service-resource.md) +#### [Catalog](api/catalog-resource.md) +#### [Package content](api/package-base-address-resource.md) +#### [Package details URL](api/package-details-template-resource.md) +#### [Package metadata](api/registration-base-url-resource.md) +#### [Push and delete](api/package-publish-resource.md) +#### [Push symbol packages](api/symbol-package-publish-resource.md) +#### [Report abuse URL](api/report-abuse-resource.md) +#### [Repository signatures](api/repository-signatures-resource.md) +#### [Search](api/search-query-service-resource.md) +#### [Service index](api/service-index.md) +### [How-to: query for all packages using the API](guides/api/query-for-all-published-packages.md) +### [Rate limits](api/rate-limits.md) +### [nuget.org protocols](api/nuget-protocols.md) +### [tools.json](api/tools-json.md) +# Resources +## Policies +### [Governance](policies/governance.md) +### [Ecosystem](policies/ecosystem.md) +## Release notes +### [Known Issues](release-notes/known-issues.md) +### [NuGet 5.0 RTM](release-notes/NuGet-5.0-RTM.md) +### NuGet 4.x +#### [NuGet 4.9 RTM](release-notes/NuGet-4.9-RTM.md) +#### [NuGet 4.8 RTM](release-notes/NuGet-4.8-RTM.md) +#### [NuGet 4.7 RTM](release-notes/NuGet-4.7-RTM.md) +#### [NuGet 4.6 RTM](release-notes/NuGet-4.6-RTM.md) +#### [NuGet 4.5 RTM](release-notes/NuGet-4.5-RTM.md) +#### [NuGet 4.4 RTM](release-notes/NuGet-4.4-RTM.md) +#### [NuGet 4.3 RTM](release-notes/NuGet-4.3-RTM.md) +#### [NuGet 4.0 RTM](release-notes/NuGet-4.0-RTM.md) +#### [NuGet 4.0 RC](release-notes/NuGet-4.0-RC.md) +### NuGet 3.x +#### [NuGet 3.5 RTM](release-notes/NuGet-3.5-RTM.md) +#### [NuGet 3.5 RC](release-notes/NuGet-3.5-RC.md) +#### [NuGet 3.5 Beta2](release-notes/NuGet-3.5-Beta2.md) +#### [NuGet 3.5 Beta](release-notes/NuGet-3.5-Beta.md) +#### [NuGet 3.4.4](release-notes/NuGet-3.4.4.md) +#### [NuGet 3.4.3](release-notes/NuGet-3.4.3.md) +#### [NuGet 3.4.2](release-notes/NuGet-3.4.2.md) +#### [NuGet 3.4.1](release-notes/NuGet-3.4.1.md) +#### [NuGet 3.4](release-notes/NuGet-3.4.md) +#### [NuGet 3.4 RC](release-notes/NuGet-3.4-RC.md) +#### [NuGet 3.3](release-notes/NuGet-3.3.md) +#### [NuGet 3.2.1](release-notes/NuGet-3.2.1.md) +#### [NuGet 3.2](release-notes/NuGet-3.2.md) +#### [NuGet 3.2 RC](release-notes/NuGet-3.2-RC.md) +#### [NuGet 3.1.1](release-notes/NuGet-3.1.1.md) +#### [NuGet 3.1](release-notes/NuGet-3.1.md) +#### [NuGet 3.0.0](release-notes/NuGet-3.0.0.md) +#### [NuGet 3.0 RC2](release-notes/NuGet-3.0-RC2.md) +#### [NuGet 3.0 RC](release-notes/NuGet-3.0-RC.md) +#### [NuGet 3.0 Beta](release-notes/NuGet-3.0-Beta.md) +#### [NuGet 3.0 Preview](release-notes/NuGet-3.0-Preview.md) +### NuGet 2.x +#### [NuGet 2.12](release-notes/NuGet-2.12.md) +#### [NuGet 2.12 RC](release-notes/NuGet-2.12-RC.md) +#### [NuGet 2.9 RC](release-notes/NuGet-2.9-RC.md) +#### [NuGet 2.8.7](release-notes/NuGet-2.8.7.md) +#### [NuGet 2.8.6](release-notes/NuGet-2.8.6.md) +#### [NuGet 2.8.5](release-notes/NuGet-2.8.5.md) +#### [NuGet 2.8.3](release-notes/NuGet-2.8.3.md) +#### [NuGet 2.8.2](release-notes/NuGet-2.8.2.md) +#### [NuGet 2.8.1](release-notes/NuGet-2.8.1.md) +#### [NuGet 2.8](release-notes/NuGet-2.8.md) +#### [NuGet 2.7.2](release-notes/NuGet-2.7.2.md) +#### [NuGet 2.7.1](release-notes/NuGet-2.7.1.md) +#### [NuGet 2.7](release-notes/NuGet-2.7.md) +#### [NuGet 2.6.1-for-WebMatrix](release-notes/NuGet-2.6.1-for-WebMatrix.md) +#### [NuGet 2.6](release-notes/NuGet-2.6.md) +#### [NuGet 2.5](release-notes/NuGet-2.5.md) +#### [NuGet 2.2.1](release-notes/NuGet-2.2.1.md) +#### [NuGet 2.2](release-notes/NuGet-2.2.md) +#### [NuGet 2.1](release-notes/NuGet-2.1.md) +#### [NuGet 2.0](release-notes/NuGet-2.0.md) +### NuGet 1.x +#### [NuGet 1.8](release-notes/NuGet-1.8.md) +#### [NuGet 1.7](release-notes/NuGet-1.7.md) +#### [NuGet 1.6](release-notes/NuGet-1.6.md) +#### [NuGet 1.5](release-notes/NuGet-1.5.md) +#### [NuGet 1.4](release-notes/NuGet-1.4.md) +#### [NuGet 1.3](release-notes/NuGet-1.3.md) +#### [NuGet 1.2](release-notes/NuGet-1.2.md) +#### [NuGet 1.1](release-notes/NuGet-1.1.md) +## [FAQs](faqs/nuget-faq.md) From ea1e0069cd4a7906e4986568136cac3434b541f9 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 14 May 2019 15:54:01 -0700 Subject: [PATCH 1203/2943] updates --- docs/TOC.md | 69 ++++++++++++++++++++++++++++------------------------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index 9c32717fd..1c86594c5 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -9,13 +9,13 @@ ### [Install and use a package (Visual Studio)](quickstart/install-and-use-a-package-in-visual-studio.md) ## How-to guides ### [Find and choose packages](consume-packages/finding-and-choosing-packages.md) -### [Include packages in Visual Studio](tools/package-manager-ui.md) -### [Include packages in PowerShell](tools/package-manager-console.md) -### Include packages using the dotnet CLI -### Include packages using the NuGet CLI -### [Include packages in Visual Studio for Mac](/visualstudio/mac/nuget-walkthrough?view=vsmac-2019) -### [Install a signed package](consume-packages/installing-signed-packages.md) -### Manage and update packages +### Install and manage packages +#### [Using Visual Studio](tools/package-manager-ui.md) +#### [Using PowerShell](tools/package-manager-console.md) +#### Using the dotnet CLI +#### Using the NuGet CLI +#### [Using Visual Studio for Mac](/visualstudio/mac/nuget-walkthrough?view=vsmac-2019) +#### [Install a signed package](consume-packages/installing-signed-packages.md) #### [Restore packages](consume-packages/package-restore.md) ##### [Troubleshooting](consume-packages/package-restore-troubleshooting.md) #### [Reinstall and update packages](consume-packages/reinstalling-and-updating-packages.md) @@ -37,19 +37,22 @@ ### [Create and publish a NET Framework package (Visual Studio)](quickstart/create-and-publish-a-package-using-visual-studio-net-framework.md) ## How-to guides ### [Create a package](create-packages/creating-a-package.md) -### [Create a C++ package](create-packages/native-packages.md) ### [Create a UWP package](guides/create-uwp-packages.md) ### [Create a package using MSBuild](reference/msbuild-targets.md) ### [Support multiple target frameworks](create-packages/supporting-multiple-target-frameworks.md) -### [Modify source files and config files](create-packages/source-and-config-file-transformations.md) -### Create other package types +### Configure packages #### [Build a prerelease package](create-packages/prerelease-packages.md) +#### [Modify source files and config files](create-packages/source-and-config-file-transformations.md) #### [Create a localized package](create-packages/creating-localized-packages.md) #### [Create a symbol package](create-packages/symbol-packages-snupkg.md) +### Create packages for specific content +#### [Create a native package](create-packages/native-packages.md) #### [Create UI controls as a NuGet package](guides/create-UI-controls.md) #### [Create an analyzer as a NuGet package](reference/analyzers-conventions.md) #### [Create a package for Xamarin with Visual Studio 2015](guides/create-packages-for-xamarin.md) -### [Sign a package](create-packages/sign-a-package.md) +### Sign packages +#### [Sign a package](create-packages/sign-a-package.md) +#### [Signed packages](reference/signed-packages-reference.md) ### Publish packages #### [Publish a package](create-packages/publish-a-package.md) ### Host packages @@ -109,7 +112,6 @@ ### [Uninstall-Package](tools/ps-ref-uninstall-package.md) ### [Update-Package](tools/ps-ref-update-package.md) ## [NuGet client SDK](reference/nuget-client-sdk.md) -## [Signed packages](reference/signed-packages-reference.md) ## [Errors and Warnings](reference/Errors-and-Warnings.md) ### [NU1000](reference/errors-and-warnings/NU1000.md) ### [NU1001](reference/errors-and-warnings/NU1001.md) @@ -243,9 +245,10 @@ ### [NU5125](reference/errors-and-warnings/NU5125.md) ### [NU5500](reference/errors-and-warnings/NU5500.md) # NuGet.org -## [ID prefix reservation](reference/id-prefix-reservation.md) -## [Organizations on NuGet.org](reference/organizations-on-nuget-org.md) -## [licenses.nuget.org](reference/licenses.nuget.org.md) +## Overview +### [Organizations on NuGet.org](reference/organizations-on-nuget-org.md) +### [ID prefix reservation](reference/id-prefix-reservation.md) +### [licenses.nuget.org](reference/licenses.nuget.org.md) ## Policies ### [Governance](policies/governance.md) ### [Ecosystem](policies/ecosystem.md) @@ -253,24 +256,24 @@ ### [Dispute resolution](policies/dispute-resolution.md) ### [Deleting packages](policies/deleting-packages.md) ## Reference -## NuGet API -### [Overview](api/overview.md) -### Resources -#### [Autocomplete](api/search-autocomplete-service-resource.md) -#### [Catalog](api/catalog-resource.md) -#### [Package content](api/package-base-address-resource.md) -#### [Package details URL](api/package-details-template-resource.md) -#### [Package metadata](api/registration-base-url-resource.md) -#### [Push and delete](api/package-publish-resource.md) -#### [Push symbol packages](api/symbol-package-publish-resource.md) -#### [Report abuse URL](api/report-abuse-resource.md) -#### [Repository signatures](api/repository-signatures-resource.md) -#### [Search](api/search-query-service-resource.md) -#### [Service index](api/service-index.md) -### [How-to: query for all packages using the API](guides/api/query-for-all-published-packages.md) -### [Rate limits](api/rate-limits.md) -### [nuget.org protocols](api/nuget-protocols.md) -### [tools.json](api/tools-json.md) +### NuGet API +#### [Overview](api/overview.md) +#### Resources +##### [Autocomplete](api/search-autocomplete-service-resource.md) +##### [Catalog](api/catalog-resource.md) +##### [Package content](api/package-base-address-resource.md) +##### [Package details URL](api/package-details-template-resource.md) +##### [Package metadata](api/registration-base-url-resource.md) +##### [Push and delete](api/package-publish-resource.md) +##### [Push symbol packages](api/symbol-package-publish-resource.md) +##### [Report abuse URL](api/report-abuse-resource.md) +##### [Repository signatures](api/repository-signatures-resource.md) +##### [Search](api/search-query-service-resource.md) +##### [Service index](api/service-index.md) +#### [How-to: query for all packages using the API](guides/api/query-for-all-published-packages.md) +#### [Rate limits](api/rate-limits.md) +#### [nuget.org protocols](api/nuget-protocols.md) +#### [tools.json](api/tools-json.md) # Resources ## Policies ### [Governance](policies/governance.md) From b6b6c0da5586a7b976658453e3d5f01129d2cdd2 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 14 May 2019 16:10:26 -0700 Subject: [PATCH 1204/2943] tweaks --- docs/TOC.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index 1c86594c5..ebe73683f 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -16,18 +16,19 @@ #### Using the NuGet CLI #### [Using Visual Studio for Mac](/visualstudio/mac/nuget-walkthrough?view=vsmac-2019) #### [Install a signed package](consume-packages/installing-signed-packages.md) +### Manage installed packages #### [Restore packages](consume-packages/package-restore.md) ##### [Troubleshooting](consume-packages/package-restore-troubleshooting.md) #### [Reinstall and update packages](consume-packages/reinstalling-and-updating-packages.md) #### [Manage global packages and cache folders](consume-packages/managing-the-global-packages-and-cache-folders.md) -#### [Packages and source control](consume-packages/packages-and-source-control.md) +#### [Work with source control systems](consume-packages/packages-and-source-control.md) +### Configure NuGet +#### [Configure NuGet behavior](consume-packages/configuring-nuget-behavior.md) ### Package references #### [Package references in project files](consume-packages/package-references-in-project-files.md) #### [Migrate packages.config to PackageReference](reference/migrate-packages-config-to-package-reference.md) #### [packages.config](reference/packages-config.md) #### [Dependency resolution](consume-packages/dependency-resolution.md) -### Configure NuGet -#### [Configure NuGet behavior](consume-packages/configuring-nuget-behavior.md) # Create packages ## Overview ### [Overview and workflow](create-packages/overview-and-workflow.md) From 3a9cf39e8408b2fd5ee65cfcedd79a85a3bf533d Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 14 May 2019 16:23:01 -0700 Subject: [PATCH 1205/2943] minor fix --- docs/TOC.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index ebe73683f..57a630972 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -12,8 +12,6 @@ ### Install and manage packages #### [Using Visual Studio](tools/package-manager-ui.md) #### [Using PowerShell](tools/package-manager-console.md) -#### Using the dotnet CLI -#### Using the NuGet CLI #### [Using Visual Studio for Mac](/visualstudio/mac/nuget-walkthrough?view=vsmac-2019) #### [Install a signed package](consume-packages/installing-signed-packages.md) ### Manage installed packages From fa5d27fb82d6c3b8c33c53420af119a97882138b Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 14 May 2019 16:29:56 -0700 Subject: [PATCH 1206/2943] tweaks --- docs/TOC.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index 57a630972..11d040efd 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -20,13 +20,13 @@ #### [Reinstall and update packages](consume-packages/reinstalling-and-updating-packages.md) #### [Manage global packages and cache folders](consume-packages/managing-the-global-packages-and-cache-folders.md) #### [Work with source control systems](consume-packages/packages-and-source-control.md) -### Configure NuGet -#### [Configure NuGet behavior](consume-packages/configuring-nuget-behavior.md) -### Package references +### Reference packages in your project #### [Package references in project files](consume-packages/package-references-in-project-files.md) #### [Migrate packages.config to PackageReference](reference/migrate-packages-config-to-package-reference.md) #### [packages.config](reference/packages-config.md) #### [Dependency resolution](consume-packages/dependency-resolution.md) +### Configure NuGet +#### [Configure NuGet behavior](consume-packages/configuring-nuget-behavior.md) # Create packages ## Overview ### [Overview and workflow](create-packages/overview-and-workflow.md) From dc206369d91c1d616fc96d4f5960cef9b47aa56e Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 14 May 2019 17:02:37 -0700 Subject: [PATCH 1207/2943] minor edits --- docs/TOC.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index 11d040efd..7c6273159 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -1,3 +1,4 @@ +# [NuGet documentation](index.md) # [What is NuGet?](what-is-nuget.md) # [Install NuGet client tools](install-nuget-client-tools.md) # Consume packages @@ -38,11 +39,12 @@ ### [Create a package](create-packages/creating-a-package.md) ### [Create a UWP package](guides/create-uwp-packages.md) ### [Create a package using MSBuild](reference/msbuild-targets.md) -### [Support multiple target frameworks](create-packages/supporting-multiple-target-frameworks.md) ### Configure packages -#### [Build a prerelease package](create-packages/prerelease-packages.md) -#### [Modify source files and config files](create-packages/source-and-config-file-transformations.md) +#### [Support multiple target frameworks](create-packages/supporting-multiple-target-frameworks.md) +#### [Modify source code and config files](create-packages/source-and-config-file-transformations.md) #### [Create a localized package](create-packages/creating-localized-packages.md) +### Create other package types +#### [Build a prerelease package](create-packages/prerelease-packages.md) #### [Create a symbol package](create-packages/symbol-packages-snupkg.md) ### Create packages for specific content #### [Create a native package](create-packages/native-packages.md) @@ -51,7 +53,7 @@ #### [Create a package for Xamarin with Visual Studio 2015](guides/create-packages-for-xamarin.md) ### Sign packages #### [Sign a package](create-packages/sign-a-package.md) -#### [Signed packages](reference/signed-packages-reference.md) +#### [Signed package types and requirements](reference/signed-packages-reference.md) ### Publish packages #### [Publish a package](create-packages/publish-a-package.md) ### Host packages From a91526d7223635e5b241c1d2a7bb0e26ec08705d Mon Sep 17 00:00:00 2001 From: Rob Relyea Date: Wed, 15 May 2019 13:33:44 -0700 Subject: [PATCH 1208/2943] first draft 5.1 release notes --- docs/release-notes/Index.md | 2 + docs/release-notes/NuGet-5.1-RTM.md | 81 +++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 docs/release-notes/NuGet-5.1-RTM.md diff --git a/docs/release-notes/Index.md b/docs/release-notes/Index.md index 6af37870b..b7545582e 100644 --- a/docs/release-notes/Index.md +++ b/docs/release-notes/Index.md @@ -11,6 +11,8 @@ ms.topic: conceptual [Known Issues](../release-notes/known-issues.md) +[NuGet 5.1 RTM](../release-notes/NuGet-5.1-RTM.md) + [NuGet 5.0 RTM](../release-notes/NuGet-5.0-RTM.md) [NuGet 4.9 RTM](../release-notes/NuGet-4.9-RTM.md) diff --git a/docs/release-notes/NuGet-5.1-RTM.md b/docs/release-notes/NuGet-5.1-RTM.md new file mode 100644 index 000000000..befcde339 --- /dev/null +++ b/docs/release-notes/NuGet-5.1-RTM.md @@ -0,0 +1,81 @@ +#5.1 Release Notes + +[Full Changelog]() + +[Issues List](https://github.com/nuget/home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%225.1") + +**Bug:** + +* Plugins: exception details lost during plugin creation - [#8057](https://github.com/NuGet/Home/issues/8057) + +* PackageReference range with exclusive lower bound does not work if the lower bound is present on one of the sources. - [#8054](https://github.com/NuGet/Home/issues/8054) + +* Improve IsPackableFalseError message - [#8021](https://github.com/NuGet/Home/issues/8021) + +* Packages Lock File - regenerate lock file when project graph changes - [#8019](https://github.com/NuGet/Home/issues/8019) + +* ProjectSystem bug: Nuget Packages getting auto removed - [#8017](https://github.com/NuGet/Home/issues/8017) + +* Add a target for returning the FrameworkReference similar to CollectPackageDownloads and CollectPackageReferences - [#8005](https://github.com/NuGet/Home/issues/8005) + +* HTTP cache: RepositoryResources resource is not cached in a versioned way - [#7997](https://github.com/NuGet/Home/issues/7997) + +* Logging: exception callstacks are not reported with detailed verbosity - [#7955](https://github.com/NuGet/Home/issues/7955) + +* Change all NuGet Docs URLs to use HTTPS - [#7950](https://github.com/NuGet/Home/issues/7950) + +* Improve NU3024 warning message - [#7933](https://github.com/NuGet/Home/issues/7933) + +* lock file not updating when packagereference removed - [#7930](https://github.com/NuGet/Home/issues/7930) + +* Improve the error case handling when validating licenseurl and license element in nuspec - [#7915](https://github.com/NuGet/Home/issues/7915) + +* PM UI - right click on tab header and clicking "Open file location" results in error - [#7913](https://github.com/NuGet/Home/issues/7913) + +* Plugins: log when plugin process exits - [#7907](https://github.com/NuGet/Home/issues/7907) + +* Plugins: high collision rate in logging datetime values - [#7899](https://github.com/NuGet/Home/issues/7899) + +* Manifest.ReadFrom fails on any nuspec with LicenseExpression - [#7894](https://github.com/NuGet/Home/issues/7894) + +* RestoreLockedMode: Unexpected NU1004 when ProjectReference refers to a project with custom AssemblyName - [#7889](https://github.com/NuGet/Home/issues/7889) + +* Better error message when the plugin startup fails with an exception - [#7857](https://github.com/NuGet/Home/issues/7857) + +* When doing a NoOp restore, avoid *.dgspec.json write in obj directory - [#7854](https://github.com/NuGet/Home/issues/7854) + +* GeneratePathProperty=true fails to generate property on case mismatch - [#7843](https://github.com/NuGet/Home/issues/7843) + +* Settings: illegal character in package source path can crash VS - [#7820](https://github.com/NuGet/Home/issues/7820) + +* If lock file is deleted, restore does not generate lock file on NoOp - [#7807](https://github.com/NuGet/Home/issues/7807) + +* License URL and license causes read error with Metadata - [#7547](https://github.com/NuGet/Home/issues/7547) + +* Unhandled exceptions in V2FeedParser - [#7523](https://github.com/NuGet/Home/issues/7523) + +* nuget.exe returns exit code zero for invalid arguments - [#7178](https://github.com/NuGet/Home/issues/7178) + +* Update Errors and warning docs to reflect signing related scenarios - [#6498](https://github.com/NuGet/Home/issues/6498) + +* Assets file should use relative paths to enable moving projects more easily - [#4582](https://github.com/NuGet/Home/issues/4582) + + +**DCR:** + +* Plugins: enable diagnostic logging - [#7859](https://github.com/NuGet/Home/issues/7859) + +* Make Tizen 6 map to NetStandard 2.1 - [#7773](https://github.com/NuGet/Home/issues/7773) + +**Feature:** + +* Represent FrameworkReferences in NuGet - pack & restore support - [#7342](https://github.com/NuGet/Home/issues/7342) + +* Support "download only" package scenario with PackageDownload - [#7339](https://github.com/NuGet/Home/issues/7339) + +* Add PackageType for runtime and targeting packs to exclude them from search results & restore graph. - [#7337](https://github.com/NuGet/Home/issues/7337) + +* Link VS Package Entries to Gallery Package Pages - [#5299](https://github.com/NuGet/Home/issues/5299) + +* Skip Duplicate switch added to nuget.exe push command - [#1630](https://github.com/NuGet/Home/issues/1630) + From 29addfaf5fa05f6bc07e1b058f2358de2a713268 Mon Sep 17 00:00:00 2001 From: donnie-msft <49205731+donnie-msft@users.noreply.github.com> Date: Wed, 15 May 2019 18:17:39 -0700 Subject: [PATCH 1209/2943] Update cli-ref-push.md --- docs/tools/cli-ref-push.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/tools/cli-ref-push.md b/docs/tools/cli-ref-push.md index acfa7a95d..1aa83754b 100644 --- a/docs/tools/cli-ref-push.md +++ b/docs/tools/cli-ref-push.md @@ -38,6 +38,7 @@ where `` identifies the package to push to the server. | NonInteractive | Suppresses prompts for user input or confirmations. | | NoSymbols | *(3.5+)* If a symbols package exists, it will not be pushed to a symbol server. | | Source | Specifies the server URL. NuGet identifies a UNC or local folder source and simply copies the file there instead of pushing it using HTTP. Also, starting with NuGet 3.4.2, this is a mandatory parameter unless the `NuGet.Config` file specifies a *DefaultPushSource* value (see [Configuring NuGet behavior](../consume-packages/configuring-nuget-behavior.md)). | +| SkipDuplicate | If a package and version already exists, skip it and continue with the next package in the push, if any. | | SymbolSource | *(3.5+)* Specifies the symbol server URL; nuget.smbsrc.net is used when pushing to nuget.org | | SymbolApiKey | *(3.5+)* Specifies the API key for the URL specified in `-SymbolSource`. | | Timeout | Specifies the timeout, in seconds, for pushing to a server. The default is 300 seconds (5 minutes). | @@ -63,4 +64,6 @@ nuget push foo.nupkg 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -Source https://api.nu nuget push foo.nupkg 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a nuget push foo.nupkg 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -src https://customsource/ + +nuget push foo.nupkg 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -src https://customsource/ -SkipDuplicate ``` From 7bb8e851acc5016b72e94cc2d02c11eaabf2aec0 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Fri, 17 May 2019 10:37:00 -0700 Subject: [PATCH 1210/2943] refactor NuGet.org --- .openpublishing.redirection.json | 15 +++++++++ docs/TOC.md | 30 ------------------ docs/nuget-org/TOC.md | 31 +++++++++++++++++++ .../id-prefix-reservation.md} | 0 .../licenses.nuget.org.md | 0 .../organizations-on-nuget-org.md | 0 6 files changed, 46 insertions(+), 30 deletions(-) create mode 100644 docs/nuget-org/TOC.md rename docs/{reference/ID-Prefix-Reservation.md => nuget-org/id-prefix-reservation.md} (100%) rename docs/{reference => nuget-org}/licenses.nuget.org.md (100%) rename docs/{reference => nuget-org}/organizations-on-nuget-org.md (100%) diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index c4f29c59d..662465437 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -114,6 +114,21 @@ "source_path": "docs/policies/nuget-faq.md", "redirect_url": "/nuget/faqs/nuget-faq", "redirect_document_id": false + }, + { + "source_path": "docs/reference/ID-Prefix-Reservation.md", + "redirect_url": "/nuget-org/id-prefix-reservation", + "redirect_document_id": false + }, + { + "source_path": "docs/reference/licenses-nuget-org.md", + "redirect_url": "/nuget-org/licenses-nuget-org", + "redirect_document_id": false + }, + { + "source_path": "docs/reference/organizations-on-nuget-org.md", + "redirect_url": "/nuget-org/organizations-on-nuget-org", + "redirect_document_id": false } ] } diff --git a/docs/TOC.md b/docs/TOC.md index 7c6273159..b8afb9ef8 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -245,36 +245,6 @@ ### [NU5124](reference/errors-and-warnings/NU5124.md) ### [NU5125](reference/errors-and-warnings/NU5125.md) ### [NU5500](reference/errors-and-warnings/NU5500.md) -# NuGet.org -## Overview -### [Organizations on NuGet.org](reference/organizations-on-nuget-org.md) -### [ID prefix reservation](reference/id-prefix-reservation.md) -### [licenses.nuget.org](reference/licenses.nuget.org.md) -## Policies -### [Governance](policies/governance.md) -### [Ecosystem](policies/ecosystem.md) -### [Data Requests](policies/Data-requests.md) -### [Dispute resolution](policies/dispute-resolution.md) -### [Deleting packages](policies/deleting-packages.md) -## Reference -### NuGet API -#### [Overview](api/overview.md) -#### Resources -##### [Autocomplete](api/search-autocomplete-service-resource.md) -##### [Catalog](api/catalog-resource.md) -##### [Package content](api/package-base-address-resource.md) -##### [Package details URL](api/package-details-template-resource.md) -##### [Package metadata](api/registration-base-url-resource.md) -##### [Push and delete](api/package-publish-resource.md) -##### [Push symbol packages](api/symbol-package-publish-resource.md) -##### [Report abuse URL](api/report-abuse-resource.md) -##### [Repository signatures](api/repository-signatures-resource.md) -##### [Search](api/search-query-service-resource.md) -##### [Service index](api/service-index.md) -#### [How-to: query for all packages using the API](guides/api/query-for-all-published-packages.md) -#### [Rate limits](api/rate-limits.md) -#### [nuget.org protocols](api/nuget-protocols.md) -#### [tools.json](api/tools-json.md) # Resources ## Policies ### [Governance](policies/governance.md) diff --git a/docs/nuget-org/TOC.md b/docs/nuget-org/TOC.md new file mode 100644 index 000000000..24591c322 --- /dev/null +++ b/docs/nuget-org/TOC.md @@ -0,0 +1,31 @@ +# [NuGet documentation](../index.md) +# NuGet.org documentation +## Overview +### [Organizations on NuGet.org](organizations-on-nuget-org.md) +### [ID prefix reservation](id-prefix-reservation.md) +### [licenses.nuget.org](licenses.nuget.org.md) +## Policies +### [Governance](../policies/governance.md) +### [Ecosystem](../policies/ecosystem.md) +### [Data Requests](../policies/Data-requests.md) +### [Dispute resolution](../policies/dispute-resolution.md) +### [Deleting packages](../policies/deleting-packages.md) +## Reference +### NuGet API +#### [Overview](../api/overview.md) +#### Resources +##### [Autocomplete](../api/search-autocomplete-service-resource.md) +##### [Catalog](../api/catalog-resource.md) +##### [Package content](../api/package-base-address-resource.md) +##### [Package details URL](../api/package-details-template-resource.md) +##### [Package metadata](../api/registration-base-url-resource.md) +##### [Push and delete](../api/package-publish-resource.md) +##### [Push symbol packages](../api/symbol-package-publish-resource.md) +##### [Report abuse URL](../api/report-abuse-resource.md) +##### [Repository signatures](../api/repository-signatures-resource.md) +##### [Search](../api/search-query-service-resource.md) +##### [Service index](../api/service-index.md) +#### [How-to: query for all packages using the API](../guides/api/query-for-all-published-packages.md) +#### [Rate limits](../api/rate-limits.md) +#### [nuget.org protocols](../api/nuget-protocols.md) +#### [tools.json](../api/tools-json.md) \ No newline at end of file diff --git a/docs/reference/ID-Prefix-Reservation.md b/docs/nuget-org/id-prefix-reservation.md similarity index 100% rename from docs/reference/ID-Prefix-Reservation.md rename to docs/nuget-org/id-prefix-reservation.md diff --git a/docs/reference/licenses.nuget.org.md b/docs/nuget-org/licenses.nuget.org.md similarity index 100% rename from docs/reference/licenses.nuget.org.md rename to docs/nuget-org/licenses.nuget.org.md diff --git a/docs/reference/organizations-on-nuget-org.md b/docs/nuget-org/organizations-on-nuget-org.md similarity index 100% rename from docs/reference/organizations-on-nuget-org.md rename to docs/nuget-org/organizations-on-nuget-org.md From 17e5443381d4c1c206c97e86bfc8b2daa40ffd1f Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Fri, 17 May 2019 10:51:22 -0700 Subject: [PATCH 1211/2943] minor edits --- docs/TOC.md | 1 + docs/nuget-org/TOC.md | 15 ++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index b8afb9ef8..bf03c35a9 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -245,6 +245,7 @@ ### [NU5124](reference/errors-and-warnings/NU5124.md) ### [NU5125](reference/errors-and-warnings/NU5125.md) ### [NU5500](reference/errors-and-warnings/NU5500.md) +# [NuGet.org](nuget-org/organizations-on-nuget-org) # Resources ## Policies ### [Governance](policies/governance.md) diff --git a/docs/nuget-org/TOC.md b/docs/nuget-org/TOC.md index 24591c322..51d937227 100644 --- a/docs/nuget-org/TOC.md +++ b/docs/nuget-org/TOC.md @@ -1,18 +1,19 @@ -# [NuGet documentation](../index.md) +# [NuGet client documentation](../index.md) # NuGet.org documentation ## Overview ### [Organizations on NuGet.org](organizations-on-nuget-org.md) ### [ID prefix reservation](id-prefix-reservation.md) ### [licenses.nuget.org](licenses.nuget.org.md) ## Policies -### [Governance](../policies/governance.md) -### [Ecosystem](../policies/ecosystem.md) -### [Data Requests](../policies/Data-requests.md) -### [Dispute resolution](../policies/dispute-resolution.md) -### [Deleting packages](../policies/deleting-packages.md) +### [Data Requests](../policies/Data-requests?toc=/nuget/nuget-org/toc.json) +### [Dispute resolution](../policies/dispute-resolution?toc=/nuget/nuget-org/toc.json) +### [Deleting packages](../policies/deleting-packages?toc=/nuget/nuget-org/toc.json) +### General policies +#### [Governance](../policies/governance.md) +#### [Ecosystem](../policies/ecosystem.md) ## Reference ### NuGet API -#### [Overview](../api/overview.md) +#### [Overview](../api/overview?toc=/nuget/nuget-org/toc.json) #### Resources ##### [Autocomplete](../api/search-autocomplete-service-resource.md) ##### [Catalog](../api/catalog-resource.md) From 84fde4fc425fba0d2863e349d9df774fea358183 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Fri, 17 May 2019 10:58:50 -0700 Subject: [PATCH 1212/2943] moved art --- .../media/nuget-gallery-reserved-prefix.png | Bin 37998 -> 0 bytes docs/reference/media/org-add-new-option.png | Bin 99008 -> 0 bytes docs/reference/media/org-add-new-page.png | Bin 172023 -> 0 bytes docs/reference/media/org-apikey-option.png | Bin 91382 -> 0 bytes docs/reference/media/org-manage-option.png | Bin 232248 -> 0 bytes .../media/org-manage-packages-option.png | Bin 43725 -> 0 bytes .../reference/media/org-remove-self-option.png | Bin 121936 -> 0 bytes docs/reference/media/org-transform-option.png | Bin 98959 -> 0 bytes docs/reference/media/org-transform-page.png | Bin 133762 -> 0 bytes docs/reference/media/org-upload-option.png | Bin 176591 -> 0 bytes .../media/visual-studio-reserved-prefix.png | Bin 12353 -> 0 bytes 11 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/reference/media/nuget-gallery-reserved-prefix.png delete mode 100644 docs/reference/media/org-add-new-option.png delete mode 100644 docs/reference/media/org-add-new-page.png delete mode 100644 docs/reference/media/org-apikey-option.png delete mode 100644 docs/reference/media/org-manage-option.png delete mode 100644 docs/reference/media/org-manage-packages-option.png delete mode 100644 docs/reference/media/org-remove-self-option.png delete mode 100644 docs/reference/media/org-transform-option.png delete mode 100644 docs/reference/media/org-transform-page.png delete mode 100644 docs/reference/media/org-upload-option.png delete mode 100644 docs/reference/media/visual-studio-reserved-prefix.png diff --git a/docs/reference/media/nuget-gallery-reserved-prefix.png b/docs/reference/media/nuget-gallery-reserved-prefix.png deleted file mode 100644 index 6493f8b2a981d018cf1413129f367b2614787f56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37998 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 L_CU2chGhK>>lt#G diff --git a/docs/reference/media/org-add-new-option.png b/docs/reference/media/org-add-new-option.png deleted file mode 100644 index bfb4de45039fc056b3ec907046444a839cd52e72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99008 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 z%0A%q4~_C>=mwx@$eZ`&swlh#&!O(dG$l}fpr(>YpC~8+rk*iuzkT1yL0*m#mOtb& zcfOahSd!w_lzkfyktxHuak7$4#8*t~ffF>R?*!dCcq8q) zrMAr9P9LXY6U>*q)r}=xIzV|_=~CANwIr0i3X>Q{+3GRSvnfn#L>z?&jr$-iaS#FvO$_hH&L{jXOj_Q< zp#WbRLZdCvBj?W{*l@;ZPxbBt@5U%$g-omzby>bNp~KQqqc}frd6*ubqtLrtE5ah+ z+bxGJS8pQKVi}1_+nZuTn_}i79mfM%cI7kR2b|bwWcD9b7!oISwDuNPQw9LpmZk>= z5}72Lw!T-g1S;gP+o7&4iw}EMf!sw!5$>Pt@1!475*Wt@L_64Pkw^K7Ma(HK{eQ1{ zTHV|8sS=mXxI+Uw_nrDpHH`R}H|{SP?eOWn)OQc!o!z)r4D-;DSw37Q5S_~kv>$Si zO#Kcm-TNdf2b zqkr|Ifqh<)pO9Tq4+#!`w*tl} zg2h6WeU%-(t@>nF3D5#{F+(K!;YsjEVp7;s^-~mL+ubvES&OMD#gVNc41VjynHj)r zm`u{pSo^s=EwQe6Ou%_`LQk_3r^el-F9krImzw_K=XaU+i_i-{$eGpSL@_9@ZjvV{ zn9k}e$P)!~J?Li~7-MV^Z(XlwbBfADNl1unU%fjrsJc?JW=1qp^^-m@c;RTrc-@`= z3YI}(z1{eo82PsKqd*s~gJ3bMP{ zqSa9L*A*jLBQVuhs2C_JK4G4(>onLSzB-u^ZvGsfSs}Q#tDgRq}GYfXUb@v&nnw2TU7GY9@zX6Yj=1JpGrnG5s?ig zdOg~vj9`zF;Sxj4A!{*K2;t1QM7^$Vwcb(}Z7sOI46_Luf${R5qWn^N{}?mgo2ucn z&T@s}wjr{>P5bZrcLhT`D&i)Tjue6fWjvykxsm)}-mnk+%vcZ4UZ2p6cqp-a^)b}1 z!X3~bo>-yifBElv!$~|c{dMwj&|RoHT+CJ?A@%!bzm$JkFd?XFcmd%i=3R6@n#j;~ z_VWOhXP#R&j9{s4t6!udu`)>V1z9Hy#a6J5c$j&2Zu83?lC73E;V{d=kjpnjWA=tM z+;>+Of$gOmA?4vUkXyWxZU_iS|UVm!_E5qdbb&XHCJYa34%=Zax24Fl<+R_e;D zGk^U_*2d_WVfPKibFLG|1feeis-J&(>(f@lV^lB4`e}$a46hfAZ)?_`V@!s_;R*1F zKCusyT_JW+61krsKP!XxbDOaUf2p1a#*M3YD$tQ@@TPw4#d0?k!jKvz{f+7d z(zV_wg;dc}AbT(Yzf)2uJ@7;opA66PVYd*X&mS+pYV^C}p1kKe4GJ6V46HPof*WwJ^&xSsSu8g_P{g-&JuhnY?iF2G0XHDK&cwa%nGt#^9f-F zMdMy*wRHFiV}uOl-ly1G8m#nx4WoUrveP4%2fwp_!Xu88`p66tOODHw>He&%iJ;g_ zo(6Cak6w?YQ?KB&RmGAX(a-4m5%CW9C<@q!P>!?R052w?Z+;{aI&(Ye_|xn>qf)g*>PZEha}NrqSu^6n`^o=7qy|{3heJ-XBO)G zVm_p2R#dogaBH@*LDp~ctFluBVdXkO{LNS4OS~k~KUpwV)rX)VLOh7yck=FIl;Yn6 z84ss~u3jb_mn7zV)g!V&-ki+|fbly2p=$NiKW}*JY+AYDMjU}Bq@#K6b1Tkz3162U z5f@8SWwE}o@wS>%_|L@dnQliPTDO8? zAX%dlIEym-^NFo=uI8;O;$g%aftcWOwFX&i3*-8$5QBcW>+9Ef2>s{Vb$Xbq;u=X6 z@ulD}^D`7EyRc%ssn_7f=^x4^ifTQH^wWA)&EC0g>N3tdxQ{H`w{}G0n!Og2?>>l4d90Z6jOWPuYFo zWQp=3E|-(a`gYt^wGWFE0xdr0sCC`3yLfI7tjrlp<-{BkYft@7dti4G!OST{t8unt zPy>E?{?4{qA~>TO;}-)= zoM1#W;o)YWd+L3D7U_mj{?o6uN|j_M_UW%ON)Ru`2Vab)vlk39EYxpHNe-+>0Xj}> zok;rWg7D(R55x{w01GoT9R?e_W*O+DuDD@I0#;JZ#6374kJk|f+hhVK$7{S0Es=IX zZ9e!?tlc6@BA-SE9^l{8aJO$fhNsd!72hAkM{YC|sSvkci!qIQI;2L)x?F z{f@Rd^c<3bZr+qKx>&sLHMw0$-9moh2IKMXH3-lGz0^>Kl%+fk7f3Mn}h&f|JYS@in~`u}|8 z!d}`2SiOUc+-PopT=(0gJjRgYA%aVFyAbGjgq(dHqsc4vuD&?1wnJt(?un)>GV;)L z|4^>9*?xYJXEHLs9tCIeVkMcGJ~dxJ3-D_`aBw_}PD+^pQ2h)lvq|Bv z=b}BG{ai&*ZLx(KN(% zuz^RopKqzB=+MHmsGricv5bX*)GB;$V{KxnpCDwUZ|wt~RV8Yyh#=X6@pB3LkBk;n z6@7!iu^|jKN%rrsjJQAb)uUHCA;spgU#>Eej1rxs7uDRJzrZEIcHVGt$Bu14fnQ#OYLLWg@B8+_1n|cHu`Ye+)^WhbGVNW$0)>&lnD_st1;V> z?EZ!8Lg9EE!aa{t2YROtWs{PWY=>A?f24vtjuksp(He-ARo<7`@YZ`GP&4slUQ$s) zh~({c0=c}uIaP2vKQG`%%sYOm7Wr768ditp=ESiVAdGv5R?mumTWFJOGv#C%`6@$* z6|=gl9*0M6)qge^(`Yxt;bP4TeRSb0a6g=DlIGVqrScU0BDgI8(I^4xxc(KjdSFbT z_8|SNhW+_k|H1Lapp9v|p}yVs-BR?Li@EWPmC4Nq(uCpXo>dlnlVS0IBw;C4yG7!) zaPHp{w=5OuPu%8q+=)djcsxyvgLmDqDA6M#%QdG@-hffk;~lljZ@;URbucn}XM&?^ zZ#ojvC628s3_3^{P*WC}UGHA|irmqVa6`EGaHQ17`yW9tu`(50PVggVTJlV1q3P-n zw--y9UI#yW<-dGFLD%44*wjiCb(O35*}fda4(=7N(qjxsV24z$c8bJy z$X&4x0eaz;J|0GQS)`iX#>~QAO+wbH72#dvwu6HN=+Yh;-{V0(geRk`Jhr=CW$3<$ zCXfb6t1pJYW|Qge7wjwleTi2RR3F*s5Q1o612n;D`M{m4k|jS9?Pf;0WcJ7YEMjYS z%fPzE%s`H4)}x!qd*gnjkbzGWbhpe^#|GcOWwsluHy~>xy%N3gzm0!lIt8D3dO#3t zJ1v8gSYp3)zc(`?CXY@@A)u_b{4!ifA=lo%fIVHyOaBgWOT#Y^pGI!jLCS%WUKslu zcC(Z5N%+BvDO?kD@$*!hTSNCduJvPGlEgNj9-YE~l_r9#?gvC4#QX#j|Fm}j6F3+xH^b$Yz*>C$XLm~ZwKvH?iaR#&d-;?5H@GYFlG%428|J=RF)6q2 zy#cp8Gm2{OZ@gRkfE;-3-1bAu(*&+okWbRPR!%OG6G`ZsT8soXNl!s@y=*0Gd*4)V zX=6U!EzFqNy4-ueHabf-FkY_(el6iZ)k}wzX$o&w9Bnra&dqdYU>;XJ$J8EFlSE!tXo0q`wX+lto& zcWnLwo`{>yLT{9KoNQ0tUI)}MG&Pe(CJ1+}TtR4ivDK`FkOh1ees;af_OHQeX9=a? zzQDMx__@!(_ORYIhLIUQXky(DWJA(fw~KD;)bD>mBiuCid}nOD+k|A$*F@!zqp)V~ z=_kj#mC3(#6)&~*O(9$tUVg90c+9E9VgHrQW6%uZkjd@h6-so}XI4@TAH#G&LGjBiXuU)`Kw_8XFW0#gZSB1N=U8K~dg1^aodMO($ z*)YT>sEeNIr(BFV{&uSg+M6G?1hwF=>opK-e0(`}B93kmkg7FaRGcq)KyYu)j#EHh z?v>9ZF+q~`UxWI`4Wn({|u_64>H3S zx1ot%DLK{md5Vt?UsM`Mub37MTFTo&YlES3AR|{G^#MB&QDi(jPX|0>#p%b|vZmCb z-TWF7(1l9l06wjy*srzQ{M1moMwU&I1TMk*dx}eaBF@|WPM^Zvn5?@6(?DY=*C&|1gwwCmLk#YM;1)X!epFw( z3Z60^d(@aNlE?RT*F_|5-@8AE-d9p-);0R7@V2)>eo)Ep-s0W_NVpm`20JdvnOkbu z;EM6_NcR2eDtZ+!nQIo5PZ|}0+IO;mc+(ssQTdvZ)nN>2H8Nh@*7cKp_9L!=5a_kr zYyar_#W+VBx+7pj#!CcDouy=}?~|lEhRTfY3di3mTy8(GvXeQnDWP;XU`DSWMg|Il z@`lnKa-uVs9O`SiNQ88@CbGLFEs|Y7Wf(*`Da;S$H2V+jMSJ}C5U-~?z?5vN%aKeR~4BxRSYyG{7zUNFE{HC zuKF~vObq(4T0@KoavI&}PcyW?!!Ll14t%;z01u)MBn;VfI~Q++JF!6l=Qu@-xQ=u> zxZ?T;K?ryEJK#v`8}0mDlDA#w$odCQI7uX!Np~>MFH)~IcfwLVOEnBS>Kor=1$+** z5)#8|trr;8D2X?&du7nw_Vz5`oS1pw6Xn(l6$!8flaIofC_C!1jp4{s;suF-FBWME zDQ5u)?CSsp>tMr(D4a)^K3VPC}ZreCNMtlJ=CHMJ+jZI2hJE%n05y|l zvUgF%11l@#Lw9%R=H4>Xy`=E7>j{(_*0K@SwwB#H;B>N4sWT`9W_yeg&iIWyncBQR4)(X7n4Br@|sURJO8;Hj*_FoL{ zxuC?!iWz6D7HyZG|B0|a;IOBFMZLgMo{F>jEB5QI1yE(_g>wwp8vOvzTT zynC=|g}t?~F-F9h6wkZC7~i7XT}7$4={{nsd{^n7O|iupi;6MNkcfy`rYt7i2V=HF2 zu)OIoOo{l>tg>(XfHvn&-L$Bg=(xxqoNHoX{{qYN@`+XeAVqyzGc}3xUDOubqy;Sd z6fF^y@K{V+&(s>Vc4SxH(XYXTYWJioMy8pR4Zk4|R@keBCMURA0|Z>Fc%9seQ`Q^O zYJP18o1fu){?lgGST_)K2%lG%nGvvITT647KFf6BbEVyyi1Gz7m)(C=Ts>lQ;W4z*z02D8a+KjC zzslWuJ}OM_ZI!BSvwcJy$6chMp3;=U-r%6IuQ>T;$;?UpOmg_a<+`L32Xl5kX}y8( z^pHV|CZP^lUu{2UEdw}26Z7<&3>@6|f^T0wt17lOI3{k(Ssdeg#4Z#gw9@$>Xo$4{ ziG1bDwYC&ndK0EvD7h7m=sNUlU8Zc#ol6BIAJ4=pzAiA`ZcIkEQu&4i>uQu&D?}W; zdqGE>j68ensH?`u1&o*&mN{nPxxTn1V_gM|bHUYs6EO=jhNJ^1wt%npl)oggxpo5qxYIjgFcloV(mZk>BY$&RH> z9@zr6g98SBv$`;o?!4P;hbShe(vJ=aQ}6b>&sau*TIm(>RIi^tFc(Qg;8A9Tbf(>I zWq)L!(A@olwZDgny%>Y$XehW3oVQq`@EsUnjZg|(UNJM$`nen>Ft0bX9zM>BnGXb63hs(5=w{5Zvdt zy|2UJE)1D z{2MaQV!7>2^%Q3G0I5TiBsg`+?T$VsjpsDnji)CkNW8-96=h!^ zAASDI+$UIakd^!^x*)@gt&32C&v^(0>RwIS!&4s9n`5@7#21FuOhfYCT zQ#@&C3Y13=P&29*^Xq8L+asZ)0*OB_NJKH?(7Un8&ff(0%WT0G(C=UIur2&?@)-yW zSXQN@lgRC`0W8dTQ-7SwXSoK_eXdVUoU@yJu?&5+PGl%Ep3ku>rpn&@gFk!LPl9*gA%ja2mB4lNC}S%3lsH z290&a@q@k4^%sTnAc4zUEuTB3yZl6b`D%V&m~Bv5-)2#|>+#cek$xB^EsK87fw9|V z@q%HQE^+tgRXv&Kw)zQ3yWZ-tuEy@+K@^?20B!Ts;M?rBMvSbu?LH zax*=lPy$uM%Y!B5uO$nII$0m~gLwrVNWe)RAtU3nu*POfOT{V><8hnkTY)6m{*B{Q!SUfgn?qnccB=NXTxPV|{EyCDa< zlWOTosQ#6T^nsy;wPg^_J(8}l{Pg#mnKPX; zHQy4s>LY%>P^z(q#jmzF( zC1`h!CQsvtsAg*Yv!|MENL)Xtf0aqY>F8YdZP}i>>zcy5x-^!`{#a6xtqG+|G82pZ z3C$g~R<_r2`Z4**>V~>R!7IK{bon`VvfQ z#S%6MzAlPz1W1H5JZ^%am!1YsAym?{>`v1ca%HX?*%F$KoEUn72oNC_eAr`tb&?YO zCOADm&wg#tx?y0%BYAVY5OnT}q7QLLtjY#O@ua6sq8HaXOJ0=< zI5|I0-ESPKmuTw>;HA+|Og|5v)lhn3t~;EdLJ{zd7&O~ChoL}u!z+A~nS3Ly6V+I? zH-a<%aMb?I*nla!9-COyR!n9F9o|N7v}O;MzTp?#_Gs&_l|MubHmdgPZ>AKqzE9xy z)tt;N(vI%DN20+jX{5~14v6WbX*PlFd@j+^mTL}^JLEsOye8IcIU$Ox_Qh_DF=Lor z>TNvbt>|!l6%8T?8A_aAlQmN>3v0?>@9WFtIp3F2=wUt*o|03)J-2(r@fRlfPC3@y zw*(JQTiwZ~-LGC%?sk@Z0XsW#GJod%4PaKpQm=8Tj;C;WzZK0a|5YJoAdGO04O0GV zIW>Y4;~X_5kSiI(aI^gB+!Sf**oOP$EN6_S-RW?I zB}KS^D@!qwbJwjmx9``%(0Ft#=64WVF0qiW`GKEj#s0xbK2{sxWpOP4OPZfM-(8) z9=%z$HDDQShdN$i?9Et>#UC2aA`Q~{>7x7EuuK<;SJz$`XU`3UQd4KW_??Z&r$L&n ziQ<6LBPaVY+n6(DG%D3JEMl4#z*$hTuwK}N)V{H!gw`kr+0**IdM%~CjyqPg{!wHb z)qMYNblvh7xGQ+G-Cwc7KJUu!IJ?#eBX9$Jqww1ozL=fd$aZaSg+14M;KMnqArpsn z*SZ0YhqzD0bSV(t^nR<^n%!cW?VdIsw4z(dV;ZD8t$M?@by}7F0xSvJpOo*TUPgcO z;|Imr9CNG7QhXB8i+2p4N-_u*)urDcc4hF~8Mk!O8fDG)HQ;`Val&)+btZd_ z-}za1)4{8`B>fT}eVFX8^;YFz6MEIVdXI3gz`@3uk!K&h`o*akn}BZlVvMtjal`7=;EU?_mc8T2Zij(-GS{L`rni7X%zz?3hxPm`sRos_8~mG+Ph7;lN%sB_ zO26|%IU?XHP4+&`BDqBwB;&b8IF(Os3gn$7+4Kz^=10Ze+8UPO6rAhw1 zSvq7RB(ZmgDOK??APjVb)0UMdAd*qusFDRZ(a6Ywx0?m~M8(Re3{9)JE(=XrgST4K zu1B=Mjm;oz9B<3VlWMCKz|_H1H=lB)N@Wyr;rwF1D{PJB=qi4FR&CgHZ2$JSA9Uzf zcJ-_4S$kT=Xw<>sb{ItFKQw2h7Ip**U-B+eL-g z`EB}A=3Lc5+4=jbaBzVJH0g;5sB(yKa2u>@!n@{rzBirTKD)eY=cD3neq#GW;%IPv zqJ_fUMcK@c0O{TAn}R(d?_6)BInkc#L1&@)u4;Q-oqUWt*@X_`*9@b7x*hm=5ms)y z-;4_H>n$JOfdxPYoU9G6!i5zUoP{`Y%c~x#_355dit=o{Ly|Un&dY4KrP@mSOT9lf zwaR-Lzc@6?l~1$7u{J5pi8t$3h`^eq^C!JjpZ&bPi#e?rgv(_g-V*zl3+O8>90G)L zi^+(zpD{nc!NEE9oWCK2gX=MxD!-B8v4(1MEVsv|?VIAj;QN*@0oQk!R}DhbvKkq# zG1^qPu-@wNq=&SWBedH+wmKbrzGL48_zkR=z!NuMiL~PcMy}&ezVuaYKQE-5DQM^efCdyI5?71RO-WD3i#l5`cj2EZlWdUXXH0;xq|CegkP?u! z=h-v@T+J)z#)G-D>lw~JGkoHm(1vpIFoKs}@88^~ynR_JjWYYqaPODnQj7i;&(EJB}$D69R@^sQ2@F z`1LMzv#%V6>ggOLnPn~nXi>7*(MakvHONoVPbXzb2S?)Rua;ObOB~=M21*Py=jzjF zl=wx~DvK{%uQmDGG`8iAEXOG`nXMe$cap;Bp5#|7rv#Wb3BeiOg- zITF8*rLpD9%D|m(W5Xf5%px%=hH+syUOy-3#K)@dCjOwm)#kU3X6fiC&Tdt9xk7e_ zQt>UHe6o;`T6$uU33JQW{dn;Bxq)bklZI+(ndh(fzTVaHBDd;tKt+1M2-Nk4j`Vjg zVr zl#n9PQ8Iq%eFLw&l@M;^7i##U3e&x?(tV?Ii>b%p*T%7%$$r3Lfj{ZIppgE>1)cSJ zQ+8bYrGIBLyT(fpDAyH4hl4|?yvp7EbQ4@(f0zd6MnqGTj9n#VT)UQo9aBOjNDTto z?q1l~tIbUeJjcQ_`?aQ2(0I09DI-sqgHcK+{Y_q3*_`G^WK&t_dR^Mf58f>MMq%O! z;vOr_apsb1_dn@S`WGoG`7;Uwy1BGCKz?5X+IBwOj7bCHctw@RxQPT| zFYkn|0oolffzI3E1Z!MEZIlnbydM{4A=I;9k9g%ZL~bjS(gx$&CSGjvoz>lED@m1|8Kr`sX>aF=6spxe_esB;+UfU zm3v8u5>Udu`kyyK*bqejXZ}A0{-MTy=+k}323Uh;okAO4X|(XVS2JgPS{AhBvVxbV6qTv){jyhVuqiz<8Be|Xl1!~PcG zjhgqz58>ySa3SdB6SsSnZ#rL|dM}UdbIE_nJOLhyF5T1$VXnr_M`%{rNY?hw2$)ev zRo9XkZo?3DUVXILE)@LUudJ>0ENpMFKI|oO<3{8(!(XkyVHms${OcPoyt567ycC=X z6srbHpbJZ}ZNmt>k>GgWsRlrDth;@vuFLd~?*;yz^1rGoyoG=LS5@9)Eg>0B)0;=} zdt^8aA$6c_;|%)Ade~oE8#qVakN-@U_xQm%IlKt0)$b1vhauPAJk#F1`Bw=zk~kE& zzbB31v%c0P=x*wUA@@>*>;Jz9yn>x&Sr!vLGv~|b=8xAU&;EB$e>eK_@&7{U{Wp7r z7j6L|Aw}TARX!F@w~d&tUDDlTwK4np&^@@G%|UV$T1qxa1CWp~rv>N<=Y;$3QH8U6 z|FvoP@2ihM=-+ei*2EMoREv`R%GI5Db>;#`VvgXykcdx5NtZ+x_;-za!t*zj|6Laj z4r}ONl>7HhqZl}>f2aTY{!f8_sPTVKhrsLv1A7Gvp@1XJiPn8hKhGqU8F@M^?KT!) z;cj^Whmfvz=*urAKm3V}l9!Qc$Zeg?8x}Zt()nHQ*t~ZKOue3RCBjM4KYmO*To=*a z=a)QtEGh*1Lazq?HI#oCV54T|?gcerha$~)zqU7LGI`&Ep1H5d;4|sQ4>OMEvy3Wv zw#5cLJ8g^9Hb2Y7(?CA0a3&QY<#Duhxe4u}qhnFgF38|NO+rKdwd&!SfgM5bVjZya zBc^E(|M2ngFWYOpdh_9tD8-vZQz<8LVX?vBh{yidgftTA_ll)VmLJ7~gL@Jma!%6G zu0_)2UaVXHcay{cqA*JBa*H-`d5_GfHFJH_4$14rKaJV_Zt&qnfgKM=*FYa(m2RD` zc|P)_kq0zCRCA9dE>}|pA(xY{emBFy{1Zo@N{{To)zg!#ZoNX(`qHybJ}Cm6*_Tc-r#CS_is7!u%)FuT0Gzea&~flLXlLr! zXjIMVIoQoB8|2Ka$34P48Z z+v-m|KicRCQz>>c4nPie2d<>RP4Y^0(9!EYQjY5ukq->cc&15EpSuN%Vhh^-y+w~R z*?F$3@eaSo0qSzOIA+3Sv3#8&TH!5d+fG&0OcZ*n_jdgPq=J^SKKG)Zv)CacwPYU3 zqp(06>~nakq-Bk3!c;NuW4^w&Xc|%J#jxh*ON?$sR(VeG+7U@KB%cpX&IroFxZK&Uz@X_pB14*pMwb zyKzuP*1GDm+B=%74iXE-NjJ%lmN1HOI5^y%cApmd%^a}y?wvZiIG=X!g0GYPZ#J_H zX{3@yP#TYxwG{McB`brCVqcFxJft#4!?Tt5Eioc@|0 zv`rL9@-+N`TEz{~Kth;P_)leQwi)npW9Dg>^NV$du1NJaap+Mgu6szp?fl~i4Dxtc zMFfOE&lS#j<&#(3k8+^ZCsi%flgsAJk1e2>X_?}tg@|Ltdm2@X3U;}Xk?9AEx3iSu zX(&ReUhXPVEcYjhYizts1h8eNSZIaGf^H{%<96uV zgsIp8%}Pl55Bf@vrwLh5mvobyXf}G#_Ue z&BMxRJp!!~5qC{8gv%6oO!aF6sk+Pf0 z_iY;fkDeXXuDw$35+UA~R#9Vk#nJvi1^nF>Q=VOw2D9i>AL~4C&}C@Ys<}U`Ubi~c zXM<-rUS?`u&B9{=P6f;7eW+YQLS&nzX3Bdzz;BiPwJ0kFjUq)xka z@5D!xVVJBZ%#_8cqTyeo6g@tw?%AuPoyP;pECczbReujNv3&Y^!RF4C!K${S zo!D*rih(PC)Yc|`p(d9p7^qD;AXrz`(RG(LV2RFEeROA;*f!rC@LhYUa5ZmqqvI39 zC(|Zit9(wdcae5AqIS2FxaH|OlCr>Il>S8&=Ui4FQ`=_mG6b4&xpDD5D(ZUFXU=UC zUxL0_f4Be~lbW#WDD`tt1Y2#iDTl@AJ)DKu6Eyz zYO>irmf(LniA}>N0W*96?J*T$RL%J^44Atwb(qQA@LUlCVd2X=vS&H%Qq&Bi85$R9 zjcpdzl_cmQd}#L#MkmsGjv$XVKkbCYG-3yiBkwEcoAbFNIiaR3#BgV4?bp>O`&f>= zJ79psegi9JrkDPeI^&!JtWnd!uBse!Bvtx|`{r^Jzvv)okZX_qIBIHiHdHF@s*YW% zy|$I)(g9c^q61wrzBQ_v+GbwVIh&Z4(V0LrY>Jmvm2UAViqc9xTouDs+Wl|wBn|gu!&a~g%gFajh6+%(}4-h&?j~m zcjA++>xP?6UKL>3XcmY)xvA%(-l3dp_6u;$jT|39$UK~Rz-50H%GQ_)4C{f3JZ`03 z%cmNY51~&gHF6#brR!WHhDZ*J%rkk9kempn(Wq(7iYuE+mzCjHKEAcznRu#d#8h$z zKXWff^MHfV8+&UMjMc;9xQ?{pKL9IGD>1`_x8_}3&sjeQiI&NaMkVRFt*{oV9#yE} zn7G-NH8yXc&Q5=NF+i0peD9|wVpBbSd7M8xzf3eN#|7ETr%GEK;06{k&J^c1$h)U! z81@vgwU#d)?&eKLzqV~!1ZQhKU(75Pj=2Fwr@eSg{||fb8P!zNHGYd-6ueZ5Qba{X zKtL%$kfsPI5LyT&bm<8J1p?Bsq97o>gVaDm2qgpwO+-O@2?-_iPC^kvD53q4>%RY= z-gm9{!}IA~&wMzUbuuS&vd^5EJ$rt8PlO@^BL;bX;w6vGdmGCj1m4xcysFHcr==YY zDwnYdGsMd%Km_|P-VyC-UFJI8%JiGLdJ^C?5zn*?cInnZoa-320?4IZAuJB@A-od( zER(Ss>BITe7QQ8`t&0{YSh@wa+;7d*o|Mbhg1Hwnb9C}jp;A)d)eAFkIv3M&OgxTz zgG(%ZU9(ryssyZ73A@RwOX}@tDMt6WL1a;yHvh0x{UqH8)`-hZo-a=Ey7qISutNd6 zZ)SPHe`di8IU(5wUJQD4IEN3m`iJG(k-v%km}QWPBSYIDzLkludwgm3#8ip87^_%C zH0Sy<-uc-l&gv4hS)Z4?^xWQ0-qUjn4&9-}4&XT2TN#J#WxDF9R4beaGyDdVypwqQ zbdFs<@QqxAPbG9$ertD6u|n1b&x67KIj#y&jxQhmvB--f$-C|rrWO9v!W7XB_~C5 zg);3Wpt4?JlD08;E~S!!E9#feFhN{33A#$Y(1;I@5#|!cnnXfoZ5G`n3KdgRFM#&5 zaOTU{0SZ8dpj=TJSXoKltM{ow6Pe)foS?f66LI{7CuJb_D?TCKkf8ylPNio6X1J4U zPDoze<=h}kd2P4dQ72&C;^lS)fLbQn`LT-q2{q<-ZPQ=9Uu2wyQ|yhDjT}r3a|Rbw zw-!5=ik&w%b$C*q$BZiQF4xK$3z&AQI&Fy;5_%+69R(<=8)=FvSW78$t091TjGLT# z)9sY$ZNEP?rM?N8;K-XExAVk}l9?-SPwJLKU6oa;(6xPS`cU$-s^MH*+t~F(qm;^J=e4qfb+Uu>2R4z=Icg-BtReD4 zQ}4-b8o?}r?7eXnEw{0-c?GGqu|e)XhYqIPbpaI&0^007mv}*CDTIBpY-OV2DDvn|Aw~NdKb9Fi#&1c zqTO_UVI+8>JqYtG1-fQxiMWU3h)L&JaBgzQD?25Wk1@@Zzichs)8~VzS1orYUH@jI zQos{;<;qU5gYA+!-FKArmJDi7kYCq6*Wna0*+HraCy#Va)_6}>jj7U#G)!e6JF|ym z>gBdOW1SQ9ch|$~dli$Eu+hzENTD5Ul}G(@0Ui6a%G|4N=pgVBJ;uaFGDWPT z1)jvs!WqYTilz-J9N*qEHc-yb0B7EyIv&~!gBzagBGnGXJ=WJMw55?-07?x|RyzF= zJUaP&%H^io7^YzN(>Q;f2;h_yTOE&)t5ZiRE4;i&7@(6a-`lCIDD=oH#aPtHwX8WVDqE;APo&vu{ku{y_9Aus zXHw!Ssgvd~8DPO%;W59q1> zeQIAvq2!%M@Iu=J@H{=sdSx*tR1Ygxlz7>`PZuEk<;sV$BwS182;Vf7_l=p16c~ehR%2!#w}bOe|rVts{~&;EZRE|Mar; z!qf&_>~-I`AG-h;a4@{nXM4hK0ZPn!@8U3$?(-pd=QW<1GXFp&GxWAeQ?gYNrks35 zE;gRCW^|k*1wWqxN7T1zqYI6Cx}QO9TRIYqb7tEVV72Y|M`34oW<;`MiBbnW_@qgn zX>^4}+0kvlkwi}YB+GwzM(*BvW{k%w?>4H@J}i7=PTvA2bEQ@YtWph~cb&sPvzH1> z@{_x2-^&ZV&*Lo?1`QZ7f16VXY-ih7HqQ0i2~}}iN>(yi@T!VP?J`cN@JiIk(UB5r zC+`>@(+s;rV1?|;f{v`WkKrWd_u8@V647npFvbO5@T#>)_yO-Eqyk&oE&kYcF zqPvUBPn^nkaU|wFGcV3Ob_^KobB8}Jw93LaM zRI07|q(me=-~$B6l|A8oOM8+(`u(n48em}2VQV$4f4%ielyG> zp_p@Ym!-hVNT0C}8PJaF1~Xel-KjpbH=TD6CH}ylZ>Y29F#G)x#~0ZzS!cv-sUcIS zJ46b47ezlozZ_mRU}se&)2|gyB0klo-%YctXth7^?9wN?*EnPtJPGsiWlp%tOEpn_ zZeFWXHc&jt=%N{WcU`N}1&1HMp1KZEEdKgb&FDuX7p7z~gqnWgN=wNHi_#yeNv4GL z1M|Y>$IF#4jHNrfcvWTNY~B_4Up#GsDTdn~@7g_O=PcyIzo2eT544MiTX zf?ZHWOnA_4f$onEKVr2-#L`}awMG9AWawa5+sUIXAlG{;b|Bx74qs2t&}38Il+vZ1 zx|H=Ceb_*l z54+SuZxXt0Ig{xxBo?OI7>SV(R-7W8tR7DqslRQ8*Cs4% zWws;kCwnZHBzq&2howuCnX93U{H@9Do_l7TaAHeV z@KJpSekr6#g^I+fb@(PWt<5#BMoL%rF80hx(2Zyif?1#{y`63=vm0S6Gt1l~6a~F8 zSd6Z^qZ?U^v)d2ZXH8;^m@Af$+IrOb#ImN9w+nH99=Nxh~xZxI`7s zx4C%xE6=bDg<9X3S}Lm9pmDxS!#lFu)1%W$J~x;7#7`Rj^4ab^+f%O(qLID)GHbZlT_5k9q6g|B5EBy+Us=mf4)go z+*L8}B`%;S+micv7AqAqA#UflN%)6Z(l3VYiB&s(&KrJ-vwTo5;ax0*%=1x*^WCcp zW7yQj4V4L(tDW7QUX6nMb60~-uM(F>19Mzh>hMLDNQz~D&g0p1Rm`FG5NsuTRON4@ zII^SZv&)i35`8vMf3O)iM4|5KNWfE4|3c5Y@Gr>x`l+{~{DT#74XzG@E}?fQg|G~Z zuR`3hP``4l67IPe-3OeWfDPJpM7f$xfz#?%HeV0h^rfE9qfKncLaAQf0l$BLe34AY zV8{!mVTko0ask<+n5fKfnc<-$+q=IZB#|;gZOH?g^5d0P3WK$BRuZ)pPrVaY zhZU=A5I5;lGc9SaGh}!HOMH8nn;ue8+6v1}lGuI;UF#{6@}%V`U?fjGN2%$(t87{AaSvdQ zpG#YDee`Egj8le;FOQ9zB=oa=>C|y*yZ=4CJ}jKN3T|_;%8{(-bmWFSz}mw z0s0hD;qa+_&-}^NzYDr^_~6*3{@+)TQn9oPBQAJ=FO{rA^idxB z6WJ|cu~8go?DAECoBwoVe%GCt%TpfAb8l(}Kbi@%p2Vb?ew{P*)nh@ytkY?oop0X2hS z5>KiAg>+caaQxuh2QRmVf14fOz)^Ll!`2_%V6;Uy{(S)b%z zb(tT$RUG-4bL`vpjGZ#S%_frTmkEhiH`ZAHRukO7&2sH;=Eym#J)Ss4FZDUjBiHzD znlnD6CN2K0^&ma)zkmEMvU}vn2f^%`=enC72ZhG;xIK0<&g>ta|L5_4XdvmacC+l{ z&a2Umi=VsrjvRD4JnN#&e%gP^bsb^3c6b4ge#MyJ79R6O!n?A1Mrf>nO^oFTpEkfa zHg&*asyMJzUbJ-MOy;e_!q%sbsvKtib5ObbUpnc(XaD)|-*^8%Xa47&`v0xse_@wH zQT%^rS^g`z|9uw!O5%Uz@INMpHm-Y*iHEB!3~z*k?k>gb3+oaX_xp+Bz7))y{Joa%(xXD zx`~Dfk|h7ccEAy?AnTfu%`BrhK!HM?N=6Zz z*pa|?s3Jre7G{YqYqqe+j+~ilxdh<=3?T*y{@GXWc;3-l>~0(I8RUT+LY$lS{~0V7 z)V_MA#7`TcT5JPfml8_PlnUR-(zFUN|GKeC<>(XFG8VXiEObioKX3_P{XH9IMCoXc zI5p3f^A6qdxz`K=u} zyweboqbh&J^C#Pd_)xc~OS#Wb#P)@*;wzW4<)1y?#q&3kCA!}At>Oy1@?b#^wPz8b z`scO;#*78O)amsplmdzE9swhAP1Ixo-Xro(M^}CN<}%I5b2164*%9;DAiifuPCI=@ zRvTp0$?NyIeKzQHmGj+AWuI_6BqaY)+PutlSby0HS6_2QHt$WEY)4wn?ZW~0;0tz+ zqbh&D|8M$#P}lyiqO(2#sG(1>?s@=oB~NbjzHP$mwLZ{r8rax5J4;Q~U6m1%P~RBs zvJ!GUgZ$=0hvzv1$pr&3}JzOYZN#%?IPx7z#!GLEI>0yE)oT1ZpZL4 z9!2SvJ9ztjW^(>PONs-rRs&`=(KjATsZvABoyd?Hs4IdRmsCGhI(Bw#c534CZtCn45MLv7iijwQgt^yA(-4zs&^1Lf3ClsC#e})T z@UmwMG8baSg=}gg2*&J)m=GWmI&DNDN{tBpRBRdt8Wgcq=;50uI#@aR)gH3WU{!SM zc&X{5f;g}(Y+g>gk4w`LNW@5kK5R?%m~KrKB>w^C;*GZvD{|QgwT-7Tz7JLX>9xfE z^R2PQ&P17n$lfiuAV*0nO90BG?6I4!a90HdR$hpzJ-3_JHJI1v{38mEFxYSiMaTrk zlZZ&_W~V6FaI!btII`=CSQ_*>7!x=PvydFcOl)cg_yZ-%@k{$Uxy*^?0fKFrhJD%~ ztWl1i)3`oU4}1~muGUW~GY#$F z?|ak$xdnK+^o#i?qYU9_sZxt`VD1c#Xu7T5=%aR<8PRT)(XVH3)4KHws+K$k&M|^= zd-)z3R9HSV5JGN)OAv7*`>#?)Mj=RsWmyEVXs;cFSb3LD&7h)2T|>S@6#ePYnx3hZ zb`Q6r{c4X!>UoRDQh`seecf@pP3^}HyURy2hAfVe#Bjea{^6z$YdFxBZdBdy_3HX8 zMG+Yj?tRmYW~>&n0o;>`f9Jbk=S%Ty(h|c-JE}nhnNS znYsZSgk;|W2bxwiEZu8zzJOg(l~0=W?xdHcAN5{@D!!mVYWNp>`b%~Z%U_;sY2uxG zWMOM9rBJbZvkTG)f~wJ*#>ly>GsDr3DSI3&Tf@^3IluA|N%+LXb1XTL*QO@sXX1y# zAoRI34;Md1^Jk1zfVWa)=xk?im#j!^RN`04{yjrMK`rT7^e^ABDiO@u0I98aqY1m5 zi_Zk!WvMfJPcxcN>s(z^d#yohzi*MpKOdWxLsa+bewLOM=QeUa!oTc>iBO>5(rJq? zmj=JF)KwYq#uxT-d$cls;UVyR8F)x#$b~2!Hdss%NZq@qYk_~ciOmPBU#ht=YCo7Y z<&@^@5;Q!dth2Nu#-yf{`y%Yax%vj)z|9i4n&ktYIP#AQU&p~!XB2CGS38cBSz6`% zblNG|J)q)N7+NA|1_^CNW0s5mT9{U}Ih8S7K(-j1!<12)uOvIx2z+bB!^pj2On*e> zOv=WzIni3aO)XDIoi=AVAP;-uXD{n7T2$1N+KHqNEgzM1iwj>JWKzTz(JU8a21{LXM|Mi}GPr$kiq;_iSgq_TK%Y+& z!k}s{gQ@p-Tvpl4`gg|p;IfOC+F%83GGS&eR3cQmT=H555QU<*RM1E5W1VNvAkS67 zRt7RDmr3}hv}617&ex#{9z}Zd(eNOfN^)!^ja&NHjGpI!h~ml=pM`70hUqgE#LPYR zD&Q6;!grkb-a)w)S2VcqPHav2neRe{_N3tTwAw*ll)UNXo` zW;U(nzv$qz*dBASU^+*Qi2f0lUQ=_$7sr6Z(plRGB%x!lA9jxpYn`{GDV4qb(q=OAOI`UCht|Yw_XZW++(^}tPB{% zLDWFCMv=;rT6Novv8tvj>0Q2YaWj_wgr~E0r3PEdo~~8T9^3${T6q0Rr0u+D<|6s3 z%2w*zGre5nhFt6XO|S68z(-|vK;_Tely<`#73)m*At3axIL5d@*s!+CZ*13FH}S5h z4Pdt;WoUItpX=1eVR6b}C1EX!XL6tMFy|3JaL)_!7leR-z|hKQW6qGEmfqe}%ij zu~+h{Z8x>5K(9}6H%(mupbJB#C~P15o;~yl-50R%&xt?Ytr62^RC6(Qe)Ska`Y&= zG>*QOP^a7HrX=3G?PH1gDjNr>jiwN%h)YJ(v`I%H=Y^n(Ic17M{gF=yxDvfhoMMnwwJ!@w*mo;$S%^4ES?oZ! z4CN9gYn$a6n4^kinK~)dww1P%WWZIr%rYo?ucdPW%- zV{EzDjXWzmKctaI{UK|dAiwns?pxV~{t+zfU6!9m&OSd=*f*`) z)>UP;v8?#l6Y@wPaE|2={SS=YrLi~#KC2dA2BFW(4k9L^ED+D?974V0oJVrtn#*a~ z3psb>V$l^>Ww(dszzIdd@&&q5Y%ZKwrv%W_51=nC2E!aR!m?7Ud8E9GU3t<`xZho` z-*~MZF+_W*O7_C-3zUjH=BB#g(wTmx23gf2W;M_DnK+fv_$~1G3UuMyb%L`~r~%KC z<2+v)BQP^Q1pz77B*kT$!SuX7-{A8CbI&@jWGU1T0FV39`&2Dr1luLzuY$pSC;grj zB$ho*&=DaHN`@3ER3&scabqs~sRa7Hn|OZX?f4a1SU=FJqh}eJ0P}#W;OCyEDd)%O z%%$Y5Jq<~%<$;@&m`VhIICiq?25BH&v_|&*_Bft$TAl4c_pvT!%W;e0I*0_;eg21S z6|LIRIkYsviQMM{y`Pg-`rLf=o$rxBLr&yqvfs)KYl@CyX?7s-;j?E^uAJEZ{19ca z-ZfM(O2Ny*&sjq)sMILZ%>(u)c%872f6iWQ3tWo`8`*i0GID1f-7`r%BXo`gd>g|- zdD3~t4@F+%t|bD|!yzrNi+?FeojQTl6^(&a7Mcie_XMj_uX_c->v3c-@90)YR;7SeC5wBnC!t{ z!YzeRx*=?`Ws&(R-mJ-dShohqKU#UJY*9-$5l%l=TB{TB4A?7^4Wa$UkGfUWyKFyu zLD_SlEc;zw#UvJlS&4N^Vx5n9RS1> z<8^~pi;n&8Yezg6^%Bw(jS2vZQi#QFOs`zC;ZTbKFa;0s?%23Ix814g?^;Q2zi(6txXvL@o!EzWW4otpk-yYldjiaIj0}%N-316 z8!SQs%@$-@1uucth8VjfXDh6qP@Mt-w)P!kbY3Y+e*U8;KSdNY+><@Eu?@xrV)kr{ z7Gt0u=RoZ=izDwVIM7t zDefRuC!~5ep0*f3)ajB9q1aIFwys-lV5e+ns~duCa_3vfrW$slijBCHTKVas!NQ8$ z)AN{%DSR_>?M?^2j}}AVPnj0S7Z+H5S9>=;nP0ft)2an0EPPIvuka}K2mgY|iRtnX z)hsY1SgZ7O5D~$Erew9zyYD^(_k}}q1I5}HJ~bjkxM#}&1TZ%CVXtC$!TVpXzkaDN z4;=gAlW`C&P^C`+oKJdIBJbuT6}}W(G_%6)p(z8Ydy%%cqE--}C?q6z-BQ*<$*^gm z$EGLZYA|4qZkM3G{#1Xh@F>tZzL2-E{J<}N28hF(w>r3Wy}cxg8#F9<_wBNUC-a3x zZ>CKc#q+$1k(9Hm)70ZCWQ!WZ2>b|d2bEIb6`MCjPCFN-dI;)`AmS4nqy}y zVJ2s;lx2Y04S4j4oqko{AnVg5W7@J-jeCl3S6+ZsSPn+5qloKev3WaT?hYIsZhV-vr{-+qUPIo%y(?<#uwoG)izJhbDm3q?@E|MiTw&HzKVQXjY9 z^%BL~=QZMW^(G=DqIgeF!HEyiXz)Y<@dvy|Zt~PzmXdSm`M`ai+`?4pTk4Ca?F^x+ z`Z?lqn2HYmLCrMDOB|Otb3cAOttOOwG+z1Q^+3E-iKshK_`UW;cHO9SWo zfR*5Fn4aqVn~MHE%4y_Ze1d}uO`O@AZFl*HDcETHX^0hn*N#C |VvEp7Y2E)WTr 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 k3h-?7%s5rLO2$~cVCwlo&!x?RA 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

    N<-gxWLEs*jX3vP{+>rK8F-HX3(8Okr=5gQ zhe}$imYAz*m@^pzhJphwS7JF&VdIShp+MLfS6G-2UT6 z`x5=_%YcgXSnhAGlL7d#vLe(4f8+t|mok90$d9Z_1zGQ{BRb9P(di0gF`RmxCw>;n zS1i7SdaR=Eb8!4H+SvnQJF8&+2ra3IJhg~bYFsjOf6{Z&hEkE<3U~mk_)kv1OCo3zP z!&1AoJzd4tjtDzS0)X(Zbm=L73#fgVwtb1+iZsfYUonNR!ENp!qwp)`>*^8wAD?*5 zb?e`mO`=cK|IRiN-FkZazaIkz`TufRz7R7)NXW@!Q&UrUOlst{s1^RlzsU|lP8b(_ zndtTW(wkrqA-V%Z;3|--Up&+Pe|%l5mv_#j8(_c!Q6b>aMwUVf`{D#z2qdj*T;?wS z&zoyeFU$kUxdFi2dWz-b<=+8Z1&p)sCI}R9*03`pX=q@WE6<+xIzhCxEnfm`y6jL19(7!gIm- zzQZEWYsjQl1Gpjqp&q_`cesI?Uv3z60M9=L)z5xoJ<@!~^r!U1ece?0tc1zk;(xpsJxl@dFEK_LF9_}1d_XL;Lgb8t4YV-NI^xx&&&Z0$KNohL z36F^Kjwc%=6o5;xTGi{orN1HfO>tnE{PU5{^=d5huhD#Wv$lYC>H;-<{_@)HeG8QL z1K75QX+e{c-`&0)mHd^mxV7G%++l_MK zY;qWL%qp;j4+-SJ2;>4(?zE7flVs03U|;zn;FCP;GX@KROt|udDh0L{2g0>;&h*!; zS-!MBdUEAAlQc<(vp}BY4ciWKIv5e-EV;QQwwCMMDaa)943m{tdpd^h@6?J9gE5Ym zg4prIYlP=-${-L^6Ah5!h(!m13Ry;eU}V38HTEMC6*rU_NA9E*2Ws^#I_6)q27L$p z#aO?``H{9aH(4Y=-n&eOiB_xiU}mC}CQ!l|bgiLp|sJNqL*IB-*3xE4397ys(J_&|>z}N7!OHUk$ zKZ+&gy?BmwgF#Uw9UQ^!c^yI``?JV$2T|Ad#||=BYs7?d)k!pV zxD=Y5kSgjrOpo3#Y2Wkz9_~%Bq1QuVq>{U)en+txcje!i47M{|5b7@M6S7(`H3=Wm zxLRATM3$`p7ktjD7&#cMlU5P?0`!bu!y==C#dh_~zVtk;=!J49{-qj=bf4yFReRNZsTMTd6#%b#3+0??2Y`nL(v zhM0#mx(ke&?J)YoRUuue`0VUhP-Bm9Rh`LPt*%}(Q|gL%E#>XOSKd!k=Qjs8lG#@u zx|9D(Vx#sI_5o!G;I-9MdMC=qGv3+keCs?)o%HEDju`wZKQZ^6TrzW{)~tN+2W8Lh z)Mv=?QFS$B)SBuBkjkm^jXllPQ3%>O$=sjzdAgF0Lg>}xoaOYn(duSQmG$(8)`z~X z$ILU76>1@}nTHneJHv>&I2q{NQ#)^EOaEiz7)P0>9T7|VqP@01o7%SzWNJ(0BUL}L zg_oXbJ~Lr+(i$#cbqPvA=cj?}I#)Y1cKzDp`&1Jbg#8m*4Lp4N`b*x45Hi=VeXq-6 zH6I3!Trz@3DNIP^G}<*dRYt;1IWxzO*CY)L5ZTuEr9TfkCP%A)*R?VleI5t;H-;kc zl4_^Og`u0nFvuf+JW5d6l3QbE_~y}6eY#K21f%u$Mm|u=fNBwXjkV372Z0Cc<~Et_ zBzoTuH1R!}weY}vSH^4Yvg0?lepqH*b|}VKSv((=P)i2WBBN95tSTLpr4KQ_om$18 zj=D!_c{dCDRg5Il$~cb~2b7$oayoR{{H($vc$a&k!@%=LZY}}OJ`|&aL4}2yZ8<}2 zeu@}RJ>SK1$&=fa315!X#!}T-CSwl~yz@K9X5)UrA8!LszH=QyL{xRYg}ir`1FIPj zs^4Rujs3b7Tfdtu(JRYzW^f;JNBw~|o{44o=`pdo3zsGBLZPHCaiP2;Re4FGj7kh= zwzM0MhoOD#`}g)y)P7I=IsGU>GEctFns_|>-1Os$3&93Zt7a9b-YzBKZ~g2Linvk^ z>ygN?QwS9$L`LCgga$bgK z6EqhjgF5%nc{+!cFE7o&$fJQM1+#g=%=uyRG-=l0Xh}vt<35^ZQko1mG~0mO z)kl3HABirgM7l11jCXLHs{pd%!uh!NGX7)e7FmovT6qClW=sncxUYn^-S!lE2-s_r z2_YhO2I_c{+O$TSVedE_4wJMM@sewH+iRto=PH#Y-mUAIReHuq_{c`D%2i@8{I4<< z$=B1u8XKs~&fJ~y_FiB6m_hk2S)YZX)+{p9OSJ*o{kd_{`VuH9YuhaIy(#;`2)ul! z2I+OvrIozMfBd!<;sD)seV*qZ00_^V*MpQx3k{+r+-OIZe`(U=Pu<83J9xbs_d9cHCyhE=EzsuXj$(i88W z>8q@l!(3YNoB5YQ0TQkvEob6wTpsp~-|GRV^}#7`bo&UzwPS^u-HB~%_iy-!fWJ!` zPnSK+xd(X^BxW9>oA+h$eFyGYC$$fDg$_4RDZ5-IDkvYleqB#v-Yy+sopE&HNe?O3 z%kMVamEYx8(2p^{`Ko*SdKEN5`Ha^>)i}6v-lP#GuBUXS?t$w<^ZU=bYk1prp8nW; z)HIdHxudRXCZ-TpaD;H@!h!fzTOE)^)?9j=n$Ir8GDTh4m~ID!fCgoCogr80MQ)t2{hM-H-| zON%01+Y;qT6SDGQa)GqAMln*ReB1%2JVQS2a=&!#V0Su37*l4Ci?=3TtE0w!Sqh7Y2z}P-g?+FBdrSv2~x?-C&xh&++yjlM~_JBe4c&2N!RbTC--?A z^B$YRSU>ajyu<4A`r_x@jovb-)@n~bM%ywEX-mm;sDj*DW4Oz03i`pG-VE0SL2DY?sz-)Ug#T|sEEUBcwST>Q?Hvl2$N2?o2GunaQE<+$aKG&-CH zsXY~@kSg*%o1&tOiZZ>S&Bow%qaq{R8OI@rI6fVIXQb|LZ zBhdC1ZGQ1UH90E$8B>6Ob zSSI0f@Op23yfE^nzO8HJwhtHB*ti;z@GTsr!vajMX#7D0%@oPRgn@WjPL!j@*R4z5 zSEn2iiW0}3_oQP*tT=|~CNW@~_$s>ETW>DkI?_?)s#!N`Uu7> zToP_$w{L#%8)9j8S7$C5WRGuhG6KW=Ynrb6$k&sNMpnFl&DO`RgjJVGQb=b0+|8CK z+^Zb7n5Zk27cL!NTS5;qmf0&6oQ|O`Nzd;Xc1uLlFc*?llu49)s|^UF;q=n5tnC{_ z$#pEyd3m}~PPvTU#tFJQ32~vGyq!5$JIqsr52d=V>$xpMi29oD{|>Lt0pXPkHH1S_ zGX!!1pDpSD%0@7_I_~m?y1))PgEO5VUejnnM2iFG=ftBkPafCf(CZHL`uZAU2;W^p zyURq6HMq4VqcdW2291RkF}t|$(-RW{*cWc*YV7_e?z+CD(r32b+@lQ&$xwe;D^e0* zC+u<%j#C^Swwk8i&=YN5sTdI-7MIlw@CA=yAILnw6O?Z(nEX+i*pfB)v!Q}lcF z&p2JBE=w-at}bbqRT%T~<1%WvBd%P($dUx#cIr40xa)B$>meni+OdQ{qP5VO0UB^C z&|vaOzyida_`aqJdcOa&R;syV$As|B{3E&zE}h}hDu9VEFdBE5@OC6b3nvRS9z`{r zV2tr6t=0pLLIRjMOrSfK);uJ5h@vfpbZ*n#+iy$P-FMu2TC+pA1R6};P;G`SZuMLc zn(6l_<9=WhgvknJz}+rEy2;Ik$PkXYUZdZ$Kz?LQg;UY<^WDy|%3to-V;wQXy-mDa zv|pxQO2>}W41^ce=EJlz%h4L? z`Dv&`x|M`IZcwJHY~$CaXflCS*xR0RXK0t2tDy#9A5Yx^9Nw{i(vg`pVm|`sVHcQ0n5O zwS!nKpS%#$zmqVyOef8Zh>mEq9qtuO7~rriE}1oi3jZPexWZa{%jmM8VDG=J01INsfLhcyV9^?8)zWboz221ElTrR|Tk_X%WBEhYN zoC+uk?$Q(0ADxkl0UzZAZrsWaj-=0<444oioD(>w_)SRmD1tx zyhaDUG?$Uz^)t`7NoJG9neAZHUcQl7h-qIErvO%NlB%{xYTXhQ zcL?VXNkM<3c6+Dn$03R3($~2io2Wu4uHK4@GoSe^ZnaMC6fl5 zQcc5UMpT^wa%67a$%zh~-FLFHEJ2?>3IW}DyqAAW!GEmran>J^0%&B974SL=u=v(E0+yw;>S7t_*?E0US2MV_vEBm6L7qhD;o0nB(C3JI?)5xP)CrRvNJ>_@Dr+j9 z+dw0uld!BsIhZ>ix;D)vuNzFuSCBsKi>+_iE zre9VBWHr;Ps5~1Rl|bI&Z5|T(ArP~dIQhdjk9jCZ@5s*VVLV*J3jT`9T(Z!vW5niY z`$8Bt<oy zp$o__O-BYaJLxYP=vvOJD=5(3fkY1!6)ECp*-Evoy^X7tQ3i<>fQLC43m0iUXOT@c zhxNJ7RNDywPnGQr{WJX6h7c z8*d7>DRk=k%+#CdW!Or3fKO|sWPF~lXrqI!+vA#mOV0VS!!) zV|c)jumg*h*~Y8TF&@2yjbR6eVIgvt7INFc`zm{VxaOffbLV5_qDtwTHirX0;uY>% z0|Kisb>xfwrCsf8F@H5;oCi#Nz&s>5V-=%EygE8!(TD#QB<&appdXRfFu^Q; zClhYCn5di`@SxUWb>oPF_EtR z9^Y%^DbM*Le{yB_6be(DLymMqvhih&WQz<qci}8yHIZ&@FNO_f^q}k*(Tb$WKX5;a-y7b@#mwXN zGZxw}MHU@D0%$K^!jS^VF%$iw{?8$5;LybIdk-q0X(1;*pR4rJmfeN15?H z1!7fL8y2P5V+X#nKQe_Q6ZU=v_1L&k?YQ*DLfB(bz(LaGr_ue}kBkPT;!;%Ta4#0F z_?w!)b*$8T{5HC0WV1o518s;8<{qj>OTD=wQKj1Iqv&7(n+gn3>v)*g@$I1`C1uap#nujPNz;t$p1!_5Sbx$aUR?Zf4p}P_wWVNv;w={TnZ0;RM zTeeWch)1w;8{Md=6TB~Utl%H4KKvFD;vlW5bcfp6IVM(id zez9gE!f6FE#@BZ6LKBU5AZof{%}BQ& zhu!{4f)>$j^z!~O#NO!Ym#n6drQ&c2q|Kq1ZI7vYYYWT=c)eF3G=tu{PiS@{B)~qs zFIMya!V`(R-q|1^155WuZ9e>6Bj8L-5FkW%E&pSjasreUr+uThLv{^usGP=plv$St z(g-kLK>mIgFT5Sp5P|ITgEjjRrbG1f;@=OU`Y!cZp5nFDJjcnJeDt@HQ+htF)u_ux zaKe>D6Ysl>WD8Rh82wcRoVf!qT6z59vAq=2{JXzJ?pvV0E+43Q1`niP`lpx!_Zn!A(g%;1=Rr269B_l5LV&)r zT%ajySM+{ZI!9Rgx*NiA(gXuJA}9njFO?}q&_DX8>_qxCqquA4 z(cT&isDQkOE^Y-v4p55ZU!!?!SWaj_FvCyR(3R|fEj+v-H`;s!=mL2$MFMojCVH%m z3;!Mx7?lHa?h8M%HTc?1-Ac#FR}4V?X+f3OR(h*j4&hT^TJ;gfKM4)AKx-($T%NoH zjsYL(j@|}Jq-J_<{PTPs&`vM0dY~T(4^)5u6u|apKBX$-^#@9>LY6fCn)jq}P;l@K zfCX>82g>s=YMF<8_;7vaQKHM-!+#!Za+;KkOz`*>&{C+3`dwSU^E}ek9rV{^a%;Kf zPCLCk`Ct9GPFSM5kAO7qEg%fI`>@)aU~{jDxvE1zJZ255WOV)Crny~xE@gMyg3+G6i~pA&J-p~W?%u$^K0#pD6(`aRsFr=HNu z70R|FPQZX(69Xub#CAtD2c@RFzYewSY=M&&(_R3ov3{$>-dEx@gUb@UkxpA28IW#|AQNFkm z)~VDH+!ad8sWWO!qqI>RTOIqWeh69cDP((*>s!mhX@B-RK~nw}avQJDoZH=rK-G20 znaG5c)PhOoyG{dGP6gfy^Wx#j%{{rHn_QlSE#N_qm1OB|G8ve+Ki7SO!f9d01>kbP zA-p(%N_W{2UY3FJuNK4g7F@y(83?Z>L*otZt+##a19e+?WP_fdn{1D9 zxqjv8T)FGUrMA_y=Z(1@IyJcgtZ1K}ggnCu@c0wl89l6rJ+R=K+<0&LB+IUCDa;~lCCHSABFnV_7J_{Hzgt8sVvH$(|I{L;S zVk!uULDOO$SUW4TQ}`wvUy`Cx?K67&Sz^1po&v81&4YQa>Dh&0mjPSY8Z99B-C^UL zSUt_PcJ3j@9j8~3s6xX+C>yzM*Eo&d@Q5+9Y1{C(or@syl8Q2>uSjj?^(<6O*POpewZ=?u`GzA|FcLy7fyMCf430?DivQW zmq~)YrtejE%r!zTDSxohUtF=UuxL2FC#v@}h?GtTE+Xi@4%r`tn1^VgXJs8CNGJxT z#-w#iLUSgqFE`0v7_PDcd8C#<3+cVcDaP^Sob^6<;KzEt zR{jS+KT_COrnGV~yWiX={RsQ)bW<5lqdiX?eZ8iyIxzf1+v5E;(>SH$((m%NJ2Lo!gM$8(Q@K}>E7#d1}>j!D^8S+1S1buou& zF)iWnqkJ!dB$>mhu};_kXj z7YczhO}cawof_CnEhiez!w{4hR{q`U_qUFm*crI?H6Po zRC*T0HeT!bdvk6OYD8;1R`XvpzlE?WwSD1d)CG!@yFG8b|AS~i2@D$@x#YV;+qQW9 z?L(w7JjX$+KhiB>FgJ99%s{i_im`jwfH@Tngk&TLc|q?7cVlPyfy&K3!*GXxwrTVF z^Jj%9gmPEq6I->hjbF{xXKWt%nwmjfLIYp815hpBt6f}*f=Bw`)0o`>%-j{6(>m2} zHe&!9hqcol2QdM?J`3+b$Yw$v&|g?9)oC8`ZHO4LH_ebBp3=x*kh&>k9B#I_LqYi@p8Vrm2mg#In(ZHDKW{lm`Lbl^ zSN#?0661O8UR<`baqfqC$xL>gJ3E*!&y$vS`N z%H`>3yx{iP>1SB}NP6n2B*^elPObK5M(5=6gQdux15G0 zQ4+Y+EQ_s%bP`Y!O0yAfB+uhI4{c74ZN6bM2e}2-LXv~pC`kqxk1H0+6 zp2NFwY7i(PtR3?yXkP19k%Me?jA&{|*cW(yumiDe&-+|m^{NxkKAl8u*%j;k%L$0% zbcd(s)z4rO4UXHKdd5S0mkr4PIq(5!%<|f7i9X3_M~3BTeoYyt6jfyj(4J!)J+i#V zWwTpx@zY-Ab+2t%58kiF_r@dodyl`EkxMn`?X**%QcWcDEpm7;;;+(CSmEGm@{yGL zl>k~0rwl9x4GEQ-8F;J@KTWpBExmRzs#|-Nbp1rlA@wk49I=}JaR{}lKRt_Mkf$hpS zaA#s;!zmW|^jd=Oz&G(#k3onW!V|3se^#&5UI}g86URkR-c`P;g{9P>B9)Y1?mu~S zRG%4FM`keiI;(^F#?n-`(_tzn)>v~PaUV4uE(#uLXq6~+%At*R%+U_2pEoUjE1@xN z8xU|6eQmm%c6&Sjo1&U;zC{Nk80DXY!b;@I5sTQ(Ec4{g&!wGDu|!(;DswZ9sm1t( z!|=In;{lr=_BNiw-b*LuM`)b$riJIuoJ}r#u38N+8m=tgUgRlCfja4Y@NlFAvM1>V zhG<;5|Kg7<7e&e9&j2;YH=eF(t6!Q3%d?#JmT>Z%Uf(Tl?SYL8r3Hm~SO3gWwCBBgx8dCssp6HWEO4%%xS3%ukHn+9r-uv3uSBdp< zYqf^m(@VFvcDPazJNc$7<^|@HCYy+QP@01Z!pNB(gzuLmi8QZk%VwbE?DXZJgERWjym?ll<7hNDhyWF>3 z4k|M^6iH~{Zw8$w`Xx|kTAvT}?)?}U8M!J!e`X9cPf0dF|3rPv0H{Ue#F5f*rG2`m z(hi%wr;@k$E}q!;c1NWxZgEY5&P%Rj=ju#NjemZE9`}Qyw+q6yQ0ztviR3U$S6)V@ zO|M4LKXTGpD{W>^l4JxCek_#j;!;hssg?0&$G!8k9O%kWtM;Y&)5KgWn)-zmV`Y;i=7=-Co_42IKW?FqSpp1x38=KMftrS@$n zUOoFkIpdf0J)$k-aNYjOZ*~64u-4ox3FwgH>gL0>lxYJ?DJi{j`71Q{wIAVQnRG)Z zrJW9Xh7yn&C1JibuvZ;zHHjq`-)aFR+cT;?5veM{V1qDe~>jj~l=^5I-u$&j#s7-opcFCPq2<{R8Cl3I-z zY<@@#y);8CoUg7xbKgimP?SF(2;5%7fIsteCO>giOY@iBjzSBvD?p;eA}<)?_|5g6 za-RCMg2db{J5ZHvW`68_`&FH&k)NTO$>?g`K*?eK>Q8NY1zuNTU<0bqo@W_?=R^y9 z@uNJT_?*SV$$72Z;_84a#%2Yte!AvQmM6AzPo)bQ$T2y38do%QW|sh9V@`2MT~tsZ zcREmEVeQ^Ft--!uH1b_`73PqtRC-y}Z2% ze_RV_2_>W#Z`l$OB@_Z!&2oE7y&`>SQ$2*<(8_TE&S|Nf4N+*(K)-R|G#~hdL(81F z=y4nJCFY!+?emHa*O9Bjo4px+2wz*AR&6TgnR&?h!yTB{@s`A|je|u#Aos#wYkx*Q zk_9RoZU_sRAdAt<8S|ZsT>iju&TcsWTU^+%BOFRTwsA`U`)h3_@5Z%SySBW84&Sx! z5;*wUeNRt{m{op_rJ^?3*MeO~dHS{*G(1xpk{e#iW6q$jlZwoT^}0pqi=ars&Q(NN zBC;r<*3}n<8jVo`U6uwiG5&Pek%0^)*3}=BYhw+n7Bxr%eijOE+WZ3bjI(e$8)xNF zbL3O>+v_0XK@GqZ7j)99*$RYW+dNE&W6AY{CYZre5cqj`mP^nYs3>893?|=}HqL@W zJfFyw>FMm8gy*wiqhyz+a1Q^6y*H0$v+eqZUG1eaI;jgqXDvlrRLw=vQey;-si-0m zT0@MHwu+XbgQ?V9QzC|v7=jcxVUBkhI<462bEZfy$bbN9HHm4zq#8NRIUyNrA1W2&0p4qXsh-p5Fr#D+T&{(Jo9_uxZKlnnDqAivA$mANjAdw-2@i z3*^&)j5N==cy6KI40vLk^WC5su?f)Kq*F;n-LFr|Mrfw};=+x6!nHrYwxf~I-mhD( zlrS@|=V+H)6mJ_U(Db3vOh`2U-V=f606;Fl#CO2eN^z-Rd#fsb0NI@T;d+&ZUC^H+ za=e}!?^}~p@~Q|3r!EwTRFPU5)(y=p-%t0pdnp8I>Z-~S@J`I_ii})aQq!9;H}+jR zWi*6ZYZS;m*AzkRG9iAUSMb8p#=ZTdg#1iTB&;`K?+S52e3~Fm^9kJsPG?h;e8I4< z>Pf`8;WOAmjbl`$xbRaV7k+SYe8v7XFFetf z;ubk`4d5^#9J3cH(!3C z(OBEicM>M}S5Z2pbj)^y?q$?Fof##EjIHDSACtlfX3pIuuLa~k6D#nr+z_If;dL7~ z-tS4;b1K$i6W3f?r^0UW8LFFK}AE zQ-OH+9=*Aq^Y9}SD*f=w<1JR{Hokx#B(u^sAvQXFsdS0T7&^G0I8$_3k>u0|Mj>`U zRDzdTsc@C7)6`wPPd9XFJXSc<$oauqZg6zLZLrr=-vcl4xVLVv8w84(@uSBsyPV5U zZXZet|51l%o!fAq?l~bYav zG!n-4fiE8{A3XWqAe)W-E!FNFsX18TX=!2llbmV_9;3$^#3I->w4K88^a^-XtL6jXknd8yOW8(xL*DAjCXL8vJsXm1t^O zv!^_|u{a(r=bDy}41vwQB+8=t?lZ6!;QB+CWWEF)L;Qsf>b?>BLZ6nR(jdj8IsfV} zvkgV#$8j=tBWdP5PiLvFk3!uw158R>mC0h}x994i&;??sol0FAV3NaAA*K@PmE|7I z7#~hqmmx5U>o4q&;_Z$~&J5DIns-8WwcOk`D~YzDOHCiLD?{>c&5jjnyuu&JKR={i zy~J2D+^#H#_eh$3YQidQ42*#bQv(Kcb11bz701?+DXs$HH9JW$6PCu>*ZT{nhmGh*#VreoaMJaAcgBT5}%0ewi5Bg z+u_?*=#14X(TSomcwa8wE9S;1Y?OR|mu@J=b+J-xW76H~A`Mt0!^XfFz{fU_Ad~)p z(?T_?5TZXQf|>WWQ}YLljilK*SiqcTKc29^1Hi~$M}W`75g-wk>EWew3w;N>YU(w> zRK=(PfynM-u>Md=`O`Mi*rW4$br6~|$&lO0L=>fh2CSUwcc+JWh+D{Y|Q-nDI)*a+BA2*3|MtSn3> zwSvkI%XE%0MD0VkBe)ewq=n%9^9r*M_3f{_1S49fGjGfZiy7w^U4q|wH!SsFOD@8Y zYMd-)p8oDqULW>+qe1h$PHMh3mp@v0#-`muQy5oR2OzGD%gYV{Zs6FxSx$qqeF?H2 zrk@h907nC?T_nP!L7Es=l9*Q9Gdkc2B)@675tnzW=ez{M2g*@BIh+`o3^!%o%BEX<9JM` zmCC^zZMg~w3%5NN|C~!I&3nY2CGLFFqbCpa z+V+k-{u-#~WTx#9?stW#eHNV8V}jyNN}cZFgSNCvK(0F$2DT-dIk0ic`9fA1gR)Cv zHo?{Xp8W#pa}5qyeh9c+84CN>d7e9K>;UL%Ul2qVn<5asYV>@|b?J(=scfQW_xgC` zW)`q~=l-Q$q5v3VmVTa40n@d7j0%0hEgx_RVf+C?Hag}u^rtrBvSlR}aC`VdhF{}m zOm9TFo6)j(SG&&Nl9(OF>e#Q{9f>P}253{t2|u#cVXWfjwwk@EKr9BE7Uu7Z>7Jr< zYd<@%Y=gbYStVTlPDm0vo9nK580{Ie3Zd~m-u6CzY%cX&t(R-v1zGH{WYi0s4DI$O zn{$1@Ov0;{H!SC6XWxqV%qIZ+oazNB?Io&WnAGezF_}3GE?dZxTfG(bBelQj1I0op zE6?mJb-;eVt6|)sizZ*}PGAdJNg*OOX~H<_ShrJj4A=+_IEKF;G5pAMmAqlqs6dD#`*<|K* z7eKMq?B~nXO$rbj?lZ!)4*ER`rGA)^KLBJ#PL?T%O&J-IDMxx@yW+eqUN%1~S9g-3 zKh~Kn4}Gr~*L3TE;^o=OQ{2vyDN3AV#|piR35naDm9WlxIRqg5 zRfVYA1=~Tj-8Fk@qX7)nG-A&c~u0fAn%cDIq%CIT6&~U z5u}Ia`(Rd6J2QK2*6_|?a9A$&=S$&Fe>!(XBbHhxvu3E-Q%_QHy~E!MHR?MQ&+%EQ z=9UK~U<$KC55>|xYa*88wU)ZJ@LVPXUE1(Td4Vfu?rTqazAcE#4pY_vK!=ADsQLJ? z^>wsXDQ^Xx=i`etm^mR~3C|KD3E-p=Iitr8D88}q{dpw)j%6R_7*|toWS1@(!qpkO z{ItOQ6}O~Nx)|ru_l!BfK$%ysGnLo2-Jj?|yOi@ZS4oWIkhaJ5&eRrqaOtU3 z#_IWm){%d?QFJsSto`o>)?AnKNi%D6URx@H8vfLq ztDk`l%$z8)sThhX3>sNd(c4`1=3QMitT~i~dqgB!4UdGGu0lWm8XOcO`@LATd9!iv z-Qt<4^{jhPLtMI!zbeEww0-n2xl-#M?}|kB*~Akkt{>=#e3}FQ zspU389X^}gJzb#XF#fJbgRFR@3xBu>BzM-a)XAyKZt44Eev_3bj5cz(;&D&Zfy3qL zUD|6-8@=x!Pa76@st)ui-itXLV;Yo&ayFcYHkp+qouYfJwC}p^fi*ly@KrYNQFlFd z;eblk6*?MS7*!w;Md1~_ERtn4D)6JHG$&A`%p^|8^GKc49BDX2xXG;S-6gE@3FQ|y zcYNaaz$X(8SI_=ha*ddCBJ8w{VpqFLuUsoS`}%;YgaApWeqb469y+aHKa}#t!?x=H zcun%MR1{#gR0){m6$Xft$hS6auclinrtw>eixVyW0N+0|o7zl~DRkiUJ>`-Slidch z_P6l`yP};5quj7#Y3+h)6$!WBj&9+9pku_dn>-Uz_eMSD2G~U|gt9S4t5nA^j8S zLChfn#*q9+f6Dir3$>B0M$72>F;Gr46N~dN+IbZ$bi^$3DmXjg;#hK{o~%M7IZ}5O z#g(Q|?i||>mb_G2xiMx{RL+b@dAzBZeAy@0E_qdl^dgkQm9bV0sNj)W6 z^(Hw^S9rz8G9bvwsYiQwuCg8Yl>m68`WXwuSnI8U6b44=Z(4;POdL8w%0*hp&zSx66?B(JNF;^J zgD;RCX8HzN&~doOdH&wcl#0W*h-QUyZ``F7*Q-NHoF-W{N8$3`j&%a-^B*(2V-Ef3 zsw#x=q!c8H?n&1;HKI0I0wc@da!tTEl$5B{8n8yB6ClK#fkQE-tU+nd%L?s6`Cp6u zOCHXOpbhcqO@0-*0qVBS(!zxzCjbL|?)2ZA!;_sl?l@c-NMmC=0ThuX0=SS9c1Btf zIx!#7C%r(eHXfI?BL|kQJ^-QKK(a>7+MEJu{Y$MeX4r|OFZfr#aT-Rqg*o>_hZu*M zZpJpU`NJ7XL{>V$`=z&08HUlKStsCqiY0F;P~V0F?)5j-Ec}aot<;n!y)~=yWSz1f zR6@#X!$C!t)1=$M1MZmhc5L^TzvT4cov$V?M$1JV8=Fckr|4Tq^=f!JF^(|cMqo{4 zcS`FTA1k5RDsu+Wo}=l{d-97FYNAHZ4dnDXJi;ea1$QW) zY{`D#l6A#zfn2y(pg-sRfXmSITRkA#?v@NTEpU@;7NH<@Z)G7jD^)syTJ@5?nV)`4 zH|pC4gRGY{B(ICboHA-X&1q6SehseTn4(pd3nKJ5H9d<&Kgcg!nq-n!tHukFZoXp{ zU(k>(`8(35;63$IY4?5=vWB8F!U;K_<3gACu-Qf8=O(KF_v16#+1cR$HGfBp=Jb3_ zw&6ut=PoN&2zSqdt%hulfuk(i*m7g3EH~hTbwbthdz@xKpv5H&*q3K~^)k92Tj5*? z7YW*A7=|a*M=M4Vno0!H^cqM1Jf$uP(k2thEMlBp^3SoWQzf~zABgx%Kea zzbcz+YN8o-3S4uXmjtW%7=Pxq(2mAV&WM5hxK(wm!pc-ZnufO1dix(U-Ar%Zryih> zT6=MGJ_A>T|KRva{Z}Yq4%K_sBrtT%xtYn;?=3mE5PR@2PjzY?p%mKH5Yb=e9F7oD zf^#kUg7{YFyC=8=y@u6i`9?>~3}8KYz5bGovU94_6|EwDnb<^^&EB$m7T&YuqVUpN zAq#>PJ}v}+VlOn(=77$^$OqQsx4;tKv}Y&$aSmPk;EK~eZ=TZ}S9@EXgSIJ!4>t81 zwvIO*4cIP(6BFT$6-J5pSyD}Lx53ME`7^KJiF%4_(*cIFi50`e{I-Wn_fDh1Y;o?}&V`jdBK+BIi6hfn3u4nX-lp?>BGMuvqkdh6{(1IQP}6yP!lUE=0} z75pES-psct@WRu)m%@T}v|Rt3>U~b_uaIAIb6JiBPW8j_lKZHEO8w&g*=XbEd&J1I zQt(^en+*1*s>I$@3sVpGT%=QEHkA?>F zfWxa!xcDUO>bHf5LYAyjKe^nT7p}h1(vGgY3zC=yWHyYl*sMVG&zfPaWP~C9$__e+ zbg<=kyD$N7A|AB>$<0)OVgq3gF83C6k&7Dlht%FNzp?GAf#@8 z{Xx`gY30EN=PmB%q8DbFyjHhhl*WS;75${{4PCPnr#Y|bd$l~O|FjEr@*3JFHb=uig1V{9fLe`{!``i{5AgOSRzV-KTc-vx#Vgc? z0NXK}jZOX=SjjWkV!yoNe^zS4)H!R~e>S@j=+raJ+1Y2G&;44r!{vf?R5a03^Fgg) zuD}=mY<%-?_z7_06V7`po-I4yc4%o;EL}@^o6HH52Yzk|fDJEj_266|S;Q<$rry9# zPN%c0j3@ydz<}?S4IBe9C5N{U6A|||OY=y-f_I#p2x3d_-k|9aW!%`U9X2&k8IV2X zGZxG_GuA*PSNdHa7dHogz%M85;aIrLrquhp3u`vtJ9uY|7sZjwbp=f}pVJ|X)49Bx zKq(QREoA_H+s7pM(_mKahfA=nc44&HpqVdK7sHBYR2*+@2IvZeFaB@M;;GI-3ht1J zJCbCy9>Hs*f(+bbk0|sr9BR79Ca|MGo@(+%Uppe12oCJ=?EnC)86kh$YyXBz zRYKRkXobxuEB6vyz+wc zpMC?pFHeF25^EB`Ho1GF>%fg30_?97r;8d2;J@+Bz~7wxHUKyCTOyIjz6-mQKyqBh za^~;vKUrAdUGAAa=V0Ff;MLll3U;^8@Uv%-4f<#QZ};{7*#Eug{|>?bX%$>O_B^lx zpA(fIiOydFb={q1S?4$4j#RQkpq6Atq!QQ-ZIJbQy@OS;diT}J4_b^~C3ZoBVtv;hR33rBa! zf*+>+f41S4>u0;`>*0*W(7qUD|3@rS3<0rj5y9@`@C(bT-|c?>j{$$ut&#VN2I*=9 z87M8@dBK?7vF>RL2I!tsa{Ju}40`IYaFO@LC^J*^$t%&d=(qtIjHQV=hHw>IsI`?y z9JFABZ%)y?ldluot{SKo@Swy$L*e_J>hbm!?#e$QBEUm$8;_HA=WXHbKZm^4?-lP; zD{;d38*c6a{0#@QANd|$+Z8yL#uLP2*-V2I9`_4;bi6z-Wh7QtX)ob6Gl zMX?|i@lLJq)lYoy*b3>)v^#WnsrcOe=PWxae*^3Ssz-g`AITHf9ll53`*=h76ztF7 z_@=8VtKy#Z{q;crOMJIF3z6ep@3!(N56CT#S%k|m%>BZ?ve)g~JMuX8C~+uV_{WM0 zDi*erKcu*2u7%Qnc)q*yp0 z@89gPgYN^?u{AJI+XMXhZDKW25o6r&K-3GbE`T5Xf;$g9gX7+7&?bAGe%1IVN9--y z*;oMKyP>AwCYzX_LjDvf>_>k}@DfH@SD#a^pgt?q;Uwz)9Y6W~xk1FhhJ*wRv$d$LAn|zhaY4*17=*LFn zycj>NB@(-}Tg0QIDc%JMv}&d)f@NA3Sz%y~@i4>22pux}{$oex3lhv?YTl&a-DbjV z!gEKXxhnk5tBY3<;Yh?I@T|N=Tpd=A4zTl)2ggBVd{#mAc1qD4#&14o3*C!OiJg_t zZda@fRlHdoGT4-GV?xpImqd&Jo{T6tNGNxBtHK%@y-xWYV7h^ByGiWXYac%Kp){j) zRCfFdS$n^IrbTUuhb4AuSw?I}MB1}sPW3}#wkg^u%{!f9<4wZ^;m2(!P0@Nq@pS9J z4PM63!_5#jUEjuK@)}FOZ>UhBZ966a>eWTu+;a03w(V(k9(}Wo23?M$yG`-7i*Ixn7S><|FbBwT%GlY{#Kx9XS`BTn-ZSV}ujRa)d-WksjrnW!~6bj9U&eK}rl1;=2a1p6?jmEsTH=Y`y**H?@gRVOTC&13q zpG&ugqONqED53=P>){Urz~TP1i|EDXW(4g~yLg{UJHRxbT58jpPU>j3G5uIW@NDT{ zimhFnZre)f4?fjN3rg{y9>(s=xfbl?K!{?z^h%0oV%j^iJO&VZec?$^2mec#NQ;lT zSw#&){jCU`l!W2N&!>C#IRg~8ZqIO9W!(3jGYSCV0fp92w#2q~?Vw%rZPc4}3SCHZjp5=`xGiBUPUlccZS$PnRC7Q+Z5 zwz1MQilF10Cb|tmv47S~bGDeIzfDBT(lV#RyPexQJ}7uid|oX`%#OTBG@5A4qj#!i z4oH~wR#oz}zduzTUE@l;(y5vuwH#weJ!M70xQQ^P`qg8?$INn>^pY08(79_ss6D!R zAu6m2CTCo0-}a-Fw#N#O8WA~`imOZfA#GqJJAGaKa5ufZ=!B??oPJ};#*i&~wT{ws z5{C>cB_SUCq|6CUPGI`^+8Sq7HFcCXttA2Hjy{TeDg(hlPnEhLKH2yIAXn~9`L zgg)itCEnlSnvOGs_!+OG_RU>0<}{Nj?zhkpl&DR5z#xvah;NFgpoh{hqXfIiW=Kcbx83P6=tfSP%CCHhRFJ0)JYjx=jP3xXr_2B1{fk47R>X0&VU& zPkgm*8~WXEBYaB?RP=DPx)`q|bYhw$-#Sfn)%c#2K~374QY zmbserYU59jV?JBYBCTFY&j()&0I62(*pZ}WrKd7dHfIXSSs7h1%NGeYLyiGP@`6$A z+d0qwNavhdFVawO%e?R_SSTRDIc|uv1;n4fUTS9<9Dmq5Rq8 z^cPa!N~(<9pV`f;DX3IOsuZe-I?R}eUEe4nyC2@Bfv+_xc5GI~0oA6E)8M;N??_*O5Ux$K`DkT1(Y?}+PZ;3T(21bh1X4Yg& z#?)5=cn*dMB76uw(k$i5>gpfId2ig!ZqzJB9!{zT%}n=8pOpVlwQKP9cB)>Pt$`(@Hsl~`)oL(<{Tqn{VQGf38k3gu?AZ1%`<&^EB&l4iWDvPz2zF85>ZR06ctptv`wauN|DEdzAWhv1e6h0Hf zh{frLr6|Bs;LC-}JGl=AbFQc+gCja9ybK#dfM!SsoG2t;uUWES1zqbC)H#9EpYR4h z9@EEMH}?ocfpRnIBn+k)QGqd`*(}`ER1uXxDpYPp0>_+;F8A6htfN7<+W3pvrO)n$ z{SR`Gj0B|wup+8A=ERX3)Tk!9g{FjGR2R{Lds_X;mSFhTpm1{a`kLQn3}3Xo{m<~H z+Khg=jgs2au4mLSiYQEWmnJ~*9HrUNAUOW@9S~-G-Xo;e4uACF@iM!b7)Y7RMJ?ab-aYo8c2E^}K zy>Hwhn&zQx3?*Tw?wdh~^Bc0nDr5gV{dmMa) zu{pMPqIUKe3 z+eU)1Hat-wC>b>_&3oAh!UbWF%BuBN`gI>R)dT*#VQ&8F2>DopRue0%D zAVHGkfT0$`;-ic;ajGe1RXx_-^}#rRi01)+3TV5ikvGsiD=dK5YjB$Mc+ofMQ&`Mz%__5RA=A>25dmBo;^7G`x13ys04iq9 z+yLT`kh8l69+dTN;;|Aj{} zZ+=u5Ltk$A;Muo$^rZLP@T2kXkNGSMks@y6IR(L@r-|R94yfdfkgH8%O|Cb7V2;m| zpE5XM5qHf>c{2l^0yGSXmzgD-89p_mpd6R+CUzCn(nAWtBI-WD0OUiNWS}c{MohR{Y1^AVi2c<210= z8u>DXJjLX+%es9xMoU@F0)C02_oGa}PZ@@uLN>k>`W)U2nQCdY?>AOjOBUlX7bCWR zU;XR3g7-x9p1fuex!HvTZ+m!=(EN5s@CuYv?Gm$!8bUXoqi`9GJwC*vl?K!N^Mm32 zYLq;_K42S)D5>dn?7he3+4i`UNb+M*v><-x+>gInNDZ2qdv_yCd9+b%2==Ahm6Dre zVe0IcGQ`*rUsdDW1hT>P+h7@ODR`JcjMn^EZoW!TgERBzL4oe#OeGbc0oTp%OU`mX z4goA_Tive-5BKtUm8#QMGv=3v&CB?AvyXWmG?v23CY%SU4 zu>@n5%DtnTOG^N-ZtBv-Dh4C*dItOs`Giee$D2CtOFzr_b3RI_Zm9Zu{~@Z$+Ibof zl@X~>VF5X6a_xZ8ZOylH@84>@J$j7y=;vs|J2f09-$u{r10`IQmcj_5Gpv+8iXvid z^|Hanj;l>u^6NK5;%C*gij|C6ksW-)6!d(?k7Hjt^N>>~$D=Ue!F692> zSK8R?A;Z2Uqvhyq7QFECx+qe-Ouc3;14q&0Jf?Rm{A? z?)@{)HZ;*FiZdxWZEab_=cnDhj5xym4&UW=%|D^^w_!Yf>DQXYGY*|ZsYxlN7z|E- zxa=Epwdv$?8M3$LsE_gaL_TBV&2enZedkV1H+wZ+@wwh&4Z50#mm+i7{7w$H)J(?v zX%Qt??4v%Dso?iw&L+8&5y&_ND3h%PPM6UE5GOlMFO_ilp$FhX)eO0R1U$~ECw#bTaCk4Uk6T6)uaF& z57Z>wBZcjXo9BHWN_D?J{?V+Z(S;;ZCE`+0{~jz7xnc1KejHmHfb%v*RehBHNDasr zdtGhLTWo7^VQR@*Z>Go4w+kRK%zr;K|>o|g}G{40Ft2PZUU=xN`Ddob7!Fy%`NO z=04c+6j~=iW;zJU%4k)6+*@Q4F1vG>^K8I?ymlyArXZogUtgUl8?zncfSQ&N8~;vHj?WNzSYyw9m1!Tev*mkm8s?3$M8B z6}G>v^fs%lq*>*}lgU>ALxRY%&--t$V{UX2n4^X{iw|G!X{EPI+1w;I_jOwId?@gg zWo+4g%wOL>Gi8vH^9C;OVezFjg$}It;B~9^5Y=kaF0qR-_3>@uRySh`c3x+>-NJr- z<)1*g9!%9+shm-A&32LJQcSDxcP)J!!7^bCN?2IpmNo9VlB*qryrxRN`YK8pF06e^de7y?}6Ns4p7&qC#vy34ZaozFw}kUcZ< zl)%?$l5AjyJZ03V7U$e<(Gqhwt_)Y0ajzQ4lf%t{l4fo48b@vwhofHOxA3>aNE6J)WgU^DYto+ z2A6#|+*DhFsJ}alJA_{he|B7C;mxjp9f*!B`WzF#q4cu?ex3Jmz_UW-)%A0{!l$5C zDl%8^AM4<{qjgzkMU66H&jVAuan8~<&4?b)d+OA7s)V3N@>F9+|B)#2<450uZvH%U zko#TH1D?Oy#Ql_4n-k%o{StgLg>N$s*b^U2%Jv_O3ViA@O zjmClyF7V*s#=!|x!>yYW3h7ZnUP18Gno zMy-8|AW}b^RfCIg-chk2qYwu>aEilT=KQ<`pr|&am(mfYt_xd<@mE?FNbdWV`g| zfFKcHQS$R^@J+gh*Ic)Os(xaDm*Cpe)WirzyGe-=z%sS2JK_5#Nma@FAxnWyFsl5k>TB?aeSA7 z3)t+%V(;GZNq=qcxp*(L>cH(ohpG#nsCctG=(BGOx9IN* zFZivxi+6*kY}H+-nFkbAb{_uvTp@6)45$C;*1zcHSo^(z>?>FSx3b?#`@8enE<>Hk z)&a=hdJ0G-;oxBFDPc*wkG7#|LHn*;yJiTKv(Na~<1-F%apAZndV%`E?5jDRas6A1 zfdmAg^kFw#S_=O+51i3X;72}JAUV@ns9~3LjRPpI34~yQ>3$U&Zr)+L--D2@Dr5L} zZAIXEfLKp&cf%>P4>Y|5L`m;X{qEOPVbBJKy#WCN$}T7XNZW2a_#Zd>4VoD4+XcaJ z++v%rPk?p*YvkN1pq0SO2eFH3;fVal%3{yXF4rOlN3ziG{+$1}LD)T=aXfSUjh*?w zkNSUd0Cy<1p?5W3hRzID-KHKsWV9~5QF$VFq5UZJFi=L~NzS6w?u6}vy*N0u|FM^9 zC|Q1En$>c@8>v9GnU%U)$F)TyR`^OIK5i~I&Xu6N*c;}v#^1KelYf^a)WzAO zzc9s$0B2oJfsD`hYh3(F=0Qm_G_}35Q=#`DKI{4LwCtw_j^3??vXFKR1St#BQl!1#yOLYPw$3oBY7DZ`XR#x+Nqm z%M1a2s7|1WwN>m!FHr1QnCAamV7?yvH|gGvDb#oywc54=5xI%Y)(_eyb?*)Ja@zTW zK2*A+MyF=8LJg*V(H~OO4eE|4{_JYR?obPZYJ)t-7X(-e(46WW``7yNE3;258cp9A z(Ly9h_Gfm*@=Tg^9d`<9yIjmHKW~PNA>;v7kf(rp#6~{r8KHDG(hw-s@Nd%GP3$TT z0$L)N)7>I4{bA99Vesn+&zeZEkjuIAEj(a6>dx;Ul_f<8%0c||fEwJ%K;`yf!-*1Z zA%&@5_2Kw(k>6EQ|BF=bAbQh!%80xV6Ho5|=-eRP-#bd_=;Wj$OBkU2#G2cN0_C-5 zfZFTbszYFt;weE1xZM*FWEU#)!gXef zInCS-&4m;*($&vzc_HQj&ca)!=c|R%<^vOQd|}=*TS=)o&+a~opR-iRYB?-QYwS3` z649|8bt21od^Ka~;Dtr@z$r--dxuI9w~PU#V#Gm3QofZ13Q)}_ki=cj$^W)y1rbhp zgT&eP(UQ}iYn7%3{Mcl;1;#6}8`_7?gy3D$9_tC9t*f-46xgfBE()1PDO*N>Mr|Rl zet6m+$c#2M5Kc3wKo~V5;43xzB}kubmC2Z)yFz{_%tvvaCaDVPKNE*B{<4e3Ouu4? z0ZYLnGqyzlQ=O!kqlcM*c1-KC@U>f--N+=Wyas%xy1^dD>eq4@+C*~eQR^)nQBcOeGX*1nPQLfxUe)1V<{PiZX4txi@-Cl;8Ay z|8-ZYDy-{)c9kS6@FZnY8>40b0yl*xU-N>xRoCWK(?OH2SDIYJ?DK(|h`wQI;fiuSV{AeL}RF*Oj(jY=RJGPJB#Mr-RL|KJ%~hNz~M&XAll zqWq7L3g`Db54?#{c*3k~O&-9IyBeoPAA5lb_e7D)w3DnQJrrYV&;Vpg@18z9>9sU$ z+QRaEtCF{z3@zQb-{oyxEPDhP_2GM*oSf6)Qq_gr4z}Gd51u%AY9hKY5UBP6eEIC( zjUyJ!HgrRSoc4o&1{b_exCzV3(o5_I+snGNtFfxBu87d~*j7w>Yc@tEcV-F}5d_No z14A3uoHG-+DA3;bAbjp6>Dj{DRsC{CxP%DO$g&Y6U?G-XwEqPV^{RZA1m0vZXBMfa zldfrJ6&|b(G%pS*HH|?tNEMS$B$TIQjs`O{qKlHN9`hV;A!YTH-Kqsd#eVn(^;&lD z#>{u-6=sPZlI+raU@S*tE8rGmwzbFtr>>WS(1Fx)rhcKwsq)^babU<*1_llWG6 zN=BfNz%=WUvW)Agz~A!~vej5zoQy~l0bL;f1bmN17U|0Wtg{>_itq;X`8|xMRh}a zD+vv)Lz#rAshXQNWXzv$S6BGbzvzo7=2%g>VdN&xgr(7=UilVgbmmTK1VA|C0a=3? zkn^af=L3gMD}H~tpjZkXRl#D`5?4t->63PNS*`e#R@W`7q(rhbeo~aqDAr@2J{C-V zrZM%C!o&kuPyU15uvW_r_`@HZM=mYj@k!FL+l-gW1 zj?;&ezxbXf7noV#1iU++4JFlaFEgIfvY=F0-m2;&rI13!Y?(EJFd8y%&noY@6^Wm& z>EUti@4uJIdA@pMIE<6- zFAoT5h~Uq33*qW`CZ!50h*Cs*0eWO0H6Pl8$&TC`=qZHA>C&{%n*D%@yu8)wMm9hS zV6?j0WV|Qqdx4Zro1_P-MoEd?U7;y&P*Z_yYj5+nTsE`N$D3cC9aGcEcvDLvabC)Hs5CY&MLfIDCVvg=p1?8PHB|& zH<7C{BNDRUO8n9%wH6pb05z5tOV)ApBE`fp>I9&CC$JT?4+aSs>!6zgGR~Qjf7Ubp zxM~>~$K$-+yFEiHNuH5~Ve^suoW|B)C#d+pHg&Viu9t3@{@~}eVr!|a7;hW;VHA;O68_H-&GUuB#IFm(8{DAUiFUPq-+H zbOmYL?@hBswe&ryxk>J;tK}}W4=I}JK*i$eR(Wm;vL@8WblHIZOIF-(SZA*;4SLZN zl<#9_NG7zl2IsnW9u+ely4y8r*V|~VMK}TD(nvtye{-SV{rcZe#f+bI-0#vVD!lWV zNOLe3VLMCN%uY3`U2(F+?mmxf&f4?p__2ZFx;+dhkPVmOYR~%w~i-qmnc7cMJ&|t zVEk2PBKOnTwpyVu;Dz7K++2kg1=zqZY6U#5Zh;tZ2Nl?D4I}|}MhO=5W~m(g<#Bhp zdedAMMmF92!~S=H?1MnT8lbiR)iz>h_X4>z|!sJXtg^?@NSv`fPi?MT@`^DFj z3-Xit3N(papv`?`@>qr~q;j$X-gg<0@CS9=vVx4BPZ4}@P|`=*$Lu+5B0#|XbZxfX zW7t@;RQTAh4ES;*8dN8M?)vnef3f%8K}~gE z|ENAbj|By6fONr1S0MDF0-_+jgpTyy3B9O@hzKaX_ZmuQ2^|Ea_ZA?bsMHX83?+f& z9`Moko%z0V=l*klbMMT%|6$0S`#pNe3k;!Gg@Ba1;iYX(njW>O{cQn-G4C@(FGwUq}+n3jsul zi;d>10ST22%ye4wSgp4V$Z-@rf7c&2%dCf;C*8v1V9l!&F4>^1=m@BBc3zU_fx$H} z^9WCV|D`66N6|#kI2tZB+6P$%#)Td`brdfKDuG!Vc3Q)Z&IV79e9pZ!US)X(a$x$o zbn0$$>xSVFs;~`jGP4SuDr*ERVGZzKZ8=-Mb!Bc5X9LG{;Mg%OY??8)GyR@TYt2Ij zBrMX0lAztJOw>BEMXKVYva1FHaxTtQ>K%>B`z$vi7(`tnd&`10r-MN&OZHvgfb%tXp<1MyFZn8yg}{{{sNttj{nr00RVRAE7&>A)c3duZnCmuy~jvK zx44C{tt=D!byr-B&;VKYjMRD-b&`;Fc83!FyL>t}Kaml#+hf6OBn4yxjA^yyZB_$& zOL1>VyxpV0QiA)6Aam_{(Je0WP?=QfSeDBzkRZx>v^M|U(a(JCO)1QS7}=^%$( zmOOq& zw1Y*Y)g|qlpFg}rwl>nZkq8Zv$tJ$U#^H?nY3DCHS;yiWdp|I)FJqP z*eYSaPNq|l$FS@FW587V36R;y!1|{3uS3XD7sJs|b@nQ4 zdPio*BInrYI7J>j4mO=S_1|9!E;eejUwxSS&-djQGJHxx{6Ej+U)IN|L8|}UqkawD z7a*{B{KNl!J#n9O_|(?gfA-`5;H|jCPH?bO`CD5M_30~9jE4!=zi_l zfO7ZWB@FY2@`4y}|8IfE+DylhrI%(N zDz*`wt7Lik8D@p8*T3h#$FS#+$~u5fu=yIl`!OHwPayB)Jv)Ago2O3_fPjd~@qZ`n z>Pht;AZGNx7yX|ef|l@ODE9u%N2hmbZWLscokuhMo|XTa?QcTt5SyvkGWjGFc6{w2>=>Ll4v~=@zQ3;XJ}8dZm@Vzcg00&>te`TOeRo&C04LHS*?29o zpiIUhOpcbgqW}Y65dX@-{uMkikUo~loD2`>51OxbU9?=EZZ?)5F#K%%fc5I{^*|2% zohd+$A__;?VfxAmSyqhW-b4^hZ<6+N<~L_q6w-O>cN!1htyZsPk<6BD_r`CcN5}vr zPo;IQPq{y7zeEZ%qB-8vobwkZT69BLQQe|1T3)WVsf3o<$8KwkQjGPorT%fo_Hp|a zt~=QkJ=w(ST#Hc+8hV&$)ErZwY_7jy5Yn(5zU}nvy-CO;!`W)>=sfO;%pwxPhCHTJ zlK!*Sw%JIhJ7sUY4f>LcM~u$e?)cC=ZvX9f!7XA!%Uq3dlEGNUAJj!mvG{(Vw~?;o zj^_@B4~+c9g|u=hV1?!_DGFLY&h(48qlG%9FK=XPwdrGP1z949D=tv;b3D>2f7Z;_ z+8=wbYj4sX)W0S%{o2smtLv5;`yKwCw!``(vnej1#z4*k2d14o*L)Q=6{5raF-?I; z0&2-y&qNGvUDk7F&wX0j!-7QsH(4tY!1wF8I_~=+`S+guHU7P?-ovt#c}i#fJ4(rh zo9;|Gx&Yw)GncXM`+WB3IiUKE_qFkSGs@VmL}iYhhHNLKVFhT{>DhU}qc7R7N{I3m zagh0JNfueVjPX>+)~9v1pU?}9;k0@P!VrVv9Hg@p!A>g#yq#E+T{x`@@o_2xSe5i~ zRzVw@9hZ8s41SWF0CeitQTy#UWF5Wr#h*}7g9~>JlK@14=0+|eYJXgIep-3=s4y3O zL0qCIk8~%tXVixA1AOca&IBQv7BR&oU&*Art|t-0@2RCUy>6A<3s+5_A#4+MQJ&l1 zalcpKmhtcWhacTXia5=|?@zroy_=+- z@6S1-xp|L9fkHcegRG-*N?hX&slu`0J{ByX})l@&r% zCXh!53fJFVU0GzL2!F6lF96m(Y*Tk13Dt2ELb&%P0T@`XQeZg2s$2-w2uCmj@ z^CTYmQB#*FR1z!eoph8NDE8=GWd`FiI^)D-#3FaUVU>aY9?Jy$-sLjp=%_bsTPt4A8 z%q>k+|6&|$ywtzb9rHB9MeyG-{nGenwccL%d8v^VYgsGDa-eUM8|jc2cw06fsiIA0 zDfzj9m5b$&8##x4{`u)Y3fkI1RQ`e{Q!OHn1JeGJ-RW4!99nA1wIU*clw*Np?6t6WNmCq9J=N_ZWY;RJEj zs9~BH9F_XlcBp3=BFUqfE-`#{h8>pgY+3PEAU7XdZXPK`e zxxdtuiF97>at)^+lEcph=+^S*mFpX;FWxtJx(Qm(a>_3r4wi4=F+iKGH4lmxcGtrS zRR>-uFpWm2J#WMte2&+weJbGJyj0w}KYd~h1Fuc^e+~ZHh8|?V-V+DPQ!g+dy@K-E zX1!GDyje`^H>w9)D5qwqDZQ<0tXlN=B1BZ1k6Pu5$NPqSLydC<3ZeEp&PD^Z>WfHy zhYrk^B)X#Xt>MHft5}giId>`A89Eju%y{u18+5{M&*G2mnjS8d=ixKN+eEa8@ZMq8 zo<@gbufTKd#u?wFh@X@QOAkSj4P&*9>eseq>r}y4Qa>^J1WicCx49{b<|+ z7MB=LQvA4MmxSSm`2?m^)Kj^})VSWCbv}cr9E*8$k@?;HPA1OKorYNj4UZWFeCdff z;7PD#B=MQMl{aYQcI8$lg(K7I5f;pEt@jpGvtCd z9VWG48IWaO7y}B_g)m4MhWP(=ozP{%x?wZ1$y(%Wn$I{Gs?MnryUPIbZi?eeD3Y}ES9xYC&?Wji*WdFiod6zGWWOr{7;)pJd%K53? zL}yz-hH*h=$xWt^v@41kLg6;WhrB_YKzZq~#+m2WtTaYn7cu#GY)MzkG8>h#mbNxg z@`V6JTvqXHHUanq$A%62bvZYBk7qH@LhXq+%UujiQOaqWX}dT%a8wEuGq}d$_1=4{MHqQ|9$CG?^sX+V-nQaf|3^E1u9&y%eVi|NBWS3G{+mEE^#2gjPiP0DYBNj;K+f>in9s z+#+;b_E+iY^YqUxVIvpwukWnfJ}IjUOweteC5S8V2EBS40qi6foASJa^b2%$W0Zxh z4Z$OSX@R_UrDoh&EN}A567NAYwet_IE!!7cfE{p?^$!#`z3zG>Ow6x0p&+-!AY1z; zA+N&E#Ps%-^C%KLK>qDOmqw{M_hj=M5WpF45ft$aT88hDaTshc(_ zptb$;_DueuEv>pb@Enq0qin=1qW|^``lwMsq~Gj0{=-wJicOoZcVFiF&<-v-lXNJW zvLA}u`|GbU=3g3E&RUeir+Vu|uH85hG69Bf`nYDvZ2(ftXz7 zqWQtkR=^|GacU3gJSRUYHNa>$n{`A+^nY8c3*b!ab0J;g5fop_!vm7it#Au3`rH?5 zBF3fKw;;npA=!`m?NlGndH}^(Vm0f75t-aiBCV}4FCv61!+SI{BN4M6EQjCJNI_*m z96$09eK(3NHyd(Zgr*=Dv!WL67qx^%ieI{R#oHIwRGdC)W29o?kH6&rXU+a`#ZQ}B zQz%5JuP3YYq9H4#M$Mp)f6SmaeHcX`;>n&pF2Ud(^HnRgMwoWTl_#~ZGxJGBpKz)? zM(yK{hb;+dv{Vs+GPL>5itpY@uYOo}v9e2wSLY-iM8^-`(@?o#Rs4O2Y5WCKeg21^ zaz(3^toe4h*NQvUh?C@5V8q^^=_yepgD8iF!EhVw)s7BDHCdsvxN=dM}Lt3Qr(0gX8kXPB|+m-b*Dn5 zct>6&`Z1hhDJK5t@OipMbc=YFBTxY%gF-hoZ=r!n78t4~6r1 zU96|pP57u-Dkr3cK(K3e8l&`)`PMx}*pkaXxSBs~C*$!|)c(2sXOt+S4p?BhPNl)| zsr7%AUvo8#mU_WpSNj#-fr*+~)&=Mv_KQEKR_zd?ruB{6*BYaGZRizGgUEi#Z;IXi zUWHL%7QS!Q$k7}7$vcSGiv`v}9jE#fRxd|%6~!4lX}_8>SfB|nia~8WBq|h3@HG_b z@zmRF;x<96J>{La`rqBr^t|kKY1fxiNoqD{wyRXGw(mikis;BMe5jJb=l5Zil zf|^&u*#~5*u4{$`plR$==X094VrDVh_ex&aPC5l=?Tz7Qvhj}EVBC}z)Sgof(R7wn ztMS^;@?UrU+tP1zkF5Sx(onkL87sIu|8}Y4q-AOD1)`=hR}4r^V~a%j&baRa}K zGMO!9{~f;poi=3&-9`2FQpRGLyKn6Y3bg_v)H14%gDlhGc#-YfX+ZHSz4x#IM}jUS z?CbF8qu~vdpD<^!tHt7dEf*gNHRz?)`VRc5E2VO_?Q}*|4m#M9$6{;bPi&7`&s5oV z>6gbTCLLZ}2SU!7kL2)ZmOT;1)B5L%?4_1jWPt)g@;@E&+?6AxZ7ei{0=RyD(|wB> zK}!ELIcQK=b0wXNy$xXjF~N5^d?^2QKVH2J`WN@~I@>zPqh7>LZwA3Tl{aLygk?QB z#WoRFXlT0J$)gY_*2r(s^D_aT_Y~H6XbzOAo*@+Ltd+^A!^V2PxiXio%E1YKMG&1J zVj#8l0Fc|~N7!GMd?@1~(PYKsQFdVxr0kUI3gUk5&@Vy{N@$A(&0$hyl_T$|~NEBZV?U%v9M(1jCYsa{e^dT;gLs&QOF~?30Ba@V0w?qE1r`rR$AcLfsLw< z@@#MxdP#{+m+&4M@wHDPatsz-E2{=BT5{tX$#~ZdV|MOuP*U1MS-b*``q|Afg^eG0 z6P`f|f_M59>?FekSnoCWe%p3wva)}#B0-gWL7i7}?xcR`;X;O^ObLFwE{V-kkz3MP zkF`=*s|#B9e6y3hOe5(%hCoUjb=~2o&)0sqo1__aMRjEIRQ7lhHNdPR zqOa{t^p0x7%4Euyk|1l(eO@@z77|-Xb-q}a!Co!`hM7*1S7&zQs|*P#dKgL0rEO1T z+1pb8jtpFlgG6+?{TM{@`UpIjxVG1Sc%JM}$g0Be(^?#w!pn21Yc7eKbCztl4T|^e zJ^F;CEX`(OQSLS8%AW1zMK4_#OHocV`^S3+o?c+5;zp`5Z-`F;s*K8@ursZqF+HN1 zrka@V$!S^3mrve&AUu5I_prnYq<0VD1XH7FHps704obE=w*u^`JaI2p z`8U_H+o<9MIf*TQ8-84+`r2~DRWw#&K+<{qPLOX5xu!v_OpuXoUf-&Le-NB#6(F}_ zNyxjDUeYSXc<(?#@^I$~fDH`H)%$-I$lHSw4J+JJJCrGOI4?3_->k`lNiv`DwZ{zI z-!o&MOTq*zu)aO3G`7qZ7@BnSr92eYEuQG6?>%NcW-BM`M&9@*wRYEhd2*e( zxd1w>{bL$dBv;)+a2QZv7IBmFT;Kif-`tC;wM~+;GZ51rq_fN|2B}+ZOcAcVzcfa8 zSP}yY#rd%)7}p@)4WOZ1!y#fF{)VD8GQ=vS&q#mBXS}B z%z18TOK3Yb(R9$bCYiMBa;XT2XWt;+)OUd});|TWd6=w>&k!I2mK5{g3-o|)FLDe<_UbAR5nN#;md$_e- zu3E0ts6}8Ti3I0aHGZhS<{fRJmdH@@b9l%lsnI$Z3DeC7713b^)89dzChkJFEjh-C z<~hnDZ_l$xuVoOyKjouMBXGK0B_A5qG-jHZGM`t*>rB)K%-I946>syUDPVcis+Cn=ZbKqM3U`^9~TKzNB(|RbwLXEFf zA8z;RX=-6Xpg5;uloA8B+K`Ilm3$rC?TsxOzMLpj{~?|uzh`q?{S0n@yr^VVtEbR; z_c|5UUsZIB5II8uXB21KA902Fx3_N#aJszvixUiwnDG$SXcHUPD*ei}y1(9YPR3C7 z>B_=RfDfC+nhzdNTTG zC9TFooB|zJjmg@c`yG(=k)eK=&=skqiQQlw$wxZe9GV4BnBfG|w|57OiYe_T>}F7l z1neHG;QnZwt?D|ZR-vvu*V>sYzMarVg%g_a$BO<3>oC2lfXIk6u_7GZ0CsDjJxQb{ z$cSfUy(%roR_dssdANzR{p)?*|tv#xBv9wIh%YqG$Ym`g&6=0SwjUVs0 zP~;BA$W2vRXdsFcV}#^>By<|tfu32VS6H3X7{VmlewwqHO;CW2VFdIik|p&mb5&B= z0rf`D0bbPAmv&zV!kML4k5UHKB^vmt=Ir$eue;E8W86*#ug~aPa6ljWuKSF6T^cY6 zxmWTRzG=8ce*k-Fd=Yd@ODI0R*TMko17a%E+ueTMHH6jU&xot2OChT*=DIrE#kgk} zQnW3Zn1pn44lelQ&+#ABO^&}_Ucv;?Mb#J$_>j!`2U6F1;&{SF^0%Y%*US6bxolG- zORkKPwiPyP^m%PKEqc=A2Wjr-JPD@Y2;6v~u+IMKGjuH<<%@0?`5m$NcK5$F@ulj= zGuPUiwh3JdF)yZ!ZSxaD9D5hnr`}&)Pu~tT>Peey=UbdFb!DYG0IFZO?T2E;?-iPq z3o0x$^vQ6VHAMn;df&H>c1r2O4mS=~UvYj)poYeS5L=NgGygl@T}{eKl{Fn}-mPVA zrJ>Mu3E4I?P4+=SpUi;?lnOf4eJ} zZ`{Wn)pwPdt38Q#f=0aV zgwK@9v)_4$QcCA2a+M@QeaPj{Blc=;L0q;U#CjSHL_Nv9%L4DehHg|87tGS2k&G9p zY|ywHogen-(Z~YFg2V35Px-G_chhrmnTTM+E$Pa~XY`vh{igUils=gAzPbK9M#6%@ zqAyN=ljJdkh>3o$uP0O!L1Fnk|N3)gCz9`7mE38I+3~7umEB&_koY~paw|$2f8O{C zO9j{%M^w+~s9f2XTjlrzi>?&IVB>;97_GaDJB>zkJ%8zrNxv6>AG@1V$`|3D<)z0s8v+Fa~1OYrgkv> zv~5-Rind9ff2Z(U+@GaPmsJEXN?XPrG7P~YQG!sYLM*48793@ZIuHoocY$gLgxq(1TragzhR$<;M~zQazrA z&K~!bXX}Rv&!K;n6mdW3TyGPuDG7lsHkl(sGYI=^{ZrY|Yq07wHufkU%I z{LdEoGa$ZH2Xn8%KhcKMWj1y>wM7X~{V8s+S|y_=B=gXrq~3wW~k;s0#K}NiU<( z$}c?o@P1~UxkP8^9A2Yd8*iFse5AcThC^@b)h!lmNImVOEp4OXDD zuv__;y@_uSB}pX@Z#AiQT895L>f2EoYusEWcoS@y>$X;Ke-MddG<6{X|LXf{_9};0y2Jm`Yhr9?Ms=HCUr#Df~YL-@D@;2Dx;SE?a!%0 zzT?D|<3Q~x;YDA|FxnUC#of{Cwo9h#4d0xSe}^cynt!t)e}D1Rvq!%>{rjU=f4}|x zaKAtL-;4f#H%{;GErtAplW9wn^sTb!jk{OMEbg%aF!=s{{CiTrNdFP@2-@0mW|s2P zQH1nfIs{LEJ8Y95AI6U(R!$V40q zlAN?}Hh&Jqmw+-mlI?!qECWk^pL1IrkG^JefIlUZh^l-9Q|JW=*}aXe!B(p8b+w+A zOG;_Q-2)(h1a0wD)~#j7sU?2|`(`?_tb$f|`%C*P$mf-pAr?C_R1aY^ezVZNT zFCD{rkAA}UEaT@I zj?*GQ;@lv?#1xn}+sQJM7ej1yO-H->hIQ^7cQ0SrGznoVqPZcj@tJP90GclsS1gC0 zVqis&k^d!+AOG?Xx_?iR%hUjJWjSPmMmPX!DXB)j>mWRKVvxaoWvnoI)@wdI;ZqR3 z&&o`FwQ{-?^R=jbSQ{0^EOaB3r@|bla-qnJzWa1_X**o6$-WTDx~=xs0a{7)O{o(MS{_w$v&pAnD+Mu3e=$N`mua6m)-4t9{LLG;enBRQcmLz#e4j`Z#` zV$BMv^}1^kQg1ibI?6t1FE?hF%440O%5x-A&D~K!kM7qf13Jj4A27z)Az`FdXPc}M za_M`372NtT-d3$PhyQkk4!S}+i3vJFVqC9tNFLq-u>TKIQvv#?JCQazowl4w8!fK7 zAHdr6ubZ)7;5X6g$NfBRH+lc~Nbjitl0~pw7%gVT6Cjj^1s%;{Ctxsuc&ob{NhKx` z20S>(KW4lw%l%+>c-n1PAlTL-eK~e)G|O*>wv*nYruGQjXm$3AEgm_rlJb^~e;>N! zul5)d-Z>&kMu_b(mJVk(j}}}xGY%gX=QPf)wPf+%%H+Je_6Y_^i819jjbDU%wdbu0 z*uQ-m&XAYJ!^vgEFYxn|UTkwxNwSM1+pjL4I`#6;i*$yV#@t6u-ApFc18aBVvg-qE zzwn&qI8>_ym(*rBxwpEN4iwE6Dq7~6GB3Za_8k$ps+{0JkfsoqU0p)Da7MRgeY9A$ zTQXvuV#N@fCQ8tL0z({Ys^jcoV20d5uwMVU!^}4D8HY#(lYsatbMuQdFYG_dzgtT3 z9huwxjR~G|{v)e!4iHrkD03zqdfQo>{P-FQ)hh6n#my{9-k`f7RdOz3EV4x0gB*;(Bz1?#%^Hn>0q-^K{21BnAdevJe=%2W+95LIA z9t2#OTiv&G{Mt9%-i_Gj_G(#Ko3@8b7b$#X`CAw~ygI$4x-S+kI-LVj{NJVxuLxO` zuzjFv-qe2YaI9*0(%y&vIh6occ!fU%y1!mMS1bdra-7ivs)$r8yQT5f{SaT*HMxE*El&vy*jK+O9^ z+M6O77po1b%_+q-A1?J9>CGUgKnq{w-Rj3x70mn{ei22E`?96_XUXfpZDT=eFLzPj zBqW0AUnYn_prFepySp#R3I2(_sZ#!W7wLG%fRlaR;YJvLBYEtz0Nuyk!Bv12TK9dg zp#07gc-G!%2=faQ&j{?`>vb(mZUZutpPN>tQKzV=DY@yf)selxl*n6Vq3JRu$WpfG z%kG#Rj$N_mor0c4uE2Pr!^P#*4ruE$5ayvwAOy*`unS zkLIgPpx}1o@8==`B_7u{q@;<+%_qrc<5eqe(=KA0ZVy;Et*2zH0z|2-8Bw^LhCG#8 zwWU@}JA+SGjzS}lYqAbxDjq-nulD{=BwV7#V?7DJ{7#yDs1ZiXQ}K=^t*Y-kS6@b3 zgEy|YB_wd^@nq)Or*R6uR%Lc7(#{+8+wl9IIQlw^7$+V)a`%M9-G0x+U4edP2v!*%a<=_;FbsVeJ%H~ux3Gvo|t>3i2_!( zfDM2=as#OQ`n@XH^k8P*ew#ea=iEIyHT8(IlXp=UsmDG%)`}Ukmfo9x%Ut{hZn+{} zp)*qObnl;sY!t^^@2~dX4x+aqA=uq@H1azqP|?`*XlpCSg4b&IvI}mh-)mBu%)NHm z+ZD>0v-|0eg`>aV(c9KF=`(WgFiX2G&?HddRr>Yia%yqe=?VDysGvzv>vMsDfp)MbO()4zoYRG$}LE~ zPQq5wK2K<4vZxU~VZBpEjYnPlXY6M*3)EgBZ9LN|#F;q}Wkfr835q%p?>8n^d#ukC z8R~0WPcKu(431`1!Gy-wWF8|9{%eI_p8Gw>e{($3mnzKvNE@cGYh3#39ssU(_FC1S z7538lr!qIH-TEF>BK9F!(H4h2n@S+kY4PXfdes*p+Rd-CyW1R5`@p@7a#d&>Uufob z8$5zF?7b%KqvffX<))=eOf15^f7@~crFKt=3P_J6a@}!w=-)Z7fy9<%#d!2H?chSGg@KuTPe@=`GCx z#ji?&&Qa^NQTu)S4Oo8*Wc+tgetMP2`m&E&z%s*RuE}4_cefaRF9dKFy9NgbQQ1LL zqe1kpB0fJ0K!?uXzMMWF6457BeNNUg+3wHV&nYN4hKgAEsh#v4R zSPYk%`!SXW`}-?f-`h|%F4>MVbryCPe!mQde81TSS8w8i!bG{-0sGa|$JLoiL^dAh zj#F{#3WM8CbZAghf2I(Q@O<{{*;*YdwCusWOq|1j)jG0CdaS~nYSH?kI&o8WGLOB5 zLaY#m0;@$Z#R>*s!^y(SY@|eiFez~ClMZZ6OQhJflt;#$Cg7jF%aD(5ds>wG?s}Ps z?)^EME4GKy^b7;UUopq`!oLsizsxqQaBaPS8(JKgBq^96qm^Jmnz}9ysul07-nH*7Yc#EgmwyhX466jYa_Ii}x>KfOUJm09#w*~p8Ki7#Bjzrt);NS( zEq3g(YVl-mH$Zns2lRpZD-FK#KV4>)!`;dYnhZU|lRsYg8k)$A_oJAH7`VJw{`=0* zgv*Lt_?iw<#M2Er*f;+paE$D*$IGihj34E4=oU)y9g5#OQO!DaneWfUECIA2R2`%! zf?3>>5|r@zY-L|_GOKN0C*Wu00RmzeK-OjS*in-dO_0$ssQ2Kp3=p_vGT^&9#&LWs zR&^}(a;i|PSoG*?-uWO6TTT~-dOf7+N!GHtD)$d-gQC!Q4$nk7MyZ}rJYa;V`*B&r z;g!b~k7xTE%vzBIz8lNNF5x;VlWdtH4~r^|o;fr`%rV4ev{7Y?#S0J2NUVwj);<|= z-cU#C5vHGfQBnch%aMQG()XD10x(+Ae_JkBFT1fC*SU9#{T+O8y5rE-J(1Nm??qx3 zuVGyQ0FBs==7q!csvS$%WZvn7G(3=@+U;c$b(KvPa!|Kkk;dFUstV|e*L@z9uQfq0 z55e!q88%ptE#d%ekl4J)LxXX}W!0-;a*2xWV{bG7^-PlQTjuFYCLwqH;hZ;M&C9bu%d7 z>m$Fky*hoS%4(3suB#=5e0YFEn!#P>pV|Q#yMweITMDqjiMdK8x9iR?5mNUT?}XiH zWS}zSowE{513*n-KnWA5oAd8$b8>#1Yo)sI48U}>OATz8TU#%2r%3uD3HkJAmqnc=UKSMw~NAGPt2Z;J#JxyHx?l#DUqWxuna?X@o>0Wo$|7dgp3P zks+(Mo^%sAiJzWWI=)tk2#rvF;dpmdQZLtGa@~xR?(6|}Gzr>q&1s%S8?MiX9 zzU3+|rOQz7?Rq8^{NL$;cLFc1~MmSb+U$++*evh*|Kf|HuSdfp$+EP3PCa}`$k zP2WWrT|o3>^kkpC8gNX{{+`NEC_B7{G)rTbH;FBrQ$_uTWvEOS{AVO8 z9?u1$9>Hk4^2RzUYK;mCJld944;zVfOYFb%;2}Iuwbj%N zFe9qx^%g|M>S3@PSO~`#d_Z{3X8tJF3hGq9rzx0!p!Y2IW32+_XxG@fW!BEMQIm=N z31pM-yd*(PmKoce+qzV1T@`=F$s4pLZWNea&ja>-IS~ohdJtXh3dBqgxt<8ClujhD zP-=?#isimAS!=G=v-x`1SO+1q!5+-R-2w((!&j!B9Q2s(givgjuHYwovU7q2D4b~N!dH+tI4a@F) zI$OVt@0CD5v1HD*rGbrJrS=rI8|qv>_{Ozd(A%rHu3fGj3zdGId)va zQ^QKL1z^oMwb~kbuZTPWBxx-}0@mlA(4-CWIGIfq2OF#50yH3F!aAh3 z+8i;(K)3j=C_krS(@2u@P~p*gVjaY~_9?^iH(YQ(@JL=?gO$ zt>CK@BwK>zX^X80LSU8kf#*0bx!L{eUN`xqkRrehrTmSuoenLsIwx>yTSQX)7&R^T z@tAD#Ck75x%DhKJ+7-IfhEWK!Lgx`vt%uaMk3_?`Z4`=t3?8*>W*3GC%AnYO9mI$y znyHoQ%Hw4a5of!zTXkQnBgLoG`3en>o@_A1f)=vM$Y(K{ey6-%`ua7G0+1|FmP`{? zou<*jbf8sWtwzI}prWgO?{m9Oq-Q9tp7X;l#Mu1KFbsaJJF2`aiDxpCvW>CmWn6KO zal!i!*Ew<;rbanJrz+)^;>WC7*k(LkCOGzYA0LgCHbm)4#0c53&~U43%7tA=y44DB z6qXlHgz*TjcLnM1c9!+cPJS%;LqM<@9$d2y8KzvTmr(4EjI~}BMs}z~g@I}`q zTp`lHd0INtlWKK2f+n{0*5?t+Zif`{4!af+Pl`q1h>-0R#!JaC@krnFsmp#_bmLuE z6MGp3i|$0eyhcCK5&iU_J7AvhxxhA|y)$TeZMD4Hw7K*R>dRm%jm5*n7=dON#~ZNT zHwUiw;oEv}9d)SvCVkz;YIEo(J0K$8w3CE=mL_DYi)-LFO4l9rE_&IYMj#~%`EWFD z?_UdH=3R+jcH=4xiTB}=ERk&X)ap*5kLeX@T9Oi)_}nhODtU9Wz7fch{G{>dX$)r)ConkE+LPRmt}|9|(gC~e&AE7M9L)9~G0bHa`&A!oMVQXy++(@l>xNRtiVMR$+Z^SFA7^r0+HRmyMz2Me4CwY{F`6=aM&Qe z>1Yy0lx(^6#0e!r&^r^XP>m+uG?N8M=2Vm-UoHs2r$%AXZ`L53v~2YKubxDX;HU;w z73sbku%}NM@7Tq5CrGPfCHuyK^?CtyOuJW8_lQMx6P-Re z@WDWvAdpDVwe{g_pExtuGgp5TUvC}tm4k_Z;nu}7nnEfbG`zbFAEcd9+Dh(rOJHwp z7(W~s&FlGYp+*6yu#j1B{>9FxaT0j-V4)+($VT(0%jrC;S|d7E!zc#dF7IY~nDG2` z!Wfp>;sN58OVW!T{fshrBYOu?Z{Qx(R*9@( z9wV)@ILQp>F{0_fCAH2OaZf{~SAY+FWJ8XZojO^Vx3I0&Inx@DnQi{5F;+In<#ZT%hHEo4cO1TtCD6< zDI&{f7jT(C+-xp6{XTzhrA+2)Y{}}bwwSKOXc6W;{sSqqfZk&t+8{@}$xm1S(uoG( zF*BxWi<|3hRBU4VM0p=xxSVcJ74j`y9x~yha`#CKfOOlD1{s>IVH;v0%oU7S-`qIh zB+3-lryfDw5-t|5Z{0K;MPiH#N8Ab*Op3AXk?~x+JcS|K!%mRso+zpM4-Ljjo7zxl zi-5<jZ&-CwP_V1&UTpNsezDSDJ8&AycrV56lFdd*@?5id1*xK3w}r5;Tk z#o`U~ZF>^>vToB5S62+NXQDPwQx>Ef(<(lu)blfnXr7>&2%VEw{XA9}%WKA-`y8## zn1Z`ptzBr86tgp+rqSzfKgxnBXzKq_vM`I$f-j!qG$v5`6VRNgd*P_GXU$=HM?|ZR zfWDU!Fn6D#O+Q1oeVV}cREH0rQ5uyL4c_A(pH=kCa-5a>8{4;Z!PZbHKZ>4MU_j2T zn|JpVSopz-4-ifsc2t)Hmj*xWpUw*-A&$J}RII2=Cej6}SCrp6_yZX18@^Jlbm1NP z(MGL0;-(lQ7uZE9(0@pFd~Op^hP9ta)K?RbJ!?D>CoMgW)z!Gso2Q=a4K5yKJ&&yA zn9=;=MPi{hRxdIcb>I5nH0E-lDf>)spz7!cxfl+W*@EN)Cyxlg^a(TzX$p`|muPT> zDs+CEMlcpdH48Bjx&Pg`d6@ox?B3Z{GI=*uPj|GAfZ5)Yr9HnGjNdhRs4>m zJU_ZPQ#saX``GT$Qu{!(yA)w^^6l(&>GyC7#!a5k7;LT&!w%6Wwa!ej_wCH+;(Rj5 zf$;R;Z#0!UlSxRKem&lyE_s@u3 z-W$c9>56s|A-AF8+X|S;+0=BA{{^H z6QFNY3`+;3oKAPr70HFhC`4rz=v~^Espmz_I=7y2w_j(qC8w2d^4R>G%^0t{2A^m7 zUK&RYg$Z^L6g-l%uxz|>7sN}{oR+ms=kb#-2{ve1nVfX(KtmP!@S{|iJ=am0SGwar z0GrEiz0A^o!e}sGcwn?@({|dVQ@8_rQJnKRJD)|rru?{6aZ#GU9{LUK6|vf*Pk*t? zK-^u7X;f?v=QJ8J19U3pCRwnTC@$9IF^2^V=NyE6oUj@bj0U!noS5>t597m;$|fP_ z$@7GMug$%x+Zr1ade$p_lywVq;~7)>z1yJZpDvAbC7Dg;e2AeRipq~0dKI}l2b%zw5gzx0j3z*)P{6!Z#B>zE~Z)Rp@BAr_SKi|y9>V2urXkH=U>myyM z#1b0C`~Yzkr0Uo9Fgmj*SC`5GP$Ctg6P9mvQ9P$B1BO7~Z9k7ZXjBx;2%z`Y0 z(QT6xQ*#qBGu7*kwjnF1+_1VI^M27nJqO z${86$I}ZBXZYC#@{8n1F;hvCGpN6ynpR}(O;&1=4o{0>P8ILk@@|RMqX5M@%zde)3 z;#+Az!HFHELHZscYKV+yG!*6@32hb^Fb{r-e?cOro$glA3|03_LBsyOc zYdOi5yiIr*#0%+Usrm=BHZ$_|uI0;ieJA&nLPigw$l5f&RNh|& z<8E{6*kvFLJs^I6xi5Xab5OSm`8pZJJU6CEJHPLxNm8RyO9e{b^>QVC#OG>_o1pE# z)7~Qy1sB%2)rhkkYnQM1=n9C%eY&H?3%OCf+@i|w0l1unb#fZLQI&~t9m8&6mHNre z;6?ki4k?H1#bvYRhwqqDGlX4lESqjnS9Ndj>@Dr8L8C+qM;fN(82Qk5#mM*lHx&B5Kbh1X0wC zO^jIIyFKr7KHs0df5G?q#pB^Y?mPGOx~}_my~ zX!q+kmP#v=WYvBrIzLYTv*!6zY;O~8SX|?R6L2;Cit&rQen;0d$bE6BFxtG<#bLEG zPbX6v|FQMMEtT?H7bQlna>U(B9cu|~!6U88K75Fbi9C5yEF~Rk%)6^y#9S&}j}$F6 zhX=H>2BO~`Tn>#kP?$1mIS%QZKEI)SS>AF)4?I;xItsA=GSjgf4s@`;JCut~j%QTd zf!zFhBVflwG53B$;wOP}=VG_(T+#8+vRor3dJoWw5@FNPsOG~q>mV;roR9fEk_WuC zMs^B+3Jm!+()FD@$>BF#s(qcg;;uyF0$OK=38bsiIw@(4&XuS=-%R1v*F^6OHhsVeKN|l@l(XpJ}fJ{3|fc%#45SK3n8vB%V#E$kztTM z2z?yNOIzFGEI`T1TjWp z-c$179B1_U3@FJ=bI{^kPe|Kb3e@?eG0}7ge!A5i@0W9)W9VZ>d-7yb`hGrShtL#z&~jCIZl zG8xuwlD*dI?z;J^KGr_Ta;{0&>%vMKFA~sk8@L|}cWp)$`s;F?)OD!JF8(@N%&d0@~q%;!_Q`L>85pEXjYCyofIgqD#I(L zAN+gC9ijf~>fBUTRz_H(&4Dtw_u}N&qr;`);$LNNopfjnEN%Ua;YCiD=KSYeIifI`OwD?^FzLt` ze+zFBrB2$}0;;q(Yrv0Q+i(jmC6z=dEH|bp7Ric zZu7Zh;n-r&wcrw76M!u?EhjZ+h|X%u7wYX;nwTXm05bH=9|v9QoDB{WH8Z~(hO@>E zAT8n#I2oDp$xgd2<3*s1-EP0-(*QPH5aL6kKc7L-guTy@bmkaaTOuDyAUjgkp<@Lo z|F2RbxInmIuq>dw$)27U*eSH7ovOlX6Vf_&|0yQ;94t@-k$97=G3be`G* zCeCZ@lO!sdVlp2-b^F6e^sm-=A6HB63Zdn?)g1l%>!9_BO` zV(_-9k%E@YGQq`LEW(;uA}G?@JvFkf;_X{@?*vz_dU?kxX*)N&N4FHi)w${xX#EIq zPuNoSB*UH;W2SLX}6Q-fdsUzN`uy@AKf#nYsg;kcP zZl!p9ymlGVEz|e$ABN%n>AwiyC(nA0-F9axyyi4Hl%Wbmel$QEQ9Y8gC!ojvnxb%E z&LR;L(j>KVmHlY6r6E4-evB#;uSTLKg{p^dzF#fnioepE)}(E*$37hHDs$s%$I>qV zZ$!m7aYsuAohDr=l+&5ar^2LYQ`mq-$s(KRB-APaf{*)rS!m&;=cLb-BMU39LX#~c zmYqZW@tO|1%kt0fmSD9kcQf5La70w5g-3-HD_Wdy+NZJd^yg6KBij7qm*RMKsI z?8?+#zQ}6<7Tfa1l0@xthy+-slH2{o!*xx~EL5JO>Dj9?k|*ffnlQ4%aR9dqQ+68C zWUI&^-w(Uol{6t*7r|j5s6otPtvRrThaD0n_EpHVv*Kr&y8GAq9Dky<%*BhstcB84 z%*34xiei>v(mJe#JDR0!Q3`J3M7+q#k78OCbAcqW<6daB@8Pw*zw7}C_rjPuud)fY zc7zK2dC%0tGA@?C-WhGotx``4`~YaK@$7v^BkYx>xoo+@=EOU7r1Dx*27WE;CZOzc zG1kBAZEbM^ayvhg#dDPyQCaF(Hw{=V4b0(MDT!i}t;7?Ru2u+V&5_~YG0o$*mcv_l zIxxY)O@BMl!ro-Ve!@y2OQtUQ{d9*)t(Ujvkvru*6)NL-8o%!Rb*0a)J+bl`+Mtz7QBCa9TuciUuomEfUF08#CQ|x zY=ly%5ZlPB9Q){EFScQu6 z*ql(e8ej4_2Ybq>v2!xY0g$Ed#bL)N{#G8huDRLf=4RgU{grXax(OLE=VIOh+K_>e8r?y zsDOpvlMAnVsU#6^lJ$6ep-Xl#z*$Am{#biDs` zqEAl$>yrQNJsJf7_$`9`@2Sx4z6RE5sQND)MgL@zpX>Cu@WwzXCG4I|D_uIQO%P2* zhU}v(vcnI!hCaSeDXD192XshY69*dVyi6?t$Qw7~OtpGw@SvusQ?Jl^^1Nu-b@&4u z#@rJ>HO)LDW*g~pwnh-hA-*{JQj2XP+dU^&c5xXGdz0~_Oh9IYP`nOmO-m`a)9O|B zQ8~fX`vN#PSpXmxL^tm13Dr_e#pmA!pH{`yazR6y8ew}zgGE!zF@T`T$>w^u1jrqi z$;$XnRsx;3Rk%A6q`c<)f;`CimgD^CafMA9jqAckJbs$h`q)JSaNC`ke@F{9)s9N! zGa&|xE~4wuQo95*^MgGm4$KeKtJZ4JHpu(#D?G%O#sJ{BzZuE+ZfPv< z0}%o)&L>4Z*GMu^EaK9Ck_CP&@T~tiE?5bnkW_4(V!%jwxSp4x5b_$oNjGc+SlULS@Wi4vh|@xR;Mk}xfEoXjRvTs%CBZ!K zLs)E5@w1N?#0hp3X&cGe%?0$yhc`7sjE4N<+8Y%w$Ui=xML?}~f0xiODC{&df+;T+ z4bB$1wnyj?LwAv9^bp2Pr7W=_*5e{8SIdu+8U>37jSq5K7Q1Fo2rmHm>pfx@!Vx?U z_lYyAx~*GGk6lfid?BS9v-joaD^y77beQa|Br*fIhtM{_V2J^KNQigFe{c*`^k6E~foXH5-0rfPvlmwK>9{4y z;52G`iVB<@MNW7~if!uGE!fC@*C6*)BMz1~ zx;9EKh^ke+L0sw-ab2^yaxd6(~oJ>I`ilj72)E zl#V{?C)dwAz`7DOVTZjYJHoC(P%`zd{rff`-5RE@ttR5xuMC3wwx5a#`P)GK4zy$;iR}29(v(+5U>523(UMMAD4;;CGl?HD( zrsP+m&B&pJVSb$3pRqtzYhu%Aq<*Qv7=O62V?%%vaA zR^Pk|saObwRAW{*Qnm`W@6GoYA`NwwAfo^9ynnR(OPaX-?9V^{BsTe>q&6y?hxt~g zT9k{5BLSd$+ZAWepWm;MD;NQ@%t34{o4wLeTYNDfY;5IvIyiX57|L0Dvq4n^AnULX zSIF@qTGB!n^lfP}KO}|1-QkjIO^lLILRfD1Nhq!S+euQvL#bgik3Qey?JtHCrdxx_ z8RwFRBqA|m!G`i`xI~lP`kmRern-*8jW1!;Er)0?<0EaF{uSfBOX;xvInf&B9~uOR z5l_|4LuqF@v_x=FR=?B?me02=v30a)hP7(>(FpCxp^Q{P{QdGa?`27sTuZdp1X019 z(VL~?`&ORS=q&>vBFkik*oL=dhO4~eWJYJ71NJ|a(~V-&m=n$^g98K8WbXA$*2)#P z6`M*MD-<5qYrlypV)tU4e>d`)%jK?)U9|Xo9UJ!1S93yB`4G!+5+SR^q7Ghp&bjqn zBi{Rq*vc~nFXvi0=Ivx&Lo-_Q&5gW!oT*cBo24lovZBLMgl5C|>uwhZu(pU~l0Os| zA(WgOO|bace!mpdHld#5NpHW|W*Zq~PLf9nal&^3J6Hl=&dXhFDvbh@-VsARlmkYm z>t_OzzbBd&Qp?5SOxe%Sx%#&*#H@Cgkac^EI`%EcR>^w#b*$MPj-1WP_eHgLJ?B$*4r0z$ zPKmCs5SVFu36}R`t!D!j!iEjU1^fh}6F(hw0dJckD;_exp7`v2RCKMc zEK5g4m}kx^Td|sumGmEfJSS>AerQC9nO(CgFD>HmWZ|JY1^bndFFVKV&52WIwLc(* zmQabEiEy{v7N6FG*xM_Kd{EOq;`KJcTvXhlY{xYG8=dsER6?n1dUBONI?uLS#5_Ke zAINC@e_W&u9lug}!yrtM*-CUCB@8_m@FH^K=in^s`|b87a9jj)+@#kV)Z3h*`K} zCtgxdSt0j=KAB3CMp5|e`i8OrWtXgLXRKsjnnP_Xa}U#m{fDIY{OXT5+$P$abr<}MT+GP>N~7>Jl6qQ|?m_&0`++XN`vqIeETiTwBZe)Ywqa=L9&ZH-ydy z8|zwQ$$1+=VYRcymNvRazCXS@gh!|}%HLK~15?DHNWZ>%%47;#9Xw71wQnx! zC>^eGxmb4{aj_y(|hBtQ-IyggtT@T zN;<~5^oUxE&8-AlJ`ZV*5Mr=R~*au*s{gpl92a;f0Fyn(A`{#>bVSX2sitU*_ z_!pzDTiFutmzN9iH-omv88bFj&zTLS4yXANEUz?O%hU1>DtpN~>zh)TrRITl&g8V% zz@g>Vb~XwCch+048w0oAS?1(@b&@KDv-}V&fO_jGi?4iqcNKhCn^47eC`l0Havp4u zZA5G;mZDte^zCMk*R$7m@9%1E1DTku$*zkZd$x^b&S739N9T?KF4qSyP5Vy?@$_F} z^XI6FihBTn+*ElYEid9M4c#J8E0lw*qyf<1PhY-#30-RKQ@$X7_mK?bxKtorsOnQE zk`)ad+P$nV^Ec0$)nG*D@yMq>*TCur`VJMQJ9QzWw|=BymT*t!l-ctO$NRhcAsytC z$zgN3QpBag+V4$nHmjdcen5Vl0_LF8q;wc{5mt`R)H;}QDbl}O2Y8wuU4x#+=^iVZ zgejL6rkcm#(yubt@9FB{$V)@t$+$~_{CbX{Qy28GXhy5A`@>L1-2~Nsw9x}IMVkRa znW*AUY8#RRS8q1N4>$2rw8{Uh*+R6mPhlU(KGg5;Tpyy-IjDO5-a$u1i#W5~^kXrM zt?JrdjjyGvgLIv;{Z|04Hu&ebXY@$#bwSBy5EvE&FW+Li*LnjCV9Vwkyn+^P<2tj= zQ`%UJiuC=CG1L#iZ+fzCBENJ;N(Swy2ky;kG_u-`R|0v};v~m4e`~`a;~LU{UOMUx z#w=)X_uZ|ZZ`Gvy%{qmml3NV)dX*Qi*T#QaUmBrqx_~fM0vJk0Vi2$4yaJ@vG;M8a zs2n*@>ryazh7q?wD3lAj<3esd+vj@x>0#-nraRjFzzS{GV-FwIhz8iSSZUJOVJa)5 z#BMe(;yrHP^g4lEd>1@YVEbB0?lV=7;%crMu9VGdGah|wi|S4buwPw#kM&*Yt@JCv zDk{NrOYx#E{L!hZ0n0H%(;ckA%9h3Rp>S~$6K~f^exUZ~U9NH4&wdW^&?PHF*p$B& z%Av3HCuh#4Y)tsA{X{-#VRyG6I|m_si?Cw%q1qoM5|T%K7lm&QgXX$1NX>Oj{u}Ie zP^qnu=1*9vIya*r=ux5O$k2x|`IyycbM=pvE%S7)aAxn~#CE}4qV7b|kF@z#pI}}3 zIq@7nVix1hL9T^wcioa-zXyKbJ$5HB%1gk2J8AQXEE~ZQBhkOUc&1j^Hsa4_P`+AF ztVOd{>e(KOn!x@%zwik>m9!*jeCG@}RxX^wt}pRW$z0)6oflg_Pr7HYQm&ume6#T) zqt24~m>jz*(q!DFYxi=UHUAoUCJw%AOtC`iW6FmdHVnigb2zTpV$7937Bw@ZKYTy5 zyw%FiQOmLa{YM#5$u*f3lVK=|KE#mj^-lsIDw4>`$L|-i&E%h;io`gz(m@_j*(aC% zY-+Njf!S*K*y{})h{S2ayG7aTNvPb%-=i)Hg|f!dQMV8C zU`3vmijwU+-`3xx#IKjzEeUJxdC>^p-~JoT>@@oIDrBz$TCx|qI!WVi)cy^-sdMYr zt*hpX=si;Tg(vFg61d-tp8M-z3TrltOGB_zq2C1YIZ zIbt%+0$*3OX49U9p@OX_SvA&B!rG`38KB1ifHQPD(VuQ;X?vO`CjfHg_pY_k@*5)n zc-qVUy=~n#abk8yN+>hla>B4=SR#@m#+8r_o zu&J25O&GrETlHNyKyL0k7|-9bHQx#Eac-Wo^EAkrm+(=WP{Jv#w#bNiXjc zrKszWdx`^vzC0lL)F$84+i(f<@w^WoNXsdIBq zjWG>)Gah#_hA;4AwX53VJ0d9m(|p6W z8eY-KkykIBwVQ4BpdUzRs`HM>8vZzsVp;Fa z?;8g6+OJ&mJCtJh6AMc|i z0CM_Z+{^XpD19QPpUee>F7W?xE|0cl$_Y-Md&Wg80p+WS{rf_?nL@Q)wKoe^)i{*I zt^Gn*?R%9uidS3Rofm$_2{=a(Vw5tt(E(5ko1S!#b93*4bSAM^c4x6%M33jF3XAdJ zZ2b&fS8$Pr+Whvv&CEZ`GJ33!(-?W8^aW{RKpsdHc-GRE)E6VK?LJSRgM< zMn1yuCjDgbn;q=C zL-4LVdV92@byP2AI|w%5C-#lbPiD8Cb9}5@-OT%E9TcCwn#7yExfh$1S?ZU;-xA3s z`9IVH+xF?9idU?d4su#a+quX-j+Mx4kuG-^8Fo*Sh{Z-cHBFSG$T@uxr zEr*B`Q*X_^)-`9XL$$7jRfJ#Y_%#m5y9*o@G|0n+B+NbBF+zB?-ep$u? z_Vb}r6bs*gJ6c6&<}6&bf(4l-6pKBlV6b}6lY03$Li+->0SQRGmp<;4DC`_`jq|5mWV?$c}jHW`5 zNcF1a{rnWSOrUP`8a{Z?yYf_ixqC~G8gVal|qA#;#$?{biffSr9W-}1$wO-b- zPicH^v`m^;>Pom(>viKuXA=SCf{H$oU!WT{k$NwHuCEMjoDi7$7=}gN&uhZ2HZ|J5 z6#x)pPg^o~u^iXy#h3jl6-;p}<>qsjZ}x|IURgH+&}1nYz8s~vp#G)4u$!&T*K8Xh zZb@oK`wgYZn&2QNuSFO!*ZGHy>rZAWsWyoVO@3xKJ-e!cXK1Z4E9-(&FHt{BnvOQ1z(!5P0;{eS}cl%pSPtMN{}Q3DnWweDUv zQc#H|13szc9I=*CY4_q5X{)Cd`m4j+L^3W0>upJ9&VG0OiGTC=im;~YNTLwEf&T_C zB74MY9oAX?$&qbAq%5O1bSOW2A-11mT*UJ&Nv@dDzNy4GU3*KKI3{7@EOq3bEX@`o z#r>>FZlu?Jr(P}N%PAVCvTXx0-r9M{T zbt!4BXqN*U2?S5wg>^0z7%c%R+2HszZq5nZYlqMhoyn@Mtf9|Jxk3VlO@(SAB-A(- zfeCVJTxJcCQ7!DR<-@$DynA{shX~hDR07p9@blz)6y)A0GtdJco+4K7ob^%8aq!Q< zj|Fff_sOS=HneyWU*%sp0drVN8?TaKh8S(NkQj1j8mgjHW;I`VejOh^{x$wD zKBSOy0U#Z1RQ1i~y|VmOq&zeIBI@fZ=&)C4ODxy3KSsd3AqT@HWkMq|8S*pjt4Tea zOjgSkK1{%}$K9!TcHuH6?`&D|a%8`2*$W8jdr)dovWpBE-XhHjdiE&fc*qMTYP-{v z%;gdVuFX;Z%Lez8340)sLZFY%XD)nq;o=A>yahfR=^Ar2>C_i0u)WNqc-3Zkpbg#<`GA9WR|JRV2(K!qKV z`qyaJhR_j#*7(nY_4(2R1f-p99Bj_`MhYaZ2}#!lMpIBz@6(JbKIap06 zQ*qok`9;E%Jp+8OH8;S-l!s51HWvqSLGW$uO}?h1=p-G678AVvzuRpN zjaxY`v681x;{i;>=sBH(4HX>X5TVvjDyn|C2cEliNw(fXBGN}6chm`dg?t8^_`!pc z)PKJI#y^mnzW_33^W$H4XwCEf(}#Augkpe%AfRuK!t7>P3tDJ~Z#kx<>bqBd!Ub6s zkw<)$cuw~KU4)g4BBMU=YSS8j)!ooagTVHcrn#newoMt z<0$mEkra@{{^1`L_u^^9jjboyIw8`4v5c^Gy$HuZzS!9vPsB`DIx(yLE4S9njV_z= zMx}Lm1HoO(q23OJ_v=sqRv?^Ws4? zzaHhkW97F`!-cRW-7#eZf06NtHghy3q~#IL9F?->1!Ec_K$|NiDn+<*7}@2?=g zmH2)wfqzE@&#z1W|F`sO@%%gfKb}%pnAp0?#6M*r;Lk_t|6hp>`vX9nY>k921CX3A zfJ&=*69i!lP+0&mDFBtNLjFUN_&P=cFmh)=q3seaZ7oNy*hE8xiecy)a?KFGJYyAfIO7M(gf16bpM?%m ztA$KvKDg(Od`?h?2kr68v9~F^{qH(Kzg;GPKpnj$QS+Qr!Z&c??##!) z1~y;sO=Cbk%FW^B-BhNs7b$I3rlgS_iCugPhfbP^TV@f&rgrE@VaJW0)qmLg4}L2E z0dXFdEjA8WC!vYePVrJT&-z9-6f*Biv_;Uem3R1ybx^b#pI4a*ZMy45CGo55J}M=- z)a;%kLJm?bCzT9phgb=qf~MfJE8v}tiu2Ulp!^%@xS&}p3l{dSxw$~ZGuGLLGUV98 zO^#E&rhv!Fp#}p~mW;(!5|Qh>+y4|>|B;3IHRTfXD_6>l5kr8&-Y=~RGIRRESWigr zz}tpT?a}w)Hr2%-ZW&SBIwh4!IIXy0d)|d~G?sC1B}ghnG2XKLD~%|c=>LgsvTk)( z6xc7C)JDHT-%btIU7RX?fXyl;`8Bw|-Jl2kGZk(B&BV3s%iSl(hX}2wX%Z4ZTriIT zk_<(Fnw&*yoj(+SI>s^td>Yv+^BC*0d*}ag^14N78X!;iIGi#$5<;zq7HE(D35l%; zn~b^;fA#e7KZ2(Zg8$v5hfM%MhToUD3dB$l^ z#v_R6p!(G-{j>bv=q?QoE?FfLEJHEo7U1R^j)JFCKyU+(<9}=9<<0+Xa$y`|t#knJ zqgv$QHJQ&F3gdwGQccJqguHu{!v`qrOGKYvq>WZh(FE75Jo@>FY5FU3?eiCcwacs%0his~+;`PoLUgQ3e82<=vaJA`%RvXCZeyek!X`b5W~*5>ua zd4)$lkfj?yDNNpf=~e+gVk48-WLI_mX!NVB8V!YGw^%wG;}o)2zzOslbH+<@gVGn) zQ98_=68jubo5+-SgR&H`l;aw7vW`(%_vIIB9Z6(ufu~Mn79IMvIWMlfcaSF^tUYG69%$KOe~hWzsF*4{pYDYL-lOFnJw(Owl{E0yJY} z`dnA0X73zJyQark#|(bcyCAQyVNq&5Rcmm0Rw>>zU^#&rX)X7$*89XLHz%9Bf3PrK z?G&wc=Xzkd{iUtpWwREzM=^woAFW@g&@lJD>lKitRaR7%8_>+p=EL(9(g<%QJGp+> zn=C&rHmuK;gl-yJg%m|@#_gUSmtj1{G^bdPWpg;6UC*;nH!1ZfOIen4$}lkW~N_pD4MR6=6xk7{0`)^3lQ@%TVaFX^y} zJywQ@#}kaL0_kxhxFFwSvG^mYsVHoayvv41ki+rgix)>u7!70lpU!U2jN_Ljg5TG1 z#0)Mmr)~a0u$9#XT2Q7aat%yQD z6C(t$bB_GAten5meU+0eET}RQ(zMv4S-te`XoxY;8-)>dPiSv=W!|S`D;zW;jG&fR z0W?9()-Ydq8x^zrKppU@qw!$WPr0#Hm1cWsd_J*FeVx`apG{0{k~4zCWp{}5>azK0 zQ{{U{J>JyF!v+E0x<{o4tEL=UcMUiGq8D*9I7OAgP5WxLeBv;i(d`=6OWP&dv7%D8 z!wvrDiR-RpdfH^XzsEFE%jd95nu0RXG&5{a54Wjo<$y~W~H(mr4k44s9DMv_R$s)ec z;r3CEuL3&*vUAm(9V)mxob@oZ%Ppa5Dy8zBGiFaGnb=PMsDLT=)fQ$W2+2*~M7Nr} z^}T~|CY9yzpX|N}>^w{)wF|#i!mI8vy8E7AyEui`WLAI|Ca?0|bk*K->uFJNAqD4= z$v`)%Ad5;@%v_`}1SIoCY3*RJ^DEgJAgV_krzsS`pY4AW@GVPjZM4a7v8q{aqbyP* z_nqBy`*+kTCp1%qcD<9o%c>`AaXAlR{2Bf-TwhU(XG-cB(Y=kKm* zbds2p>}I_(nC_oa(GVJ(E{8r%*>ZfsWFHzmVdw~5i9UzFFlIbUp7xZu5$%TF_p?D)L6&(sEQm;@r88V7U)L#>)&=$8Q@_x;lcUF|P7 zR2p(zW?Anv)i^7?B0;RecokRGs^)7iH{l?Dtw@*llDfdA=bVK*F`jPr+fTApmHXt2 z7C*P1U0ps+7iU4uf%oc>?R{FNlk(_?VJ%2_enV`3#?20K8Pt^qP*L#pM+~B_~F>xH|LMde?!DIhZ0SCTKlTd+ajEB)$bg9<^)xP5WTxL=_=p4?f<@_^|+gLn7buQ z2w6Jho*^=(=A`1WY7$QnuJTVcK0GMqzRcxm;cC%be1$1mfOe8qaOI`L@Jn0|StQz3 zS89dYlmaFd0yxPRvt8+|6IFGrw5E4YZwkr*VBMvdZS=Ulid-{%;@p(cLV|a#?VbqO zMn+FLMBkdz6Joml@GOT}`Cqfs1+%9V7NS^&qFV^gKvOGf*aJdTK=J~W2-`9-pl2&}I$bSB1Q z5!LD$xjbuu6Dr-gz%2|;x8+_Sl=Rkli`_iRC7yauDeMez9=pmnPB}M||5UmV!VuVMCq>z`FrpheENZ`;# zrq*S*(F;w@gJz?3G4g({vu~y-bK?oQAom6~mm$(JDN`3 z$Lw@*eYo|Fhs)upao6w>q&Z4^Uq?Z$quY0Fyt1@x!RUQNL$&z|Su=NAWtV^M0Cno1JZ zgH-8=(wv27AKvnGqmfBw8P^ zJC5c>c_MWCkXr(HQ^Q?qM+SnMd#7r?Cd5QZ%_>`P4>z4DW}V1cov;RM%Vn7T^jz| zYpc;03`@p3z@agsz;vv?<*V}_mW_)Z!VDU_9?c$f9#dASt|=%HQovO*XT~GleglqK zCDTMFlW_-TaACr?vnJ$BZLF&<%Z_d?+h&?|1iWl~cPD>rjH_p2by;ec6l*EEGG*W%XKnO2 zMa8#TG@#_<74A}u+`~oR-c_@9+4@MA(~74jp48_*7m%A{%!hCOc}H&0|E2)^sw})a z2yee4S8h?i7M@yluazN^j$^14ROU0QcGU6;DhC`j5eyA?hVQh12LPo=?)q#Du_ibp zFqD$w`vpIfpcP9aWYWVm(gJLr`^nVcqtdLHt$64-r_&E*D1g&qnhi$Y$2pLe)X%f) z_(|^?)Fq2}X&LK#_l;f3eKfF)+!90bI-CTW|8NqFQQv@vQ$Lrd3Z=|YohRpRh9v{4 z)zN#A8Qya96VyS-skxB|(;WxFqw2VJ>Kbe4=+~0kqLAdtlIlp({+J9_@*siR9c;AS z1E4z$ta<#}w}+4adK}In}rs(18z!qqt0vp>DRpU6fLb(=^nK2iY8ywmLG86JtefGoIZ+G^a+ z1;85zWBY4ENpD@&2pZ2l^-uyWYW-EV6RO$!)ksefCkOs1)u!v_r9bi4Xx$7(<<33? zPPU(QMXCCQ3R$3!xaUC0o6FM^Nz#Tr)-aSAAudYkaFXYNZqm|H>1}wX3y$Y-g7AJf zJQhkWAhtr(L){fd^XLN5a|!wRMRz36z27vGL>pc#=sUpK&b*H7js(&ikDHY0+n`uF z3141JsG+qbGTvH(T3z_+yjyUF!+i#TRNw6Zm?JEM^=FQ3TsOlzCWgz(a3dX`kwyVA z{eGnq}|kL@qxbQExpPdW=IRS9*Ab47i##_bdJr zyC*XL?epHNL@8mbMkB!JAt3Kd7+|Z|98g{7KItOAwJisqzCYC6&fXK_=dGUti1KX_ zV2$hxP55YGdrw2Q^O6Rv%+bwL`$nNi`I1-aCerWP0mk*SEYuTMgk0_y_VXvvAjN|E ziDrWrN4G4-u7|tWx4fzP%x8SEp3+f`4beWKl9RgdHrpm_HA-qB+^uv0FuMV+unDa%6Fs#&TG&&|25w$=&Q|(c^?a zBvuASKjR;_ySPr|{RQ<7^@J_AxQp;VHEvmbZ#{GSCE+fv%V8oiF?OfBZ7D;{UQJ zz8;0o|C-C6U0OO+;+nGLiu;O&%|G2guDz?zua$wYy3(J>+UsM zvIZlUoj8@O)Yga4DTS*UshiKJmdX#BDcK z`a|kw4}P)XfehziPsEG4_@!7fMZXXqZGTQvSNCAxuAkwcW|*%4>2lmadPB%g3d;}p zq*fD39lewT(RG6x=`s}x5FQkyvX4leH2%{k_`kLggzxt4#~2I-KgN;&=rT|t)~ilG zWS4#U08o;xj<{nT1GK8|m@vyQmhQh+a@omam3I4ho+~7u2_auHUg2r(Cwr34V=c7u z_cFnstWw(EDu11&hxU7G$jrQP2&_Xr zYVy7Fme}|oZlk<9N1xs@IJoE0%6z*K42@zfuDk2e>;AsW_U#&5!3xs4%iOhDM4d?y z_6jx`>-rK@>7q>DpFKgm3<-0Ab-Ok1(dx)C$UO1ZqA}J1PLSCnGfDJ2x|H_<3ChI= zcjA%uLq;J0@I-`+3Y;Ih&V*yB?l<1O0Te{Kmdfa2la(t~)89i8>FT+5^C{#=$@M*( zonybLk|mm2qorPht|b0&1uHi~nrsNL^={DlYQq3_S&`v7ZG7~e!T>2Z1O6c(CJjK; zLs?1rJ*`w_PjB7)xH7xl$qsq(#*E6`rY-!bN~-;pd7GT6$0T==E|7<2d7*Y+FSuM% z1KbT(Xy3)ww~!N8S!#iMVx1c!8RsG{)>Cj+*D1I%$New+yy?Q7*c=&M%UK$}D@$G+*RI364WS zwAdMNn%rVJWxlW3eZPaM6;kf^B3KI%U!LjBVt*NuFHAm5&z==mK?^ z2u7v5lP(3S;J!Yiv1HDzzDY}qT+b|Vft4S}j@O0tfCE5{VeC|&!$cA=Pft16PqN?N zJS++>OE^z=Y84uDVAXQUc`6;a&_UnK$T>GN$|^XFWi+-#ir=}`^vx^NdT2EU6N@0#%qsdm96 zw)?MV0toqsky5*nRDm>UufG+o@(4!7)`qn!BdTX3bO%b@DKNhDXa%%=-^xo(9+If5 z6?J-i%*kF@dBYT65q3XGO&^4^{IZXVt}@=&9nbyXdtp>bL#K>c-(WU4rOg>sek4!b zkDgzi@cszpxUV}!@Jwx2?CYU>T{a>ao2p>=d?YuL%P*Y1#_0z^;033=t}3F>4B<8EUS#J{Y=9tef`Cx+SPA{eJju2eU`O=DF|t16qFWa#{{PJEyXYYKkdEe zS5w^x!d!I=fgYRKj4mg_BX;NjJ@_+bFDe&uQ2>tjR8qnf2y)?43%nqf?a?0@X4Uo z*`}lQ0T_dXM=_n9SZ)?U30PT<+JtwHIL|vB&daIX>Vkka9u)3S1X|ElK@Od+Cipy6 zwPytYmFOFc8@hs~;~I;6WUYfDg&+3rRzlNNw(Ob~A6182Ua14`Tfn>t0(t!Kn5$k( z0_lKssH4jG@@^U;X#7qRWx3-%EfJa4qKAvDX5uxnpn>%K+i^O@LwnM`$m~dv_}#v+ z0^;quALG<;TN2=i^YjCin9H)8;%+k_xvY>)>=z&Yt!hr3{O(-QTx)S*smTn-S>s(|w8XN~d4W%>2GhlbCp;zq)9rV>M#XoN=kBZ*5- zP(`x)-uiiDYM$xDD`E<+!N=L`+^Q{GEtx~st)|ONM>ugBy)C&;F12qO$LgH`N36el zfk~@np#Ly+(qrT^^`%RYL2zDxc=*cU0&mlLC(nFRoozJ1w$VX1maERPwOi%a0_3^P z!`R*X&wct7Flma0gzy`e_^rCIFy6u zMHNey22fU=o z!UK>#4bPS|#5do|IA`usx|Er06w7z>t#*@CBGs>pwF>Qu|UxBz0$c z+?!Vj38Ksv8&SP{QX1@P(~>hR85TM-KNgJ#ShYdh0RDD>2*Y_g<*vG0a(o%iIvLqKOsMhxzZcY2)FU>rCtig!i$4Oc0Z}TNkO}Av^vW zHrhw9wH=UKJXZkFGgn3{w0Bo!kHJR`fc287R6YMDc$a4>q?5Byn6|5bdPj~*OKK|R zp#ZmCJa3ibKgRx+liy3=Z#qIe*giPumx#uA3zK4wfd1|`!L4R1d_BlrG9h7NA{q2U z7iqgyPNN&QwZ3=w`3Oyty6w{S;nd;2;ssqVr6n@xwA^=xtB=3xu5#NgbXr_F^({dP zpsWlFDi8{9?Xn&|it#xTAsKf;1XSV_vNyd_+WT#-nq6ssC6p!4#swWI?$eG>vJx--v49k%CFUKfOYKt+ zW!i27ybgMe68F%e*FR=z($Ixz`HvlPqnTDMRZ19@EQ;->LK->NtS}<%%Wtx?_m6r; zHCyq^DlDl+<=J&5H)iNNPi-NwOd!11LrUi`yUP1>t^%3Sb3pUplP0Omk}_4?cZ_tH zgnla7&!1Uep=3+-5s-cQXw-XH(w_F6NRg@SJ}Eg`4&-4 zQ#rLn!rkxozv)Zmtv}$R@4?YF-b;O40Fa=G(L|@p1BMY<@v{4GcDldZK^1nyaz%BB=3&^$G! zc0PV_<~~BmHCuN(w^34dyR{KT?Za@~>B|JLsVN>~17!`P$MGx`G|aWsBa&dk2IN;< zak6>bCy|*$sXH#OKdE+*RI}s5a^#w5MN44eN^kAKVIi6G48#~h;76vL6DUCe$Dhqp zxgH;I^A1vHsLMR160%7|OVXU;On7y^$19`U4v@y^fap`Ukk(md7az1p>z7QeMB zRi>-!|c-j?xF3Gl_z?)J*H7SwN*9>Zctz|SQ_nAldVZ62?|q7fD-z;gjx(O+#EgR? zfv)(H!WQQ6xEaWKRW+sBIjE;a`KpePM`Pa7)Jvr=$JHO2LQZWt84^!5;(q$ zxro=ee8mSc9I2u~{H}a+{Aua+#Gvx;G+V@=3j>s(9X$i0#+B>$Xc(5Y5* z{o?4|nz%N$d)0|(O`%jfsKS>-FqIWr!@Y++G&ZnO<44@!cW1>-2&nJ^D-Eq(QUQv3 zzNh`xqiU9{da)?0gK&a}TceJ#f7TIG#tn`OC`T%x)Dab0F}0BE!e4A{SF<%1;*kC9 z&{{vfXG2f5`c?BZF>*8EtjMnpi9J#@E^hYLkz*m+5lqjaoAP%q0g z{lcpty>)=h_{9_^;IVa)YrsM7#WNHQV;a-f7>>klAMw_mo&+)Vt6yFZe77eTHzM@D zlcK*>_msrcY<@grYR(YkL0-|#0$ezRR#7GFt_J1?t85u_zss@ZxdPLkuz@K=`AyV4 z*7DL#9sy1$&WH;+cHOD_%D++b;KoVOhXQcVFt_pK!@uFyG(Hj%79J4&S}(OLJ11L5 zrLl$_CCwbhISNoP@ZAJWyHp9d{d{wExf>$T`l}n(u9t0B1!*yynU2%${Q zyl5?~`t9vI{5mxUygG;F{MzXU%`?jhpsW6vK!K-+oxt+9xLd1@Sh`urU1q$_og_N$ z+*|uXhW}SoA|V|l5wYbE(GVs#Q*&rQ&TG0;#ecX7ETi*Q4k5eYc)qe8Pd4zzy>XcQ z#Af@(x`{DG{mOmD-i&hI2fRZqQ^~w=y{x(Csc63|>NU(ZTj~vUj)K97RV%y=yH<|J z_&WsE>3bpgF(q(m@WbVR;azFCvm-@>!a~N|ynwe)h72l*;$*w_vtXAJL!)Fzqn!Om zc287DUOB^svED~!pS<_WDkL%Bm$r@Y@-(hI;_(=h1nL99fa%+S?)j=V(F}a7im2rT zkBorj8#`>4rbgL@pw@BqN;ubtOrX{i4Df44MpBbms_)qqNtI=S8X9fzOPQ>UqG^fM z$Ax*0nJ(%rbb%?ukH+#pJkgRjcLs|%MPCifWOt22@u`29E(w9@d`OWiTZc6EZ-M%c z7zMZJw^ufhIdnghrxK5nlUF2=n^K}hAG&YD-BiVBw;c*s6EjUr;R`}KG8d>dFgq$* z+{$th2f1j!67nmyp#G{FW|VTl#>49y9@&qB0-4WY?J!F#r@vS(3M_ndd^Kn?m#CG!tMOmQOrUDf9%2x z|6?Ne8$NoRKTQ(Birihu5p1PNuswG8N7cIP3;3$mLp_>l;n}nR7S@BnQ6M|a*em$FnIOrnst;j>lkMp z!sf8Ly5|;=Yp?!H!?$yHBQK7#_D!?3_9zXT5{OA2(JK>EXl~dI$gO+Q+JZq~2~~4@ zc`OVr_L|ME{!3ZMtSU?U1%}P5>uZpB4U7I^7DVQ=R;tFDtru%-slie?t4n3!KXD-q zVbTpKf!-e~7I2uJPdXntEj@5&z$IX2*0`OiPnJcS2UX0iPS*Ps!=A}bI0mN*#s@Or zttr-#E&A3u6&vIIa1~jFs_Lx)y?~WI$Y#gJrKRFttW{+8FU|GALHwr9RUDXx?t#=}s}bwmrN*wsQt+>RxB|R~JiI3P z%ni5vlo7E^vuV%8uZ!v7EsP%dHq45kiHLG&w`q7EQ#m6n!0*d#F+y_EdO|S<)wFX? z@~mBaUt98cwqtf~sPW_B+0g7HsP~YnsrDVs?G42%nvqTnRn@4I#)S`&F?*YvoYHx4P6;0&Q@h;B;f?s*%`lG7o0b#=i?jZ(R zs>>CrX9NA`Q=#eBhkZCU6$~#nhH)3_+aafx@$aGLozJyDiPt-y0fT+CK{i_}c;2#h zvz_J*t(Q#ZjvZkmT^Z2Bf!YjuY6w}M_3Ecy#^*EyV%ve{B&JZtd9%)8WwcyXIjBF1 z(;$bdf@;z0`N1La#RS8C9wfIxESO{d#Tlc6I@|f$MOsL?b$UllZIVG(!;PULoAgMo zXB`%Ji_O&!qOOMyQm$0mUF!%43~#y_fTC2H_grY_gOtC`24kdBl60mAOW@EMM=sq0 z$Rpba;z_r?Jd!23Y(m)xVll-;xw;xhpMUZzqOeV+eKUHyix6o7<<*|C6&R9a*Ecu- zbNS&&-f&pqU7d8Cb_+zhjF*~Wf(@=bU0pSO`EhBZV7sv(%98wkbDiR<^ci@UD-y04 z^V53{plSQO5 zsAe&;v0LaOr9+DCt0VJ7(b5~*1MPtOGN^iHLtil?2u zE`NUMVSkvrekV_ml;MDY3BktKl|PFg7@&#k1wFc)IRh}`xO6>}i#4XjOR6@8Fi9S{ z8c3C#*iK^C%*VbsHz=!|)S#KfY~%g8?Yp)Y9-MaNPVDL6f?0PG*=}sBeyD`(c7}2XSbp<1p(fviv`yMO8Zqofz1_o^ULTW5{k7-0~upwBQ zMSGTfh9|yj)n*A>=SG~GL1D)Zu6Qk5ARV;1SD)n>mkAP|2HS81a_spfy5#Z)FL+7| zv1GKpx=zVEWI@~kHO|4`lC6i}&n?c}3qVhhW4wI+Iv;2R=7 zTto$+1_KoT)~>83_9gMOvm|CJv)2||VxrPF8|pvb%yaoq&^RTWt0!7$Tb=PLCQUa`Xnv2j@46fKd(;lJC#@Nh zzwyO(sO6eom+y_C0`CHIl|++b!UGkOXC4^6O(;OM&Hnkm1I?4O=${Wxo%$cw zOyvXfL!jc4abG^z5}+P*RsyBG*HPRC8USHr<u5cBzer(!A<7dBlBl z)(S|aJ1g6x`Q()&IlBRur*HdzZ8yb*{w$nHwoLO-+FCrRI^vEc9sKt4h?`_ zQ0T|jcKnyJvL^m#g84_)_V;W5_IfTbZE~J&M9vMJIeQkqv#iTyRIQKF#^Aj7^Digw z{_zSf^LP2?U5)F91m&2Ee0oy#lWKacA-0G|X zSRR`?fa9@GLB7l$B3`1}2(S|E%jR(1`hj_RoweL!=hOC~d?&?YJorE(?pwyI=Fwka zzht;-j5&%f)etd=;gW@k!K5fpRf>sSZ5dt8RrZ5E{{7*WlTmy6_kX_^xlun-<^%`O zaP&iMwIAGb0bT_MCuf_>)|~xu){xI@9lAi-#G^^nBb>_s2uWPSZ66XUUV&;`o?^hAR4+upv@wYOir5|PsE0GTlfJVzT%}|OCSxADBKk>3 zyPoY`+sBFntO~Gd^h34jxa?NJ9=|2r6#X?iXGk?_7K%Ch3jSX@*OzO5-?R?SI$9vf zerI_QcupQB*ZmdmI0qM7dh z<&-I$EU7gbPTj(n06nP}5W_aIlq5Rl~EG7Rx_r5pqX98UEMvrrY?}#LG2z{{e zrM~&g$1pRPr90I0k@IZNRoSYIPfdVV(v!wjQm|dr=p2YOd!o)JOjLY9D#XayP@$ep5M=}fp+P>RbTnx-9x1-b;$a@Pz z?OCWx1T=~sPWtGcYbpvqDzqIdsoJ^)Oz4Hh8NSdJQ~mmY-Z^K1`6n*LWv-hs+zAqN zx)!FJd>yyl$nQ!sDMJBY+hZ8L;>};>c-#j!ko2juJpSnvC+VvDVmBeL zbM$g$%BHtGn#?3&hF^(XS(UoTKh(l0h0#k6m0kZ_YFE515-)CBy<2+F5i{o=pVH&su|HQ-}ckBcue_Bm6bg~tcHr3aTJyN7;4s_lARm3 zOU)1-B5hN>OO+HeL#EpyMr=W zK0t)}RVw`oK0b4w%C$-De(a3k;(CS$(jevf3iL6oye>xz6A&X{mxqzGN!oDNgbe=_ z*%c$1s=c#mvMdqWQU^auSL8JCFnyM-Pm=gZ8`AQ!dRV%KAel=v4g z@daVmjE5u&aagLcvew1;3yF)Z=8YoN2Re52$Sd+`k9X3|nQN>(eTvsAECf+ST=*Qs${Z99sG86Iuo32U6JClMy|gyLFxZimGs>rG{(zVGH7s9?7Oy1rUO z?em_+WxAAZ>-hDPDz3s(S^|szRNRV49aU76khZOBAPuceij-@D=GK{OljRQkNjT0S zG|ZtU%6GY|BwDlOes)NPB(KU3O#pej!LZ$y(<6I1`)zz*Ou=eao>biI#Cz^#-5guu z9JWI)bSHv{6;nmzVHnde6<6`gNHScYQIu+zdxcPHj?ozwYQJp&p9o&@eJli+m6g46 z#Fb|KtcVw|sef_)hh<||?40wjpT_Z*y`%?N?Gyd_xU41AaIO`wrF3B@{*O{!35qLt zuUcXBpsQR7OZ6SrqxF)Pu~@-anpWvbRVzDl;Wht>n3C&yH z99I5Ov{O9C4YfBBBha&nHF9U4%u;^1J}$ zKw(WjbYK2Q{2y1kin{ zZzC!!r)Mk@8CdV#)9-gVNM3Aw<^{#}_4!B9QbxD>3^~L1VX=%~!@9N~Za$pN&l?3*A=hIzOCuvgR!00m|eAkQY{- zJ7%e;k`lKVNLKBvnFc%_tSTdQ<1_B4uIW%T(M4I91Quc;*F0z6%>mlY=W;

    F8f3 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 diff --git a/docs/reference/media/org-manage-option.png b/docs/reference/media/org-manage-option.png deleted file mode 100644 index 934840228bd3a50805a146b80c79dfbf612da086..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 232248 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

    T!DCcp+)b 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

    #bq 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 z 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 jJ^?V}kN^JI%6DLlv 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 bJMPgbKaZhKKhT6fK$RB?s`BN}O#}ZwjqA>3 diff --git a/docs/reference/media/org-transform-option.png b/docs/reference/media/org-transform-option.png deleted file mode 100644 index c89eb4153fd190038f9e9e23f9d510b403ac47cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98959 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 z 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%0Ap7G& zlmUvVmP!$C+4XF$3)lWrZ(M)Yu)hIczt*;!OlB&gIu7T>DpFup$%d5os@uUmUq}Kmo2f zjIHsAc+6t~nYfHjfD)|{w=aXTPFjTI{*KK(;*gGCcOBS)S10n19W> z!ha-Wx1L5A#*~lMUxji;snh>)on1z5J~+0e^} z{<}oiIe!lV&#l}+)ZOYspKy>&6N0`>Q>4vOJTQW2&;WzDPmqY`eOoC;3$uO}g z`(91L-nYUU0gq49k$9|src{9usvPJ$wH(26-N)6Z1yCp7 zN|nx!&ld8y`fqFm(SZ50ehGc9ClZ4DL|paGGQb1f#jAWShm~YUDFQ&>@8e2DlhM6$ zY)w$q&CRXkeYy!3KAORD`{C`<)6q|5&^#KI`FL>=QXL%Ad7O(eDi%J8v4P*7d3TX&vV>^L|6!9xX51?Ie)dt*Wq`tEsNr)^FvpYASsh_XQ!bmbngGv2GSd&B1; zE#s%lYn{Sg7Zb($BFLnPghP~&iXh9zQ1y9G6OJdE%?UIpI6e@$H~#@Q%jmL!we#** zMX@3Ov)8(MC($KZH0YBcrC@QBNZ*d}uUI{{}MbKz$3{SAamG|*IC z?UC1%M61FL4pZzVi;2A(!D*?bd|__e$^mIf>`-R&?!wRa>oh$(mZVpa7E3Q|tVO$y z3~u!2<`D24f7+oMdUL3tXcE@t6r>juMMBsSuw5Qal~$uKJN+`Did{yJ8!A^vgG z>03R+kk(b;mmX&lw8XN)2px#VKA-)&TovtUa&vV;`Zs z`sD+0;So8T^Nhgt!_q1?7KPq&9#K&e>&-8x6q2b}RN?0%p9z~E91#9@QOat^|G)g- zh|_GwnE!Un02FV5T^04*2wMoN_EZ+$CnJ=j-}axjIN(J-ZVy{(xYbRb>%DVb>P~B` zj4QRXfk(w~x`FO4a_3GrHqePcakdfaMuFboZ*)-tD>LfySMcJcIYmE?I4$xOE zApYbPfURXTh^p-zgEwWO3!W}n15$+O!J!}z_{ukCCL@TF9?#tFn^LZw&vH}hPPJ$n zz_d@55jq=0eHtzn<_)*MO--SEv+Cah4rDPSUTW~YaTOF}8Zg5Hvc7#^Fs<>^6!_U4 ztYD%q8ZfpgJm=UxEctLj)D~Wol={g|6XGx>W+px}1EFeCp#bL4o|UdudW8rbOQ>+p zCXI}_cX#$jHzNHkGt%MppVBFwQV@MWwq{;uj29yIW=3s zmwwNa-`r61Wkp_>A3^bV20V^JjMndD7711PPnu$KCH;|n(0d}!y($`jmZ7(rsks$p z@TuiSTfmj%na$gt$Thfz{k)QlLx%);Mr)(p%VNBQSudGdW1mm&F55-+1pI)cQ;~ZH z8{K68_GXZYtyc;X7WekzQWRxXzW>7y$K-cZPUSYfo2iL)5pDv>g>llkHEX`=RBfA< zmut;%Pu+~%>9`635~2vAMgy;X33d*dl4OipV$W_i0~5xCY@{b%5$3M!R41W{cSyRl zvi)kZDv~#MYB=tXHve}#b6JD#Q3ykfw!_xa>e<1=3z?14=#U{VwZ+{KN2b^l0L%bJ z{YTnVWp7q&QS|upH65Ph`s6zFZyGAJ-CYT2jRj8t>a{4U^tR5UOJfdi_?gs~qp_f& zFZE%oyza13QsB2jNrvx_K0&`B`JvR?M&CC31)%BEcWS7T*qbP318TiFOb(Zj?o`XC zS{G;M@X>{3w|bXkLE`%%3+)qc(`m`I(GF;FMyFQBxb~xOYzS~S*$(^4iS31gJtYut zYR?G6p~J4*8)^{O&0i*Npt+EhS)~|w-S9QNY%Ufuyo)#;J>aqZqmv!(sb zZOef(-65>n`r@y?D{1e&xyn7xIH;RM{N2pqU-CU-(o36Aw)WuYyb_QhOFJhVOzxH! zcfxSiuLU#Ivgegj3nq!Rx`(3GH6sCeG(&y(fLJoF$BZ}2=vbgDEfJGvM1_p5SbOF@ zQO`Oi?&)6??YB}{jae*P>+Ygf8)pY!uZSZ+h8ft~VtJ*tX1ZR;8s zo%h>MO*9QUsNJ@*X}bM-)87-EpR3F85B3_`+N@%757Fg(a4wny52r02@*63vlIl18 zo0D&jTdWqzRD|4q=f>5vo1@!=Y@w2Zc6NdXmd@X1=`1>{{E})gPvzSlG^PyilRO;R zuHzJLwPXv#n8n4$uqBaYvOQ~7HuCQ}i8Kxbnmh`$Mdp=a=T4L$0xjw$7d~xGg25<2LE&E!l?&eB~W{;uYFECCa;Vww$Fhuh+|u2o5c zLR!>j$BZ^9Z@cMd8p%ukv9s|D&nE&THEMH(%)3|PilYvJq-M45AiCq zk>g;Gt_^FC7=3OtTI0$Fh+O5plws9Ry0X!>VVk|&rT~2d^weViwJk#cf`KFe3yS3w zWNEGENeU~9q*8hNgLxMn=-aJ~^JMR0qhF+GpQQ3;)>n$Gs^(+s((Wd9dLBN#eF}w`MO>vR|F04;Fye+tgp*S9hTh+ zyzNf>dd$w>k0~-rbMEj*FD(f56LeJBO|$SM=2)ingrW${8deyzPsKtyHnY?b&R{>P zv$7}erI>?3!)IQlgXAORxiQ9xxMs5vSGv1x9f+LNG0Vc?SCs2cSWjMV2Yk{>*C~xK zlOhTaZArlv8~jJ{5QFwHb`T;q3MH+}CMS!7d8emw1vY%(eLN?r;uCnW?jmH4?Fe|Q zZG2}K3R&uRe&yfN6Uy_WAA&heQ6J3A9*2@Au>4F#Wp)Yxf(fWhtT00+=}qMIyCE4v?v|Tc?JvzA*a9N^Z;xlfOkN zmJ%G)Tg)tR`}VQ|7u(DQ88xd@hgY-lp=UxATJyhQL#W=7SdV?pQU5{-Oeo zXhe(T261G0L)8;K{T_{Zu2Cyrd2pxx2wG%@5STVXW2s{J$`vq z8TMhFU}e0%&zH3II+e%9f{OGw-gVA7_$`xjs5)w3@H=^)%+=`+U6F07*+T?4z(GxH zyH}gz+BOM<_a;>6$&DUWL;lP*`|ZbZw*9oo!frF_GpGcMFRng@mDuBjn=Bq-_3a+s z>^`BLkCg>Kn%0P^pz{AEnhmg|!=C=3eRcR<+}2I9#YJpbU5uG&*t%ull4m!wAIh3l z+&_YnIM}(F;t?J7Bjzd44x1(k#XM$$3*nYK;Tq|eL*{#l7~Kejoko zdu1DC_%WSu1@QAdW7XSl$)3)NM95&&Vc;<^wI~y(Od^8b?{yeXwb$cDxrcyGrS|R3 z1SKu4#7HR=FTIT#O8eRRJrJ@xK5XEc0l@6f3@1MBS7`te3B!;sbZazMc!H+W{5}mI zEUe@m+qP0E^nH>XQcZuV@=+o0*q>iw8WDG&7}jThIu;Z_N<27EZ@uJLlHB*SB;2G% z3dPb@ZOc z7@y8<30t^6{_QaMU{U8?pX$6$XLCibIh{mCfTbwJ9HPT@zbYq3+Txp)1+RY&bjILy zzXJz4^0@pn~rD5wFPe%IV?9f5T`?m-ggpyw*PW z&bq#&JbPqV>$VIuRu?qe)-YP<`KJC z%sccgC1q4dCB~QNM82Ep-;M>TcAP_G2!?nR5U3#?8dpZgNr&1L@>{F$9Y0C!bvI+B zr{4xyJ`TVfB68c4BAy3N>n+2`PJaepS94gbr8M#wodvuP=xbw%Clq14UKD~v94l8V zoM|#rCTb@O`NHTBoW9%UujpXo83a7jG@now_ArBOPHeV?gW@aa6@&jmE8&J1D~qJ> zbEC41+xc&}KAP|D;TCqxiWtITf`tb!lMB=-r&i-Bfdac5#B3#j|Y=M6Mdwk+QMJPTab;%hs-uAdYdRN}QQ(>-mX(dtWV;h#Sz1V&@!$jfM ze%rY18wx&cF`C@1y}wl;Y5Il`{TH*xF_L3ixjP4d?&MxM zvOyr%EbBTU5(VCw^;4t?ik|~9%haZ88tiyoLpCOtxY;Y%?wRiuK!A|k(#i=n~U~QeHLo6 z=9-YB-WdPvrWJIT*@bsb+n7h+oqa4QZ;k zg^{(_eIyo1NGErONJE)vG>d>V`k5rfzcQ#;CoMyw<_Nl)l(IGbOWmU>eR3P4Fdo)y z-Yykw%SOjp(Y;>}D|6u$Qf@0iL1C43|=ri2bCUtSTHVJMj_;2t=4S6+DU)MxEjOxT_<-;L4 zduvl`{&Nj2tH`nk+q1C6N5fYPc|3FGq0Fo>F(@Xdz`e5axuQb^yjyPV6MZG7#%DYv z$scoa-*gLfejmMyL#Sk&+*mPb}X&*Bd z^N&xNH578#Q#^mIBQ!Yci1*lFEw~G+e4czTVe!P2S4j4KqyFpEW3?|jz-xyx%2uY# zVCljS?QG;na0X8#L~r#&yeKw2B@yF6lub#3m>yd(y1ZDIg!6AHz;q;+f*~)YZ}UI^5QK zly_0_2(?sA@BFTq`~j#W8Jt#jzAC3(!eypG&AokyQK=^!=RHCw1L4beuX$N;+(CAF zM4e~dii`B-Tjuo@jyZu{|7N|D;iZ=y9h)Ck-r!KE-TW+_DYEKn>z%W90Rz@5k_k$1-SNIb;y2;TR}5 zL4bFP6R=h}PlNv94}aTMG#{T&wBkGyhaYMP8rki4IGW(_Fn3CWth{v=2DUwXf+AzC zq#P*w`b6$xf6(rXGLvK&=c}w~zs9iuDSjKL71RNb$r|QK`s|C)Lif+Fi;alP4}#N*sB&H+#Z2&I(j^PB*r-~;;>S!J{sB=mUa3n7 zof=nI>jAIESN2z}{~N_sqc$dHTpRK*keKdTY-yCV#Z*;kl*5XA)uQ~M&iIJ=vj4&W z=Or}7m!8j=?!cG(rcA+pZMC(~I5sQs3M45p!c~BD(NkLrm+rc`0VBwn*~92XGBfj1 zK{^}$&WZH)2Ctuyb0-hqF`r?xP$@QLQeSXozNtSAKVzjbS4>}8ocC5pz zdd#1v`7iQMy6f>yt_Sax>#s`XBSZ=jGI5iVk*nPie-J8W+0VU#gXT;)=z^591oz47 zF;e~RPrA?&I{kT@-qYd3d+lF0YFt`eY*4ai5DW0}(CfZ+ojhtu@8U)s)l$GEaSYd= zv;ZUD`=da7H`_TxcHFWdWpX6!Eb&Jq1=(V!ZAjD~Hw{}tsr&K0!@OL9*sUE~2{v+= zNWdN2=A9c^Qz$79*;$lXTt7hlGxqP_-LDmrFOimv|FAFS2#v|TDC)?FsR1%+Y2h^~ z=NCU9IEJ^7Sua7Wv3+C9%iV+6b5{wvyfU9B)8dWeR=BnCWK&DSD)vO*Z$Xsg8x$Xc z_4jQRtDc;@ep8lNTtP;!d7M%!4{g7be;BrJ?-;FPTfyt1FLx0_boiqKIBbukWQv2C zoaTwNG1sgX^0+hFkx4V~f#H098Hu=r%J|*#ejuS?Fq$4G7;Qw$kOc*&;k|U*0bs?2e<~4>4@&Um0DGj=ITN z1ie+ZoAhG_YXvAxPw^#MTaFSMTv$Z=ko48h1XbncQ>knPd+F6yJ&KR1mZIW&xks5q z=YsB$(9OOi8-!@kk2?c?El&zGjS{C;f)Hl4&V4IGiWeXE4JxH4bGq43 zjqQE~kQI?V(j|v?*)YSF%XOA~)1tgW-?-KVS$EKHK?Mub{NH4R*a1rh4=VCKhq%P` zb$!dCl%8^@mc@49XT?t8zSSzVFq$8=1@yHZWT4+Skk&DbPj^Qlv*1v)B`H;!e?28sknLV%)wNi=+LhE_~uxIUx>g#8n7nyez5 zMD%&TiWjjU^G`><>otp0e2_F0LJ#lK;;V48CJ52fBIs&N2yEVZte}W`cCkl!GYFP8 zVs~TC47kf!DPO8$Ew25SpzeHBqBI1wT}drk8fLxa7MB{8vk#qdNYUiDz(Z=|BmGG7 zPz}2sk`sXZTiiz#OX4MMNXIigwg3fp(qHa#mtzur8Y(lIU$Oz!5;=1*<20Y5+BE~x zt5SiUU-0Kx!_t98Df6ppDjf46)@RZ~+Tc~Dig2wW`UbzuI!{_M5Oj5L1_Gp`~$zC5l4Fm5Siu%tJ-MJJ0WXtmK$<-vN){4cgTq1Q|LEHp0e4=9h5Z) z4KsF9Q@F6Z3B10sXh~5WO&-?n3vIboy+GcE-9eb>Y!sKvZT_W{JF9+pdUhm3pP=8- zuWH5xs=&u$aj8qb;-kA8L_1#o*#_rg*hCeGTGqtnw_qKM7Z&QMJT|K3mJJzyHp5_M zdKx1vem_N1rZ;J*ksPB5i2Dc<$hA4Skq2*c#(U4@rt((95j@DM$;8v^M5RrI?h*_z<8RLEZ?YNp~BBs(FYDsg*lbTHDfMi+Q98;x7 z{S&@FO!mgY$PAj^&YE;nH0Uu~V!>{#%w7gb%!tJLgQ05g6iL&Ag;J}=3$?lYqs8hq zBzDg^SFSwHOLLhjp4}sAI_JZlbuf6>AE7$YS?(-%N`llV{fglUPdmyQN|SW6qKOkN zcIToYp)4z;*h7_|ELGk7puemo1Wu89Jp6A~5WPbJsXaf|@{hurQL*BdxpMi7V+sin z+?~;v#`64H@;fOLZF%vEX<7_+d;Rh1nUCX2#Lw4>lT8(swrYpxK19T&0{qjiY1=@K z1HTbrNv&B_Zw9~eG?_4WVKP=_;U?&px(;z5@aSqQ>^=YXuRIU3WNwXeAL-=n!k*9N zW55t#>+Y9qTr4fRM=%<(Z}2JKzT|i7Ay&FGcZFT>+oE%~yVoH;#eT0AspJm#?P4WA zXm){12h5s^pnk22^n@dsu5f{pxW-Hj-geqQ+$`o@HgWZ#`FM=i?r(1W@}=AWO%C;Z z44BmXa{39gNNPT=E=x`xTM7DY)>&J&bsJo1- zX8w07( z>|fxR%4}%~pSsQxJ;+pkolEXd5;%F>D^*InK=qZ9jmzyx zR}~8=7Ocv1%IeaG`s;x0~nnlSMLed0E{`z>iI7D!Rs7P4pJ{^AIr4;Df* zOZ;jkr^hCN!}M_0f9m{)>|4HUKKk!!e}0dDaG_gZviN&Bg|o6msfFvq<+Cj4Shit! zq-1B{!>3`*HpN=b*(Z+)W~-}Fo{IeUXkGGOUcsMcY#}ZiHlcGcU(sdN0jG~l>d4dK zcMdt)o;Um*hdGP}U80M>z0pCZmT=34xnKFvAe}njVsA!(&I=sFw*8yqva4S4p=sr^ z9aW(Ecn-3JesXcg@MEgW%k|dCKPk=lm%g>N=i(XgY5klSO zB@PWqaLdo|aAhjdN}J+_xW@w%ztfy%9_P`0C8||;X~8J2D@rt&4b?;7a3|o)0qI6_ zek;q6UcKg(`E^$?!?FAJ+o$i9@rhk)!ewzC0YLAo^iHmnlQh3`T^nDYsu!#|jy28L zQWDv;obDqRrT$QJPP;-8GN`75@cU60Vn1VT#{`nb&e^6hC3?b_f3f18w7B8SE=i*0THYm+h35POT^2ya_nC}h@k@!8B3zd&2eFb@*qZ5=_iuD%Wd@M%#zT+|Bg7YpkabxOZ(^U*{uO0mG?OB!GpQ*2QLHm z1=PV0A6``p&U)V~c)sSl7ytFmzrHcYdFDM0}7y@et`I zbvzrY%5cvccApDO-VjN*hK;ENqD8g#r4U7y;#>vLTY0-RV)@-0%BcmRKhSHxPcn2! zFLmhweajz%$GqV*D{`J>$fC*{*TuAf0_CuWz@!v~qA=k85_s#Yj+U_7wt3J@!<{S( z@>02GA#EP9j#!$R@}W#u0?N8JEY6=GC-o`oGrIJ!_tme(oU>-TPq#Z3EfRIi5Js13 zHS3rde*s~6Ce%0>qPA>e4w~#0c4%m8m%_`bB?N_6&~nZQdSb7K`Udq?$P$Q`#4i&Sj>TdNc7a|USuxsAZ1Kw zPiAUW%;fJmEr&=uyjWB|_}&b1y)lK5Sr##ysrymQv(v>lhWMw`(e|7S%3gJDb(rGm zbx=>+xP)hoEMa{-3 z`_ek0#+mAQ?sVeLW5B+_7HUpL5GOx3P{xWAcc8^B{kG1_j^4{~U$*o)C)x}z}EPyT) z>7WRxH0eF4Cuy2B)Htu&PwW^Zi5P%BG`Wo~paqd?pOFIJSAELcO%>{*hOcO% z0(SBReLT{6se7N8{X0tC5`}_bG}P^3u_4UIp_?C_j;cyxdAOx!VWx2q*7v;-VAeUN z&XW!tc5Phto$e|VVdvso-AJ0vE6Z?FeaeP-JRkxGfW)EB8JO)kX$*|@&;D*u#s)|E zzT1Qq^;}0J?ce!^((I0nOpA*QCO3-4$ zIRRL>akEp<9=Z2m0_p-6Ow-Yek;EVGLL+NSw90w_KkQ2LZE z)nSrm)Y%+%=YcPMN!w~{CX9dGkO7>Phe$1~I%pw$W3vCd9(&n#iIvVTml)Z#qAzQY zZUelKmm8g3bv(8S!yuixUjh~Cg7s(003S?@_XRw^g@~cnl}x>pYx!5f@adw`H3MP^ z^_{;WgWJWOc=sTMAa`C`w}wFsa`P&v*;Rd>tdPq4FYrv6YQ?9%oWk%`_J7nR+Rbvn zRk1CRi~Q>U466kDdK7mSCg-)o?^{`BdMjxYyl)>n;j1(Nw{W@}nHW_*wx5&I{Lsm{ zu)>39EM0q`Pv+&zxdS}NY_XYcC*Y9zj2(YJ&vF_#*|tE^*PV|JWC5m}HN&dKlk#HG zTCmI-=VWzgp*D__XXtRa!{m`f=M;=K7v@PLzgF#$Fldgj7*}mwJ9ieeXjJhKnE1+{ z>>pVk7SdH9wvzWV1u0*yW4AVl`!H8LkVv)H@>^AUhOapc%UXIqW~)tC|AnfEXBGi_ zhAM|E(|}&;dz0a}WmIOZD@%mVzndd}7>EJUJG6>7Rcpqti8b@lCl3fE2CGD9j;8c& zbI2>mM z&4KC7ND(5mrC{5t_?8Tc3_y|9ZyVhVf;MIx|Kz-Yok^qJO&Urw9g z;gpa-(b#yW+9#{&@hfciPI)!^qk*ec*D#N3j4u@>9i@+o+71bA&s>aQQaq$fCaGP2 zwux~M2d?>E@$0o`oI# z&OhOBO}B_2+vxZ(`yWobOjEnqL=TZb##E?_Hu0YF@4Cqbz~ZD_4fl4e5Pm+uKi#LgNxM{d{3mDY=;jWJfy#M3v@6Apx!S>NkB&$fD(D!~TZ3DO?dbKON zM6>(}^G+_W(W_a&WYXiWP6_z1w8+b@6slF`aPfafZ`jFSJzm*hx>a!ZM*X0@^$+Ef z5u@oD6P03l5=2LHIlf*V!=AkKdD+PXjNy|0;hU2pC5S=0Rg+6Vp-#Da?x3_4~ef3=5Emxfmtlk(q&e z=ymTvcKW9~P&1*8;wThg9m@}i{#%w}AkktJ=m=byTWe*!gULFGwNY>6i54$8-tO@} z>=2%%{FXA-@yWclSWG{K{bEvj-l!MhAaij4o_93=8Qf`1tcz z&V#S%irl|0R|%{~VO#%^uBU3?o^U=)3EzVUA1I4$0cSMtKq>x zdvkUn85QbwK{dV#D>KKl410w5ftz;E6pgZ0gwBdUr26WU{2iUNe4J~rxT8c3Jsf*V zE~Ks58v3A{XeHHMWs-rZY97qUGA25R_Ak4n!dzD)jz5F<5epgcly!CaRoeh~NK>&{zn`HmE(v_%SPP$oO;=0WlWM+=v|D8%O- zp-yBX)6~n)P1W^(YqH^&`~P}f=T2bFmyh6@#!Ve5_A*5#5t#I*-y)sWCt8)kD{oXX zDgAy^LuS#@Kjw%46Y7B5CMB{3sCO1Nn=aX5?vJ!SluZ_^Nu*B#_RLXMrP9N_*^G25 zK&u z!S&KrtwHi|b8HiB&-<(!(@fuf4xCq3>4${x+yy_dTq<&@4A4uPl}`^VdIu|o4^s5> z8d=Weu%U{e!E*H#GOVVAdUSQ7s_Iz2gKLj^U7Hg`wH#GZ&9t)2tK!0axlp?WbxLmy zANpnR4K}>D`0c|3?fjMKf_9IvD(a}r+f@VBsrWd-KGF$7#I{0}-4Sr8l03g|xP@Sz zd$`3T&DX-NLKy2MmXOCfXbh@hBsO~_Cv=`QWX5iNjR@8*P&{%QeMF&_G9GNA0Z+wn z7LX$@5&h(n!gSnZk{E;=x{;GEoDH>Oj8VVoZEuMI$Puj?sxJL;^(isugwR#7R%hL1 zo2-F=noA7PV%Bz!kwXSOY$Je~-NK_zYBfgEzOSOZog19k_ihmK67{E-L>TXCE>+5C z)_w{3H*G}lSi_2dvFxmZiLQ7IO-uBWd;8F9oPE>&hRm3Xn9{{>HjQMUd9lP#lGqJO zeYephas})zGf6-FCRMy~IxsGQ$*u|L;HO9393ODo``-OwcH}R*g%SIX8$wqqCyR^{ zH8Wos&DtTBK?KAev&9xVTUy1aVF&^reyjI?Cfn5!LF;8nv`h6si;UKM|Ahn5rP~}A zDOgn#7s=69-Q0)WW8z7C(3620(I}{nr+I%)6dBUt)P1jovZrpfza_k@8=2(xp@**;y4dL`Y`cnkH?>c~W&hlT1&Wo7dFrId}`5Uw3Yz_!TnBc0|*x!P_ z9cKUY3+HV{m$h^It0A`z{H6vps83B%4fzb1*KaiR^dQ@C`>|vt3!xJmYjYrcih#LY z|L2qp@i!(*vj2_RjV}^1gu$4}onUE*{%=IrgkY^^RNgE7Q+1sG`x8m=q_GagGf{#4 z>%15g?A)IFAU`h)&=lHs=Pd55#G5D>;`as)Wcs>7X3GZzXeD&an*-6`JqtR(iU_+tbgh_ zF7o85ja$7M4Z=l15rljbHNpBxdmg62;{R#|VMVL@weot6l;0HC4b{hb`G(k*z?WELGof7;OD_hY#3mhzSz+@AjA z!UFy0opTbxlfR^FT=G(U^*pxo0H;SF$?&GeJ}Hin)lTv=BG{XHdmKmsrQND+()s{1 z+zrh%W^8OmvcG%i|HVnaa$P_uTjl}Uh489+R{!P!aQeoV=|1x^R~2EIq{7aNf%E{7 z!1LH_kArvgzk11o@BaS;1pZ%9=D~OW^0f`S+m+N+F6d*0Lgb=)W*6;~LHcR+ZVc_q zfCZZY;Y~amdj3|`yhYBg>nsW^=?EZ&CwOmE<)u9ovP;WQXxpEQ63X4O%F0TzYTpcN zr`zc-NtyL|W+RI{Jc`{g>)V-%_Tu2HrT#4K3xRo=Xo>f54zU4o(fIVqy$kGL4_tj6 zz&T<%Cl4}0*2qPvw@XQygEpC90e*7JVAvdBM09(86QylzXlS+=O#(iy{%j$}0}GlQ z&NXM|@pqkbkU~9)ZIZehnc6djHw5%WQGo}-#JzP1bv;eg9k*rQboJLgK8Kv=J|0K` z$yY}Xlz^R$keDaM6VTn=qXL2lszkZ%+>h#fK^}}}@y|nZZ;9c^Ke|09Q`N-BCC=^2b7?iB7y+2G&=ePYpHI$jt=Rg9cM-U z9l?V=fF{~6!T^IGRW~|d3qIQ>dA!G4slGZI?1BEeDqHtX4cX4FC9ury^+htA+?*zfH2^sZ9UIlCbEXz9gOZP!SM9tb$_J0M3!fwSK(SSg4 zG^kcp;r6t`EjB^oe$>5<**quk0Esx2@atiPRi)0iBTM(j_{o4!@W7TDXJzOsObEeS zVbp$zt2`U3-jV-Qg!L1{Xx&fTVA~_)hqhqO*vx&l>$#&5=sD4pRsabl;HHXaZ@1-7 zc?AX6lOprCw6RhQ-q4#8KhA?4Xayu1#sF{6orzR5==pRW{ z?$P@NyRcMo`5^H7T)tcIbNJc(@$*ymM3IvAT7fq48I0RGo!LIWCoKp_8mCI9xq7J9 zUh%JZm;0HW>v>jx;5lq&RgQRBrDc?5qHV9Dl|J(pX#Abjr}6S5a#D#2ClK}R7-8A+ z%8ezAOl1S@dICR%Rp|0$#5U9L@-IhNl6O07hH^9UMjP)=BtrLc;90kH<$mwNQ5hib zwqn-bO09&XA4umow>?~czP}G9rgh3=wuQ{sXWIWk7kDpEq%S7ib&J0(fD<)^Q5RcA zctle+f6qvaM7t870m{S{Bi+ljT{awJ_8-jItMACm21+jHKb6wCUNI_*kdRJx-)SNc%G2`e|F@p0iZGyo5e7#XrdZK;o1c_Ke1Wd`x~wRp7){V2bf_;y#FN^Tu}uC z1*m)fv(g;Aa6s0}pdJ?dyg*5znQR|@dlm4=?{@8bgu z?4UW-{KNK=CQK1W!h@~H$?6+;M8x1UbLzxsi2*lX8b+~v*#nDrgxO+SrbKlo83xv*UPm+rl^Mj++x z&A2Ef0^o4K^lWIeN4N(UFh=T4boo1i4oFKa0XVzHKRexBTNj5M(=CQCR&f(v2}`+3 z5Ll>Uyam)+uq+65qHm@3%1Lm%M0?D*+VOa4fJzY50;co-zh3J9fm=W8_p{hH1^8>= zeVY9#c<+?S7BzVIW2CTE*0Z0wk{BfW!0RgTrcU0Te@A=2xZUO)pqFtvHtL-&_l z+Do!MZr3up5N@~aTBaKpGB(0r%@G8P=BE9$ZA$oY ztuzs2nFudTlYode=W|HJXDmI$s}c2TUeh0@OY5q&MSu;aKyk+#Zv|2 zMio)1W>nB>on&oW_hmABu(!Km0wT9c^~^?FW3kaK3c=ad3JAhT`LIWG)2y32rNKc- zS2XkNWT6@;p_wen(`XnG@7@@S(OPxYBO|N`xx&GjoZ&(rM(+^MPDlSjE$r!|K>>%h z(c=M32gkjvEzlU7TL1pYC;d!`Gmz64Y)gXHY8-2$T7-EPvyi4 z=*F4sds|>Qck!%W63kteAZ3V#0y2o{;5zkiw6pTCG99V8*llTR!V(*J9*Mb2j+|BE zMqL~a;VYn@ECnbd3|v>|^$|3=VRj3VCc?c|cyTNCchYRqH*$v@`MbTMV2Xs?xP@y* zgsZch!3i8i%^&%dHM^t3n2vN2PPGQ^(z=_l)a*`CuZ&i5wb(Cf9Z6JT5bsG zHR=L%_%h^z_ub}~3cdYS18Uf3;J|vzIp6{hR)3(M`44V+VS5w9Q|dV`vk%5)Gt?PI zsYhr`aJ-~&@KPFh5Qp1+>os9sN)dSCN=FY){~9xaqKMadV0VXNlK}C8&Z6r zhu$L>HH7-xx_6a*Rf43V^0WFrqzSMdH#J1}wJN3p*ee()_w9!~6Epr8fmb4F0x$dq zMGyGlsb&`uRUBZ}z5hcB?;8r8T5v1WhMU}y6a9`IT>nl36{HMwo2HwFYlfc34TSbg zRtoKEn~of=#}W(Tx-aM>i+H(6>MtIl@2Wr4bn^`QnYpH+^$k#P0%AUYi(K=BO(MSu z%Udk@a>8LsY>)pgL}PIJ#bkT4NW>4;>qd~)*=Zga!Bb>rJ00HrvCBmqo?q5)OLhNn zCw$?dc{JtlL_=29*e&NQ50Es=KU?+hiACG(bAgE}BAT_sl$%6F3F?0`i5NE=$PJtd zX3eS>cOsisvFnRjhr{jevcKOS!jv|PfFv4tl%(e3j{+pt_2Htsc25ee_~xv)wMcYs zc8_ZJp75e`)QJ4teiI`;@0+Xh(t`8)6Q3VxUn>a2rm{-mL9mu6>JA|5G@i9fG`~ge zil@yyM1uzoci=2k|Cv$kt-ok@038EHp;4B6YUN^)6q`97@F z5MImDN+X;Z*7QB}2))&G*nBd3%p!`~{XM2~zpi8p$yh|g z3PS15BGA3p)WR#=k>$);euc5xo552h>*zA-My9e@eT-rSyLjK}157Zey_4>#6td>h zDW*4}HKX7D{Z;MlAK}DsQAU6bS&tz4o?P{6Y}ddHpAAif?Kam2H#{ha7yhoBGH;Q0 zQ1-UcHw1?rzeo{1j(i>qTl{n_o@2x*rD?|hhd$JFy{%+u-CX~86PM&-;5q9~hPVl3 zLNV>F?@q-Z1jy{t7Ds7!)v!X8g07Ry2e?Tf?cM691mFDV(W8qtl|WCn zjL(>_04UQ}F-pt*1Fnl`<;P-_s)iX13F)7}txfIQNvO$#4e~UzH)~XMRyTVYZN9D( zMGM$90zXhH#T-b9EztclHb;HAmzs!ds2Yn$>Zbvec`fYG$h|W)ejxjmvV?qfgUWM> zTIK5AV=c(b+9P5Eg)}>><^wQI2tYX6WG_?Tv+>$*F|2v?i}k!1DT+`-o9yhAd0@f6 zh;~{N&OW__o>r#w>HyImJ<3p7J~-0}ok*Ykl^@(J=ugnu3*MTzm&7rO04_l$DN7C^ zUTri{n%9k~2f(#~Isf&D0LeWB>UFJpst?z2Ad0>4bE`8*b0zpCzNIPRHxd z(0b{LLGGYM!f|i7_tTBJcz+R6J^R*T=cs@?_tl}Jok0SYG58FjK2z$g?(s@iW&9Vf z_cTRh$3@)8dsww`gTEqwad|{s;rB+K(zqP}JMw~6Su&9BpQc`|Mas{(PCNYiCgJcI zhbtc6qA3M#1=F7tyFvFF@fx%gc;8hJ#cOaO+*)E)Clz)YlC%l?XV<9}rY&$^4#u~R zL|{s}-xp4nY@~SSO>oWk+dLrv43eq!9mGy%R$prk?4&3iXxg;3%9@u{`C~rj0II~0 z;w{s{9>r%L15^I-8RTAefug)*{Is9};fEDM7jsP%yPp;JP;%_t7=#?J9ZPP<=N8s(@us zu+6uZT^enhQEfHY*k2mpaj=^a8Jzfn5KrYD6vLF&ccU`6cpkCgn^Gf*7R}a}!Pmdc2j|HWeO{MztW|RU7ce_#`oJKrtmxTOk3= zts1M5Qzm`=>|vBk-``r$xdDMvQR9_<{Lb9)Kk=&sB)ch3cfyD)PI>)kyY;UgjsNr` z(;%mj*0^s^{#q6w(%%MBe~5QSTi}zmxliC!Va}kC+f(sj^$lLbrmov%{i4{Hd(_sq z8@iQ?Tpr#1bGt4JTO2Rtbf+igrh*gpSbbA9KA8r8hUf zRYyGQzC$ellpTBc@wcYy25`~qt>t1BvWZ-zmzH?mmL&d(|2f=LmF6!|<99@_DM%?% zNJ8We&tC9v3F5%ylg)n3Y${4|+dJ?Do1u9p;8I>wk#G9xXUdFq@BEG0An@<_IIFm=%$9f6n_EhHMP4^}Y2G_oQ}&01 zSifZ{L$`%V5lUk;vA@aVWLHH+(zTbIxY~C{U+K{sO(>OkG3{ z(RT8!Hr3rmFH{UKZZB2-GqT~!N2HpMTcRDG66E4Qi5hr6}#JO}~V?_9Al}Snq0iv%d*#+31Rh#yD%$ z3GvO&eMZLd&B8U+9#0hXLnCd<7S9rGn7N3PNd&WFN6qa>v)3l~K_su97Nf=RsmNdy z(SLu^f~dTH)VUmV{<2Rc_cG_BHE_(Sp(-}DUA%%Zw}nsGvQ)Bz z!|8kRyZaaxdRiw@7k_qo2($lG;X-f5=g0Ss#(bZT8~TU8OXterrcedz^8V z&tAwk|1cLV`^qi-dpf>HdV~pfk9^INPek{e1?+22DQR#Brf~`OcF#R$80hoIU*S!D zsJ8q_9#qC$ah{yDo}4t#DlS7z3prKGR>AiywkynGm7vK zQix_M*Vo^fxk>e*+i6b)emDK{u186`J`ggxA&}xJoSYbAa$I1$HIMH4snz914j&p! zQaAKYd!-{~EYQ^&cQV*ryXQ5$y|-p%&H&@cdG6=Oj`)0++yb1a|Btq6gX7v@7oW~3 z_4OUq_YhCJ5z{_ia;fI|MTIfsC!f{kX0cn}@e_Pf{472+wWTg!AI_T>wDxFfOr5wl z#4hb%D0{wIENY_KGq<)PYa+tt{AYOW$X|(8aZATbC7M4rKR-Qovy4*Mp)~6Ht+MDZ&2II``wQFm_alxW z{7l>`vs%G!9xq);)v||j?s7O0UGtj5EHM>($XzF2Nb17Ewc^ib8pD#&P|rG;Zm+tT z>*B)59WHL}myki(zGpo+Y9#MHKNGs;tr`ufnClZ|BkI2OXA(+Y_wLRa{xTGufbajp z+OeBWB2@|(ss&mW@nGdzDI|_o9(m<7c3Y2}RU_6rZ69*B?k!Ix0vAYJ?t5ljFHcg} zmqOt%*IN#M4QpP^Qhc4d^Um{WBUGlwaNHl)hp)tUR<)W_vcIf%%`9&?!O)peV%1@K zc6!#tBo$oy=C&u47mM7P_wG4{5Yb>g+}_26ko#%h-pW~zu8#2qy1GH4eAFeY%qR8u zNLI+4wuO=?kswtAs&~veHbOx{66LsEVVW%Vb2|+abl%OLN>KhD5lB6}UR}mKpe3!n?xKy0rNg*_z7X zPc7Jxc*rcX$EZg0-Apj4r_&;$116I&UF9FdyKg5(dHG@EP|)2ADEz7JOB=Hes{>Qx ztl;1^?h8>>7r343_oKQ$01@c(Af4-8dd!t-Vdzio!wYSw^C18-AYx0Y`cF%}?M35F zb@)*^HtSuHsYK_z4~%s29SnB4 zxmKFjs#&gb^J(K4H+DyY$2+FV1?&;IgNdE0x$H2Xu_Lb#n5H0$OWQ-H>^`_!?Kavy zJ%z1}8H|LH92oChp%6Fg@F~a?a6+%;?Rvav`h@!1UMap4^mMHCRgHn0OwwIW zM^*ZYNZNO4gBj1dH|FS4xm6j|yR_*7utTFTqR_C=(>RhsaUSi#(4-1=h5IR;x_L{CRJ;a#4X6vF-tCpP+ekh6*M`h|Ag z$ONBPU=?}pL+|0dx>_oNcT1WWd3i6<(hCqwD;ib_uMO*L3-GyPYRy{q4*9yYHG9I`IkWUQh-vw_9ajHN_9hQZa_0lT9ND`z#|M&jH4QScXQdo zFD+`<k-p$ zsZ?6aEe1U(=%z7_kA4Oh~F~r}yokzUbLt-?vvZ`X4 zPt>0$aK0@%zrjwtV&+hQ^oeCuR$?6D`fRRb$_-oPb4bX=+Fbj{2?rbi3y4k8qbGYF zls%s_CD-YmG6f7C|b4nLm2hpo*XwRn4}e|EvT9;n)=sGRbD98zvhsJ zg1Jy7cxXr)$sPYI?_)q3KCV&*OtP4!*(jb{RR)=_TE#<1<-sR8ElZIe_CQc>*4O=M z`)X>~MCPht*NB0NbL-u4Gwi&VwzY* z>qxclP~=C)LeRo=t=NpAC;P#CBsB{1d}YXsN062IvahR~tZ}`zN)Yag-uH~Q)WRs9 z8y6cHSZ$Clfhgh1lQg%$Q|wD_@(h9F-!+%p!K!aoXE_Z6cYin z%)MsJ^14l-usld!t+x3aszy&sz^&M@_;15jD{0uBvMw4<;U}a7)Ts~?K3#$ivXkF7 z8}Ow$8je%H2*ZR#J0XI9p##+4&3cd_j=@EbvG-%|8My4Y&$s#Nc1rlb+>TGn-!jL1 z=Jfh$VBzbG4Gg<5^QMsj{u{0NC{JfiaWs3_@%e{_&zjloy}kV<-L~IJ;wHk`%yW1} z)36Az@QxId@538)(c0eGMN)u^(^ny4X~T1e?NIE_%UHGTHS^5;T1|6QV1kdKBti$= zp(k;CAdyUXHL)e_v`oBH_X(l10;4)0;jxiI7fOeAt3x-gXQr#ljcKTe72w<$rdvVM z)s5uhW(ytpsFd!`nBt)x<`iNo(x8xcEW&seaDZURB>7W4lzSAlw*77Y7UH>Tc=IPq zWS(bWI@Q41Jg9m_nEdzmliQHjm#Q7|%O+05FKoBXbe5ZX-{^?4;bT>DKuvc!%_FA& z8q95whhAoA>hPLibSG!pW7w3;g;cejr0l(&`WaZ8S9MZ1y*y>V`I=I<#rmF`s0#>$ zTygg#e)BDltV;izoD2Qb81tF$HA=&#dvP)F+GJGYXFU(%VjzZI-7qR`8L%0ilY&{p zy*$1|Vec?GHpLb4w48%<$b+xC)AFI@;_jqrU41LP z@6S8SrWgBPF&5G?EbSKPGc(gzX=_qnqyzGeO_x22i+M3b#wdf!j#VZ5#8S+s8>O?XbPT zN~Whw!)8_o5(5KdYK3rA_i6C0x&+la0le0?_0Chdvtm~N6R6%WSK}CFBWC9ma$kZ3 zAu-kPYR(~rr-}Yh@TIG|+!dN5y?ZOkyEL3B#vbH+%NzS4V_+0HzXY=q+U=ix9t>|n zBkJ;Uo5!&Dn;oLP*ro=CS{t`7%%1(IMoBJGs2`H}U5Y2rM5QM1?71~rJtO>Gw#lvf1yhui< zH$gzgo&nG4+bx>@{QZF=fhv(O(hv0}sji_7y4Yi;9^wC#FUG=;oE=+LvA8KFJ zc^2KL-W8_G@ObB&4Sl@m7S*mW0AH?JJDpax*ex-@KycUH_z<0wG+wQ3csy+$NpngtAO4QG6hHp7z3YEqnB8zj49fLhYHC@)CJ|+rr#K_4rI@VpkMvg0R z(Ws4stKkashOt?s!r2A)W_I!`_}>=rOW2V4;|`4Srz(5gK5VtI z1a=B%C}x83p5WyH`V+oTy+Lpq`Sy{Ac?!mJvB~i(OF3X=_1PBXD+g-+d3?RLgI)aH zq@x(kD3|@h`~-_gA36LHSbBTnXUz3)8U_xt)wNi2+v}t>8I1a;dcr0?7w--%kPj4J zCzLL_YC2UVeXUi$9Xb61hs6H9?qJ_cIHw9NAq4Jo>dj@f+YY4dQ2I*t+7`J!b@=&? z`R11CeX{Y(*~>C@Z2sVsZ3oUykcuv(-mc|VqgYeNkoho%dp zzlPp-bU1b=Nq={Ed`3^?89uUTUDZ_QQt8N+tN%({HRz2LcG^w7zRr0SPF%)4PD54b zMlSkYZy&+pr_uvW9lXetMs-M$KaP_q-6B*53 zx(HU<&Axa&qwio<)G&|aUXl;052)BUL(}^E4rtEb+&I!SO<@j}98s$LD8N39N*$xr z_P%_h-W>8?jdfkbYF}rFZG8P{Sn&JZfOmVaI{B9A!d7{1|9^h!Ff_xa`8N0F<15SB zZeBhN3v7P!ZtJ}4P84c#^uTI09fVH~;s>4^Ko{H5fz!ibobFm5MMx-|^?cvFP7MPY=HCv?@; z?iw<{PEwOdTlRpC6v;EbYW(z^LqYmC)X@60d?Pr(Apg6@leXlElzI~2JDR3;_d&W} zoC`Km>b+MemLGOrvh0b1dA+&B4UX*>wT_34pE3t~ZHHDJxZR^GRa?}5kdk!Dsk}Y2 z!x6t4QcgyLO~yUSsWDEjxUGUz8RraiQnrgsoEl0EUsxSF7Lks3AGs4LBO!Ekl5VlC zbRLL#mw=={{twu|t;|$LAoDE>vvsnoD#pOJ}X`XDQ%$bz~W3%5wkS%d5ln zZ(MTyv_-SbcNSYa!Xi39tVT`k&~7Ir4OnB^r`7fIJJUe)gJxHzhp8eUf7n+FT zQeV#d<6AlU(px!Z6&q}-Io+5MTxYUpGy5gyFU(F~Q2ggrUfh9Fs>2!QYRLi*J+#YgF6$0l+Ev%~+b{yl ztgHZM^3NFag*cq8P>C0-1|oJtn6n?`k+!b~HJi+kVTg>Wd-S=$X7cHFYH*M9=}E)H zE1R39M9nw!w4Ot@sKlg!wOQbzd}q=&0(ZpU@*7GQjox(liMgNL!~Y(%er(dle#|0e zCzA7Zvr-a@z;@mn*jK#3q;z5C?n|5K$LDu_Q{*WKXoMNew3@+I@5wnTU#Z`;pABqV z#i<$<6fq3 zx{Fs~4vlSd6`tI#NWrvkT6d8Zs81)hhZJR?d%ZFC?Rt&DQ^WE>*UbZ_7#kMwPph1| z-x=rYY|BKvY4-AQd?+>ZTpT|2LkcGag>GWlys%M#rb*&%_i4sMPY?4wT9ocYW%O5PP%@tGsnYzd$yzx7Hb0yI#-u^}mh)Kh{*k%WfmfrpOxaukC7C z?lWxQ4^&}4&)43@QJXgeG)=LYK%gla#BKcFKx^74^4dq>yp}hzAbBH+RTam7@3J>^ z4OG1Ff=zpu8u7!p_Q0R_;2)cHMu1KBNS)asZ2WXRev08n279|41er};eDiW2J$&pd zZL)OVi;B~y<%xpFZsaMBwu~ICXN$jE6FR|3*tIrh;|&M(MSvy2`gEW% zZK_3ZpW&BPmk`K$W7c3dj2qI)WQU))(w7sef)JQ06?f%o(gL(>05ko{XlMSMs| z=?lb9pLN)U#^}&_P!sn)q4X1^3-1keIrd{y$u_EXWrj!XZ2dKGtNt)DS94Ky-dd9D z*!#eim>5 zx{T5WrAVuo#Bs6EQ8 z^i2B%LMPZ5_n;;}AaW@`7ztYP1<6;YEHoVc)_dD4E%^SLySGniAO!!0^?DgnA@;$1 zaC(OL(2S3#uU1b{Q^8@FjGwqFj}YrRq_kg3@Z?}fJ*UZ$adiigkgb-Nbd~|-&Wuanfp^9iqXtiYsqbUENVNQ z`FX;nf#&#y48P6-qgfL@H<}3tOI0lNk1O6$yeUa;GvqLO)t2ei+y91AS?xGl+YwY_ zx<9^zd_`6#VT*G{dv3hocR2y{x%oX$fXz`wtipGwE+(gn8=IAsx$G^#$;7--d#RUB zeEqlc$SGzgqbG-Puf^}M-}uhETd~ya5kMTG7a=gRDHU}GpD*VWOOge|BN`LN$HfX# zXRTCdwr+r}Af_f*u%h#3RNRt(Bk`he)*ZZG1gZI2{zB~G&A;#<@D=7=OG`@W&3pEi zGp)-v9K;_bwO?<_$UK<2oI42?`dNBnEF-Dp^{(#&SKQ`|;uUOo&}>~sj@rDN{b-Tq z4Pt-!0}kb^hN=9@fX}wo4&^#22_uaV%%yx@DTBL?viMBft~1Y$G#b54GR8f)DRNVg ze=st*r!YB`edkD0T(IR1LU8AvHWZezHu%gRm(wwLCe5P+4PI%Cv>8d|)*9yby=vYz z0dCz76Zc_jPbOYI{?E*(v6`^GAj!GpQ_ud<6$js?FpJ^m-fkivs)MC0EvxC9mRyBf zhZmIf3tp9*C#>N*Y$?5FOnlE z-r8{rXTJ_@CiW;q7~H3)@QZ)wgPS*!JpYT-3K>C)RrmGPvK&YO>`a3$V++&RZeU*Df0?Czqm$vjO z(I#t(m>~7nIPvjU_^FY_$rwpYxz6o0#p^L@vvvG(l8~6@5rHqysmQ{e#PHmSvVrcT zx9nG*WeivMr~j^p0zH~ZRX(?)S4W|RHV3QW)ZALb*VPvk5N==*DETjMwG`3##;s8u1&%wh4fd0$B>Olry$V{F1W&i~FiZR$ zfw|)L!CbLRh&O?Cuo2%I@&8Gb-*nCQp(}VCbR!X?7VR2Wq6j!zu!joVLA?e{ux&)E zRujV-{o5~LR>UEMQW3S>c%J*uHIm4}3U{3&)$&5>)^7-@lv;x&Fq4lq^0wE|WbJg} z!lYq~MP;2=o09_@ez%ss8hf?dkl(`Bau;GHS7E+R3hRuVBmSv@X15?QL^o*9+>vdO z!-Ebp#JD@Y)C$Y*UN;}g$>0MtTn{GQCu2L#(K4CckciVeehuI5Q8Vr;PhOort9r+@ zAj#{>GC%*<#I5wL$o2~{9vql(_I;X!Q%%+IJL&N*e8neE=F8B-LlzYuT^K8A^ALKo ztt%m%-12~A`;v_-RPUEbmsr5_esR);0qX4nAGPig5Eb^M* zh+9az0y~cKm1raK>Fs96*Qb7~UDW#BAE*wdkqmwB#k_iSXBn*czu0^%1pl_-4~4-Gd9@7vpan!ioH{{q5`8EM+z33w#^rq8SOJ>2kAM&D`^ zb@N(~yo;gRlbW7ZxpnePN;^6M-Kj*MB=g~u204nCVtDA@woyXC9Wq(wuD-jNW;m z8(EV@cl#C8s3ySm?3E16!`)TwGB3{N>52o7GWrd;t98~z6e7S$|Mch|A^Q&c3S<5$ zWOb&a+B^7;r^F~8oc8CN0u+s02N2#8!gEDnKey zJY%5=DIwpKAp(=h^?({L8S*0mgpPGyA?x~No~WL*Oa1MBzI=a|hck@AK}Tysdo?7U zJ-vB_Pie*lNZieX#4YZ4mh`$iYW@6|(0roCeBjv?T3-#4OUm61?OwV zziSL!AQwxk7ZB`k3ZYZSJ{0Q)-W*QBEo7 zoL09x&nf1*T9^MVJ`Mv~a=iYqY=3>=oWjqOOBDw1fDVo;x>x&{!qyRlCLivjEk3cW zKDS%(O20@27hMQ4+TU4C9lNN}3v5+92ifR-6&l=yNUaYKsJ)?H#B)SW!&V%WMON6f z_E#G`T#tuH&!K zGMH^4!eIDF-Q_7N5ZD9#!@MqC@NDS$abNPtw<(^si`<2mFYv;*$t5ppVamy>W#(@* zBnL{=QS2xoQ{nQ%xf@*Vr>(i2JvqJ{+X$fq7XE`oEYY4Doqdaw-^M}YF5VxvvF}lO@tSArzxf4TxWd$%=HZgAXu-Jz)K6vW!qTDZ=j(eOifE;VfuN6t{oi_-ltJPg-Q4-5 zTY8!l!MnyL4PiAB_%YPF!&j-sg2R`!;fyUL2&m*|HQ%T`N_70AyAeyYJU;{4OpXY8 zy=%pPDzV^6k~_9FF2(pG%n;qwqLh@ z9jJegQP;Xti%d4Z`;-mU>gL9 zyH=YHWC7_pc*@*vM>R;a7Zv!=?42dA95;IE_p8o-$<}~9gPf`!lsUJRm79c}UFhya zt?jz*n7;1xkg2cs^>6v95?*>!z}4ZF7rDHqOFjkiRm1qI;JccFIop*$4j|Y|w{N`p zETdsbga7rH(G?3#`KvI4mLs!g{@9T?8;W_-%=$)_JzdMG)B-)HAOST$?rab{<8-bJl>@8a? z6>ncd(mwiVGcKz}zRzat$ZRlQa58V*KFoR6+(}{FL;lu&PP^>=;;KSYMBrZjy4=1u z=hDIQKS}CwvmxWWSz!geVim!)xba^)U9@04x;FR}VENJL-NW@rl@;oA0(WQMdt@dt zWY@Qk5(*z!CoG3HwTaRmZZsXiH8X4KFn{3GtqrtgP5t@c zViZZA+)`!)V`6vCA@{}E2>)Gc9rL}8%*bw}&g%ar#xyYfFMAHG@?PPggQpoEj@R$r z`r6s$qBF2~3->t2LuVZ^Y-I`8@jhrJ#9flVGzZ`!%-u6aTJuo4ivsGag!T@|U7{dO zPc@JW9I2i9`vmQCcKLB&5Ijr>Oia@XNuj8?L`h)Uxw$WK$44|?;%?mLDOF6_Z?P## zfZS23^pIu-4@pRU%YfxkzBZr{l3zk2hAn2keq~}liYp>~K0S@rFGLEymnPKCDeAFK z4ylJL)c7M`F@G0V5Ijhj{_8BxpQFI^<;auiZz#j<(X1jEu8Ner^Rh@Bf4v{2d-mUt`{=I- zOwd{Q`-v2iNjt}=YQ#heoKe(IHAU?%nTU}i4OTtazMbyqF!WwoQ7`%q0jOTalL zC~Z)oP>>2927ZkW7B^>z7d<3=(19Ip``qwV<7w!AwJeQQ-`Q}9RSW0A%%UWGki!F< zX-3IKf7HwHnE6Q?{S@MU;XFp0%35r7J+t&BUN)-7*#6&N&(G1O60))MPL{{{hXp;P z*rBkB#67U6o73L*yOh1XbdL_)i|>xP*}D1AKA2Z&d!>IzGVS1x;ndFyKd+s{=O$k; zuGer;yMxR{xN)$`y_Jdhf7pBPsHV2=ZB&nnA}R_BB3&sW9i@h11(7C#AYGbB2@#N< z5ETWH5_*RSNN-X@O;kDoLT>>gT}lWLNFX8b1>SSs?|1GPcicbkH^#kxWsE(t_g;Ig zx#oK2oX?ySk?3M#&@|^*yNmDGzi=i5bO!SZ+4#IQOe~=3mi9mIKAl*rdlistG+n(?Z=u&&0?6y$u(r|~1=}qc?KDJqJMW#kxlBscE96L!L#1?ir2eK78jg`o0W8ZQHuCeg(3yWv#rF_ZWQQ?+5(n=dSkQ$NlTlF`Gl< z;NO=n4jjtTzplMYJe1XcT{_l$^jZJ9#+P#lR{nMA*wKFZ_odJO?+xv^j|3LII3L)- zn3U+Fw@^~tUMQb!8(xGJ+G{1Rb3V5ttDGI|mFo2DXN}`|I|G&y8&5a(6Sdp3Pp5>#Huwj9 zTa)l+EsLQq0$!no8iyl{XZ>tRf2b~f=X$$B zQglQBR|ugg&>di{oDg0(B=GgZe;=+xE=VM>Pf>(6xY<~68q6V}zrW!s=aB#@we7ch zcl|^VWv=M>q>Bi`+AdG+@I)ab?dUdN;fO^0>gEHYv}(hRd9QVM3kLFn{k<_-^)w;! zJH$fu)`)jA^>+VCTKrV4Ba5JCDQTygz6!0uIg?Ftzd^c&wtV#r->oh|Rad{X5rEw0ih6*6LSHb!^ z$9is2MWBSMT=dtx71=2Ep*~~)&r%=z%Cq7y_EdrddLp=vmz%d<_`jlT``~cnyfoLu zEvK4C7F(Tz60Qj#J<`S5;LZ>4uxHi&t{ z)#s<=j_;VumBd3qQ(mZXXd-p=2};((!YdlJD{vA*$$YA5wCEd~#+<2;XShbwD1hEf zYip;6+XLP-UTivt>8t0HUo)}E*OzK_X17zU#k6XUULw@{riJ~!q0Q9eG77%;*^kj; z;U6^}{OAblZ{D|@tbh9Ww_&2PI67s>u6K=hKoeutv3dJ}yHOc&UfVr_D05T0D}edVN#kB1&0cXXQY zJwuH-AKUNTsB{0gaNp%y9QFWAisuq0F8zV+ za%ureK8SeUm#)WE5RlvkTueYq4@`BVk!m_dRHPDhwbSGFt7{w2>jNF}72hTm6Vp-R zrA70vTJ3HdIkDm-2T=)Y1_%tuY42Ik=6U8WQi&%U_erD(P6rb7U zr_+m6_lnjvLVyP#taKOGnfoWi_4I=Snx z60t$j_uf-{fTRjQ`7j?Nb^)0(*wL<@SE%sHC;A=@w7zlF5u zofxZ=FV#`UoMV-5AwJv@MpCUT8 z>Vq_JC*})I!v#`vk$GB~2|M%1iL2>mS$k|nvK;=F44>q43K&Cb{eACaock#?tT>cO za06@4g4`J5Ks0}m$LBQ7|y)0lqThCB6qf9?k3|ON3AT?2N~UWDkpCb**Otq zy%$4aG|i*3VJvS+{0Y=l{GBMULAlih~dk`ZH&H&bOVGQz|o^4kbX z^qS&i9UuXV&^6ut%oakpxXn`6^$)nakaiT^n*Lq?R>r+`zZ#8wKcU0wmV-z^lnO5@ zJomE|8`qW9J(egOTJ_N;wkuIt(peJSCeUCWCA#!&hQr{QlAg^~;a?RY1AmlAnu~$C zj?ezYdi;{{$BswwVT3+%3fpUAdnGQT()K73Vr={A2HN{7u_>QW?1+l(osw0LyXD;DVx2p`*aJ%Xa{*arI&hHyx7KGS2-=R6;8H}9(bRwQg1UWITsZPt;ch^1q?9M=ZeOVNC_!(X8p(T^#A zhMPX9+>!J+uzO=9rzUD;D1qu2Xu<~$$kdwnQfpJcd5Yb7j4fEfuj+$!NJY7GfwgG& z3RHCErIs6zpT=LTqYR!xvng=UqBvvqocVb5((`LV$SnCOG-)TL|N7OY#XB}nu$j(q zm5`)_VyjJ*H~&VOf$=Z{pxuTq{53gp(CQJ%&~i{ZYuQTlhGh9EZ~IJf#0{%gD;S$w z(mL;`q=J}g)tO+xjon_p|0xg=AC3fq4{Cg772*#PGE0n-;etBZ-+g?}c*^ZE3 z)qm#gES4-Ago^1%LuGpj|I52Lt5{2vb$lLF!6{tiV7H;aPn+jQDM!7xHe1ifoWm8% zH~PM+Vr6y-skqHluK(Hr)3PV@TKcDn zFw7AP<)^BtVwN2UeVJPWX&mR~RQaHNfKL3SN8lruO%C>P&xS9Jbk)qNBpO_CTgmyeNP$L$YKjf)DebasGCAAS(2 z_4pP7GEn3cs=87KOh&$UwaB9brB{L(UM6y#xNVi_W<+<1c1W2)`JP39wqTUKPvP6g z^NL+erV}S0gE3+XNYB;Z_|P4Lb2u?WmM``Pc6F}XI=+wW``+EJn113eIn!ltLY>0v zx$niu4S6|gt{JZ8x-e64EUEUcx?pIfp-!DcTf%ra@aNNc%Swy8VZfotKd?L@>J>Wg zAJ6p=KIT&^;f+>pZ6k#LDb-fRQH;Lxo5(+zsdpOilR?%H+pi2^E{_M7hiobPK`-mC zJy43;kptTETARjZfVN$~A1A6j$3n9(UlUc|+Z1~=WuAYO(RE_d82F=ddn;@@%7=cutS7CC~F9KqE+F4DgI__ZmnL+stivV=b zUAaEset>tp`CFu7NxP7x#$&LCW{>5bvdFHT#|9`AHzBE0v%rXTzn{4mlw^GUXY7Px zXS262b@Jn8#iO~Ht{nW#B$IM=LT4L$%;yIY*EfK^Q)di5NLgLfui}6zk3afE3Lz~2 z#dZP&M;GRbx|7FGEmqHo*i&UK$O}1M`0yHLUms8oG2mmtV{0*cD5T*$591l~$!=OEndC+~{T%o83mHt=VQ+G~_hVc;VBP zPm_SNcODDZ~`%39);cpb8%1gJgp4Jm|Z8FKJ9Ux1v4QH|ei!^c&ng@ru zP^F^8r(_E=;d|hRUr>{$eUU%xFZ>NB-q;;l{TZ@3j9R>_tlg4!{+cNh2v@iCOdT6P zL1v3Kst^(qePS2u8z=vuLO!rtbK@_QXLhm82!8!&A;YsB@jJd>G_iNA>qP?fwxOlS zpQ~|?*ER2adZI3?09%?OYQ7pc>Fa2=&QcG3nFG z+CqtS=6)y&fZd+Dt*3r9J@+ZQq@BZV<$OI#q>nskd=_iIxFZDAZrjaLgVK-rp`{O# z(4_G|`TXL<^pWq_`%i9K5nu5+qe=@gGCU!KsJ*yd0%=kc49vgK^jF4~j_Y%T$=EsX zh+ekz^P1ivFC>wD&ZCVjx#uZck5t=sdRLX#%H`6~DMDV(uboMsE^XWMEF+!KGM{0O zHxN`l413LgkN1eMLv3Cu1i#uK7RU=n2UIo|G9x=443IA~(f7V>+|Dp!KwL*k z$HRA^+4VfIdq3U}k`!D=7%x9JbK}__UbUTgO5(p*^+wjAL!`JPCR@eC-%&N^(%8wJ zu&x{&6=_eEbNMJ2vJ|J>6(cj$vAqXsWn6XnYv8tGWaC(|FdI?+XEE-}ux4pKl(~{I z4)}T&58WmxILtrQ{qaz9tzRxJ$9?0;u^j>L4+2@2f3j%mAe7{R2p5H^J0Z}I^eySN zO1aG$9iKIx&fXpUtvmX!pp$J$kH&6+1YK{U%4rm3E#MU*)?Ew}QW%VXEmIUZxGrw7g& z;IbeNjh}Zt7(GdHosf}u`-{9$Gb;~Hs962}uQy3S=Fk(g&3bgJ zGxB<_?Et$uOafkES0Z z28b%z6IO^DgcKornSu_is1;5Gi~&dnZ})p6+3nUJLzyO0x3-Vw^P13`;*;6}NmIYm zDTt=TdAx zTib(G(2)F-U)PW-E>0skgqnC5Ahj9MddP$R?Y@oQ(xYbMD8fK5WF9iSVW(zc;4H%h zl?|GKRY@$2Al@N5PHMa+ zwA(f__5I$d(erH-azhm|Yma*mSJeJ>ovo&pMh9;y(m45mdc{rYEAUc6y3I1HYW;0L z_{*%VSF}jY=TkWrp5-sHA0M4Lz_gQ_m!ua|d#=Jh`5=4$w|X=@RFC|}#y=u}A0}hc zBpqgmsV1>$)6HZidLsnw&t?ea5!QR29d@Kg4XBfpN-j1hdU8FdRUa~spsQ%ru-{!(sEPcn?t6Hd+F9nyVdh(ISByO-k>_( zSe;Vs9u*VF94?D+n?)o)KvQw=gd&;V+ zf>m)~lQuXZrt^WWCLxqseqaPxv$tY9@1^E9Q$OLIC-;q#v^vHF(Wpf(K3B`4LFv$X zhUnZT5R324mE2q|RhFW3w0lEjZ%!QSlM(Y@tTlo^Y1CO1$QdXKP2J;DQ(tUZ_h59! zCG9U{Hr(ZZr$T>z$|B`bM~C$~<#oj}q% z+Q{>qyCy03kN4w0ZrOXIv}G5$dyC1R!$$qdE=$H=GIU&h$xxBwc0`R@f=Fg3DQ1VdAR@nDK+O}%ONsOSm~k#O1cc@+ zyVT^~N$_~#z}t#1o3X9b(~3=^NL6Q>jCc=mj=!nq4DO+-)JDZG32S2W-h2)rBX@3LV4>dkpG8(Uj6po$8=haQ1xNc+W_?W{N|B8t7<;vuL(UQ1+sxY*^CPaq z6km)MX~J6Sf8bBQycahyA*Q$H81glAaaO)?ilBMWSGOuOg2UEI7NXSB^u$bYJZfRh zE_X-%$4-?RDV0)W&CmC~(j5_8H_hacSDbBQ{hrVX^}mtE;*P^&jD`5C z(=T%bjnTss`{nb+uXP#f;T-8{C3K?CW*EMrh>p` zknGlPo4XpdL%z*02uevUi-LZN+li1u0(lH}i#|Kbf8ZxsnAJt@49C#CTp&%XCb#kJ z(?2FJi0_rVPRwWi`c@A6QYvjxL4#0-G_UeXH`m03s%Own zu+TkYSZ!7v*$A0*MtlN4r0|7%nEilG7#6h{QF0Vwg;w~-krUK=cgRPusPU@k} zh(5U+=ipb$1UtAP7VIpzg#DdfJX%N(-3_v+Z&Xew7DNRIZBC=Z5lVVK#p8Ks;fL@u zK5Q+ohEPe^fO;yaG)7AGx)P?Rd^SK7FL}4|<1M1qpzkf|YoLE3eLwhn>A}08->WKS zQS-Yq@#TG_sDu*BgsNP2K}xF#rdDWhnz z6OqQ{y5YA$&vG+w42V*;woQG@ExSQOZOemKkPp%~%^8RrjfMz-tM1`~oU)baOcX$X zy=8wn_t&k25IzR-#sRk%?K3JpeO}FCTyP+{bxMfKmLxj+msd^SaIT68ZR$+}y_De^ z6vtcL#@ye+N5JG!&7;G4!PVo&4G@V^9$Y-q#G_qeC-SOBfm`7vd=nvBj_Rjw14FC{&}^0k@O zk0dOf2_f)H1|e%fwQJdhO!T0^)4dCC@6#=V*!RXWfN6SsX(Dty@fG4y6Q15qB7Fag z%fXA7IZevDiB~a7denDMk?Q)cwtdyhObAK`d0S`O^JEC&j6L~~zj6<&?n}|uW21W8 zjrf6pEVy{_Z_o;x$FEXi=6E^O?y=0;2CG7%pwUC&H04eQRrff5m8O7KCc8z?)NW6d zTa9gW`+LvDxmjzo7O2WsTMQuszQ7#ENg9oWR!^2+8aMlWo~yO3TdK*o0q`q=Pm`Q+ zJL#0j|FPtUvHu|NV-IHhS9_7Hw6aAk)-e;hS?*Gq{`+5X-1V=A_?mEx`!U!V7h~=- zN6f(=1@1c?xIsVuaY!ER-IGUdW5Ti7^qt{qMY#F*0AVv>?0(~>%0FoR=x^^H9A+5N zA8AYf-xMjG+Bs`B3F7J8O!~7!hnz+S;ZOe2xQD;*ULNA3Y3`SMEV$F9aPIe*irIUj_0j0D@-ew|v!d z=^SsV0l{mwd)LVl8xksL{f(#bF{5k!fjUh%Yx6Px-cTSUQ`lK88TQ`oy%z)b%-9TI z#mpU5dy~#vpk}pjvK!lBe9rx-@2s~u@Wm-l%`&voX)40$blBm2U-e91Qq(-b@+wR+ z^OTs#xw}s5@OSjcjAhPNId{L;_cO|4=3T| z%EQ^D6&?^9d)oX(20mFI-5)Mi31f3LOS^(&0lVfTE48R%NmpVkooS}~Q*zeecxyb3 zU_95_)+g|^-_k-`BAx=Ge^*rqC_G>BN)}QMo-3}g2vwQAcNO5y$sw-zh!+~$+w=87 zwMbvh;52d4>8aKqN-IkJgiit_l0s-#ja>5A5)~eh6DYHDv3WEPaU#P864){^M`=alzAHYykj=eOXy{~ z6*OS{)?d7r>-f}8$>K-q^n?-fMmT}a2>|%TOwX2tfm-7(AZ{!89(}yGhh_Uz#g!#1 z6;WE*<0-GxQ#-@c;UJ=Pucq!^YVsXCfMrC%(rP4dsIN*$l!sVot zx!U+M-+yScxtw(LQ1xQOXQX0ThS!d(Pk(ZOW)$BEIQTFDF&apR(jgvBa-$V-qEvH3 z{)7qbj>*-$7d~4PU~}O=uFyCAv^Ohssho~}D9k-0@#mrdQiX40GLhGK?%B-gw%KC) zt7+aX`$xh^C!2{lZfvwz%9Of2De*y`^c)N!9GbY?ZdspH8 z%@~yej^9eBY*ja0+r{b&AUzv|TdEi*LJGZ?PdD0Xc~b*p)`B&`-i-fytXJvPn&`uZ z(dkEoTSp`0C7_qvG<~%#IJ3TapY(cr|7gJt=>hI&*sHCB(x(?%8&p2BegDR#87Oa_&@7)S z^~E%) z;R&;sn{*V;Yo5>&dRr!q`yjnbXk-ck+|g-X@vH^F_tYm>;^u>IxRyG?-*o_(0hWPr zysl_-_dN}(k`!3qF5TPMvEe}$1CbB5o({*;jRec8iFi8KyV2?#O0$DuW1FnD`Spc= z(3EjC_u0$zdN2_lJ2z+>z=Q1RC3MsW=?bZI%-W%cAfY5Ds^R&`3k^U517 zrx!Ebt)jTw;+6F|$T#2~3yrI)|Dly<7O7y1O!{8Gt|*1Kt6NnCuYwE2%@650$(>HI z?$y)~{-BUD8l8P+u^pDAQ?MAiY`v1(50Z8FFMz)!URVxN_0ng%L+^Ih%$zm$(5xP0 ze4u)DS#&cAAz`;I?J|NcfQdBnHyl7vz57{I)0(R5*a*K+Uukej{fLBN`bz)M3Y~X)@f)b>kH>il*5 zU>|BhS^BFxnaSPPh)qoQ%hdB~qMnG*6H zq13LEY<>$wXrRB5%|g`TCc)01)y~tj=3qLsP;X_{vB^eXd(j|d0|@RN;`lN~cH@(G z(gk3>f-x&~{f^u)rAVKe%F;vve$EZwHq5_q1)-9dP%F@rNa-!-D}A2AEx0hU-1ELl zTwpeF&#$)o#UeWSO&C!`=MA=)KcHYM#!akZ@AYqa@6qx7ZphSHW5otYNEf}#Jdca@ zKUqqOjC^JdAFZbYKd8IBvU$9Y%tqEP*s3)6+bo-6`y3=#pv zVxWYt&r$vE0fQG$R3>G)*}eui6$RYpwuPI-a%(i!vEnkuzk8*3oEmcOlH|%`Z6C@eSR(8)f0lZL8--<)ZQxQE%yyrkSb&=nGZ=lfXLg980bo+x#g)i#=`^6=gi69`54oI0Ecigqf!qfM)^Y+@7K8gy zd8f{^<@Ds=?Nr(@aH^0rw);8V_9~7b!XS_pTQRA3PUKWeJ+p+u_-ompvC&uq+FYaF z43+NGsc^{*_(pz2eDvT377|GzXS}dFT@X-2Dqy&@K^iT9(>7hQNbn5`Qf#DJt{YM9mBHFU zug;yg?u(daZx6Vc9~<8M!BmkJR01MrZ;&$N^AmBPw&SJhEYAdUVLgMfckbvzsW(7> z_P0i~9vD&Mkpo`2i`3y3wtDE+=K&dB(>ROLLC9OE^(-vai#(-Ta%-JlsDLN| zXQRT5&r@`7vvCg0*aNaj8RNr~*VL4gQMV>%>7@LeLY)5WyQVeKIXo-J9x}(mcuzye zKfqUmZQzumI@PC*Qv0BSoi!PxC_USE`O56J^V-OqB$|dEDcPS_G1(cHW#6z#j4WP3 z2QSvje;+M{>s(-r+$pKTXTUk;ykzgg4fy=ZGD;u`rTTeUIvj?Suw`PEQ^k$8J=00W zyy3X=6n}|&gNNHMKhJ^{*LGutYVg&UsYoOHwJ)=37H$&B=WP$-RZBbWf3q@#!Uy#> zMw4HtWmKaKHpoB5aP-P-z}fi4A^L7GK3IG3_3G=((75jhlh5$V4Yhl%g#;j$M8pBE zmRT{%sF_9_SLd;%ymSRn6#R#$MI!|0O*vZrbl`H-U7-@{D})Oz5f`kd{0REnW1T>$ zxt+PRLneCKOQ*`F)~}@`&7{r);{w$JF2Yv>YDi%@p#RDar zbG0IZr*VXi%|NPet;UG|aKe!DVqxLPS3+<~H9Bd=>1Vm;kF2UO zRK2+TV1-^!}hA4AEazeLojGVI`P09x%iXd|Fe`OQ_AG-jbpBfIr+)?F5Ovn`T~>AP#JR0mI9RHKA5%zzrQHlI=C6!Oa{l|2JH z?YRWk_ad3>s~`M?dE0H5-3tD(q4A{NpZTJ({U5JulbGmpGVq)>xm>%oSvzAs7;+%2 zrF9DVxP)wO35io1QQrhf`*9T3)g(_;Y&P|oY5AHxClM9=oPQUIC9c-6;dxNYZS}G> z;H`BY7sjADb8-6FJHyeG_^@Rf3mdFe6``Ke@E`WhcuGdr+1An1@Oj|@Yf|`@E=?|& z`ka|ZJmqxD8Yyi$#lwRbaz3T8Kbh5{1qeR}ED5%SCw{$}Dd`u|S^JxKrJzVYQyx^h9ZIh| zk#~??;NYo-){8-WpHfZWo|p9G9aNG7ULrcoVhA7yPY+-?iK{c{yJyr^OvaA((|`~J7RM^WzF^)|G` z@qLNyp`Lx+dR-u=_tpmEPn$U<-q+a>F6naAvxgoROwwY3qIJRF^y)V9%mZde$kndY z;5+esG;meew)8`Am}h|Diq&|yG~_$=i0JOFo~^z|XRGgGRE*c-(_~TbC(bqDquwFRe~7K!)B?`(Bp0ubP-}?Tb%yiswy~xK8q%&ZZY5%%6#JcQU=J zWT&neQ^eZGg;4(^kJM=kTYXU(m)tX?uQm}swQf4Z7&0L@_;N=S`{d1|Ew;yUZgzjb zCl~;_H_+VVu$!X>2tgs-x~K`iS?AO6gw@F`sxp$vLNW zg@qW^X7B%0{w+dLbpBevP_*>zS2Gy5sh;nkIKrJZ=ZwM93R zC0EAgHi~XNz+x*)_a%V5ISAjq^$Kd_HsL{^dY5Q*)+hPhA6`#(9a6;c;G_$qV)%nL zfIIoUExMuZIgO5U$KCy8&*lK}o8gcy*{1>Ac!4b<eHPRi8~ zADKe4gz7tEZJ5kB{xDq<)`4Wbf_h3n=x%;{5pGr!yjZ^N>x5ZD47fwz-dj^IOVW*w z)D(VTQJ9u>>TDCTZHQ!r>u{-Ps6gxQ;>vMXDJKkkS0JG+1pI{ATNmG4D$l^LyOUPw z(T=bdC;nNO7nw(*q!W|1yakg3KuXdrQl4^-u@8f4>xkj=S7$r#(tdo`;1*5`hFp;u~nvdAel>J|ef58PP?_|!?AyOXJFvtr~j zk~3Q!g9_hLN6CF}*z~Ll*d`gJxs3D*<+|X+m=!lx9TIM}cTN?+H?H1wN~>vO3x0kF z*Y_sd%XCEl#|xCw(^GAT{@tE^f=KiTXm+OVN4FNn7q|Z{L z9D5$EqJk7qO3W`V@?H!-W9g4$cthNPr z!3zTNTsUiKL)4i2MK*ufVZRuN$EU0Xkdra)^;X%S#AIZ5?wFND*YDIluE|BVbiw-I zJYcrwed=$O?5AyVbb`Y!Ip>_+wi%9eJ0*W~p>GFwzp-k~%;_mPmC`)liD=xzO9{H{ z=?4<09<)3!kmyfD439YC64mG~omZh5!XLkoOb%XI$t_$h(>8~EN*{GZng!<n*#?J`j>fZwq}`P9hD+R*4(!CAFZHQTmMZB4uu#+Ek^zzE$oc(j&+jI5r6MM2Pa;w7u=_BmLduh_{2GFTv#$3{MsAsdm zTW0uH?h>vrM;vE4KKL5iEN^}uy#BW@TUlc z9t8J(2^>Fn3wT@cIo+gR$?4xY$ zh*pLQ8I`bRL6T8FXT%=jN(%9WNt3z94B<}>1}IXfs)SER!O4{o9-ycz3_06RiwcK z(G*xb7sxZ>qmiYms_BYGicVK+O}e}&XyliS=zKXH(r;W$b+D`bR*xNNPM)X@-vrg z|AtVvb?A@okEi8Oy5XfI<|~1#Qa??Nl|u4qc#VvozD9LJhL&n4NmrI9jVaQyG`n1-+wVFG@!1D|=R8o}a}hoJUu z69P-a=h|u^^#r#9SSa$|)+*9P<%{a6a=uV@JuQOv{&^8w#Z%?*zd)G;<`%POI18kN z{K60Oz(rZJ}kqGL%s?& zT3}}#M=1w^@DY0*s%45ZRsymj5A6i`%+32I?jzo$4MViXHn#05jo;_KrzcDzZFuAoshi-ez%H@2o3cjxY>sFGKzBW`@vJjIV ziyTwBwW~s*{1H=s+ae!MJzG4b?pOFo()kL)fvyp&S$2`&;XYDOJ!M8iNjT1ab9`vMkS={Qlc`!S00H3wh*&`86RF=M@K>9I8Q zq0Zzv>8_u$Oa7CFr-tyK~{JPZzWlGw}1X->uzhyHYlc>pCI$oCRDQo?fqG&Qc0J2qH4 z*LHd%(Bd%spBCxOqnL968VO`fU;&1Fm3&F5O4h?+l`~d467J%w@|lN zJ%B*^EtYEAQGKbPK`;ts0ZRVZ&gCXlf(dS;6Q)jOreWY1+7*5A*f1pHzx;e2AJNF?py>Y@Kk zby#S!C>EUV-0RS+FQj1?NV$*HpL$)?|6{Gvp@@`)^vZsd>hKoMnW2JCN?NUu<;}mB z3d-!9RAWQvAmX5;bLU0kAL;mC7!GhM$ujWnKFa=to|yb3(h6EWSf;%>VLIubSW}RX zmtO*O4~{gFJsKg`199+SA)PBR1Mc%iR$i%03M;Q)!XHeu!6uAfF9PeO@HggD`rS9v zzZy0e&?Yj*LQ`Voc_yPKHHiJ9VeEPxr{Q9qFR|84$0-SWQ=DQp6_z8`G4`o$UkbHT zs@=L1VEw0MT@wVsD>n^Oo>zX^z2UShbiEY*YG<2Su=TZS_62g)wN#wx=?uJ@8obtZ zQ{F>VRo?%2bM^DuSzk_sXadNwzjY<)5R`RqanLj3MsE&l<;-l@ zUrKCv?EEKpO!b5;2#}z-jw^cWl6enXqGJ{pkIc^nkX%G_S8MhVt@w9Sd47s9sb znV9^j)oOJBUN-adV7CV;f$}r)*>GKFC_uF_;VGL}&HK`bCo)F+SMK292*PxQ1 z(zNP1CO2H0G{Xs##Vd|}d)V#y)_eq9o7u8RPi6CbZn>!^6Y`UsONeyey~ z&*NY*poF0kNtSYZZh!^#dnf0Y`X4NQQQX-;PBfaPk3#e$wnsE38VlY-E|l@&3QBu1 zSU!`qm;8iV@aJx^=f&~;NqhFF?)PzQ*YRS)^y1S9dcSwjtXCY)p=vd`awB2`{0n4#K*l=Bx)>=+P4gZ9ePsjI6obn@s5*fvG32;z*~ z&DC606+&c@XcqN;z3H@@i^VE7AFh+im8Fl4;Z1e8?d^b4aRIIK$R(r2oZ^ncHs|w_ zStTA_jtD^mGjOW@l#Z7wUMmP8?GCH=nmO6*~ z+5DCu`Li=JPv=!vUvy)S+Xueypr@=i0_|h#1KK2Bpx3`^;juhZ+!e$5l+q7j94!pC zl_0C|@AhG6oWhCEpT}PgkPM!VY0maTJXN^8$TE?rsrBQnuEGLnZZmIMxN0px{ zfgi?Aboo~`Qkv6gdl9Q9)laG@%H8sV)rI_Y36tR*bV08d7cSgM)ONe@bQ2*zex$|p z{n#LxOOPS5p8yI%X**$Gztl zYr0g&m%)tN0i(ee$vi?O<*&K5?!a+T(0N% z*vUcd3`}&evA4n>b->R(xT? z>Jq(j5wE8;#w(ZH@Q3y+pKX%bMN(cx<$)_yiU)~Rrb=gZC<6c)}0v&sv7O1 z`V&QVebI6k%Tdn8%x!l-#baMfQPpwtA%_*)j*djq1qe@V>vA&!N36J2ly>JwkU@Bgn%k(;IH;@42<)UOz$9b_Cv?P3iuk%)fyB`TE4{ zru@#GHd91gE9seg#Q4kBdu;Cn$R#dsc7V}O9AdrhXl4S$g=goqTs;;*Jc56I!ZQ9N zTxD9t5yhhKL+88(_ptYU@Altm@B2#}C+;t+_FSjepW))As-FdfTBiu6E0-M>^F?h( z_{^9_l~K&tp#L702oQodLGX1dhD5JFAcXQBrv4#Skhgc|xQ0OP%X23d%P|8KH#nhs zx$I%~YD5pic4B^q+|;Z4+KG=|FXsCP;8Tp|iD7FVHwrNB-#yIy>)r2FJF%VJ*@i^{ zbKPt_MO(cvk?s%oN3fuqE+d0N*VuU!XGDR83c0kwG3)!0J2%=70hv2=fwk~8BrN!R z;*riOUpLyujyV*l@47+*V5$J~(V0dPNC|tyKwt}SWQrOL@HAD0nsrI2t1T5FE|_InPhDcrn+uS;y7JQ`HIDTBOI7~ zM)aw2oB|85H?5J3rdBJ6?WLPxIPeqhHD_4`RMmz1Sd^YizTig#wft4TKMA+sS-oy5 zp!R)TBFK}5BvpIO`@%%jhZ!$vgsqlVE^e+cxwlpwnhSwp_V+O`22NW_?@O+NnUDDF zLG{@UZ!d_J#YxAeOP&9Vz4!iVs@wX$t)L>JqSA{65orR_n}u>AT?C|~^b#T z96&2BDQU9r)a38gF8TP7M?RIjQxZw4IWRC(@p`; z6BH-FkocPP3QrG6cX$ea7w9x?4Na3f{-JPVi z-H@)hvYg8cZ}%$daYp0iOSLgs&5+mche@0F{f;$~?|7$S;b7Usb~a)0#- z%#7gVYBQ5IVnX75{;bx%w-cWba22s^ITF_(_O(BB>TvUA4+2il2T$+uUZ%pI+m@FT zR-vhB*)u`m?e7VmH#AP)ZW3@C%>R3*3WVN;yMRr0`ys?GCHiy=bXc~2t#RebUp)Nh z`$iUW_cBc7=F=kwJEbo2oEXE^l||0IuRo)#rg-k}39|nx>LRDc@BX4!pIWt#EtCL1@1B9XGxF^&1pdpS$TUVsIe;4hAJ{9;YcmisWwQ?lX5J1l>=P@KJp;)3X)t@c2DA6;mZB%17gp5@Hmsv4l=`sH!elCBJa z(;Gr{ZLJcQjqMJv3fr}MWquJk^H5JsQs7z%WBgs<+i}yQuf&45pWK9Bt!=HY$fbK~ z+BTMR5J^p?bZAlSyZTng2YvJUPu~4_ilSv&p2zqA``dE5#i?!lZh3jw{^RC>SwZ96 z&;W6t*g&9BUaVW|D=Tm6{`NM{DXeT=y@h9T>YEPcX!jQR%C^^nMD4^7wu|OV-pjFK zU`w-oq%j1YwP>g6`ArWpg&$Z5WTC@_8Y$ym$`r?7Y6OVA7W$VIZGsQop2)wRUEHjA z?sLVBoh6r%pj8NUEgafCfa#&W*}Uo!)4l$EeYzFu^(ds9noIqn$0zKd(j*a(zG{V8 z-hLc3bi-)>y#AMb7$NH#R3>rcwsURl(R&>n26kn_U_KZGU_LF@?xH8_gN--`Zidu* z`4z9uc$lVBk^d9(pE?rD4V9LBoojlS8!-#hLz))i$QuvQy9c#vgxN<0wL*GGXBu)I z*WW^XJTbk2Tsa>gJ5bW1Injh1>UWxYQqpf0e~@_3AFbOke}nkOjS{g{Pq{0i#)&#u zDY8kYMV(Mo=f1(Tk=Lql`*MAOiFC+y{RqqDD;hioL3wN2*3)D9e`p3fRo~8nh!NdP z_qGFU{kI-ccG(QOha-z6E5`SUy;jV8xmm~lbsprvU3y`V+l4D{&XkYJQBY$rmfm%E zLTNlS_4Av1;bN?(RBoi*UAuECcKA0WE6Kmb2q+2`4)ja{&0JKd;e)Ele;p{dKqYAB zB*&b7AO%}$YaYg9cH&~c&qf}=R$OiTlS!*y_8OT4oJ+TDV(wPjEZOx~cApm2ze`q|-luT;FIXtsmUE%Y1gb zwHT~8W-ViHWc`@)3zJES1y92ACT#NUD?Qm0c8p#~PBvn34hKl`)~3?U?`P@_)BzYa zmpL05%UxM8oXu=sZ5Q*l0$7w3Fc-B^gLgDU=e{7EFU{wdAnuJP$i0-=T1p@xE|Zp) z_vEwHS`@}}l>+Xrx#K6WjmaZ}tLbBWxK}a2rYlzAM?H~$GpDzI06oPV;JC6xe~l=W z7(jo2KP-@j7X0zrLgPv5p2&OJJrdg3u7#J<4G4KhU(r;q(yYlfzrp5bgtt#8uQ2F& z_rj((`|k`M(|~1cri5;E`*C>|5Uz=^jkwquA2ssjQMkFkvLb(B)Wdy2t(2_X*yplc z-e2*QJ><_Yy+zc18^XqE&P9zC>o*wy4pXEUXEx`XOBpu7eZf4p=8VbIV?MWAWt!9V zCydn=O@sBGa9>B+aYs_pC;&HhX3WQW#y_atZa9PSz#5 z&GsAR1u2(GMu&X>rsm9w%C=jZgL6t)-SGX7yPx~bIc8r!nNaOrCoi;#?PN6hTdn0I zCZ(?vKPlv7n~^IL*mJu2^MowkE*FQ!G5K8>%t+5Wi%t0L_4P$W zlg$wBqMb^#r;tbPhqB&j%je?{-YV35Wj!AKQftS2L5X6t4Q9J7@CES1+vGw18Sskf z+@8?dyZaC2QRWHAimoWNzC^4>EP(Q^eG=C*>mb{i3m21L->z#+r@6<5*?4_X-p=O) z3F?L69keM|Rltbn&uu3C&r~S3WKxTb;l(TirZ z@ElL-&%5{at{R~10{xnqPZ7gTJO2FrlLy!FI`ezL=4{`cQ8hH*=eQ!@@)6Lvo+>2{ z_1>;NaH>hi2&Z}B9j5+iCIwr{@RzHyuo_*2c`LIQ=$dY&?tk>=Aoxo!y&;@JXzK?f_ z?DdkS;fbybPv}9mT?Xp>cg*^Y?@V;$eeiic_-(Ci7|Di^dnbV3A(YQW-*tcE_+zQG z;?9mq#+RbANLh>Zq1>*B8b}G1a>epZW_r|Au0RrNezO^3iHz{py#28$Tevg=*lZT* zhKhc^TQAzljoALmWafwG>cfw!>Mjv_6fcISyu&f*4zc{mey9bv2BJAxn1fd@+k|Xv zvFiVbF$Qcrt;fVprrX(D5yw^mn< zqAL7E<-=IsMXXgwD>eNse%XQq9gE)dD3_1Da<83Z8_~omobi?(yNJ%*Q50(KtXVKD zzFnA?Ay?)0B18RhFlqP^EVU`PMk1i@SlmS?`EX+@@?a0z3Mpg4SH#T$PF*&+1)sz# zV+wK3WB8yZ7=lDDjXrF4QPxhne1^b1m64i_w|coCaW;8plTz z)okB&#B^L#9da>1f30AOm`lA+A$}?qw@cG)nFZ&osi-zH{)pAOrIvBKX5^+HMc`1> zZ*aG~K4$$7anB~vc4yJj+WC*>&?R%ayYCNRd0B0x^pORCySrwkE);eU-QCFg+3634 z;G?PHfXhZ}rw=R-8&r)%H-oq-3QqZ`Hks?&bn@^&3>^h+|3(l5zw;U){wjDowF=S zCD)Y2kUU1QFSrJp44?Kl)_Ptqa9VS>)73+8Qu`SrIgQzC4NvowipiXD$JcCCtu}^Q zC>=8jAE~q}pQxvTXx6qukl^WZ(s<1>4${-KYi1JU@jIX(m#4$_(Zt?$rT!g}!o{rD zL{~W+&}^LhJ7L)cYHKD?B9#Z?+4@Cnxl)~Ky!KTOz5Bgh&p~|%O}n%}z5?$r&!cTN zxsabI$X|?eA!R7FEIzX>wpL?ZF1!;nUTfN0A*C{4?ao{b&V-8{MURfU@pPjMswy~P zb-&}h+rZ6S^^^Ev;B+VU^wkEM>6m?cvhf#EY8#`x&G6HS`aLkJBUN@t_L{ z$F~CIBvx+Z+iK`T z2cq?}Ry5$EyvGeU2|b}m=2M3bi3<`TwXrVh>0T~e%dBkw{+|t(|J?0e*OC==L>YwV z?4d)y8vcPX8@nFBm~)^U)C<_Gqlb7;0#wl-3(&PjPwTj~rD{)wbsWb(S3bmP#sBmjGQTDURSK?Qi~Lx*nJ-eMbjd!Q(9Zu9K1SF^~L zQB<{Vt=UdqQUJ824)cV+g};l2x`tM!+}k!S)5jZuzCz_KJK#o6N3GjujsMS$jJK*} zsUN(qgDe00^Z$@d{O_9p{`UV&+-Q;`-qYUx`apHZ&49+PhT+l|C|vLPr*W_KaxLER zwRt}~5(F2qqNAnBGezT2;Q}XOraq|(xaY)55f6^J2KU*~`)#6!7n?tEUn-T zS3)`+fLOE$)Qe#a_MFyAhzk#EEV3y@g}FrFO8KGU>bxU_5^{>j@n;?f>k_ z6aR+2Gc&R}G~bhl-Dj!wgu{X6LBgy1 zeB1i#m-ONfH3%NydoObqw3AzFG?(-Zx`rErCKTF36pL5BNl5_+6VLdnDdpp&sY7!I z15VkAmmP;4bCUC38zSje(>EJek+A!7O8P^2u(G(k0ITCVFdneBNpRsC z-S5~wUtI5XEIzgI)8%31D^7z;>k)KhCSu7Zy!+fCjsyC#;IX;n-BIe*ju|1N_+_PM zp0PHwJedxjWQo>L`ETO~+HC`_wsxR~);>5O*0ZAnSs?){edsfrOX`Szt2Lzqt@Edr zoQ;>mC!up82g(myWl0vh$iOw=fYwu!YCiBFS3{XsW{%!j?_xC*x9-p}pdLRl-*rIC zm6tS!VuhtnI2;B7{REQ(mA!8l@Ed<4k3a=X^7})d_Hx17$#8mSfH2Bm?T7q_CkP(< zy@Rn|0Nf`ns+4|xsW#nU&Al!(v3+OlxEzO12*hnyxp{6L+`)A6SlzdG^1X+7f0!w~ zs0ib&=uRS7b+;sPzLt6k(28HblA?DzXPw7oyLh6myu=H4W=rXXBH_<{J@H2&dB+#w zhdUDvl$t%`LI_en{Tg`ao}hh1>zoe2I{sF5$7<;i@CNUll^DH7WPSGYiC$RsleH^? z*AS?q0D~IP^d~bxn7(ly7!Mi%_@1=0Co(RdRai>gWm350D#{0_74Mw*-thsrhJjM- zlA&C$&9T?*o7;XlL3iVc@zN-}sRdU|IAtq1)n)+t9g@^+x&;S-zlWgUGHOQgZSYD?tgAywsxY1Ub-E(H~LE;%duf;qTShQ|IVk z^zr1|?%zOXUew*0ez||g1a8PY`qElAb93<^*ekEeFB;tv4@)z1g68q0iWP=s_QI{629GT;C3xv&A4YZ;cx-C!qa@?e~6td6PS;gJPXf zjDX%s!1>Zj-#_P8TlX{dUtqXs!Xm3uUG^PjBeBxyS)@G4u|CxAy~*@9^Sg~9hP|lT zr92+J=T@}p%S>?M(n=X`1fLx5oSPGl*7I=Z93YEhcpu2(WL?V9@iXgnv6J~RvGa!K zBZ!@KED=>fZn5Uh)}dgm_wWgaVDORM)@U|fhApKWup3!HadhGW?}q)XRF_f-7-kv{ z43WsbAG4}Af;O1gNyUkc=QXWmRiokr9*|BeF~LVqUNRrE7QVh&Qy;lt=eB|t#gO7} zT`ID+>u6wGtdY*9{`h6ZgDp1;IJ1gS3uA;LZcE_0Dm+&emZhGixNKe9^t-=bHZZ3} z3R#*=S;Q4HNVn*fb6g&t5*Z*5PCR@&$jC*pk+TDK8gcDrg)z$ie#SaK!)iA9{kmLT zUR&1sPOFh!>Ue979e5V}+%hffI_hW=mNe6l5LD9?g zFt}h#X_D!CrGl(Up0*(A9Q5eVrRH!cBICG4h{fL2Us3D10uS~-k1B}kWm_eRmn7d% zLbqsh)OLT&SoT{-_xTpxmy%IMUV-PZvv7fqzO)UuCcu!Tk=Y%##hu& z4A3dv_4RRD#RpwhrrUnaV);#0eJHr`blkYnQ*ja4n#)%zlb9B)P9Fml;L~QK1@k@O zj!#z?_$*W$l&*KeC3?an>sF?iP2v6Tjpf$XGM4wgx4%bM6Qz*_n3wTy+;3eR^tZRr z0tU{=;Rl?Vn@{$ap3?oU518+{KB(f&MelH&$z4@QP+#Uo%Yu}i9>};x&jGsZk zZAHR;_ykrb{iz?Lx@&&o_~-F;r#U;n{xd?jO;YD^g@~{e*u%NZ2;Ns=YL3b{dj1+z z*DuX`9D4QJd>4MRFX*f3wNg-mT&~4E&WGc9+TTsNRTrr~jttfdauafxL4G7PwQLiG;6EM%ezhyXf0RmJj4lpO$wfA3vFJMV)mEYbTDy1*{ z$W0+G89o@GSA*BhYiSdv2*=Uqy=PGk2*%_6*kmEGCI~)^sSCfSEMXls zbW7O8GbC@~Ahz`gOZF~bcPLl$@nE!QW`);oEOdBa&R~G-6d*$eo9+iahBhp6CG@}| zhtr1utdM(8cgGEw>86l)=RrirqthvC-~D0;zbo-@$c+*6?5Q&-XEl0Wf+4Fis)km` zuy$6Lwq%Isf6C71eJZ91`?EZ%WkOK5XK%gDK{VX(Fl4SKQyW)B{p)FOj@3XaKPe*t zrht!~zilUeJdEzxu(|jUn* z{XL%#1ca3+9$LAh>zjribMoFi0Pd=XtUL*$!A@_<;4)4=Jj+)omlh|+R1$s&=FF0-sCiN^R#yKSTMJtv3EzX=T#^D@3~ zMtgdyclX0-tFTKiasgG5KHn=dv#^4A^Z1};>soh-y41gMFw&7AHN)FP_OTf5vkZoR z(e&DBbDqAUJ2#PFlg1k%bTvjjCtXSMRO{++Ba4rDML{l8^;hiYX{mJAhX_g)se12? zl3aBH3RbNsTB3Zjl9TDMOm*P;6Q8im&E+MKxPpR^Jff_K#iZbK-3r{UucZ1$>NeVs zE7V&KERf7n?G!YGzmqM>V_o8634LZ~OHWC0dYMQQ$@nPO2}1Kthc5dn)YY z`_wO!r3-OGN!WhLZtv*0fn*1$uazyJJ9F4%zx0R?l49*KlLYeCZ)cgHssxostG+I- zXlAX=*&^L#RipU^*_eh_Hmwu1i`CSNt{cv27Ti?ZCHPr{l&Y3QyO`Itr&Ia@r{cW; z@&0lctN#~6|Hn9uosVU?{00$_545IfaC$9_cWNbCj18sa&b#5g*;(dvqz<;PLuk+2 z_paLiea}ZAUz1zOaCXxiWwvtDNT5vLY;>ZyMKZ>9d~EFek26-WME`Y7h|yL(+I=!V zTjo9`$D_M3ve3Iy#LE;K>b*-gxk`EM53(Hmo_j%99t{#}iu9X!JMGvwDp~hNYO4i= zGQJwS1aZYPn}&tR7FjLSf3AOAgVUZHMh#{vyEr{*?|wi{Hm0%@8Y{$ms)G?X`X?(V z-Z$l%yXgflR+p;jmUGo5g;+{As|=)lo~Tn+9G5Qlw-wIbH%g&;F zG+O#Ab#|ek+sXq#0{5FQzyIlQF%PqLgTy}A{9qK9HW&GdaBZx%4=xwl8Jr@3NF6J4 zQ&Y&c%BCq0fbLn+v%O~o86}X!M^H$Li4u5CLRcQ92y;LvL**9XBe(=V1eUoBk)r;V z`r~&_DQV;!?2UL_sC&a^0^of2b#x$oUHxW-3&f(uf4Y+0J7zEQb7Qs^uh+kFPBjzs zf$UmfM_kbHrs?k7cOBqj_Lva6+ytI@pX(*cm+)Ve)(ekD^*h*hud$1{@xfOtqkrp< zJU?sC@47IS`9a0BX4ch&saw!x*@SkgmyQ}dq^RUFrIDK5Y$B!4y)cg|qJ|*7{AQa< zwR9lZo@RM+O_LNd>f=b2($-C3> zCE|@|icyUxn{TDBa_+JCLZ07`fllQQc&})epO?SrQ!2@UI-`$1dQh#}*Pea5WYf0l za0=$Ce_J#cu_cNR3jKlYx+p7H16y)E?#%s*o5S)ql%Arej9csyrev2?Z+mEspT{{o zoZj96UuUxfjd`umE>53R3gA)Y-RJdw>|ZV<8mzn76BzqGZ-GIjy!s> zW4Rf(v5r_6dlF$+=HAm=+N6`^q(U`9=LWPGV%tFd`SdF+8Cv&yhn~ajD5raD70@Sz zu3f99Zz<|`tAz8tpM5$NuQkc;egdHj}nf#E7VIsBaXtUJn2T0q|0a&7IxzF7>oH^oN% zrX<#PzP4uS#K10%!_V3s>5`IAzh<;`4-iTAmfVbuQQ=l|;5)8fx>wN0w$6}3R=jmr z<&6;73Dk=0(|lb`2rponAi)>=wy81CFeU7USZT_Sq)z|d0GFK-dj$NiPkemT(0aBY z2y2B?O^D_rXA9e|=PgW(>y8uwPYFl7dsECk_#XDHe{fgT{P>^kWjA-j_oixbCsmrn zQ>P=snORc89e&lO#NwK=Gmn?UzpDHyM2_Bi(U{6~E1$5x)!)~m>FhtHb8$;4en{B9 z0O5+zx6vTo`36h;$Ti{r$Jv7oXv&qL%++#QUoJ5{PwK=d)=!9Y=*PQ5>=73;DKdS-Om$RJ!o&J=6h%*e zJJO^+k^4?$U6G*cSOcJA;%z3Fu~=u}zSe#+>}F?5^N*Grm6~{GcD)XK!&UiQtUFE_-Obrqz3Uj*o8B$8pkdUdW=RJHvTA0RHPNb> zAT1nERx9b8lJz`8@)JWO?U>5?cZ|{J)}tKqkeD70^GvT9!>y{I8u@_EVIT~rop~=x zJ@k~nDWN|8kyYT71Xj6-t~1lf$0886hQ8;cZcKSBJnt8ByY6K#Q?K{K$_9*g_8#}n zj>I%Oo^OYvaHYbhKF__HN~9`4qd6CFGH(tR?aNUZ2aIRM0>n=jE=L zuG|S{vh2Xrh1|o>?K4k>!+AG-N;5C~#BAO0OQS&S_VZrBpF2J2z%3(MZM>B2ZUbr? z7Fe_5ht2Z(eQ64h+33aYoMBsRLD^~Vl#x#qd|MrYGJ$h*yyhOqe%PjKPxA@u&$J@%A ztxr5yX~m`1tVHt~slQ$@gmrVUFsI%M<0@JrE>!2s>eIXW>j*O|D1Lv|5UC9mcJA4sp2hPjxeuD9Yh&R^*O-h6!t#u^a_Y8P8%tS z{Wd&37er_bn~R>4#jS2-%I;*OW(V;LJ+>w^8JIzfJGygdQS8B((>{Ey1q8ti`^4EFp?N>1o83( zXhnzx(AmgMrk9~aeF7*=lNsvbExtn*XCHB#u&(x6N&R&~El*GlAilUPXl=Eyq2-jE z+?BPb)Ku9oluLUatgcyd{G5X#j*-1BZ8Bcjx9oZJwDQ+3j%|eKN~(73IlG>%+9DYqGWHeu+(Kg80PVTc!s)BHi+Ota7uTnLAEaGCc2@87 z&6oB5lKq;0VZ8antG^TLj@HbH1DRpr(94{B_%Ah++pY9G~IA;T|D)NnG*+y#=9 z-ESMj^$*m0%!Be|+j0OA1~@30ZwC-wZ9Sqx5}QYy5y-a6s{$XemP3e}6;@7c$8nhF zr$46-cI{*%S?%{6P2`Bi5E&s?f$WadZNH54+#>bCp7uHMt>Am(Pd-Z7nsGS6b=Wc8 z^N(Ogwa=~PF5{`%N_a)pjSQ3fLrx*PZV zdwtUVJ7EvMP3LOts@3~v)kqd88q|BVHC#rHrFqwplrTJA>_CUV;b-s%buvj2;g@TJ zeDc}z8a8et3JH*!+{-hybq90m-@WD9=F-2t-8NCDzu?UY9iQXMmgDGx)p!K1ZO|C$me9WLAL#|cmzV1TC zITvVO(2eIg;A*9O5d8FNVb}A=SmI*qLlgX^nN$6c@RI}tw-iQDKHwD)a5%pmq+Jq^ z05W~AQ&V5?mzbz#oDD(kLwb(f+qcYWG1BAy6(5RMc(s>Rc*&SAp_yav;eCw>B}Fkz z1dP&?Ic`s`LCjxMcTo2rTym9n1yq=RP*mSkiAYX+^^9&(zTd${6!C_Fs{Cg^NA&tH zn_co4U+*K^`tUrHGYFr0SgbDzhOYJUW`pKdymfaS>j+ z+D`a$G@N+15a`P7r_?#L4|yryyINwah6>DiJSo~XE%lzt=lpcSwH!qYO0d~Z*if!_ zvrqoS(NwwK?d>;Az%exeWAWagf9`W|*kM9f8{4)sLripD2j!L~dU9 zLX5YiTwud!yX@H7MS9^Trv*4pK8du<1Zhwx!$Ie1V(ooJc0K3m6ji{+7aUnfd~>ya z=@LUj)Er5?*FR33W}5LS>0H~9D~M*G_q^{5Sq7eS#Q ztWdGMvz!j9TSTm227ro4NY(A@f818r(K%?g-BC#Rj`EjOg4R3&#U18BUfWkZfeOl0 z%L{LwR%MU*6E-T)hPCmtFg{pTD6z8aG6JFTL_DBuja$kRw`e8I@Z)F;tv`%vkrTl! z`Yn3F5vU0_BfI;&s1Ryq;sWk=&W~;=HnCcgyW4m3&Hcx)U^USJHvW-dZcQ{IBk$j;u-#sWVho~27cy7og7+|5>my>fOww3yuL1LRC>TNhIm}c``f&YaXJK>8z#q~3kzotJoTmC~7#j3V zy?SN3>2IKN7%vTCp-jhpQo6$ zc620BMxafw#+?=OBeMK;`v>CcMT|bI0Wg8@|RFUD5cbVWMtk(%F^5BZS#02j@6?ZcpzV07)36W=hDO*?6R99e zFO}+DL0l8~2Na9-daVuT={8jA$If$kxUNRlcx3imMdI_e+Wb%vm4r^jq=f+@aD4Qv zo!#fkv=FHHB7CLCYQ`bAH$WL%zV7YMJv??6Ma(&vA`_$ybb%04+Rx`~HMsf;1(ZVm z9Lm(ZESP6)Y4|C=4>dl@Y=134Ytg`pW}7o67Y?kHOTbYyCA4w5vJwznAL1Wm-p>46 zH}m;fZpB^H&#rRYE=E7!(u!!CU;sTJTeCbrB{3>k2kse6gF1s#<$r{( ze=W*(!^`R&i8BeJW#gktAs?>UibJdKoW)gaxQa^cR4b|NPxklg^EQXxD4{+W)49m* zCTg940k`i`QA`Unh2*m!;qMscxWCejewrJ)fL~?SpFLw`hpAVvN&%~aW`FL5;MxBO zcZQ@+;puOxt_olr>RPI=aRt!=JB6KYvhCJp;0i9qbRK(w>nzSJTQH%zFFjK zZNexb#@rmpQ@j{~$jY{74$Z5XrO8V*1&ojLAwM^JVJA#?lxxKY#2<;)f`-I<1hGvv zbuAG(q^j+f%bmt28CB7lMi8%;b~)%0)EJ90rdMwI?rTQ-n}4M!7rTeP)^Rp8ta~3s zKFcme-q4Yj!x)_qA+4Q5_^m_eXJI@ugKJvEWQ-pHm$xnEzzmcg!2ac)C3Yr3ya@to zr?CA4GZqFDs&R`YPeUP16_Un}(b<$WEr@HLTvurQN!;A(?bx8(*orNwoNcb^J?#9C z?+du+dxY9MiI07H4_p8W99j2Lv?EK)93}PN&Y$^62yphnJFV5$g=|cnzn58B%{yjL(1-}3x=r}<~zI`3{=K$l{nNdoxp9z zx!Ss{RsSnS)Sl$&Z%{+m4Ml1Hgvn{I5Ve(Sf6=v~E5c68D4zdJ(0FYSif0#Sw0j`j6o>mO{)DBSC1n)SHm(@- zSUaX+3-Bn{DPIYl_H2Ez#JD$}#6|##lf%_?G|Rk1r5<%L3NBmNd|^o-oeaV9e7{R` z9dk5}B7B|a)%qtiUN|)Oo=KKAM>t7P_ak<%=GYr}N|)h`D{xKv^&&?>)u9O7s(6C; zcFWyPV<{jmVxB?Dlj<>_d-7w}e;e{PP?JyK@T2j*J3_Lkk#WDuhT!%f!Jx9)@hwoO ziNJ~#88OE86n;*PSU-vkrgk^8$&X_SojhmZn)p4d_fr)H!eixbXzkyT3GJ}(v}8%` zgAy2g(0cAID3P+p3q-;EwydcOIa*Ln)}B(|{pk%F`M#*eHffSYA-U`B??f z?DxRQ8RjF@YoC_5x3lwhPDiW}(2T^vG8+8Iev|sm{jRN^qv_*NPBTrb^S>oJcl}$d+{cN3aO@4Y6^)-i}7$Vaj zXnjI?^YV+buie^jWG2piiu2QxdIZb6v%)A4X^cA~Y*{Vs*Y0we<|?jMFCiEem=~{m zUf20gEL626VIRH;y?d{g^CqD{4+e*bdhHM5em3Nfs)3HV4uN_E)z>W&96th}#c9F0 zLeBli9hwblV_IsLt@nG69~qz4AsFuES}FHWq!06&JB+o?E;9iaQtOnN34vmPPYEL#dF88F8H*>(5!qezuv#0+HYWM$DT~8-tK&^*OS~FmvPBIaLnb~ zCOG*%OIlcskwbx;R=g1Ez^OCf!RWWE&W=PL^y`((m!`uB|Qqtvh!vw2kc< zExtSJdK4BVv&n1Vu^d$2+Lgv{6audoLxXu@ncbcnc%m-9!6gfCzL zpE1Z)P<3Im;KuL0KY2(>@q9i(!x3WiEwz=|kYl#m{3sSg0001zuS+Ywe`yrr9}Qr6 z%L#g@mk>EnEa#OF86dDl!jDb+RO?S_(~-14dFisJKDPf+oL`!}xabzHa5GDH+5he3 zh@aQFG27~W-S5`S*Sid;IN9Wi8LDf`Y12kd)SUrUYO)+-TtiU#v_dDEnr~R48`g0D zg<^M-{uvvacks5kP=C9cvtRTRej8qaBCf``QL-Dwct$r(GcU!o@e#Ic7`+1LM90s{(5E!tyzR=vnB^_3^l6QQUp z2!cEiyn&s#5F;3=E?M|kZ2TclB6W>pxGSPDidmDq} zu$_CRFMKxVZlL^6EyA-&oX1P$P@(k$G8(`>P1{2tdSYPh@%h0f!@AH1c`uPCEf`b< z&>Gq=gvY$9`%T?ahe1r*6DDZ4Gs@{@2`BYfZWB{`_Cg!0$s3 z?MJN^9+JgX*va0+W;z?+D&Qlx3XeHe(y#4jFo0vS$;@=oo?nDBn!dK>2Jl-qf(#|5 zEC<&pjesa+VGT@L2cJpy&nMkpn!G?uki-kD=VqmeqTPS(O9vt5n-19B%!4g;@8^HQ z9vx5s%VuN&5AIgJps#%RDPy<82Djf=?F9;kU{p~!@88{hLSvMB$BuL>POo=Y2d6c! z0=C6NSf4rT*=C?$D*nll$qHXFCRr1_MAww|N_D2nIs~l?2&m4;W(oP^IrpPpEZa_npw`%PCV;+JPttPfWtraqT^4JPL{{o=31)yt9TATEmgtSXpR$NppDE#ibixAz+ zlR!@za6;?L!$qYt-t56aqjw+GgiJsZ!AN#ma%2z$SkHOX2j90-_1kXR1b2I1=gbPUY||u?F1!M zUC>V*(Mg8Z@q5Y91z_=U;oMM>jy9m1vvyoLy3EWm$h9C?dC=27FzhCbHw_LAEAD?p zpIDcC%||)gHF|n3VpXMQ8aC9Fos~X<)P=+-Mr^Kyl~1L?-MH$w*uOaHkZXF%^Y zIS;Qt65tbduffMt50^n48Af#I#6)f_5q16h#FI*?X|`^;w=y!)JbWJ5OX`rTVTCm!s8|5;uF2l{+tQ2@+57-@=Fuqcvz;3-6<0ha7idHBce zaJu_|R5dWC3>aRZJF38L^hbVGlT&jxORcC<4OY(+#vECxh000qm#wXM&m!~QSlf+w z8beP*ce^~X@GR#q`%akyTwi$?#w8*sYrDKKZ;yzP#dkngW7)HMn?DPW5!%+?k9vb_ z6MDH^zew+xMp*sA8*a+*3vZ90tR3RQ_r@LnHJ7=b2O*%;gQ9S0>a+vx^p%&KStPmr8d06@`IHU47}Z%npca(wYEWAnR;bNVAv3Ik&wOP7xv=7^U+ zzNd`BSJOKzP^9YsvbNFTPV(lq>L{7(?|CI2?*F~B(!K6&^|mB`v0NH1nHFcHtmc#f zCR?}H)6=5NB0sEtQ966V!KCg2(<9Sa`Sq#ob#Of^la9pnX~#adt5PO->k@3{G@50C z^3z6Oh-7R5Y<|j8`13Yl*(d_M@AnRNnvB}5yBJ{6!CM#R<$%Y4L4~b#^uC6xn>;6> zjHdo?}nm^npE2VLLrZJwRck$pB2 zW}eYdab6$Rv@V(WCvGQLEcht1L^5fGg|Z&`mnv2uTFVPr&{Nq_xxbLSOS z4EPpu!XEk^ZKy>mC-cHO;z1R#m1qF`n&`X zu!R-f3)+`hMp{DyWPN=87FZ}wNOimec>3Bv-|bD-Jz(8ZdxHg^U!$c0S*#V)5VZ)q zNgs_~HsY7;p6wVSKB$}tGU#T;4+jCmycJf$KFDovQ=odSX%y5b6=vzYJtBbziYBFN z6jW2xJX3aNKVa=Mh!jh&^@%oX-wph6MJshnmh8B#)s#R zfC3!Z$s*O%OcKEOeJ# z7Sc@P|B6xQ_v_B<6Va{y zow&xCZis_=V!jaUl#(ShqC+u2qvn@>b(Kz=(LWop`BnxSz;eYLUveUs9m!-fWFt5d zCY<}exz>h6l?RdCCCU3q0`bdNtd0}Br=>)|q@Ya?`A;f|AUw@?8T;U<`ZGsHKZ6Dr_O4e&8Es$8)>bu_jGMbYoowMGA7HXS?0>`#Ulxr^4pc~J8QG5TF5-Ui z0amWx1F5C4xN55%tEsyNmCVwP;{uc-glQk#Z2YHKdV(!9nCrMsXbGp%RFj=CGUjfQ zKjeA5BL5b_(2_cLD$+jkaAzRpI}f@37pYnr95j((2C{Ux5cX~pXy;J}tnoO+A^GUA z_?UH8)%Z=$p^(8IHUuYZ3bAPs)Od}gGUkQuG|;8xsq6F)eK|Cl8%?_JIGHq{<^=5O!hv1gN<6DG zR;1G>+H?Go0b%9$UnqZ(-hgz5*>_`PZvYKI3%HaSl~n|K`ooO&|0rAvs3CF2SdYR6 z(<)?g?2w)mhOL|vRJ(_D^;dc-)@_DIT>)Bs4_zKaBwuvgJR^95Lf-4a*)zQe$PgnE zYWQy7k?*SKkq?vSK4{C2Pv6TN`U;*paz~I`?9n0D`#_P2=a8V_pra@6WIeY3q~MLE zdbx}82qDVxXVQTO`1g`TNPRdHXGl)h@&@U=r9 zna<;$X&kh79X|AmcnxP8b?s;@E8wdvGUb&rGI~gu36x37$KE{}D@u{WuRcAv#H}<} zoTLj%@kQG!z>wwK9}&X~OTfx--Fy>#kt;~TDtF-Y(Rf$sG*JJ{#zabM*~&!yhhD%R z#V&gQVJ?II$o}i~*%qfHsHm4MY&s+U@NaGmc3Ob60|-U{)y3x2yUD;?&(<4ABuHb> z^{BDyl4z|dGUl+o2A~N!chIuVbf{2>6^O&e5?$#)xqplk7n(d(9s^a*>nE8yh6_aX zI=`Q*e7}0@*#os*N8?fc3bdDdI>5W84ZahD?%6u01C=SK%z2J)a5R>qZ3p?M6$;Jq z)Q0lm?yct;cC%1W09+F7>sBgz6^$dp0ArtnoAZ>4?*NdNF?59Ix@RYet?e-(zH~}S zQb6xIiEU6}{xIC&FfTvgzw`FsRQ2eg;c5xA#m3rf%2wJMsYOTOik#C%QTLe=y#ZXB z`L&kA({3KfjSQ^%Rzwl?jVj04?Chv#Re2+m7BrnlPyS zx0BD#1HQYE7w-F{80p;{7@LiY2@`24jXu<76EK;3pcp#z;{HOxpY`^eX*U94?If^v zuiaWapocfDw#e?CIdtUyEKmF&NzB1N|M#c;?}+;M7l#fB9w5;HNyLAC{-3E#{+HL> z|37Z6DRWor#O2p#@BOboQvM3P`hS0ScDeSy-yXcB|GtO6qvgNv;lJ-}fR;F}9_fhd%`=6^OR2#5IPiZw*AL^Uc6s30E?BN>&C=8#C2qLnU28GPpYKsRX#l3<%TFs2#aAH{ z3?zrsnxP-|*|CJ|p#OX^M)km60GP~9l?4F0Y(c9qH=SU^ZO0ilk7}Z)F6;__MNgdJ z78ttH`(Qse+2nJ8Mm_<3lKHFEV+BSJO|(VNCXcQO)-D5gQ%0^N6o z2&ye2H4!+y(CX_U-T#NZH;rm4&Dw^m+HUQq6{&VYnPRCWDk>rZGK6SZC6*$n2q*|x zgh81iG6YCSv}{2{h>A=yq!a-eV`LIS5-oivxUtMB2d5?t$;{;PrIOsM6OxplX#NdP}D!>bBv#x1bn9=Id9_ zzQLLmchzf(6Jb2dc-xAU*d$`LI>sw_Yw)H-{;BTc4uko99K|P(ZUJ|!9 z!Ct}Xdw*&c*icvBtx;u!!hAAvsiZArnDW4}K^IU@zz-~A`)_;mmX#hq*!xt$JcFVe z$}Zd{JNXGJeajZe1q+zHsfsR5O+|kF(#j@YL3!Dd0cDA0gEDLR+hcZK0#ecbvKaLATCXxftzW?x$cv8|Fxq3RO>myz9PhZArJpdih&r z&)n+5p1sQUhro?yK(7Y{h~2c6*>4>yq{(xVq=#o@9WGs9Iyo z{8m$|4g*e;u$*$Wdh|YjD;DQ3Y|-td(${Ioc~8``T@CX=nFyTYLi;Z()Njm0WHCqb zh;Xg6V5g>VyJ_&TC&G?4tSL0fISQw_pZ9$acnV%n@jtgvbk)rJ!Y%n=hb-a#fn=kcL^+# zamk}Gy8{f9fl^q0dMo%kAujd)yt6F_glb;~1MP~fbsMZ}Tk}JaQ~NS(v9R<>#xrNj z{<34=0Ggh%In8V9rxn8bg`wn9)2Ht7*BTfWn$E+Q$+?${p606@FOL&yP>Lk<+6Nw^ zO3u>Dt>5$qj88u1lv3@7;}3qKYtcW3t>&QiX4iKeQeWKbaxvE{ukl;2@vNv@__e7= zxX=`@$64Fyg~kiIL!F1-1Z^5q=GHd-mxE09NPF*6i?ti}7o-Q5^luY|DcWMTKYQ{W zr9|y_w(col4SA`i3TQtahhN!anu1Hom#AU8kJ0ZPu-rmHssV$iQo2-zLaJv@PTB9c zwB7&AuK()u<=oRz`Dq#hou+qVyqfAfe(8VgeHQAg7Th~GU+ftqz}wtyKg@ptS4C>A zv)i@yQtD)9%#^`CrKUHl;po}!4wfdzaL?)fFSZGOv0@p01?jHytDiLZqmhXk$}Sc4 zareb;_8S?ehK>?WmMH1oXO)7e@n<(i?aMA2pYaw`b^Po1B%wBvaC+tcHCy`Q!1?Lb z-~Q|M-)#qy5o6#0BxgppTurdn8FHr$s<354XzZNzP{gUGEn}JQ5?kusmMNc7sitNqiAik5JN?7sV}tfJ$BXc!(oc^ZbJLzenhU9~zPGnp7arvI?)t z?7yVp9%<<9_|CoGvBQ#qYtVtXrXAK;WND07&JDj!gKK_Z?X(Xn13#jAjCTDeG+5|= zSioqwc)UC)ZOwiWXn5uy&&iTIq~rIUBzCaZ)7GKnjh|ej#)nqPfYFr4U3#&RxvK#D zX!5LR&;)iod72aEkH4|AbDtT3UU+|EuOM>zD0sIoFZ6Qm_q+#n_4cuRXEdNDkD%UQ zDbvoy!F$z|+u8d}4k6U=S=vpfWOrKK&f>~G(_~;tTrH-#X;MAh?Vp>0UdUv-xk%XoHTn4Npo}RaM;E*^Bs6QNqA;;q-N-c%(B1Yga_#TJud) z%5oho1yS*1nrOcAV*J&|?aRZ#_d4;=*@RNKvSD@|k*CA^#i@LBtG^I(bL3$47Q*&7 z!I*2vZQ#@#wsoR)kx6lYl#aSQg|sfxB$1v9oG`si1Ee0NX|n`Y(e|P+ALu%B)sW?YivIrByD<bGT$+erTX0qIpZq<$s-gQDF17V8uiV z&BU~!&95ilF@_$SA1~cLmbV84AE!&YO(;p_Lp!`K znk=;E?NtAK+^Qg~J<|^kcI9zPUeTO)b+l1UN_ucb+JYPOXWHGC zyFcCXy^4s9Y`i#X7jG&r9``9$*O-uDKsz6wt#SAP#9un^kB({+WqG_` z(ph^`7Tc1HIF0!`z z4|*d_9D_7NiTwMN{D-#EU-A&uF73lukpG_uBYiH6H zvpa6wlLD_Az=85Dly{EMcG@Mpg1Tuc6~tB5Oz|% zGY`&^Gs(zZBBN4?g$}fwNSvQAr9c2nG zm~)0$z0WYcy+s7R((fqc^?$kj+Jbzj($s!ijwNr)`iIwD8b0Wpywhz!?rVv-5-^zM zfh%l~4Deg4E*M9TAePPs$KFgBkb7fb=9ZkTu>N#`gmihVeqvssR@CwDh`iY^p5LWCE55;GAxNL> z4cw(ss?>kRy7Q^j1vRlniWRo^ak?)KJuX=cwBX=BcmQ9Q3^d=CLMNtt!RB}%{HR7Z zVak!CR7+~st-0XjeWw}lWb5((P**rD63_e}6FulL_*k^TJm z;3!IwP6-u!M?LiW5iLGD?VQdkjw`f*sJ=;$*#tT!J5X#ZR9s3^eB&aHXsn&bcO3=N ze{7i71(n*GJ^NXzIcmXHULSUr6nSW!x~Zvl9-KlN1b*VR6LgpS48A64R{M4ry1;Q{ zp9x=k0w+p7M6VxpMup|8u(yY037oixyK|2{9e8v(<9N6F?RMk=qitY+T;=e9Ix7ov#g7@3Z{NcD}L^rJ&W5V5}aC$@y-XohtS;G^BE> zpg?W;@+e^*WAN2izxJ*Gi*<{?d-q4cKWKkfPFaBEoyFgY;KbkOcpZH;^RdWrpmYOR zR9pOQvuxH@kF>v{K(KhV`1?Oz^kq91DbpOh`{;WQ_m9tc`BU)u+gnPHWMq7No6C3g z*Khf0$EkpT56fT4d$e@vPj_#gKKt<{Hky=P1((?5_W#ln!Y5I&NPa)D@a^fmQfy^K zT@SpScB+f*lR(*FG;?cFFwI#XU%ECd3CQqR=O=ulGLKXKFuczlVo^>GvELewzctk? zj!+*}b!4XElXxlc|CZYX4e3eBzHF>_U@3YFCLPfp00vo|f0N=yl~s3}gpRuP`$ z|MydJM@Z(k`VMyzllwLOesfTDY{2#jNZw7GW+WnKgd{uJXBwft1FhW52k!GUO?sYj zNq}IE@;7jmD}tStdyd>a{iq|@YX!%YlXFwlHWS~e&UQh^$bJR)xVf%8h9hzY6-|Ke5loC{0%#3Qrf~% zRj2hv%Z3aT?Sz4V;yGF8*piArSV*ut0v zk#O0!jpIgD9R)v(H;i8v=%>z*nw%GyM}60AxE{gomS45VAoy3n)EF@3!-WIfPpJ69}sVN zUphjX&4Xn=%Wn?yo61+X#d{_fRac8JXib7xFVCP0v3$rW1&&H2q z4B2`lHq>3I=qHuHAH?NjHvFbl@?VdfT5@g6Pd}DbbU@K&5L~`tHL>n?&|hq~!WmSyuwTQt=MqMXLA zc`{bjVB9==G!Gkv;8$>bo=%JBPb)}FOSG9sL64WmveDCUWOtjN%5ErnxH~swxVth# zIUA_*vfD+Mso0D*Kl;cV^df|kbp>mI_2J(Nu+HDz|D@r8Le@u?WK%E`&5&iB zZrTF)r9il{s_lxM)jyT^BbGR%XpV7x6@Y)5}pRP)`U8Q_w zLDWDcyr!U3*qIB%&eOs`M9|J?><%9rV_k?a(o>RRK`d8ChC8QnUyY!4wzcg5n&0RA z%~Jt`X-&(4lfQd`43xb4R&TC3nzL{oR~T2mySwEFRs3pPlrybapW@-ChD!=lXwp_R zp(j{&TmO(px7FcEOvyr3=L!yaXah-@uzv#O@UoS$`H3l05Em82>S$L<3V)NeoTCYJ z9MGKMvBzS!6r58p!TQerxAAA{EpBwt8zZZf(7VvoIC>AQe*L01{MGRH`>=vz@*%}6)EE?#Vg!W)7!Y3_%Anc_5 zHqymSliAkBGF+8B+0O}r`BTbB^O+fy$TE=QFs7IZFJT>(M3U*?DZ?$yRqxcDfx zSavm4c7$~?HKJZnGo{<*IPLn_3w#9$W_RCuaJE*;%4;h*)=_rlna<9%0wmMLjYFU` z%Y@kpMe16IrC83QE_-eN=pM?3n`IqnKF``X{Q0{jeg(}kPe*)7Ed`63CWL>GBWH|pqQ?FxsDQiGpB-Mgv? zu-=2NcOIwMX?@SLl>%IVc_0vKn9yV)#az51LR}fLbKfD;K+Bl}5uH&xd#S^h3ULn} zoNh*no&E|Za_@*UkQYB9v%@aGA9Q;Xz~~9Hc1HRbeS?_$7q@u>#iDQm)ku41mF2l4 zm>Gl)0-q@(O7OfU9*Hl)xP5WKv^Z2}Ke`^O2S@o;g*_${X|GQd zkC1>n!#W-leh8KFgRS0U`};krdoknv#%e-%gD7)pMble};ftVQdi_PF#l|Z0yMbv@ zl=-oshsqv;>F!r;1w=*I>1kui5Uv=!P$G7-Xf`Js)ud9Q95Rp5;Ct;b_~UF+^a{?} z44Rz}RoK5o9EP*D6XHAy$}!mNCsCJo1X5fzx*G!YDY=elpx+?UW7;<~9V$Q3G~3!%c4+3bQy(E+pHhz3!%RGn700x($tJ}s z>9qNx4#8;z@9p|9uwp8E=WRWSfvhtakXSiqTJ!wTjZ3aY@!_k8}4^ z$Uv~Fsk=>>mn>!!GI$yrDB5EeEysl)Y&_2@hx&TbX1s~B{3w3#Ee`0V6a#4@ly@`o z#|ed9_>>&Yv(_6O8S+RHP{<(&=1I95cm#HuGY`s%P;=D9RM&?Dq`YeQw{y~Mvw_GER8KwcVLY) zV`S7QR$Ys&`X>+DDC?GAN2#4>$q!N`FGw0sf$l#rVm2PPgepDO&h;K5;TEPfrt|D= z!Jme9i4WbNZ%MZC*m2702tGyQwzaUokd27_l9)!X%DD&^d zRRR{mMSXade6qLWQ<3~w9`DJX{^v~wal$}`@3|q7t4hYGR4(-h#kz)A)+{q)i}AEK zO6QhjC4DO%83xY7)LV8JNPX!3X(YMLGZAuj+SK4Uw!G#SJN4sX(j0L)LCSUiHb6c~kS#}{vZj4DpY@mpL{&z&1_%J|jELg#5 zrqAqZMml_Q_9tpqa0>HBQ1T6w0C{)PCsFau%n?+L1zH!@T)%=dzvthFf9TC#G%h9) z7zvVRj@UsyiLC$J%%3Oor<(oeJEPEAK{;NiYTX~tu^yGHIDIGLcQ_AYw^A?~$ajv! zO`rvFp=oA1HT8qa1I?uh+7%!b8C%YSK2S__pT(;L+V>@p1XQ+k;Iwm1fcV(O9Na$?bVJ&qCr_;`=?C* z|DsYHI!9GM$^=wcnupNtpESVEjSmjOL95iTqbnZ{#+nFW1~?A3QM#}dFZ+u`liOrA z@6b1S`cpLVS_()>n!`>YTv|=FY%tT_?C)hm>C}H>V>#*VB6kBGPX==}Xo7%PWCtBk zzXz|snn6$(g7?4B^^0r2h~QvkC8Etpwjj{Lt?&oRR+Jip9;eXKmsDA~Oa87Pu&g1P zg)B{He4 z67Z!*J^-J9&kV%Iwc8g_PkHDUYlGkhgghCa8;;YD7V%EyQ!sN6obpPu&=n@nw{awt&fl(1T#CF|u7V{%``^RPwTL0Lw z2=;b(fv|M9x#I^|b??|`&+M4-4(=q*+@^m(aNANqjQ;PvGe9s8i?IhoJQOqL$eh*3 z^zyb_fB09rd8NKLKR~))_k*bYGm!|oKY+~>>%n+)$Eig;=RN?MX=GkRiWlSKsHTt8Fg>m%+ym1kqW7KI>hZ&P>^I*;yzqU-}9gL)`L?hO&L zR@mH6GVzm{4Fy^NZc9ndKzpWTO@G@v#;(|CyD3g)n2r_ z%+kIlpOT_6qP0boEQITwF%(;(PT24PZeF|KPX9qwnt=p!UVWnqIyQ6kWu zZTlKE7hc1=(~wR1F5zsQH*RY&(7TaULR>ZhFH%?P{O2_`P|}-`WMZ!0XkBu4EE3q< z=rOcmjKO0)wTL)dG!)o~Q-rU4n*oqRe4SvndSVl9h!Msq)i3!^sL>gto!1~MnoC0%hsoQy+wVr4+7amIYo{A%CxhS z7&Q{h*W{!PP09I}KWb~k=h|Awone`OBg@jK$Xe0NJN?JZQ7En?rrt=vx->DC&ooFW z1$xc+PtZR*EFSVQo1%Ey`H!WLZC`HI&IXM%UhBhv%bg9|6DAITE4B0vD6Z>xbhpe2 zpbo2>JU+_*)UnUba08{@PwsQ}MyXdL!9prb&VCk#;G-_t7DMurRrw`Oze~dNi@QSp zTQgFYV2mqG&&RJVkjMQ`t4Bh#`P!>#ovw%Gz(iiBk4XgdKMQ09r$LvKJQPO4k+gAdGQxvDz3?#;_iOK$mvz^A3aX%^>CLY6h=o(5n2)u|qr1K^ zDD1l1dU)PI)R-R%`adw)nwoO70(`mojKG3om2A8qX_L$vr}zxpE;r$Re4%6M8&`wIyx*A4Zi99vC1}HGi#>t5OFwS-wPL1zJ7oi zP|>9JO@loH%Gn;;b-C{SsLXMj2W_x->~)*s9ZU1m z!YEV|XGjKq$a|&<)xHbWa^5T*cj!we4qMC!EZX&di(L!9wQ<^_6Z*HOlkksjdwD zfBU7&?|?mq{Vou+`X(1tGFk<3&Hdn8yuJ^#FA6;f|>YtZirlIiD2EYWcX_JMy z8;Ne`CmShJFtxhAEw}giXF^Bi-fA6>-_H z$Rzk^=5(YF)?tUBDPU6!hXe~W_PWt(&0|8=elUo2M}p6Pb`IVKcR@oJoR*fGfOU+O z`#3l?l)Z23n^E>>e^-w_0XzC@y?jqQ96!?B4|9g-?$N8FmCrU3G#b zde6lYJ!tiMco-;H$%CwxoJ8^a$f8Ts&5fLMH^n&Exp|w^!WT67EU{H_J)maQv7jKh zg6(adP^T_h^T9-Uff>lpG_*?Rr$j(d+SDvN>`QNLM)_4p6UNNr6+0;{hoyWxz+ z^Xvzlx9!;%=SQ;I0{XU+lN%^rxX1<9Xwh&(k>OAFKiTww+cjD4#QZE-+f|X!HE(D*P08#7_c@`#yAanaFmw}sjq?bwj`0VM-fjQOq>BL7{`MAq%S&91W^;C zqlwNGWqr+n9muXyQ}%Ia8Ei}A)yU(m{DC4%^~>{Du(10jWrWjl2|-{fjpE#?mqzPa zf?6$$^zE{L!^OB`T_7wF;D)FS8Wnc#^G0!#v3b5@3G;Fq{NL zHIX7)`mUTU=Migl%i7ts^|YC~ z?h)nNP`*Hnj!Kj7GJ$`-gmRiWR9#pj3ko#q09= zTHc#(`unOTA^x$3*bEkNkmll@WG%^{PS~t2nf66^rj5y}e5~ec**zm2*9ZEUT$`{O zaaGQKJUTqZ9&JX;S%w6u7shVtuzpR8zIZyr!aM;L_=E6Gf29&m;qGs0qe8OMXzzDP zh6X1m$xYwr5~5-0gr1{$uqK3na|aB_fI=>6ffBP&(Bjv{V(=*b4%Zx%&sIy+GHpzD zKI99rwJtIy6hW&z^m9R#f7SY1(fAo3pD@wDSnXyj8MM!VS#vm3Wv*C`hX%4cZaoGgsjUUMBMa(^eFb=K(0$xR%~-1P>EKc64Yg$w zAbk_f6}XxYp*3!eHQz+)3SO-sCpdVi-kzJ#wcbHBTNVgc|8`1@+2vrTr^`uKA&Z%i z^K^g0tmLF8n7gS8Q>Ovm7#RZ~-Hf^4J28dgSSN@0Vu8$7c}5ETS)m0a zH^ET(6CdEF9#NhOX(~4&lG?6jovpkR5WPPqeuv~0cwNS^?wJMB)a3o8juU* z!bhx}vIFiPOMB{82|!YaND0g{YU-HeTQcW)9lFWtj0ZwIvCJ;1=LN_ZnR-#PNsJae zwyzVGn2ICI+?KWWMk*$9`ZWcL=(a&THL-{WNgLpzs2fvo{4z~mE?hC7(6i_hFStwM zp`>$p$;s0acF(-yhRV$^NO(N{d|oa04%=}XEn^;JzT}zG4>8wT;1H*?w;aSdaHPes-z0S41rA$a)uRjnJT_apLlzOvI>_dh?F)sSp*C#KA zR>Y&A>dAK$pyqWpp+kcWrHI1o3Ul=3L8R z9UieJ@$K|RhT+@zR9f^Bn4YPaNVVFUDuMnjhA~%`gWvO}&#(ZCVpICSl2o2s zK{cijjyu@+AR;Pq_T|(;|D{Z*?=(hl#lk{gkq`Y*+Z9w0_vEwXWZYj7!S-}$T739$ z%xD4&9frImOYrds@JXt=iaA4tMK`af)df+SJ3lmE?qa!V zau`EXaXZ9(s&2@FvDUo2-}bq(2|>B)TPtH|$pN~LZKDilvSZdq?MclT3|fb`v4KS5oN0436SypFwK;oXVYD_8P}32I zhInT+o=3&;`E)q^rRD&Bvnm%GdPlt>mD#AYpwL^?gEE~N#XkQ6j`U!CEXeSIQu?UN zcLlAiP>TA+pnc5`#OV`iE(A$ipejV^lB>=#7yH_<#f%!(`&e&Vl4v})G za;)o0i4$b5;lfHZuOi`J=Rn40$h*+>QF3Q>-mTiDJ;+Qy^$Tc(>)1<;g9Jih#uF;_ z=M)UO7r~nlc_z%>OvO&m;LRD+yc{QD@)fq?b2=DLz7OG|C=r-Ip)0HZ>i@`>kh-En z#jdU#BF$%tCN}(Ise0_1PrUl%Z-bsV)D?>Z`{v?=%P<^k!iQv2hskHUTYEeac!BHc z(vR{lJy%U%Z<#j|9*YY=@DT;-*qu^Cg-?NE@lpBB_9d9-=r{T&)#Yrbk#mymNOER&hRT*4^L@<-;R&xSi!iq zqNMdX++d9>=&nkcVv9TuzWC>r993E-a2rG3D?`4EXyl;kqEV}L!8c+2Oxu-#w|NJ7 zwk2#*a*h!{%#$NOkdJSDj-5YJ&gu@Qe(h47YdQJyR6`)%e1|xv)_Tvdj*Pgojh`<$ z8AuP#}^{Rv6U)LMAeLar&@i+QyvhhE5eS=v2>TLtL`TzbAq1X7!5 zJ&ws{Epw=8U(WN=ZW3-40=r_d^1+e8OBvPxbN z2Jl)+HU<^$KmnNA`6NglSKk7HO2#Gz9}_oA9qQELYr6KktIU73awOEzWyde1-Af(` z@5hb55}WrJQkm)%@4!v=y=K5q7#+z;1g|+`+QcyVm68QP5u> zuWAYE*BzIY{QP$C?(WsB|2A5GUdTxqH<8x20bj%D zRIk8aAv2QDj$zIVHLJtkB-yoHS3yC5enCs>zXzt&zc4m2PvSW5@U)>l@@M_n1Kw!= zhZs9j<6&||+sPV6V-o3j?9Q-~NieBb60hqDx*aWrOAv48R}uE!3%6H?bB&dyrBDNo ziuh|(rh6quy z^Ljt&xw<7Nu!NJ6k|f&)14z=wx`c}7=kEtuuAh{2d2*>l$F>yfORW=8;oV}a}TexKCE8FP(XoM8qf}|Jzyeu|s z85ZMFTg6HES5($Sg3GN;U}x*Xp>$%o!v!1}<>BP84|42PL{!nNzJT|vX_oE9dpTm7 zA#)ou=RAc?5PGTXqRUF$zQloCxW+YE#<`8b2Ja=nWu?DafM;6PjG2g>h1lRJE^ZzZ zaO{|jC+!XT#jGW2Y<9YI)@-h+sIIWSr^FDDpopg$sH8y}p!n{rX;2BANs4LdmK{ez z+BwpA=QdFRcJ7H`5GAT9c2uR zT7I>ZQqs(>p}n=zFQx%6@F_Q^k4UT91gWjZse6nf>AS1gv^G_R{RFhuJbLrBs5^;3 z*U4uYWduRaF$pavE)1cTs~;3h+uJS0k+C}_LST{G*R6!$#FBFVTIUd-29-{}FkbZ( zZ%&4XZjw6e(_5a(Exzna$LFP%4te1A5UhOSblz42Prx~?dmT681UF05%Yn|KprA21 zxX9^BbF>HG%DXUcL=;O)v!QVgnZdZqQxnJtNswSlwSgH%#e&50s{?&wnL>5E>8Y)-GlFq_PHq8!|Ujy+Df~pGgMDi*KU;vnNFDv$IXqr3!oK<_fgNdH#zy6HNF7kAvZ?@|{1w3Y!*DOGJJo z@$pk{-C45o@nZgiPbXl)XBSC-30?Z=*Q{H#x0oM-lozv>VRt{xgo{MlgnaU|Qk%?5 zjQboLY{3u?_~3~C%}6)Zy%B?iFzdO6n7rbq_%*^R6gS>b=iHqQleBP_UNv1-a3ZPf zGK_9mAdH3ZZ;6JaZ4^fwZQkZaWIeKrM+VbF3|MLZU<31cQ)`-LAq3fK zf)QjbXY~?Px*``qo!d@32^Mp;G&KuFh)9gol!#z#C4E$*3_+S`61JVv%zBut!aaDV zO~=4OBKtd2ib z>rq}%g&M5`du71$mcE~-I9^}maWsRK6)l+#q}Y9=?IFTH=OivxV}7Rr=6Zda4A+wV zKnmbTCZ25K59C3Rh4+ziMQ-@48u8~N7g>*(|K?ZzDcC>NXXgLjOA=r}kqwJw!Oebm zNMm5}5<-<-D~fg2;WQHz#@m=Pssl{avkNSY%$EQy!LejXiNNv4pYrcc)O74a!!Vj2 z5gj{Et zeaV+ZWw14%D(!|Z3Gk{tNPL+fp&;5IY?=S|G$%{6F7>Gn2V^-hz-4@V2@3|65E_8p z0kR=2J{aN8ImaMgP^BvI$pntZvDTdU(hYZ{l1-mh9fzfj`h)x*aQo$lE^|@OZn$Af zI`+hSSbRaJE4#`5>pqYzbFax6e#DpL_H1uhO7@C(z(vEk0n2tm9`TdDl&{9lWf{-JH; zc^g^mX^$M8dd9Q1I3)8_P1KL3o9u240eTUOSobhUGWbImNa%A(te_!MRG#xfNmadf z6%C|waIH-CjgWzp%6tfo!NjcRIv1p<@Len4nT#!`?_v`Es(pvTZ~ud3>f22%FG&@)1wmO zTcilIsRL=oQ}v4^-pR{WJ9ThjwrDW6RW{NlgHaFz z^*3JqBg#=H{`50nyEd@BKQN2~7FVzpV_ZSMmQR@FdKs3+UCDF=IOx4;>KTE8iFmF{ zHPG#K$x^>)#_BVteYFwP6~T@#H%Npg0ln{rCaW6OOXs}7$M8=xRf9x$kQ259GyjCV z*MLOAuqPIXU(b`I!#yJP;2pNf*yQ-P#svxUB+5EB# zhYPygDjugX(_3n9G>>m9DL*77;8VHNzEc1#LV-PN)Cbr`G^j1X=YQ3YIkn`ACZ{2U z91~+3-hJz#T?{{!j11637Rg?<_^GCwPrM&NkkP;5!AQEoE`@&_Co3P zmXq)7{FsH!b`wK0`H*I$nj*_U^tMgv;?b4rj922p_Vil3L``Tqtyyf(3^n_M3WKy0 ze15Q!&o#0O2id3PdLUPr$Y+|e>e71h&GM56K%tLjGU!!oB7A3fV>H4E8skugKM#F5 z!;*oYB|~70=d^9lODu?&iZF4kw*v#&jUk)DgY7eonIZ83Rxv>spUR=2!mzDERQ~vW zjh04IE6EwOLkt+D>%OABwW~FaI>YHF&GFB5*`J8>v8bmihMmFAN*S$dppAR2B)r~( z1eazg>LsYqV`6g_dN<8)+O8J3;7PdzCRW^sWqXM3cHYmk?b95@&?R1VJ8bWIGoes0CYj#@2=v52Y3RJ&-amJ}Ij;#S!<# zimatiue#=YfV>7&8ApaFAT0R*Pg-m{&7D{XRs>IGWS&S2= z=7({ZY@{2cDKwa?eNv^ zVAY{u$eLIGX5YIREwzHfmT&&W!7>TFC7hJ3K)4GH@_mgDp<}FjB`cu}y3B|tOV#0I zFy~*e5;%xg>{`2G{L$k8IT2_*0}h%PgZ3(Mt337bfXcs%z_aHX7*Yt7^~!RNhbj+H zWNCMH-VP*Re_;;56h(l86nQHLp7V3W_F$ z%$}pw92?oQH zc+%-*y`m-rI1l62z}E$0DVP&9i>4-}H_O1;C{<|$9V;~A((`VWQu~V9X$fCmtU$TY zxQ^zhY0pp;tpzPDK`?t1$Pp%#aZ@akA3PbHE`4SaZUCVCg&Uh?!IGg6I~KArzkW{H zki5Cy+7@jMvcc=!FoEJVfKfo&W8Yfo3>mE1rgfUKo>~{{LU8lx;&Q0f>K)I1p2&u;S7rLn#2Xj4+z z!0bRr0)d5VZ&3z$I9UNfMFh*kyo@vQA8@en#|55bh5j6xg^VT(ui=0X%)XaiUpifQ zE;!1@Tyuc?xZZ5Sf`pXpdrJcZP0nK$&+Wc*&h@#-SM?BYLrHUXDdw^VbLVaPXQ0Ne z13hjg&M(M=XZZ7e6EE4Ok>)wi*ac>_#|N$Vp>Zsm)m#f?*nDa4o2h&{XRsM$sWm3? zz*!Jxh6fb;*hV(z3o`p|%}lXgAKkXffxM7B*Lxybe!a|GlZsUUUg2Miz9(qcNl^G7(EwNrdSP3!(~LG-bUpT& zIBpW{9I_Nbai#w>n{YN`e~~85C_Tbny!0pVAZ3W@$al;+&pf#`<7=f?#QSlrQFt+; z9KYW0s-j@U=y8+9T}VOl_2+%H{p*@#vv3qCk@ry@3fA z$^O68`xQ1LxzS}yjbm2JB4}6B&PIcOnEm_2T!NQu#=Bv>fz+pe7uhCU#)X$g?3le} zU`#>XQXJPN_Hj-X^Km=@>*Wj?WX~df2%7y=d8?XmXx3)%-ASRPSwX63`i5$N3!kaZ zNBGMzpi8V%Kutz_%zOyg#d%_NV1L5rP0o(ABif zV%?~7^>;@|CxiKws34nen8RwNP#>4?&8hd~Zs%EpqXz6t1dj2z)&jHLG5MRCl(kKF zMo{DuTNg5CkN}$-A&oLtbIOd8q3Q;`W%kpcO2`b%H4ThH^8Xgzd6T78%h$kL{C#Z*pc-CgdSe}a&v~n;TWVn-}V=j2Z1&>0S;1W zVx_@``)`fdRjDqb8)JH9$@2FQ%`<^i-v24f+$EKNtXTE|hOx zvbWI^j%P`7m2Kp&%BVg#B$sYDK>DT!xJYdp>?Q@m%~3<089Xv9BA9_o*G{aguEEq6O zstiO^+(cNJ_WmEZ^XSW%>L?Ull6H?JIuP?*_<(n>FQZLbuQQQ?1HZ7=G|;`CU~Gfo z9Z&wc25cfasoXXkYpk8zA%*TUpt*F@(6uz2H zAhaz&LR&Bpc=O&4bn{Z^exsfYsp@+I(;nQE%T+vd^NZv73uq5X;}q=I3l3F7@p&sT zp)OsP#t2rR4(FfR=mT2_9t;XAZr`tHuIKquzlJS@+t1{dJKn|4%-|ERk+m?kU-$=a z`<*eR$1wnj*&6j0?6vXbMR84+n@1nxMz2a0BtyL&rTP@Fq9ov;J}J_w5r=cmXFCiD zb#yuH|Es+(jcfAS_V!%w(VnYouvEqOJ6S9q=dZT)8B9g_nO zW+q_)fL>`ZHB=C?%0WIc248*HZ#~OnGte(=`{k3{>}C!3K5XdN?;z=lETzJozW@X) zCZ4(Lx`ac-U<{EV781te59JLEM5@aqBd4bDongunoxjI-T z$XYRUIEeyrLOApujI!k46QC(*1Muj(M3NU>)2i}8D(<^fB1e87)B*Z}vW&DUfq~q; zve+g+I~mZq9Lehf8NGcdjX?)H90{|~@gHAB zeP6J7)>ZPyK$w!1G5SVKcd|jr+cbCoog-Oo;CkIMQ@Hks(uMn7OA$2zKGrP4aWqk znK&&akYA@CS=&`jG9>F|kPfn&e}ioiTnJXBWr_Wv1VGD#bNu^U>_rj+pj{8NQ2DIG z?@Rgrs%>uNT4pi%vky!&KYK-ReZs?kv@uU1G1N4fW3vtf2bXv^NLjuM^r~SNsX3 z5$;7_3%sK3UBgKCgJk1KD9(1`$!7Z5IwSL5{AAkEIyCFpN(+h;OZDo4mNzv$!%ZC3 zbm4^NW{po#j?{wQ)~Bv&d@OFPn|?Gn*_IRttuYB*<;4XOK}@kDg>H6y1iN(T_G5w- zQ@UfZRP2@T`IO+OeZ#{Mj^MW|3D+J2M~fMPPH|EAuMqHPO~S5N+@xY$#lWOO5p-jl zsqHf$dwD?*gIO!t?n|mNv35Q7)^_y?1DkE+hAtQMr3;5pqRE?_86w&T_*(<7t9tWz z_Q5Uw%LM_LpH{K@NO|ED>kLhyh46wHbFXS;p_tm(FRL(qIXu~QTV2MAceC>(emY{7 z^Xjk2X4B)hE?xNeCBZs#lr*$=(DfiZ6sdZ<3Wq}!{$vB(G76_u!G}b278O#Nu?L&r z=kz29`EL=;c(pNIEPVS^ODs7z`HG&XJZ*S{<})qRIo9c+oHP95J}qM4Qu%Bl)n8H; z3?}0To{&!KPOb7TJpRz_uh{lUpw>ZlV~+@sgL^AgePZGBge9&{iGXxb*_im7TQdAI zT^3x1c`z5ZwJ6eY!BTcPtqHa+GAC9X+JeE`QJg7P4U$-I#GezcgKhvmLn_k4j%_ut`Jii=-NL$Y#V%_t*G#=t@8!j zO1L_jtmiSwpPKdXWAoB8L+!s7jC%m;IPKCc8OSd_dm}wDOMr0n_QKw;r!^IME9K+Q z=@GdfXoagB4#6Rcr{j~+{M#hU0A_-_ul{NNty7ni^YYSCP?W||Sx8ZE4P{U_Zi^cn zUFD#{J1V6CS#E1llsw8Z8aMjXy?T`&rgmi^6`qzt?ZK9Jwm$WCaAEyyY#l}-VX0Os zX-lTKtgB)ft^{{Gir3N)xYY_9dktD`uyu1kjVqpx$kt8_k9?>p6<7GdIENsdBMv%E zd-2dU=7BP+)!OqTcJB9=i&F?T1d)zhrEo%6q*sU&U1_IOlaPPi*%G;jM zP)uK_?pJ;GmSk_7uCNd`TPMbx zqpT_AQPe8@+0!cj;B0J0!HXSKd{?Th*uEi6Pzs3;v&imts&y416TDvMM_*5;*6 zRXYkNk?OBMpQ)kI!Ri(D-;`D)UCc$Ul{_|zO&Tm> z;a2BzOny6~Kuc+gh1HH1`#E3y#TzH#YAx_|lAA9?irng^9@e<3Qd)3I33qRR@UGa8 z{ZLyS^Y&X&Jbw8%+zmxm^(|uarYoA*ht-D}IeTf0kL^8)XOvSM_$BX*_3Rh+u#+OBj6|qlRtyh!ORCn1A5Ximp zD0N^ONFf<5$fHLQ+opGq;4t{&B+at`X_XESG=#AN7}Ca1%{>Wlj|#0TlI-g1S-$pW zWK{q$#IG?}q$szANt8a{OPvr-RqmB5hMmR{Uxej#dHc;&n+ChI<$m~|c3b0#-u#-M z*V&U3?0gZ>!Qdj+(lP+iC@|3sabIp~Rgf&daYRgoXMnB3A730la`DH*#t_%rhR|E} zY~i^PW^hR0J0C`*v9A~%+_ z*hCT3MFCy)uaw2|XY#S{(u(r8IzA&XW0IymXuJeO?qTbjnvRb9%GaEwq6k{S0Ric= zkwb+kSoPCYZ5(Pea?@mt^d4V;yj@MsWcPwJV#`9yl>X3V9SX-Hy!B_E&p*3fyu^lC z3@ZuV5{Kg7uUnI$>L~DQXe`tHq7j`Z(MBwoMdE`gJR_Sx)$c@SVVC!na%MOZh`)A!A8VN(vs*{ZCW1;XXLv}T z*JO)rN<{6KOj*_7a)A{@WKE%zd6=Yi^2V-8A)RNXyoG4rM&9MyB?fYY|axE|IC=hkXW*B!XIqL2+&rAW-_vl`C49G z3&`2Ihm>E{3P$^j%PM>gK-_CEH-WFyu}YwFoRmJI8Lou8(-3OBgG|+T_M&Wskr|#V zs<4Sv5apUx9meTW5#2;sU$fA7l*Vk&jm$Qy<=o4G4RneUzln{oJhSsu4w`}AdfLp} zaB=4MMkU!S$v>8`|8hmn4)2pwNzZLg2EjTUA-Zn9eYg?%L%#&l{EE6K%Sx)gV8_SQ>ZZVkP@(wYiHYfu;~#=!O5b zlaf5)Zoto|2Gg2r?^M+Zuz)_eoQj39WNl*CxL*jVBXJ%w@f*%|(3zKQ3ygL&wOB0N z9rf>favN+B=;11If-TZu#*%4^OxS-a7X+`B>yA zGP*2urPVR@gkkC8?_FlHoR`n2X^oAvDzDr629?zQ46utw3YK^!Z1pXT)kLqzWu(gJ z;bj{ItQW@nx&s3c<6))JSoDOj>%@QTX0lV{c5rqB%#guY))K`554w~18?mQlx(T{rWl1|+*0f3fra96>q|i2 zHF4HOoPUvRNnBjO<;uV^Kz>{Z)fpSDAD`7!G=1b)IWZko^Jxw(e0*0cbSAgxJt z*aH{=n|(JRUQOPHjXRUoHe*f<`T9qvU$XNIpU;fMzD`gx*Kmj@pY)+a|Hhbs2NqUN z=x~ew(#Ga#YEF7RJN5u+Gdk{*D(eZ?VBZ`ThoI8TXZsspnsjLjP{XfStY>0}+$Jj9 z$*Eut&pR*dsrC)yjK3Ny?qnGAePsew z4_sEFEY~@hh_jw#07&Y+jbbUza6EFY$4+&)tf{eQH{pT1S=dR+Cm6+Z?#Oo?+#2f7 z1m$5-#AF5gQDxU9?1{$`f}Jy=;e_&eix$4h+Vew;$lC6T>a%sEonf3qxq>Heepxqm zu;4WAqHGKvI5Y{AWw^SGL$pw+uiX&0#n00_^VXlad%d-Vq)#mH4ClgLhn@*yHsJx%jqc+H6 zvONy6N|OJkNJmf{iN!Hi85?XOH~Fr}hQ)xzX_3tDUNxTgW9`$9Z63Zhp2l6l<8CBq zXPGDYQ(rR62zM+aLSM(K-L(U))6+e%xW^=TSD~lO#Wm!zCUhC@?s$2k;|}tfpWOo) zPM2*m#5Lw0V4FkL?dTiq$iNEbVC`>OW~6>BW$A6!hN3|aoyX4Du?s`5)Lj9#R5!)Z zWT=d>+9E5@5k0C%6*eetiUL{4XVoO9H8znTSv;=Atb~{=yPwCL*_EBRjbT>Bw<5L= zoi)T{8>aRTlQ<1mkP@$oWQF;zZ7|Z*U4H!-<}fM162%HYm$!sa$)U2wU_Leqa`q>o zC0{WOr?aE2({lCSTN#KPV~5YM8%e@#W*tTx=DVc(aoD?fqpxQ9FBDQs(MC-H?ljZk-X;JZw6r}fO*Yiy z#zvRn=KOK=2I>;<{ z32IidEkO!oEfUi2RqUJuhmpqiZ%PDj4nrlvUJ>S}#*x^hP3Zfikz|pV3-t>u&;8F+ zV&R+6!ccjIM1`hU7~fu~)ZJ>C3~`u@)DCYErdbgW*!BQg^~dO9{}*6s2I@{Pg?p^F zuOr-5lH8mumfFgcDQs$Eu)*B`Js&EqR=4%Qk9B9ceH_d7Yow2bk0WEZ`4WbAx1M14 z+Mq)1+pDOfC_lzZd%#uBy)Vl*xmhI0a$e+Z&DQfA13xV>f5xWnqx9=4(LQBygUas& z$#6pHCmw!l(k4_$K%hQL_^`!t6qiJEpF)@hqw19Rdv@>fm&Q+g|FeWrky!WJGC znXjoK^{mh{fkq7;0qMTFEnqjaSuX+h23a z5uJ$6vd?0>2gS@@&APg@4O=~Qz=|+P{2W6glhwXvKjy&PU^HgVx--$o9^bb~<6FPf z9ic{lFU~nl>++ zaeY=bMF6Vu4jGj@8Yd`w>}6kD+KN9}I#??yy(ydy&0Nn6VBt$RMSPw|`-qNI4AbyE zrQiJ4%rXadv{v?w0jaWN>bNqMfy1e2l9LS467!Qix_(pL0Z@AAJuj)s@dYU96bRpZqLO>`R$jVy#v#Z*%Pn#1$OtAPw<%#9@Xm1qERGw^%_=Bo4f_4o zdItR#*|?WD*3zG6wT>A%=gFYJ++LBs9xqrbdI`_|sf)wvjkBDtLZ2aSmJb%z_$m6Q zQ?_Ik?!qFS;vrxemAn&27xx3kJ~ z-Gb_suUBmnyAWu5nZI+{*OCulkNvIh=iXf zYy?+CVsLQvRN*oFNf}-tu7a$bV;{u8nK9ei4Zq57d909|f>qCdcw&Js*?TnP@+xIV z^vLaWCGBaLoMeKMqXBOIzLWZ-s<~*SLyltA4zBX6KUQZ-X*>_YuHJV}dlxZQ+gnFw zk7#yhgG|W&v)=QUhA+HyeMlNu-wn%Xcac9Na)acZ*D^R(P_Xs6-c!!4I#YzjbLzr3 zxo~ciFB}b98%~0bW|QI_>@W<=fMUkX!QjL&uMx9SG+O%RVfCcHA?SyJxo7Jao@&0` z-GZA@IeLe(DA|{8UjDg%rObr>d;%gN-;-3AkGbG9EKwAS8sOHKQmBAOI8&r#I<%Ypw7SZo0XQL+7^OvV&)ZCCe3qMOwck8(r!}Ym8?gK2}qE_$bItTcQ9&~qQ=(TjeFtZf z)%EbE&d!6uOv3lG52?Hl5g%#=Rx1QScjU;xe*KdUHP%a8v6nsDrsQp81;lri)T^%B z1_N(=1vMQ;tK|K%3kPJhnh2cgVTMZ>KpJJ z04|&U?rEJ20TB_Vk&yu8D;rq7XK>M{U)o7z!=80*IQaddJd@aAt!KB?v(2go(J zxHAjbZ}T@Yb`Y=*^;M=DPql#(QS&#V0m0?1!64HUABSC(19bt;B=lVefKraiq4 z3x}xa3x@VMLD!O(Mm09WaDAM^seB)#RjsQ3L%7@Ig+x6;N=}4lf}y{&9aKo1oxG@D z1=?t9?Nh2qqSQhumdLa&_D8&H8&B1Of^4Rlj!MGTSqqF~2zhy1er>`v49SgX)#nCg zSr%QN|h9{XD8Re#FRoTt=rIZ!4)8+>z$*z*xU9T+%PwXr}ouO?I(-*)1ecI``fCF>~ot;OQQ0NdFgcK zN0%-`brdeGAx)8 z&mdj6B;|=D80LptD2Rdh+KgT-E5-^k9?Uj&^mWvwNmS5V6z;7+<+WXt8%k@SkEsqb z6!CTOn$(KEk`NhHP=a|`PeqS12k6KQ4WzzSt@SmyAE{s~!m>S7$HzviNd-@H%LBk! z>~8NOC`gduO+J`3VTml3SF>K#45-M;yNMG@CBo(E#y^x{j7*7bJWPB`oIE3(Ql0~Z zvg2bED#6%?bMW{ULvl7F-t*eKg|ZE6CctkFomwoC?=wHbgp@tQH#tUM{XycdHc&%V zEw#V>@~{ZfJIcqAr{FvcbPdav?T1HMF)>J0=Bp4xrYyve^!i8L6cm4tgcmtzj2FG+cDdi>TZRDG5(EJi1i5-o1=1q{kAmP}df8dT}xInJ}jkTc#Jg zh$6!N9X8hsP5bsHtf*iLks$@4TO@Zc-4^62vL}z0;F;Sj(zU=F3(3WDMClTI z`;L0muHm={&q+#NM`AzROW`A>kK%ILb?f&W1jWcq+Wp{!Q)<75@TCR_`)GfM>(rJs zT0o>R8^j66=uWl`)^<*ehF>k*hz$wf#=O3+5t7jC*dpk3++jHM@=Eoqq`$@AcR^qF zPAD_hVI;U;bW%UWT4aDB2^vZez8;IR1p8Fbt@#bh3Jc<`sFA4cm{OZ>5Z7FvRXcx< zq4JC(b5S|w3~V3-@mC$a${+h_*>-k#x!_Pyl8(nOgN^r-bbjm~V>6$sD&S4DFcx$> z~{7QdXvIGsXzRNBUP7?Sm7R@fZn3$57w2-cr3d;2dVSwr@v)+ zCn}k+M0GZKvrUO1dtyUNP{9mJ__lcbrW0Nhp(W)aKTar7GIDZ=XO$nnMLMn)L|b)~ zBdk~ozx!3XSh z`W&w-`jBpLM^ZGXRTz#<5;H7vxgZvKiRW)$hS(yL)t&k7#mPmB{v&M9*Iym37Lon=59r0Wo8>QRI5X^|f`E8Oy7O&mXT7G8Oy)>b#$vW8 zrca4i2`ywt4Y__Kk0i}$d-fGfkRb_fsBbByS-n5)392U^iLkuz9C}Hd4s2?%VC+0@ ztZS!MF`3XV;#%g6kM-W{7|#%Bur`VO5vs6CMF6hcXhZ$JC{vG4Qq&}k->RDd&DmN8 zPpaU@W*n*x_mzTq+BUbDeFg=l#PmI>y<&%4g;BqZDn=bjm@bFE0(u)_;mriB_&ejV z)qVTS1)Tjf(zw_-P@XBBp~(>`&YIy?F^K(oM^a%RM9D??t#GP+h9GZLKcmB&^yd7Z z8sUbGW#~xg%vf%Hf}o%hzg(PIP#!wmc8ffvdDS&TEYhwJh>shU+?HfYM`o7FP|6ct zE2620?Sa%$?uCXTkw=+=(N)x9>qPw>i?l>vy;C+XX!>H3Pdsr5F&2`4O~e$u z4V5r`byp^$PJ$dhsr%K9N9K*m%HLWrhTX&=!(G>NUc{V=W(vjzXcr z@yZCo9p|;?32G9NbXtighizjTl4rDxNRpo*kGJ8ymjPj3wZ2p3l`cu@=oz3t(gK8Z z)*0)6BO#axHHzmlQoSnSc3$6r!m+~9Nv7k%8;#w(6~O2KVWx9t*b!PD@r!s~>ag4# zb}8Jxkj5)E=2aMyho=ULLu2m(*38!(B-ONIO3rNZhhGb90OIT@3@sSAy46c6NLoVx%lf*9+ z0Q43`|d3Eq6j6Qx^!e$^-JG z`jQE!i?U`_m5twU5*<_#IX5#?oVUfe1sUy?+wB_tPxDf=l7VwW6NKOHA0VUpJJ!-7 zGuTl`jHcIcNPfYd?13KhglVnp*;PoWLw$GT4KYaH$!4w;Fb^~8RA&*F2WxwZfmNC6 zWvM#RB$bm1D8kT_e07he^}Dy3c4QT>B12UT6RoeHa(MNI3C*i;;q%w&@?^0%=RIu( zL<|onZdxPtj;*g4`HGKatJ;Gn+@|=?cW1-yMefy~8|V#5nFQ3)DB= zv+cyc4xr!+{ayAyRjtN2h9;5D5T=L1HMRjg-)sz=4+8sMro(ohc8ks9_1^|jS`E2GX035PJru0wnbAIRF wZ$3qt105DE>a;c?G^U?B{~a5AAWi;Ls-NU9`{2@2Qz!R)MS2Y&C3Fxe zf^>w?dv6I4lEZh$_`UCU?>P6r^T#=7jgg(Kj6KI1d(OS)nsYwSjMLTDpr&A@xN+kK z^|Pm{FK^r+KE83|b{rYW^*>PK=%3eLH@#nKJh@Rm#J+hwx$U6*LixsxsuW6`4e|Ay z+~cXK_l+AIG5__snX-Clf8z!r|Cy??fxp$x6)F6cxw0tkSRQjRhnfrmgIlZ^yGvq2 zLn*>vDZl%AM^!XjKv_xe{llzc?;)A>zkmJ&1QuNX(q7NJz8bX<>PkwQN`90C2CfaT z2h!~C2W*Aa6qYzm&O4X2Of+GvE=9O_{u#M)Nj8df|BMliUJxSopRti_2iH;kXZZAr z5AgpZ%JXBHd5!)bQMx%#s^hqSL}T})qtE}5R8{q3?}YvY_OS$}MT6{MWvGRj_z>V`eKK$Q@*%&`AAUkH%Xets74u^R>=qPldJTSeygNsrj zS6tSO9F8a8YgJ@Qy)`N;Va0)@|7vBVWcd@|IK|J1j>$M0^X2XWB5(HnUx}pE-QY}i zj-^+A^a>oE2R|SQDA2ENNE9;1FUxon<;h?Iw^UU}Kk(IID7IIvK=+tXF4g=JuMsj9 z2~f*&$@w8oZx|s|O#F|AXIf@#@P~@kqs0d|Q=c>#4%-}?XjluQHFUg5TW!-~2yBxP zQ7y(N6v2mbYioDK6XJbds0=w@3BW7cH5 zEat2Cu9Qq#tnze0ee-sh^CU#qH(wq1!Tq~+hIVNdoPk%aP`1Y7L5*usHBNRDDBE?p&gFGdopaRnOK zFTUGyZ`M*A+gXp}q~f_S&~z(QxDY!)`k_e2#m<_iiT~XyC&z1_sE>6Vq7Mw4ZuP|% zAQp?U`cxD3%kIJn??6W`f1)?;p_LszE8tJ0@HfEZ-+L%840a`Z58cnYJ&Ll8MH==z z-V!e!+GAr4WhB%w2AVJ<<~0<%*MKDdas~Ln99wF2I}Nhr$~`+*<&QR>znRzPKzS@@ ztC)Ze-UsGH+u#TP-PR)_E!8&o=Rp9)ZIkfWY?1K~vog$VooKoB&T3!Nx)n8DYtSqU z>}Ragv zoEAy0I(O#LK^!ISRzu;c$NSjuZlr@GXBa3TpyEM2!~=ntk3Q z*sX0s=mvGvb*CRkWSj>7#h2un6&k`uBF;B)}MpU>C)ELM#dz= zi^~PI%I44RePD0;;=HlNqGoz5{iDlwMj@mM@X%y?s4bmvt;K;BveM=SK|d>Xcm*vR zZc7q8^I5~eRmO{wV&vc(Kr={+@NPEdyl~2bUBlV#vDfjj-XH93eW9jd-H^yXye<}!Ow(@aaf zo4iw~w-SDlGr57#nP&D+nqvFU503@?@Q=UVAuYBS>niKS=~Io>E(*PbqdXfu8TfnQ zh)m_F2q);zdwep{4vbN5dNj{anOPItw6ifHwgZxjmS ztln9j?0<%(-KFNh<~WPvCz_6y9=5JoB)Z?0%6t8M(k_K@$~;p;NsG93>t!_T0?~eN41R|fTLXa6?!)$*4v^?z{*Z+av74^Drze{>c+QLXrGpg2B`Pi0GG*1U`bOP~dk^jcwqmZZH7T*f*agyq zc|SZ&$a)?jQlrdUsu?0ZrxsKo)q1p8zYLhi@MC|+;I&FSV-EQD1DNn9Vy!XXe#i(U z^B?H^dx~$|z4nj57=agpy$G4fuh28!_veQf?85R#2a|fiQvn5<-iS|+R+A|ean}w2 z9A1(mv={ukp5_>%_d!1aRry^7J#r2(v_=+ELh1$DQkLZ2&&Vfb)LHiFq8nysY3d28`+nPo3jSZwRo73EXy zy7OLoQnxOc+}!^lelp;`q$)aL<4#FrndcEJ&tcRV z^!fJiQc%ylz&3ODT9|owhn#4#m?#b2E2$ICrz!u(am3kp`si2gU9@I zY>Y*jE3T#^tIPUj=1a6rLo#6g&447N!AJqx9_H&~mIHe|tsr%TPY1{~2d`0;N(0{00 zA|cNjY;$-)t^Lt>L-X3D-urgZZIJ_;y*`YI_S&Pcv!tC)f5Ku_w`+4<)i4$B5!vxNvV}qe;BMTB_C7==OdOU){c(cXcb(dgv4A<7P^IbJ_BFrda{Loa;^dpa&83 z=!2!6EeW{a%0WF|ZNA~sO{ z>POa##$$8rfHR%R$l3VthJECD4+2XKJx2&1WVv76$PQ4+edH)*%n}N|a3|11YD7B5 zdv9*g90T;$kAc`-2+mG=oo1u;Qn@wkB?h=ONto=V8{&7&lP36_(!^k(}3TEoCYu{BFR{Ou_~FEcl%hy+nxqO$yXNB}c1 zL8ZlUd?<<`8M7om_Iu5LAa-`{;clTXGU68Ge*?Cz8~Ki=j-KmM$b&+tCwx@J0|> z#Vd0H5t`ajSEMlvO3eu)_~Pc%cR_E9rrqT0aLQpM75j@)gmrYDo93}QfE2i>kGi(3 zn@gcnoT!F?50*9LP{h3*vz&ca|DO>1MF z^3x(t<%7KYt3>YLO@p|17Xi&*r!}(M1xdW-4&&+xbRl;P!p6T81i)Ag;rk{JE6lz= ztE!71{csmLT}}I%?@z;GM$ODm!28c;;W}y<`HsBmvY?-a;y_7cp%@c z1q0%z%gKfek99=@-MkD|jTU&@If{oBy?->_aIQkVc)sqFEzs~yNyUh7e$foZH(>l# z8+umQjIj3D7DRYeQvnfoaM;DZRq}Uvj~g`q(9HpxyJef%ofTxTO)0G$kTF1KSI==p zcLLzJ(B^!zegTET$k~1Yuf9s~0O4p67pv$ne1uz-vFIknv8E*|7INMO&fQGYxs@&G z)pHqgu0uQbebwz_p-E{~CjvLI&r@!GH8#mj!GWhi;WY^1t>%v;XBD1d$M$i?P`PTA zy2yX?1}SBDMcZBnL*`Y&fz`5n^YF^fDcvt9wCxdQ2i1L~BWs-Z%4K_v)TmYXI;_SW zR4lu~Y{J4OA9fC}-Nyf^B10#+DL*#_zkGh#ML6SG8li`GKUxTC&BrFb5WMBQUints z7%w8oAT2Z9+u6(LZ){C!lpH+2kMkvAg3799DzO26D%hGGk#Wvqn6@ugvRKUZ)Pe@JBf-IE{Bg&n2HUQ+kRy z92xQ7e(*u)aCd`K*eX+AMqNLISJ4g<*Zgxb7~JFifp-s$P9YqTLX;MZlE2%!Eq2G8 zr-II>2oWiGY4+`UL841~(A5sC+gKRrq?M7UFo1|zUdKx*V%$BaTJ6t2h>b051965p z@0FSt-g(jrJr-rW_!UAkaTvAJr$89HI^;qD+O<^G^OH2oX!ZaG#(%*YnUpx){7-KB z-nYUBE{2{{GEx^&w98Hr^EXi0Z>RtEI5EfFi@3zx9G;P(;{5AIbL!^<%l((ofk!|B z?klN+ko#X%xuYy)f9U11KSl$V7$2w52hoXbc^np$9ED9Z=L=yriUCHBJ%FGA#f*fx z8^bv6#8UK9eHOd5n;X$CZ-Rh3P}yaOeoD<~iA}T{>s=)RrY&Gun{+T<@Xq02o(-7L z=XS8cH{r}iX2uf`@x%4PUxJXE(JL_~7E?;SQxe5;8i!mcj-e4lENQ(h)U0&-5@+_P z0~b~;3!SMa*D-SUvp=(iu(fWOr8u2}2-Xx5B|JFu=YR*K4tjGBBOY*6e8$V%*7&%P zpuEd$0M@H%B18Ya1D&b5qbEWMM+aUQZio&1l$6M7jY9|S7t-oKjQcaGw}EW3J(y>b zcWB+oLxrOr4>elKNY900Fz7HaE(a_*9*>v+!RqM^JaRUUy9oV0H! z5)j|Q4ZW<{?~ppbVeub79~f^eIRG}Zi1d3Uh#$yhuI?q;uxt*{PFOx=WccK>z~&o( z{pLW_|5jn_L~Vv8dL0a#*vpuW(7!c>o~(FzGS^4qNl);ujDrZ4cVf zJbdv53gxc?)*}X181jOb51y6xqGwl^HEFuB%8nwXe`IM*9z{+S>qXu-T(p}X+%Tp* z-hNnou(}{QXnjR8(*Zs2C&P~;Zy-D$bb|vvEdyKneOg<01I|9=pV=%ur~BwG!h7ne zfbZb}Ku$|EOa>WV`)0%XznJT}@OEyRV|T$gX`bRj14;yXPnSaRh}|Z{p_E|_#WZg0 z@cL!cIpmW)T4Deab8V+MzpI5!n^s#{00LX*w^Vm>bNqw3G;=QscN%mEP8v0!6y4Q+ z)G@q*K0Mcf-auiJF$>EGoF;TR2;8NhLMbgx$}>MnyN}O;s6Sm!+u~?LPFX>)W%ccf zK`-l81pi;D^M~t&?1-&w)cjFzS(aptJy)kcNlAB)9)R$jd;r9e+mm0Tn$1sOe$4Y| zyg&#c0<3h1J=XEgT{Hr;jVpUb9)*)Y+jE#DO(PsL{CFrH;PmxINgc**x~r_JLEd;`8-i!=0#ZyBBUq1 zG^897etU0;4H!bIh+mzgP1jF4v(dXdQSV_o8aaInx)n^I3_DFPEJBj#AD-9aCI2ld z1}<8)fFM;VxEMx%lqornoRJ|VVi14A9O8(GK_%^W|II<(K0AHy4rspuDn_FT3jjUE z(_1>s&B-8GVqry(ec-(+fD zLoI|u(aAFYQbDRTq7p0~>pq>{R`_N$`nP#X7DyyUp?1()VsBDss`Q1PPec}>vFu|DF+^0%-MVX-uOM$@FHRudQ z<{A%eGhN1(5h0i92LNrg&&p>>H1F`sDT{MJueQ3U<}7Q32d%F&`SDwu3_+bB>@lQm z(#896D`fkToJJP5oq$(>_7)zV4fjlObbw)a%zXep(SW8|u zMI08peXSx!q%rb*wX>{SA%0&laemf&u$O`(>$a;8BHJ!g@PngLO5tA6ht=l0++}9$ zKrZf9G8pqWmNme*)Pl-cT~Rh{BBn7Le50N*b(G#c1*7{;FCxVxo%_4aq%Zi%;IbKX zyon`GO8X%!{=h8+ku z)pW>xr7=l#xh%*G+abgZ<20_-qzA*q02fnHM>Oz4Kyg~;2Q;t&|``zt15K9ZFEVDEc zX%wjg!HgL#fV(`r`4qr9K^5Byq!NsBQ~VS52ZYqfK(kiXBr-yubAGjiWer%CvPfD$ zY-`EnCjMzqGB-T_kaW+u1DeB)y0edQe1hrOtxvvd90?A9*J z+a!z9h9wX#z=|n5akF#w)$@1bzyY&_@E3>U z9n_jQ`eqO{&bmffwn&I1oDZRtM^2I)!bNK}aLgz?QY;RI`pdMuS>XSx2^Bk5_2q0> z^3JJZ3gIHHo~zkVWWYFfm2en@i>EqP-r+;>M$q=^+W`+N2sz&<#>Zs$u?qmJoiW+1Yt^FFocsk_Ip^bK zvX~-(xeuBsAilyqy()5*xp&u=S8hyiGGZ(BMa+!cnLcEX+*#91_C1ttyaPmvsyspW zeENNL!~Xj?maXDG)z-kvlo7+3P?Wc5M@+Ce=e!9&jkIMtvki#=qm)o8`7a(9;1%Yw0XkMf!(Vf7ei3x&4E$j8baq%SJN!Cv;t5$q;bmJFO?{V< z3Ymgk#^|$c?2q8hy7SYwQRf<()YwHJK@55UPR;&N&YzHk9f}E|gdl%LUwp66e=gO0 zO1PxG#p;95HrsjHi2)yT;*Kh=C_278M!os2NV`w?L?G^r3}Y+2)GIw}U-|_LC*Z*$ zCH_f^AnqZvx_z@st(xv1vibh*{}*8h@ek@UNYza`VvulkSIK4(_}sDVwm zHq(Q1$#{#_B#8g7iUqa;Pv-eCIz9Ik?xR9Pw|nd99GL*ZNThkm|JHp3_64pReI?g= z_G!3Npw(!5j_2}Eu6)R*-{FuLOOElcV}MW8`DiOgzegt!H|oB`=DP|1)Js;vbif_w2 z6mzu7Tzv)|7Y7hNmMeHPeM(jPOGp`BEq$?sM~p1<^Hc_>9gS-}JC z`F`teO3-iV>e$VE>cr$>E+GOrez1@sjqjn8@eJbYy+U@>?tEfgiB0Q@2R->U3i8fS z&{o#SiU)hV+Suv_r<#AHKDKj>oxo&@^wJ?EaIZtYf_U&-EvN*YkW(~m znpt%DA{~{FB==8aAR=IL_MjYvt48bNeHWNUQX!C9P>RVa9=#kJbX_$X7eBB zM^SAr+#9Psv-S69cCCvdtHg>bp3m1W&mmf3W=vh*8ij?~I^cfJhA;wg+X$}jwd6!9 zyc=&sqY>SxMS9?+d?qLLqK7;aFyvCKqwws4D2p-X&%t^6@PaYyco#bhl;f>0r;b>< zY-0UIyUN!I2|nV*e%50!l8Qbo0~5g5+0gsra{oZewL$qExWgej>2JPySKStHfJ;T& zwx?V;8+sq@o8|6465AzFLi`Ih)Ei^?`4L;R^*m-VAjm{>BTCC)+lkCldH69sHOE ze346k_NW~#Mj6WywxxDAkmA%>8(qHEP1AVTNl6zfTB=RHj?&Q1xRCrqrmd$xl{SF& zP>kCUn-)`BHau^4Rs`%6TWGImTc#E$9``)G)O=)?emiv^FQRz)J!Me^h_!284~B&U zU^~m$opn@v(8T+V;29!;k2d&-8E+Ar$ip{Xwcw}4l`g#^UqBSl;eU?GKoy|T3=utTs%^^5G5$%b?8 zhO8ye+fX5^3D}hwa3}_Uh*-!&V5#tX8j^i`MlVn`Q&f~K`@Arv-mC}lmScqh3v3X4 zGd2;h6b!@lE?t6?#DcdqVg>fXsu>UioxN*?2M?N|H^lxEEWMYkm?HAnjFO(|9PM~e zz$E42k<0rE#(I8Ja^hRbm~qvQDx$`;rMtAb84xv`7oM-T6J@6UmM zH^-xza_=I@{KN5V>yzo3OV-Ym4{L->Oy;^4%O=#4Q(IgI;xJlbu8RvBZ_tNZ(h5^; zOFQ?}dkQL>TLYH=Vpv5xa4ty!2Rgn|AUOr@v*Rt(zAK(MiP~mR(&3??aM`ZB_p>>x z?DhlfJtHXu#*N~-P!f=+trfeE+N2x%Cp`HfK2V6TqgdfjTQJ95R$*lkYMS-mc>iTx zwpW-bh8Z;bfk@P9M4YW6VtNE|IL$f z*E>Ln`B&OikE9Y>H#v5I&Ow}^>@iJpMWS!IAfK7qYG0{0N6dr%g@IzTDLbKosqgJ- zcgb5{>xIIS->BIBVW5y**ByTt6OMfI&B%8NY(aTIekmcH{=#-&20_pq-t=cD0pj>@ zbs_iv+u{yw*NgjTWBf*BKoL_oBV3`eIKHQV7E&kH#Y}g|}H-%_i;y>X7PoQk{`N@6X_`EA#7Z;$dVe^C^O_g7t#vI;7&;#lpo0m#| zNcc}#F?Iv_Z&H5!%KV>5Q~6&<%4sm>8A$)NYGP%zmLS%OUHYG0wqG2WK_JHYC?E3* zRX8j#Fn(l2@BioCYk8}~$-X|ag2F<>O|iMVh11;s*y;ZUhS2{y)&HNshx-3KZID_A zl$gd(s;a6nu7$VJDT9VTW@`R#+r*xtwqe4C>F!s_dEija8)j2kU6G&~+3qJWqB{{S z3p*P(P%C$YcN6aTRi_M=xw2?D;kJ2k8sZb zHQJ}acU@Cwi|xTFE6m>mZ|fKXUroM<+-XNS*%bbBm>mn~SwK zX5ss+Q3y12x9r8v4rhGJ(TBd2s`{FwvN92uIQ&Eb7QLILz+M6*-A~kK-`N$Ie0vPF z>=xf&z!E>wD!lanK!3|&Qu@RtmL{zK@Qgv?mgPd4ZrB{}_>;iypK2LQ%L%)|_8bP8 z+RN`NNO2$Ht7`qun85DZG=7y;RY{%tb0SF=iFLkRCeG^%zNfC`c~r`K<*~#2VP=@r zjbwdmm@^TZ+@;ulgQlwLNv2g22;%vTN-yb@YT?uG&|f*@hP})Wl47cIsBAJsrWW60 zWL$IFhHru2l404Kyi?iF4RC=AM`MeScPdyT^Z%jGUz=J-R@>GT3Bwo?2 zRtk2LgM$Z&PQB|BT3~k>f@=DbJ)+-7$vqD=HqeYpQjBc;(%FA}^ZrULJ8 z*()LnKPm1I{Q-IBnqeuVGn_SI^XP;v?8F00j#EjC5}{zUepZ?4j*^&63M=&D&Duy3XLNS7>7k;=bt6R`@b?OrLPd^J=x*-UF)lQMLBrd2UWx_4YtkHncFPD8M>p@}zmB`bUWw8M|vT*Teys_%Cy-}UE-rs{=j(fvu6de!AB|ss&Wh-^ zQfE@Q@_l-MMrwG;8Xwd?)F@$3`5(8nj4ydzSW``6SAe!BHnx9Hbt zA5po-+ROwIqE%kMPRT?zv8?$qbhR6x z8LAlRuNgtTi>eCEu1O0FnaR_}f&++sC3pgPsluM!PMS?fa3<+VX|S#ow7vtEI%i+| z_>qmzVp4;hQgSPf8P00PmGf%j6Xo$Lsq==5Q&-!`X_{*z>P~jSg@@+8?*C(JS#Gk| z(dr<{5AA$EZhw)ATrHVX^AP{TwCgiXNqr13ih0Mj4iK^n-eAdS7ZG56lfuc%do2Ev z-gaTtg*tCCQ77PIl%S8P~3J2s~Td$bxbBF=p@ONRE(SM7KJQlO1b#qK9s%D>qUdqi<{bIvn=t zoW$Lds4RLQ8vjSU%Y?P_!HW3Wb%7iWVNp@h7h0>Y)d(Ri(RX}P+I}*(tGMJ-Mvq@p zKY04R2bpYlT@0Y?rknWfm)IFu4*p?VEKYeQp@J<$N({iBCHpb`HX4r=uWO1M6HJyG znf)C*zd0_2H4*K-@Bwd?G+E)|Hl#W>S>t(jY}T?P<2dGxpIozXdxai3;Kc(IzP0t= z2#I4fK}{GdJ~7s#(mF}{XgqbWbH06eOtXsH(Kj;a&0tA)-3j#MbTSw6^lWJ<>XLVdCD+np}U6gblR(4eT-h2 zoIo4DAbQQ^EP?NC-80)eG%iV!JinDmQW|9SIE-vjdR7 z&`W@UA~T!Q4(7+kMoBMFQPk5V(Fy$#cPlTS4kY2Nv3l_Nn%qf#oc?}!pUOK$;6(Hd zOIW689%zX4E={&$OTru(Ut{&)qetFqZ!jN*kd8ss6xz}1WFi}_r_W@rDTWzK%)8UA zpizwKZsr+pm)2Y`oOOz~<}@iwV&CU2899EU((?s6qfVw()={?f zzq;}*0x zyv_YyG2Z3w8)7aPqT8?<$-aZy06|)%Qg%QN%*>y8B-Y81=uk=;DU#xaH{VGsNRx8M z14;U2b~7kI%#;E{STt`FAP}-@=qwwX`knHCn<6#qR56dpk8CaM{Jor*kv$ z0b@PDv0=je*j^wUmN+DJU9|cPeS8hmcYNU=aM$#VZp{EVjhEjK&bWXqf>2_!q$Kyt z1@_DgL>hghI-oGPNn@Uy4^c4jB1q!VliztHJC5JY#jdf}Zht!x7kd&9vY*{-rh1I2Z->(yH&E>P-Sj@{zow$xxb9BX%rh)A04|l)D7`So58t?t(8s!eWqAd8zN*Za;vKjs6P3B zw!v%qCZ_p}V_zv>VqaDBSR|&Zfsw(_>sFGuA$uCNF@i3CfpKO>TQeI&F)g2nISsVL z9k_UMAGaTC_$)xm)swc6^==Ld{7Ar{RFwwBlV~vR%Q;}b&%@SMI6xC zK173DTHRPo8T()~PzC`MGetjGaJM5RXzdc=%6>Xwr)Id2P^IOw(VWqzQ!}@7L!5}& z9?m_b@(PRk#9@0B_|`9;uaMMn=!9vTF>Y^AMcgD)*s90UoA3Zu9!JKZtOe`~NNoxE*ioBj zW+&k%4HXGfQcDUnL$N=L+Wz)%t3R-{cGynFl}|fo75q`D()mI`x3l{IuO5gH>iBRp z0&ejvnFUIz|5~(h6*)`i8yFa{wt2&cjGz{Fm483yKk+l`jaGD05^4N3ggRRodCq@X zvQah^jVi41YT3#BOP6I8|NeY7k!-aXy^|;`qW|P6w^MA4!Yz7=Dt~)#PB)sxurDI= zsm@g;xO$F91=o?O0vR>Eli=VrZxm>)HC8{Dul%Z)w0*>ChcZaRKZY+4=|}P-8|+`* z6gkx2+rNA76FA5LpsHBhwsN#r<_@uR8xC!masU)Z*G*K64+%@pHuC1VJ>5kEMn2!Y z#WqY<`(k&|(Sh@^si%iuHPf~YKnm@#B6VhWeBcxp^c)VWPC0Kkl8>hhEinMN?sm0e zl>T;lQ4P8)%?3Z|4Kjyslq-8hB8r-F%M&otL0F!~BF0}$GyB5V?E-Pg(kHd{dk(9= zMi{w&=EJ9Flr;3@2Ye#WDK>*e)MBYT^jn5mZXU{Pd@-9Gk<7AnEhatx`F;tLS@y+T z>5V&4M@{97hMP72O8%`4qsU}#3NNMdz*G0jRsom$azvu`tGB}0#OslFh+8l*rjfhxuA=kHbPO?D$(}oo!SO`~ zDeAfzETm%NKZG#uFK^yAQZp}~QgJQj7cO(LaeX5?BjRl`8;h!{3;$#%{kiwC^WNeF zkJ_XIAIM3oxj7y9XmbQ6Us$6M{`r8ZG^%i7v9P#K_xXF^rJBeA1)17(14>* ziYaTOF=PiGQ7vPw33lO4QzZ5}(N&GGmV$j6f*qv0BFKv+T9a+Pp!IIWK@!qxoI51-NBh!^HRwm&P&)-FY0_RrRgi}TmNr-z;@12 zalMPy8}j9jy%()#%SAp^tZyDXsZ1%-@3%`YnX(GlXj&EDNPI9*@1wQ~$7Xku-wS}N z43AOsT}{riT$AfmEekfpqX0O0xo-=$!Tk!OU>dLmdl~wJj^i{e85#tY_4HEFN{3xf5pV9L7MH# z>uGU9>k3nA+K90F9u%Y*?7v_`gc*B1l4Pl&uPkrjBD}!BlT7&3O?Le>y@k(9oyur? zH$=4~^CH-)zl`EI$jYUw_B8P2(WuDSQXzS*pmU zsBKi~L7}|6ps(%oU_$TCGO=?Zh{_`1q|Y9Xh|6!WD^0HBemtgfBGu)od17eGnQmjS zyGU1fS>wOqN-0!Tp0@TH^sqiO32ScdtSKE`VB-=@lF{n61bzZUp9{73#Um9*1tlFw^o~FzZrTo) zlkL-t@89IZ<;B>KEJrkAqe`4XTMj-9#eb*`?ge#Db+GBw?mtpa{yuZvz+}2)(|Ow3 z=tDYa0O9@6E#0Q)#MJFMEOj9scvnh%$A|$RX?8PDi5}W5aJ$OM zjlif|QZB+6*&)-n^BAj^n3oEuI_g}r4vYPzWzWAp)g)Mk)bjRdtj5xuNXxa($i*$I zkryB_pqHO$jDw8787Em0ELP7-Rh|?vql)L(g)WptI*-!myc?gL-6^=TyBXRvFS#j3zqbRb>!l6RcE^3hm~rjLv-4N{kLpIjw_k#j=FDN-mXA;O=1@0JP? z3%k6^0T&nqhj4?eEQl&z$TZJ{xF0a!q9DT$^_$>)RgP zcz3qquc9-|!Lph`c6Op<@KSd4<(>DRuU6I?ZPXmf?vLCIB*7PLm8zGfC}cuA-`|^f zys69}zoXTSV(A3un^7e{ZVHT08@*vn!e2rASLeAN9tm;}V%}hB7m)x`l74QX7986a z)r@S(xcO?0hAcTG^rOL{0(sSecU^lY^6fap32;2A;k@W>ciWClhrv&*=x4swaj5UF2~RGyMC>_5A^9~Xm4;44+& zdC$3A-u#EBMeUd(HsX}-m3l)QCL>nckNrc}1wT3^G~pA~#TsXy^W+ZPsix_7QsN3j zS5#no$Jp&N+cplw$M~)lsz-oqONqyNEK!qIHA=60n~zYR+{ljo(t_TzZjh;{cw^PN zcui-@t8zSQLE$-dVh`NJQKv6qbnGXP2z}eUo;aR2mo)KLuk#7?%#D#bcG}(owG*l2 zH9_}dOXN|XohUzH@&oF!^u$XgJ%Vy1Q^W=MaB~a<*q76ThX9s!CnK-{N;a($e3Odl(Ft#pb>Cx7=3REbi{Py^#>e{Bp|A z-aO0HO*>j^n4R2S!HEzO`h(f{Z_TNio*~DFEB1vQws_U5ef>MO3!B#5TdCa5A0B*_ znXBHr=4dsA9>wHTf<|K+^O$Ub-(qDyC0^3qtQ4P!35%kX*zPTlbkT4ePL4d(p8cSO#ZdY3%yr2sLe z^Qyb;_suF#aSwXe562H9&r`=oK(w>t^9r<{akee`A80q%Z>#8GvciFOP8u!ph+KtE z4$O(Xo-QPr85Yz)+QX&xu}oV0YuzJp+U?!w53MBtk5s#YGFna}640Z%DA+dxm3E(!>dfysJ|ik?03Uc&AU#~mRgM8fu)uS$VfYcFwQi*ZaIDST5@ zBQ#5#N~^T%>qG7Fo}RYJpD%HuEb@8Bpqdi=7eX1n>{CXRAaB=t3QWZ`w20Bxo)TA4fefr=Vbz@+Mh+bT*sGdqLZCu$vr&p&d?bG zE9{(cQ0j`4XyVct7Yc`h9C5`=I(y6Nh9HN_sH+wAw7gpRr-Y*~v&<*VPv_9mDqG~8;s0)R|JzEA@#)Dk!2!&j z-Y4~A4<5-=g{7tfmb!wzEtfZyeLtGo5}64<72?OxNU6VP+!Wo)ty&ZBGm|B0X^34dza{Np2*d)-cE*-=5o-_NpEKmPO&H>RP zb$UC6^ZD-68!jS=HruQM{bkZ?@yj84o$#%O{H!GpYMHRtztaQ0x}62+$P4`b0^~}b zlaLNdkSN;{i;6$8@farK6jw8mH84+bpgF$oXfuf7(s;=HS%ybg`{YVBBZcxfD&J8^ zxOqPh_H36rhO#f&E3)d7m{&Y!XYU+a+~(%fc&#V)&K#WB=_lw>K$4x=9>vS2!)6C` zyD1TlY}sDUe}5`o^wV35%)D@}zp=Wn{p^{#PoCY>wEGv4S`|l)q56MykyRrY_ zJG1<cOC}vB|BS~- zbOGa-ji&?Si|Lf%3+ChrP))7M)66O4v$&_f1be;}KdsO<=s3;hZ04N&D*lj_##c19 zL5zb^HH*T>SW&2BK%DF}?=wHu`i%GD>(^utgLDizw4P)ZIh+kGNz3?8#P&%!yx+=? zL9oKx#9&VwcZ%m4wIioC+8^hb`UT5ps=RKfkxo{%!8#er&s}$AG&m+uS??``!Lc)(5g}W7zo`5!@5t73DV5Q2KtRh$s*^pybffp*F z3gSv3eA+Gf+-)TAmPhNcceNgje9@)@44AqAVG*hXh3bw$bxR87!nZte_MGXJzSZH#Y;1AY&ys zI2UL%dT$G)NV4(v{d}sD%giJ_3vch}A*vcZln^A(I4{#_c|b&7T?R9XkE>($c_IS(yEUYaHcnhM(=p{Q&+itGE64xBUetq# zJE5Mj5DwMwbiP+ex2He*Ln}VfmA2@E@I;CvA-0mla{zFiDTQL{SalzQQg=(M<6w!Y|$m!b(~PNC0ewqF_yKCL)9| z!{bvMH~aP6h`M@-umRo8csaILe#N9IURq=M9cEO*`RKor5)oMmzZkSDtE8j4%Z}@e zD38~NC5wIRofE$Zo`_hKzxCnpKIeMjK*o;tr`t9UaC(giFPTa9Bx~xUai;c9(H^hGVkn?q5KkdRj z+1a~RMeHw|p1Apuq^RuJyjqUyn9vhf(!c7<iZV4{WJ4r!MrLuH3wr!L78sl9*@Fun5~KKh-kr& zV%jxZ3f_$G%sxG6#ewwx_(tNLo#uCXq=9_9>fNR@zJ8@(M zolO3cbb8?dTNy*nLVN-2nK%oCO9q7IM=JET-{Xv_$IMI)PLPsS7$bTES8!eyRkW_e zs^f-YOlLQ;rubR#)qIH@q8ZQKh%%}efR|YTGd2gIJ+qMfUrM4TuxkE+E>>Z7b4 z*QbHytV8gses1prN?HHFE~@%9V{7GDApm2>p7--`7v4(5!q(EAe?tq9cS8JIG<-^h`)MX9;@s7ExJG6J0^nVG+o1KE_CG0)+@UV&45*e`>>KsnJj^S3=n!%Ub(O6`qxw?1ly?m`Al7!9lq{l&f8Jk!f8cbZ z7g@(#Q(GA6p}hHx3=Qc2?0eEC$Aqk|^lZ?f#)-S|A+4cJ+7w^CTgU-e3V3>)-i2MP zrA5n8gMm#hEYTm$vXtuc_cpZ{%eFvFA+1UHLeKBd&73cGw5ivB%xe;$aH&|@1=mYb z$=*z~??$?DsZmxRp{BAQ=DK!dr;!cU9o~bYcfZdSdgTZMe3e%loS<1HQ6b0KtQZYd zPifx|CWYix0;t>#mW!Pg=0!srwMB{Hl&%UbHXYZZr!7liZ-qS_(hoC zG|+!`&J)dQJT5Fb5s!tUGx67Iq~!dE;L8xVYfXmUA>~*sl=>Q|yU&5~H)_DOWI*AM zCn#kpIU7b8Y>86m`yuEBukDgna-HM-jVO-zl}#CEe$V6>!RHw|V>)nkI0KKTvQWuw zYs5ZtbVyVpKP}f0N4xt5YL>B|{hKt^4D-VvvK!N+zs)HTmb*zqk|!Z?F+bb|sxlpM zf0HMTU8G0FQOUJ4usvc+>p_lL!i!0mm&5)Td!5;`EK*{Q47Ty=$!h%^Rp1Nj16+c)B>Xp{2pI$GX&QLCyO#IZ39u z=OPt@Jlr1F-!wIHmR8@tZECu6{4BC#X8uN2gb1mw_vDxPt4OOCs>I6wk@x|bR1tjmHqC4xqoo3P>jv2UJbX5F>AGngmJ<=@Is{EpX4fL zA2#A@p z&6~c?=MaS%6GgER)nLl?&kZK4I(&tkS)ieyV6L&x`8S^ z2huGHM-R{w*Y;T-t^wEXn#GZ9k RS$}9^i*8dls#>HSm2)9u0er{JTK9(&QNSAh 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 Y5t3Q?H=l9eKd+~wY4D)@{^J+_4L^sRssI20 diff --git a/docs/reference/media/visual-studio-reserved-prefix.png b/docs/reference/media/visual-studio-reserved-prefix.png deleted file mode 100644 index c86247282c8c0bd3e347256169c78893ae35fd52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12353 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 From d5df1ad204e71a662712d2366a8717d408745991 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Fri, 17 May 2019 10:59:10 -0700 Subject: [PATCH 1213/2943] same --- .../media/nuget-gallery-reserved-prefix.png | Bin 0 -> 37998 bytes docs/nuget-org/media/org-add-new-option.png | Bin 0 -> 99008 bytes docs/nuget-org/media/org-add-new-page.png | Bin 0 -> 172023 bytes docs/nuget-org/media/org-apikey-option.png | Bin 0 -> 91382 bytes docs/nuget-org/media/org-manage-option.png | Bin 0 -> 232248 bytes .../media/org-manage-packages-option.png | Bin 0 -> 43725 bytes .../nuget-org/media/org-remove-self-option.png | Bin 0 -> 121936 bytes docs/nuget-org/media/org-transform-option.png | Bin 0 -> 98959 bytes docs/nuget-org/media/org-transform-page.png | Bin 0 -> 133762 bytes docs/nuget-org/media/org-upload-option.png | Bin 0 -> 176591 bytes .../media/visual-studio-reserved-prefix.png | Bin 0 -> 12353 bytes 11 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/nuget-org/media/nuget-gallery-reserved-prefix.png create mode 100644 docs/nuget-org/media/org-add-new-option.png create mode 100644 docs/nuget-org/media/org-add-new-page.png create mode 100644 docs/nuget-org/media/org-apikey-option.png create mode 100644 docs/nuget-org/media/org-manage-option.png create mode 100644 docs/nuget-org/media/org-manage-packages-option.png create mode 100644 docs/nuget-org/media/org-remove-self-option.png create mode 100644 docs/nuget-org/media/org-transform-option.png create mode 100644 docs/nuget-org/media/org-transform-page.png create mode 100644 docs/nuget-org/media/org-upload-option.png create mode 100644 docs/nuget-org/media/visual-studio-reserved-prefix.png diff --git a/docs/nuget-org/media/nuget-gallery-reserved-prefix.png b/docs/nuget-org/media/nuget-gallery-reserved-prefix.png new file mode 100644 index 0000000000000000000000000000000000000000..6493f8b2a981d018cf1413129f367b2614787f56 GIT binary patch literal 37998 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 L_CU2chGhK>>lt#G literal 0 HcmV?d00001 diff --git a/docs/nuget-org/media/org-add-new-option.png b/docs/nuget-org/media/org-add-new-option.png new file mode 100644 index 0000000000000000000000000000000000000000..bfb4de45039fc056b3ec907046444a839cd52e72 GIT binary patch literal 99008 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 z%0A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 |VvEp7Y2E)WTr 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 k3h-?7%s5rLO2$~cVCwlo&!x?RA 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

    N<-gxWLEs*jX3vP{+>rK8F-HX3(8Okr=5gQ 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

    F8f3 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 literal 0 HcmV?d00001 diff --git a/docs/nuget-org/media/org-manage-option.png b/docs/nuget-org/media/org-manage-option.png new file mode 100644 index 0000000000000000000000000000000000000000..934840228bd3a50805a146b80c79dfbf612da086 GIT binary patch literal 232248 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

    T!DCcp+)b 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

    #bq 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 z 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 jJ^?V}kN^JI%6DLlv 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 bJMPgbKaZhKKhT6fK$RB?s`BN}O#}ZwjqA>3 literal 0 HcmV?d00001 diff --git a/docs/nuget-org/media/org-transform-option.png b/docs/nuget-org/media/org-transform-option.png new file mode 100644 index 0000000000000000000000000000000000000000..c89eb4153fd190038f9e9e23f9d510b403ac47cc GIT binary patch literal 98959 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 z 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%0Ap7G& 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 RS$}9^i*8dls#>HSm2)9u0er{JTK9(&QNSAh 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 Y5t3Q?H=l9eKd+~wY4D)@{^J+_4L^sRssI20 literal 0 HcmV?d00001 diff --git a/docs/nuget-org/media/visual-studio-reserved-prefix.png b/docs/nuget-org/media/visual-studio-reserved-prefix.png new file mode 100644 index 0000000000000000000000000000000000000000..c86247282c8c0bd3e347256169c78893ae35fd52 GIT binary patch literal 12353 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 literal 0 HcmV?d00001 From 754556d3b6552a856190c3771d6c4cddce63290b Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Fri, 17 May 2019 11:29:18 -0700 Subject: [PATCH 1214/2943] link updates --- docs/TOC.md | 3 ++- docs/index.md | 8 ++++---- docs/nuget-org/TOC.md | 4 ++-- docs/nuget-org/id-prefix-reservation.md | 2 +- docs/nuget-org/organizations-on-nuget-org.md | 4 ++-- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index bf03c35a9..628c665fe 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -245,11 +245,11 @@ ### [NU5124](reference/errors-and-warnings/NU5124.md) ### [NU5125](reference/errors-and-warnings/NU5125.md) ### [NU5500](reference/errors-and-warnings/NU5500.md) -# [NuGet.org](nuget-org/organizations-on-nuget-org) # Resources ## Policies ### [Governance](policies/governance.md) ### [Ecosystem](policies/ecosystem.md) +### [NuGet.org policies](policies/Data-requests?toc=/nuget/nuget-org/toc.json) ## Release notes ### [Known Issues](release-notes/known-issues.md) ### [NuGet 5.0 RTM](release-notes/NuGet-5.0-RTM.md) @@ -316,3 +316,4 @@ #### [NuGet 1.2](release-notes/NuGet-1.2.md) #### [NuGet 1.1](release-notes/NuGet-1.1.md) ## [FAQs](faqs/nuget-faq.md) +# [NuGet.org](nuget-org/organizations-on-nuget-org) diff --git a/docs/index.md b/docs/index.md index 7edf578c0..329906eab 100644 --- a/docs/index.md +++ b/docs/index.md @@ -75,7 +75,7 @@ hide_bc: true

  • - +
  • - +
    @@ -142,7 +142,7 @@ hide_bc: true
    @@ -153,7 +162,10 @@ hide_bc: true From 2d234ddf4cc944e87a454a0eec9998daa9726690 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Mon, 15 Jul 2019 14:49:58 -0700 Subject: [PATCH 1435/2943] icon updates --- docs/index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/index.md b/docs/index.md index 0f52a4624..6c6cc2538 100644 --- a/docs/index.md +++ b/docs/index.md @@ -22,7 +22,7 @@ hide_bc: true
    - Get started icon + NuGet logo
    @@ -69,7 +69,7 @@ hide_bc: true
    - Get started icon + Download and install icon
    @@ -128,7 +128,7 @@ hide_bc: true
    - Get started icon + Build icon
    @@ -156,7 +156,7 @@ hide_bc: true
    - Get started icon + Delivery icon
    @@ -178,7 +178,7 @@ hide_bc: true
    - Get started icon + NuGet logo
    From ec1faae0430b6f2822702fcfb1d2feea6962280a Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Mon, 15 Jul 2019 14:55:13 -0700 Subject: [PATCH 1436/2943] updates --- docs/index.md | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/index.md b/docs/index.md index 6c6cc2538..d4c6bf066 100644 --- a/docs/index.md +++ b/docs/index.md @@ -13,7 +13,7 @@ hide_bc: true

    NuGet Documentation

    -

    TBD TBD

    +

    NuGet allows developers to create, share, and consume useful code. With NuGet, you can bundle code into "packages" that contain compiled code, such as DLLs.

    • @@ -63,34 +63,25 @@ hide_bc: true
  • -
  • +
  • From 3b790b465cd56afc3432b3adc4bb5ece9cca74c3 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Mon, 15 Jul 2019 15:02:59 -0700 Subject: [PATCH 1437/2943] minor updates --- docs/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/index.md b/docs/index.md index d4c6bf066..630b01bd9 100644 --- a/docs/index.md +++ b/docs/index.md @@ -13,7 +13,7 @@ hide_bc: true

    NuGet Documentation

    -

    NuGet allows developers to create, share, and consume useful code. With NuGet, you can bundle code into "packages" that contain compiled code, such as DLLs.

    +

    NuGet allows developers to create, share, and consume useful .NET code. With NuGet, you can bundle code into "packages" that contain compiled code, such as DLLs.

    • @@ -26,7 +26,7 @@ hide_bc: true
    -

    Get started with NuGet

    +

    Introduction to NuGet

    What is NuGet?

    @@ -165,7 +165,7 @@ hide_bc: true Publish to NuGet.org

    - Publish to a private feed - Overview + Publish to a private feed

    From e4bd5d895f2a710df6cb64165c75828cebba3ef8 Mon Sep 17 00:00:00 2001 From: Joel Verhagen Date: Mon, 15 Jul 2019 17:04:30 -0700 Subject: [PATCH 1438/2943] Fix up Install-Package URLs (#1536) We changed the packages container URLs. --- docs/reference/ps-reference/ps-ref-install-package.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/reference/ps-reference/ps-ref-install-package.md b/docs/reference/ps-reference/ps-ref-install-package.md index ebcbb78d6..a65853871 100644 --- a/docs/reference/ps-reference/ps-ref-install-package.md +++ b/docs/reference/ps-reference/ps-ref-install-package.md @@ -60,11 +60,13 @@ Install-Package Glimpse -Version 1.0.0 -Project MvcApplication1 Install-Package Ninject.Mvc3 -IgnoreDependencies -Source c:\temp\packages # Installs the package listed on the online packages.config into the current project -Install-package https://raw.githubusercontent.com/json-ld.net/master/src/JsonLD/packages.config +# Note: the URL must end with "packages.config" +Install-Package https://raw.githubusercontent.com/linked-data-dotnet/json-ld.net/master/.nuget/packages.config # Installs jquery 1.10.2 package, using the .nupkg file under local path of c:\temp\packages -Install-package c:\temp\packages\jQuery.1.10.2.nupkg +Install-Package c:\temp\packages\jQuery.1.10.2.nupkg # Installs the specific online package -Install-package https://az320820.vo.msecnd.net/packages/microsoft.aspnet.mvc.5.2.3.nupkg +# Note: the URL must end with ".nupkg" +Install-Package https://globalcdn.nuget.org/packages/microsoft.aspnet.mvc.5.2.3.nupkg ``` From 64e73e206599937a72a9dd6605381d91cb0ed074 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 16 Jul 2019 09:28:32 -0700 Subject: [PATCH 1439/2943] added Reference sub-section --- docs/index.md | 51 +++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/docs/index.md b/docs/index.md index 630b01bd9..1cc6629e4 100644 --- a/docs/index.md +++ b/docs/index.md @@ -53,10 +53,10 @@ hide_bc: true Find and choose packages

    - Install and use a package (dotnet CLI) + Install and use a package - dotnet CLI

    - Install and use a package (Visual Studio) + Install and use a package - Visual Studio

    @@ -75,13 +75,13 @@ hide_bc: true @@ -103,16 +103,16 @@ hide_bc: true Workflow (overview)

    - Manage packages (Visual Studio) + Manage packages - Visual Studio

    - Manage packages (dotnet CLI) + Manage packages - dotnet CLI

    - Manage packages (nuget.exe CLI) + Manage packages - nuget.exe CLI

    - Manage packages (Package Manager Console) + Manage packages - Package Manager Console

    Package references in project files @@ -184,7 +184,7 @@ hide_bc: true

    NuGet.org

    - Overview of NuGet.org + Overview

    Individual accounts @@ -203,6 +203,37 @@ hide_bc: true

  • +
  • +
    +
    +
    +
    +
    + API icon +
    +
    +
    +

    Reference

    +

    + dotnet CLI +

    +

    + nuget.exe CLI +

    +

    + .nuspec +

    +

    + nuget.config +

    +

    + NuGet API +

    +
    +
    +
    +
    +
  • \ No newline at end of file From e1a34875a8724d8e71a59c919f6f0386e94ceb3a Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 16 Jul 2019 09:31:35 -0700 Subject: [PATCH 1440/2943] minor edit --- docs/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/index.md b/docs/index.md index 1cc6629e4..8784d2da0 100644 --- a/docs/index.md +++ b/docs/index.md @@ -137,10 +137,10 @@ hide_bc: true Workflow (overview)

    - Create a package (dotnet CLI) + Create a package - dotnet CLI

    - Create a package (nuget.exe CLI) + Create a package - nuget.exe CLI

    Support multiple target frameworks From 208b5c2ec3c5f86aa30c22aa8ce56dd239a85b1b Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 16 Jul 2019 09:33:59 -0700 Subject: [PATCH 1441/2943] link fixes --- docs/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/index.md b/docs/index.md index 8784d2da0..7ee3821b1 100644 --- a/docs/index.md +++ b/docs/index.md @@ -218,7 +218,7 @@ hide_bc: true dotnet CLI

    - nuget.exe CLI + nuget.exe CLI

    .nuspec @@ -227,7 +227,7 @@ hide_bc: true nuget.config

    - NuGet API + NuGet API

    From 673fc6c0471be8a3effbe938d8d032e0babb3c3c Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 16 Jul 2019 09:37:31 -0700 Subject: [PATCH 1442/2943] link fixes --- docs/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/index.md b/docs/index.md index 7ee3821b1..059fda7fb 100644 --- a/docs/index.md +++ b/docs/index.md @@ -109,10 +109,10 @@ hide_bc: true Manage packages - dotnet CLI

    - Manage packages - nuget.exe CLI + Manage packages - nuget.exe CLI

    - Manage packages - Package Manager Console + Manage packages - Package Manager Console

    Package references in project files From a23b62086a16daf5f2f25d5364338be87bfa2cb6 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 16 Jul 2019 09:49:53 -0700 Subject: [PATCH 1443/2943] icon update --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 059fda7fb..03fe8bfe8 100644 --- a/docs/index.md +++ b/docs/index.md @@ -209,7 +209,7 @@ hide_bc: true

    - API icon + API icon
    From aaeaa71f355dc451166e6de87ecb4c99bd241c22 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 16 Jul 2019 11:03:31 -0700 Subject: [PATCH 1444/2943] tweak --- docs/create-packages/creating-a-package-dotnet-cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/creating-a-package-dotnet-cli.md b/docs/create-packages/creating-a-package-dotnet-cli.md index 12ac604f1..c9ebebb5d 100644 --- a/docs/create-packages/creating-a-package-dotnet-cli.md +++ b/docs/create-packages/creating-a-package-dotnet-cli.md @@ -15,7 +15,7 @@ For .NET Core and .NET Standard projects that use the [SDK-style format](../reso `msbuild -t:pack` is functionality equivalent to `dotnet pack`. To build with MSBuild, the concepts are the same as described in this article, but the command line commands are slightly different. -> [!Important] +> [!IMPORTANT] > This topic applies to [SDK-style](../resources/check-project-format.md) projects, typically .NET Core and .NET Standard projects. ## Set properties From 16bbd0922d693c2e53cf516a402b5f357b5c3fb6 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 16 Jul 2019 12:21:38 -0700 Subject: [PATCH 1445/2943] added article for multitargeting in your project file --- .../Supporting-Multiple-Target-Frameworks.md | 6 +- .../multitargeting-sdk-projects.md | 66 +++++++++++++++++++ docs/reference/target-frameworks.md | 5 +- 3 files changed, 72 insertions(+), 5 deletions(-) create mode 100644 docs/create-packages/multitargeting-sdk-projects.md diff --git a/docs/create-packages/Supporting-Multiple-Target-Frameworks.md b/docs/create-packages/Supporting-Multiple-Target-Frameworks.md index b95e37854..ea312ebc0 100644 --- a/docs/create-packages/Supporting-Multiple-Target-Frameworks.md +++ b/docs/create-packages/Supporting-Multiple-Target-Frameworks.md @@ -3,13 +3,13 @@ title: Multi-targeting for NuGet Packages description: Description of the various methods to target multiple .NET Framework versions from within a single NuGet package. author: karann-msft ms.author: karann -ms.date: 09/27/2017 +ms.date: 07/15/2019 ms.topic: conceptual --- -# Supporting multiple .NET framework versions +# Supporting multiple .NET versions -*For .NET Core projects using NuGet 4.0+, see [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md) for details on cross-targeting.* +*For .NET Core projects using NuGet 4.0+, see [Support multiple .NET Framework versions in your project file](multitargeting-sdk-projects.md) and [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md) for details on cross-targeting.* Many libraries target a specific version of the .NET Framework. For example, you might have one version of your library that's specific to UWP, and another version that takes advantage of features in .NET Framework 4.6. diff --git a/docs/create-packages/multitargeting-sdk-projects.md b/docs/create-packages/multitargeting-sdk-projects.md new file mode 100644 index 000000000..ceac6cb8c --- /dev/null +++ b/docs/create-packages/multitargeting-sdk-projects.md @@ -0,0 +1,66 @@ +--- +title: Multi-targeting for NuGet Packages in your project file +description: Description of the various methods to target multiple .NET Framework versions from within a single NuGet package. +author: karann-msft +ms.author: karann +ms.date: 07/15/2019 +ms.topic: conceptual +--- + +# Support multiple .NET Framework versions in your project file + +When you first create a project, we recommend you create a .NET Standard class library, as it provides compatibility with the widest range of consuming projects. By using .NET Standard, you enable some support for multiple frameworks by default. However, in some scenarios, you may also need to include code that targets a particular framework. This article shows you how to do that for [SDK-style](../resources/check-project-format.md) projects. + +For SDK-style projects, you can configure support for multiple targets frameworks ([TFM](/dotnet/standard/frameworks)) in your project file, then use `dotnet pack` or `msbuild /t:pack` to create the package. + +> [!NOTE] +> nuget.exe CLI does not support packing SDK-style projects, so you should only use `dotnet pack` or `msbuild /t:pack`. We recommend that you [include all the properties](../reference/msbuild-targets.md#pack-target) that are usually in the `.nuspec` file in the project file instead. To target multiple .NET Framework versions in a non-SDK-style project, see [Supporting multiple .NET Framework versions](supporting-multiple-target-frameworks.md). + +## Create a project that supports multiple .NET Framework versions + +1. Create a new class library either in Visual Studio or use `dotnet new classlib`. + + We recommend that you create a .NET Standard class library for maximum compatibility. + +2. Edit the *.csproj* file to support the target frameworks. + + For example, change `netstandard2.0` to `netstandard2.0;net45`. + + Make sure that you change the XML element changed from singular to plural (add the "s" to both the open and close tags). + +3. If you have any code that only works in one TFM, you can use `#if NET45` or `#if NETSTANDARD20` to separate TFM-dependent code. For example, you can use the following code: + + ```csharp + public string Platform { + get { + #if NET45 + return ".NET Framework" + #elseif NETSTANDARD2_0 + return ".NET Standard" + #else + #error This code block does not match csproj TargetFrameworks list + #endif + } + } + ``` + +4. Add any NuGet metadata you want to the *.csproj* as MSBuild properties. + + For the list of available metadata and the MSBuild property names, see [pack target](../reference/msbuild-targets.md#pack-target). Also see [Controlling dependency assets](../consume-packages/package-references-in-project-files.md#controlling-dependency-assets). + + If you want to separate build-related properties from NuGet metadata, you can use a different `PropertyGroup`, or put the NuGet properties in another file and use MSBuild's `Import` directive to include it. + +5. Now, use `dotnet pack` and the resulting *.nupkg* targets both .NET Standard 2.0 and .NET Framework 4.5. + +Here is the *.csproj* file that is generated using the preceding steps and .NET Core SDK 2.2. + +```xml + + + + netstandard2.0;net45 + Sample project that targets multiple TFMs + + + +``` \ No newline at end of file diff --git a/docs/reference/target-frameworks.md b/docs/reference/target-frameworks.md index 477c86863..31b84c3b8 100644 --- a/docs/reference/target-frameworks.md +++ b/docs/reference/target-frameworks.md @@ -12,6 +12,7 @@ ms.reviewer: anangaur NuGet uses target framework references in a variety of places to specifically identify and isolate framework-dependent components of a package: +- [project file](../create-packages/multitargeting-sdk-projects.md): For SDK-style projects, the *.csproj* contains the target framework references. - [.nuspec manifest](../reference/nuspec.md): A package can indicate distinct packages to be included in a project depending on the project's target framework. - [.nupkg folder name](../create-packages/creating-a-package.md#from-a-convention-based-working-directory): The folders inside a package's `lib` folder can be named according to the target framework, each of which contains the DLLs and other content appropriate to that framework. - [packages.config](../reference/packages-config.md): The `targetframework` attribute of a dependency specifies the variant of a package to install. @@ -115,9 +116,9 @@ A number of frameworks are related to and compatible with one another, but not n | win (Microsoft Store) | winrt | | | | -## NET Platform Standard +## NET Standard -The [.NET Platform Standard](https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md) simplifies references between binary-compatible frameworks, allowing a single target framework to reference a combination of others. (For background, see the [.NET Primer](/dotnet/articles/standard/index).) +[.NET Standard](/dotnet/standard/net-standard) simplifies references between binary-compatible frameworks, allowing a single target framework to reference a combination of others. (For background, see the [.NET Primer](/dotnet/articles/standard/index).) The [NuGet Get Nearest Framework Tool](https://aka.ms/s2m3th) simulates what NuGet uses to select one framework from many available framework assets in a package based on the project's framework. From 944c94356a1deac4aa30da7be41d564adba9f2ba Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 16 Jul 2019 12:26:35 -0700 Subject: [PATCH 1446/2943] filename change --- docs/TOC.md | 1 + ...dk-projects.md => multiple-target-frameworks-project-file.md} | 0 2 files changed, 1 insertion(+) rename docs/create-packages/{multitargeting-sdk-projects.md => multiple-target-frameworks-project-file.md} (100%) diff --git a/docs/TOC.md b/docs/TOC.md index 5bc72be7f..ea3da1a57 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -33,6 +33,7 @@ ## [Overview and workflow](create-packages/overview-and-workflow.md) ## [Create a package](create-packages/creating-a-package.md) ## [Create a package using MSBuild](reference/msbuild-targets.md) +## [Support multipe target frameworks in your project file](multiple-target-frameworks-project-file.md) ## [Support multiple target frameworks](create-packages/supporting-multiple-target-frameworks.md) ## [Build a prerelease package](create-packages/prerelease-packages.md) ## [Create a symbol package](create-packages/symbol-packages-snupkg.md) diff --git a/docs/create-packages/multitargeting-sdk-projects.md b/docs/create-packages/multiple-target-frameworks-project-file.md similarity index 100% rename from docs/create-packages/multitargeting-sdk-projects.md rename to docs/create-packages/multiple-target-frameworks-project-file.md From dd6f0286b54a0a0bc83b56788ff1223ce9f7292d Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 16 Jul 2019 12:45:21 -0700 Subject: [PATCH 1447/2943] link fixes --- docs/TOC.md | 2 +- docs/create-packages/Supporting-Multiple-Target-Frameworks.md | 2 +- docs/reference/target-frameworks.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index ea3da1a57..ecc4075a9 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -33,7 +33,7 @@ ## [Overview and workflow](create-packages/overview-and-workflow.md) ## [Create a package](create-packages/creating-a-package.md) ## [Create a package using MSBuild](reference/msbuild-targets.md) -## [Support multipe target frameworks in your project file](multiple-target-frameworks-project-file.md) +## [Support multipe target frameworks in your project file](create-packages/multiple-target-frameworks-project-file.md) ## [Support multiple target frameworks](create-packages/supporting-multiple-target-frameworks.md) ## [Build a prerelease package](create-packages/prerelease-packages.md) ## [Create a symbol package](create-packages/symbol-packages-snupkg.md) diff --git a/docs/create-packages/Supporting-Multiple-Target-Frameworks.md b/docs/create-packages/Supporting-Multiple-Target-Frameworks.md index ea312ebc0..87634a986 100644 --- a/docs/create-packages/Supporting-Multiple-Target-Frameworks.md +++ b/docs/create-packages/Supporting-Multiple-Target-Frameworks.md @@ -9,7 +9,7 @@ ms.topic: conceptual # Supporting multiple .NET versions -*For .NET Core projects using NuGet 4.0+, see [Support multiple .NET Framework versions in your project file](multitargeting-sdk-projects.md) and [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md) for details on cross-targeting.* +*For .NET Core projects using NuGet 4.0+, see [Support multiple .NET Framework versions in your project file](support-multiple-target-frameworks-project-file.md) and [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md) for details on cross-targeting.* Many libraries target a specific version of the .NET Framework. For example, you might have one version of your library that's specific to UWP, and another version that takes advantage of features in .NET Framework 4.6. diff --git a/docs/reference/target-frameworks.md b/docs/reference/target-frameworks.md index 31b84c3b8..fb8f510a3 100644 --- a/docs/reference/target-frameworks.md +++ b/docs/reference/target-frameworks.md @@ -12,7 +12,7 @@ ms.reviewer: anangaur NuGet uses target framework references in a variety of places to specifically identify and isolate framework-dependent components of a package: -- [project file](../create-packages/multitargeting-sdk-projects.md): For SDK-style projects, the *.csproj* contains the target framework references. +- [project file](../create-packages/multiple-target-frameworks-project-file.md): For SDK-style projects, the *.csproj* contains the target framework references. - [.nuspec manifest](../reference/nuspec.md): A package can indicate distinct packages to be included in a project depending on the project's target framework. - [.nupkg folder name](../create-packages/creating-a-package.md#from-a-convention-based-working-directory): The folders inside a package's `lib` folder can be named according to the target framework, each of which contains the DLLs and other content appropriate to that framework. - [packages.config](../reference/packages-config.md): The `targetframework` attribute of a dependency specifies the variant of a package to install. From cc0c9aefe31e763cca82bfa4aba474e5e8de25a7 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 16 Jul 2019 12:50:15 -0700 Subject: [PATCH 1448/2943] link fix --- docs/create-packages/Supporting-Multiple-Target-Frameworks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/Supporting-Multiple-Target-Frameworks.md b/docs/create-packages/Supporting-Multiple-Target-Frameworks.md index 87634a986..1f4af1836 100644 --- a/docs/create-packages/Supporting-Multiple-Target-Frameworks.md +++ b/docs/create-packages/Supporting-Multiple-Target-Frameworks.md @@ -9,7 +9,7 @@ ms.topic: conceptual # Supporting multiple .NET versions -*For .NET Core projects using NuGet 4.0+, see [Support multiple .NET Framework versions in your project file](support-multiple-target-frameworks-project-file.md) and [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md) for details on cross-targeting.* +*For .NET Core projects using NuGet 4.0+, see [Support multiple .NET Framework versions in your project file](multiple-target-frameworks-project-file.md) and [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md) for details on cross-targeting.* Many libraries target a specific version of the .NET Framework. For example, you might have one version of your library that's specific to UWP, and another version that takes advantage of features in .NET Framework 4.6. From c75aeebda4f13ac63fccd4e65c53b1191008c6d8 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 16 Jul 2019 15:59:52 -0700 Subject: [PATCH 1449/2943] minor edits --- ...multiple-target-frameworks-project-file.md | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/docs/create-packages/multiple-target-frameworks-project-file.md b/docs/create-packages/multiple-target-frameworks-project-file.md index ceac6cb8c..a1f6c1808 100644 --- a/docs/create-packages/multiple-target-frameworks-project-file.md +++ b/docs/create-packages/multiple-target-frameworks-project-file.md @@ -9,7 +9,7 @@ ms.topic: conceptual # Support multiple .NET Framework versions in your project file -When you first create a project, we recommend you create a .NET Standard class library, as it provides compatibility with the widest range of consuming projects. By using .NET Standard, you enable some support for multiple frameworks by default. However, in some scenarios, you may also need to include code that targets a particular framework. This article shows you how to do that for [SDK-style](../resources/check-project-format.md) projects. +When you first create a project, we recommend you create a .NET Standard class library, as it provides compatibility with the widest range of consuming projects. By using .NET Standard, you add [cross-platform support](/dotnet/standard/library-guidance/cross-platform-targeting) to a .NET library by default. However, in some scenarios, you may also need to include code that targets a particular framework. This article shows you how to do that for [SDK-style](../resources/check-project-format.md) projects. For SDK-style projects, you can configure support for multiple targets frameworks ([TFM](/dotnet/standard/frameworks)) in your project file, then use `dotnet pack` or `msbuild /t:pack` to create the package. @@ -18,9 +18,9 @@ For SDK-style projects, you can configure support for multiple targets framework ## Create a project that supports multiple .NET Framework versions -1. Create a new class library either in Visual Studio or use `dotnet new classlib`. +1. Create a new .NET Standard class library either in Visual Studio or use `dotnet new classlib`. - We recommend that you create a .NET Standard class library for maximum compatibility. + We recommend that you create a .NET Standard class library for best compatibility. 2. Edit the *.csproj* file to support the target frameworks. @@ -33,13 +33,13 @@ For SDK-style projects, you can configure support for multiple targets framework ```csharp public string Platform { get { - #if NET45 + #if NET45 return ".NET Framework" - #elseif NETSTANDARD2_0 + #elif NETSTANDARD2_0 return ".NET Standard" - #else - #error This code block does not match csproj TargetFrameworks list - #endif + #else + #error This code block does not match csproj TargetFrameworks list + #endif } } ``` @@ -63,4 +63,9 @@ Here is the *.csproj* file that is generated using the preceding steps and .NET -``` \ No newline at end of file +``` + +## See also + +[How to specify target frameworks](/dotnet/standard/frameworks#how-to-specify-target-frameworks) +[Cross-platform targeting](/dotnet/standard/library-guidance/cross-platform-targeting) From 67f4edece6f961d8785f2f588437067dd1913aed Mon Sep 17 00:00:00 2001 From: Mike Jones Date: Wed, 17 Jul 2019 14:30:16 -0700 Subject: [PATCH 1450/2943] Update docs/create-packages/multiple-target-frameworks-project-file.md Co-Authored-By: Andy Zivkovic --- docs/create-packages/multiple-target-frameworks-project-file.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-packages/multiple-target-frameworks-project-file.md b/docs/create-packages/multiple-target-frameworks-project-file.md index a1f6c1808..b96d63db8 100644 --- a/docs/create-packages/multiple-target-frameworks-project-file.md +++ b/docs/create-packages/multiple-target-frameworks-project-file.md @@ -46,7 +46,7 @@ For SDK-style projects, you can configure support for multiple targets framework 4. Add any NuGet metadata you want to the *.csproj* as MSBuild properties. - For the list of available metadata and the MSBuild property names, see [pack target](../reference/msbuild-targets.md#pack-target). Also see [Controlling dependency assets](../consume-packages/package-references-in-project-files.md#controlling-dependency-assets). + For the list of available package metadata and the MSBuild property names, see [pack target](../reference/msbuild-targets.md#pack-target). Also see [Controlling dependency assets](../consume-packages/package-references-in-project-files.md#controlling-dependency-assets). If you want to separate build-related properties from NuGet metadata, you can use a different `PropertyGroup`, or put the NuGet properties in another file and use MSBuild's `Import` directive to include it. From 644707513e802da351ea1d7db64230586035fe4a Mon Sep 17 00:00:00 2001 From: Mike Jones Date: Wed, 17 Jul 2019 14:30:30 -0700 Subject: [PATCH 1451/2943] Update docs/TOC.md Co-Authored-By: Andy Zivkovic --- docs/TOC.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index ecc4075a9..4b6f985e5 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -33,7 +33,7 @@ ## [Overview and workflow](create-packages/overview-and-workflow.md) ## [Create a package](create-packages/creating-a-package.md) ## [Create a package using MSBuild](reference/msbuild-targets.md) -## [Support multipe target frameworks in your project file](create-packages/multiple-target-frameworks-project-file.md) +## [Support multiple target frameworks in your project file](create-packages/multiple-target-frameworks-project-file.md) ## [Support multiple target frameworks](create-packages/supporting-multiple-target-frameworks.md) ## [Build a prerelease package](create-packages/prerelease-packages.md) ## [Create a symbol package](create-packages/symbol-packages-snupkg.md) @@ -339,4 +339,4 @@ #### [NuGet 1.1](release-notes/NuGet-1.1.md) ## [FAQs](faqs/nuget-faq.md) ## [Project format](resources/check-project-format.md) -# [NuGet.org](nuget-org/overview-nuget-org.md) \ No newline at end of file +# [NuGet.org](nuget-org/overview-nuget-org.md) From 451c466890418f13be118b60951125b75f42423d Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Wed, 17 Jul 2019 15:38:59 -0700 Subject: [PATCH 1452/2943] incorporated feedback --- docs/TOC.md | 2 +- .../Supporting-Multiple-Target-Frameworks.md | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/TOC.md b/docs/TOC.md index 4b6f985e5..1f4858f5c 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -34,10 +34,10 @@ ## [Create a package](create-packages/creating-a-package.md) ## [Create a package using MSBuild](reference/msbuild-targets.md) ## [Support multiple target frameworks in your project file](create-packages/multiple-target-frameworks-project-file.md) -## [Support multiple target frameworks](create-packages/supporting-multiple-target-frameworks.md) ## [Build a prerelease package](create-packages/prerelease-packages.md) ## [Create a symbol package](create-packages/symbol-packages-snupkg.md) ## Advanced tasks +### [Support multiple target frameworks](create-packages/supporting-multiple-target-frameworks.md) ### [Modify source code and config files](create-packages/source-and-config-file-transformations.md) ### [Select assemblies referenced by projects](create-packages/select-assemblies-referenced-by-projects.md) ### [Set package type](create-packages/set-package-type.md) diff --git a/docs/create-packages/Supporting-Multiple-Target-Frameworks.md b/docs/create-packages/Supporting-Multiple-Target-Frameworks.md index 1f4af1836..c66f70957 100644 --- a/docs/create-packages/Supporting-Multiple-Target-Frameworks.md +++ b/docs/create-packages/Supporting-Multiple-Target-Frameworks.md @@ -7,13 +7,13 @@ ms.date: 07/15/2019 ms.topic: conceptual --- -# Supporting multiple .NET versions +# Support multiple .NET versions -*For .NET Core projects using NuGet 4.0+, see [Support multiple .NET Framework versions in your project file](multiple-target-frameworks-project-file.md) and [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md) for details on cross-targeting.* +Many libraries target a specific version of the .NET Framework. For example, you might have one version of your library that's specific to UWP, and another version that takes advantage of features in .NET Framework 4.6. To accommodate this, NuGet supports putting multiple versions of the same library in a single package. -Many libraries target a specific version of the .NET Framework. For example, you might have one version of your library that's specific to UWP, and another version that takes advantage of features in .NET Framework 4.6. +This article describes the layout of a NuGet package, regardless of how the package or assemblies are built (that is, the layout is the same whether using multiple non-SDK-style *.csproj* files and a custom *.nuspec* file, or a single multi-targetecd SDK-style *.csproj*). For an SDK-style project, NuGet [pack targets](../reference/msbuild-targets.md) knows how the package must be layed out and automates putting the assemblies in the correct lib folders and creating dependency groups for each target framework (TFM). For detailed instructions, see [Support multiple .NET Framework versions in your project file](multiple-target-frameworks-project-file.md). -To accommodate this, NuGet supports putting multiple versions of the same library in a single package when using the convention-based working directory method described in [Creating a package](../create-packages/creating-a-package.md#from-a-convention-based-working-directory). +You must manually lay out the package as described in this article when using the convention-based working directory method described in [Creating a package](../create-packages/creating-a-package.md#from-a-convention-based-working-directory). For an SDK-style project, the automated method is recommended, but you may also choose to manually lay out the package as described in this article. ## Framework version folder structure From 3424ebbeaba6cef967aba2e23f2ba586ea027542 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Wed, 17 Jul 2019 16:08:26 -0700 Subject: [PATCH 1453/2943] minor updates --- docs/reference/migrate-packages-config-to-package-reference.md | 2 +- docs/reference/nuspec.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/reference/migrate-packages-config-to-package-reference.md b/docs/reference/migrate-packages-config-to-package-reference.md index faaf1d130..bba29553d 100644 --- a/docs/reference/migrate-packages-config-to-package-reference.md +++ b/docs/reference/migrate-packages-config-to-package-reference.md @@ -85,7 +85,7 @@ 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 pack](../reference/msbuild-targets.md#pack-target) to create the package. Although in some scenarios you could use `dotnet.exe pack` instead of `msbuild pack`, it is not recommended. +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. ## Package compatibility issues diff --git a/docs/reference/nuspec.md b/docs/reference/nuspec.md index 9070c4467..86bf19ed3 100644 --- a/docs/reference/nuspec.md +++ b/docs/reference/nuspec.md @@ -31,7 +31,7 @@ In this topic: If you are creating a package using `dotnet.exe pack` or `msbuild pack target`, we recommend that you [include all the properties](../reference/msbuild-targets.md#pack-target) that are usually in the `.nuspec` file in the project file instead. However, you can instead choose to [use a `.nuspec` file to pack using `dotnet.exe` or `msbuild pack target`](../reference/msbuild-targets.md#packing-using-a-nuspec). -- For projects migrated from `packages.config` to [PackageReference](../consume-packages/package-references-in-project-files.md), a `.nuspec` file is not required to create the package. Instead, use [msbuild pack](../reference/migrate-packages-config-to-package-reference.md#create-a-package-after-migration). +- For projects migrated from `packages.config` to [PackageReference](../consume-packages/package-references-in-project-files.md), a `.nuspec` file is not required to create the package. Instead, use [msbuild -t:pack](../reference/migrate-packages-config-to-package-reference.md#create-a-package-after-migration). ## General form and schema From 67d78645151c2e88a4b34202e0ce04ed8958d838 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Thu, 18 Jul 2019 08:27:34 -0700 Subject: [PATCH 1454/2943] minor edits --- docs/consume-packages/install-use-packages-nuget-cli.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/consume-packages/install-use-packages-nuget-cli.md b/docs/consume-packages/install-use-packages-nuget-cli.md index 3b7abd192..2a18b1f77 100644 --- a/docs/consume-packages/install-use-packages-nuget-cli.md +++ b/docs/consume-packages/install-use-packages-nuget-cli.md @@ -11,12 +11,12 @@ ms.topic: conceptual The CLI tool allows you to easily update and restore NuGet packages in projects and solutions. This tool provides all NuGet capabilities on Windows, and also provides most features on Mac and Linux when running under Mono. -The nuget.exe CLI is for your .NET Framework project and non-SDK-style projects (for example, a non-SDK style project that targets .NET Standard libraries). If you are using a non-SDK-style project that has been migrated to `PackageReference`, use the dotnet CLI instead. The NuGet CLI requires a [packages.config](../reference/packages-config.md) file for package references. +The `nuget.exe` CLI is for your .NET Framework project and non-SDK-style projects (for example, a non-SDK style project that targets .NET Standard libraries). If you are using a non-SDK-style project that has been migrated to `PackageReference`, use the `dotnet` CLI instead. The `nuget.exe` CLI requires a [packages.config](../reference/packages-config.md) file for package references. > [!NOTE] -> In most scenarios, we recommend [migrating non-SDK-style projects](../reference/migrate-packages-config-to-package-reference.md) that use `packages.config` to PackageReference, and then you can use the dotnet CLI instead of the `nuget.exe` CLI. Migration is not currently available for C++ and ASP.NET projects. +> In most scenarios, we recommend [migrating non-SDK-style projects](../reference/migrate-packages-config-to-package-reference.md) that use `packages.config` to PackageReference, and then you can use the `dotnet` CLI instead of the `nuget.exe` CLI. Migration is not currently available for C++ and ASP.NET projects. -This article shows you basic usage for a few of the most common nuget.exe CLI commands. For most of these commands, the CLI tool looks for a project file in the current directory, unless a project file is specified in the command. For a complete list of commands and the arguments you may use, see the [nuget.exe CLI reference](../reference/nuget-exe-cli-reference.md). +This article shows you basic usage for a few of the most common `nuget.exe` CLI commands. For most of these commands, the CLI tool looks for a project file in the current directory, unless a project file is specified in the command. For a complete list of commands and the arguments you may use, see the [nuget.exe CLI reference](../reference/nuget-exe-cli-reference.md). ## Prerequisites @@ -109,7 +109,7 @@ Use the [restore](../reference/cli-reference/cli-ref-restore.md) command, which `restore` only adds packages to disk but does not change a project's dependencies. To restore project dependencies, modify `packages.config`, then use the `restore` command. -As with the other `dotnet` CLI commands, first open a command line and switch to the directory that contains your project file. +As with the other `nuget.exe` CLI commands, first open a command line and switch to the directory that contains your project file. To restore a package using `restore`: From bb2c848844540aa064b3048aca2f5db53fac25f5 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Thu, 18 Jul 2019 09:06:17 -0700 Subject: [PATCH 1455/2943] link fix' --- docs/consume-packages/Overview-and-Workflow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/consume-packages/Overview-and-Workflow.md b/docs/consume-packages/Overview-and-Workflow.md index 13e19fb0c..32cca6406 100644 --- a/docs/consume-packages/Overview-and-Workflow.md +++ b/docs/consume-packages/Overview-and-Workflow.md @@ -45,4 +45,4 @@ NuGet packages are downloaded and installed using any of the methods in the foll | [dotnet.exe CLI](install-use-packages-dotnet-cli.md) | (All platforms) CLI tool for .NET Core and .NET Standard libraries, and for SDK-style projects that target .NET Framework (see [SDK attribute](/dotnet/core/tools/csproj#additions)). Retrieves the package identified by \ and adds a reference to the project file. Also retrieves and installs dependencies. | | Visual Studio | (Windows and Mac) Provides a UI through which you can browse, select, and install packages and their dependencies into a project from a specified package source. Adds references to installed packages to the project file.
    • [Install and manage packages using Visual Studio](install-use-packages-visual-studio.md)
    • [Including a NuGet package in your project (Mac)](/visualstudio/mac/nuget-walkthrough)
    | | [Package Manager Console (Visual Studio)](install-use-packages-powershell.md) | (Windows only) Retrieves and installs the package identified by \ from a selected source into a specified project in the solution, then adds a reference to the project file. Also retrieves and installs dependencies. | -| [nuget.exe CLI](install-use-packages-dotnet-cli.md) | (All platforms) CLI tool for .NET Framework libraries and non-SDK-style projects that target .NET Standard libraries. Retrieves the package identified by \ and expands its contents into a folder in the current directory; can also retrieve all packages listed in a `packages.config` file. Also retrieves and installs dependencies, but makes no changes to project files or `packages.config`. | +| [nuget.exe CLI](install-use-packages-nuget-cli.md) | (All platforms) CLI tool for .NET Framework libraries and non-SDK-style projects that target .NET Standard libraries. Retrieves the package identified by \ and expands its contents into a folder in the current directory; can also retrieve all packages listed in a `packages.config` file. Also retrieves and installs dependencies, but makes no changes to project files or `packages.config`. | From 016f66b6aeb88239b4cec8b5221f708ecbdda0d6 Mon Sep 17 00:00:00 2001 From: Mattias Karlsson Date: Thu, 18 Jul 2019 19:28:01 +0200 Subject: [PATCH 1456/2943] (GH-1481) Clarify repository elemeent commit attribute * Adjust attribute formatting * Clarify commit SHA-1 hash * Add repository element example * fixes #1481 --- docs/reference/nuspec.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/reference/nuspec.md b/docs/reference/nuspec.md index 86bf19ed3..16d8467e5 100644 --- a/docs/reference/nuspec.md +++ b/docs/reference/nuspec.md @@ -166,7 +166,19 @@ A space-delimited list of tags and keywords that describe the package and aid di *(3.3+)* For internal NuGet use only. #### repository -Repository metadata, consisting of four optional attributes: *type* and *url* *(4.0+)*, and *branch* and *commit* *(4.6+)*. These attributes allow you to map the .nupkg to the repository that built it, with the potential to get as detailed as the individual branch or commit that built the package. This should be a publicly available url that can be invoked directly by a version control software. It should not be an html page as this is meant for the computer. For linking to project page, use the `projectUrl` field, instead. +Repository metadata, consisting of four optional attributes: `type` and `url` *(4.0+)*, and `branch` and `commit` *(4.6+)*. These attributes allow you to map the `.nupkg` to the repository that built it, with the potential to get as detailed as the individual branch name and / or commit SHA-1 hash that built the package. This should be a publicly available url that can be invoked directly by a version control software. It should not be an html page as this is meant for the computer. For linking to project page, use the `projectUrl` field, instead. + +For example: +```xml + + + + ... + + ... + + +``` #### minClientVersion Specifies the minimum version of the NuGet client that can install this package, enforced by nuget.exe and the Visual Studio Package Manager. This is used whenever the package depends on specific features of the `.nuspec` file that were added in a particular version of the NuGet client. For example, a package using the `developmentDependency` attribute should specify "2.8" for `minClientVersion`. Similarly, a package using the `contentFiles` element (see the next section) should set `minClientVersion` to "3.3". Note also that because NuGet clients prior to 2.5 do not recognize this flag, they *always* refuse to install the package no matter what `minClientVersion` contains. From b8fdaa0b71a9cb88e41d5bb56383b77d0509ed16 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Thu, 18 Jul 2019 15:41:47 -0700 Subject: [PATCH 1457/2943] incorporated feedback --- .../creating-a-package-dotnet-cli.md | 30 +++++-------------- docs/reference/msbuild-targets.md | 8 +++-- 2 files changed, 12 insertions(+), 26 deletions(-) diff --git a/docs/create-packages/creating-a-package-dotnet-cli.md b/docs/create-packages/creating-a-package-dotnet-cli.md index c9ebebb5d..bfa019e5b 100644 --- a/docs/create-packages/creating-a-package-dotnet-cli.md +++ b/docs/create-packages/creating-a-package-dotnet-cli.md @@ -13,7 +13,7 @@ No matter what your package does or what code it contains, you use one of the CL 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 detailed steps, see [Create .NET Standard Packages with dotnet CLI](../quickstart/create-and-publish-a-package-using-the-dotnet-cli.md), [Create .NET Standard Packages with Visual Studio](../quickstart/create-and-publish-a-package-using-visual-studio.md) or [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md). -`msbuild -t:pack` is functionality equivalent to `dotnet pack`. To build with MSBuild, the concepts are the same as described in this article, but the command line commands are slightly different. +`msbuild -t:pack` is functionality equivalent to `dotnet pack`. To build with MSBuild, the concepts are the same as described in this article, but the command line commands are slightly different. Similarly, with a non-SDK-style project and ``, you can use `msbuild /t:pack`. In these scenarios, you need to add the NuGet.Build.Tasks.Pack package to their dependencies. > [!IMPORTANT] > This topic applies to [SDK-style](../resources/check-project-format.md) projects, typically .NET Core and .NET Standard projects. @@ -22,11 +22,11 @@ For .NET Core and .NET Standard projects that use the [SDK-style format](../reso The following properties are required to create a package. -- `PackageId`, the package identifier, which must be unique across the gallery that hosts the package. -- `Version`, a specific version number in the form *Major.Minor.Patch[-Suffix]* where *-Suffix* identifies [pre-release versions](prerelease-packages.md) +- `PackageId`, the package identifier, which must be unique across the gallery that hosts the package. If not specified, the default value is `AssemblyName`. +- `Version`, a specific version number in the form *Major.Minor.Patch[-Suffix]* where *-Suffix* identifies [pre-release versions](prerelease-packages.md). If not specified, the default value is 1.0.0. - The package title as it should appear on the host (like nuget.org) -- `Authors`, author and owner information. -- `Company`, your company name. +- `Authors`, author and owner information. If not specified, the default value is `AssemblyName`. +- `Company`, your company name. If not specified, the default value is `AssemblyName`. In Visual Studio, you can set these values in the project properties (right-click the project in Solution Explorer, choose **Properties**, and select the **Package** tab). You can also set these properties directly in the project files (`.csproj`). @@ -63,30 +63,14 @@ The package identifier and the version number are the two most important values **Best practices for the package version:** - In general, set the version of the package to match the project (or assembly), though this is not strictly required. This is a simple matter when you limit a package to a single assembly. Overall, remember that NuGet itself deals with package versions when resolving dependencies, not assembly versions. -- When using a non-standard version scheme, be sure to consider the NuGet versioning rules as explained in [Package versioning](../reference/package-versioning.md). +- When using a non-standard version scheme, be sure to consider the NuGet versioning rules as explained in [Package versioning](../reference/package-versioning.md). NuGet is mostly [semver 2 compliant](../reference/package-versioning#semantic-versioning-200). -> The following series of brief blog posts are also helpful to understand versioning: +> For information on dependency resolution, see [Dependency resolution with PackageReference](../consume-packages/dependency-resolution#dependency-resolution-with-packagereference). For older information that may also be helpful to better understand versioning, see this series of blog posts. > > - [Part 1: Taking on DLL Hell](http://blog.davidebbo.com/2011/01/nuget-versioning-part-1-taking-on-dll.html) > - [Part 2: The core algorithm](http://blog.davidebbo.com/2011/01/nuget-versioning-part-2-core-algorithm.html) > - [Part 3: Unification via Binding Redirects](http://blog.davidebbo.com/2011/01/nuget-versioning-part-3-unification-via.html) -## Include MSBuild props and targets in a package (Advanced) - -In some cases, you might want to add custom build targets or properties in projects that consume your package, such as running a custom tool or process during build. You can do this by placing files in the form `.targets` or `.props` (such as `Contoso.Utility.UsefulStuff.targets`) within the `\build` folder of the project. - -In the project file, use `` or `` and set the value to `build`. For more information, see [Controlling dependency assets](../consume-packages/package-references-in-project-files.md#controlling-dependency-assets) and [Additions to the csproj format](/dotnet/core/tools/csproj#additions). - -Files in the root `\build` folder are considered suitable for all target frameworks. To provide framework-specific files, first place them within appropriate subfolders, such as the following: - - \build - \netstandard2.0 - \Contoso.Utility.UsefulStuff.props - \Contoso.Utility.UsefulStuff.targets - \net462 - \Contoso.Utility.UsefulStuff.props - \Contoso.Utility.UsefulStuff.targets - ## Run the pack command To build a NuGet package (a `.nupkg` file) from the project, run the `dotnet pack` command, which also builds the project automatically: diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index aa3f8d238..d0eb6b487 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -221,7 +221,9 @@ When using `MSBuild -t:pack -p:IsTool=true`, all output files, as specified in t ### Packing using a .nuspec -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. To use `.nuspec`, you must have an SDK project file that imports `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. 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`: +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. + +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`: 1. `NuspecFile`: relative or absolute path to the `.nuspec` file being used for packing. 1. `NuspecProperties`: a semicolon-separated list of key=value pairs. Due to the way MSBuild command-line parsing works, multiple properties must be specified as follows: `-p:NuspecProperties=\"key1=value1;key2=value2\"`. @@ -239,9 +241,9 @@ If using MSBuild to pack your project, use a command like the following: msbuild -t:pack -p:NuspecFile= -p:NuspecProperties=<> -p:NuspecBasePath= ``` -Please note that packing a nuspec using dotnet.exe or msbuild also leads to building the project by default. This can be avoided by passing ```--no-build``` property to dotnet.exe, which is the equivalent of setting ```true ``` in your project file, along with setting ```false ``` in the project file +Please note that packing a nuspec using dotnet.exe or msbuild also leads to building the project by default. This can be avoided by passing ```--no-build``` property to dotnet.exe, which is the equivalent of setting ```true ``` in your project file, along with setting ```false ``` in the project file. -An example of a csproj file to pack a nuspec file is: +An example of a *.csproj* file to pack a nuspec file is: ```xml From a46ecf4ccd4eb9e530ce8d122f7235e9df95e534 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Thu, 18 Jul 2019 15:49:54 -0700 Subject: [PATCH 1458/2943] tweak --- docs/reference/msbuild-targets.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index d0eb6b487..6f5688bc6 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -221,7 +221,7 @@ When using `MSBuild -t:pack -p:IsTool=true`, all output files, as specified in t ### Packing using a .nuspec -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. 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.) 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`: From cb6c714e3f88343ef651d5e62f528683abbd0a40 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Thu, 18 Jul 2019 15:52:15 -0700 Subject: [PATCH 1459/2943] link fixes --- docs/create-packages/creating-a-package-dotnet-cli.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/create-packages/creating-a-package-dotnet-cli.md b/docs/create-packages/creating-a-package-dotnet-cli.md index bfa019e5b..79a55b146 100644 --- a/docs/create-packages/creating-a-package-dotnet-cli.md +++ b/docs/create-packages/creating-a-package-dotnet-cli.md @@ -63,9 +63,9 @@ The package identifier and the version number are the two most important values **Best practices for the package version:** - In general, set the version of the package to match the project (or assembly), though this is not strictly required. This is a simple matter when you limit a package to a single assembly. Overall, remember that NuGet itself deals with package versions when resolving dependencies, not assembly versions. -- When using a non-standard version scheme, be sure to consider the NuGet versioning rules as explained in [Package versioning](../reference/package-versioning.md). NuGet is mostly [semver 2 compliant](../reference/package-versioning#semantic-versioning-200). +- When using a non-standard version scheme, be sure to consider the NuGet versioning rules as explained in [Package versioning](../reference/package-versioning.md). NuGet is mostly [semver 2 compliant](../reference/package-versioning.md#semantic-versioning-200). -> For information on dependency resolution, see [Dependency resolution with PackageReference](../consume-packages/dependency-resolution#dependency-resolution-with-packagereference). For older information that may also be helpful to better understand versioning, see this series of blog posts. +> For information on dependency resolution, see [Dependency resolution with PackageReference](../consume-packages/dependency-resolution.md#dependency-resolution-with-packagereference). For older information that may also be helpful to better understand versioning, see this series of blog posts. > > - [Part 1: Taking on DLL Hell](http://blog.davidebbo.com/2011/01/nuget-versioning-part-1-taking-on-dll.html) > - [Part 2: The core algorithm](http://blog.davidebbo.com/2011/01/nuget-versioning-part-2-core-algorithm.html) From be26f029c60decf433680ebe686009cd9a6abaee Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Thu, 18 Jul 2019 16:03:43 -0700 Subject: [PATCH 1460/2943] incorporated feedback --- .../multiple-target-frameworks-project-file.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/create-packages/multiple-target-frameworks-project-file.md b/docs/create-packages/multiple-target-frameworks-project-file.md index b96d63db8..af38598b3 100644 --- a/docs/create-packages/multiple-target-frameworks-project-file.md +++ b/docs/create-packages/multiple-target-frameworks-project-file.md @@ -28,7 +28,7 @@ For SDK-style projects, you can configure support for multiple targets framework Make sure that you change the XML element changed from singular to plural (add the "s" to both the open and close tags). -3. If you have any code that only works in one TFM, you can use `#if NET45` or `#if NETSTANDARD20` to separate TFM-dependent code. For example, you can use the following code: +3. If you have any code that only works in one TFM, you can use `#if NET45` or `#if NETSTANDARD20` to separate TFM-dependent code. (For more information, see [How to multitarget](/dotnet/core/tutorials/libraries#how-to-multitarget).) For example, you can use the following code: ```csharp public string Platform { @@ -48,7 +48,7 @@ For SDK-style projects, you can configure support for multiple targets framework For the list of available package metadata and the MSBuild property names, see [pack target](../reference/msbuild-targets.md#pack-target). Also see [Controlling dependency assets](../consume-packages/package-references-in-project-files.md#controlling-dependency-assets). - If you want to separate build-related properties from NuGet metadata, you can use a different `PropertyGroup`, or put the NuGet properties in another file and use MSBuild's `Import` directive to include it. + If you want to separate build-related properties from NuGet metadata, you can use a different `PropertyGroup`, or put the NuGet properties in another file and use MSBuild's `Import` directive to include it. `Directory.Build.Props` and `Directory.Build.Targets` are also supported starting with MSBuild 15.0. 5. Now, use `dotnet pack` and the resulting *.nupkg* targets both .NET Standard 2.0 and .NET Framework 4.5. From 553314e4cfd8e7998102171766f3763c7d8f0b37 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Thu, 18 Jul 2019 16:44:41 -0700 Subject: [PATCH 1461/2943] link updates --- docs/create-packages/Creating-a-Package.md | 8 ++++---- docs/create-packages/creating-a-package-dotnet-cli.md | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/create-packages/Creating-a-Package.md b/docs/create-packages/Creating-a-Package.md index fff99a10c..8be36fec4 100644 --- a/docs/create-packages/Creating-a-Package.md +++ b/docs/create-packages/Creating-a-Package.md @@ -1,5 +1,5 @@ --- -title: How to create a NuGet package +title: How to create a NuGet package using nuget.exe CLI description: A detailed guide to the process of designing and creating a NuGet package, including key decision points like files and versioning. author: karann-msft ms.author: karann @@ -7,14 +7,14 @@ ms.date: 07/09/2019 ms.topic: conceptual --- -# Create NuGet packages +# Create NuGet packages using the nuget.exe CLI No matter what your package does or what code it contains, you use one of the CLI tools, either `nuget.exe` or `dotnet.exe`, to package that functionality into a component that can be shared with and used by any number of other developers. To install NuGet CLI tools, see [Install NuGet client tools](../install-nuget-client-tools.md). Note that Visual Studio does not automatically include a CLI tool. -- 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 detailed steps, see [Create .NET Standard Packages with dotnet CLI](../quickstart/create-and-publish-a-package-using-the-dotnet-cli.md), [Create .NET Standard Packages with Visual Studio](../quickstart/create-and-publish-a-package-using-visual-studio.md) or [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md). - - For non-SDK-style projects, typically .NET Framework projects, follow the steps described in this article to create a package. You can also follow the steps in [Create and publish a .NET Framework package](../quickstart/create-and-publish-a-package-using-visual-studio-net-framework.md) to create a package using the `nuget.exe` CLI and Visual Studio. +- For .NET Core and .NET Standard projects that use the [SDK-style format](../resources/check-project-format.md), and any other SDK-style projects, see [Create .NET Standard Packages with dotnet CLI](../quickstart/create-and-publish-a-package-using-the-dotnet-cli.md). + - For projects migrated from `packages.config` to [PackageReference](../consume-packages/package-references-in-project-files.md), use [msbuild -t:pack](../reference/migrate-packages-config-to-package-reference.md#create-a-package-after-migration). Technically speaking, a NuGet package is just a ZIP file that's been renamed with the `.nupkg` extension and whose contents match certain conventions. This topic describes the detailed process of creating a package that meets those conventions. diff --git a/docs/create-packages/creating-a-package-dotnet-cli.md b/docs/create-packages/creating-a-package-dotnet-cli.md index 79a55b146..b76a848bd 100644 --- a/docs/create-packages/creating-a-package-dotnet-cli.md +++ b/docs/create-packages/creating-a-package-dotnet-cli.md @@ -11,9 +11,9 @@ ms.topic: conceptual No matter what your package does or what code it contains, you use one of the CLI tools, either `nuget.exe` or `dotnet.exe`, to package that functionality into a component that can be shared with and used by any number of other developers. This article describes how to create a package using the dotnet CLI. To install the `dotnet` CLI, see [Install NuGet client tools](../install-nuget-client-tools.md). Starting in Visual Studio 2017, the dotnet CLI is included with .NET Core workloads. -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 detailed steps, see [Create .NET Standard Packages with dotnet CLI](../quickstart/create-and-publish-a-package-using-the-dotnet-cli.md), [Create .NET Standard Packages with Visual Studio](../quickstart/create-and-publish-a-package-using-visual-studio.md) or [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md). +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 step-by-step tutorials, see [Create .NET Standard Packages with dotnet CLI](../quickstart/create-and-publish-a-package-using-the-dotnet-cli.md), [Create .NET Standard Packages with Visual Studio](../quickstart/create-and-publish-a-package-using-visual-studio.md). -`msbuild -t:pack` is functionality equivalent to `dotnet pack`. To build with MSBuild, the concepts are the same as described in this article, but the command line commands are slightly different. Similarly, with a non-SDK-style project and ``, you can use `msbuild /t:pack`. In these scenarios, you need to add the NuGet.Build.Tasks.Pack package to their dependencies. +`msbuild -t:pack` is functionality equivalent to `dotnet pack`. To build with MSBuild, the concepts are the same as described in this article, but the command line commands are slightly different. Similarly, with a non-SDK-style project and ``, you can use `msbuild /t:pack`. In these scenarios, you need to add the NuGet.Build.Tasks.Pack package to their dependencies. See [NuGet pack and restore as MSBuild targets](../reference/msbuild-targets.md). > [!IMPORTANT] > This topic applies to [SDK-style](../resources/check-project-format.md) projects, typically .NET Core and .NET Standard projects. From 01035c9959da71711fd61923ebd29279961e6082 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Fri, 19 Jul 2019 09:25:15 -0700 Subject: [PATCH 1462/2943] link updates --- ...reate-and-publish-a-package-using-the-dotnet-cli.md | 10 ++++++++-- ...lish-a-package-using-visual-studio-net-framework.md | 10 ++++++++-- .../install-and-use-a-package-in-visual-studio.md | 9 ++++++++- .../install-and-use-a-package-using-the-dotnet-cli.md | 10 ++++++++-- 4 files changed, 32 insertions(+), 7 deletions(-) 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 e8fe769bf..5c4df3eea 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 @@ -96,9 +96,15 @@ Once you have a `.nupkg` file, you publish it to nuget.org using the `dotnet nug [!INCLUDE [publish-manage](includes/publish-manage.md)] -## Related topics +## Next steps + +Congratulations on creating your first NuGet package! + +> [!div class="nextstepaction"] +> [Create a Package](../create-packages/creating-a-package-dotnet-cli.md) + +To explore more that NuGet has to offer, select the links below. -- [Create a Package](../create-packages/creating-a-package.md) - [Publish a Package](../nuget-org/publish-a-package.md) - [Pre-release Packages](../create-packages/Prerelease-Packages.md) - [Support multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) diff --git a/docs/quickstart/create-and-publish-a-package-using-visual-studio-net-framework.md b/docs/quickstart/create-and-publish-a-package-using-visual-studio-net-framework.md index d0193541c..1bbd3eaa1 100644 --- a/docs/quickstart/create-and-publish-a-package-using-visual-studio-net-framework.md +++ b/docs/quickstart/create-and-publish-a-package-using-visual-studio-net-framework.md @@ -167,9 +167,15 @@ See [nuget push](../reference/cli-reference/cli-ref-push.md). [!INCLUDE [publish-manage](includes/publish-manage.md)] -## Related topics +## Next steps + +Congratulations on creating your first NuGet package! + +> [!div class="nextstepaction"] +> [Create a Package](../create-packages/creating-a-package.md) + +To explore more that NuGet has to offer, select the links below. -- [Create a Package](../create-packages/creating-a-package.md) - [Publish a Package](../nuget-org/publish-a-package.md) - [Pre-release Packages](../create-packages/Prerelease-Packages.md) - [Support multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) diff --git a/docs/quickstart/install-and-use-a-package-in-visual-studio.md b/docs/quickstart/install-and-use-a-package-in-visual-studio.md index 5b1eb3d39..cd46dd5ca 100644 --- a/docs/quickstart/install-and-use-a-package-in-visual-studio.md +++ b/docs/quickstart/install-and-use-a-package-in-visual-studio.md @@ -115,7 +115,14 @@ With the Newtonsoft.Json package in the project, you can call its `JsonConvert.S ![Output of the UWP app after selecting the button](media/QS_Use-07-AppEnd.png) -## Related articles +## Next steps + +Congratulations on installing and using your first NuGet package! + +> [!div class="nextstepaction"] +> [Install and manage packages using Visual Studio](../consume-packages/install-use-packages-visual-studio.md) + +To explore more that NuGet has to offer, select the links below. - [Overview and workflow of package consumption](../consume-packages/overview-and-workflow.md) - [Finding and choosing packages](../consume-packages/finding-and-choosing-packages.md) 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 d5a941c87..ae861c6ee 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 @@ -96,9 +96,15 @@ NuGet packages can be installed into a .NET project of some kind. For this walkt } ``` -## Related articles +## Next steps + +Congratulations on installing and using your first NuGet package! + +> [!div class="nextstepaction"] +> [Install and use packages using the dotnet CLI](../consume-packages/install-use-packages-dotnet-cli.md) + +To explore more that NuGet has to offer, select the links below. -- [Install and use packages using the dotnet CLI](../consume-packages/install-use-packages-dotnet-cli.md) - [Overview and workflow of package consumption](../consume-packages/overview-and-workflow.md) - [Finding and choosing packages](../consume-packages/finding-and-choosing-packages.md) - [Common NuGet configurations](../consume-packages/configuring-nuget-behavior.md) From 0371f361017002aa0b76dd362d4f58ca2d106c0e Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Fri, 19 Jul 2019 09:53:09 -0700 Subject: [PATCH 1463/2943] seo updates --- docs/install-nuget-client-tools.md | 2 +- .../create-and-publish-a-package-using-the-dotnet-cli.md | 2 +- ...and-publish-a-package-using-visual-studio-net-framework.md | 2 +- .../create-and-publish-a-package-using-visual-studio.md | 2 +- docs/quickstart/install-and-use-a-package-in-visual-studio.md | 4 ++-- .../install-and-use-a-package-using-the-dotnet-cli.md | 4 ++-- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index 1ac63884a..83c3b8c20 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -11,7 +11,7 @@ ms.topic: quickstart > **Looking to install a package? See [Ways to install NuGet packages](consume-packages/overview-and-workflow.md#ways-to-install-a-nuget-package).** -To work with NuGet, as a package consumer or creator, you can use command-line interface (CLI) tools as well as NuGet features in Visual Studio. This article briefly outlines the capabilities of the different tools, how to install them, and their comparative [feature availability](#feature-availability). To get started using NuGet to consume packages, see [Install and use a package (.NET CLI)](quickstart/install-and-use-a-package-using-the-dotnet-cli.md) and [Install and use a package (Visual Studio)](quickstart/install-and-use-a-package-in-visual-studio.md). To get started creating NuGet packages, see [Create and publish a NET Standard package (dotnet CLI)](quickstart/create-and-publish-a-package-using-the-dotnet-cli.md) and [Create and publish a NET Standard package (Visual Studio)](quickstart/create-and-publish-a-package-using-visual-studio.md). +To work with NuGet, as a package consumer or creator, you can use command-line interface (CLI) tools as well as NuGet features in Visual Studio. This article briefly outlines the capabilities of the different tools, how to install them, and their comparative [feature availability](#feature-availability). To get started using NuGet to consume packages, see [Install and use a package (dotnet CLI)](quickstart/install-and-use-a-package-using-the-dotnet-cli.md) and [Install and use a package (Visual Studio)](quickstart/install-and-use-a-package-in-visual-studio.md). To get started creating NuGet packages, see [Create and publish a NET Standard package (dotnet CLI)](quickstart/create-and-publish-a-package-using-the-dotnet-cli.md) and [Create and publish a NET Standard package (Visual Studio)](quickstart/create-and-publish-a-package-using-visual-studio.md). | Tool                | Description | Download          | |:------------- |:-------------|:-----| 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 5c4df3eea..f66acb7d6 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 @@ -1,5 +1,5 @@ --- -title: Creating and publishing a NuGet package using the dotnet CLI +title: Create and publish a NuGet package using the dotnet CLI description: A walkthrough tutorial on creating and publishing a NuGet package using the .NET Core CLI, dotnet. author: karann-msft ms.author: karann diff --git a/docs/quickstart/create-and-publish-a-package-using-visual-studio-net-framework.md b/docs/quickstart/create-and-publish-a-package-using-visual-studio-net-framework.md index 1bbd3eaa1..b230b3988 100644 --- a/docs/quickstart/create-and-publish-a-package-using-visual-studio-net-framework.md +++ b/docs/quickstart/create-and-publish-a-package-using-visual-studio-net-framework.md @@ -1,5 +1,5 @@ --- -title: Create and publish a .NET Framework package using Visual Studio on Windows +title: Create and publish a .NET Framework NuGet package using Visual Studio on Windows description: A walkthrough tutorial on creating and publishing a .NET Framework NuGet package using Visual Studio on Windows. author: karann-msft ms.author: karann diff --git a/docs/quickstart/create-and-publish-a-package-using-visual-studio.md b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md index bd1b76ec1..973850867 100644 --- a/docs/quickstart/create-and-publish-a-package-using-visual-studio.md +++ b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md @@ -1,5 +1,5 @@ --- -title: Create and publish a .NET Standard package using Visual Studio on Windows +title: Create and publish a NuGet package using Visual Studio on Windows description: A walkthrough tutorial on creating and publishing a .NET Standard NuGet package using Visual Studio on Windows. author: karann-msft ms.author: karann diff --git a/docs/quickstart/install-and-use-a-package-in-visual-studio.md b/docs/quickstart/install-and-use-a-package-in-visual-studio.md index cd46dd5ca..193ff886e 100644 --- a/docs/quickstart/install-and-use-a-package-in-visual-studio.md +++ b/docs/quickstart/install-and-use-a-package-in-visual-studio.md @@ -1,5 +1,5 @@ --- -title: Introductory Guide to Using NuGet Packages from within Visual Studio +title: Install and use a NuGet package in Visual Studio description: A walkthrough tutorial on the process of installing and using a NuGet package in a Visual Studio project. author: karann-msft ms.author: karann @@ -126,4 +126,4 @@ To explore more that NuGet has to offer, select the links below. - [Overview and workflow of package consumption](../consume-packages/overview-and-workflow.md) - [Finding and choosing packages](../consume-packages/finding-and-choosing-packages.md) -- [Common NuGet configurations](../consume-packages/configuring-nuget-behavior.md) +- [Package references in project files](../consume-packages/package-references-in-project-files.md) 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 ae861c6ee..3a1b9b11c 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 @@ -1,5 +1,5 @@ --- -title: Introductory Guide to Using NuGet Packages Through the dotnet CLI +title: Install and use a NuGet package using the dotnet CLI description: A walkthrough tutorial on the process of installing and using a NuGet package in a .NET Core project. author: karann-msft ms.author: karann @@ -107,4 +107,4 @@ To explore more that NuGet has to offer, select the links below. - [Overview and workflow of package consumption](../consume-packages/overview-and-workflow.md) - [Finding and choosing packages](../consume-packages/finding-and-choosing-packages.md) -- [Common NuGet configurations](../consume-packages/configuring-nuget-behavior.md) +- [Package references in project files](../consume-packages/package-references-in-project-files.md) From e0ee7339b239423c83b2b641a5eb19e9ed285892 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Fri, 19 Jul 2019 10:25:12 -0700 Subject: [PATCH 1464/2943] SEO edits --- docs/create-packages/Creating-a-Package.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/create-packages/Creating-a-Package.md b/docs/create-packages/Creating-a-Package.md index 8be36fec4..c80795872 100644 --- a/docs/create-packages/Creating-a-Package.md +++ b/docs/create-packages/Creating-a-Package.md @@ -1,5 +1,5 @@ --- -title: How to create a NuGet package using nuget.exe CLI +title: Create a NuGet package using nuget.exe CLI description: A detailed guide to the process of designing and creating a NuGet package, including key decision points like files and versioning. author: karann-msft ms.author: karann @@ -7,7 +7,7 @@ ms.date: 07/09/2019 ms.topic: conceptual --- -# Create NuGet packages using the nuget.exe CLI +# Create a package using the nuget.exe CLI No matter what your package does or what code it contains, you use one of the CLI tools, either `nuget.exe` or `dotnet.exe`, to package that functionality into a component that can be shared with and used by any number of other developers. To install NuGet CLI tools, see [Install NuGet client tools](../install-nuget-client-tools.md). Note that Visual Studio does not automatically include a CLI tool. From 47c7d796d8f2bc9338e650043a3afd193f4d691a Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Fri, 19 Jul 2019 12:01:46 -0700 Subject: [PATCH 1465/2943] minor edits --- docs/create-packages/creating-a-package-dotnet-cli.md | 2 +- .../create-and-publish-a-package-using-the-dotnet-cli.md | 2 +- .../create-and-publish-a-package-using-visual-studio.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/create-packages/creating-a-package-dotnet-cli.md b/docs/create-packages/creating-a-package-dotnet-cli.md index b76a848bd..0d8684f02 100644 --- a/docs/create-packages/creating-a-package-dotnet-cli.md +++ b/docs/create-packages/creating-a-package-dotnet-cli.md @@ -120,7 +120,7 @@ Once you've created a package, which is a `.nupkg` file, you can publish it to t You might also want to extend the capabilities of your package or otherwise support other scenarios as described in the following topics: - [Package versioning](../reference/package-versioning.md) -- [Support multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) +- [Support multiple target frameworks](../create-packages/multiple-target-frameworks-project-file.md) - [Transformations of source and configuration files](../create-packages/source-and-config-file-transformations.md) - [Localization](../create-packages/creating-localized-packages.md) - [Pre-release versions](../create-packages/prerelease-packages.md) 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 f66acb7d6..fee81ffa8 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 @@ -107,7 +107,7 @@ To explore more that NuGet has to offer, select the links below. - [Publish a Package](../nuget-org/publish-a-package.md) - [Pre-release Packages](../create-packages/Prerelease-Packages.md) -- [Support multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) +- [Support multiple target frameworks](../create-packages/multiple-target-frameworks-project-file.md) - [Package versioning](../reference/package-versioning.md) - [Creating localized packages](../create-packages/creating-localized-packages.md) - [Creating symbol packages](../create-packages/symbol-packages-snupkg.md) diff --git a/docs/quickstart/create-and-publish-a-package-using-visual-studio.md b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md index 973850867..00f912f54 100644 --- a/docs/quickstart/create-and-publish-a-package-using-visual-studio.md +++ b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md @@ -180,7 +180,7 @@ This will include a file named `readme.txt` in the package root. Visual Studio d - [Create a Package](../create-packages/creating-a-package.md) - [Publish a Package](../nuget-org/publish-a-package.md) - [Pre-release Packages](../create-packages/Prerelease-Packages.md) -- [Support multiple target frameworks](../create-packages/supporting-multiple-target-frameworks.md) +- [Support multiple target frameworks](../create-packages/multiple-target-frameworks-project-file.md) - [Package versioning](../reference/package-versioning.md) - [Creating localized packages](../create-packages/creating-localized-packages.md) - [.NET Standard Library documentation](/dotnet/articles/standard/library) From f0b014b76a0e63c3e55e5ddb7548b0db1c8f617a Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Fri, 19 Jul 2019 12:07:47 -0700 Subject: [PATCH 1466/2943] fixed #1360 --- docs/quickstart/install-and-use-a-package-in-visual-studio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/quickstart/install-and-use-a-package-in-visual-studio.md b/docs/quickstart/install-and-use-a-package-in-visual-studio.md index 193ff886e..74b9eb836 100644 --- a/docs/quickstart/install-and-use-a-package-in-visual-studio.md +++ b/docs/quickstart/install-and-use-a-package-in-visual-studio.md @@ -78,7 +78,7 @@ With the Newtonsoft.Json package in the project, you can call its `JsonConvert.S ``` -1. Open the `MainPage.xaml.cs` file (located in Solution Explorer under the `MainPage.xaml` node), and insert the following code inside the `MainPage` constructor: +1. Open the `MainPage.xaml.cs` file (located in Solution Explorer under the `MainPage.xaml` node), and insert the following code inside the `MainPage` class: ```cs public class Account From 6769edacd7c69270f67ce7e62b2bf2541aff961f Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Fri, 19 Jul 2019 12:30:31 -0700 Subject: [PATCH 1467/2943] seo edits --- .../create-and-publish-a-package-using-visual-studio.md | 6 +++--- docs/what-is-nuget.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/quickstart/create-and-publish-a-package-using-visual-studio.md b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md index 00f912f54..8884323c3 100644 --- a/docs/quickstart/create-and-publish-a-package-using-visual-studio.md +++ b/docs/quickstart/create-and-publish-a-package-using-visual-studio.md @@ -1,5 +1,5 @@ --- -title: Create and publish a NuGet package using Visual Studio on Windows +title: Create and publish a .NET Standard NuGet package using Visual Studio on Windows description: A walkthrough tutorial on creating and publishing a .NET Standard NuGet package using Visual Studio on Windows. author: karann-msft ms.author: karann @@ -16,9 +16,9 @@ It's a simple process to create a NuGet package from a .NET Standard Class Libra ## Prerequisites -1. Install any edition of Visual Studio 2017 or higher from [visualstudio.com](https://www.visualstudio.com/) with any .NET-related workload. Visual Studio 2017 and higher automatically include NuGet capabilities when a .NET workload is installed. +1. Install any edition of Visual Studio 2017 or higher from [visualstudio.com](https://www.visualstudio.com/) with a .NET Core related workload. -1. Install the `dotnet` CLI. +1. If it's not already installed, install the `dotnet` CLI. For the `dotnet` CLI, starting in Visual Studio 2017, the `dotnet` CLI is automatically installed with any .NET Core related workloads. Otherwise, install the [.NET Core SDK](https://www.microsoft.com/net/download/) to get the `dotnet` CLI. The `dotnet` CLI is required for .NET Standard projects that use the [SDK-style format](../resources/check-project-format.md) (SDK attribute). The default class library template in Visual Studio 2017 and higher, which is used in this article, uses the SDK attribute. diff --git a/docs/what-is-nuget.md b/docs/what-is-nuget.md index f88685097..6e27a96c5 100644 --- a/docs/what-is-nuget.md +++ b/docs/what-is-nuget.md @@ -40,7 +40,7 @@ In addition to hosting support, NuGet also provides a variety of tools used by b | Tool | Platforms | Applicable Scenarios | Description | | --- | --- | --- | --- | -| [dotnet CLI](consume-packages/install-use-packages-dotnet-cli.md) | All | Creation, Consumption | CLI tool for .NET Core and .NET Standard libraries, and for SDK-style projects that target .NET Framework (see [SDK attribute](/dotnet/core/tools/csproj#additions)). Provides certain NuGet CLI capabilities directly within the .NET Core tool chain. As with the NuGet CLI, the dotnet CLI does not interact with Visual Studio projects. | +| [dotnet CLI](consume-packages/install-use-packages-dotnet-cli.md) | All | Creation, Consumption | CLI tool for .NET Core and .NET Standard libraries, and for SDK-style projects that target .NET Framework (see [SDK attribute](/dotnet/core/tools/csproj#additions)). Provides certain NuGet CLI capabilities directly within the .NET Core tool chain. As with the `nuget.exe` CLI, the dotnet CLI does not interact with Visual Studio projects. | | [nuget.exe CLI](consume-packages/install-use-packages-nuget-cli.md) | All | Creation, Consumption | CLI tool for .NET Framework libraries and non-SDK-style projects that target .NET Standard libraries. Provides all NuGet capabilities, with some commands applying specifically to package creators, some applying only to consumers, and others applying to both. For example, package creators use the `nuget pack` command to create a package from various assemblies and related files, package consumers use `nuget install` to include packages in a project folder, and everyone uses `nuget config` to set NuGet configuration variables. As a platform-agnostic tool, the NuGet CLI does not interact with Visual Studio projects. | | [Package Manager Console](consume-packages/install-use-packages-powershell.md) | Visual Studio on Windows | Consumption | Provides [PowerShell commands](reference/Powershell-Reference.md) for installing and managing packages in Visual Studio projects. | | [Package Manager UI](consume-packages/install-use-packages-visual-studio.md) | Visual Studio on Windows | Consumption | Provides an easy-to-use UI for installing and managing packages in Visual Studio projects. | From 06001c7afec4f1a843fb1d1bccbc28d2cae85f69 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Fri, 19 Jul 2019 13:53:44 -0700 Subject: [PATCH 1468/2943] adding 5.1 RTM rel notes link to TOC --- docs/TOC.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/TOC.md b/docs/TOC.md index e5e600654..05f860e63 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -275,7 +275,9 @@ ### [NuGet.org policies](nuget-org/policies/data-requests.md) ## Release notes ### [Known Issues](release-notes/known-issues.md) -### [NuGet 5.0 RTM](release-notes/NuGet-5.0-RTM.md) +### NuGet 5.x +#### [NuGet 5.1 RTM](release-notes/NuGet-5.1-RTM.md) +#### [NuGet 5.0 RTM](release-notes/NuGet-5.0-RTM.md) ### NuGet 4.x #### [NuGet 4.9 RTM](release-notes/NuGet-4.9-RTM.md) #### [NuGet 4.8 RTM](release-notes/NuGet-4.8-RTM.md) From cf9654614bf7b3df27e731c2d5c66f4374a6e99d Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Fri, 19 Jul 2019 15:07:19 -0700 Subject: [PATCH 1469/2943] Update NuGet-5.2-RTM.md --- docs/release-notes/NuGet-5.2-RTM.md | 33 +++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/docs/release-notes/NuGet-5.2-RTM.md b/docs/release-notes/NuGet-5.2-RTM.md index 803346653..a54dc64ed 100644 --- a/docs/release-notes/NuGet-5.2-RTM.md +++ b/docs/release-notes/NuGet-5.2-RTM.md @@ -1,10 +1,32 @@ -#5.2 Release Notes +--- +title: NuGet 5.2 RTM Release Notes +description: Release notes for NuGet 5.2 including new features, bug fixes, and DCRs. +author: karann-msft +ms.author: karann +ms.date: 07/23/2019 +ms.topic: conceptual +--- -[Full Changelog]() +# NuGet 5.2 Release Notes -[Issues List](https://github.com/nuget/home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%225.2") +NuGet distribution vehicles: -**Bug:** +| NuGet version | Available in Visual Studio version| Available in .NET SDK(s)| +|:---|:---|:---| +| [**5.2.0**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.1](https://visualstudio.microsoft.com/downloads/) | [2.1.70X](https://dotnet.microsoft.com/download/dotnet-core/2.1)1, [2.2.30X](https://dotnet.microsoft.com/download/dotnet-core/2.2)2 | + +1Installed with Visual Studio 2019 with .NET Core workload + +2Available as an optional install with Visual Studio 2019 with .NET Core workload + +## Summary: What's New in 5.2 + +**TODO** +* Support to skip a package push if it already exists to allow for better integration with CI/CD workflows - [#1630](https://github.com/NuGet/Home/issues/1630#issuecomment-483461100) + +### Issues fixed in this release + +**Bugs** * Plugin: NuGet waits full handshake timeout if plugin fails to launch or terminates early - [#8300](https://github.com/NuGet/Home/issues/8300) @@ -58,3 +80,6 @@ * Mechanism for supplying runtime.json outside of a package - [#7351](https://github.com/NuGet/Home/issues/7351) +**[List of all issues fixed in this release - 5.2 RTM](https://github.com/nuget/home/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%225.2")** + + From dc6dac72c5dbd545199c9a8c8d729009226ef9fd Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Fri, 19 Jul 2019 15:16:50 -0700 Subject: [PATCH 1470/2943] Apply suggestions from code review --- docs/release-notes/NuGet-5.2-RTM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes/NuGet-5.2-RTM.md b/docs/release-notes/NuGet-5.2-RTM.md index a54dc64ed..67c7fcbba 100644 --- a/docs/release-notes/NuGet-5.2-RTM.md +++ b/docs/release-notes/NuGet-5.2-RTM.md @@ -13,7 +13,7 @@ NuGet distribution vehicles: | NuGet version | Available in Visual Studio version| Available in .NET SDK(s)| |:---|:---|:---| -| [**5.2.0**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.1](https://visualstudio.microsoft.com/downloads/) | [2.1.70X](https://dotnet.microsoft.com/download/dotnet-core/2.1)1, [2.2.30X](https://dotnet.microsoft.com/download/dotnet-core/2.2)2 | +| [**5.2.0**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.1](https://visualstudio.microsoft.com/downloads/) | [2.1.80X](https://dotnet.microsoft.com/download/dotnet-core/2.1)1, [2.2.40X](https://dotnet.microsoft.com/download/dotnet-core/2.2)2 | 1Installed with Visual Studio 2019 with .NET Core workload From 427edea07b69d87e784bdd7bf15b1c05bfcc6f5e Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Fri, 19 Jul 2019 15:19:32 -0700 Subject: [PATCH 1471/2943] Update NuGet-5.2-RTM.md --- docs/release-notes/NuGet-5.2-RTM.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/NuGet-5.2-RTM.md b/docs/release-notes/NuGet-5.2-RTM.md index 67c7fcbba..57fda38fd 100644 --- a/docs/release-notes/NuGet-5.2-RTM.md +++ b/docs/release-notes/NuGet-5.2-RTM.md @@ -21,7 +21,9 @@ NuGet distribution vehicles: ## Summary: What's New in 5.2 -**TODO** +* Fixed occasional nuget operation failures caused by path issues on Linux & Ma + + * Support to skip a package push if it already exists to allow for better integration with CI/CD workflows - [#1630](https://github.com/NuGet/Home/issues/1630#issuecomment-483461100) ### Issues fixed in this release From 2b8b0114ae8cf7d242092de630c820cf30be44ac Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Fri, 19 Jul 2019 15:50:24 -0700 Subject: [PATCH 1472/2943] Update NuGet-5.2-RTM.md --- docs/release-notes/NuGet-5.2-RTM.md | 45 ++++++++++++++--------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/docs/release-notes/NuGet-5.2-RTM.md b/docs/release-notes/NuGet-5.2-RTM.md index 57fda38fd..74d5dea15 100644 --- a/docs/release-notes/NuGet-5.2-RTM.md +++ b/docs/release-notes/NuGet-5.2-RTM.md @@ -13,7 +13,7 @@ NuGet distribution vehicles: | NuGet version | Available in Visual Studio version| Available in .NET SDK(s)| |:---|:---|:---| -| [**5.2.0**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.1](https://visualstudio.microsoft.com/downloads/) | [2.1.80X](https://dotnet.microsoft.com/download/dotnet-core/2.1)1, [2.2.40X](https://dotnet.microsoft.com/download/dotnet-core/2.2)2 | +| [**5.2.0**](https://nuget.org/downloads) | [Visual Studio 2019 version 16.2](https://visualstudio.microsoft.com/downloads/) | [2.1.80X](https://dotnet.microsoft.com/download/dotnet-core/2.1)1, [2.2.40X](https://dotnet.microsoft.com/download/dotnet-core/2.2)2 | 1Installed with Visual Studio 2019 with .NET Core workload @@ -21,59 +21,58 @@ NuGet distribution vehicles: ## Summary: What's New in 5.2 -* Fixed occasional nuget operation failures caused by path issues on Linux & Ma +* Fixed a critical bug that caused occasional NuGet operation failures due to path issues on Linux & Mac - [#7341](https://github.com/NuGet/Home/issues/7341) +* Improved UI responsiveness when browsing packages using the NuGet package manager UI in Visual Studio especially noticeable for slow sources - [#8039](https://github.com/NuGet/Home/issues/8039) -* Support to skip a package push if it already exists to allow for better integration with CI/CD workflows - [#1630](https://github.com/NuGet/Home/issues/1630#issuecomment-483461100) +* Tons of reliability fixes for lock file ([#8187](https://github.com/NuGet/Home/issues/8187),[#8160](https://github.com/NuGet/Home/issues/8160),[#8114](https://github.com/NuGet/Home/issues/8114),[#7840](https://github.com/NuGet/Home/issues/7840)) and authentication plugin ([#8300](https://github.com/NuGet/Home/issues/8300),[#8271](https://github.com/NuGet/Home/issues/8271),[#8269](https://github.com/NuGet/Home/issues/8269),[#8210](https://github.com/NuGet/Home/issues/8210),[#8198](https://github.com/NuGet/Home/issues/8198),[#7845](https://github.com/NuGet/Home/issues/7845)) ### Issues fixed in this release **Bugs** -* Plugin: NuGet waits full handshake timeout if plugin fails to launch or terminates early - [#8300](https://github.com/NuGet/Home/issues/8300) +* Perf: Package Manager Console: UI delay updating "Default project" combobox selected value - [#8235](https://github.com/NuGet/Home/issues/8235) -* Plugins: improve diagnosability of plugin launch failure - [#8271](https://github.com/NuGet/Home/issues/8271) +* Perf: Performance improvements in the PM UI - [#8039](https://github.com/NuGet/Home/issues/8039) + +* Perf: UI Delay when reading Default Project in PMC - [#6824](https://github.com/NuGet/Home/issues/6824) + +* Perf: [vsfeedback] NuGet Update tab freezes for a local package source - [#6470](https://github.com/NuGet/Home/issues/6470) + +* Plugins: NuGet waits full handshake timeout if plugin fails to launch or terminates early - [#8300](https://github.com/NuGet/Home/issues/8300) -* Issue with nuget.exe discovery of built in plugins - [#8269](https://github.com/NuGet/Home/issues/8269) +* Plugins: improve diagnosability of plugin launch failure - [#8271](https://github.com/NuGet/Home/issues/8271) -* Package Manager Console: UI delay updating "Default project" combobox selected value - [#8235](https://github.com/NuGet/Home/issues/8235) +* Plugins: Issue with nuget.exe discovery of built in plugins - [#8269](https://github.com/NuGet/Home/issues/8269) * Plugins: cache file is never read - [#8210](https://github.com/NuGet/Home/issues/8210) * Plugins: "A task was canceled." errors with authentication plugin during restore - [#8198](https://github.com/NuGet/Home/issues/8198) -* LockFile with ATF has false NU1004 due to a bad target framework equality check - [#8187](https://github.com/NuGet/Home/issues/8187) +* Plugins cache not discoverable intermittently on linux platforms - [#7845](https://github.com/NuGet/Home/issues/7845) -* Restore: installing a tampered signed package results in multiple failed install attempts (with repeated output) - [#8175](https://github.com/NuGet/Home/issues/8175) +* LockFile: with ATF, it has false NU1004 due to a bad target framework equality check - [#8187](https://github.com/NuGet/Home/issues/8187) -* VS: solution user options fail to deserialize after NuGet update - [#8166](https://github.com/NuGet/Home/issues/8166) +* LockFile: '--locked-mode' restore flag not respected if lock file is empty or malformed - [#8160](https://github.com/NuGet/Home/issues/8160) -* '--locked-mode' restore flag not respected if lock file is empty or malformed - [#8160](https://github.com/NuGet/Home/issues/8160) +* LockFile: Don't lowercase projects with custom assembly names in packages lock file - [#8114](https://github.com/NuGet/Home/issues/8114) -* dotnet-list-package in a UnitTest project returns an error - [#8154](https://github.com/NuGet/Home/issues/8154) +* LockFile: Make project reference lower case in lock file - [#7840](https://github.com/NuGet/Home/issues/7840) -* Don't lowercase projects with custom assembly names in packages lock file - [#8114](https://github.com/NuGet/Home/issues/8114) +* Restore: installing a tampered signed package results in multiple failed install attempts (with repeated output) - [#8175](https://github.com/NuGet/Home/issues/8175) -* Ensure all projects use the same version of Newtonsoft.Json - [#8108](https://github.com/NuGet/Home/issues/8108) +* VS: solution user options fail to deserialize after NuGet update - [#8166](https://github.com/NuGet/Home/issues/8166) -* Performance improvements in the PM UI - [#8039](https://github.com/NuGet/Home/issues/8039) +* dotnet-list-package in a UnitTest project returns an error - [#8154](https://github.com/NuGet/Home/issues/8154) * Create NuGet package group for VS installer - fixing some VSIX setup problems - [#8033](https://github.com/NuGet/Home/issues/8033) -* Plugins cache not discoverable intermittently on linux platforms - [#7845](https://github.com/NuGet/Home/issues/7845) - -* Make project reference lower case in lock file - [#7840](https://github.com/NuGet/Home/issues/7840) - * GeneratePackageOnBuild should not set NoBuild. - [#7801](https://github.com/NuGet/Home/issues/7801) * The new option "-SymbolPackageFormat snupkg" generates an error when the .nuspec file contains an explicit assembly reference element - [#7638](https://github.com/NuGet/Home/issues/7638) * NuGet.targets(498,5): error : Could not find a part of the path '/tmp/NuGetScratch - [#7341](https://github.com/NuGet/Home/issues/7341) -* UI Delay when reading Default Project in PMC - [#6824](https://github.com/NuGet/Home/issues/6824) - -* [vsfeedback] NuGet Update tab freezes for a local package source - [#6470](https://github.com/NuGet/Home/issues/6470) - **DCR:** * Add an msbuild property that indicates that PackageDownload is supported - [#8106](https://github.com/NuGet/Home/issues/8106) From 135d6aec6494c8ffc0fb1d66a82048697e5c4bd1 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Mon, 22 Jul 2019 08:49:21 -0700 Subject: [PATCH 1473/2943] link updates --- docs/create-packages/Creating-a-Package.md | 4 ++-- docs/install-nuget-client-tools.md | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/create-packages/Creating-a-Package.md b/docs/create-packages/Creating-a-Package.md index c80795872..d29316380 100644 --- a/docs/create-packages/Creating-a-Package.md +++ b/docs/create-packages/Creating-a-Package.md @@ -11,9 +11,9 @@ ms.topic: conceptual No matter what your package does or what code it contains, you use one of the CLI tools, either `nuget.exe` or `dotnet.exe`, to package that functionality into a component that can be shared with and used by any number of other developers. To install NuGet CLI tools, see [Install NuGet client tools](../install-nuget-client-tools.md). Note that Visual Studio does not automatically include a CLI tool. -- For non-SDK-style projects, typically .NET Framework projects, follow the steps described in this article to create a package. You can also follow the steps in [Create and publish a .NET Framework package](../quickstart/create-and-publish-a-package-using-visual-studio-net-framework.md) to create a package using the `nuget.exe` CLI and Visual Studio. +- For non-SDK-style projects, typically .NET Framework projects, follow the steps described in this article to create a package. For step-by-step instructions using Visual Studio and the `nuget.exe` CLI, see [Create and publish a .NET Framework package](../quickstart/create-and-publish-a-package-using-visual-studio-net-framework.md). -- For .NET Core and .NET Standard projects that use the [SDK-style format](../resources/check-project-format.md), and any other SDK-style projects, see [Create .NET Standard Packages with dotnet CLI](../quickstart/create-and-publish-a-package-using-the-dotnet-cli.md). +- For .NET Core and .NET Standard projects that use the [SDK-style format](../resources/check-project-format.md), and any other SDK-style projects, see [Create a NuGet package using the dotnet CLI](creating-a-package-dotnet-cli.md). - For projects migrated from `packages.config` to [PackageReference](../consume-packages/package-references-in-project-files.md), use [msbuild -t:pack](../reference/migrate-packages-config-to-package-reference.md#create-a-package-after-migration). diff --git a/docs/install-nuget-client-tools.md b/docs/install-nuget-client-tools.md index 83c3b8c20..ac1f7e5b4 100644 --- a/docs/install-nuget-client-tools.md +++ b/docs/install-nuget-client-tools.md @@ -16,7 +16,7 @@ To work with NuGet, as a package consumer or creator, you can use command-line i | Tool                | Description | Download          | |:------------- |:-------------|:-----| | [dotnet.exe](#dotnetexe-cli) | CLI tool for .NET Core and .NET Standard libraries, and for any [SDK-style project](resources/check-project-format.md) such as one that targets .NET Framework. Included with the .NET Core SDK and provides core NuGet features on all platforms. (Starting in Visual Studio 2017, the dotnet CLI is automatically installed with any .NET Core related workloads.)| [.NET Core SDK](https://www.microsoft.com/net/download/) | -| [nuget.exe](#nugetexe-cli) | CLI tool for .NET Framework libraries and for [non-SDK-style project](resources/check-project-format.md) that target .NET Standard libraries. Provides all NuGet capabilities on Windows, provides most features on Mac and Linux when running under Mono. | [nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) | +| [nuget.exe](#nugetexe-cli) | CLI tool for .NET Framework libraries and for any [non-SDK-style project](resources/check-project-format.md) such as one that targets .NET Standard libraries. Provides all NuGet capabilities on Windows, provides most features on Mac and Linux when running under Mono. | [nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) | | [Visual Studio](#visual-studio) | On Windows, provides NuGet capabilities through the Package Manager UI and Package Manager Console; included with .NET-related workloads. On Mac, provides certain features through the UI. In Visual Studio Code, NuGet features are provided through extensions. | [Visual Studio 2017](https://www.visualstudio.com/downloads/) | The [MSBuild CLI](reference/msbuild-targets.md) also provides the ability to restore and create packages, which is primarily useful on build servers. MSBuild is not a general-purpose tool for working with NuGet. @@ -25,8 +25,8 @@ The [MSBuild CLI](reference/msbuild-targets.md) also provides the ability to res The two NuGet CLI tools are `dotnet.exe` and `nuget.exe`. See [feature availability](#feature-availability) for a comparison. -* To target .NET Core or .NET Standard, use the dotnet CLI. The dotnet CLI is required for the SDK-style project format, which uses the [SDK attribute](/dotnet/core/tools/csproj#additions). -* To target .NET Framework (non-SDK-style project only), use the `nuget.exe CLI`. If the project is migrated from `packages.config` to PackageReference, use the dotnet CLI. +* To target .NET Core or .NET Standard, use the dotnet CLI. The `dotnet` CLI is required for the SDK-style project format, which uses the [SDK attribute](/dotnet/core/tools/csproj#additions). +* To target .NET Framework (non-SDK-style project only), use the `nuget.exe` CLI. If the project is migrated from `packages.config` to PackageReference, use the dotnet CLI. ### dotnet.exe CLI From 5051d009dcd119794d63bffca11a2cfa5261afe7 Mon Sep 17 00:00:00 2001 From: Damon Tivel Date: Mon, 22 Jul 2019 09:41:49 -0700 Subject: [PATCH 1474/2943] Add tip --- docs/reference/errors-and-warnings/NU3000.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/reference/errors-and-warnings/NU3000.md b/docs/reference/errors-and-warnings/NU3000.md index bf2d00f9b..42c8b213e 100644 --- a/docs/reference/errors-and-warnings/NU3000.md +++ b/docs/reference/errors-and-warnings/NU3000.md @@ -12,6 +12,9 @@ f1_keywords: # NuGet Warning NU3000 +> [!Tip] +> Use the [verify](../reference/cli-reference/cli-ref-verify.md) command to view package signatures and timestamps. + ## Scenario 1
    Package 'SamplePackage v1.0.0' from source 'https://contoso.com/index.json': The primary signature does not have a timestamp.
    @@ -38,7 +41,7 @@ The package has a signature with multiple timestamps. ### Solution -Please ensure that a package signature contains upto 1 timestamp. +Please ensure that each package signature contains no more than 1 timestamp. From 44cb4cd9e5471994fc23ceca1cef72ec4d292e21 Mon Sep 17 00:00:00 2001 From: Damon Tivel Date: Mon, 22 Jul 2019 09:52:46 -0700 Subject: [PATCH 1475/2943] Fix link --- docs/reference/errors-and-warnings/NU3000.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/errors-and-warnings/NU3000.md b/docs/reference/errors-and-warnings/NU3000.md index 42c8b213e..d3c68799e 100644 --- a/docs/reference/errors-and-warnings/NU3000.md +++ b/docs/reference/errors-and-warnings/NU3000.md @@ -13,7 +13,7 @@ f1_keywords: # NuGet Warning NU3000 > [!Tip] -> Use the [verify](../reference/cli-reference/cli-ref-verify.md) command to view package signatures and timestamps. +> Use the [verify](../cli-reference/cli-ref-verify.md) command to view package signatures and timestamps. ## Scenario 1 From 29ad30061a3c24880a083d1476c4970c31fc3dea Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Mon, 22 Jul 2019 09:59:23 -0700 Subject: [PATCH 1476/2943] fixed link to nuget.exe cli ref --- .openpublishing.redirection.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index 65341c49b..ce0335103 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -171,8 +171,8 @@ "redirect_document_id": false }, { - "source_path": "docs/tools/nuget-cli-reference.md", - "redirect_url": "/nuget/reference/nuget-cli-reference", + "source_path": "docs/tools/nuget-exe-cli-reference.md", + "redirect_url": "/nuget/reference/nuget-exe-cli-reference", "redirect_document_id": false }, { From 8d1edd6c754f67cb22eb4d81129c8d9f463bcb64 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Mon, 22 Jul 2019 15:28:37 -0700 Subject: [PATCH 1477/2943] test --- docs/nuget-org/individual-accounts.md | 8 ++++++++ docs/nuget-org/media/let-this-app-access.png | Bin 0 -> 31821 bytes docs/nuget-org/media/let-this-app-surface.png | Bin 0 -> 109386 bytes 3 files changed, 8 insertions(+) create mode 100644 docs/nuget-org/media/let-this-app-access.png create mode 100644 docs/nuget-org/media/let-this-app-surface.png diff --git a/docs/nuget-org/individual-accounts.md b/docs/nuget-org/individual-accounts.md index 8034c6673..812de2c9a 100644 --- a/docs/nuget-org/individual-accounts.md +++ b/docs/nuget-org/individual-accounts.md @@ -31,6 +31,14 @@ To create a NuGet.org account, you need to have a personal Microsoft account (MS ![Giving permissions to NuGet.org](media/nuget-org-permissions.png) + test one - main + + ![Giving permissions to NuGet.org](media/let-this-app-access.png) + + test two - surf + + ![Giving permissions to NuGet.org](media/let-this-app-surface.png) + 1. You will be redirected to *nuget.org*, and asked to register a username. 1. Specify the username in the input box. Please note that the username **is** case sensitive and cannot be changed or renamed later. diff --git a/docs/nuget-org/media/let-this-app-access.png b/docs/nuget-org/media/let-this-app-access.png new file mode 100644 index 0000000000000000000000000000000000000000..d59ac655aea6f5b48d434869597f8f2fffd10fad GIT binary patch literal 31821 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

    =WFWI}kV!7S4q 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 Date: Mon, 22 Jul 2019 15:38:17 -0700 Subject: [PATCH 1478/2943] tweak --- docs/nuget-org/individual-accounts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/nuget-org/individual-accounts.md b/docs/nuget-org/individual-accounts.md index 812de2c9a..799242d02 100644 --- a/docs/nuget-org/individual-accounts.md +++ b/docs/nuget-org/individual-accounts.md @@ -37,7 +37,7 @@ To create a NuGet.org account, you need to have a personal Microsoft account (MS test two - surf - ![Giving permissions to NuGet.org](media/let-this-app-surface.png) + ![Giving permissions to NuGet.org](media/let-this-app-surface.png) 1. You will be redirected to *nuget.org*, and asked to register a username. From 5ab3aa7b132a33d5cb4118a9ee106fdb4cc79038 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Mon, 22 Jul 2019 16:41:01 -0700 Subject: [PATCH 1479/2943] fixed #286 --- docs/nuget-org/individual-accounts.md | 32 +++++++++++++----- docs/nuget-org/media/let-this-app-access.png | Bin 31821 -> 0 bytes docs/nuget-org/media/let-this-app-surface.png | Bin 109386 -> 0 bytes .../media/nuget-org-enter-code-2fa.png | Bin 0 -> 16058 bytes .../media/nuget-org-register-2fa.png | Bin 0 -> 17269 bytes .../nuget-org/media/nuget-org-sign-in-2fa.png | Bin 0 -> 34342 bytes 6 files changed, 24 insertions(+), 8 deletions(-) delete mode 100644 docs/nuget-org/media/let-this-app-access.png delete mode 100644 docs/nuget-org/media/let-this-app-surface.png create mode 100644 docs/nuget-org/media/nuget-org-enter-code-2fa.png create mode 100644 docs/nuget-org/media/nuget-org-register-2fa.png create mode 100644 docs/nuget-org/media/nuget-org-sign-in-2fa.png diff --git a/docs/nuget-org/individual-accounts.md b/docs/nuget-org/individual-accounts.md index 799242d02..8dc63b932 100644 --- a/docs/nuget-org/individual-accounts.md +++ b/docs/nuget-org/individual-accounts.md @@ -31,14 +31,6 @@ To create a NuGet.org account, you need to have a personal Microsoft account (MS ![Giving permissions to NuGet.org](media/nuget-org-permissions.png) - test one - main - - ![Giving permissions to NuGet.org](media/let-this-app-access.png) - - test two - surf - - ![Giving permissions to NuGet.org](media/let-this-app-surface.png) - 1. You will be redirected to *nuget.org*, and asked to register a username. 1. Specify the username in the input box. Please note that the username **is** case sensitive and cannot be changed or renamed later. @@ -48,3 +40,27 @@ To create a NuGet.org account, you need to have a personal Microsoft account (MS 1. Click the **Register** button. You now have a NuGet.org account. You can perform account management on the [account settings](https://www.nuget.org/account) page. + +## Enable two-factor authentication (2FA) + +To better protect your account, enable two-factor authentication (recommended). + +1. When logged into your account, open your profile and choose **Enable** under **Login Account**. + + ![Enable 2FA](media/nuget-org-register-2fa.png) + + You will see a message that tells you that the next time you sign in to *nuget.org*, you will be asked for additional credentials. + +2. To complete the authentication at this time, sign out and then sign in again. + +3. When you sign in, choose either text or e-mail as a second form of authentication. + + Verify the phone number or e-mail that is already associated with your Microsoft account. You may need to enter a new phone number or e-mail for your account. If so, enter the required information as instructed, and click **Next**. + + ![Enable 2FA](media/nuget-org-sign-in-2fa.png) + +4. Check your device or e-mail account, and enter the code that you were just sent. + + ![Enable 2FA](media/nuget-org-enter-code-2fa.png) + +5. Follow any additional instructions to complete Two-factor authentication. diff --git a/docs/nuget-org/media/let-this-app-access.png b/docs/nuget-org/media/let-this-app-access.png deleted file mode 100644 index d59ac655aea6f5b48d434869597f8f2fffd10fad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31821 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

    =WFWI}kV!7S4q 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 literal 0 HcmV?d00001 diff --git a/docs/nuget-org/media/nuget-org-register-2fa.png b/docs/nuget-org/media/nuget-org-register-2fa.png new file mode 100644 index 0000000000000000000000000000000000000000..eadbdcb645669a5b5ce1a6c1d13c513d108c5d92 GIT binary patch literal 17269 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�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 literal 0 HcmV?d00001 diff --git a/docs/nuget-org/media/nuget-org-sign-in-2fa.png b/docs/nuget-org/media/nuget-org-sign-in-2fa.png new file mode 100644 index 0000000000000000000000000000000000000000..589fda9e83316af17ae9aaa73ae6d928de5c49a1 GIT binary patch literal 34342 zcmc$_bC6}tw>Ef6T~?QE+cvvwtBYN>-DSI~%eHNI*|u$4-+A8~ckb_xZzg79CSu~8 z6FYY9+_`eCXRUlz;)E&4Nx;Kk!vFvP_#cv@N&o;zJpce&4D}6I0wpd#GqQ zDgAUMv~#dEHMcS$baJ;dAvAF_Hw6IPRx8uY97wpDg1(H<>cQRWahF3^dbK~jAPaD% z%c@S@lw8APOo{z1qlISAzuvBxzIG_qkYr^F50mQ;D4LeNj>H;cvWN7|_CB6IBd@&< zy6`zVHGK8m5g`+b&KDh%8Lo_oFlm_dt_QESe;;g>wS$`?X&t}Qy`KdF!qlADc?c=)O@3@xl3vkVTIsRY(L?i=dI&3 z=IpxO)V;lziz~ay7k`iBka|A2xGQhro`AVzOm=$7e9vU)!OApQTe(% z*W`V4Z${nAt7R9@v#rk-B)3H2Sw>|Hry~0JSb0%uFmtglS43dTU8H&2O=tI^^2V}! z7`!p#2BSLq@`W25Q~X;=rQIDaC&S9G^L#>G%_$Hl|qK?r7pde{*Yvxuhwu3e20 zd9y>*Rs!Rm!u=GMkoCaWA94?E980LKQx78o2w-%i#50sZ^V5Q)G=riai5jK3S;FDu zg^9{P*c#^@hnb2q97p;}^n}C6l60g>3zPIjqSzL6q$?X2Hoag4H7r`u<}55LU2Rse z+8mvaA~!<_e*TRU$2Xau5zkJXie#DK9jmCH=z52Vc+_`Ct3S0Uw{4~>#B*JBPtkQ< z`%ti?$Z(q-DbDa%J-O0!oND@rXM2io-7=ftt1pTi@YH)5#txBo$LWKXi+2zo^l~!p zpaes0P@lANX7VtRg|ySDo5mE^nl^iA_Xn}Oaz@eOX*JyKP%#C; zocV<&hzfhNWKDdq&oC2IA7N2N9j-#JO*srcR?OK#1^E#OJ8QfTjm7^pw_I>Rm*%No zIlmq{57lk0H@tWC<6p+L&L3UFfL=4c&Be^K z$ifw+y&|r|<(h%ZTBn3tE&7FH%W>-i_U1F{%blmu{p#XjaE~HH56nBKDn6ejEA{O1 zm`z>XHBaTSK!an9TevOGrERKFmuc8UqJeg)Jf9)-yRz@dM3wXIUV#S`*agCF6ZdTG z1Or2vGisi!$yP>q=|v>qbZfm(rxaSmDNPq8(K!>m9>QBt)jt%N={IEx1>Vkx<9N$^ zP8*z`Y;6mc-4G4XX6+M*>{H$W?5Bb2AqnjDZ|i~H8M%SEDZJhd(!aH3PQkge7BQb*0=uHNk#6xqG zMrrnqqEMA{bOX@A?`bQ`pl(pAWl=fEd(of@ipt^EG&U1at0V1b;C3qho__OS1CR7#*Ru1^@`MJqful5?tu{rrE0{DhClro>AcaEH-`{MtB!twa7%62dnO1m9Pk3nE-7K@7O*}Z>})~6yZ8^RiKHSa@KuDbpm0|G2aR6w?Hs=X3R zQ}S&&iZUa;qu1=BVB3Qln|V$sn!G_NjwCn}mV-(K+gn(p`GnO;m43STLhu(P1VmPA zUlQ&wE+lV``CQ84ghTs$sz;DNX)a^Mj>ns)Y4Nl89^nP6NZ>O>cnr~ z{~kMP@e1F2Iy@+vbMer8!DiNpn7XA^^&1=3UXC+P(5w=GSbD|KMJZaLh6-6xGD*R{ z2TqFT0lxIC%Y>y*%Kl;iF8|kWtbl-k-=H5b50cJ=ej^(rVbWCiZKZ$CH3L=56ufIl z=OLh)!t7`Q)1ueS>0-N)WH1)6vQ%7Qewo>xpf{>8axBbe|M}%EpPYL#k%m4lU;g8o z*v+&s^pDp;c5mVgdeVThPBe{KkeFaxk}^cm6Sgw=#s%@B(|*{MrFd@SH_Y#6e|p&9OuE2(2T(-t;(}-|5`jAT^VHea94jcq#+5;Q{nltx<1$|o+u}Aw` zWanrW*n41+$k;a8lYudHV<4ChcbhFCu?{SS#7*0D%&!3aNaogTnE00lh1qC0aYS}% zYK2;uCQOT2_P^cOyr>GN$IrZ6A))~m!+sf9(21__rt~nndQKGE0gD$x{P^f}*4!RA zqZ~WS2;K6rNmkiAcdNf()H_EpJ*-EQitS4uXKozeTV=p<`3<_;AiMZ73_{WJ;MODY zOY|DBSxlH!wj*&s17iPt#OdWD9R0nCTDP@f&mx6`m_zS3hnIyHl6Xda&%nuNWZXmr zGkg|2K4vUyB~C)R$cIvh0DEL(n#N-NDGr&AG@$uw7z!+eR(SvWJG^nVHzWn_qZtwP z^e+hy`oo1@>)ZC`Wy}FJ?io$pGT3=utOv-b``wG5E+wqnNY>57zb$hasb7r~v9R9} zTY6MLbOjf2?TFCfQi&%|nn21Y{~&}_1ov^;5mwO2Nc>V5zsDnvf0S@nY7eZnaa1F` zr0XT>IkiJ=7S-mbcGMbOAgSRDh1+Jasa^VJNOex!o5KfiZW96#rke(%9y)02$%~WM zoAo=D^~d7qJC7_UnJ$F2cgsL5I|xev`)Rkr2$(aGMa$YlC<$2omYTctJm$YUmk= zo>j(HRYJFj9tIw8<0w{x&dQi4ID3a9ej*XV29I~5FdOK*GHdpiqG&EnQ~g4S=DE^D zjX{iRz1W)5!^XRCcEq#~0KVN~eNJ!Zq23%3iE zDw!ePNR}BpcKxb(ss}-7ByX@G(*D)f3U-8sHZ2I(Y`al2gk4Tp*uMjMgjV{0pqV8E z$f{ry$juX%87fsIbSR4~(;jK&se=64O2&qJ87%;$IH_z&0Wv~R55--p0sD1Dlo4PK zPzgU#($o}0PXNtq#CEiiv<8o%J(X|FkJEXDBBR6+Sgw*xq=((xww}j%K9S>j^9ePh zim`@ERwpPbN`-6FcTkgT+YSXXMWnb68GzbD6=d@qQoQN7ArP{lPLc4rSxs#_N_9A0 z$k&z>Eo`jR=t3wEn;sDhL~^2UQuyZN(ZTM-*>^zu%10QniE@+?uA;3F7!~S#=#&so z+bPChy7`$h$WXCLf8?u1p0iJ&`VIY>*#dA8mtQXKBQ$&nk+3(ua&ibV#mPS7HV0W2 zl{~d1%BIf6xp9szc@h;q>Jd$!WfvwGU&;SXzl>g_Lj~Qj^jeNJOorvT_8W^v!Y3Qz zyY8r(Q{BD>sVt$mH&h9-wL;$(>c9oLCCq8F-91+nYyMV3l2{kcfvQOL2x}YNC|tAD zcr7l(A8x{o*n^)W!6b&%d@fRT%;NzUEiBTfp4{M(%H>7$5QCUu)_c|mXs%k%;b(8Y zt25%$g4X^ef<36+Vtp0Md&G|5%{%650LHUWsXfVg05!L=V* zr_2UCXMoBa#S^9w*iF?b2UAqR83H7bzm9Uw8VL>HVEA=;V5M;37!h6ypW7KBaWe@L z<^giGu61Swc#ErS#HiCr?WPJQp=Ko_hb)k%Ib~NcH_VLO@PZnD)o1~(QPjc?jAGUl z!zapyPX6rV1yZSa@S3D`Fiv5bB%}*Ht+_eT&$|24soi}r-mDrJR1`68i8hVOX$>ef zNKb(v6eSt)Iyfd3pKMl9SaRg(w>-DRJ4PbZR{(3{F+YOLZiN0Z7m1Z!N| zLPA7UOq0>o$wumIF`-LvZX>NI@NEk1QyANkDbsCl zhZQm<{yY?Uaeke*-`nrU5spwH&Qil=b3HdXLu#+c5aGOq%?n|77G-D&Y{SClQMFQ6 z2#zsWioE>HzkhdIV9Fzo3c2vD{g;kc(f>To>1DlanBv#E*|b>tzR!Jn&IsS6krK3{ zHca{74vEHX*EIIJqI4`BBsv2|y=+erf{M)y&Hj1@FzZ({`udJMssHKj-hZPR@75hX zLp$7}KX`z-yCbv9$+wtBLUojZ>?o(dB=DPlC;KkU>%`KwoX;T0V6L=UBMLSO!t=== zA_O~~)Bdd0;S%sW5RY#h>)PAe0}zO@wY=lsm)p7_2NGfTC(d|nX09$8f-^KZ`J)g; zT7EB%S9;LpNrnQDI2<9fQS{q?@erm(XBxWxPfj_wue2OuzwS5Nx1}|{OVg_lgf@Jc zOuw=uQT*fCpsOXglnp3qPzZLS<_IxBeG6ln3tZ>=u)yZuV|qI=3~hkFHQ4qli(PF) ziw*zDR)9x*$fIHmZ#T|@7yjefpAL7t2M(jOtpO4Jk2t1zBZTa~TD0>RsDK7RE>k2l zgl~(J?E2MLJI?;-orm{)IQF&rAk$_je7fL}Ag!i$S&e4vLkm3**E zv1@2&CN+n}lwE>&iX!_=x2R+e+?z~Gy{D^w^CAoUoS#UW)FWj308u%%f$2J-N=<8j z3vF_6Ym7OFvmOcqkK~OkMs`#H2;4cOv{Sn|PrjsN-b*7|%k&Bg?{)3~QiEsf_fd+I zcZ3kt7E%YY%5S7cxgE>R9c@FDgkZAF179|g_`XK~+_z--qS z3n=;N``LH{a@_&?X&zqw>xoi$IayMK$ClC#+_Yeew$F^{8`P7?ToP(CoCP3kU`A=t z#qh^M)T)xdUlPFnj_&4DUAIEgvCS|?Xvh6k-g2p7kuIdx(tfQ=Z{=wwWW>f^*yVGf zu8yOK$4dx|73R1oCuv3h8lsNV2zw%OTQW>ID};z_f(&1v*XS<$yZhtB5~k~bkU;QH zxRxvFyYqm^ICsO$Su*9wSm?!0XKoMMb=ZBQrRFX~Z69yNc0A_F#&=c6rx?V~s|=)2vAaU#i9i+r7}v>Oq0*%$)kbM}}9 zj_}1jI)9`^Y7MSsx@+w9>Af+Pf{zGN1_)mQnX?f<6?{$(s6u0CQK>baccGL#)5ZoA zVKt?Tq0Co;wfMJC+Jy|HhQx>`Mb9P;^IW+?v2R68pF)YBR33*{={v}LxWktS&~(Om zWKm1x9am1|erU+)`4&qvXK{vI<+I{A27i5zp*40Dbr@fSM(M}ydyJpMdH7uWC;>PMF&nd9ReQx?p zw_|qsrOqgWgYuCyp>8xJXglioOU8Z}POjQgNvKMU7HzrwagvkR)^8w>Qh``@?v8Zh zeApgPn{kDDB*a-=bts*o_fUvlSx8RDKWQ?&fA;=$b~vsvNc~J%XG;~Jx3uCk@OwdN za8M^gz0PIaC-aZ{B<)6J(a`+m-}`%UQLXSXq~Z#D{B2wWr=gOopfJ$3(9dbZ2Bk3iY{Fd7mcIi+0;oZPs(0hnD1&_<%u8hA0 z=?}hnRSV$Ec?rx6wFv*RhK9I$;7gTZ`e4k~op|#i#(lu0=MM(U5S;P+*^VJ>cu@Q+ zb*esx+1q^bNAPpG5T%KC6d<9HqH*VZP6wCK)I-v}SVWh3y~0z|OD}kv{2aD`Qow8lp%}rrZrsDl#zJaGh*q-_Yf~eoQox=gT0$hjwW+*Ko z3i$fxlhaw804#yFlhkwsE=`mD^8@*zM0yP@gmn5LD+aj-iH<>peb*-kT*oE^{16pV zaa%p_^mS5Ma({YTh^n@@%uCUTTf+8dGL4$)psCXy{EdO5%ew49&TbAP&YU$2ZOdyk zQsN>d1t!Jz=k>SvLg+knm@;z7V3qZLZ#*MwSPccbNdXOGW5Exc@-w+@R4DW`)sejQ znkuDEj~_n~48!s{Pm7|IyliRr^=Sf3)_WLjD!{AJzV=FaHYt&uahm_P;{^ue#jY zy3T|F^RgmtDSqOB?t||x@p{uaN5k|f@WqmEruR8Z_6Q18>_6I3-bD!aGwxqr#{B%) z`oi1W+tX;YKtre15X}8YcT<*J1<8*uNPIUy1O|g#ni>)~)NcTw<*cf`#^b?)Ev8(( zy6?oP$jgU*dTuTNg+i{xmqD)sQ>{D+F9=E4gk3#xWqKMZ%k#3ez&r+@FTA#v3E;P2 zF>tz2&cx4Ob!dN->DqVTFrldl^*e{UE-#OmR$>9)i7%+HPXI2|ll^&;T{c<(6fYto(&F(zeS3Rb<91`HEJgzb3T&5=ojn)= z7TsW>Och$qP+lIfO0TmlStNZ42nX=7N}=<`DqH58YAZbysBmtqO?T|Sm>`#{RSHw0 z_5o{w3r$mziN%retQ5<<%M~koUjhy5wim_WRP|#(Ra03xpZZ(*LK!tPK%?0P4+yIt z$EKS|XHjDs|L3z&iw^z5hU@*Y;)2CIwW3(6Zl?!YuK|*JwVv$oS%N%&FGu&w1o#0P zJA2Wa_FD!q&OgzSlnTuSE0F!b0{gi%CBOD|cYCX#q7vBKE9CWlGsJCDq+tkjibbkF z#*r~G`K_&3K-gODCV6V@_r&)P4obskO9(GJ?&KDvv}z1MqVf64^cd*qf`C4;P_BN{ z3rVmIRDsie7u>?a!tUWzRW;6fy#*QQeS^=>Epql$;WF9?VsX@v{26i-!0$hL=(M}g z_1-E~(Ig)MAs*<1!1pIw zfwF+Q4v)vB#HQaEeZp~yueko0|79OVRfy`OQjO-Hj;hXJjVY?A6m&_{j{YM}wbpzq z_niY3<{!T*EG)F+&O`zSS*p?%(bL1vkSmtkp&pg-%=`x`xC+~`_t@T(;;X)|Cwbq* zRsjCTQsgX^+EAnA()9>Mw!y>cLfL_`mR8!$8!AMd$HQr0KkCS4c@8D>fjb@0j)OD# z5~>jO77Nr5f}>B}U)~kk&2rAl7GpmjwQHTv7E7!C-rU$ne-|FEFq89|JpD>VVtFmz z^Zhh4{iS=Ss!*YH@lx zhgwuDH8n}ZQ}!&G^xp{b%WD9-WVrtOF2-r275_;A?&P2FfrRnQ(*4rJBcP-EEu9Sv zM&YOyx&XZhh<7n<$RoBdk2ny3bTdkcHUDSZu{yriV%*r{v$HX+TywODo5Z|F+scC` zgI>^obot1wcYqSLx7P!Poe-CWuU_nlKSCP`G*R<+{E4Y}pih(!-6RDNtkeMg2kN&U zP+L}3))M_m1%!lxSK~!s_~+oWz6|-kOXvXI7m@cG@DF|)^5EzUdKFnxz(Tfvz~1ml zuajTg*oXp#?M@WO=5&&XqN!Xl%SG2_rt4-Y_0ii^H$fiddRu&qysn&Q2SJPr1`Y(1Lads%e= z%o4@Q$Wc%i^9~IS-MpSv_gge70m%k9q@s+FJEn{kW?`~Ya~IE*I!;iz|3XWuODXgk zFai#1r?xBc2l+KX^UTlBZ~x=2KpQZzvIde#CzEPTzh#K_D^y0TSaa0LW;ut%(0agZpYM6bOEByy+>rh0O1wXh3?@`X8qJ57PR- z$!)pJ`B4Aga_+Eoj|Bhz{(voyl!R+!=-kk#W>`c}NThDQ`Xlky*wH*}vJ zSf8FUWqC%9_Ax&%c%+F?fJh9>Xi~)AYDTaii79?A`Hy-wgj>;l(+WB8G*jp{t1K1! z?pch>#RbvQA~L^E_JPy&9B8Q4q;994?9_lpJ!s+oClZ@cD+k} z7juJYSB$yxnjqG91J7EV;C$Sq%A5`DRF3{V8e%7oy5r5sgfq6pO{mB9+g~D5jo_a& zWCAX`$$~bjrJS~vE&gxjW1PINycrv5+upregwxiq5zNY%`nLkt(=p`czRAlmp-GZ< zkn=&Ue!gv5E$W!uPw5yLMFX=LC1~8%-2sv^HVjwI*T*F3hnC{+0yYp?-XB(dcibFB zrRgk+(A3WA#;OYLaKAj!A)xEn>s1mOrHd|%h=aUOW(%v#M!O11s~5>=AAWdiw#G;R z2YjF3UDuf{<>#ZwIdy^@ikTZJ`C24puyQ<1e9V3%>WQBHoVPhHN;I*w#Im1YF)|Ls ztM%v%yF)imyq!3f2VvK7DPo~!XCU)q2P&ute)0^4fCsnpEVV=mA|XY>GFgY&_1$B~LouFq21{|+9cz+($&4yH?7jy)OZhI)_-F7`CBjtXV zri4!;yW-5HW`wf7(!NTJQ4)m5(&dT=Zn;<7A_EaefFvpLq(v1jQ!6JezB~5r;o?uW z2~#Wd7#*gu?MMy8&uW`cp;T?9B+$O9_ub^A9pBDR4_Dcd=^&`)RdNP(*XmW@g2lA&=t?Ho2g@Yel-| z`hRPS$8MJSOv~+7cHNhGmm)CklcOdr%-cgFR?zQy4~o%^|jX+|CO!1bcEnYUUMV&|hU+By9uo*0%E(J@f=n{dZW)Het8d*>%!hEq=c^>s5g z`*DA)9U${IVPLjkj&*r&dLlz4^~BMvim-&yj~V~d(Mxx@19^h}0amqSz0E+RHY}9K zzJ|-XpSbQGS&e`B#%fpgZ*SlB)Tg>WX{TR}Hbg&$$IKMA9%;4s!;1x6gwl5D#t3Hd z5V+cH>0B(Ia`iT%Uh$HY6}svpi~#H;oqhjA%EouOPFJ{e?U0El0aUT+MStb&v@K7l zc6;iPtf|{K6nQXE!HQxLqee-}#ovo%>2fBIu_K~hH+@Vis|mE>PREbE_>ZHW3h`o| zr_#j1+WuxKQj69@%37&fHSatkY}X@#U}s$E6PYvQkfcB7b%tkLzJR=1qn^+_Hqd zQTFe~b&mQ(G)UyHoiVPI$KNtudK1}CjkjPJt&>RCcAI@7$ZG9v6+Ot+QzVKnrboTm zjck^dHqYX>xu#vfV^^hK*pglHn9lMCcT%-l&%X`clRx0vR4!eGoQ!6*5F}eo$#e@0 z^05fpEM~3Xasi0tf1T!ruoNW(vO*7hkx}OxLsHzoq!SQM6Lj=!vK&GR&Qh`Ha-ksp zJ{~hyLJ$ihcE`V|BQFnGVR;SXcm5oF#FXuYhTB z&Tjbca*E6wHjpan#ZwPNiIMFOMw3_-k4Unc^1M#!8M#F`ni2B%EYU|pkeC@b-ET=R zb1)B?o>cNgDhhC+i0<%xCd2=G%Ju)8NdDhVlKz{mOoM;o`rat=z8>eh-Oqr9D*Q8N zG+}oq=DaScP|@R!-ck8sG;|Z6@mOfoZ)NiDgm54I?hP95OPgY|YRmt&yIrj5X4yT1 zXEE}stvh0mi5)r>(%U1;9#Txul#e9yy3-910I0daX&z*_Hf8Jb1OPAf_6g4L`4v329SK6L@c9*%ZP`Hkk0N^ike={C%r_7~`r{W$ z(^`oACB@s!eLd9Rp#QoU1f_$`&?LrU&bDJJ8qIBhM6HO6nYHf`n^m2$y#RXe4T$c27Q!9WJ1&1+P+ocEHxB4)THGn?0Dzx!0SjRf~4q zn~BrMIo|6rJGp7Vnpc z6F*nv&UMstqELXt*1Nhm+v0^<4{jzFxE4UWn3kDLF&N zeO^VtC73aG_r{ECy4p?WOP_Xg<2i>ltCH*2^}JT{MjV7oIEebkZ(OmuCj?Vv<-Peu zmbSd$>2y&nu*iL~g)gPLbm>B!Iw9VSjRi*7@%U@Ow%&!nQN+<$T=0)PCihs>XHd0B zF)Tl0oQL6^e}eWOpSMOgJEzq@I&sryDW+oQnCj=bYB!Kc)+*@KK#|b1GmJ;thg^ zkdzwd%i}jHfhcpivTX0Ao^|hVwH4S|J#R1(uVY|^WZPW_M%SGtxDUyXtDo=-t#G%W z;G*~MMtV*APuRuvkC5k!VXlrd+rArEls}<(5+89xGdIFB{H?cL3= zCQpZ;-Pt|M1NgXnH~N}pTqmzOZWy+@8X!|KPrGOO<8!i-;p=hQe$G=Dfkz`~&!9dL zJ6(IrU(Hv$@6X`G0&dU~G~5bzVgOfL!M&Ry|7H90<;CB3fbI3D?9UZ!swoIqij5); zxuqdA%}W?7x7=^qqiWl*0DhcP@uMG9nIA#fyTwx=N1vDFC5RwBFm4E4)JF;F4#MNQ zZ>a2ar+w{9{yPeY^tQU+D!JQd?i?lCtgyOnDC%f!MePJLBOPmZPjr`C-Qi)-0oj>X zqGMZ4ITY;vJ4Rb#ofmkl+;>IQ1Z0-&D)0C`ztNVjz2KWTBWkRE(qF$Z!DT&zJieDe z8leRIvWYNA7+h_AKa^h1eK$U|X*cGortTrwZN|hu@72a|5*F@!0}!Ls@n%&BMV;A? z%(nVqZ3vvr7j!1oS@veZj@A5pBC^s{^%LmuL6~TiJ&u$GkPO`{p4j$$8tWZ;rx{OJ zH<_{fXDy{Oae@#w1C8IUn|2Q%tcKF}6|={J-`$u#IHwH&F4P=vyCiPt`vpay=WTy7 zTYY`%S;cO^8V&J_?mw}pRGwuM712U2`G_eQ1Fl}@ZiV+vbf=?=S#p7Q!B)><0$+)8X^ zH*#uuERyjSwaLxpdYW(HuZ-MiV}u1LQ0 zw!VcY+YnmB&MUJ@4<8{_`=qPs1DoWN5|TH;=62}Awbmt6l5bvt0;!ks)#iz!2j2lB zzXF3w>HYHp{d@yk-7CPBJ=ap0Bt|#gpj$opt5a7CGEY&0|~77K(qT?TEk2S{9xtg z`a^IZlyM!ScX`od*hyn8d(+Qk(7QIsvSw!_=ooGjKt8#53uVwe?#Fwn=btCmv+WF^ zcruDHp|D_IQ)CSCXL@<%jb`YDy#i60kkCSZ7ih0E=NEpocQ%jkaUaJ+!xg$!KX^;Hq*}f} zHaG26Wt>mAY>;gm%%s%Zy$V0?i?n?_681=5LdDbp`k^NkIUkIeESU@bkwLEJa~sFT z6xSzaAX9&{e^CaozNJi9=}&m#$|qe&6u`FN za)*r3k1TMy93F8(j-+{6bP~snwY<|rWyDk7@kY#kJ7VI6GiW0>u5XgI>_f~u;NiJ; zQR#k5YNtembsVzmuOV`O$umT(>;a>3V6j~j(DI+BbB-`cY0yV$!#cu)c<#e6rGE-4 zZ_0nz;HdFD!=}|HY*n&(Kh>RYA5;8D5L*9Z^pGmBZy1#?<3Oc*o~RpT^n9FXmCgHt zR*_y02^MVMA*W{CN>gLLWa+l|EPvA*@)d{}-TiIq!^&HD%*wQ-9WdH9eh+nt$|&%_ z<`4T-R3UmLCiG3Zc^v{4WZm!OM;-LKWML9Ioydw~6y+MXf9)>{pX*VO`$(B>uj_U< z%MJNL5j2igerN{*>_NaCW7oq!)~U4{?hT((nW6eW*>m`2eb8rV-pA50TN;+xzXoZy72xgG^X zZeOy_@@-9qCV|rC%<=HJ6m`Nk8RnWU3~!L+h7Z%|(dcRB^zYf){&}k5(x*qqsp5_Y z{rdN$S^^?N_6^eZJG_w$^rJnSwUi|1y!@}~{Ycnny;GjdrDpWET`ka_Uk(9fl;6It zcC?iUN_oZHB>5|Xy3lbyl76H`4BaGmge10q5}{5Qq#u6Hh@9H?6IXW!4M(M3y50m3 zridI(J8ErmXnn$4xhdFQpi{ktEye6r#*UzR z^n>K-JPh9x^7C?q?f_f+6jdLj*iGhYmV~)Cq|lO+lt=p*X$$nu$t&)TVjB%>FQPto z>x4aOv{q1M$i5uwFS50s<<$=iSsYVp|D=CpbsnA472kir1M>d2qK}+)zOi|+p_e9f zrw>!%SFYh8x%qPMfu4Y=?KLF`rkirG=fkECPWmVNQig`@c3biJo3@=+w{EVkJKy7d z`#lb1+^@Bd;Xfr6I!(Yz(%L(34;+mJ-knh*#O2A>DO8T{1@{5g~wb1@D zNQcwv^INkHs?{d!R2f`Ie<#kieUqeq^dHQ>Ydqay%}E*f>j*I)fHZmXwlDgxbAZeH z_QCj(&&OgW|IxJi^xle8)XUCT13A%p}2u;89GZW_3^U6&v|ymu(!LzE(nn z;}N;vnQqA!LA<*LFk83!W1No8_l50(*ctem#biMGyZNkKl}q|yBf8phu6oU{W4j#_ zjPdzUy2ML)^ll-_1gk1v>L!Wp4VlXoE5#QK;9{j=TZcPL(|<|e6Abi~$l+&9V%x?1 z*NMMkD{b8#@M{;XZ7!New*~_zrWx6QLE$$=yw&QWt@}zk&aeFD;wR3w1AAWO#YjF~ zl%CLe`Ui{bwdm?>0l(%iy4rJ-cKw0sFGI-9PDcMQ*i6ovdXzT3rW+#NZug7o;G5a4 zdjmMrTgtviv!k5z*?V*0F(UdfQq$YofN1f;12Rf`$sqNXrwGEmMqne9qpKUb2(kx#q5%k8?5QdR&1!b{%f`OenEmIs$wf_(bo-a?dxy!?+%@)b#;S@#SOQ;4UrOe zyWCPS-KIA-D+cYNPXr3r8Rm+b_nrN)!G!$q@Gj>$G%rz+1M}Q2CXU zLG_#{GX2(Xb$IJ0J9n%mf_F$O{kI@2Ea|gPsV#L!4B#N#jIcw{)kyv#Z-$PZduRZ; zx%}Z=QG0OmdLG`WU2`{r<^h@K$iTfB_clRn-Cdi1{$iVRf7wde?gUKwq~%DzBdb^G z{P-dBJJ1%Z%FtU9X31KfudA&X7G-##=z~C^D^Lc7LOyGM#!J{Hp1QyFt6bvMdo54a zZCx%5i8&LvUFpCQ>b(0)k~^_(ypiZr@u%=`LyzQK;CKO_%f~lS6ulZcmgZ zTOILU;2d0hcwMj^5?b)J~3jsNW#Mz z!Npk6z#U!K|NU0&|4%!*E-ay}D+cu^UoUS*`u(D5Rwb91nHxdpPyMEMB+MHxgR6>s zF>5Z9EXo&IP4epAD`s zurEr2E2-iiS9OfL=1I=@P0PhSY29Joswnejw3fLDOUG@nlVMm{IgyTcu`NEg{hXl- z1)*9q6I1)#LGsIZg!h8yE4d|R^a@+m7Z4WWmagQTbRXXy%oC3q-LYpQT~y9)XWC&3 zkIH$79k_POMKa&!tqQHwx)N#R>piefs~z(xO>h>H$Vk+SeDWpnxhICk z$X8Z#KA6Ezt674HSLM;qY1AJ|%`&ybBD72l=y{nCU0WhzyVp3h`t)00~g9z6@z6` z7#xmrvOtvA_fyJd>7V(Wgr-F5g_CLgL`mxU{MI-W-Q)+VNh)1ZSbNSm=G9V^j(J|n zBYhnLCrrtfqE?m!lG-te%qN!fDQnNoRTC65)#I2pDCMkIjL`>yZKR2{6Vs5&-M$5# zqoR{5^F#xjsE~ifzXV5JQ=8NmjZPkO>+6*>-jX%D398T`y|l@$TzuT=sAMYP5E%#=;E&8ZegTn7Mi{FP})D_#EpSL>bXPXqx7(LU!ou z!D?Mtn>n}FiYMlxSJgQBuCjw|KK4t)QfAIuceTLz2E)^mrmVzPBK;^rMGjuV9vW0~ z)I2-K@tS`v)IsdMsSMyhOZ6iKE470^n51MW8l$_c6sY@22Q4Zu~CE(5<1Mc;q=BDfy2C)Te6i)?9Qbm@0$^rw7e6Aq({H3NUG)02b_7_9?`6@H@jIlA%(ldB$s*VH$ z^eeP{X|MO<_*n5o`C7#HO3&dPvE`f!CzC`E$9U))m_VEQ`&m%wH<{7L?rLGMeInW>Yt%01b||(%5Dz(%U`bb5I%);VsNBQQohxx;9tP-S(++Ty*z1x1mGw%%GG5|-(A&%ev`Jhz|>jimj2}+HQ6Pd z#;Ldz?_@ZoM=t%7F7qdibYlaXZ6o)0Yf&Pr-G!2#++V0d@_-4BiyF}~drDi`h9dp_ z<26g{!S6{cxP6@d4{vNXgNh9t=Hril0782nb8W=;0euL?6mYhM7z*p(k{|5)VAb)q zX-Cu{WuqwIuEv53EdQ#Bt?)vyM@4LI@wZc!}4-SYNq$V1T`i+~>$TUl+or>5d zQgjdV{#Ei9X}7UO25yAAhu=E}!@&HGT?1|VCr$c4J3eOBL;|rW{qjJ?5!_VKBGi@e_I|9#r&@GwZ`ts3>Xo_kN;37MKD{@WY9 zNP%DAuVv+NhWsBr5JI0G&Fp$}>*aLQ{cd=Ce;Eo+|NY-7f0SJ4N-B9MHk+u&I-G3*e5q`@+ z&89^{gjqq2tHLsg?~5v9kXV1ngSW$W9T44a{-M7R`iBR zt`uc`S4U~Z9BGw;NH_bUd$7 zep!ioq^`YoCnHGh5}#lz)KN`)P2(;06#raPNC7_5eGy~Q^cm%0yFIaFO%#$sNy*m4 z)-#EE?G=slOtN>?%*qPYB-a>icZb?ub5sAx4EVQm zTmR;@s2p-paUXXuuR`pDk0Okp@(OngPE@SnBom&EMAH`sw@)9h|E30M-Xv6qv8d~I z4f$9g@(Rt>1^nq$ngdn8QR(qP0$=ya+y6~o#&%H(v|dm>w`pY2-po-iAi?Z_na8O4 z7FysMZHZ~{)ekF*Lb{|jtlj#D5TxrCwyW``P302E25&hShVMRK4Gj)*a}u*h6d~p_ zjiu=3aKFHWq922ik_EWa^`a99`|ZDF(vr3Qfvk{Wd6ck~Xgr{_@5}x6BPyp5 z;nlAp8Ab(_Ld&KKo#VHrgcZB_lS(g(>^^x=r4&6zDgWvx1;mPT^8WvkWYIO_HCEb0 zc`;W@%f75{a{o#2G}U6!#fZI%2NZ%tP*=EC?UD8e4R`D?(h%u+uF~t z=Y8Z8m>yj<*kTFyBQz*YZzA8@2g!varKdQVyM#Qh;?wM#j`QF9;PFj^@F1xx~Y>vQl&-k|(WLS1yu{i_=ggyCus|5tZ! z8CAy?ZVPTCNU#6_f`yRa?rtH$-5o-34Nh=};4T{tt{ZoP1OkDLySuwXU?Z#)K#~=Z1ya!+&AtA{p_ByR+AhukoDgN zjmaB{8e@$1S~Iq~;lFXZ(K(R;L{ljl`m&QQKre_l=B#Mu{n zL#ZARKJ;-_Xw>%u#1@gx?7@s^%VB(qdiHZSs;dl2?2JWV?NYGuB{9wm^@Q~9us|>s zl}N{(ku5E|(fTFK*;d@7y-3T|p%)K}wY=Flm6Mbk-pAz4NoDi_~A@9W0@7a-o5?i=Haen zcF<)3jWJk5T&nm`V|W@DN|G<7&Q2Av4z+fW;~tV-3itNu>}!?P&G3`Hw;1P}jI>mp z$~E`VS~mqoDm}Qt*CvO5Y$QBl+!pQ@Oj`{bsX#A8y z=J3M&O9kIr$@4bwNAdG-O`A^#$R-cO3Bk|@0Uh`Pk;7J;-!k|89~;WbNhys5Nb5-k z^C-=C?TpsVr& z;HW|H{l_}z;##Trr#=O-O(01hFxG-kX8i8xvz5%_$H%+?2{9FVW#TWJ?b#iu=W=6~H%RZ7A1zNT|84|5fmP-(pfE zNw^jE#S?TXeS$8c4zu~BW`E-*mD`3}{Qy{5H2|;1?_?tSbv4UoC#FDa-ye%=Xz zPQe+JVnrQ&{dw4ugTgh7zTVI|v5)hTf)E9wwCD$xYVdT!Sa4=anE6rCU$n@iOzEE#_54*Ds zDQ`IAO!?3_`uF>BZ_ag5r+%hQ?hab0o5+=?t&Fwl#p;I49>OhqFTBSdsIgt9c+@q7 z9ce>(1>(4QCqzy(UoOmN9no@e%;>C)ARI1C3Dw@i0U-nMx z(=@L@&%hQw9Xs1>c18G!W$*>7(V)i5+k1y^VKh088&kZS@FOeLL*FXeN9nlgAn|4_S5Wo-yVB`}qh|eFX*nog(M8b1(8xc55 z-XQ3x0JcClomFn+nc$ebW!|vLg0OkoXnPE=oUu7Z?`TMjoj-W@Eohu6wc{-P8%(0r zwY>MfTr!uayKqLPY&5D))ND5(KvcRmamfAQakDs=-C~lCNlY-1(tBlY z|I<{)$-_Kre2Mt5XzB;`5t~$!P?hbZ`SBMCXFd%Rs^Po@t&&@_5kTRTa#2NhPq0*4 z=apSTiaonYk}S68T?*wi@z{fvjgj4fKjv^DMk6LjPIDHq24@lCyqNMnqr>H;-IcwC z*b2NF`=xho>O~#!pr#wXv-*6)Y^3mVU0A97!P}9Sc%IxOi*17!%vzA4Qyur1Ztp4f zc1`zlUaOKdvHAni3t}|1?w+&bo=7IK=ZUv*ZKQ0w4N%7(Z=zud?}{p+U{953DK8JKKbvUL!`SESVI9xJh2MM`;y_b2cKAf-go!?MmBO=sl{pXU2-ukOB6iLdSri zA$j{DEz_ILI-;x!Qu$~qD&;cLK}K6d=T$~JMMI^|NMz?_?wVwo-M3%dv9A!F4Ty)C zzxY;g_$nrq;z@i6&~CdsBWjFfN+EoY%eScP7xvlhnJde8dSHGWfUYW&v*nC{JdJ?) z=ZcmsK{UU}4;W+DBNu6Y&T{5?L^x3XJ4 zQnwan5|_RRsY9)58h{0m+gbXcz(wmMUjxxWdFhGAGKW>DZvV|O!n znVx7eu_!i;NxGV1TO?m@d&{AYB3wQr`cmN+p54DuQNwzE-!}v)-dIohBx|m+AXdpO zwVNV&fQeU|<319sz3iFD`>lz8p8&Nsop^P}MXZbRmMHS+dxw=m3fo)2J`Q@Y#L%Fo zWX}_3&Vgd37it)7SHLyDc(yBj-=0P)VZ~;X^Z=GMPAYjQp6mLE>J(zf#}zhyEE8J= za3#|C9}hT07isbF#%I5%M1au?Ehay(xl4^~P}63MXnb5^9;cUcwaP({7jy4rw(lIp z5k>@q@ej{^_cmA5u z@-9e*I@eA4U!XRiAE@xhd0lry(RsNnm?fPBRw{4?7*(+{Fy zb|+wgc)tO*^7bmhm|t{0Tx48<#>7y))-%25;wQ*n5*-ZAS4ZwVZul-{ ze@%FHy{}sUFg=4~&#N^JgFx8^zHj;|0p9Sp8(gf6sK7C$I?up@BNf!iJ$5e;eS?NH z7OQh{jDa>rhpzzWNvfvf(N(!uPoSw!g2Y$G62psnjoy8HJ#t+0Fnl5tqN-I7Kr4YXOx_$GR{@a&+>DaOSzaI+ zFQg8B$fJ$Zkza&Ej6kF0eH00wGO=XZ9>w%|zTfe$RFtm8zfe(YZfW(=6GKNfDiLGp z)e8OL;Q^=Ddz$QB=10@Tu9K zmZ?gVWlE|_7l0==mt6%3vtNCx!;CeUJ=G{_s@$BJa-TbIY9Y90piy#Fkf_=P>vArDjH^F?0un2*Pyv5kDT1LIHUG-UG$CE;l$7V1Qx@a3E9!F8O-0|gd;x%$8>a9BT6 zmBMyfMEIKpuH;+&R+4kWAPp5NWY5(3OLdV_p?;ieNe68cqsC zU}ng?5?G3U?<)&$chEaM4fuIl`lHb(%iVCSMg4?Vx~g-atoj7oH?+rpaUlMKF9w*- zJvmI2f!T+FYnNl2X0^{h9~RY9HZ30~FBIK-cX>I^QoOK|sFRY-l~mcfl?a?+PdaQ?{t zU`%MSZ^Oo=3^ibEA8WwaWILp8K#i6Bn9d*Z&1RS&OzrU9*)qasBg1S>O-;&rjDFg= z(qEmO;`SnLc|aY=vrUeKbwg=~?3)??0+l)*epsXz?b3pNzK^eBbc!ljXGrGS z`t!rP!$?cP#OBgn7!d#gc7#}5|xa)2A`j`1fFU|QA(ZskNX&<|NxqWdj649pvu6NMd{ z=aIrCeJrRZ8+3NYmKIhw#uZ%8Aj=T0E^o0} zG30h@pWd7`;KRqy-|e<)>hv_Z>UxN|!jE6=d&>j<*Oo;T%WHiGJacn93e+Xu!5eeE z%x=8fiZ~DdR2Dqt0cx9-Uw3EPa<^ZdmU&XoH0c!AN4LS+Tn^^9*9uk)!HRbQHRF^G zX|e*6CPH-3!p3DTF~X0j(knq+jR!PySV$|jlLwp7Du`%nuE-MrxxL;@p6(qjWkDBPA%6`!`*HW{7cOS_~VqkFNX3wVsy zTlc=hU)i6sXQ#v1s0BWWd zSy-QdnZBnv4{J%e0F7+ht)ROUNIC=6!yKpy_+3AX=*%1?n4nHnsKPz6rA3O>@}vxz zj7cN$o7!<0Lwe@Skw+*yHQeA7xy59@B)*K3Di!%p-B*Ol`kTPN~wj zj&r$|jIy1&Z@hW%t3v3GjSw{jSnc9;8uUho&^WcCQ*rBTdeH3y_!5_{=H?sGrit{j$^T{vIf_JW%MHfR1dcb)Yk&uzNn& z^^3mW0Pn)Sw*=Urm=4R^%9PnTd5n%#w320J2PaT59jC=M_V1Z6cWTS1>r9cu^~6!A zy&a#~5|?4!LG8%T<)!7ZX7ln;?iSaM7AA*7Kf8n(gApi4UwE*Xqo&^nRDHOI@FEPZjj+^^v@4=arrkqK5hMHoTMVh?B#x)2J#vz00nkbCF+# zs*muT=S9JT6?fhwCryM?sRIPU^7o{Bc#%*0I={4{c z?Hxr6ws^5r#Ho;)Tn2GM)cG+i>#H>MoxeB-Mr0$Drb!kaYSxSmU8vHbmKxKp=8yO= zYrZ7<6Ah%5ub&0+2*KPy$^%bm2;|Em)DZgP^Td!AdTglE77Lh^ap< zruaSgJ0RQgVk|}g(^0mb{pBX`pZoxTp*|%#iBPDG@MDBOFmL7GMJ~MppN_iO_piIu z2_JjvnDA9gJbZ~hNZoffNZf)f@@P+u@^VQhX|OFftdtp8Ymxk<3E(Xc-h8n8Y4IE$ zRnoS%Fri|2o#}_`iJ?H=)Ve|CVPYvy@tvOTw|+H;Pf-TmfhNd)*Y$7;q(7*Z5%lM; ztUk^A{2p6>j1W#1E^Bd|kN-+Ld%PKWQ*?YIApaxoEtb(NL-^=5lx*D=)M3VR3Kd@8 z*b^1FIjuO|t`hFRGH^pDW`x4Zi)Zr~h{*$AJxy0lH*AzEqbtLi4_^0axa@meo~FUa z=L$oh9s4WMO1s+wI*DZEr!lqYqwkU0yF;~9tG{x!kPq;YN86JEM5!WWGd|+sL&h4K zFtMEb@zMu^iT1~JGrhG|pL>~8;feO)u-}R9p#;CkT1RLfBrSS+wN94^E{5qXj=ZvE zypDvurzn?Tomy4GT5yp!=#R>tt3mRo`hzVvXW!B%TR%X;wXc*;{}{MZ<;7->Z?NCV zoIW!m5=D^`eVU?&ycm&Mx&B1{BXsHcr ze+TFNXY!W_Si$=;dUE^d0m^pp>oJ_37U9+cYItL$N+2@@{>-|2{s)~p%3!<|0ra|r zZX!{y`XtF>Omg^ep`c2D(I;YW?Xk1Z`*jSUppxLueL}DOj}x>^-!D&FBaa)C4lZli=a3i!F>1xGGv-DuIv?CU|4JjEklJ6f$6JKBks zH3!*7D`yJbmbZDBh*>^a&bM6!2)-t8nX;P?uuYUJ9sJx1C}02F#<`{?t0Tq(b@?x4 z+NNQn;_e+P%D|YLvVq(Clj}6vbWc@l$9K9K)ImAPgoh{nK52_&VjdC{({sU zc6E8Q;W%7+1Z;xv?PsoKq?7fQdTwkgreoftS!8zv5k&;TU7=lP%Sq3^Dz_kC_D4G% z_2~R2sI(u~Hs28o@?_qr`kB9QjyO91<~zma9r#~4 z=aRMfg-o!+S>a=ZiSQ&H+wLpa2en61VZfoa%5q-qa%#v%LHhSR&`-P!1cTHn(tl+k zh}e@a(YJB&FGSFj^=#UZ8G@C$nmm)owPNYX#Ix$_hc(9j< z-eNjoyKyExJAm)t;QZ@9^vJ)PIP}fsKsTg0ZFWW_hE2V{iPtHb>ZgyXxHHtkDzuM! zqiWiK-t-~ZeSN=kbm>KBCecJ02wsn<-$+uVaU%2*zsnLr+cf{)W4NHM^Y*@SRu|WYro`c<+tOW|T1XB6Bes0wYu1QUTNa z%W@Jg-nAnh6*oY^nDJ2`NG60W-f!iCVb$}>`)lk4qYc?YHtt%f*#^s?@r7_VqXweytFcX!>q7@s#`EZn;o0$Jk4CG?h7LKO#%1S8q4FvHy0l(Qhn@# z2q^bJQ5|2#g^0yYLJuf#%dL>E#IPe@iw21?*8oB2f{OPI5 zl7|b>{XJGjg zW&fEJZfV&^=;qzuCH77GNlSph{ZRh*z~ejLPl`rKwx25Tiz19Josl5X`_oX^1#I=; z>XqCEcp?(lO2RQ5q0MW~eO76HPd?>N4Ji7J90Z9s!`pdq>>3qf@40koG4wYAReqO> zUS+>vq>!c0!$|Q0=l#S$fqqn2CcT+$|8~dNn8ijCmygJO-3I^Zm{s1KsrCtA|8&`m zvwkbi`$>SOYLg88u`8xI-vA^EFCm`Vy1qA&F0rBNNAp0R;i`?d1BliLtg-0_1qjg{O7f%B(M@KNZ&K0}HnU?f_vd4XIr10PotG~a4m0da z`v6fN3m}jjc&Q#I7GRt8&R;Q{ct}saG4bMqzok@^K8~+4eNrl;HwV6lx{FqvK#hHn z3>uzWHY*{aEE;^ONrj)wPl`lpP;$Ki^k_BWI;jBQ-aW=A;WO$onuX2ckm8S~1EB|0 z*aqE^`ZyfrAGN?vVjK6>2UOVrvob@H-MIhGx*jT%I|Rk**8A4uh0x8J3nOs#_{G?q zM$-pig^f`C{pV?{)oSQ-T!&cXEB2jH`ISl1;b2J(5#emY1?afwl-pMB=QJIcpft@E zt^QB9EDZ?@C{!2y43LzveTqXYtHreU3T#*sRQgYopCz;`o!{JfqiLh#2CeyDm z#}9GbOdPf(hmL3e5{Q9-qTq{KjecTVg3n;5jvg^;&XwjKIEJB64jf*tZ zV`cmorsDi@nZ(|tM<;6?dvo= zBHjfwvRYUzi!iAt`&`}Mwe$jEGD)`A8~0-a<1{u(Pt_g8LqNkQo#zz_g6|oZszzgr zx%_2KLIRX?X9osTp!Ya_?X;hTD#HX%5|LKMGG@XGldpz#Z&ln$t4ke1@uF;*wK>w( zot;%%CIKWmC_6cg^JtE+Q`wJ5fycW@Jof$57>$-H?KAblB2aJsUhnK3id*FP z6HN|0XiQ=yp+~whZ#gadL#tQ$NMW!!-iHa1?d&z;$X)fSh@3cE%);gp_xNRZnFIzM zrVKLUM0`NOCZU*zO6qc~1%YY2g+?y?!L`*w1oT)c%{ipzF44W%EKb~FeUJA7rs$AH z%Wh!+FVcy~(DcS|s|y$%^dT&o1`MhrTeCLrJaGkxm07g zTD`RBVT-|HGl#9Uy;&F^hcCkDck72WU+GnM7bF!TifWZ~2mLS~At@Yg)?);CBj39k z3}S0N`PQ_mM*LBAtGhNv#KO_TEGZ%fofup|vzTHGHaXXkEuWNQ4fjs-6io>~=>6HRN!#b`?G-7T zW^tl^;)(=_?;1E-Dd~jiW z9gD@wE0k_x00;WDL@P0rq|S0H02s$vQ{C*mbP;YPOuJ6cfq(ntqQq;NeE*qy&-L!r zrowSgar8_FK&GZK``q*cZZf0yu(RZLSre{)HA4Br;@?JCIwvzKX;rXErz4g=%3T;u z@D$@|Fq6;kjba5IrE-_xj}1nE`HY^~=r;ML!Gk=y*>(QcVF@9<*KIGMn$Fi2S)9+s5L&e$M%y63#$NpM|C+#+B}~fT|lVA^*d(xim(@A*g0R3u+;Ehy&SYHTZFsQ zd`TV#c)wiOmQ5b?0k$v!{?|}eh5{%8kGhtxib33XI^=g1lwckA2C(T7fKOLCYji+F zh|UA=%x8-IWPYu(tOdA#=zCK4FP7DtoeJJ*suaL)YZifP<{mTr@Y^;47PnIHr;cq!K`hZ;v*OJB< zja#qD&n0##s1-wtZgXp2zwkmcuRanWMJ6rS+DZYy`*>H3guTUQ*umNs@NG$zNjo;kJo(en{mM7IaR%wY`{VJnehV^> z%j)Mdf8kaVRNjZZwFCtsqRrTc*8ZwH3y6S=5oAcB9lymMoj_QQ5jdFvZL{+!It07l zKkQkroK{{%t!fS(1$q<;LDID}lEBJf#7i@=uVk565T$7L9D-;&OmgEX7P9NU+5y~t zhG3Or(hv7qN{fX`4;ix_=)-N9i{$q+-Eb>EH!F?f{$y@$c{pb2|Eh{eOgEmDRG;Ip zA9fHh{w#($@a>Ly?en~8A785(FPD*sSrE3UX|%Jr30K-p(X-(_-3a^FH_C!BTij+X zWTWZzuv$E3b$E%){*iLPu4q|`hr%AeO~NJDTf)TjIX1rP5eo?l+zZ&_e9PlZ!4YhE zz2c=tHU&nlJs80cM|888C@%hGZ6MxtlGnIPd~j-D6qR;8c7*ND zgj9Sv(N0`NEow4Gr$z=6xVp1}e3^n+$$=`x#i~xegS=Drh#(czprm*6uu66sO~KRt z26H&XxLBzDj(0od$Ax#6;{q0GP2)JTf*XHMzykfYl^P!_!EgQ}@%T(v>DuGNEacK< z)aVe6A=j@XL?A=1{LJ=)cu`kYsy|2La}~u|yz|TFwL^gw$7RLJhQk*}mGs{4z8^)Z zK|`Cx^LFde+vmU2%NJV?{;4ZSAI{1Y^O(qiUPl!j491OI=_fAjPdzm8tnf$eY`Z(( z%`FAJYd#aVpEzyIc^4-1nwRLV!8m{vRKPsQ65%^&+9KiFE)fMr!~%W#X>Mh;9uf=( zDvoAB0Objcx3b*hTKk{1`T|(+>YrODItcWS?Vk-l z?fNEqLQ3Jr;ui>Q*){jGNx|_^=L5} z8_Urje|5e1f=@lFeaHzx&>=6e-;MW5prCcUt6dhPYFZPgQ#>Ui0%6wv{LnFUhvgDy ze`nY<7M6b`BH}l)AErX|gM`yZ+h=3jV?m$Spj6pVK?Gwt<9$SHd_iq3&S5y%QfZT{ zx$be$K>QgAaE-JoTA4S|xO9$FMLf3(uyBl$0lgx%S;D%#Z%Ab1=AYO~ zJ8AqCSyH3s{$Qa+1$o|24Jl_}uBST*fl5s!GAJaK9t^U-9rB%p%?^7fO>lHF;E|Rp z4;f@))|~?vrkSXpu|uR~o3D+a;ba_A+fMymtVKVKQVl0@$~xiwY!7{EC_=A{ope}c)YESo z^VfXl$x?kD4ytERTQ)=}#5%s7vZxdM-J4mA1_CJi&sTx9WotyU$7)oJMv z97Qs82&!fRRa|k1#hs zTY~$=RYFjdW!_$b@#eEt5nuWq{>_aw0;c83jAuQopGO1Vy8(Q6n=9ic=-QW!#sgKi zQ=vm2n-VMGzFjhsW!pcdktt@44|^!B4LiHr{Z2X6Za>sqXNxuH6=bWNE7F;N)m<_1 zU-onNt3DV{^yX@3C;bqm-HQ@F4yllzF_rZOUZLgC=9`VP@3)00J%w4!;j>ri%>qT< zcsQn@II~ycpH6o$50c@-+z*dK_13~_7`~HAz-v%t;4g>|xC_EQ%+sTh5Qb&pyUW!M z?zjoUaFap_Z|1Akqi)I?z33hFr8El%W=VOfja=5FNI%?d|0d+ap-KDf6DMpCn&sH7 zg+DUC2nUkvDOM?jw+J>wwB{l%j9|n(ATp z{nQhwr`G2B@xI&fCSD5&0yLv-4L%_6o~)XBC!9@kpHy55H4HHcj6cCYSJ$T)TM^xzt?dhzrTC&DefB zD^>Xw$9EOyNagz$HlMrZRG7a?!*2~AghJKnKS~>iS5l>2r!EG&?fTKRQn|v8c@0t( z#6j*2F6V!Q(9@L{e{YS{o^b7{nR5j9sD4j7I96{2rT4@-myox@`>*U3W@Gj74;Lm#QTBb%a*4sns-MT3Z4 zF*AY>|4UBcAD+hEZ(g7@B2Zi9HV}In=)k;JzC4nqpKUf>Bh=MVBg8@)6?)npkK3Ou zMQaPGo1@p&`NbdYT&~xXu@{W6ox-r|qF@Sj_AsJ$GF(sF&Qp}OXrThu-|P+yIahcf zd|#D9`DgeFY4$4#M30)^Q{#5Dvqd=hI}^o{xO{wCE`BR;z9^ZQdweBm5I41td^vCO zD$A0>ot|04^8CZk$DujZlEbrJS4P!7&%4RUCm}!6hXp-M884%iE>?XKW9fX?Kq6(Z4%v8(1rsb` z1=SL6*OuH3?w7#i@|p^7KeVhrjFczdWJ{^HZN+ET(M4uG#%MkB61vHg?1c8+^nd2B+(z593&1wUOxxg$g;v zDoRoZQ*gMb+9XLIR6mWyW&>^bjwGPSYY?hWA4I48gaW95Xj-2doe|zF#PwYzlFR~j z9S@QBpU#L_=5c1Cdnw_r(ETIJyO(Rfy_2A%JR_cc&$fT|8>!hsTlv!+6H;F9+o3l` z;B$_XAO$ga7I?UAPd}c->?urj>r$t>^xNHIT^#kxx!)5whgok*T=LagY?15SIJE13 zLDvhRFBxqCo|dNo?4I#!lPaHjVRPFF%(agHHaKR^{br9yjo`*4afR^_R5_AQ7>r#x zYfXX*5|Ot2Cvy8=z@nHj<+BDtvc<(7FoLg}UGXk&XG8!7sFB#59sd7>o6;t|?op^2`kK~o^O1DfM9rp@*%`C#x)I== zxlBRfnY4JwdX*6E66@ruLXl^u?_Hb4N_bOQ1PQm!x*QUJBdsU3-tg`53FIC!N+&%h zbx{Mn=>TI?ZKdLp$(*aUz*M=zLFLPO-iS=djds^HA`p1oiUw7+-_@l@S>0XMm5NQ$ zF%ngj`7?H|l(N#@c|z){kNBA0O^BD-Tz1#ecmcnw*Grla*LGVbUat7aFW?+lB{)yp zQ*tf#=zQz>dCDp~^*U0Ysw&8=h}BYfO(%2J>s0LcOJ|DzI@r^Dt&wxoEU*X1i^1rM zxmk|bQi|*96bl0Y`u6EIrAevtMh`{EIuZFllRg>bmL-lUCCe}+%amh=EF@MD%WlF|OPBW_i!X(U)T%$d=r-sNC1 z=gKCVwXu2QkF}ZT_il#uGWFj}t@eJEDh|O7tIE@GK(WoBi+}z*W1-B4eiF6IS){{A z#5jfDt~N@r8ogK>60frNI#lTD=ZLV~acZ9<#ml2G)T?pDmMHN^Im@r_UM3`YZk~TZ z2QDHgP(3&M%Cv=q84vOCD|cPdoR+XRq+dB(!;)`e36E54(mj76{X!zOApz=Lub1`J zNVvwS|K)rUZ^>=W>Gz_Uj8~nk{VykbtDHU4d%h4)VAo*u89tk31c9(HpVkP_^%jYO zoZ3uTk}j&eDAu*YoS9sG{ah`2&@$!&a?VxV3T4Q_>3WK_aBEi4y|rpLu?FSzG3_^< zX-M{oKr+4Q0T2UKq^)Gr?9FO=9y?^l+h3cyN#`rQ zU$^oyVC1YQ>SVj2ySi&s(9B?l9VUgAd|Swp<5(`c`%Q5zwmbnl1M3J$wS^y@x>)=% z`Jx!I;NTHIGhFWC97w+u8aNlaKL5;@zdr#Q5ZzX)RH$R@Q%_%jp?;XYU-Cv%i!&V) z>2u|!%h#oAcApHlE8^Kb#c5PM6$tH?ZYGs8YXFz;d82F@|SY2`|$)N~u~!N$jxYe50IqnQUzR zg%+cp9Jnufn3FH%ba}ncwlUTCu@tm2;DIOSY*Ubm;8Lf06k*94rJ=~mtt@#~$JMh0 zV(S`afLM&ezAO}6;^XimeTYnCj9-vs?JI2Eh-q~*TgXW9m}If&kbT*~>0oU$I+Q{z zgwFXoeT~&lCP*Lku#l?tC#8_J7vF=pQyS~(kOU|Nt3Y)b?mS6(b~5%4azl~69lyRH!=}O~VHd$_Q#GsCdVB&ImP5+fU8Ks8MLMgm zbG6#R*>;aBMGI3I)m#$dR1&{eDXtyQ6zFCgRVQN)=Qi#5jD=;=usbpmO<#$3nAX@+ z6y#PYO%>eDBSQZio`m!dlCXnPsBLU)?nX{7p6LXs2%qX+#`%rYdJo3Uy*F5v z%EZ(ZYRyH@&8>kY^yiHk$rC!-?F>RAA|i_G{;XtcTh7MDX3PfOxQ02OZ^`MkxX5K> zWN6ozMsnFM^lBl4I;~g#?3Gqb%+HrzTsR4y{=#Jge|G(C%w}nn2yy+Ve}%?g|f!2Fm=eEBx)@E_ZHFx$Z=8O`NdlH!fOwz9XZ@0GaoUZ0?RoNE z&UHC5K)p3fSORWpn#M|{ty!q(g*^(09e~$KsW##j(@&S@bw0=)I}K(xqe5qsI{PZX z=eQ+1aHgfDb>`mci3a+FE!oFHOiDUgZPNd_;Ql=8G2J2K&rN?4m}lW-tL>y)W$VG(%}!>#B)uQ@>&9c{Zi>!+O#%_8&0 zw2}88SSlaGOa`L3Zh0VteA18^x4#kXZ(G)dU!i^1XZap}}@hSzTS-cy2vfxI8m6Q)=1`SZl#(X}Q^1hLDi3h9p$s zXgDuwi?RABGOeyoRS2(_p@z;yqhH%XtsgjzE4xx;;Q7Z@*VH)Q-(IG$)XX0?d)`z7 zy%%^8K<7Jf@ffJxpRSjHf-EIeFIO%1OmeffAAaH+4eU2N8h`UOPSJk0Bngvt3+ZlZ+agRoj+IDkQ6 zOB>X#vrH6t9X(ZHK&C@Edx)y0DG>cTSFKdN&pOkqzv3waTxD1;Y$*UUjbc`h>$Q;SLPgc5A4MLUXL|=1$?9-B^9b(uG=?@ z>?=l*|L9|Sz37^yUZzP7och9ou3M`4+$W)IBGI(0Sq@%-ETtcGo zan&obS{uSz(bHzEezE(9snk-(OKILB;iu~h(9s}^W6L6RXecRTFb_0w%TOeoSn#WX+C>z(f)nXD>uG2`sQa+ z#MnTJkqRXHmZ>I1ONO_FtNk0-(@7Y=vIwupg4&HkE#=oA8X za;R}~2S|6oS}qWs2Bs!F20Zutf)5z&8GEF0bWE8r_PtC0O30o|VT5U7pLnVltpuAhH04IEGwcV11&$f$bOTD#h~k7J5Kv9&)xH=5I2=7QOGW|5AOTZXN4jWndz zRmNPuMH)Cr2WjlzU?YEHrS*U3^{=g~%fG7Fs`&p>0I<-1hwzl_XMg}uaQ%V<^l7y5 z|Gfb41cUxN7QSHk7dgm|TClk#G9X5jiBnL*vjHk{3r7Tngb~-YofO zuru9G6d^k|{?rb=Kit*4{QXi|@wRtrp`P%464%!X9BlxJF1V51?Ue`_BtahWCYjLZ z6Em0?`={Cpin!LJtW9Y3tm-2}(#n>ng!WUsAE%yS?g*?sa$tafX^=LH^iIVT8pzJP z_E!+*+DE{NmeAW)>_a)3Gf&)CkCSG4k#lq@b@sPXip>ayjn zsXN}de}(m+1?=b}+x0hjF*0()jDJ|`>*|!ia3E!}{~oTdEcH}uAvESHuM$v-{O|X% z|Hya#Hz@yq)z$yYg42Iav}kEkaZ#lFJ+UBAUf#ff?7dGn*Ne6hSzTmcK|PR^nEc0b I(NF&W15l0@F8}}l literal 0 HcmV?d00001 From 974d5cf59b3e1204586025b6a509cb12170edf81 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Mon, 22 Jul 2019 16:50:22 -0700 Subject: [PATCH 1480/2943] link updates --- docs/quickstart/includes/publish-api-key.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/quickstart/includes/publish-api-key.md b/docs/quickstart/includes/publish-api-key.md index e28db7baf..45bf0787e 100644 --- a/docs/quickstart/includes/publish-api-key.md +++ b/docs/quickstart/includes/publish-api-key.md @@ -10,4 +10,4 @@ 1. **Important**: Save your key in a secure location because you cannot copy the key again later on. If you return to the API key page, you need to regenerate the key to copy it. You can also remove the API key if you no longer want to push packages via the CLI. -Scoping allows you to create separate API keys for different purposes. Each key has its expiration timeframe and can be scoped to specific packages (or glob patterns). Each key is also scoped to specific operations: push of new packages and updates, push of updates only, or delisting. Through scoping, you can create API keys for different people who manage packages for your organization such that they have only the permissions they need. For more information, see [Introducing scoped API keys](https://blog.nuget.org/20170202/introducing-scoped-api-keys.html) (blogs.nuget.org). \ No newline at end of file +Scoping allows you to create separate API keys for different purposes. Each key has its expiration timeframe and can be scoped to specific packages (or glob patterns). Each key is also scoped to specific operations: push of new packages and updates, push of updates only, or delisting. Through scoping, you can create API keys for different people who manage packages for your organization such that they have only the permissions they need. For more information, see [scoped API keys](../../nuget-org/scoped-api-keys.md). \ No newline at end of file From f3f2383e4b843b70b7aebd0fa2bba9dfb7f56022 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Mon, 22 Jul 2019 16:54:32 -0700 Subject: [PATCH 1481/2943] link updates --- docs/quickstart/includes/publish-api-key.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/quickstart/includes/publish-api-key.md b/docs/quickstart/includes/publish-api-key.md index 45bf0787e..d47a1a179 100644 --- a/docs/quickstart/includes/publish-api-key.md +++ b/docs/quickstart/includes/publish-api-key.md @@ -1,5 +1,7 @@ 1. [Sign into your nuget.org account](https://www.nuget.org/users/account/LogOn?returnUrl=%2F) or create an account if you don't have one already. + For more information on creating your account, see [Individual accounts](../../nuget-org/individual-accounts.md). + 1. Select your user name (on the upper right), then select **API Keys**. 1. Select **Create**, provide a name for your key, select **Select Scopes > Push**. Enter * for **Glob pattern**, then select **Create**. (See below for more about scopes.) From 1ad342712e5a18024d9770c7532a69dd0118621c Mon Sep 17 00:00:00 2001 From: Jan Klass <8045680+ite-klass@users.noreply.github.com> Date: Tue, 23 Jul 2019 10:15:56 +0200 Subject: [PATCH 1482/2943] Mention support for later VS versions than VS 2017 --- docs/reference/migrate-packages-config-to-package-reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/migrate-packages-config-to-package-reference.md b/docs/reference/migrate-packages-config-to-package-reference.md index bba29553d..99382aaab 100644 --- a/docs/reference/migrate-packages-config-to-package-reference.md +++ b/docs/reference/migrate-packages-config-to-package-reference.md @@ -21,7 +21,7 @@ Visual Studio 2017 Version 15.7 and later supports migrating a project from the ### Limitations -* NuGet PackageReference is not available in Visual Studio 2015 and earlier. Migrated projects can be opened only in Visual Studio 2017. +* NuGet PackageReference is not available in Visual Studio 2015 and earlier. Migrated projects can be opened only in Visual Studio 2017 and later versions. * Migration is not currently available for C++ and ASP.NET projects. * Some packages may not be fully compatible with PackageReference. For more information, see [package compatibility issues](#package-compatibility-issues). From 44992e27a008cb939244b10b4d764918a04a3f46 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 23 Jul 2019 08:20:29 -0700 Subject: [PATCH 1483/2943] fixed #1551 --- docs/create-packages/Prerelease-Packages.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/create-packages/Prerelease-Packages.md b/docs/create-packages/Prerelease-Packages.md index 2434bc05a..ce1ba7a35 100644 --- a/docs/create-packages/Prerelease-Packages.md +++ b/docs/create-packages/Prerelease-Packages.md @@ -76,10 +76,10 @@ Whatever suffixes you use, however, NuGet will give them precedence in reverse a 1.0.1-zzz 1.0.1-rc 1.0.1-open - 1.0.1-beta12 - 1.0.1-beta05 + 1.0.1-beta.12 + 1.0.1-beta.05 1.0.1-beta - 1.0.1-alpha2 + 1.0.1-alpha.2 1.0.1-alpha -As shown, the version without any suffix will always take precedence over pre-release versions. Note also that if you use numerical suffixes with pre-release tags that might use double-digit numbers (or more), use leading zeroes as in beta01 and beta05 to ensure that they sort correctly when the numbers get larger. +As shown, the version without any suffix will always take precedence over pre-release versions. Note also that if you use numerical suffixes with pre-release tags that might use double-digit numbers (or more), use leading zeroes as in beta.01 and beta.05 to ensure that they sort correctly when the numbers get larger. From 85005ddb83f0cb04db385904dc9aa78a8e651d3f Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 23 Jul 2019 08:33:35 -0700 Subject: [PATCH 1484/2943] minor fixes --- docs/consume-packages/install-use-packages-visual-studio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/consume-packages/install-use-packages-visual-studio.md b/docs/consume-packages/install-use-packages-visual-studio.md index cb158e099..d0e870fb1 100644 --- a/docs/consume-packages/install-use-packages-visual-studio.md +++ b/docs/consume-packages/install-use-packages-visual-studio.md @@ -12,7 +12,7 @@ f1_keywords: - "vs.nuget.packagemanager.ui" --- -# Install and manage packages in Visual Studio +# Install and manage packages in Visual Studio using the NuGet Package Manager The NuGet Package Manager UI in Visual Studio on Windows allows you to easily install, uninstall, and update NuGet packages in projects and solutions. For the experience in Visual Studio for Mac, see [Including a NuGet package in your project](/visualstudio/mac/nuget-walkthrough?toc=/nuget/toc.json). The Package Manager UI is not included with Visual Studio Code. From 637f8fcc25f540c0e43a16a4a1b764936c249cf3 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 23 Jul 2019 09:19:45 -0700 Subject: [PATCH 1485/2943] link update --- docs/reference/msbuild-targets.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/msbuild-targets.md b/docs/reference/msbuild-targets.md index 6f5688bc6..1ef9b6b62 100644 --- a/docs/reference/msbuild-targets.md +++ b/docs/reference/msbuild-targets.md @@ -11,7 +11,7 @@ ms.topic: conceptual *NuGet 4.0+* -With the PackageReference format, NuGet 4.0+ can store all manifest metadata directly within a project file rather than using a separate `.nuspec` file. +With the [PackageReference](../consume-packages/package-references-in-project-files.md) format, NuGet 4.0+ can store all manifest metadata directly within a project file rather than using a separate `.nuspec` file. With MSBuild 15.1+, NuGet is also a first-class MSBuild citizen with the `pack` and `restore` targets as described below. These targets allow you to work with NuGet as you would with any other MSBuild task or target. (For NuGet 3.x and earlier, you use the [pack](../reference/cli-reference/cli-ref-pack.md) and [restore](../reference/cli-reference/cli-ref-restore.md) commands through the NuGet CLI instead.) From 4d76875fea018549e33ef7e921deab6e1dcd0e67 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 23 Jul 2019 09:48:56 -0700 Subject: [PATCH 1486/2943] link updates --- .../managing-the-global-packages-and-cache-folders.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 0fba9e3b3..d2660fae7 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 @@ -13,7 +13,7 @@ Whenever you install, update, or restore a package, NuGet manages packages and p | Name | Description and Location (per user)| | --- | --- | -| 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 format always use packages directly from this folder. When using the `packages.config`, 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.
    | +| 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/Linux: `/tmp/NuGetScratch`
  • | | 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.
    | From 50053e93db21b8fd59ecc727db6dbaa406a3823f Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 23 Jul 2019 11:13:00 -0700 Subject: [PATCH 1487/2943] link update --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 03fe8bfe8..e9d0cf7c4 100644 --- a/docs/index.md +++ b/docs/index.md @@ -143,7 +143,7 @@ hide_bc: true Create a package - nuget.exe CLI

    - Support multiple target frameworks + Support multiple target frameworks

    From b99880c5e46de58d0feb3a681f72afba28c93aaf Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 23 Jul 2019 11:54:26 -0700 Subject: [PATCH 1488/2943] incorporated feedback --- docs/create-packages/Prerelease-Packages.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/create-packages/Prerelease-Packages.md b/docs/create-packages/Prerelease-Packages.md index ce1ba7a35..b282672c7 100644 --- a/docs/create-packages/Prerelease-Packages.md +++ b/docs/create-packages/Prerelease-Packages.md @@ -77,9 +77,11 @@ Whatever suffixes you use, however, NuGet will give them precedence in reverse a 1.0.1-rc 1.0.1-open 1.0.1-beta.12 - 1.0.1-beta.05 + 1.0.1-beta.5 1.0.1-beta 1.0.1-alpha.2 1.0.1-alpha -As shown, the version without any suffix will always take precedence over pre-release versions. Note also that if you use numerical suffixes with pre-release tags that might use double-digit numbers (or more), use leading zeroes as in beta.01 and beta.05 to ensure that they sort correctly when the numbers get larger. +As shown, the version without any suffix will always take precedence over pre-release versions. + +Leading 0s are not needed with semver2, but they are with the old version schema. If you use numerical suffixes with pre-release tags that might use double-digit numbers (or more), use leading zeroes as in beta.01 and beta.05 to ensure that they sort correctly when the numbers get larger. This recommendation only applies to the old version schema. From bc51a26e3a4cc1ae0e5343efa0c8f97bf6fe80dc Mon Sep 17 00:00:00 2001 From: Anand Gaurav Date: Tue, 23 Jul 2019 13:26:27 -0700 Subject: [PATCH 1489/2943] Update Dependency-Resolution.md --- docs/consume-packages/Dependency-Resolution.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/consume-packages/Dependency-Resolution.md b/docs/consume-packages/Dependency-Resolution.md index 90a0d5282..aedfe9d6d 100644 --- a/docs/consume-packages/Dependency-Resolution.md +++ b/docs/consume-packages/Dependency-Resolution.md @@ -19,11 +19,11 @@ When multiple packages have the same dependency, then the same package ID can ap When installing packages into projects using the PackageReference format, NuGet adds references to a flat package graph in the appropriate file and resolves conflicts ahead of time. This process is referred to as *transitive restore*. Reinstalling or restoring packages is then a process of downloading the packages listed in the graph, resulting in faster and more predictable builds. You can also take advantage of wildcard (floating) versions, such as 2.8.\*, avoiding expensive and error prone calls to `nuget update` on the client machines and build servers. -When the NuGet restore process runs prior to a build, it resolves dependencies first in memory, then writes the resulting graph to a file called `project.assets.json`. +When the NuGet restore process runs prior to a build, it resolves dependencies first in memory, then writes the resulting graph to a file called `project.assets.json`. It also writes the resolved dependencies to a lock file named `packages.lock.json`, if the [lock file functionality is enabled](https://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files#locking-dependencies). The assets file is located at `MSBuildProjectExtensionsPath`, which defaults to the project's 'obj' folder. MSBuild then reads this file and translates it into a set of folders where potential references can be found, and then adds them to the project tree in memory. -The lock file is temporary and should not be added to source control. It's listed by default in both `.gitignore` and `.tfignore`. See [Packages and source control](packages-and-source-control.md). +The `project.assets.json` file is temporary and should not be added to source control. It's listed by default in both `.gitignore` and `.tfignore`. See [Packages and source control](packages-and-source-control.md). ### Dependency resolution rules From 9b5d5fe431526b48c4874a3dc3bb1c246b8f2bf0 Mon Sep 17 00:00:00 2001 From: Mike Jones Date: Tue, 23 Jul 2019 13:31:27 -0700 Subject: [PATCH 1490/2943] Update docs/index.md Co-Authored-By: Karan Nandwani --- docs/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/index.md b/docs/index.md index e9d0cf7c4..e986de85c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -13,7 +13,7 @@ hide_bc: true

    NuGet Documentation

    -

    NuGet allows developers to create, share, and consume useful .NET code. With NuGet, you can bundle code into "packages" that contain compiled code, such as DLLs.

    +

    NuGet is the package manager for .NET. It enables developers to create, share, and consume useful .NET libraries. NuGet client tools provide the ability to produce and consume these libraries as "packages".

    • @@ -236,4 +236,4 @@ hide_bc: true
    -
    \ No newline at end of file + From b44eb11bf3b399173a71e7c31ea7438940286ae7 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 23 Jul 2019 13:35:25 -0700 Subject: [PATCH 1491/2943] clarify NuGet server api --- docs/api/overview.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/api/overview.md b/docs/api/overview.md index 199b32ba3..7201f6431 100644 --- a/docs/api/overview.md +++ b/docs/api/overview.md @@ -1,6 +1,6 @@ --- -title: Overview of the NuGet API -description: The NuGet API is a set of HTTP endpoints that can be used to download packages, fetch metadata, publish new packages, etc. +title: Overview of the NuGet Server API +description: The NuGet Server API is a set of HTTP endpoints that can be used to download packages, fetch metadata, publish new packages, etc. author: joelverhagen ms.author: jver ms.date: 10/26/2017 @@ -8,9 +8,9 @@ ms.topic: reference ms.reviewer: kraigb --- -# NuGet API +# NuGet Server API -The NuGet API is a set of HTTP endpoints that can be used to download packages, fetch metadata, publish new packages, +The NuGet Server API is a set of HTTP endpoints that can be used to download packages, fetch metadata, publish new packages, and perform most other operations available in the official NuGet clients. This API is used by the NuGet client in Visual Studio, nuget.exe, and the .NET CLI to perform NuGet operations such as From 021662c26d10b6131c9c87c9ee8afb72c63a3746 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 23 Jul 2019 13:37:34 -0700 Subject: [PATCH 1492/2943] Update TOC.md --- docs/TOC.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/TOC.md b/docs/TOC.md index 05f860e63..53fbeb0a7 100644 --- a/docs/TOC.md +++ b/docs/TOC.md @@ -103,7 +103,7 @@ ### [Sync-Package](reference/ps-reference/ps-ref-sync-package.md) ### [Uninstall-Package](reference/ps-reference/ps-ref-uninstall-package.md) ### [Update-Package](reference/ps-reference/ps-ref-update-package.md) -## NuGet API +## NuGet Server API ### [Overview](api/overview.md) ### Resources #### [Autocomplete](api/search-autocomplete-service-resource.md) From 5d08e7abc03c69b959a9e706fa523bd22d98254f Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 23 Jul 2019 14:03:15 -0700 Subject: [PATCH 1493/2943] Update migrate-packages-config-to-package-reference.md --- docs/reference/migrate-packages-config-to-package-reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/migrate-packages-config-to-package-reference.md b/docs/reference/migrate-packages-config-to-package-reference.md index 99382aaab..bab6f4a5b 100644 --- a/docs/reference/migrate-packages-config-to-package-reference.md +++ b/docs/reference/migrate-packages-config-to-package-reference.md @@ -21,7 +21,7 @@ Visual Studio 2017 Version 15.7 and later supports migrating a project from the ### Limitations -* NuGet PackageReference is not available in Visual Studio 2015 and earlier. Migrated projects can be opened only in Visual Studio 2017 and later versions. +* NuGet PackageReference is not available in Visual Studio 2015 and earlier. Migrated projects can be opened only in Visual Studio 2017 and later. * Migration is not currently available for C++ and ASP.NET projects. * Some packages may not be fully compatible with PackageReference. For more information, see [package compatibility issues](#package-compatibility-issues). From 49fc714b1acbd951f9b91e8257aa6b95524f10c2 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 23 Jul 2019 14:10:03 -0700 Subject: [PATCH 1494/2943] Update cli-ref-config.md resolves https://github.com/NuGet/docs.microsoft.com-nuget/pull/1322 --- docs/reference/cli-reference/cli-ref-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/cli-reference/cli-ref-config.md b/docs/reference/cli-reference/cli-ref-config.md index 640287c75..627bff590 100644 --- a/docs/reference/cli-reference/cli-ref-config.md +++ b/docs/reference/cli-reference/cli-ref-config.md @@ -31,7 +31,7 @@ In NuGet 3.4+, `` can use [environment variables](cli-ref-environment-var | Option | Description | | --- | --- | | AsPath | Returns the config value as a path, ignored when `-Set` is used. | -| ConfigFile | The NuGet configuration file to modify. If not specified, `%AppData%\NuGet\NuGet.Config` (Windows) or `~/.nuget/NuGet/NuGet.Config` (Mac/Linux) is used.| +| ConfigFile | The NuGet configuration file to modify. If not specified, the default file is used -`%AppData%\NuGet\NuGet.Config` (Windows) or `~/.config/NuGet/NuGet.Config` (Mac/Linux) or `~/.nuget/NuGet/NuGet.Config` (varies by OS distribution).| | ForceEnglishOutput | *(3.5+)* Forces nuget.exe to run using an invariant, English-based culture. | | Help | Displays help information for the command. | | NonInteractive | Suppresses prompts for user input or confirmations. | From c0da7c95c7942a5f68325af6373a344970bf0163 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 23 Jul 2019 17:23:52 -0700 Subject: [PATCH 1495/2943] incorporated feedback --- docs/index.md | 71 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 43 insertions(+), 28 deletions(-) diff --git a/docs/index.md b/docs/index.md index e986de85c..2f28a67bb 100644 --- a/docs/index.md +++ b/docs/index.md @@ -26,7 +26,7 @@ hide_bc: true
    -

    Introduction to NuGet

    +

    Introduction to NuGet

    What is NuGet?

    @@ -48,7 +48,7 @@ hide_bc: true
    -

    Get started - Consume packages

    +

    Get started

    Find and choose packages

    @@ -58,22 +58,6 @@ hide_bc: true

    Install and use a package - Visual Studio

    -
    - - - - -
  • -
    -
    -
    -
    -
    - Get started icon -
    -
    -
    -

    Get started - Create packages

    Create a package - dotnet CLI

    @@ -88,7 +72,7 @@ hide_bc: true
  • -
  • +
  • -

    Create packages

    +

    Create packages

    Workflow (overview)

    @@ -160,7 +144,7 @@ hide_bc: true
    -

    Publish packages

    +

    Publish packages

    Publish to NuGet.org

    @@ -182,7 +166,7 @@ hide_bc: true
    -

    NuGet.org

    +

    NuGet.org

    Overview

    @@ -213,7 +197,7 @@ hide_bc: true
    -

    Reference

    +

    Reference

    dotnet CLI

    @@ -234,6 +218,37 @@ hide_bc: true
  • +
  • +
    +
    +
    +
    +
    + Multi-connect icon +
    +
    +
    +

    Resources

    +

    + Policies - NuGet +

    +

    + Policies - NuGet.org +

    +

    + Release notes +

    +

    + FAQ - NuGet +

    +

    + FAQ - NuGet.org +

    +
    +
    +
    +
    +
  • From ea8e768de0730f8ba4e71c3d652d79695991c885 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 23 Jul 2019 17:35:29 -0700 Subject: [PATCH 1496/2943] incorporated feedback --- docs/index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/index.md b/docs/index.md index 2f28a67bb..c26e06b8f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -48,7 +48,7 @@ hide_bc: true @@ -203,6 +200,9 @@ hide_bc: true

    nuget.exe CLI +

    + Package references +

    .nuspec @@ -228,7 +228,7 @@ hide_bc: true

    -

    Resources

    +

    Resource

    Policies - NuGet

    From 21e14e6d8615be25cfbe28c1e5a4e160fdecdaaf Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 23 Jul 2019 17:38:31 -0700 Subject: [PATCH 1497/2943] link fix --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index c26e06b8f..7738f3acf 100644 --- a/docs/index.md +++ b/docs/index.md @@ -233,7 +233,7 @@ hide_bc: true Policies - NuGet

    - Policies - NuGet.org + Policies - NuGet.org

    Release notes From 3b0872854ceba28237ef6743b483b24532637c65 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 23 Jul 2019 17:41:42 -0700 Subject: [PATCH 1498/2943] typo fix --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 7738f3acf..cc4bc5c12 100644 --- a/docs/index.md +++ b/docs/index.md @@ -228,7 +228,7 @@ hide_bc: true

    -

    Resource

    +

    Resources

    Policies - NuGet

    From 6f240d5363eab6d34a3befb67c0e384986abd1ce Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Tue, 23 Jul 2019 17:46:18 -0700 Subject: [PATCH 1499/2943] rearranging a few links --- docs/index.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/index.md b/docs/index.md index cc4bc5c12..ace41f23f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -49,9 +49,6 @@ hide_bc: true
    From 20718327bff3f4d8cc043bf3631aa42dde2b6ed6 Mon Sep 17 00:00:00 2001 From: Karan Nandwani Date: Tue, 23 Jul 2019 20:32:56 -0700 Subject: [PATCH 1500/2943] Apply suggestions from code review --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index ace41f23f..5dca3017c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -236,7 +236,7 @@ hide_bc: true Policies - NuGet.org

    - Release notes + Release notes

    FAQ - NuGet From d6033a860d7a59cd4c64c61aab7fecbdc7320b47 Mon Sep 17 00:00:00 2001 From: "Mike Jones (DEVUE)" Date: Wed, 24 Jul 2019 10:30:02 -0700 Subject: [PATCH 1501/2943] refresh --- ...tall-and-use-a-package-in-visual-studio.md | 44 +++++++++++------- .../media/QS_Use-02-ManageNuGetPackages.png | Bin 12008 -> 37199 bytes .../media/QS_Use-03-NewtonsoftJson.png | Bin 29581 -> 86838 bytes docs/quickstart/media/QS_Use-06-AppStart.png | Bin 3332 -> 13841 bytes docs/quickstart/media/QS_Use-07-AppEnd.png | Bin 4734 -> 21519 bytes docs/quickstart/media/QS_Use-08-Console1.png | Bin 16069 -> 39664 bytes 6 files changed, 26 insertions(+), 18 deletions(-) diff --git a/docs/quickstart/install-and-use-a-package-in-visual-studio.md b/docs/quickstart/install-and-use-a-package-in-visual-studio.md index 74b9eb836..645be25c1 100644 --- a/docs/quickstart/install-and-use-a-package-in-visual-studio.md +++ b/docs/quickstart/install-and-use-a-package-in-visual-studio.md @@ -3,25 +3,24 @@ title: Install and use a NuGet package in Visual Studio description: A walkthrough tutorial on the process of installing and using a NuGet package in a Visual Studio project. author: karann-msft ms.author: karann -ms.date: 01/23/2018 +ms.date: 07/24/2018 ms.topic: quickstart --- -# Quickstart: Install and use a package in Visual Studio +# Quickstart: Install and use a package in Visual Studio (Windows only) -NuGet packages contain reusable code that other developers make available to you for use in your projects. See [What is NuGet?](../What-is-NuGet.md) for background. Packages are installed into a Visual Studio project using the Package Manager UI or the Package Manager Console. This article demonstrates the process using the popular [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) package and a Universal Windows Platform (UWP) project. The same process applies to any other .NET or .NET Core project. +NuGet packages contain reusable code that other developers make available to you for use in your projects. See [What is NuGet?](../What-is-NuGet.md) for background. Packages are installed into a Visual Studio project using the NuGet Package Manager or the Package Manager Console. This article demonstrates the process using the popular [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) package and a Windows Presentation Foundation (WPF) project. The same process applies to any other .NET or .NET Core project. Once installed, refer to the package in code with `using ` where \ is specific to the package you're using. Once the reference is made, you can call the package through its API. > [!Tip] -> **Start with nuget.org**: Browsing nuget.org is how .NET developers typically find components they can reuse in their own applications. You can search nuget.org directly or find and install packages within Visual Studio as shown in this article. +> **Start with nuget.org**: Browsing *nuget.org* is how .NET developers typically find components they can reuse in their own applications. You can search *nuget.org* directly or find and install packages within Visual Studio as shown in this article. ## Prerequisites -- Visual Studio 2017 with the Universal Windows Platform development workload, or -- Visual Studio 2015 Update 3 with Tools for Universal Windows Apps. +- Visual Studio 2019 with the .NET Desktop Development workload. -You can install the 2017 Community edition for free from [visualstudio.com](https://www.visualstudio.com/) or use the Professional or Enterprise editions. +You can install the 2019 Community edition for free from [visualstudio.com](https://www.visualstudio.com/) or use the Professional or Enterprise editions. If you're using Visual Studio for Mac, see [Include a NuGet package in your project](/visualstudio/mac/nuget-walkthrough). @@ -29,13 +28,15 @@ If you're using Visual Studio for Mac, see [Include a NuGet package in your proj NuGet packages can be installed into any .NET project, provided that the package supports the same target framework as the project. -For this walkthrough, use a simple Universal Windows (UWP) app. Create a project in Visual Studio using **File > New Project...** and selecting the **Windows Universal > Blank App (Universal Windows)**. Accept the default values for Target Version and Minimum Version when prompted. +For this walkthrough, use a simple WPF app. Create a project in Visual Studio using **File > New Project...**, typing **.NET** in the search box, and then selecting the **WPF App (.NET Framework)**. Click **Next**. Accept the default values for **Framework** when prompted. + +Visual Studio creates the project, which opens in Solution Explorer. ## Add the Newtonsoft.Json NuGet package -To install the package, you can use either the Package Manager UI or the Package Manager Console. When you install a package, NuGet records the dependency in either your project file or a `packages.config` file. For more information, see [Package consumption overview and workflow](../consume-packages/Overview-and-Workflow.md). +To install the package, you can use either the NuGet Package Manager or the Package Manager Console. When you install a package, NuGet records the dependency in either your project file or a `packages.config` file (depending on the project format). For more information, see [Package consumption overview and workflow](../consume-packages/Overview-and-Workflow.md). -### Package Manager UI +### NuGet Package Manager 1. In Solution Explorer, right-click **References** and choose **Manage NuGet Packages**. @@ -45,9 +46,11 @@ To install the package, you can use either the Package Manager UI or the Package ![Locating Newtonsoft.Json package](media/QS_Use-03-NewtonsoftJson.png) + If you want more information on the NuGet Package Manager, see [Install and manage packages using Visual Studio](../consume-packages/install-use-packages-visual-studio.md). + 1. Accept any license prompts. -1. (Visual Studio 2017) If prompted to select a package management format, select **PackageReference in project file**: +1. (Visual Studio 2017 only) If prompted to select a package management format, select **PackageReference in project file**: ![Selecting a package management format](media/QS_Use-03b-SelectFormat.png) @@ -63,22 +66,24 @@ To install the package, you can use either the Package Manager UI or the Package 1. Enter the command `Install-Package Newtonsoft.Json` (see [Install-Package](../reference/ps-reference/ps-ref-install-package.md)). The console window shows output for the command. Errors typically indicate that the package isn't compatible with the project's target framework. + If you want more information on the Package Manager Console, see [Install and manage packages using Package Manager Console](../consume-packages/install-use-packages-powershell.md). + ## Use the Newtonsoft.Json API in the app With the Newtonsoft.Json package in the project, you can call its `JsonConvert.SerializeObject` method to convert an object to a human-readable string. -1. Open `MainPage.xaml` and replace the existing `Grid` element with the following: +1. Open `MainWindow.xaml` and replace the existing `Grid` element with the following: ```xaml - + -