Почему UWP не может найти класс ImageScanner?

Я пытаюсь использовать планшетный сканер от UWP. Проверил документацию и это выглядело просто и понятно.

Однако я определенно что-то упускаю, потому что не могу построить (ImageScanner подчеркнуто в редакторе):

Тип или имя пространства имен «ImageScanner» не найдено

Очевидно, у меня есть использование Windows.Devices.Scanners; в файле. И даже это странно, потому что IntelliSense не может найти это пространство имен, но строка использования не вызывает ошибки. Я пробовал с мусорным пространством имен, и, как и ожидалось, с ним не удалось использовать.

Мой проект — это новое универсальное пустое приложение для Windows. Ничего не менял, только начал писать свой класс.

Visual Studio 2017 v4.7.03056
Версия целевой платформы: 10.0.17134.0

Должен ли я изменить некоторые свойства проекта или манифест приложения? Единственное, что я читал, это API сканера работает только на десктопном UWP, а не на мобильном. Я попытался изменить TargetDeviceFamily в appxmanifest с Windows.Universal на Windows.Desktop, но не помогло.


person Tocsi    schedule 04.09.2018    source источник
comment
Предоставьте минимальный воспроизводимый пример, включая точное сообщение об ошибке и соответствующий языковой тег.   -  person IInspectable    schedule 04.09.2018
comment
1. создано новое универсальное/пустое приложение Windows   -  person Tocsi    schedule 04.09.2018
comment
1. создано новое универсальное/пустое приложение Windows 2. добавлен класс Class1.cs 3. добавлено использование строки: using Windows.Devices.Enumeration; - помог intellisense 4. добавлено с помощью строки: using Windows.Devices.Scanners; - intellisense не помог, но ошибки нет 5. написал декалирование поля на уровне класса: ImageScanner _scanner; - ImageScanner подчеркнут красным цветом с всплывающей подсказкой: тип или имя пространства имен «ImageScanner» не найден... 6. попытался построить и получил ту же ошибку: Ошибка CS0246 Не удалось найти имя типа или пространства имен «ImageScanner».   -  person Tocsi    schedule 04.09.2018
comment
Заархивированный проект Что я вижу   -  person Tocsi    schedule 04.09.2018
comment
Пройдите тур и прочитайте Как Спросите.   -  person IInspectable    schedule 04.09.2018


Ответы (1)


Если вы покопаетесь в документации по любому классу в этом пространстве имен вы обнаружите, что оно фактически определено в SDK Windows Desktop Extension:

SDK расширений

Это означает, что вы должны сначала сослаться на это расширение. Щелкните правой кнопкой мыши свой проект UWP в Обозревателе решений, выберите Добавить, Ссылка. В открывшемся диалоговом окне выберите Универсальная Windows, Расширения слева, а затем найдите и отметьте соответствующую версию Расширений рабочего стола Windows для UWP. После того, как вы подтвердите диалоговое окно, вы сможете увидеть участников, перечисленных в IntelliSense.

SDK расширения рабочего стола Windows

person Martin Zikmund    schedule 04.09.2018
comment
О, я думал, что пропустил что-то основное. Извините, но для меня это было неочевидно, так как я искал сборку, в которой они определены. Не знал, что семейство устройств означает дополнительную ссылку. Был вопрос новичка :( - person Tocsi; 04.09.2018
comment
Нет проблем, рад, что это помогло :-). Это то, с чем вы, вероятно, столкнетесь снова при создании приложений UWP, поэтому полезно знать об этом трюке :-). Удачного кодирования! - person Martin Zikmund; 04.09.2018