因为 Visual Studio 有强大的包管理器插件,所以即便是不熟悉 NuGet 命令的小伙伴也能轻松安装和管理 NuGet 包。不过,对 Unity C# 项目来说,你并不能直接引用 dll,也不能直接使用自带的 NuGet 包管理器完成 NuGet 包安装。
本文介绍原因和真正的引用方法。
对于传统 .NET/C# 的开发者来说,在解决方案中管理 NuGet 包,在 C# 项目中引用 dll 或 NuGet 包是家常便饭。但在 Unity 项目里面,你可能要改变这一观念——因为 Unity 项目里面实际上并不存在 sln 和 csproj 文件。
简单了解项目根目录的 sln 文件和 csproj 文件将有助于你理解为什么要像本文一样引用 dll 和安装 NuGet 包,因此如果你不了解,建议先阅读:
当然,这两个能否正常使用,以及扔到 Plugins
文件夹中的 dll 应该是什么平台,取决于 Unity 项目的配置。
当然,引用 NuGet 包的话更推荐非官方的方法,详见:
配置运行时和 API 兼容性级别
你可以通过 简单了解 IL2CPP 是什么。
因为 Unity 编辑器生成了 sln 和 csproj,所以在 Visual Studio 里安装也是可以的,不过这里的安装并不会真实生效,而是我们在 Unity 项目的根目录的 Packages 文件夹中能找到我们安装的 NuGet 包,也是从对应的文件夹中取出来 dll 丢到 Plugins 文件夹中。
更推荐非官方的方法,详见:
特别注意:反射需要额外支持
如果你前面的脚本后端(Script Backend)选择了 IL2CPP,那么小心 dll 的元数据会丢失,依赖于反射的功能也将崩溃。例如大量依赖于反射的 Newtonsoft.Json
库就会在此情况下无法正常工作。
如果你需要用到反射,或者你用到的某库中需要依赖反射功能,那么请在 Assets 文件夹中添加 link.xml 文件,内容如下:
这将确保 Unity 的字节码剥离过程在导出到 IL2CPP 平台时不会删除必要的数据。
我的博客会首发于 ,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。
如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 欢迎大家加入。
本作品采用进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请。