Bootstrap 5 Accordion

A demonstration of Bootstrap 5 accordions featuring the top ten things every NuGet package should have.

Top Ten NuGet Package Essentials

Format: Major.Minor.Patch[-prerelease]

Use semantic versioning to clearly indicate the type of changes in each release:

  • Major: Breaking changes
  • Minor: New features, backwards compatible
  • Patch: Bug fixes, backwards compatible
  • Prerelease: Unstable versions (e.g., -alpha, -beta, -rc)

Publish non-stable packages as pre-release to avoid breaking users' builds with work-in-progress code.

Provide a markdown (.md) file that includes:

  • An overview of what your package does
  • How to get started (installation instructions)
  • Basic usage examples
  • Common scenarios and code samples

This README is displayed on nuget.org and greatly improves the experience for new users exploring your package.

Specify a valid license by:

  • Using an SPDX license expression (e.g., MIT, Apache-2.0)
  • OR providing a path to a license file within the package
Warning! A project without a license defaults to exclusive copyright. Avoid the deprecated LicenseUrl property.

Include a concise yet informative description (up to 4000 characters) that clearly states what the package is for.

This is a primary field for discoverability in NuGet search. For private packages, consider linking to an internal wiki for detailed information.

Pro Tip

A good description answers the question: "What problem does this package solve for the user?"

Add a space-delimited list of keywords or tags that describe your package.

Tags are used in NuGet's search algorithm and help users find your package. Examples might include:

logging database orm json serialization api-client blazor

Provide an image file to visually differentiate your package on nuget.org and in Visual Studio's NuGet Package Manager.

  • JPEG or PNG format
  • 128x128 pixels recommended
  • Maximum 1 MB file size
Important! Avoid the deprecated IconUrl property.

Supply PDB files to make exception reports more informative by providing file and line numbers.

Consider setting up Source Link to add source control metadata, allowing consumers to step into your code while debugging.

Configuration Example
<PropertyGroup>
    <IncludeSymbols>true</IncludeSymbols>
    <SymbolPackageFormat>snupkg</SymbolPackageFormat>
    <PublishRepositoryUrl>true</PublishRepositoryUrl>
    <EmbedUntrackedSources>true</EmbedUntrackedSources>
</PropertyGroup>

Include the XML documentation file (often generated from XML comments in your code) in the package.

This provides API documentation for users and enables IntelliSense descriptions in Visual Studio.

Configuration Example
<PropertyGroup>
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
    <NoWarn>$(NoWarn);1591</NoWarn>
</PropertyGroup>

Define the .NET frameworks your package supports. For general-purpose libraries, consider including a netstandard2.0 target to maximize compatibility across modern platforms.

Example target framework moniker (TFM) combinations:

  • netstandard2.0;netstandard2.1
  • netstandard2.0;net6.0;net7.0;net8.0
  • net6.0-windows;net7.0-windows (for Windows-specific packages)
Note: Multi-targeting allows you to provide optimized assemblies for each framework while supporting a wide range of platforms.

Add a digital signature to your package. Package signing helps ensure the integrity and authenticity of the package, providing users with assurance that it hasn't been tampered with since publishing.

There are two types of signing:

  • Author signing: Certifies package origin and integrity
  • Repository signing: Applied by the repository (e.g., nuget.org)
Configuration Example
<PropertyGroup>
    <SignAssembly>true</SignAssembly>
    <AssemblyOriginatorKeyFile>YourKeyFile.snk</AssemblyOriginatorKeyFile>
</PropertyGroup>

Additional Accordion Examples

Flush Accordion (No Border)

Install NuGet packages using any of these methods:

  • Package Manager Console: Install-Package PackageName -Version 1.0.0
  • .NET CLI: dotnet add package PackageName --version 1.0.0
  • Visual Studio Package Manager UI: Right-click on project → Manage NuGet Packages

Create a NuGet package by:

  1. Configure package properties in your .csproj file
  2. Use dotnet pack to build the package
  3. Test the package locally before publishing
  4. Publish to nuget.org or a private feed

Publish your NuGet package to nuget.org:

  1. Create an account on nuget.org and get an API key
  2. Push your package using: dotnet nuget push YourPackage.1.0.0.nupkg --api-key YOUR_API_KEY --source https://api.nuget.org/v3/index.json
  3. Wait for the package to be indexed (usually within minutes)

Nested Accordions

Managing your NuGet packages effectively is essential for a successful .NET project.

  • Specify version ranges appropriately
  • Use central package management for large solutions
  • Regularly update dependencies to get security fixes

  • Use package restore in CI/CD pipelines
  • Consider using a private feed for proprietary packages
  • Cache packages locally when possible

Security is critical when working with NuGet packages:

  • Use signed packages when possible
  • Verify package sources and authors
  • Scan packages for vulnerabilities using tools like NuGet Auditor
  • Keep dependencies up to date to incorporate security fixes