8

Windows 8 ストア アプリと Windows Phone 8 アプリに使用するポータブル クラス ライブラリを Visual Studio 2012 で作成しようとしています。

次のエラーが表示されます。

'await' では、タイプ 'Windows.Foundation.IAsyncOperation' に適切な GetAwaiter メソッドが必要です。「システム」の使用ディレクティブがありませんか?

このコード行で:

StorageFolder guidesInstallFolder = await Package.Current.InstalledLocation.GetFolderAsync(guidesFolder);

My Portable Class Library は、.NET Framework 4.5、Windows Phone 8、および .NET for Windows Store アプリを対象としています。

純粋な Windows Phone 8 プロジェクトでは、このコード行でこのエラーは発生しません。また、Windows ストア アプリでも発生しないため、PCL で動作しない理由がわかりません。

GetAwaiter は、System.Runtime.WindowsRuntime.dll にあるクラス WindowsRuntimeSystemExtensions の拡張メソッドです。オブジェクト ブラウザーを使用すると、この dll が.NET for Windows Store アプリコンポーネント セットとWindows Phone 8コンポーネント セットで利用可能ですが、.NET Portable Subset では利用できないことがわかります。両方のターゲット プラットフォームで利用できる場合、ポータブル サブセットに含まれない理由がわかりません。

4

2 に答える 2

3

そのターゲットの組み合わせでasync/awaitが機能するには、NuGetのAsyncターゲティングパックが必要です。

アップデート:

この(ナンセンスな)コードスニペットを試して、async/awaitが正しく使用されているかどうかを確認してください。

public async void MyMethodAsync()
{
    var req = WebRequest.Create("");
    await req.GetRequestStreamAsync();
}

async/awaitただし、使用できない という最初の問題を乗り越えたとしても、Package呼び出しているAPIはPCLで使用できません。

于 2012-12-15T23:06:13.670 に答える
1

両方のターゲット プラットフォームで利用できる場合、ポータブル サブセットに含まれない理由がわかりません。

移植可能なサブセットは、一般的なものだけではありません。PCL のすべてのメンバーは意図的に参加しており、含まれていないメンバーもかなりの数います。

プロファイルに必要なものが不足している場合は、Microsoft に追加するように依頼してください (MSConnect 経由、または古いがまだ監視されている PCL ページの [Q&A] タブで)。

于 2012-12-15T23:00:43.950 に答える