I thought I would share this for the C# / .NET crowd here (?), as needing to wrap and/or supply the powerful but complex avrdude is painful sometimes (at least, that's my honest opinion).
The library currently has built in support for Uno, Nano and Mega2560. Others should be relatively easy to add (definitely if they use STK500 version 1 or 2 as a protocol). Assumes default bootloaders are present.
All feedback welcome.