Перенос существующего приложения Windows ML в пакет NuGet (C++)

В этом руководстве описан перевод существующего классического приложения WinML на использование распространяемого пакета NuGet.

Необходимые компоненты

  • Приложение WinML. Если вы создаете новое приложение, см. руководство. Создание классического приложения windows Машинное обучение (C++)
  • Windows 8.1 или выше
  • Visual Studio 2019 (или Visual Studio 2017 версии 15.7.4 и выше)
  • Скачайте пакет NuGet CppWinRT.

Добавление пакета NuGet в проект

В проекте Visual Studio для существующего приложения перейдите в обозреватель решений и щелкните элемент Управление пакетами NuGet для решения. Выберите пакет NuGet Microsoft.AI.MachineLearning. Убедитесь, что вы добавляете пакет в требуемый проект, и нажмите кнопку Установить.

Затем снова выполните сборку решения. Набор средств C++/WinRT будет анализировать новые заголовки и метаданные из пакета NuGet Microsoft.AI.MachineLearning, чтобы избежать путаницы на следующем шаге.

Добавление нового заголовка

Для удобства добавьте управляющий флаг, который позволяет приложению переключаться между использованием стандартного решения Windows ML и пакета NuGet.

#ifdef USE_WINML_NUGET
#include “winrt/Microsoft.AI.MachineLearning.h” 
#endif

Изменение пространства имен

Затем разрешите Windows::AI::Machinelearning переключиться на пространство имен Microsoft::AI::MachineLearning с помощью управляющего флага. Если внести такое изменение, код будет автоматически использовать пакет NuGet, если это применимо.

#ifdef USE_WINML_NUGET 

Using namespace Microsoft::AI::MachineLearning 

#else 

Using namespace Windows::AI::MachineLearning 

#endif 

Изменение определений препроцессора

В окне Обозреватель решений щелкните проект правой кнопкой мыши и выберите элемент Свойства. В окне Свойства перейдите на страницу Препроцессор. Замените значение в поле Определения препроцессора на USE_WINML_NUGET:_DEBUG.

Сохранение конфигураций сборки

В Обозревателе решений щелкните решение правой кнопкой мыши и выберите элемент Свойства. В окне Свойства выберите элемент Диспетчер конфигураций. Откройте раскрывающееся меню Активная конфигурация решения и выберите элемент <Создать...>. Введите имя новой конфигурации решения и убедитесь, что установлен флажок Создать новые конфигурации проекта. Теперь определения препроцессора можно сохранить в нужных конфигурациях сборки.

Сборка и запуск

Теперь приложение успешно использует пакет NuGet WinML.