Вызов универсальной библиотеки классов Windows 10 из настольного приложения

В предыдущей разработке я использовал переносимую библиотеку классов для обмена кодом между приложением Metro для Windows 8.1 и настольным приложением .NET/WPF.

Можно ли использовать универсальные библиотеки классов Windows 10 из таких классических приложений, и если нет, то как рекомендуется делиться кодом в этом сценарии?


person Cerebrate    schedule 29.07.2015    source источник
comment
Привет, Cerebrate, помог ли мой подробный ответ ответить на твой вопрос? Если да, отметьте это как ответ, когда у вас будет минутка. :-) Кроме того, дайте мне знать, если вам нужны какие-либо дополнительные разъяснения или скриншоты, и я буду рад обновить их. Заранее спасибо! :-D   -  person Shahed C - MSFT    schedule 17.09.2015


Ответы (1)


Во-первых, давайте рассмотрим первую часть вашего вопроса:

Можно ли использовать библиотеки универсальных классов Windows 10 из таких классических приложений?

Чтобы ответить на этот вопрос, я создал новое решение в VS2015 со следующими проектами:

  • Настольное приложение WPF с именем wpfApp
  • Приложение Win10 UWP с именем win10App
  • Библиотека классов Win10 UWP с именем win10Lib

Затем я смог добавить библиотеку классов в качестве ссылки на приложение UWP. Но я получил сообщение об ошибке при попытке добавить ссылку на библиотеку в настольное приложение.

введите описание изображения здесь

(СКРИНШОТ: сообщение об ошибке при попытке добавить библиотеку UWP в качестве ссылки в настольное приложение)

Далее вторая часть вашего вопроса:

и если нет, то какой рекомендуемый способ обмена кодом в этом сценарии?

Затем я добавил новый проект библиотеки классов, но не универсальный... Я выбрал параметр «Переносимая библиотека классов» в разделе «Классические настольные приложения». Это позволило мне выбрать, какую платформу (платформы) я хочу поддерживать, включая .NET 4.6 и Windows Universal 10.0.

введите описание изображения здесь

(СКРИНШОТ: добавление переносимой библиотеки классов)

Итак, теперь у меня есть новый проект библиотеки классов в моем решении:

  • классическая библиотека классов рабочего стола (переносимая) с именем PortableLib

Я снова начал добавлять ссылку на библиотеку классов в свое настольное приложение WPF, выбрав свой новый проект PortableLib. Однако я получил следующее сообщение об ошибке:

введите описание изображения здесь

(СКРИНШОТ: сообщение об ошибке при добавлении ссылки на переносимую библиотеку классов в проект WPF)

Это произошло потому, что я выбрал 4.6 (версия по умолчанию для .NET Framework) в качестве одной из платформ при создании библиотеки классов, но мой проект WPF все еще был нацелен на более старую версию .NET Framework. Я исправил это, отредактировав свойства проекта приложения WPF и обновив цель, чтобы она соответствовала версии платформы библиотеки классов.

Наконец, я добавил ссылку на новую переносимую библиотеку классов в свое приложение Win10 UWP, и она была успешно добавлена. Теперь я могу построить решение без ошибок.

Вот скриншот структуры моего проекта со ссылками. введите описание изображения здесь

Надеюсь это поможет!

person Shahed C - MSFT    schedule 02.09.2015
comment
Хорошо, но есть ли способ использовать API-интерфейсы UWP, такие как StorageFile, в библиотеке, на которую может ссылаться как настольное приложение, так и приложение UWP? Я знаю, что эти API на самом деле можно вызывать из настольных приложений, но как насчет совместного использования кода? - person Neme; 10.03.2017