NuGetizer 3000
Pages 155
Home
Contributing
Specs
Incubation
Reviewing
- Centrally-managing-NuGet-package-versions
- Package Applicability
- dotnet list package --vulnerable
- Machine-readable output for dotnet list package
- Support Package Renames
- Advanced Search on NuGet.org
Reviewed
Implemented
- Enhanced package upload workflow
- Register package signing certificates
- Organizations on NuGet.org
- 2 Factor Auth for NuGet.org sign in
- Add nuget sources command to the dotnet CLI
- Author Package Signing
- Backporting PC to msbuild restore
- Deprecate packages
- Dotnet list package
- Enable repeatable package restore using lock file
- NuGet Client Package Debugging
- NuGet Package Debugging & Symbols Improvements
- NuGet Package Identity Verification
- NuGet Package Signing Client Policy
- NuGet Sign Command
- NuGet Verify Command
- Storing trusted repository
- Package Signatures Technical Details
- Package signing
- Packages.config SHA Validation
- Packaging Icon, License and Documentation within the nupkg
- Repository Signatures and Countersignatures Technical Specification
- Repository Signatures
- Show outdated packages
- Symbols Package Upload and Delete Workflow
Templates
Clone this wiki locally
Overview
Creating NuGet packages is the main way to redistribute libraries for .NET and Xamarin applications. However, there is currently no integrated support in the IDEs or build tooling.
Creating packages generally involves setting up complex structures of build outputs, manually authoring a nuspec manifest, and invoking command-line tools. The experience is particularly bad for so-called “bait and switch” packages which provide a single reference assembly and multiple platform-specific implementations. Although some tools do exist that can help with this process, they do not provide a cohesive workflow and end-to-end story.
The goal of the NuGetizer 3000 project is to make it as easy as possible to create and publish a NuGet package, including bait-and-switch packages, and provide guidance to users along the way. The focus is on providing a good UX on top of established existing mechanisms.
The design is inspired by NuProj. It adds a new Package Project project type that builds NuGet packages, and is consistent with existing Visual Studio idioms such as project references and project options. A package project can reference several .NET library projects, and when built it creates a nupkg package that includes the output of those libraries in the correct subdirectories.
To simplify the common case where a NuGet is created from a single portable or platform-specific library, the ability to generate Nuget packages will be added to all library projects. However, multi-platform projects will be first class, and there will be several major features to specifically support creating bait-and-switch packages, including wizards to set up the structure using shared projects, and the ability to generate reference assemblies automatically.
The design also proposes several future improvements to further simplify NuGet authoring and consumption.