将现有 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 包。