Sada SDK pro klienta NuGet
Klientská sada SDK NuGet odkazuje na skupinu balíčků NuGet:
NuGet.Indexing
– Knihovna indexování NuGet pro funkci vyhledávání klienta sady Visual Studio.NuGet.Commands
– Kompletní příkazy společné pro klienty NuGet příkazového řádku a grafického uživatelského rozhraní.NuGet.Common
– Společné nástroje a rozhraní pro všechny knihovny NuGet.NuGet.Configuration
– Implementace nastavení konfigurace NuGetuNuGet.Credentials
– Modely ověřování klienta NuGet.NuGet.DependencyResolver.Core
– Implementace kompilátoru závislostí PackageReference NuGetNuGet.Frameworks
– NuGet rozumí cílovým architekturám.NuGet.LibraryModel
– Typy a rozhraní NuGetu pro pochopení závislostí.NuGet.Localization
– Lokalizační balíček NuGet.NuGet.PackageManagement
– Funkce správy balíčků NuGet pro tok instalace sady Visual Studio.NuGet.Packaging
– Poskytuje sadu rozhraní API pro interakci se.nupkg
.nuspec
soubory ze streamu.NuGet.Protocol
závisí na tomto balíčku.NuGet.ProjectModel
– Základní typy a rozhraní NuGetu pro obnovení založené na PackageReference, jako jsou soubory zámků, soubory prostředků a interní modely obnovení.NuGet.Protocol
– Poskytuje sadu rozhraní API pro interakci s informačními kanály NuGet založenými na protokolu HTTP a souborech.NuGet.Resolver
– Překladač závislostí NuGet pro projekty založené na packages.config.NuGet.Versioning
– Implementace sémantické správy verzí NuGet.
Zdrojový kód pro tyto balíčky najdete v úložišti NuGet/NuGet.Client GitHub.
Poznámka:
Dokumentaci k protokolu serveru NuGet najdete v rozhraní API serveru NuGet.
Zásady podpory
Nejnovější verze klientské sady SDK NuGet je plně podporovaná a může se spoléhat na opravy chyb, aktualizace a vylepšení.
Doporučuje se používat nejnovější verze balíčků klientské sady SDK NuGet a prozkoumat projekt závislostí na zastaralých balíčcích sdk klienta NuGet.
Vydání oprav
Opravené verze klientské sady SDK NuGet budou vydány výhradně v případě, že se vyžadují kritické chyby nebo opravy zabezpečení pro dlouhodobou podporu (LTS) sady Visual Studio nebo .NET SDK.
Všechny chyby zabezpečení by měly být hlášeny do centra Microsoft Security Response Center (MSRC) na stránce sestavy MSRC. Podívejte se také na zásady zabezpečení v úložišti NuGet.Client.
Nezaručujeme stabilitu rozhraní API, protože odpovědnost našeho týmu je nástroje, nikoli knihovny. Další informace najdete v dokumentaci k sadě NuGet SDK v úložišti NuGet.Client.
Vyřazení balíčku
Balíčky sady NuGet Client SDK, které nejsou svázané s verzí LTS sady Visual Studio nebo .NET, se v nuget.org přestanou podporovat.
Přístup k údržbě balíčků NuGet bude odpovídat pokynům k údržbě balíčků .NET (vyřazení).
NuGet.Protocol
NuGet.Protocol
Nainstalujte balíček pro interakci s kanály balíčků NuGet založenými na http a složkách:
dotnet add package NuGet.Protocol
Zdrojový kód pro tyto příklady najdete v projektu NuGet.Protocol.Samples na GitHubu.
Tip
Repository.Factory
je definován v NuGet.Protocol.Core.Types
oboru názvů a GetCoreV3
metoda je rozšiřující metoda definovaná v NuGet.Protocol
oboru názvů. Proto budete muset přidat using
příkazy pro oba obory názvů.
Výpis verzí balíčků
Pomocí rozhraní API obsahu balíčku NuGet V3 vyhledejte všechny verze Newtonsoft.Json:
ILogger logger = NullLogger.Instance;
CancellationToken cancellationToken = CancellationToken.None;
SourceCacheContext cache = new SourceCacheContext();
SourceRepository repository = Repository.Factory.GetCoreV3("https://api.nuget.org/v3/index.json");
FindPackageByIdResource resource = await repository.GetResourceAsync<FindPackageByIdResource>();
IEnumerable<NuGetVersion> versions = await resource.GetAllVersionsAsync(
"Newtonsoft.Json",
cache,
logger,
cancellationToken);
foreach (NuGetVersion version in versions)
{
Console.WriteLine($"Found version {version}");
}
Stažení balíčku
Stáhněte si Newtonsoft.Json v12.0.1 pomocí rozhraní API obsahu balíčku NuGet V3:
ILogger logger = NullLogger.Instance;
CancellationToken cancellationToken = CancellationToken.None;
SourceCacheContext cache = new SourceCacheContext();
SourceRepository repository = Repository.Factory.GetCoreV3("https://api.nuget.org/v3/index.json");
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,
cache,
logger,
cancellationToken);
Console.WriteLine($"Downloaded package {packageId} {packageVersion}");
using PackageArchiveReader packageReader = new PackageArchiveReader(packageStream);
NuspecReader nuspecReader = await packageReader.GetNuspecReaderAsync(cancellationToken);
Console.WriteLine($"Tags: {nuspecReader.GetTags()}");
Console.WriteLine($"Description: {nuspecReader.GetDescription()}");
Získání metadat balíčku
Pomocí rozhraní API metadat balíčku NuGet V3 získejte metadata balíčku Newtonsoft.Json:
ILogger logger = NullLogger.Instance;
CancellationToken cancellationToken = CancellationToken.None;
SourceCacheContext cache = new SourceCacheContext();
SourceRepository repository = Repository.Factory.GetCoreV3("https://api.nuget.org/v3/index.json");
PackageMetadataResource resource = await repository.GetResourceAsync<PackageMetadataResource>();
IEnumerable<IPackageSearchMetadata> packages = await resource.GetMetadataAsync(
"Newtonsoft.Json",
includePrerelease: true,
includeUnlisted: false,
cache,
logger,
cancellationToken);
foreach (IPackageSearchMetadata package in packages)
{
Console.WriteLine($"Version: {package.Identity.Version}");
Console.WriteLine($"Listed: {package.IsListed}");
Console.WriteLine($"Tags: {package.Tags}");
Console.WriteLine($"Description: {package.Description}");
}
Vyhledávací balíčky
Vyhledejte balíčky json pomocí rozhraní NUGet V3 Search API:
ILogger logger = NullLogger.Instance;
CancellationToken cancellationToken = CancellationToken.None;
SourceRepository repository = Repository.Factory.GetCoreV3("https://api.nuget.org/v3/index.json");
PackageSearchResource resource = await repository.GetResourceAsync<PackageSearchResource>();
SearchFilter searchFilter = new SearchFilter(includePrerelease: true);
IEnumerable<IPackageSearchMetadata> results = await resource.SearchAsync(
"json",
searchFilter,
skip: 0,
take: 20,
logger,
cancellationToken);
foreach (IPackageSearchMetadata result in results)
{
Console.WriteLine($"Found package {result.Identity.Id} {result.Identity.Version}");
}
Nasdílení balíčku
Nasdílení balíčku pomocí rozhraní NUGet V3 Push and Delete API:
ILogger logger = NullLogger.Instance;
CancellationToken cancellationToken = CancellationToken.None;
SourceCacheContext cache = new SourceCacheContext();
SourceRepository repository = Repository.Factory.GetCoreV3("https://api.nuget.org/v3/index.json");
PackageUpdateResource resource = await repository.GetResourceAsync<PackageUpdateResource>();
string apiKey = "my-api-key";
await resource.Push(
"MyPackage.nupkg",
symbolSource: null,
timeoutInSecond: 5 * 60,
disableBuffering: false,
getApiKey: packageSource => apiKey,
getSymbolApiKey: packageSource => null,
noServiceEndpoint: false,
skipDuplicate: false,
symbolPackageUpdateResource: null,
logger);
Odstranění balíčku
Odstraňte balíček pomocí rozhraní NUGet V3 Push and Delete API:
Poznámka:
Servery NuGet mohou požadavek na odstranění balíčku interpretovat jako "pevné odstranění", "obnovitelné odstranění" nebo "unlist". Například nuget.org interpretuje požadavek na odstranění balíčku jako "unlist". Další informace o tomto postupu najdete v zásadách odstraňování balíčků .
ILogger logger = NullLogger.Instance;
CancellationToken cancellationToken = CancellationToken.None;
SourceCacheContext cache = new SourceCacheContext();
SourceRepository repository = Repository.Factory.GetCoreV3("https://api.nuget.org/v3/index.json");
PackageUpdateResource resource = await repository.GetResourceAsync<PackageUpdateResource>();
string apiKey = "my-api-key";
await resource.Delete(
"MyPackage",
"1.0.0-beta",
getApiKey: packageSource => apiKey,
confirm: packageSource => true,
noServiceEndpoint: false,
logger);
Práce s ověřenými informačními kanály
Slouží NuGet.Protocol
k práci s ověřenými informačními kanály.
ILogger logger = NullLogger.Instance;
CancellationToken cancellationToken = CancellationToken.None;
SourceCacheContext cache = new SourceCacheContext();
var sourceUri = "https://contoso.privatefeed/v3/index.json";
var packageSource = new PackageSource(sourceUri)
{
Credentials = new PackageSourceCredential(
source: sourceUri,
username: "myUsername",
passwordText: "myVerySecretPassword",
isPasswordClearText: true,
validAuthenticationTypesText: null)
};
// If the `SourceRepository` is created with a `PackageSource`, the rest of APIs will consume the credentials attached to `PackageSource.Credentials`.
SourceRepository repository = Repository.Factory.GetCoreV3(packageSource);
PackageMetadataResource resource = await repository.GetResourceAsync<PackageMetadataResource>();
IEnumerable<IPackageSearchMetadata> packages = await resource.GetMetadataAsync(
"MyPackage",
includePrerelease: true,
includeUnlisted: false,
cache,
logger,
cancellationToken);
foreach (IPackageSearchMetadata package in packages)
{
Console.WriteLine($"Version: {package.Identity.Version}");
Console.WriteLine($"Listed: {package.IsListed}");
Console.WriteLine($"Tags: {package.Tags}");
Console.WriteLine($"Description: {package.Description}");
}
NuGet.Packaging
NuGet.Packaging
Nainstalujte balíček pro interakci se .nupkg
soubory ze .nuspec
streamu:
dotnet add package NuGet.Packaging
Vytvoření balíčku
Vytvořte balíček, nastavte metadata a přidejte závislosti pomocí NuGet.Packaging
.
Důležité
Důrazně doporučujeme, aby se balíčky NuGet vytvářely pomocí oficiálního nástroje NuGet, a ne pomocí tohoto rozhraní API nízké úrovně. Pro dobře vytvořený balíček a nejnovější verzi nástrojů je důležitá řada charakteristik, které vám pomůžou tyto osvědčené postupy začlenit.
Další informace o vytváření balíčků NuGet najdete v přehledu pracovního postupu vytváření balíčků a dokumentaci pro oficiální nástroje balíčků (například pomocí rozhraní příkazového řádku dotnet).
PackageBuilder builder = new PackageBuilder();
builder.Id = "MyPackage";
builder.Version = new NuGetVersion("1.0.0-beta");
builder.Description = "My package created from the API.";
builder.Authors.Add("Sample author");
builder.DependencyGroups.Add(new PackageDependencyGroup(
targetFramework: NuGetFramework.Parse("netstandard1.4"),
packages: new[]
{
new PackageDependency("Newtonsoft.Json", VersionRange.Parse("10.0.1"))
}));
using FileStream outputStream = new FileStream("MyPackage.nupkg", FileMode.Create);
builder.Save(outputStream);
Console.WriteLine($"Saved a package to {outputStream.Name}");
Čtení balíčku
Čtení balíčku ze streamu souboru pomocí NuGet.Packaging
.
using FileStream inputStream = new FileStream("MyPackage.nupkg", FileMode.Open);
using PackageArchiveReader reader = new PackageArchiveReader(inputStream);
NuspecReader nuspec = reader.NuspecReader;
Console.WriteLine($"ID: {nuspec.GetId()}");
Console.WriteLine($"Version: {nuspec.GetVersion()}");
Console.WriteLine($"Description: {nuspec.GetDescription()}");
Console.WriteLine($"Authors: {nuspec.GetAuthors()}");
Console.WriteLine("Dependencies:");
foreach (var dependencyGroup in nuspec.GetDependencyGroups())
{
Console.WriteLine($" - {dependencyGroup.TargetFramework.GetShortFolderName()}");
foreach (var dependency in dependencyGroup.Packages)
{
Console.WriteLine($" > {dependency.Id} {dependency.VersionRange}");
}
}
Console.WriteLine("Files:");
foreach (var file in reader.GetFiles())
{
Console.WriteLine($" - {file}");
}
Dokumentace třetích stran
Příklady a dokumentace pro některé z rozhraní API najdete v následujícím blogovém seriálu, který publikoval Dave Glick, publikováno 2016:
- Prozkoumání knihoven NuGet v3, část 1: Úvod a koncepty
- Prozkoumání knihoven NuGet v3, část 2: Hledání balíčků
- Prozkoumání knihoven NuGet v3, část 3: Instalace balíčků
Poznámka:
Tyto blogové příspěvky byly napsány krátce po vydání verze 3.4.3 balíčků klientské sady SDK NuGet. Novější verze balíčků můžou být nekompatibilní s informacemi v blogových příspěvcích.
Martin Björkström provedl následný blogový příspěvek na řadu blogů Dave Glick, kde zavádí jiný přístup k použití klientské sady SDK NuGet k instalaci balíčků NuGet:
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro