Похоже, вы пытаетесь использовать тип из библиотек WinRT, потому что StorageFile документация по классу говорится, что это относится только к Metro и находится в Windows.Storage.
В этом сообщении в блоге рассказывается, как его создать, но похоже, что это ручной процесс. Также подробно описывается причина ошибки:
Использование ключевого слова await заставляет компилятор искать метод GetAwaiter в этом интерфейсе. Поскольку IAsyncOperation не определяет метод GetAwaiter, компилятор хочет найти метод расширения.
По сути, похоже, вам нужно добавить ссылку на: System.Runtime.WindowsRuntime.dll
Пожалуйста, найдите время, чтобы прочитать его сообщение в блоге, но я помещу здесь важную часть для ясности.
Контент блога ниже является бесцеремонным плагиатом
Во-первых, в Блокноте я создал следующий исходный код C# в EnumDevices.cs:
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);
}
}
}
Во-вторых, я создал файл 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, чтобы увидеть результат.
person
Adam Houldsworth
schedule
03.05.2012