I strongly believe that the MonoTorrent library can do this, but probably due to the lack of documentation that I could not get to work.
For starters, MonoTorrent seems to successfully download the original torrents using the following code: https://smuxi.im/wiki/monotorrent/Managing_Torrents
But due to the increasing popularity of Magnet Links, I would also like to use magnetic links . The "trick" of getting .torrent from them (for example, using those generated by ΞΌTorrent) does not work for me even when using the same code as above. It remains such that it is 1-3 peers per second, but does not make progress : 
StackOverflow's best question / answer on this topic was MonoTorrent - a link to a magnet on a Torrent file , but, unfortunately, the answer did not even correspond to the MonoTorrent constructors, which are as follows:
public TorrentManager(Torrent torrent, string savePath, TorrentSettings settings); public TorrentManager(MagnetLink magnetLink, string savePath, TorrentSettings settings, string torrentSave); public TorrentManager(Torrent torrent, string savePath, TorrentSettings settings, string baseDirectory); public TorrentManager(InfoHash infoHash, string savePath, TorrentSettings settings, string torrentSave, IList<RawTrackerTier> announces);
Finally, I went to try another code, apparently you need to either pass it MagnetLink or InfoHash, so I gave it a command with InfoHash as follows:
ClientEngine engine; TorrentManager manager; string savePath; public TorrentDownload(string savePath) { this.engine = new ClientEngine(new EngineSettings()); this.savePath = savePath; } public void DownloadMagnet(string hash) { manager = new TorrentManager(InfoHash.FromHex(hash), savePath, new TorrentSettings(), savePath, new List<RawTrackerTier>()); engine.Register(manager); manager.Start(); }
Did I miss something that my download didn't even start ? No errors / failures