The C# and Visual Basic compilers implement support for async/await by generating code that utilizes some specific types in the underlying framework. These types include the “awaiters” used to await things (like Tasks) as well as the “builders” used in handling the lifetime of an async method’s invocation. With the Async CTP that was released for Visual Studio 2010, all of this infrastructure was implemented in DLLs named AsyncCtpLibrary*.dll (e.g. AsyncCtpLibrary.dll, AsyncCtpLibrary_Silverlight5.dll, etc.) In .NET 4.5, these types are all in mscorlib.dll.
The particular shape of the types expected by the compiler stayed the same from the Async CTP v3 to the .NET 4.5 Developer Preview and Visual Studio 11 Developer Preview. As such, you could utilize the Visual Studio 11 Developer Preview along with the corresponding AsyncCtpLibrary*.dll to target async/await with an earlier version of the Framework than .NET 4.5 (e.g. .NET 4, Silverlight 5).
However, for a variety of security and performance reasons, the shape of the types expected by the compilers has changed for the .NET 4.5 Beta and Visual Studio 11 Beta. This means that while you can absolutely use Visual Studio 11 Beta to build apps that use async/await with .NET 4.5, you are currently unable to use Visual Studio 11 Beta to build apps that use async/await against .NET 4, Silverlight 5, etc., since the compilers in Visual Studio 11 Beta are expecting differently shaped types than those in the existing AsyncCtpLibrary* DLLs.
We’re currently discussing the situation and will share more details once we have concrete plans.
Thanks for your interest and patience,
The Async CTP Team
0 comments