NuGet.Protocol 6.11.0

NuGet.Protocol

NuGet.Protocol is a NuGet client SDK library that provides a set of APIs for interacting with NuGet feeds. It provides a way for developers to query NuGet feeds to discover packages and their dependencies, and also to download packages and their associated assets.

Usage

At the center of this library are the PackageSource and SourceRepository types, which represent a NuGet source that may be a file source or an http based source implementing the V2 or V3 protocol.

PackageSource localSource = new PackageSource(@"D:\LocalSource");
SourceRepository localRepository = Repository.Factory.GetCoreV3(localSource);

SourceRepository repository = Repository.Factory.GetCoreV3("https://api.nuget.org/v3/index.json");

The SourceRepository then has a GetResourceAsync method that you can use to acquire implementations of INuGetResource that often are V3 resources.

FindPackageByIdResource resource = await repository.GetResourceAsync<FindPackageByIdResource>(); 

Examples

Search packages

Search for "json" packages using the NuGet V3 Search API:

PackageSearchResource resource = await repository.GetResourceAsync<PackageSearchResource>();
SearchFilter searchFilter = new SearchFilter(includePrerelease: true);

IEnumerable<IPackageSearchMetadata> results = await resource.SearchAsync(
    "json",
    searchFilter,
    skip: 0,
    take: 20,
    NullLogger.Instance,
    CancellationToken.None);

Download a package

Download Newtonsoft.Json v12.0.1 using the NuGet V3 Package Content API:

FindPackageByIdResource resource = await repository.GetResourceAsync<FindPackageByIdResource>();

string packageId = "Newtonsoft.Json";
NuGetVersion packageVersion = new NuGetVersion("12.0.1");
using MemoryStream packageStream = new MemoryStream();

await resource.CopyNupkgToStreamAsync(
    packageId,
    packageVersion,
    packageStream,
    new SourceCacheContext(),
    NullLogger.Instance,
    CancellationToken.None);

Push a package

Push a package using the NuGet V3 Push and Delete API:

PackageUpdateResource resource = await repository.GetResourceAsync<PackageUpdateResource>();

await resource.Push(
    "MyPackage.nupkg",
    symbolSource: null,
    timeoutInSecond: 5 * 60,
    disableBuffering: false,
    getApiKey: packageSource => "my-api-key",
    getSymbolApiKey: packageSource => null,
    noServiceEndpoint: false,
    skipDuplicate: false,
    symbolPackageUpdateResource: null,
    NullLogger.Instance);

Additional documentation

More information about the NuGet.Protocol library can be found on the official Microsoft documentation page and NuGet API docs.

Showing the top 20 packages that depend on NuGet.Protocol.

Packages Downloads
NuGet.Resolver
NuGet's dependency resolver for packages.config based projects.
41
NuGet.Resolver
NuGet's dependency resolver for packages.config based projects.
49
NuGet.Resolver
NuGet's dependency resolver for packages.config based projects.
50
NuGet.Resolver
NuGet's dependency resolver within the NuGet.Packaging package
41
NuGet.Resolver
NuGet's dependency resolver within the NuGet.Packaging package
43
NuGet.Resolver
NuGet's dependency resolver within the NuGet.Packaging package
44
NuGet.Resolver
NuGet's dependency resolver within the NuGet.Packaging package
45
NuGet.Resolver
NuGet's dependency resolver within the NuGet.Packaging package
58
NuGet.Resolver
NuGet's dependency resolver within the NuGet.Packaging package
59
NuGet.Resolver
NuGet's dependency resolver within the NuGet.Packaging package.
40
NuGet.Resolver
NuGet's dependency resolver within the NuGet.Packaging package.
45
NuGet.Resolver
NuGet's dependency resolver within the NuGet.Packaging package.
47
NuGet.Resolver
NuGet's dependency resolver within the NuGet.Packaging package.
55
NuGet.Resolver
NuGet's dependency resolver within the NuGet.Packaging package.
56
NuGet.Resolver
NuGet's dependency resolver within the NuGet.Packaging package.
59
NuGet.Resolver
NuGet's dependency resolver within the NuGet.Packaging package.
61

.NET Framework 4.7.2

.NET 5.0

.NET Standard 2.0

Version Downloads Last updated
6.11.0 4 08/14/2024
6.11.0-preview.2 8 06/07/2024
6.10.2 6 08/14/2024
6.10.1 4 06/28/2024
6.10.0 6 05/22/2024
6.9.1 7 03/10/2024
6.8.1 6 03/10/2024
6.8.0 8 11/19/2023
6.7.1 6 03/10/2024
6.7.0 7 09/11/2023
6.6.2 10 03/10/2024
6.6.1 20 06/18/2023
6.6.0 17 06/18/2023
6.6.0-preview.3 18 06/22/2023
6.5.1 13 06/22/2023
6.5.0 22 04/04/2023
6.4.3 8 03/10/2024
6.4.2 12 06/22/2023
6.4.0 79 12/16/2022
6.3.4 5 03/10/2024
6.3.3 9 06/22/2023
6.3.1 12 10/15/2022
6.3.0 42 09/09/2022
6.2.4 8 06/22/2023
6.2.2 49 10/15/2022
6.2.1 18 09/10/2022
6.2.0 16 09/10/2022
6.1.0 26 09/10/2022
6.0.6 5 03/10/2024
6.0.5 14 06/22/2023
6.0.3-rc.1 19 10/15/2022
6.0.2 79 09/10/2022
6.0.0 70 09/09/2022
6.0.0-preview.4.243 46 09/23/2022
6.0.0-preview.3 58 10/15/2022
5.11.6 8 03/10/2024
5.11.5 13 06/22/2023
5.11.3 32 10/15/2022
5.11.2 48 09/12/2022
5.11.0 21 06/27/2022
5.10.0 37 09/11/2022
5.10.0-preview.2.7185 25 09/25/2022
5.9.3 35 10/15/2022
5.9.2 54 09/15/2022
5.9.1 23 09/08/2022
5.9.0 27 09/12/2022
5.9.0-preview.2 42 09/22/2022
5.8.1 27 09/09/2022
5.8.0 21 09/09/2022
5.8.0-preview.3.6823 26 09/21/2022
5.8.0-preview.2.6776 34 09/23/2022
5.8.0-preview.1 46 10/15/2022
5.7.3-rtm.5 32 10/15/2022
5.7.2 35 09/10/2022
5.7.1 23 09/12/2022
5.7.0 79 09/10/2022
5.7.0-rtm.6702 27 09/09/2022
5.7.0-preview.3.6653 64 09/21/2022
5.7.0-preview.2.6618 45 09/24/2022
5.7.0-preview.1.6592 15 09/22/2022
5.6.0 85 06/27/2022
5.6.0-preview.3.6558 11 09/24/2022
5.6.0-preview.2.6489 25 09/21/2022
5.6.0-preview.1.6483 40 09/21/2022
5.5.1 38 09/10/2022
5.5.0 41 09/12/2022
5.5.0-preview.2.6382 27 09/24/2022
5.5.0-preview.1.6319 17 10/15/2022
5.4.0 77 09/12/2022
5.3.1 44 09/11/2022
5.3.0 28 09/12/2022
5.3.0-rtm.6192 27 09/09/2022
5.2.1 31 09/10/2022
5.2.0 36 09/09/2022
5.1.0 24 09/11/2022
5.1.0-preview2.5965 20 09/23/2022
5.0.2 83 09/09/2022
5.0.0 56 09/09/2022
5.0.0-rtm.5867 68 09/10/2022
5.0.0-rtm.5856 12 09/10/2022
5.0.0-preview3.5800 40 09/22/2022
5.0.0-preview2.5782 42 09/22/2022
4.9.6 21 10/15/2022
4.9.5 74 09/09/2022
4.9.4 31 06/27/2022
4.9.3 26 09/10/2022
4.9.2 67 09/10/2022
4.9.2-rtm.5706 53 09/09/2022
4.9.1 29 09/10/2022
4.9.0-rtm.5658 19 09/10/2022
4.8.2 24 09/09/2022
4.8.0 80 09/10/2022
4.8.0-rtm.5362 19 09/11/2022
4.8.0-preview3.5278 11 10/15/2022
4.8.0-preview1.5156 15 09/23/2022
4.7.3 40 09/09/2022
4.7.2 15 09/11/2022
4.7.0 56 09/09/2022
4.7.0-rtm.5148 43 09/11/2022
4.7.0-rtm.5104 18 09/11/2022
4.7.0-preview4.5065 24 09/25/2022
4.7.0-preview1-4986 37 09/22/2022
4.6.4 57 09/11/2022
4.6.3 25 09/12/2022
4.6.2 50 09/11/2022
4.6.1 48 09/09/2022
4.6.0 28 09/11/2022
4.6.0-rtm-4918 79 09/12/2022
4.6.0-rtm-4825 55 09/11/2022
4.6.0-rtm-4791 42 09/10/2022
4.5.3 48 09/11/2022
4.5.2 35 09/13/2022
4.5.0 51 09/09/2022
4.5.0-rtm-4651 22 09/10/2022
4.4.3 46 09/12/2022
4.4.2 69 09/11/2022
4.4.0 52 09/09/2022
4.4.0-preview3-4475 53 09/22/2022
4.3.1 63 09/11/2022
4.3.0 40 09/12/2022
4.3.0-rtm-4324 60 09/10/2022
4.3.0-preview4 30 09/09/2022
4.3.0-preview3-4168 24 10/15/2022