DotNetLibraryPackageTemplates 1.0.0
dotnet new install DotNetLibraryPackageTemplates::1.0.0
<h1 align="center"> <br> .NET Library Package Templates <br> </h1>
<h4 align="center">"dotnet new" templates for building NuGet-published multi-targeting libraries with all the bells and whistles</h4>
<div align="center">
<a href="#about">About</a> • <a href="#download">Download</a> • <a href="#how-to-use-it">How To Use</a> • <a href="#building">Contributors</a> • <a href="#contributors">Contributors</a> • <a href="#versioning">Versioning</a> • <a href="#credits">Credits</a> • <a href="#related">Related</a> • <a href="#license">License</a>
</div>
About
What's this?
A bunch of dotnet new
templates to quickly get you started building high-quality libraries including everything you need to publish it on NuGet or make it available as open-source.
It includes:
- Multi-targeting to cover as many .NET frameworks as possible
- Code coverage using Coverlet and Coveralls.io
- Static code analysis using Roslyn analyzers StyleCopAnalyzers, Roslynator, CSharpGuidelinesAnalyzer and Meziantou.
- Auto-formatting using
.editorconfig
and settings honored by JetBrains Rider and ReSharper - A Nuke C# build script that you can run locally as well as in your CI/CD pipeline
- A GitHub Actions workflow that builds, tests, packages and publishes your library
- An extensive read-me
- Automatic versioning using GitVersion and tagging
- Contribution guidelines
- Bug report templates
- Customized release notes templates for GitHub connected to pull requests labels.
- Support for content-only NuGet packages
- A test project using xUnit and Fluent Assertions 7
- Validation of the public API of the library against snapshots using Verify
What's so special about that?
I like to build my software systems in a nicely broken down set of libraries that are easy to maintain, test and deploy based on the Principles Of Successful Package Management. But every time I or the teams I work with need to start a new library or reusable component, we have to scramble so much from other projects, I felt this good fill the gap.
This is the result of years of experience in building in-house and open-source libraries that are used by thousands of developers around the world. I hope it's a great starting point for building your own libraries.
Tip You can use this as a starting point for a GitHub Template Repository, fork the repository for your own company, or use it as an organization template in Azure DevOps.
Who created this?
My name is Dennis Doomen and I'm a Microsoft MVP and Principal Consultant at Aviva Solutions with 28 years of experience under my belt. As a software architect and/or lead developer, I specialize in designing full-stack enterprise solutions based on .NET as well as providing coaching on all aspects of designing, building, deploying and maintaining software systems. I'm the author of several open-source projects such as Fluent Assertions, Reflectify, Liquid Projections, and I've been maintaining coding guidelines for C# since 2001.
Contact me through Email, Bluesky, Twitter/X or Mastadon
Download
This library is available as a NuGet package on https://nuget.org. To install it, use the following command-line:
dotnet new install DotNetLibraryPackageTemplates
How do I use it?
- Create a new directory for your library initialized with Git
- Run
dotnet new class-library-package-solution -name MyAwesomeLibrary
- Make the necessary changes to the generated code
- Commit the changes to your repository into a new commit
- Run
build.ps1
to build the code, run the tests, and package the library into a NuGet package in theArtifacts
directory.
todo: what to customize after creating the project todo: silent formatting in Rider and ReSharper
Building
To build this repository locally, you need the following:
- The .NET SDKs for .NET 4.7, 6.0 and 8.0.
- Visual Studio, JetBrains Rider or Visual Studio Code with the C# DevKit
You can also build, run the unit tests and package the code using the following command-line:
build.ps1
Or, if you have, the Nuke tool installed:
nuke
Also try using --help
to see all the available options or --plan
to see what the scripts does.
Contributors
Your contributions are always welcome! Please have a look at the contribution guidelines first.
<a href="https://github.com/dennisdoomen/dotnet-package-templates/graphs/contributors"> <img src="https://contrib.rocks/image?repo=dennisdoomen/dotnet-package-templates" alt="contrib.rocks image" /> </a>
(Made with contrib.rocks)
Versioning
This library uses Semantic Versioning to give meaning to the version numbers. For the versions available, see the tags on this repository.
Credits
This library wouldn't have been possible without the following tools, packages and companies:
- ASP.NET Core Template - Created by Nikolay Kostov and the inspiration for this repo.
- Nuke - Smart automation for DevOps teams and CI/CD pipelines by Matthias Koch
- Rider - The world's most loved .NET and game dev IDE by JetBrains
- xUnit - Community-focused unit testing tool for .NET by Brad Wilson
- Coverlet - Cross platform code coverage for .NET by Toni Solarin-Sodara
- Polysharp - Generated, source-only polyfills for C# language features by Sergio Pedri
- GitVersion - From git log to SemVer in no time
- ReportGenerator - Converts coverage reports by Daniel Palme
- StyleCopyAnalyzer - StyleCop rules for .NET
- Roslynator - A set of code analysis tools for C# by Josef Pihrt
- CSharpCodingGuidelines - Roslyn analyzers by Bart Koelman to go with the C# Coding Guidelines
- Meziantou - Another set of awesome Roslyn analyzers by Gérald Barré
- Verify - Snapshot testing by Simon Cropp
Support the project
You may also like
- My Blog
- FluentAssertions - Extension methods to fluently assert the outcome of .NET tests
- C# Coding Guidelines - Forkable coding guidelines for all C# versions
License
This project is licensed under the MIT License - see the [LICENSE(LICENSE) file for details.
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 68 | 1/19/2025 |