Unity测试ClarifAI报错:找不到‘Clarifai’类型或命名空间
问题描述
操作环境:Unity 2020.3.8f1、Visual Studio 2022
操作步骤:
- 创建Unity新项目
- 创建名为AItest的C#脚本并在VS中打开
- 通过NuGet包管理器执行
Install-Package ClarifaiGrpc,安装成功 - 按照官方文档编写代码,VS中无语法报错,但Unity控制台提示:
The type or namespace name 'Clarifai' could not be found
已尝试卸载重装ClarifaiGrpc包,问题未解决。
解决方法
手动迁移DLL到Unity插件目录
NuGet安装的包默认存放在项目Packages目录下,Unity无法自动加载该路径下的DLL。找到[项目根目录]/Packages/ClarifaiGrpc/lib路径,将对应.NET Standard 2.0版本的DLL文件复制到Unity项目的Assets/Plugins文件夹中,重启Unity后重新编译。调整Unity的API兼容级别
打开Unity编辑器,依次进入Edit > Project Settings > Player > Other Settings > Configuration,将Api Compatibility Level设置为.NET Standard 2.0,确保与ClarifaiGrpc包的目标框架匹配。清理项目缓存并重新生成解决方案
关闭Unity和VS,删除项目目录下的obj、bin文件夹以及.vs隐藏目录,重新打开Unity让其自动生成解决方案,再打开VS编译代码。检查脚本编译顺序
进入Edit > Project Settings > Player > Other Settings > Script Compilation Order,将AItest脚本的编译顺序调整到Clarifai相关DLL之后,避免脚本在DLL加载前编译。使用Unity兼容的Clarifai包
部分NuGet包未针对Unity优化,可尝试获取Clarifai官方提供的Unity专用包,手动导入到项目中替代NuGet安装的版本。
内容的提问来源于stack exchange,提问作者Lee

