将现有 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
。
保存生成配置
右键单击 解决方案资源管理器 中的解决方案,然后选择 属性。 在 属性 窗口中,选择 Configuration Manager。 打开 活动解决方案配置 的下拉菜单,然后选择“新建...”><。 输入新解决方案配置的名称,并确保选中 创建新项目配置。 现在,预处理器定义可以保存在所需的生成配置中。
生成并运行
应用程序现在已成功使用 WinML NuGet 包。