Post headline image

Important Changes to our System.Threading.Tasks Port for Older .NET Platforms

[Apologies if you are reading this in Visual Studio and it looks weird. Visual Studio sends an IE7 UserAgent, and our site was designed for modern browsers. For the best experience, copy and paste this URL into your real browser.]

Since 2011, I have provided a NuGet package that back-ported Microsoft's Task Parallel Library to platforms that were still viable at the time .NET 4.0 was released. This was possible because of the amazing work of the Mono team in adding these features to the Mono platform. I was able to make some per-platform modifications and still have everything work as intended.

After starting with a Windows Phone 7-only port, I changed the package name to System.Threading.Tasks, when I expanded support to other flavors of .NET. At the time, it made perfect sense, because if you were going to search for how to leverage that new namespace in .NET 4.0 on older platforms, that would probably be the term you'd search for.

Fast forward three years. Microsoft has embraced open source, and a better way to ship .NET 5.0. Instead of a single installer dumping a bunch of assemblies to your hard drive, the .NET 5.0 assemblies will be individually shipped via NuGet. At the time of this writing, the only thing that stands in the way of that possibility is the fact that Microsoft needs this package name for their official bits.

To help facilitate this change, I've moved the package to System.Threading.Tasks.Unofficial. I've also updated the current System.Threading.Tasks package to version 3.1, which now essentially redirects you to future versions of the package. Version 3.1 (as well as all prior versions) will remain in their old location after Microsoft takes over, so that apps using the package will continue to function.

There is one thing to be aware of, though. The current version of NuGet will show you all available packages in the list, even if your project is not compatible with those packages. That will change in the next major NuGet release, which will be supported in Visual Studio 2012, 2013, and "VS14". But in the meantime, this will likely cause some confusion... in fact, you may be reading this from the README Microsoft put into their version of the package.

If you're reading this because you want to be using the backported version and not Microsoft's version for .NET 5.0, then the least confusing option for you is going to be to uninstall the System.Threading.Tasks package, and install System.Threading.Tasks.Unofficial. That way you get whatever updates you need moving forward.

I'm excited for the future of .NET, and am happy that Microsoft and I were able to work together to find a solution that would work for current users. If you have any suggestions or feedback for future versions of this package, please click the "Contact us!" below and drop me a note.