Awesome .NET!
A collection of awesome .NET
libraries, tools, frameworks, and software that I suggest you try!
Logging
Simple .NET logging with fully-structured events.
Inversion of Control (IoC)
Grace is a feature rich dependency injection container library
DryIoc is fast, small, full-featured IoC Container for .NET
DryIoc.Microsoft.DependencyInjection
Serialization
Popular high-performance JSON framework for .NET
JSON Schema draft v4 reader, generator and validator for .NET.
NJsonSchema.CodeGeneration.CSharp
NJsonSchema.CodeGeneration.TypeScript
Classes to serialize, deserialize and validate OData JSON payloads. Supports OData v4 only. Enables construction of OData services and clients.
A library for reading and writing CSV files. Extremely fast, flexible, and easy to use. Supports reading and writing of custom class objects.
protobuf-net is a contract based serializer for .NET code, that happens to write data in the “protocol buffers” serialization format engineered by Google. The API, however, is very different to Google’s, and follows typical .NET patterns (it is broadly comparable, in usage, to XmlSerializer, DataContractSerializer, etc). It should work for most .NET languages that write standard types and can use attributes.
Extended Xml Serializer for .NET
A YAML portable .NET library. providing parsing and serialization of object graphs, compatible with CoreCLR.
Fastest C# Serializer and Infinitely Fast Deserializer for .NET, .NET Core and Unity.
Definitely Fastest and Zero Allocation JSON Serializer for C#(NET, .NET Core, Unity, Xamarin).
Utf8Json.AspNetCoreMvcFormatter
Test-driven development (TDD) - Behavior-driven development (BDD)
xUnit.net is a developer testing framework, built to support Test Driven Development, with a design goal of extreme simplicity and alignment with framework features.
NSubstitute is a friendly substitute for .NET mocking frameworks. It has a simple, succinct syntax to help developers write clearer tests. NSubstitute is designed for Arrange-Act-Assert (AAA) testing and with Test Driven Development (TDD) in mind.
Moq is the most popular and friendly mocking framework for .NET
A BDD style testing framework, heavily relying on (auto mocking) containers.
xBehave.net is xUnit.net extension for describing your tests using natural language. Ideally suited to a variety of testing styles (e.g. BDD, TDD, ATDD, etc.), xBehave.net can be used for acceptance tests, integration tests, unit tests or any other ad-hoc testing scenarios.
LightBDD is a behaviour-driven development test framework offering ability to write tests that are easy to read, easy to track during execution and summarize in user friendly report, while allowing developers to use all of the standard development tools to maintain them.
Fluent Assertions is a set of .NET extension methods that allow you to more naturally specify the expected outcome of a TDD or BDD-style test. We currently use it in all our internal and client projects, and it is used in many open-source projects. It runs on .NET 4.0, 4.5, 4.6, CoreClr, .NET Native, Windows 8.1, Silverlight 5, Windows Phone 8.0…
The Tynamix ObjectFiller.NET fills the properties of your objects with random data. Use it for unittest, prototyping and whereever you need some random testdata. It has a fluent API and is highly customizable. It supports also IEnumerables and Dictionaries and constructors WITH parameters. It is also possible to fill instances and to write private properties.
A simple and sane data generator for populating objects that supports different locales. A delightful port of the famed faker.js and inspired by FluentValidation. Use it to create and load databases and UIs with mock up data. Get started by using Faker class or a DataSet directly.
Easy integration testing helper for ASP.Net Core applications.
Coverlet is a cross platform code coverage library for .NET Core, with support for line, branch and method coverage.
Message Brokers
RawRabbit is a modern .NET client for communication over RabbitMq. It is written for .NET Core and uses Microsoft’s new frameworks for logging, configuration and dependecy injection.
RawRabbit.DependencyInjection.Autofac
RawRabbit.Operations.StateMachine
An easy to use .NET API for RabbitMQ
Rebus is a lean service bus implementation for .NET.
Object-relational mapping (ORM)
A high performance Micro-ORM supporting SQL Server, MySQL, Sqlite, SqlCE, Firebird etc..
Entity Framework Core is a lightweight and extensible version of the popular Entity Framework data access technology.
Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.Relational
Microsoft.EntityFrameworkCore.Relational.Design
Microsoft.EntityFrameworkCore.InMemory
Microsoft.EntityFrameworkCore.Tools
Microsoft.EntityFrameworkCore.Tools.DotNet
Microsoft.EntityFrameworkCore.Specification.Tests
Microsoft.EntityFrameworkCore.Relational.Specification.Tests
Microsoft.EntityFrameworkCore.Relational.Design.Specification.Tests
Woodman.EntityFrameworkCore.Bulk
Microsoft.EntityFrameworkCore.AutoHistory
EntityFrameworkCore.PrimaryKey
EntityFrameworkCore.TypedOriginalValues
Microsoft SQL Server is a relational database management system developed by Microsoft. As a database server, it is a software product with the primary function of storing and retrieving data as requested by other software applications.
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.SqlServer.Design
SQLite is a self-contained, high-reliability, embedded, full-featured, public-domain, SQL database engine. SQLite is the most used database engine in the world.
Microsoft.EntityFrameworkCore.Sqlite
Microsoft.EntityFrameworkCore.Sqlite.Design
PostgreSQL, often simply Postgres, is an object-relational database management system (ORDBMS) with an emphasis on extensibility and standards compliance. As a database server, its primary functions are to store data securely and return that data in response to requests from other software applications.
Npgsql.EntityFrameworkCore.PostgreSQL
Npgsql.EntityFrameworkCore.PostgreSQL.Design
Library to create and use COMB (timestamped sequential) GUID variants for Microsoft SQL Server and PostgreSQL.
Aspect-oriented programming (AOP)
Cecil is a library written by Jb Evain to generate and inspect programs and libraries in the ECMA CIL format. It has full support for generics, and support some debugging symbol format. In simple English, with Cecil, you can load existing managed assemblies, browse all the contained types, modify them on the fly and save back to the disk the modified assembly.
Castle Core provides common Castle Project abstractions including logging services. It also features Castle DynamicProxy a lightweight runtime proxy generator, and Castle DictionaryAdapter.
Extensible tool for weaving .net assemblies
Validation
A validation library for .NET that uses a fluent interface to construct strongly-typed validation rules.
Distributed Systems
Build powerful concurrent & distributed applications more easily.
Orleans is a framework that provides a straight-forward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns.
Scheduling
Quartz Scheduling Framework for .NET
NoSQL
Embedded .NET NoSQL Document Store in a single data file
High performance Redis client, incorporating both synchronous and asynchronous usage.
Official .NET driver for MongoDB.
Postgresql as a Document Database and Event Store for .Net Applications.
A C#/.NET RethinkDB database driver with 100% ReQL API coverage. Architecturally, this driver is a port of the official Java driver.
Object Mapper
A convention-based object-object mapper. AutoMapper uses a fluent configuration API to define an object-object mapping strategy. AutoMapper uses a convention-based matching algorithm to match up source to destination values. Currently, AutoMapper is designed for model projection scenarios to flatten complex object models to DTOs and other simple objects, whose design is better suited for serialization, communication, messaging, or simply an anti-corruption layer between the domain and application layer.
AutoMapper.Extensions.Microsoft.DependencyInjection
Html Manipulation
This is an agile HTML parser that builds a read/write DOM and supports plain XPATH or XSLT (you actually don’t HAVE to understand XPATH nor XSLT to use it, don’t worry…). It is a .NET code library that allows you to parse “out of the web” HTML files. The parser is very tolerant with “real world” malformed HTML. The object model is very similar to what proposes System.Xml, but for HTML documents (or streams).
Caching
CacheManager is an open source caching abstraction layer for .NET written in C#. It supports various cache providers and implements many advanced features. The main goal of the CacheManager package is to make developer’s life easier to handle even very complex caching scenarios.
With CacheManager it is possible to implement multiple layers of caching, e.g. in-process caching in front of a distributed cache, in just a few lines of code. CacheManager is not just an interface to unify the programming model for various cache providers, which will make it very easy to change the caching strategy later on in a project. It also offers additional features, like cache synchronization, concurrent updates, serialization, events, performance counters… The developer can opt-in to those features only if needed.
CacheManager.Microsoft.Extensions.Logging
CacheManager.Microsoft.Extensions.Configuration
CacheManager.Microsoft.Extensions.Caching.Memory
CacheManager.SystemRuntimeCaching
CacheManager.Serialization.Json
CacheManager.StackExchange.Redis
CacheManager.Serialization.ProtoBuf
Lazy cache is a simple,thread safe in-memory caching service
Lexer/Parser Frameworks
Tiny C# Monadic Parser Framework
A parser combinator library for C#
ANTLR (ANother Tool for Language Recognition) is a powerful parser generator for reading, processing, executing, or translating structured text or binary files.
Command Line Parsers
The ultimate command line application framework
Bot Framework
Microsoft Bot Builder is a powerful framework for constructing bots that can handle both freeform interactions and more guided ones where the possibilities are explicitly shown to the user. It is easy to use and leverages C# to provide a natural way to write bots.
Microsoft.Bot.Builder.Integration.AspNet.Core
Build Systems
The Microsoft Build Engine (MSBuild) is the build platform for .NET and Visual Studio.
Microsoft.Build.Utilities.Core
Microsoft.Build.Conversion.Core
NuGet is a free and open-source package manager designed for the Microsoft development platform.
A cross-platform build automation system with C# DSL.
Cake (C# Make) is a cross platform build automation system with a C# DSL to do things like compiling code, copy files/folders, running unit tests, compress files and build NuGet packages.
Report Engines
PdfReport.Core is a code first reporting engine, which is built on top of the iTextSharp.LGPLv2.Core and EPPlus.Core libraries.
Cryptography
The Bouncy Castle Crypto package is a C# implementation of cryptographic algorithms and protocols, it was developed by the Legion of the Bouncy Castle, a registered Australian Charity, with a little help! The Legion, and the latest goings on with this package, can be found at http://www.bouncycastle.org. In addition to providing basic cryptography algorithms, the package also provides support for CMS, TSP, X.509 certificate generation and a variety of other standards such as OpenPGP.
FNV-1a hash algorithm in C#
bcrypt is a password hashing function designed by Niels Provos and David Mazières, based on the Blowfish cipher, and presented at USENIX in 1999.[1] Besides incorporating a salt to protect against rainbow table attacks, bcrypt is an adaptive function: over time, the iteration count can be increased to make it slower, so it remains resistant to brute-force search attacks even with increasing computation power.
Rijndael256 makes encrypting data and files a breeze with the AES symmetric-key cipher Rijndael.
Fast version of Crc32 & Crc32C algorithms for .NET and .NET Core. It is up to 3x-5x times better than other “fast” implemenations. Code based on Crc32C.NET library.
Jwt.Net, a JWT (JSON Web Token) implementation for .NET
Managed .NET wrapper for unmanaged PKCS#11 libraries
Benchmarks
BenchmarkDotNet is a powerful .NET library for benchmarking. Benchmarking is really hard (especially microbenchmarking), you can easily make a mistake during performance measurements. BenchmarkDotNet will protect you from the common pitfalls (even for experienced developers) because it does all the dirty work for you: it generates an isolated project per each benchmark method, does several launches of this project, run multiple iterations of the method (include warm-up), and so on. Usually, you even shouldn’t care about a number of iterations because BenchmarkDotNet chooses it automatically to achieve the requested level of precision.
App Metrics is an open-source .NET Standard library used to record application metrics.
Template Engines
DotLiquid is a templating system ported to the .NET framework from Ruby’s Liquid Markup.
A fast, powerful, safe and lightweight text templating language and engine for .NET
A fast, powerful, CommonMark compliant, extensible Markdown processor for .NET
Reactive Extensions (Rx)
In computing, reactive programming is an asynchronous programming paradigm concerned with data streams and the propagation of change. This means that it becomes possible to express static (e.g. arrays) or dynamic (e.g. event emitters) data streams with ease via the employed programming language(s), and that an inferred dependency within the associated execution model exists, which facilitates the automatic propagation of the change involved with data flow.
Reactive collections based on Rx.Net
Command Query Responsibility Segregation (CQRS)
Simple, unambitious mediator implementation in .NET.
MediatR.Extensions.Microsoft.DependencyInjection
Docker
Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications, whether on laptops, data center VMs, or the cloud.
Exception Handling
Polly is a .NET 4.5 / .NET Standard 1.1 library that allows developers to express resilience and transient fault handling policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation and Fallback in a fluent and thread-safe manner.
Workflow Engines
Create state machines and lightweight state machine-based workflows directly in .NET code
Reflection/Expression
In .NET reflection is slow… well, kinda slow. If you need access to the members of an arbitrary type, with the type and member-names known only at runtime - then it is frankly hard (especially for DLR types). This library makes such access easy and fast.
Tired of slow .NET Reflection API? This package will let you get rid of this overhead by replacing Reflection calls with much faster delegates.
Expression tree compilation is used by wide range of tools, e.g. IoC/DI containers, Serializers, OO Mappers. But the performance of compilation with Expression.Compile() is just slow. Moreover, the compiled delegate may be slower than manually created delegate.
DateTime
Noda Time is a date and time API acting as an alternative to the built-in DateTime/DateTimeOffset etc types built into the .NET framework.
NodaTime.Serialization.JsonNet
Extensive time period calculations and individual calendar periods.
This project is a merge of several common DateTime operations on the form of extensions to System.DateTime, including natural date difference text (precise and human rounded), holidays and working days calculations on several culture locales. Feedback will be much appreciated.
Search Engines
Strongly typed interface to Elasticsearch. Fluent and classic object initializer mappings of requests and responses. Uses and exposes Elasticsearch.Net
Lucene.Net is a full-text search engine library capable of advanced text analysis, indexing, and searching. It can be used to easily add search capabilities to applications.
Object Tracking
Generate tracking information about an operation being executed.
Identity Managers
ASP.NET Core Identity is the membership system for building ASP.NET Core web applications, including membership, login, and user data. ASP.NET Core Identity allows you to add login features to your application and makes it easy to customize data about the logged in user.
Microsoft.AspNetCore.Identity.EntityFrameworkCore
Microsoft.AspNetCore.Identity.Service
Microsoft.AspNetCore.Identity.Service.EntityFrameworkCore
Microsoft.AspNetCore.Identity.Specification.Tests
OpenID Connect and OAuth 2.0 Framework for ASP.NET Core
IdentityServer4.AccessTokenValidation
Easy-to-use OpenID Connect server for ASP.NET Core
OpenIddict.EntityFrameworkCore
MailKit is an Open Source cross-platform .NET mail-client library that is based on MimeKit and optimized for mobile devices.
A .NET Fake SMTP Server
Language Integrated Query (LINQ)
re-linq Frontend: A foundation for parsing LINQ expression trees and generating queries in SQL or other languages.
LINQ to Regex library provides language integrated access to the .NET regular expressions.
Dynamic LINQ lets you express queries as text.
This project enhances LINQ to Objects with extra methods, in a manner which keeps to the spirit of LINQ.
A collection of extension methods to IQueryable and IEnumerable that enable easy searching and ranking. Searches can be performed against multiple properties and support a wide range of types
MathExtensions is a library for .NET that aims to extend the basic but yet incomplete System.Math, with simple and useful extensions methods regarding various mathematical domains, like methods for combinatorics, sequence analysis, generation and manipulation, random extractions, etc.
AspNetCore
A service API versioning library for Microsoft ASP.NET Core.
Microsoft.AspNetCore.Mvc.Versioning
Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer
The automatic type-safe REST library for Xamarin and .NET
SignalR, Incredibly simple real-time web for ASP.NET Core
Microsoft.AspNetCore.SignalR.Core
Microsoft.AspNetCore.SignalR.Client
Microsoft.AspNetCore.SignalR.Redis
Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core.
ExtCore.Data.EntityFramework.SqlServer
ExtCore.Data.EntityFramework.Sqlite
ExtCore.Data.EntityFramework.PostgreSql
Nancy is a lightweight web framework for the .Net platform, inspired by Sinatra. Nancy aim at delivering a low ceremony approach to building light, fast web applications.
Botwin is a library that allows Nancy-esque routing for use with ASP.NET Core.
AspNetCore.Health enables load balancers to monitor the status of deployed Web applications.
Warden is an open source library built to solve the problem of monitoring the resources.
A lightweight ASP.Net Core library for runtime CSS and JavaScript file management, minification, combination & compression
A runtime bundler and minifier for ASP.NET Core
AspNetCoreRateLimit is an ASP.NET Core rate limiting solution designed to control the rate of requests that clients can make to a Web API or MVC app based on IP address or client ID. The AspNetCoreRateLimit package contains an IpRateLimitMiddleware and a ClientRateLimitMiddleware, with each middleware you can set multiple limits for different scenarios like allowing an IP or Client to make a maximum number of calls in a time interval like per second, 15 minutes, etc. You can define these limits to address all requests made to an API or you can scope the limits to each API URL or HTTP verb and path.
R4MVC is a Roslyn code generator for ASP.NET Core MVC apps that creates strongly typed helpers that eliminate the use of literal strings in many places
ASP.NET Core client web browser detection extension to resolve devices, platforms, engine of the client.
Lightweight mini-profiler, designed for ASP.NET Core MVC (not System.Web) websites
SaasKit is a .NET toolkit for building SaaS (Software As A Service) applications.
The goal of the project is to help developers build SaaS products without getting in the way. It aims to be platform agnostic and as simple to use as possible.
Sieve is a simple, clean, and extensible framework for .NET Core that adds sorting, filtering, and pagination functionality out of the box. Most common use case would be for serving ASP.NET Core GET queries.
JSON Localization Resources
My.Extensions.Localization.Json
Swagger
NSwag: The Swagger API toolchain for .NET and TypeScript
NSwag.CodeGeneration.TypeScript
NSwag.SwaggerGeneration.WebApi
Swagger tooling for API’s built with ASP.NET Core. Generate beautiful API documentation, including a UI to explore and test operations, directly from your routes, controllers and models.
.NET models with JSON and YAML writers for OpenAPI specification
Bot Engine
Microsoft Bot Builder is a powerful framework for constructing bots that can handle both freeform interactions and more guided ones where the possibilities are explicitly shown to the user. It is easy to use and leverages C# to provide a natural way to write bots.
Machine Learning
ML.NET is a cross-platform open-source machine learning framework which makes machine learning accessible to .NET developers.
.NET Bindings for TensorFlow
Miscellaneous
Humanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities
(pronounced dyna-mighty) flexes DLR muscle to do meta-mazing things in .net
Enums.NET is a high-performance type-safe .NET enum utility library
A fluent, portable URL builder. To make HTTP calls off the fluent chain, check out Flurl.Http.
Simple, reliable feature toggles in .NET
A fast globbing library for .NET / .NETStandard applications. Outperforms Regex.
UnitConversion is designed to be expansible through factories or through concrete converter implementations.
Provides easy-to-use and robust fully distributed locks (using SQLServer) as well as wrappers for named system-wide locks (using WaitHandles)
What you have been waiting for. Perform a deep compare of any two .NET objects using reflection. Shows the differences between the two objects.
C# implementation of ua-parser
A library implementing different string similarity and distance measures.
Functional Extensions for C#
A powerful Dynamic Sql Query Builder supporting Sql Server, MySql, PostgreSql and Firebird
Tiny.RestClient facilitates the dialog between your API and your application. It hides all the complexity of communication, deserialisation …
An async-based GitHub API client library for .NET and .NET Core
Crontab for .NET
Extensions to LINQ to Objects
Utility libraries to interact with discs, filesystem formats and more
The client API for Event Store. Get the open source or commercial versions of Event Store server from https://eventstore.org/
Tools
Request/response Inspector middleware for ASP.NET Core. like Glimpse.