I'm attempting to create a Portable Class Library in Visual Studio 2012 to be used for a Windows 8 Store app and a Windows Phone 8 app.
I'm getting the following error:
'await' requires that the type 'Windows.Foundation.IAsyncOperation' have a suitable GetAwaiter method. Are you missing a using directive for 'System'?
At this line of code:
StorageFolder guidesInstallFolder = await Package.Current.InstalledLocation.GetFolderAsync(guidesFolder);
My Portable Class Library is targeted at .NET Framework 4.5, Windows Phone 8 and .NET for Windows Store apps.
I don't get this error for this line of code in a pure Windows Phone 8 project, and I don't get it in a Windows Store app either so I don't understand why it won't work in my PCL.
The GetAwaiter is an extension method in the class WindowsRuntimeSystemExtensions which is in System.Runtime.WindowsRuntime.dll. Using the Object Browser I can see this dll is available in the .NET for Windows Store apps component set and in the Windows Phone 8 component set but not in the .NET Portable Subset. I just don't understand why it wouldn't be in the Portable Subset if it's available in both my targeted platforms.
You need the Async targetting pack on NuGet here for async/await to work for that combination of targets.
UPDATE:
Try this (nonsense) code snippet to check if it is using async/await correctly.
However even if you get past the first problem of
async/await
not being available, thePackage
API you are calling is not available in the PCL.The portable subset is not just everything that's common. Every member of the PCL is there deliberately, and there are a good number of members not included.
If a profile is missing something you need, request Microsoft to add it (via MSConnect or on the Q&A tab of the old-but-still-monitored PCL page).