Fact-checked by Grok 2 weeks ago

NuGet

NuGet is the package manager for the Microsoft .NET ecosystem, a free and open-source system that enables developers to create, share, and consume reusable code libraries, tools, and dependencies. It defines standardized formats for packaging .NET assemblies, documentation, and metadata into single ZIP files with the .nupkg extension, facilitating efficient distribution and integration across projects. Introduced with its 1.0 version on January 13, 2011, NuGet was developed by Microsoft to address the need for a centralized mechanism to manage third-party libraries in .NET development, evolving from an initial Visual Studio extension into a comprehensive ecosystem. By 2025, it supports modern .NET versions including .NET Core and .NET 5+, with seamless integration into development tools like Visual Studio, Visual Studio Code, and the cross-platform dotnet command-line interface (CLI). The primary public repository, nuget.org, serves as the central hub for NuGet packages, hosting over 450,000 unique packages that are downloaded millions of times daily by developers worldwide. This repository, maintained by the .NET Foundation under Microsoft's oversight, enforces security policies, including package signing and vulnerability scanning, to ensure reliability and safety. Developers can also host private feeds using tools like Azure Artifacts or on-premises servers, allowing organizations to manage internal packages alongside public ones. Key features of NuGet include automatic dependency resolution, where it identifies and installs required transitive dependencies during package restoration; semantic versioning for precise updates; and support for multiple package sources in a single configuration file (NuGet.Config). Through client tools such as nuget.exe for legacy workflows and the integrated dotnet CLI for modern .NET projects, users can search, install, update, and publish packages via simple commands like dotnet add package. NuGet's adoption has significantly streamlined .NET development by reducing manual library management, promoting code reuse, and fostering a vibrant community of package authors, with notable packages like Entity Framework and Newtonsoft.Json exemplifying its impact. Its protocol-based server API further enables custom implementations, ensuring compatibility across diverse hosting environments.

Introduction

Overview

NuGet is a free, open-source package manager designed specifically for the .NET ecosystem, developed and maintained by Microsoft and the .NET Foundation. It serves as the primary tool for handling software dependencies in .NET development, allowing developers to package, share, and consume reusable code libraries efficiently. The core purpose of NuGet is to simplify dependency management by enabling the creation, distribution, and integration of code packages that encapsulate libraries, tools, and frameworks. Developers can produce these packages using command-line tools or integrated environments, host them on public or private repositories, and install them into projects to reuse functionality without manual code duplication. Each package is distributed as a .nupkg file—a ZIP archive containing compiled assemblies (such as DLLs), supporting files, metadata, and dependency declarations—to ensure consistent and portable reuse across .NET applications. As of November 2025, the official NuGet repository at nuget.org hosts over 447,000 packages, supporting a wide range of .NET platforms including .NET Framework, .NET Core, and .NET 5 and subsequent versions. This vast ecosystem facilitates rapid development by providing access to community-contributed and official libraries for common tasks like data access, logging, and authentication. NuGet integrates directly with tools like Visual Studio, streamlining package installation and updates within the development workflow.

Role in .NET Development

NuGet plays a pivotal role in .NET development by serving as the standard package manager that streamlines the integration of reusable libraries, reducing the need for developers to write boilerplate code from scratch. By enabling the easy consumption of pre-built components, it minimizes repetitive implementation efforts and fosters code reuse across projects. Additionally, NuGet ensures consistent library versions across teams through its dependency management features, which resolve and lock package versions in project files, preventing discrepancies that could arise from manual coordination. It also automates dependency updates via tools like the Package Manager Console or CLI, allowing developers to apply security patches and feature enhancements efficiently without disrupting workflows. Furthermore, NuGet supports cross-platform .NET development by packaging libraries compatible with .NET Core and later runtimes, facilitating deployment on Windows, Linux, and macOS environments. The impact of NuGet on developer productivity is substantial, as it promotes modular development practices where projects can be composed of independent, versioned components rather than monolithic codebases. This modularity accelerates rapid prototyping by allowing quick incorporation of third-party libraries for tasks like logging, data access, or authentication, enabling developers to focus on core application logic. Integration with CI/CD pipelines further enhances efficiency, as NuGet restore operations can be automated in build scripts, ensuring reproducible builds and reducing deployment times in continuous integration environments. In the broader .NET ecosystem, NuGet has evolved from a simple tool into an indispensable standard for modern practices, underpinning the development of microservices architectures, cloud-native applications, and open-source contributions through its centralized repository at nuget.org. It contrasts sharply with pre-NuGet eras, where manual DLL management often led to version conflicts, deployment inconsistencies, and maintenance overhead from copying files across projects. Today, its role extends to enterprise settings, where it addresses compliance requirements by providing auditable versioning and secure package sourcing, driving widespread adoption. As of November 2025, NuGet handles approximately 5.1 billion package downloads weekly, reflecting its dominance in the vast majority of .NET projects.

History

Origins and Initial Development

NuGet emerged in response to the growing need for a standardized package management system within the .NET ecosystem, where developers previously relied on manual downloads and ad-hoc assembly references for third-party libraries, leading to inefficiencies in project setup and maintenance. Inspired by successful models in other languages, such as RubyGems for Ruby and the emerging npm for Node.js, the project aimed to streamline library integration similar to these tools. Initially developed under the name NuPack by a team at Microsoft, it was contributed to the open-source Outercurve Foundation in 2010 to foster community-driven evolution and ensure broad accessibility for .NET developers. The initial development was led by Microsoft engineers, including architect David Ebbo and developer Phil Haack, with early contributions from community members like Xavier Decoster, who later became a key advocate and co-author of related documentation. Ebbo, in particular, drove the core design focusing on seamless Visual Studio integration, while the Outercurve Foundation provided the governance structure for open-source collaboration, allowing .NET community input from the outset. The project transitioned from NuPack to NuGet to avoid naming conflicts and better reflect its package-focused mission. NuGet's first public release occurred on October 5, 2010, distributed as a Visual Studio extension compatible with version 2010, enabling users to install packages directly within the IDE via the Extension Manager or Package Manager Console. The accompanying gallery, nuget.org, launched shortly after, with the first package—Agatha-rrsl by David Bryon—published on January 7, 2011, quickly followed by others, establishing the repository as a central hub for .NET packages. Early versions of NuGet faced challenges, including initial limitations to the .NET Framework, rudimentary dependency resolution that required manual intervention for complex scenarios, and integration issues with Visual Studio 2010, such as installation errors on SP1 updates and inconsistent package restore behaviors. These hurdles were addressed iteratively through community feedback and releases, but they highlighted the nascent state of automated package management in the .NET space at the time.

Evolution and Key Milestones

NuGet's evolution began shortly after its initial release in January 2011, with rapid adoption driven by integrations into Microsoft development tools. By 2012, NuGet 2.0 was released in June, coinciding with enhanced support in Visual Studio 2012, which streamlined package management directly within the IDE for .NET developers. In 2013, the ecosystem reached a significant milestone with over 10,000 packages available on NuGet.org, reflecting growing community contributions and the tool's utility in sharing libraries. Further advancements included support for the project.json format in 2015 as part of ASP.NET 5 development, enabling more flexible dependency management in modern web projects. Additionally, the introduction of API v3 in 2015 with NuGet 3.0 improved query performance and scalability for the package repository, supporting larger-scale operations. These updates from 2011 to 2015 marked NuGet's transition from a basic package installer to a core component of .NET workflows. The .NET Core era from 2016 to 2020 emphasized cross-platform capabilities and refined dependency handling. NuGet 4.0, released in March 2017, introduced the PackageReference format as an alternative to the older packages.config, allowing transitive dependencies and better project file readability; this shift was fully integrated with the cross-platform dotnet CLI tool, enabling package management on non-Windows systems. The same version enforced stricter semantic versioning rules, reducing compatibility issues by validating version ranges during restores. Throughout this period, iterative releases like NuGet 5.0 in 2019 added support for .NET Core 3.0 and improved restore performance, aligning with the platform's maturation and broader adoption beyond traditional .NET Framework applications. From 2021 to 2025, NuGet continued to evolve alongside unified .NET platforms, with enhanced support for .NET 5 and later versions through releases like NuGet 6.0 in 2021, which optimized for multi-targeting and faster builds. A key innovation was Central Package Management (CPM), introduced in NuGet 6.2 in 2022, allowing centralized version control for shared dependencies across multiple projects in a solution, simplifying maintenance in large codebases. The stable NuGet 6.11 release in August 2024 further refined dependency resolution and integration with .NET 9, while the 6.12 preview incorporated enhanced security scans to detect vulnerabilities during package restores. By 2025, the NuGet.org repository hosted over 479,000 packages, underscoring its expansive role in the .NET ecosystem. Community milestones have paralleled these technical advancements, including the handover of the NuGet project to the .NET Foundation in 2014, which fostered open-source governance and broader participation. The primary GitHub repository for NuGet.Client has amassed contributions from over 250 developers as of 2025, driving ongoing improvements through pull requests and issue resolutions.

Technical Foundations

Package Structure and Format

A NuGet package is distributed in the form of a single file with the .nupkg extension, which is essentially a ZIP archive containing compiled assemblies, content files, and metadata. This format allows for easy inspection by renaming the file extension to .zip and extracting its contents using standard ZIP tools. The package structure follows a conventional directory layout to organize files by type and target framework, ensuring compatibility and ease of consumption in .NET projects. At the root of every .nupkg file is a .nuspec XML manifest that defines the package's core metadata, adhering to a specific XML schema. Key elements in the .nuspec include the package <id>, <version> (following semantic versioning conventions), <authors>, <description>, <dependencies> (specifying other packages with version ranges such as [1.0,2.0) for inclusive lower and exclusive upper bounds), supported target frameworks like net6.0 or net9.0, and <licenseUrl> for licensing information. The <dependencies> section uses <group> elements to target specific frameworks, enabling conditional inclusion based on the consuming project's configuration. Additionally, the schema supports <files> for explicit file placements and <contentFiles> (introduced in NuGet 3.3) to manage static files like configurations or scripts that integrate directly into the project structure. Assemblies and libraries are typically placed in a lib folder, subdivided by target framework moniker (TFM) and version, such as lib/net6.0/MyLibrary.dll or lib/net9.0/MyLibrary.dll, to support multi-targeting. For MSBuild integration, packages include .props and .targets files in a build folder (e.g., build/net6.0/MyPackage.props or build/net9.0/MyPackage.props), which define properties and custom build tasks imported automatically during project restoration. Content files, such as configuration templates or scripts, reside in a content or contentFiles folder to facilitate copying into the consuming project's root or subdirectories. Symbol files for debugging, including .pdb files, are often packaged separately as .snupkg files, which follow the same ZIP structure but focus on debug information without the main assemblies. The NuGet package format originated with the initial preview release in late 2010 as a simple ZIP archive with a .nuspec manifest for basic metadata and file inclusion. Over time, it evolved to incorporate standardized conventions for framework-specific content, MSBuild support via build files, and enhanced metadata like contentFiles for better project integration, with significant standardization aligning with PackageReference adoption in 2017 to streamline dependency management without altering the core ZIP-based anatomy. This structure supports efficient dependency resolution by embedding version constraints and framework compatibility directly in the metadata.

Dependency Resolution Mechanism

NuGet's dependency resolution mechanism operates during the package restore process, where it constructs a dependency graph for a project by evaluating direct and transitive dependencies specified in package references. This graph is built using the PackageReference format, which supports transitive restore to resolve all dependencies upfront and generate a project.assets.json file in the project's obj folder, detailing the selected versions and assets. The resolver adheres to Semantic Versioning (SemVer) 2.0.0 guidelines, selecting the lowest applicable version that satisfies all constraints across the graph, ensuring compatibility while minimizing version upgrades. For instance, a dependency range like 1.0.* (a floating version) resolves to the highest patch version within the major.minor series available, such as the latest 1.0.y, whereas exact versions like 1.0.0 lock to that specific release. Transitive dependencies are flattened into the final set, avoiding duplication by including only the highest compatible version needed by any consumer in the graph. In cases of version conflicts, NuGet employs a "nearest wins" strategy, prioritizing the version required by the direct dependency closest to the consuming project, which may lead to downgrading transitive versions if necessary, accompanied by a warning such as NU1605. For "cousin" dependencies—where multiple independent subgraphs demand incompatible versions—the resolver selects the lowest version compatible with all, or fails with an error if no such version exists. Users can override resolutions via explicit PackageReference entries in project files, forcing a specific version for a package or its transitive dependents. To enhance reproducibility, NuGet supports lock files like packages.lock.json, generated when RestorePackagesWithLockFile is enabled, which capture exact versions, hashes, and the dependency graph to ensure identical restores across environments, particularly useful in CI/CD pipelines with locked mode to prevent unintended changes. Framework compatibility is managed through Target Framework Monikers (TFMs), such as net8.0 or net9.0 or net48, where NuGet verifies that a package's supported TFMs align with the project's targets, selecting the nearest compatible framework using compatibility mappings. The .NET Standard library facilitates cross-targeting by providing a common API surface (e.g., netstandard2.0) compatible with multiple implementations like .NET Framework and .NET Core, reducing the need for separate builds. Multi-targeting allows packages to specify multiple TFMs in their structure (e.g., assets under lib/netstandard2.0 and lib/net48 or lib/net9.0), enabling NuGet to pick the most appropriate during resolution, with failures occurring if no compatible TFM is found. Advanced features include transitive pinning via Central Package Management (CPM), introduced in 2022 with .NET SDK 7.0 and Visual Studio 2022 version 17.4, which centralizes version definitions in a Directory.Packages.props file at the solution level. When enabled with CentralPackageTransitivePinningEnabled=true, CPM overrides transitive dependency versions to match centrally defined ones, preventing downgrades and raising errors like NU1109 if conflicts arise, thus ensuring uniform versions across projects without explicit per-project references. This mechanism integrates with the core resolver to lock indirect dependencies, improving consistency in large solutions while maintaining SemVer compliance. In .NET 9 (released November 2024), the NuGet dependency resolver was completely redesigned with a new algorithm to enhance performance and scalability for large solutions using PackageReference, enabled by default, while maintaining the existing core resolution rules. Users experiencing issues can opt back to the legacy resolver.

Core Functionality

Package Consumption

Package consumption in NuGet involves discovering suitable packages, installing them into .NET projects, restoring dependencies, and managing updates or removals to maintain project integrity. This workflow is essential for developers leveraging reusable libraries and tools within the .NET ecosystem, ensuring efficient integration without manual dependency management. The process emphasizes automation through command-line interfaces and project file configurations, primarily using the modern PackageReference format introduced in NuGet 4.0 and later. Discovery begins with searching for packages on the public repository nuget.org, either through its web-based user interface or via command-line tools. The nuget.org web UI allows users to enter search terms in a dedicated box, supporting advanced syntax such as id:NuGet.Core to target specific package identifiers, and offers filters for target frameworks (e.g., .NET 8.0 or netstandard2.0), package types (e.g., dependencies or .NET tools), and sorting options by relevance, total downloads, or recency. Evaluation criteria include download statistics—such as total downloads, current version downloads, and daily averages—visible on the package detail page, alongside user ratings and compatibility indicators like framework badges. For instance, the "Used By" tab lists top dependent projects, while GitHub integration shows repository stars for further assessment. Alternatively, the CLI command dotnet search <term> queries nuget.org directly, listing results with optional inclusion of prerelease versions via the -prerelease flag, providing a streamlined option for terminal-based workflows. Installation integrates packages into projects by adding references to the project file, typically in PackageReference format within .csproj files for SDK-style projects. Developers can manually edit the file to include elements like <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />, specifying the exact version for reproducibility. More commonly, the dotnet add package command automates this: running dotnet add package Newtonsoft.Json appends the reference with the latest stable version and triggers an implicit restore. To specify a version, use dotnet add package Newtonsoft.Json --version 13.0.3, ensuring compatibility with the project's target framework. This method modifies the project file directly and supports options like --project for multi-project solutions. The restore process, invoked via dotnet restore, downloads all referenced packages and their transitive dependencies from configured sources into a global packages cache, resolving the dependency tree while checking for version conflicts and framework compatibility. On Windows, the default cache location is %userprofile%\.nuget\packages, while on macOS/Linux it is ~/.nuget/packages; packages are stored in subfolders by identifier and version, avoiding duplication across projects. NuGet builds a dependency graph during restore, selecting compatible versions based on constraints in the project file, and integrates them into the build output without embedding binaries in the project directory—enabling implicit restores during dotnet build or dotnet run in .NET Core 2.0 and later. This cache-based approach optimizes bandwidth and storage, with overrides possible via environment variables like NUGET_PACKAGES. Updating packages involves identifying outdated references and applying new versions, often followed by a restore to propagate changes. The dotnet list package --outdated command scans the project or solution, outputting a table with requested, resolved, and latest available versions for each package, defaulting to stable releases but including prereleases with --include-prerelease. To update, re-run dotnet add package <PackageName> --version <NewVersion> or edit the .csproj file directly, then execute dotnet restore to download and resolve the updated dependency tree. For removal, dotnet remove package <PackageName> deletes the PackageReference from the project file, with an optional --project flag for targeted solutions (in .NET 10 and later, the equivalent dotnet package remove <PackageName> uses the new "noun-first" syntax while maintaining backward compatibility); a subsequent restore ensures the build reflects the changes. Automatic restores during builds maintain consistency, reducing manual intervention in continuous integration pipelines.

Package Creation and Publishing

Creating a NuGet package begins with building it from a .NET project, typically using the dotnet pack command on a .csproj file, which generates a .nupkg file containing the compiled assemblies and metadata. This process automatically includes essential files like DLLs from the output directory and embeds basic metadata such as package ID, version, and authors defined in the project file. For advanced customization, developers can use a .nuspec file to specify detailed metadata, including dependencies, files to include or exclude, and framework-specific content, by running nuget pack on the .nuspec or integrating it with dotnet pack. To support multiple target frameworks, the .csproj file declares <TargetFrameworks> (e.g., net6.0;net8.0), and dotnet pack produces framework-specific folders within the package, such as lib/net6.0/, ensuring compatibility across .NET versions. Testing a built package involves local validation to ensure integrity and correctness before publishing. The dotnet nuget verify command checks signed packages for tampering and verifies signatures against trusted certificates, including content hash validation in .NET 10 and later. For dependency validation and manual inspection, developers can use tools like NuGet Package Explorer, a free application that allows editing .nupkg contents, viewing metadata, and simulating installations without affecting projects. Additionally, copying the .nupkg to a local folder source and attempting installation via dotnet add package or nuget install helps confirm dependency resolution and runtime behavior. Publishing a package requires pushing the .nupkg file to a repository using dotnet nuget push <package>.nupkg --api-key <key> --source <url>, where authentication via API keys is mandatory for secure feeds. Best practices include adhering to Semantic Versioning 2.0.0 (SemVer), structuring versions as Major.Minor.Patch[-PreRelease] (e.g., 1.0.0-beta.1) to signal breaking changes, additions, or fixes, with NuGet supporting this since version 4.3.0. In the .nuspec or .csproj, include comprehensive documentation via <description>, <summary>, and <releaseNotes> tags to inform consumers about usage and updates. For enhanced debugging support, symbol packages in .snupkg format can be created alongside the main package using dotnet pack --include-symbols -p:SymbolPackageFormat=snupkg, which embeds PDB files and optional source code, allowing source-level debugging in tools like Visual Studio after publication. This separation keeps the primary .nupkg lightweight while enabling repository-specific symbol hosting for private feeds.

Tools and Integrations

Command-Line Interfaces

NuGet provides several command-line interfaces (CLIs) for managing packages outside of integrated development environments, enabling automation, scripting, and direct operations on projects and feeds. These tools support core tasks such as installing, restoring, creating, and publishing packages, with varying levels of cross-platform compatibility and integration depth. The legacy NuGet CLI, nuget.exe, is a standalone, cross-platform executable that offers comprehensive functionality for package management without requiring a full .NET SDK installation. It includes commands such as nuget install for downloading and extracting packages directly to a folder without integrating them into a project file, nuget pack for creating .nupkg files from .nuspec or project files, nuget push for publishing to feeds, and nuget restore for resolving dependencies in solution or project files. This tool is particularly useful in build scripts or environments where the dotnet CLI is unavailable, though it lacks some modern features like support for PackageReference format by default. Introduced with .NET Core 1.0 in 2016, the dotnet CLI integrates NuGet operations as subcommands within the broader .NET SDK toolchain, providing a unified experience for building, restoring, and managing packages across Windows, macOS, and Linux. Key NuGet-specific commands include dotnet add package to reference a package in a project, dotnet remove package to uninstall it, dotnet pack to build and package projects, and dotnet nuget push for publishing; global configuration is handled via commands like dotnet nuget add source to register package feeds or dotnet nuget delete for removing packages from repositories. The --no-restore flag, available in commands like dotnet build, allows skipping automatic dependency restoration to optimize workflows in CI/CD pipelines. For PowerShell-based automation, the PackageManagement module (formerly OneGet) includes the NuGet provider, enabling scripted package operations in advanced environments such as deployment scripts or administrative tasks. Cmdlets like Install-Package install packages from registered sources, Get-Package lists installed or available packages, Update-Package upgrades them, and Uninstall-Package removes them, with support for providers specified via Install-PackageProvider -Name NuGet. This module is ideal for integrating NuGet into broader PowerShell workflows, such as managing modules in PowerShell Gallery or custom feeds. Configuration across these CLIs is centralized through nuget.config files, which store settings like package sources, credentials, and HTTP proxy details in XML format, with hierarchy from user-level to solution-specific files. Sources can be added or enabled/disabled using nuget sources in nuget.exe or dotnet nuget add source in the dotnet CLI, ensuring consistent behavior in multi-feed scenarios.

IDE and Build Tool Support

NuGet provides seamless integration with popular integrated development environments (IDEs) and build tools, enabling developers to manage packages efficiently within their workflows. In Visual Studio, the NuGet Package Manager UI has been built-in since Visual Studio 2012, accessible via the Tools > NuGet Package Manager menu, where users can search for packages, install them, and handle updates directly in the project or solution context. Additionally, the Package Manager Console offers a PowerShell-based interface for executing advanced commands, such as scripted installations or dependency resolutions, enhancing automation within the IDE. JetBrains Rider offers native NuGet support through its dedicated NuGet tool window (Alt+7) or quick list (Alt+Shift+N), allowing developers to install, update, and remove packages with intuitive search and selection features. Right-clicking on a project in the Solution Explorer provides context menu options for package management, including restore operations, while Rider automatically performs NuGet restores upon solution load if configured in settings, streamlining the onboarding process for new team members. The IDE also visualizes package versions in the tool window, displaying installed versions alongside available updates for easy comparison and maintenance. NuGet integrates deeply with MSBuild, the standard build system for .NET projects, supporting automatic package restoration through the dedicated restore target invoked via msbuild -t:restore, which resolves dependencies before building and generates necessary assets like props and targets files. For large-scale solutions, global settings can be centralized using Directory.Build.props files to define properties such as package paths or sources, ensuring consistent behavior across multiple projects without repetitive configurations. Note that older mechanisms like the <RestorePackages> target have been deprecated in favor of this automatic approach. Beyond IDEs, NuGet extends to continuous integration and deployment tools. In Azure DevOps pipelines, dedicated tasks like NuGetCommand@2 handle restore, pack, and push operations, supporting both public NuGet.org feeds and authenticated private sources for automated builds. GitHub Actions leverages the dotnet CLI for NuGet operations, such as dotnet restore to fetch dependencies during workflow steps, enabling cross-platform CI/CD with minimal setup. For lighter environments, Visual Studio Code supports NuGet through the C# Dev Kit extension, which allows package addition, updates, and removals via the Command Palette or right-click in the Solution Explorer, with automatic restores triggered on project modifications. These integrations rely on the underlying CLI as a backend for consistent behavior across tools.

Hosting and Distribution

Public Repository: NuGet.org

NuGet.org, launched in 2011 and hosted by Microsoft, serves as the central, free public repository for NuGet packages, functioning as the default source for .NET developers worldwide. It maintains an indexed collection exceeding 450,000 unique packages as of 2025, enabling efficient search, discovery, and analytics for package consumers and creators. This repository plays a pivotal role in the .NET ecosystem by providing a trusted, open hub that connects millions of developers with reusable components, fostering collaboration and rapid development. Key features of NuGet.org include detailed package pages that display version history, download statistics, and dependency information to help users evaluate and integrate packages effectively. It also integrates vulnerability reporting, displaying known CVEs and GHSAs directly on package pages, with security issues coordinated through the Microsoft Security Response Center for assessment and mitigation. In November 2025, nine malicious NuGet packages were discovered containing time-delayed payloads designed to disrupt database operations, scheduled to activate in 2027 and 2028; these were promptly unlisted, highlighting ongoing security challenges despite robust scanning. To enhance security, NuGet.org introduced Trusted Publishing in 2025, allowing safer package publishing from GitHub Actions via verified identities. Additionally, a Sponsorship feature launched in October 2025 enables direct financial support for package maintainers. For programmatic interactions, NuGet.org exposes a V3 API protocol via the endpoint https://api.nuget.org/v3/index.json, supporting operations such as package queries, metadata retrieval, and downloads without requiring authentication for public access. NuGet.org enforces policies to ensure reliability and security, including ownership verification through individual or organizational accounts, where initial ownership is assigned to the publisher and can be transferred via explicit co-ownership mechanisms. Deprecation notices allow package owners to mark outdated versions, guiding users toward maintained alternatives, while unlisting provisions enable the removal of malicious or harmful content from search results, though previously installed packages remain accessible to existing users. Publishing requirements mandate verifiable contact information and explicit license terms, typically included in a LICENSE file or README, to promote transparency and legal compliance; unsigned packages are permitted but recommended to be signed for enhanced trust. In terms of usage, NuGet.org handles billions of package downloads annually, with total cumulative downloads surpassing 803 billion as of November 2025, reflecting its scale in supporting global .NET development. Top publishers include Microsoft, which contributes core libraries like Entity Framework, alongside major contributors such as Amazon and Google, and a vast array of community-driven projects that enrich the repository's diversity.

Private and Enterprise Feeds

Private and enterprise feeds in NuGet enable organizations to host and manage internal packages securely, separate from public repositories like NuGet.org, which serves as the default source for open-source dependencies. These feeds support proprietary code sharing across teams, ensuring control over access and distribution while integrating with development workflows. Common hosting options include Azure Artifacts, a cloud-based service integrated with Azure DevOps for creating private NuGet feeds that store and share packages within organizations. ProGet, developed by Inedo, provides an on-premises or cloud-hosted repository for private NuGet feeds, allowing multiple feeds for different teams or projects. MyGet offers cloud-based private feeds with easy setup for hosting custom packages, though it has been integrated into broader package management platforms. For self-hosted solutions, BaGet is a lightweight, open-source NuGet server that runs on cross-platform environments like Docker, suitable for smaller teams or offline scenarios. Other popular alternatives include GitHub Packages, which supports private NuGet feeds integrated with GitHub repositories and Actions, and JFrog Artifactory, an enterprise-grade repository manager offering advanced NuGet support with compliance and scalability features. Configuration of private feeds occurs primarily through the nuget.config file, an XML-based settings file that defines package sources with URLs, credentials, and priorities. Developers add private sources by specifying the feed URL and authentication details, such as API keys for ProGet or personal access tokens (PATs) for Azure Artifacts, enabling tools like the NuGet CLI or Visual Studio to restore packages from these feeds during builds. This setup allows multiple sources to be listed, with private feeds often prioritized over public ones for internal dependencies. Enterprise features enhance private feeds for large-scale use, including robust authentication mechanisms like API keys in ProGet or Azure Active Directory (AAD) integration in Azure Artifacts to enforce role-based access control. Caching capabilities, such as upstream sources in Azure Artifacts, automatically mirror and store packages from external registries to support offline builds and reduce latency. Promotion workflows facilitate package lifecycle management, for example, by using feed views in Azure Artifacts to promote versions from development to production feeds, ensuring controlled releases across environments. Best practices for private feeds include mirroring NuGet.org as an upstream source to provide fallbacks for public dependencies while keeping internal packages isolated, preventing accidental exposure of proprietary code. Organizations should implement versioning policies, such as semantic versioning (SemVer), to maintain compatibility and avoid publishing sensitive internals to public feeds, with prerelease tags for testing internal versions. Additionally, regular scanning for vulnerabilities in hosted packages helps maintain security without relying on external tools. For scalability in large organizations, private feeds support feed replication across regions or instances, as seen in Azure Artifacts' multi-tenant architecture, which handles high-volume package operations. Compliance features, such as SOC 2 Type II certification for Azure DevOps services including Artifacts, ensure adherence to security and privacy standards for enterprise deployments.

Advanced Features

Version Management Strategies

NuGet provides several formats and strategies for managing package versions, enabling developers to control dependencies across projects while balancing flexibility and consistency. The primary formats for declaring dependencies have evolved from the legacy packages.config to the modern PackageReference, with the latter becoming the preferred approach since its introduction in Visual Studio 2017 for improved handling of transitive dependencies. The packages.config format, an XML file located in the project root, lists all direct dependencies with exact versions, such as <package id="Newtonsoft.Json" version="13.0.1" />. This legacy approach requires manual updates for version changes and does not natively support version ranges during installation or restore, leading to potential inconsistencies in multi-project solutions. In contrast, PackageReference integrates dependencies directly into the project file (e.g., .csproj) using elements like <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />, allowing for MSBuild conditions and metadata to control asset flow. This format resolves transitive dependencies at restore time, reducing duplication and offering better performance, though it requires all package sources to be available during builds. Migration from packages.config to PackageReference is recommended for new projects and can be automated via Visual Studio or the migrate command. Version strategies in NuGet adhere to Semantic Versioning (SemVer) 2.0.0, where packages specify exact versions (e.g., 1.2.3) or ranges using interval notation. Exact versions, denoted as [1.2.3], ensure precise dependency resolution but require explicit updates to incorporate improvements. Floating versions, such as 1.* or (,2.0), allow NuGet to select the highest compatible version within the range during restore, promoting automatic updates while avoiding breaking changes—though they can introduce instability if not combined with locking mechanisms. Best practices recommend using exact versions for production stability and floating versions sparingly for development, always specifying a range to prevent unintended upgrades beyond major versions. Central Package Management (CPM), introduced in NuGet 6.4 in 2023, addresses version sprawl in large solutions by centralizing declarations in a Directory.Packages.props file at the repository root, using items like <PackageVersion Include="Newtonsoft.Json" Version="13.0.1" /> and enabling it via <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>. Projects then reference packages without versions (e.g., <PackageReference Include="Newtonsoft.Json" />), inheriting the central definition for consistency. This approach supports transitive pinning, enabled with <CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>, which promotes transitive dependencies to top-level references using central versions, preventing downgrades and minimizing version conflicts in monorepos. Overrides are possible via VersionOverride on individual <PackageReference> elements for exceptions, such as framework-specific needs. For reproducibility in continuous integration (CI) environments, NuGet supports lock files (packages.lock.json), enabled with <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile> in project files or via the --use-lock-file flag in CLI restores. These files capture exact resolved versions, including transitives, ensuring identical builds across machines without re-resolving dependencies. Maintenance tools like dotnet list package --outdated help identify available updates by comparing resolved versions against the latest in configured sources, outputting details such as requested, resolved, and latest versions for selective upgrades. In multi-project setups, global package references in Directory.Packages.props (e.g., <GlobalPackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />) apply versions solution-wide, while transitive pinning reduces sprawl by enforcing central control over indirect dependencies, avoiding the need for redundant declarations. In NuGet 7.0 (released November 2025 with .NET 10), the dotnet package update command gains support for Central Package Management, allowing updates to multiple packages with VersionOverride and package source mapping for more efficient version synchronization across solutions. Additionally, package pruning is enabled by default for .NET 10 projects, privatizing direct references to optimize dependency graphs.
Aspectpackages.config (Legacy)PackageReference (Preferred)
LocationSeparate XML file in project rootInline in .csproj or similar
Version SpecificationExact versions onlySupports ranges (e.g., 1.*, [1.0,2.0))
Transitive HandlingLists all direct and some transitiveAutomatic resolution at restore
Multi-Project SuitabilityProne to duplication and conflictsEnables centralization via CPM

Security and Compliance Tools

NuGet provides several built-in tools and integrations for vulnerability scanning, enabling developers to identify known security issues in direct and transitive dependencies during package restore and auditing processes. The primary command, dotnet list package --vulnerable, introduced with the .NET 5 SDK (version 5.0.200) in 2021, lists packages with reported vulnerabilities and supports the --include-transitive flag to include indirect dependencies. This tool draws vulnerability data from the GitHub Advisory Database, which aggregates reviewed security advisories for the NuGet ecosystem, and the nuget.org VulnerabilityInfo API resource, allowing clients from NuGet 6.7 onward to fetch this information during restore operations. By default, dotnet restore in .NET 8 and later generates warnings for vulnerable packages, enhancing proactive detection without additional configuration. Package signing and verification mechanisms in NuGet ensure authenticity and tamper resistance using X.509 certificates issued by trusted certificate authorities. Authors sign packages with commands like dotnet nuget sign, which embeds a digital signature into the .nupkg file, and must register their certificate on nuget.org before publishing; all submissions to nuget.org require a signed package using a registered certificate to verify the publisher's identity. Verification occurs via dotnet nuget verify or nuget verify -Signatures, which checks the signature against root certificate stores and can include timestamping for long-term validity even after certificate expiration. Repository-level signing, introduced in 2018, further secures feeds by applying a collective signature from nuget.org, verifiable by clients since nuget.exe 4.7 and Visual Studio 2017 version 15.7. For compliance, NuGet supports Software Bill of Materials (SBOM) generation through MSBuild integration, allowing projects to produce SPDX-formatted inventories of components and dependencies during the build process. The Microsoft.Sbom.Targets NuGet package automates this by invoking the Microsoft.SBOM.Tool during MSBuild targets like Pack or Publish, generating NTIA-compliant SBOMs for .NET applications and their NuGet dependencies as of 2024 enhancements aligned with .NET 9. In enterprise environments, Azure Artifacts provides auditing tools for license compliance, displaying detailed license information for NuGet packages directly in Visual Studio while browsing feeds, and integrates with Azure DevOps pipelines for broader dependency scanning to enforce policy adherence. Recent enhancements as of 2024 include improved transitive vulnerability detection in Central Package Management (CPM) scenarios, where NuGet 6.8 and Visual Studio 2022 version 17.12 now warn on and visualize vulnerabilities in indirect dependencies during restore and in Solution Explorer, extending coverage beyond direct references. In NuGet 7.0 (November 2025), default vulnerability warnings extend to transitive packages in .NET 10 projects, with vulnerability data now available in the Package Manager UI Details pane and configurable AuditSources. A new dotnet update package --vulnerable command automates upgrades to fix audited vulnerabilities. Best practices recommend pinning to audited versions via lock files for reproducible builds and using private feeds to isolate sensitive dependencies, mitigating risks from public sources while maintaining compliance. Additionally, SHA-1 usage is deprecated in .NET 10 for enhanced security in signing.

References

  1. [1]
    What is NuGet and what does it do? | Microsoft Learn
    Oct 11, 2022 · An essential tool for any modern development platform is a mechanism through which developers can create, share, and consume useful code.
  2. [2]
    NuGet 1.0 and 1.1 Release Notes - Microsoft Learn
    Oct 20, 2023 · NuGet 1.0 was released on January 13, 2011. NuGet 1.1 was released on February 12, 2011. Overview. This document contains the release notes for ...
  3. [3]
    Install NuGet client tools - Microsoft Learn
    Mar 3, 2025 · Learn how to install and use the dotnet and NuGet client command-line interface (CLI) tools and the Package Manager tool for Visual Studio.Dotnet CLI · Package consumption workflow · Visual Studio Package Manager
  4. [4]
    NuGet Gallery | Home
    The NuGet Gallery is the central package repository used by all package authors and consumers. Learn to use packages. Learn. New to NuGet? Start with a ...There are 447,606 packages · Downloads · NuGet.org Terms of Use · Sign In
  5. [5]
    Overview of NuGet.org - Microsoft Learn
    Sep 10, 2025 · NuGet.org is a public host of NuGet packages that are employed by millions of .NET and .NET Core developers every day.
  6. [6]
    Overview of Hosting Your Own NuGet Feeds | Microsoft Learn
    Jul 29, 2025 · An overview of options for hosting your own NuGet package feeds or galleries either locally or remotely.
  7. [7]
    Overview of the NuGet Server API - Microsoft Learn
    Jul 6, 2023 · 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
  8. [8]
    Project Detail | .NET Foundation
    NuGet. NuGet is the package manager for the Microsoft development platform including .NET. The NuGet client tools provide the ability to produce and consume ...
  9. [9]
    Overview of the NuGet Ecosystem | Microsoft Learn
    May 16, 2023 · NuGet provides a free, open source package management system for the Microsoft development platform. It consists of a few client tools as well as the set of .... Net Foundation Projects · Non-Microsoft Projects · Training Materials And...
  10. [10]
    Install and manage packages in Visual Studio using the NuGet ...
    Oct 14, 2025 · The NuGet Package Manager UI in Microsoft Visual Studio for Windows allows you to easily install, uninstall, and update NuGet packages in projects and ...Find And Install A Package · Manage Packages For The... · Nuget Package Manager...
  11. [11]
    NuGet Package Version Reference - Microsoft Learn
    Jan 21, 2025 · Avoid specifying an upper bound to version ranges to packages you don't own unless you know of a compatibility problem. Upper bounds to version ...
  12. [12]
    How we ended up rewriting NuGet Restore in .NET 9
    Apr 9, 2025 · For developers and organizations relying on .NET, these improvements mean faster build times and a more streamlined development process.
  13. [13]
    .NET Microservices. Architecture for Containerized .NET Applications
    Mar 22, 2023 · This guide is an introduction to developing microservices-based applications and managing them using containers.
  14. [14]
    What are compelling arguments to use NuGet packages?
    Jan 31, 2021 · Learn about the differences between packaging software as a NuGet package or as a software development kit when referenced in a Visual Studio ...
  15. [15]
    NuGet in the Enterprise, in 2025 and Beyond - Inedo Blog
    Apr 11, 2024 · On January 7th, 2011, the very first package was shared with the NuGet registry. NuGet early adopters had issues like buggy and constantly ...How Nuget Packages Work · The Life Of Nuget · Challenges With Third-Party...
  16. [16]
    Statistics - NuGet Gallery
    Downloaded Packages Per Week (Last 6 Weeks) ; 10/6/2025 - 10/13/2025, 5,978,503,877 ; 10/13/2025 - 10/20/2025, 5,204,701,277 ; 10/20/2025 - 10/27/2025 ...
  17. [17]
    Introducing NuGet Package Management for .NET - Scott Hanselman
    Oct 6, 2010 · To summarize: NuGet is open source and in the Outercurve Foundation; NuGet integrates with VS and with PowerShell; NuGet will have a community ...Missing: origins | Show results with:origins
  18. [18]
    Introducing NuGet Package Manager | You've Been Haacked
    Oct 6, 2010 · After several months of work, the Outercurve Foundation (formerly CodePlex Foundation) today announced the acceptance of the NuGet project to ...Missing: origins | Show results with:origins
  19. [19]
    Introducing the NuGet gallery - David Ebbo
    Jan 11, 2011 · The NuGet gallery was built using Orchard, which itself is still very young (1.0 release is around the corner). This could be one of the first ...
  20. [20]
    Herding Code 99: David Ebbo on NuGet
    Dec 1, 2010 · David describes the history of NuGet – how NuGet evolved from a web-based ... OuterCurve Foundation · OpenWrap · T4MVC · Chirpy; Elijah Manor ...Missing: origins initial
  21. [21]
    NuGet 2.6 Released and Included in Visual Studio 2013 Preview
    Jun 26, 2013 · We are excited to announce that NuGet 2.6 has been released and it is included in the box with Visual Studio 2013 Preview.Missing: initial | Show results with:initial
  22. [22]
    Diving Into NuGet History For Fun and Community Insights
    Nov 9, 2020 · In this post, we'll look at our .NET community's history through the lens of NuGet data harvested using Maarten's Azure Functions-based metadata ...
  23. [23]
    NuGet 1.6 Release Notes - Microsoft Learn
    Oct 20, 2023 · NuGet 1.6 was released on December 13, 2011. Known Installation ... NuGet 1.6 now has first class support for the workflow in which NuGet ...Missing: 5 | Show results with:5
  24. [24]
    Inside the NuGet Package Manager - Visual Studio Magazine
    Apr 20, 2011 · The popular, open source Nuget Package Management system makes quick work of installing, configuring and updating third-party components in.NET projects.
  25. [25]
    Overview and workflow of creating NuGet packages - Microsoft Learn
    Jan 25, 2021 · 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 ...
  26. [26]
    Create a package using the nuget.exe CLI - Microsoft Learn
    Mar 3, 2025 · A detailed guide on designing and creating a NuGet package, including files and versioning.Missing: introduction | Show results with:introduction
  27. [27]
    nuspec File Reference for NuGet - Microsoft Learn
    Apr 22, 2021 · 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.
  28. [28]
    MSBuild props and targets in a package - NuGet - Microsoft Learn
    Feb 2, 2023 · NuGet packages may sometimes add custom build targets or properties to projects that consume that package. This can be achieved by adding a valid MSBuild file.Build folders · Framework specific build folder
  29. [29]
    NuGet ContentFiles Demystified - .NET Blog
    Jan 26, 2016 · Let's start with a quick definition. ContentFiles in NuGet are static files that the NuGet client will make available through the project.lock.
  30. [30]
    Creating symbol packages (.snupkg) - Microsoft Learn
    Feb 2, 2023 · You can use symbol packages (.snupkg) to distribute these symbols and improve the debugging experience of your NuGet packages.
  31. [31]
    NuGet PackageReference in project files - Microsoft Learn
    Jul 29, 2025 · Controlling dependency assets ; contentFiles, Contents of the contentfiles folder ; build .props and .targets in the build folder.<|separator|>
  32. [32]
    NuGet Package Dependency Resolution - Microsoft Learn
    May 21, 2024 · Details on the process through which a NuGet package's dependencies are resolved and installed in both NuGet 2.x and NuGet 3.x+.Missing: 2010 | Show results with:2010
  33. [33]
    Enable repeatable package restores using a lock file - .NET Blog
    Dec 17, 2018 · The lock file is a tool (NuGet) generated file and should never be manually edited. Lock file should not be put inside a package.
  34. [34]
    Target Frameworks Reference for NuGet | Microsoft Learn
    Jun 14, 2023 · 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.
  35. [35]
    Central Package Management (CPM) - Microsoft Learn
    Aug 26, 2025 · When a package is transitively pinned, your project uses a higher version than the one requested by your dependencies. If you create a package ...
  36. [36]
    Overview and workflow of using NuGet packages - Microsoft Learn
    Jun 17, 2021 · Provides a UI through which you can browse, select, and install packages and their dependencies into a project from a specified package source.Missing: introduction | Show results with:introduction
  37. [37]
    Find and evaluate NuGet packages for your project - Microsoft Learn
    Mar 3, 2025 · NuGet installs a package into a project only if the package's supported .NET frameworks include the project's target frameworks. If the package ...
  38. [38]
    Install and manage NuGet packages with the dotnet CLI
    Mar 3, 2025 · The dotnet add package command adds a package reference to the project file, and then runs dotnet restore to install the package. Open a ...
  39. [39]
  40. [40]
    dotnet restore command - .NET CLI
    ### Summary of `dotnet restore` Command
  41. [41]
    How to manage the global packages, cache, temp folders in NuGet
    Oct 24, 2025 · The global-packages folder is where NuGet installs any downloaded package. Each package is fully expanded into a subfolder that matches the ...
  42. [42]
    dotnet package list command - .NET CLI | Microsoft Learn
    To update a package to the latest version, use dotnet package add. The following example shows the output of the dotnet package list --outdated --include ...
  43. [43]
    dotnet package remove command - .NET CLI | Microsoft Learn
    The dotnet package remove command provides a convenient option to remove a NuGet package reference from a project.
  44. [44]
    dotnet nuget verify command - .NET CLI - Microsoft Learn
    The dotnet nuget verify command verifies a signed NuGet package. In .NET 10 and later versions, the command also outputs the package's content hash, which might ...
  45. [45]
    Create, update and deploy Nuget Packages with a GUI - GitHub
    NuGet Package Explorer (NPE) is an application that makes it easy to create and explore NuGet packages.
  46. [46]
    How to publish NuGet packages - Microsoft Learn
    Feb 21, 2023 · Once you create a NuGet package and have a .nupkg file, you can make the package available to other developers either publicly or privately.
  47. [47]
    NuGet Command-Line Interface (CLI) Reference - Microsoft Learn
    Apr 17, 2023 · The NuGet Command Line Interface (CLI), nuget.exe, provides the full extent of NuGet functionality to install, create, publish, and manage packages
  48. [48]
    dotnet CLI NuGet commands - Microsoft Learn
    Jan 25, 2021 · dotnet add package: Adds a package reference to the project file, then runs dotnet restore to install the package. dotnet remove package ...
  49. [49]
    Manage NuGet packages with the NuGet CLI | Microsoft Learn
    Mar 3, 2025 · This article describes the most common NuGet CLI commands for managing NuGet packages. All these commands work on Windows, and most work on Mac and on Linux ...
  50. [50]
    dotnet nuget add source command - .NET CLI - Microsoft Learn
    The dotnet nuget add source command adds a new package source to your NuGet configuration files. Warning. When adding multiple package sources, be careful not ...
  51. [51]
  52. [52]
    Install-Package (PackageManagement) - PowerShell | Microsoft Learn
    The Install-Package cmdlet installs one or more software packages on the local computer. If you have multiple software sources, use Get-PackageProvider and Get ...
  53. [53]
    nuget.config File Reference - Microsoft Learn
    Aug 13, 2024 · Controls the maximum number of parallel requests sent from NuGet to every package source for package dependency resolution and downloads.
  54. [54]
    sources command (NuGet CLI) - Microsoft Learn
    Aug 13, 2024 · Manages the list of sources located in the user scope configuration file or a specified configuration file.
  55. [55]
    Consume NuGet packages | JetBrains Rider Documentation
    Dec 3, 2024 · Use the NuGet window (Alt 07) or quick list (Alt Shift 0N) to install, update, and remove packages. Find packages via search, and select a ...
  56. [56]
    NuGet window | JetBrains Rider Documentation
    Jul 10, 2024 · The NuGet window lets you manage NuGet packages in your solution, including installed and available packages, and exploring package sources.<|separator|>
  57. [57]
    NuGet pack and restore as MSBuild targets - Microsoft Learn
    Feb 2, 2023 · 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 ...
  58. [58]
    NuGet Package Restore | Microsoft Learn
    Oct 20, 2023 · Config file in Windows at %ProgramData%\NuGet\Config, sometimes under a specific <IDE>\<Version>\<SKU> Visual Studio folder, or in Mac/Linux at ...
  59. [59]
    NuGetCommand@2 - NuGet v2 task - Microsoft Learn
    Oct 7, 2025 · Use this task to restore, pack, or push NuGet packages, or run a NuGet command. This task supports NuGet.org and authenticated feeds like Azure Artifacts and ...
  60. [60]
    NuGet in Visual Studio Code
    NuGet is the package manager for .NET. It defines how packages for .NET are created, hosted, and consumed, while providing the tools for each of those functions ...
  61. [61]
    Happy 10th Birthday, NuGet! - .NET Blog
    Jan 13, 2021 · NuGet 1.0 was released on January 13th, 2011 – 10 years and 4 major version releases ago. Since then, NuGet.org has grown to host a large ...
  62. [62]
    How to Scan NuGet Packages for Security Vulnerabilities - .NET Blog
    Mar 2, 2021 · You can now view any known CVE/GHSA directly on NuGet.org. NuGet.org will show you a banner telling you that a vulnerability with a specific ...Missing: Response | Show results with:Response
  63. [63]
    Microsoft.Data.SqlClient 6.1.0-preview2.25178.5 - NuGet
    Please do not report security vulnerabilities through public GitHub issues. Instead, please report them to the Microsoft Security Response Center (MSRC) at ...
  64. [64]
    Microsoft Visual Studio Marketplace and NuGet.org Terms of Use
    NuGet web properties and NuGet APIs, provide you with access to a variety of resources, including downloads, packages and product information.<|separator|>
  65. [65]
    NuGet.org Frequently-Asked Questions - Microsoft Learn
    NuGet.org packages have license terms, are recommended to be signed, and have a max size of 250MB, but under 1MB is recommended.Missing: publishing | Show results with:publishing
  66. [66]
    Publish and download NuGet packages with Azure Artifacts
    Jun 23, 2025 · This article guides you through creating a feed, configuring your project, and publishing and downloading NuGet packages.<|control11|><|separator|>
  67. [67]
    Create and Upload Nuget Packages to a Private Repository in ProGet
    This guide will walk you through the process of setting up a NuGet "Feed" in ProGet as a private, custom repository.Step 3: Adding The Feed As A... · Using Other Nuget Clients · Pushing A Package With Nuget...
  68. [68]
    Getting Started With NuGet - MyGet
    MyGet allows you to create your own public or private NuGet feeds in just a few clicks. This section will guide you through it.
  69. [69]
    BaGet - Loic Sharma
    You can also use the BaGet.Protocol package to interact with a NuGet server. For more information, please refer to the BaGet SDK guide.
  70. [70]
    Connect to an Azure Artifacts feeds with NuGet CLI - Microsoft Learn
    Jun 23, 2025 · Azure Artifacts enables developers to download NuGet packages from various sources such as private feeds and public registries.
  71. [71]
    Use packages from NuGet Gallery - Azure Artifacts - Microsoft Learn
    Sep 8, 2025 · Learn package management concepts including package feeds, feed managers, public and private sources, and how to consume, create, and publish ...
  72. [72]
    Promote packages and manage feed views - Azure Artifacts
    May 28, 2025 · Feed views enable developers to control package visibility by sharing some packages while keeping others private.
  73. [73]
    Best Practices for Authoring Private NuGet Packages at Scale
    Oct 6, 2021 · Learn to author private NuGet packages in the enterprise with tips on metadata, versioning, and streamlining CI/CD for efficient package ...
  74. [74]
    What are Azure Artifacts feeds? - Microsoft Learn
    May 28, 2025 · Azure Artifacts feeds are organizational constructs that allow you to store, manage, and share your packages while controlling access.
  75. [75]
    Azure Artifacts
    Create Maven, npm, and NuGet package feeds from public and private sources. Share code, get security compliance, and add package sharing to pipelines.
  76. [76]
    NuGet packages.config File Reference - Microsoft Learn
    Apr 13, 2022 · The packages.config file is used in some project types to maintain the list of packages referenced by the project.
  77. [77]
    Migrate from packages.config to PackageReference - Microsoft Learn
    Apr 17, 2023 · Details on how to migrate a project from the packages.config management format to PackageReference as supported by NuGet 4.0+ and VS2017 and ...Missing: evolution | Show results with:evolution
  78. [78]
    Auditing package dependencies for security vulnerabilities
    A security audit for package managers like NuGet is a process that involves analyzing the security of the packages that are included in a software project.
  79. [79]
    Vulnerability Info, NuGet API - Microsoft Learn
    Jul 6, 2023 · NuGet API uses a vulnerability index and page files to store vulnerability data. The index provides cache info, and pages contain details like ...Missing: Response | Show results with:Response
  80. [80]
    'dotnet restore' produces security vulnerability warnings - .NET
    Jan 31, 2025 · The dotnet restore command, which restores the dependencies and tools of a project, now produces security vulnerability warnings by default.Missing: list | Show results with:list
  81. [81]
    Signing NuGet Packages | Microsoft Learn
    Apr 17, 2023 · A signed package allows for content integrity verification checks, which provides protection against content tampering.
  82. [82]
    verify command (NuGet CLI) - Microsoft Learn
    Jul 29, 2025 · nuget verify -Signatures. Specifies that package signature verification should be performed. Options for "verify -Signatures". - ...
  83. [83]
    NuGet.org starts repo-signing packages - .NET Blog
    Aug 10, 2018 · NuGet clients support repository signed package verification since nuget.exe 4.7 and Visual Studio 2017 version 15.7. If a package has been ...
  84. [84]
    Generating SBOM for NuGet packages - Meziantou's blog
    Dec 16, 2024 · To generate an SBOM for NuGet packages, you can use the Microsoft.Sbom.Targets package. This package run the Microsoft.SbomTool tool to generate a Software ...
  85. [85]
    [Epic] Support SBOMs for NuGet packages #12497 - GitHub
    Mar 20, 2023 · This epic tracks the work to support providing a SPDX formatted and NTIA compliant SBOM inside of a NuGet package based on the SBOM Everywhere ...
  86. [86]
    Azure Artifacts simplifies integration with other services
    Oct 4, 2022 · Now you can see the details of license information for NuGet packages stored in Azure Artifacts while browsing packages in Visual Studio.Preview Of Scale Set Agents · Support For Github Packages... · Notifications For Disabled...
  87. [87]
    Set up dependency scanning - Azure Repos - Microsoft Learn
    Feb 20, 2025 · Dependency scanning generates an alert for any open-source component, direct or transitive, found to be vulnerable that your code depends upon.
  88. [88]
    None
    Nothing is retrieved...<|control11|><|separator|>
  89. [89]
    Visual Studio 2022 version 17.12 Release Notes | Microsoft Learn
    Nov 12, 2024 · When setting NuGetAuditMode to all , Solution Explorer will show indicators for transitive dependencies with vulnerabilities. NuGet Audit ...Version 17.12. 8 · Version 17.12. 6 · Version 17.12. 4
  90. [90]
    Best practices for a secure software supply chain | Microsoft Learn
    Sep 30, 2024 · If the content hash of a package you want to install matches with the lock file, it will ensure package repeatability. To enable lock files, see ...