I have used a lot of free .NET libraries, some from Microsoft itself! Which ones have you found the most useful?
Mathematics
Package managers for external libraries
Build Tools
Dependency Injection/Inversion of Control
Logging
Validation
Design by Contract
Compression
Ajax
Data Mapper
ORM
Charting/Graphics
PDF Creators/Generators
Unit Testing/Mocking
Automated Web Testing
Misc Testing/Quality Support/Behavior Driven Development (BDD)
URL Rewriting
Web Debugging
Controls
MS Word/Excel Documents Manipulation
Social Media
Serialisation
Machine learning
Unclassified
[EDIT]
Please provide links to these free libraries as well.
Once we have a huge list of this, it can be arranged in categories!
Please do not mention .NET Applications/EXEs here.
This question has historical significance, but is not a good example of an appropriate question. Read and learn from this post, but please do not use it as evidence that you can ask similar questions.
See the FAQ [109] for more info.
ELMAH [1]
ELMAH (Error Logging Modules and Handlers) is an application-wide error logging facility that is completely pluggable. It can be dynamically added to a running ASP.NET web application, or even all ASP.NET web applications on a machine, without any need for re-compilation or re-deployment.
Update: To work with Asp.Net MVC [2]
[1] http://code.google.com/p/elmah/The Microsoft .NET Framework [1]. I'd never get any work done without its libraries.
[1] http://msdn.microsoft.com/en-us/netframework/aa569263.aspxIn-process database servers make my life easier.
SQLite [1]
SQL Server Compact Edition [2]
[1] http://www.sqlite.org/Microsoft Chart Controls [1] for Microsoft .NET Framework 3.5
[1] http://www.microsoft.com/downloads/details.aspx?familyid=130F7986-BF49-4FE5-9CA8-910AE6EA442C&displaylang=enI have found that the C5 Collections [1] library is the most extensive and well designed collections framework for .NET.
[1] http://www.itu.dk/research/c5/For me, by far and away the single most useful library is:
Perfect for websites on a shared hosting package with fairly "light" database needs.
[1] http://sqlite.phxsoftware.com/AForge.net [1]
AForge.NET is a C# framework designed for developers and researchers in the fields of Computer Vision and Artificial Intelligence - image processing, neural networks, genetic algorithms, machine learning, robotics, etc.
[1] http://www.aforgenet.com/framework/Word / Documents:
Compression
Excel Spreadsheets
Excel XML Writer [3] allows creation of .XLS (Excel) files. No Microsoft Office necessary. Been a while since it has been updated. It also provides code generator [4] to create code from already created XLS file (saved as xml). Haven't tested this but looks very promising. Too bad author is long time gone.
Excel Reader [5] allows creation/reading of .XLS (Excel) files. No Microsoft Office necessary. Been a while since it has been updated.
Excel Package [6] allows creation/reading of .XLSX (Excel 2007) files. No Microsoft Office necessary. Author is gone so it's out of date.
EPPlus [7] is based on Excel Package and allows creation/reading of .XLSX (Excel 2007). It is actually my favorite when it comes to Excel. It's actively developed and so far have been able to do most things i needed (which I can't say the same about 3-5 packages), but it's only limited to .XLSX (which from one side is good thing). I'm still testing it thou :-)
Dependency Injection: Ninject [1]
Web MVC framework: ASP.NET MVC [2] (1.0 released yesterday!)
Client MVP-ish (or is that MVVM?) framework: patterns & practices Composite Application Guidance for WPF and Silverlight, aka Prism [3] (v2 released Feb 2009)
[1] http://ninject.org/Postsharp [1] for aspect-oriented programming [2] (AOP) or policy injection.
[1] http://www.postsharp.org/Microsoft Chart Controls for WinForms [1]
A free high quality charting library for .NET supported by Microsoft.
[1] http://code.msdn.microsoft.com/mschartHow about:
Recaptcha [1] - captcha control
url rewriter [2] - open source URL rewriting
UrlRewriting.Net [3] - another URL rewriter
GoogleMaps.Subgurim.NET [4] - Google maps server control
[1] http://recaptcha.net/plugins/aspnet/I've created a new library for making it easier to consume REST APIs in .NET: RestSharp [1]
[1] http://restsharp.orgNini [1] is an uncommonly powerful .NET configuration library designed to help build highly configurable applications quickly. Generally it is about INI files.
[1] http://sourceforge.net/projects/nini/Krypton Toolkit [1] - Windows Forms Controls
[1] http://www.componentfactory.com/free-windows-forms-controls.phpI do not think these have been mentioned
NBuilder [1]
"Through a fluent, extensible interface, NBuilder allows you to rapidly create test data, automatically assigning values to properties and public fields that are of type of the built in .NET data types (e.g. ints and strings). NBuilder allows you to override for properties you are interested in using lambda expressions."
[1] http://nbuilder.org/I'd like to add AutoMapper [1] to the list, as tooling. It's so useful if you are doing any kind of application development where you are mapping DTOs or Update/View Models to domain object. It is convention based, and lets you do some awesome object mapping so easily.
[1] http://www.codeplex.com/AutoMapperOpenNETCF [1], essential if you're working with Compact Framework and makes work there much less gruesome.
[1] http://opennetcf.com/I can't believe nobody suggested FluentValidation [1] so far.
[1] http://fluentvalidation.codeplex.com/For 3D graphics OpenTK is probably the best for OpenGL [1].
OpenTK [2] (OpenGL for .NET and Mono [3].)
SlimDx [4] (Managed DirectX, great altenative to XNA [5].)
[1] http://en.wikipedia.org/wiki/OpenGLUnclassified (specifically, serialization)
ExcelLibrary [1] is a really light and simple library to create and read .xls file. It has little formatting options though.
Code example to export a dataset to an Excel file :
ExcelLibrary.DataSetHelper.CreateWorkbook(@"C:\report.xls", myDataset);
[1] http://code.google.com/p/excellibrary/Since you added LinqToTwitter I think it would only be fair to add the following libraries
A .NET client library for the Facebook API that allows developers to create Facebook Applications in C# and VB.NET with support for ASP.NET and ASP.NET MVC.
Facebook Developer Toolkit [2]
This toolkit is provided as a Facebook Client Library similar to Facebook’s PHP Client Library or Facebook’s javascript library. The goal is to enable .NET developers to quickly and easily leverage the various features of the Facebook Platform.
[1] http://facebook.codeplex.com/For all your syndication & social networking needs
I'd add The Object Guy's .NET Logging Framework [1] (Bitfactory.Logging).
Compared to many others, it's quite lightweight - extremely quick and easy to set up, and will more than cover all the necessary bases for many projects that don't want/need the complexity of some other logging frameworks.
[1] http://www.theobjectguy.com/DotNetLog/NAudio [1] is audio and MIDI library.
Features:
PetaPoco [1], a tiny, fast, single-file micro-ORM similar to dapper-dot-net
[1] http://www.toptensoftware.com/petapoco/DevExpress has 60 free controls (both ASP.NET and WinForms)... definitely check them out...
DevExpress 60 Free Controls [1]
Thanks :)
[1] http://www.devexpress.com/Products/Free/WebRegistration60/You've got all of my favorite libraries covered. Here is my humble attempt to share a collection of utilities I wrote over the years and reused across various projects:
My.Utilities Class Library [1]
This collection includes helper classes for ASP.NET web forms (time localization, etc), Windows services, error reporting, and more. Please read help file for detailed description and examples.
UPDATE: I just discovered a multi-purpose utilities library [2] by James Newton-King, which looks pretty handy.
[1] http://alekdavis.blogspot.com/2009/06/myutilities-class-library.htmlLuaInterface [1]
If you want to embed a small, fast, easy to learn and very poverful scripting language in .NET applications, this is the way to go.
Visual Web Gui [2]
The SDK includes the complete WinForms Toolkit, 58 WinForms Controls and integration into ASP.NET. It also includes the revolutionary Visual WebGui runtime which enables desktop application-like responsiveness and heavy-lifting abilities for data centric web applications supporting multiple presentation layers* from the same source code.
[1] http://code.google.com/p/luainterface/nHibernate sharp zLib
Code generation and O/R Mapping [1]: My Generation [2].
(Sorry if this has already been posted.)
[1] http://en.wikipedia.org/wiki/Object-relational_mappingOpen Source Enterprise Service Bus Projects:
Mass Transit - http://masstransit.pbworks.com/
NServiceBus - http://www.nservicebus.com/
Spark View Engine [1] - a really good ASP.NET MVC (and not only) open source view engine.
[1] http://sparkviewengine.com/XML-RPC.NET [1] by Cook Computing - A great open source XML-RPC library for dealing with services like Pingbacks and MetaWeblog API.
NVelocity [2] by the Castle Project - Super powerful templating library.
Janrain OpenID library
More of an XNA specific one but Farseer Physics [1] is a great XNA 2D physics library.
[1] http://farseerphysics.codeplex.com/HTML Agility Pack [1]. For scraping HTML and accesing it as XML.
ZedGraph [2]. For charting in web or Windows Forms [3].
[1] http://www.codeplex.com/htmlagilitypackIt may push the boundaries of what's considered a "library", but as a longtime advocate of embedding scripting languages into LOB [1] applications, I'd say IronPython [2].
Disclaimer: I'm also biased. :)
[1] http://en.wikipedia.org/wiki/Line%5Fof%5FbusinessSharpNLP [1] Handy for a spot of Natural Language Processing
NCrontab [2] or ncron [3] Handy for simple scheduling
[1] http://sharpnlp.codeplex.com/Noticed NuGet was added as a package manager
OpenWrap [1] - its another open source package manager (I am not sure if this has been mentioned before)
[1] https://github.com/openrasta/openwraptwo other cool free libraries I haven't seen in the list yet:
And I don't remember if someone mentions Json.NET [3]... If not, here's the link !
[1] http://npoi.codeplex.com/SharpPcap [1] - .NET pcap wrapper to capture and parse network packets
[1] http://sourceforge.net/projects/sharppcap/IBatis [1] is also XML-based Object/Relational mapping and persistence framework as well as a data access abstraction layer.This framework is available for .Net as well as Java too.
[1] http://ibatis.apache.org/NodeXL [1] is a great open source library for computing and visualizing Network graphs. It includes an Excel template and a .NET library with a presentation library in WPF.
[1] http://nodexl.codeplex.com/Another useful ORM framework: ADO.NET Entity Framework [1]
[1] http://msdn.microsoft.com/en-us/library/bb399572.aspxCaliburn [1] (a client framework for WPF and Silverlight) should certainly be in here.
[1] http://caliburn.codeplex.com/I found usefull the following:
CruiseControl.Net ? - I don't think that's listed already?
BlogEngine.Net [1]
Blogger APIs [2]
Google Chart API [3]
[1] http://blogengine.codeplex.com/releases/view/39387LinFu [1], a framework that adds mixins, inversion of control, and AOP (see also the CodeProject articles [2].)
[1] http://github.com/philiplaureano/LinFuDotNetTransitions [1] is a library that does control animation and transitions in a WinForm application. Very smooth and easy to use.
[1] http://code.google.com/p/dot-net-transitions/FileHelpers - http://filehelpers.sourceforge.net/ A Professional way to handle csv files and other separated documents into objects.
Xsd2Code - http://xsd2code.codeplex.com/ Good one to deal with XMLs. You can create objects from Schema and a professional way to read and write XML.
Sprite and Image Optimization Framework [1] for optimizing the website images
Currently still at Preview 2
It's a part of the ASP.NET MVC Framework project on codeplex, Works fine with WebForms too
[1] http://aspnet.codeplex.com/releases/view/50869I think FluentMigrator [1] for database migrations is one of the most useful libraries out there. It's based on Ruby Migrations and is a great way to version control database changes.
[1] https://github.com/schambers/fluentmigrator/uhttpsharp [1] - a very basic embedded http server for .net.
[1] http://code.google.com/p/uhttpsharp/Postal [1], this is a useful email generator based on MVC 3 and the Razor syntax. Provides an easy way of sending emails as well as dynamically creating emails.
[1] http://aboutcode.net/postal/ORM - Sooda (http://sooda.sourceforge.net/)
Sooda is object-relational mapping [1] software for the .NET (http://msdn.microsoft.com/net) environment. It lets you automatically generate an object-oriented data access layer (DAL) for your application. Instead of writing SQL code, you can now focus on writing business rules in object-oriented .NET languages.
Sooda is an open source software distributed under the terms of the BSD license.
I strongly recomend NLog which is very easy to use and very fast.
[1] http://en.wikipedia.org/wiki/Object-relational%5FmappingFor me:
Microsoft Learning Components from Microsoft's SharePoint Learning Kit (www.codeplex.com/SLK) (E-Learning/SCORM libraries).
FreeImage.Net (freeimage.sourceforge.net/download.html) (.NET wrapper for FreeImage) -- I use this to get 4:4:4 subsampling for saving JPEGs.
(Can't post proper links yet.) :)
These are the ones of those listed that I've found useful:
(We use another O/RM, but it's no longer maintained.)
This is not to say that I've fully evaluated all of the alternatives!
Other libraries of note:
HtmlAgilityPack [1] (easy parsing of HTML)
Wow, this is hard if you leave out the EXEs and add-ins! :)
[1] http://www.codeplex.com/htmlagilitypackMath.NET Iridium
From their homepage:
Iridium is the numerical foundation of Math.NET, aiming to provide commonly used mathematical elements for scientific numerical computations. It offers the infrastructure for basic numerics, linear algebra, random generators and distributions, integral transformations, etc.
What I've used it for is PCA (Principal Component Analysis) (eigenvalue decomposition) which worked like a charm. License: LGPL. Self-contained (no extra dependencies).
Link: http://www.mathdotnet.com/Iridium.aspx
Quartz.NET [1] - Enterprise Job Scheduler for the .NET Platform.
[1] http://quartznet.sourceforge.net/The Fast Artificial Neural Network Library (FANN) found at http://leenissen.dk/fann/ is great.
Nice list all.
Two that have not been mentioned that I use a lot are:
Flee -- Expression Evaluator [1]
[1] http://www.codeplex.com/FleeI use the Spring Framework [1] and quite like it for dependency injection.
It can do most of every sub category you specified out of the box but does not have any Ajax [2] support. For that I use jQuery [3] and ASP.NET AJAX [4].
[1] http://www.springframework.net/The Ventaur Web Page Security project (available here: http://www.codeproject.com/KB/web-security/WebPageSecurity%5Fv2.aspx) is incredibly useful for (ASP, admittedly) .NET.
Automated web testing: Selenium [1]. It has support for .NET [2].
[1] http://seleniumhq.orgI can't see a link for mbUnit [1] which is a powerful alternative to NUnit [2].
[1] http://www.mbunit.com/Please correct me if I go wrong with Microsoft.ReportViewer [1].
[1] http://www.gotreportviewer.com/NBug [1] (Open source) - Automated bug, error, and exception reporting tool (with minidump generation capabilities). We use it most of our dekstop applications/projects (once it was just an internal tool).
[1] http://www.nbusy.com/projects/nbugNDesk.Options [1], Command line arguments parser.
Examples here [2]
[1] http://www.ndesk.org/OptionsCaliburn.Micro [1] - A small, yet powerful framework designed for WPF, Silverlight and WP7.
NotifyPropertyWeaver [2] - Uses IL weaving to inject INotifyPropertyChanged code into properties.
[1] http://caliburnmicro.codeplex.com/PDF Clown for PDF creation/manipulation.
http://www.stefanochizzolini.it/en/projects/clown/index.html
Math.NET Numerics [1] - From the homepage,
Math.NET Numerics is an open source numerical library for the .NET Framework and Mono.
Numerics is the numerical foundation of the Math.NET project, aiming to provide methods and algorithms for numerical computations in science, engineering and every day use. Covered topics include special functions, linear algebra, probability models, random numbers, interpolation, integral transforms and more.
Numerics is the result of merging dnAnalytics with Math.NET Iridium and is intended to replace both. It targets Microsoft .Net 4.0 and Mono, and in addition to a purely managed implementation will also support native hardware optimization.
Piczard FREE Community Edition [1] - .NET image manipulation library (WYSIWYG image crop, resize, rotate/flip, color adjust, etc...)
[1] http://piczard.comSharp2Word [1] is the .NET version of java2word [2] project. Sharp2Word is an open source project which can help you to write Word 2003 XML.
[1] http://code.google.com/p/sharp2word/Wintellect's Power Collections for .NET [1] provide several nice complementing generic collections and algorithms to the .NET framework ones, including (but not limited to): Deque, Bag, OrderedBag, Set, OrderedSet, Binary Search, Generate Permutations, etc.
Could go in the same category as C5 Collections.
[1] http://powercollections.codeplex.com/Here is our free stuff (from Kellerman Software):
Free Wrapper for SharpZip that zips directories: http://www.kellermansoftware.com/p-19-free-sharp-zip-wrapper.aspx
Library to perform deep compare of two .net objects: http://comparenetobjects.codeplex.com/
Library to run NUnit on Windows Phone 7 http://nunitwindowsphone7.codeplex.com/
Genuilder - Amazing code transformation library allowing creation of DSL, syntax enhancements AOP - http://genuilder.codeplex.com/
There are a couple of other ORMs that I think should make this list:
CoolStorage [1] is one. It works on iPhone and Android as well (using Mono) which is pretty cool.
Another is Simple.Data [2] which looks very much like Active Record of RoR fame.
[1] http://viciproject.com/wiki/projects/coolstorage/homeTake a look at the data mapper I have on codeplex, Mapper Extensions [1]. Feel free to add it to the list if you find it useful :)
[1] http://mapperextensions.codeplex.com/What about .NET PowerCollections? Or are C5 Collections which are already listed better?
More ORMS
Spell Checker NHunspell [1] (.NET Wrapper of the OpenOffice spell checker Hunspell [2]).
[1] http://nhunspell.sourceforge.netCharting
Winforms Controls
ASP.NET Controls
NMock2 for unit-testing/mocking. NMock2 [1]
Lucene.NET: an open-source .NET port of a popular search engine API. Lucene.NET [2]
[1] http://www.nmock.org/Zodiac.NET [1] is a good framework for building forms, surveys and questionnaires from XML.
[1] http://www.mentor-logic.com/index.php/products/components/zodiacnetI would also recommend the book
:Windows Developer Power Tools: Turbocharge Windows Development with More Than 140 Free and Open Source Tools (Paperback)
Not only does it list a lot of tools it also provides information on how to use them etc. in one place.
link text [1]
[1] http://rads.stackoverflow.com/amzn/click/0596527543Some that haven't been mentioned:
Fluent NHibernate [1] offers a statically compiled mapping alternative to NHibernate's XML mappings. Castle's ActiveRecord [2] is a great implementation of the active record mapping pattern.
[1] http://fluentnhibernate.org/I've found that SharpZipLib is slow and doesn't compress nearly as good as winzip. I've used the C# version of 7-zip's LZMA algorithm is muuuch better.
NUnit [1]
SharpZipLib [2]
Log4Net [3]
[1] http://www.nunit.org/