How can I use the async keywords in a project targeting.net 4.0
You want the Microsoft.Bcl.Async package. That's a properly released, non-CTP package that is stable. This also requires VS2012 since an updated compiler is needed to understand async
and await
.
In theory one could use older tools from VS2010 along with the older CTP library, I'd strongly recommend that you don't - it has bugs and the installation itself is a hit-or-miss.
I have written a .NET 4.5 plugin using async
for a .NET 4.0 application, and to my surprise this actually worked!
I think this worked because I have .NET 4.5 installed, which replaced the .NET 4 runtime with an updated one, which is used both for .NET 4.0 and .NET 4.5. Then my plugin was loaded with reflection using Assembly.Load(...)
or similar. I tried both async/await
and Environment.CurrentManagedThreadId
(a .NET 4.5 property), and both worked.