Git Product home page Git Product logo

best-nuget-packages's Introduction

My favourite Nuget packages for .NET development

There are some Nuget packages which I just seem to come back to every single time, because they solve a particular problem for me and they do so in a way which resonates with me. I thought I would put together a list of all my favourite Nuget packages. Nuget can be used to add all sort of libraries to your project, such as Javascript or CSS frameworks, but this list will be purely for .NET development. I am also excluding the obvious (Microsoft) ones such as MVC, Entity Framework, etc. This is about all those other little gems.

The stalwarts

These are the main Nuget packages I seem to use in every single project I do.

Fluent Validation

Around 2 years ago (in the beginning of this blog) I started off a series of blog posts about integrating Fluent Validation into your ASP.NET MVC application. To this day those are still some of my most read blog posts and Fluent Validation remains my go-to library for adding validation to my ASP.NET MVC and Web API applications. The ease of use and the fact that I can inject dependencies - and therefore more easily unit test my validation classes - are the killer features for me.

PM> Install-Package FluentValidation

Find it on GitHub at https://github.com/JeremySkinner/FluentValidation

NSubstitute

I used to be a big fan of Moq but at a stage a couple of years ago it seemed to become a bit stagnant and there was not much development happening on it, so I looked around for a replacement and found NSubstitute. I have used it ever since. Moq seems to have picked up momentum again in the meantime but I am sticking with NSubstitute as it has served me well. Whenever I create a new test project this is the first package I install.

PM> Install-Package NSubstitute

Find it on GitHub at http://nsubstitute.github.io/

Fluent Assertions

The next package I install in a test project after NSubstitute is Fluent Assertions. The breadth of assertions you can do is breathtaking and saves me a lot of time.

PM> Install-Package FluentAssertions

Find it on GitHub at https://github.com/dennisdoomen/fluentassertions

Autofac

I used another IoC container before I used Autofac but I honestly cannot event remember which one it was, that is how long I have used Autofac and how much I like it. I am sure there are other other dependency injection libraries which are perhaps more nimble and faster but Autofac is plenty fast enough and it has been able to do everything I have ever asked of it.

It is available as a PCL so I can use it pretty much anywhere, it has plenty of extension points and the number of integrations with other libraries means I don't have to spend time rolling my own integrations and can instead spend that time to add features to my application. Autofac also seems to be one of the handful of libraries which ASP.NET 5 is supporting out of the box.

PM> Install-Package Autofac

Find it on GitHub at https://github.com/autofac/Autofac

The tiny gems

I use these Nuget packages less often because they mostly solve very specific issues which are not present on every single project. They are however packages I highly recommend you look at

Refit

I don't think I use any "official" API wrappers anymore. Whenever I need to integrate with a REST API I just install Refit and create a quick wrapper around the specific API calls I am interested in. I use Postman to test the API call, copy the JSON input or output from the API call to the clipboard and use Visual Studio's "Paste JSON as classes"feature to create strongly typed classes for the JSON and then create an interface with the API definition for Refit to use. And there you have a custom API wrapper in minutes!

The number one reason I use Refit is that because the API definition is defined as a C# interface it is super easy to always use it with dependency injection and also to mock the API for unit tests. The other big reason is that it is a PCL so I can use it pretty much anywhere.

PM> Install-Package refit

Find it on GitHub at https://github.com/paulcbetts/refit

Travis.UriTemplates

I became aware of this one just last week. Oh boy if I had a penny for every time I wished there was an easier way to construct URIs…. Well there is. If you have any need for building URIs then you better install this library fast. It is an awesome little gem!

PM> Install-Package Tavis.UriTemplates

Find it on GitHub at https://github.com/tavis-software/Tavis.UriTemplates

NBuilder

Sometimes you need to build a bunch of sample data for unit testing or for seed data for a database. NBuilder makes the job of creating those a breeze.

If you want realistic looking data for seeding a database you can use it in conjunction with Faker.NET (though Faker.NET has not seen any enhancement for the past 2 year it still does its job well…)

PM> Install-Package NBuilder

Find it on GitHub at https://github.com/garethdown44/nbuilder/

NodaTime

If you have ever done time and timezone related programming you will know what a pain in the ass it can be. NodaTime tries to make that process a little bit better. You can read more about the rationale behind NodaTime. From a unit testing perspective NodaTime makes the process also a bit easier as it exposes an IClock interface to get the current time, which can be mocked or you can even use their own FakeClock class to assist with testing. Also, NodaTime was written by the great John Skeet himself.

PM> Install-Package NodaTime

Find it on Google Code at https://code.google.com/p/noda-time/

Humanizer

Want to convert a time to something more meaningful like 'Updated 5 seconds ago'? Want to title case a string? Want to display more human-friendly names for enums? Want to pluralize strings? Humanizer have got you covered for those and a whole lot more. The list just goes on and on, so best you check out their project page on GitHub to see what it can do for you.

PM> Install-Package Humanizer

Find it on GitHub at https://github.com/MehdiK/Humanizer

Parsing files

I am busy with a project where I need to process all sorts of files, specifically Markdown, HTML and YAML. Well there are packages to help you with all of those :)

For Markdown I seem to have settled on CommonMark.NET (on GitHub):

PM> Install-Package CommonMark.NET

For HTML parsing I use AngleSharp, but HtmlAgilityPack is also awesome and a bit more mature and may be a better option for you.

PM> Install-Package AngleSharp

PM> Install-Package HtmlAgilityPack

For parsing YAML, YamlDotNet suits my needs perfectly as it is still being actively developed (many of the other ones aren't) and also allows me to stronly type YAML structures

PM> Install-Package YamlDotNet

Conclusion

That's it. This is not an exhaustive list of all the "best" Nuget packages, but merely the ones I find pretty useful on a regular basis. Special thanks to all the authors and contributors to those packages - you make my life so much easier! :)

List of the Best Free Visual Studio Extensions

FacebookTwitterLinkedInEmail

Visual Studio is a great development environment. But with a few extensions, it will be even better. There's a lot of free extensions out there, that will improve the experience of writing code and even help you reduce bugs too. We have collected a list of the best free extensions for Visual Studio.

[

Roslynator

](https://marketplace.visualstudio.com/items?itemName=josefpihrt.Roslynator2017)

Almost 400 analyzers, refactorings and code fixes for C#, powered by the new Roslyn compiler bundled with Visual Studio 2017. What's not to like? Roslynator is probably the closest you will get to ReSharper for free.

[

SideWaffle Template Pack

](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.SideWaffleTemplatePack)

Let's face it. The number of Visual Studio project templates available out of the box are pretty limited. SideWaffle fixes this with a lot of new project and item templates.

[

Power Commands for Visual Studio

](https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.PowerCommandsforVisualStudio)

Power Commands adds a good amount of functionality to Visual Studio. The focus of this extension is primarily around navigating the IDE and combining multiple clicks into one. You won't be able to live without all these small improvements once installed.

[

File Nesting

](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.FileNesting)

You know how web.release.config files nest nicely beneath web.config? The File Nesting extension adds this behavior for all types of files. The perfect way to clean up the solution explorer.

[

elmah.io

](https://marketplace.visualstudio.com/items?itemName=ThomasArdal.elmahio)

Ever wanted to browse your elmah.io logs, without having to leave Visual Studio? Well now you can, using our very own Visual Studio extension.

[

Visual Studio Spell Checker

](https://marketplace.visualstudio.com/items?itemName=EWoodruff.VisualStudioSpellCheckerVS2017andLater)

Spell checking your website is important to pretty much every website developer. Why not let Visual Studio do it while you type, using this free spell checker.

[

File Icons

](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.FileIcons)

Showing correct file icons in the solution explorer doesn't sound that important. You will quickly realize, after installing this extension, that it means the world when navigating project files.

Would your users appreciate fewer errors?

️ Reduce errors by 90% with elmah.io error logging and uptime monitoring

[

Image Optimizer

](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.ImageOptimizer)

Another great extension from Mads Kristensen is Image Optimizer. I previously used online tools to optimize images. Now I right click an image inside Visual Studio and heavily reduce image size using a single click.

[

Productivity Power Tools

](https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.ProductivityPowerPack2017)

Much like Power Commands, Productivity Tools adds a lot of small improvements to the IDE. Productivity Tools is really "just" an umbrella for a lot of smaller extensions, that can be installed separately.

[

SlowCheetah

](https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.SlowCheetah-XMLTransforms)

Web.config transformations changed the way we configured websites. I remember creating custom configuration tools back in the day. With SlowCheetah you will be able to transform any xml file based on the active configuration.

[

Web Essentials

](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.WebExtensionPack2017)

Another popular umbrella extension is Web Essentials. We already touched on some of the extensions installed by Web Essentials, but we still believe that this is worth a mention. So many web developer improvements go into Visual Studio, when installing WE.

[

CodeMaid

](https://marketplace.visualstudio.com/items?itemName=SteveCadwallader.CodeMaid)

Code cleanup, restructuring as well as a range of other helpful tools is what you will receive after installing CodeMaid. The nice thing about CodeMaid is, that it works on multiple file types and not only C#.

![](data:image/*;base64,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

best-nuget-packages's People

Contributors

sureshsubudhi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.