WinRTライブラリの型を使用しようとしているようです。これは、StorageFile
クラスのドキュメントに、Metroにのみ適用され、にあると記載されているためですWindows.Storage
。
このブログ投稿では、それを構築する方法について説明していますが、手動のプロセスのようです。また、エラーの原因についても詳しく説明します。
awaitキーワードを使用すると、コンパイラはこのインターフェイスでGetAwaiterメソッドを検索します。IAsyncOperationはGetAwaiterメソッドを定義していないため、コンパイラは拡張メソッドを探します。
基本的に、次への参照を追加する必要があるようです。System.Runtime.WindowsRuntime.dll
時間をかけて彼のブログ投稿を読んでください。ただし、わかりやすくするために重要な部分をここに記載します。
以下のブログコンテンツは、不用意に盗聴されています
まず、メモ帳で、EnumDevices.csに次のC#ソースコードを作成しました。
using System;
using System.Threading.Tasks;
using Windows.Devices.Enumeration;
using Windows.Foundation;
class App {
static void Main() {
EnumDevices().Wait();
}
private static async Task EnumDevices() {
// To call DeviceInformation.FindAllAsync:
// Reference Windows.Devices.Enumeration.winmd when building
// Add the "using Windows.Devices.Enumeration;" directive (as shown above)
foreach (DeviceInformation di in await DeviceInformation.FindAllAsync()) {
Console.WriteLine(di.Name);
}
}
}
次に、Developer Command Promptから実行してこのコードをビルドするBuild.batファイルを作成しました(これは1行である必要がありますが、読み取り能力のためにここでラップします)。
csc EnumDevices.cs
/r:c:\Windows\System32\WinMetadata\Windows.Devices.Enumeration.winmd
/r:c:\Windows\System32\WinMetadata\Windows.Foundation.winmd
/r:System.Runtime.WindowsRuntime.dll
/r:System.Threading.Tasks.dll
次に、コマンドプロンプトで、EnumDevices.exeを実行して出力を確認します。