What

Lightweight NuGet packages with reusable source code extending core .NET functionality, typically in self-contained source files added to your projects as internal classes that can be easily kept up-to-date with NuGet.

See available packages documentation (work in progress) or the fairly extensive and ever growing list.

Why

Who doesn’t have an ever growing and ever less cohesive miscellaneous collection of helpers, extension methods and utility classes in the usual “Common.dll”? Well, the problem is that there’s really no good place for all that baggage: do we split them by actual behavioral area and create “proper” projects for them?

In most cases, that’s totally overkill and you end up in short time with the same pile of assorted files as you try to avoid setting up an entire new project to contain just a couple cohesive classes.

But, it turns out that in the vast majority of cases, those helpers are just meant for internal consumption by the actual important parts of your code. In many cases, they are just little improvements and supplements over the base class libraries, such as adding missing overloads via extension methods, adding factory methods for otherwise convoluted object initialization, etc. It’s almost inevitable that as the .NET framework and its languages evolve, existing APIs will start to look dated and lacking (i.e. lack of generics from v1 APIs, or eventually lack of async-friendly Task-based APIs once C# 5 is with us, etc.).

But with the advent of NuGet there’s a new way to maintain, evolve and share those useful little helpers: just make them content files in a NuGet package!

And thus NETFx was born: a repository of the source and accompanying unit tests for all those helpers, neatly organized (under the Extensions folder in the source tree, by target namespace being extended), deployed exclusively using NuGet, and licensed entirely under BSD for everyone to use and contribute.

How

You install NETFx nugets via the Add Library Package Reference dialog (this is easiest, since the individual package ids are fairly long and organized by extended namespace):

Note that you don’t get a single monolithic gigantic “NETFx Package”, but rather you get to pick precisely what you need and nothing more.

From the Package Manager Console, you can also just type install-package netfx-[TAB] and see a list of NETFx packages:

Or even filter by area by entering a fragment of the namespace:

And unlike most nugets, what you always get from NETFx is the actual source, as internal classes (the point of helpers!) that you build together with your own source. Need to debug it? Found a bug? No problem! The source is right *there* for you to see, patch or whatever:

 

And every NETFx has its own place for Source + Unit Tests so that anyone can read the tests and see how to use a class, contribute patches and improvements for existing ones, or even send a pull request for a new one.

Publishing new NETFx nugets has been made so straightforward that a new one can pop-up in http://nuget.org in about 15’ (time it takes to write an extension method and its unit tests).

The list is already fairly extensive, and growing all the time.

 

Read our documentation to get involved and contribute fixes or new netfx extensions! We even have a project template to make the entire process enjoyable Smile

 

This project is sponsored by Clarius Labs.

Last edited Aug 6, 2012 at 3:54 PM by dcazzulino, version 25