将现有 Windows ML 应用移植到 NuGet 包 (C++)

在本教程中,我们将获取现有 WinML 桌面应用程序并移植它以使用可再分发的 NuGet 包

先决条件

  • 一个 WinML 应用程序。 如果要创建新应用程序,请参阅教程:创建 Windows 机器学习桌面应用程序 (C++)
  • Windows 8.1 或更高版本
  • Visual Studio 2019(或 Visual Studio 2017 版本 15.7.4 或更高版本)
  • 下载 CppWinRT NuGet 包

将 NuGet 包添加到项目

在现有应用程序的 Visual Studio 项目中,导航到“解决方案资源管理器”,然后选择“管理解决方案的 NuGet 包”。 选择 Microsoft.AI.MachineLearning NuGet 包。 确保要添加到正确的项目,然后按“安装”

接下来,重新生成解决方案。 C++/WinRT 工具包将分析 Microsoft.AI.MachineLearning NuGet 包中新的头文件和元数据,避免在下一步中产生混淆。

包含新的头文件

为实现最佳做法,你应添加一个控制标志,以使你的应用能够在使用内置 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

保存生成配置

在解决方案资源管理器中右键单击解决方案并选择“属性”。 在“属性”窗口中,选择“配置管理器”。 打开“有效解决方案配置”的下拉菜单,然后选择“<新建...>”。 输入新解决方案配置的名称,并确保选中“创建新的项目配置”。 现在,可将预处理器定义保存在所需的生成配置中。

生成并运行

应用程序现已成功使用 WinML NuGet 包。