.NET Standard library that provides some nuget package related functionality against the nuget V3 API.
The library is built on top of the NuGet Client SDK.
ByteDev.Nuget has been written as a .NET Standard 2.0 library, so you can consume it from a .NET Core or .NET Framework 4.6.1 (or greater) application.
ByteDev.Nuget is hosted as a package on nuget.org. To install from the Package Manager Console in Visual Studio run:
Install-Package ByteDev.Nuget
Further details can be found on the nuget page.
Releases follow semantic versioning.
Full details of the release notes can be viewed on GitHub.
NugetPackageClient
is the main type for performing package operations:
Methods:
- DownloadToFileAsync
- DownloadToStreamAsync
- GetAsync
- GetDependenciesAsync
- GetLatestAsync
- GetVersionsAsync
- ExistsAsync
- SearchAsync
// Initialize the client type
INugetPackageClient client = new NugetPackageClient();
// Download a package to a file
string fileName = NugetPackageFileName.Create("Newtonsoft.Json", "12.0.3");
string filePath = Path.Combine("C:\Temp", fileName);
await client.DownloadToFileAsync("Newtonsoft.Json", "12.0.3", filePath);
// Download a package to a stream
using(Stream stream = await client.DownloadToStreamAsync("Newtonsoft.Json", "12.0.3"))
{
// use stream...
}
// Get all package versions
IEnumerable<IPackageSearchMetadata> packages = await client.GetAsync("Newtonsoft.Json");
// Get single package version
IPackageSearchMetadata package = await client.GetAsync("Newtonsoft.Json", "12.0.3");
// Get a package's dependencies
var nuGetFramework = NuGetFrameworkFactory.CreateFramework("4.5");
var query = new GetPackageDependenciesRequest("Moq", "4.14.5", nuGetFramework)
{
AddRootPackageToResults = false
};
query.IgnoreAuthors.Add("Microsoft");
IList<IPackageSearchMetadata> packages = await client.GetDependenciesAsync(query);
// Get latest version of a package
IPackageSearchMetadata package = await client.GetLatestAsync("Newtonsoft.Json");
// Get versions
IEnumerable<NuGetVersion> versions = await client.GetVersionsAsync("Newtonsoft.Json");
// Check a package exists
bool exists = await client.ExistsAsync("Newtonsoft.Json");
// Check a package version exists
bool exists = await client.ExistsAsync("Newtonsoft.Json", "12.0.3");
// Search for "json" packages (take first 100 records)
var request = new SearchPackagesRequest("json")
{
Take = 100
};
IEnumerable<IPackageSearchMetadata> packages = await client.SearchAsync(request);