You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity 5.5集成SQLite插件导出Windows EXE时触发ArgumentException错误

解决Unity导出Windows EXE时的Assembly System相关ArgumentException问题

我之前用Unity 5.x版本封装SQLite插件时也踩过一模一样的坑,编辑器跑起来完全正常,一导出EXE就炸一堆System程序集相关的参数错误,结合你的场景,给你几个针对性的解决方案:

问题本质分析

这个错误核心是Unity导出时的程序集裁剪策略和插件依赖的System类库冲突。编辑器模式下Unity会自动加载所有必要的系统程序集,但打包EXE时会默认裁剪“未被引用”的代码,结果把插件偷偷依赖的System类给删掉了。

具体解决方案

1. 检查插件依赖的System类库来源

你的SQLite插件大概率用到了System.Data或者System.Data.SQLite这类程序集,注意这几点:

  • 绝对不要用本地.NET框架(比如C:\Windows\Microsoft.NET)里的System.Data.dll,Unity老版本对外部.NET类库兼容性极差,导出必出问题。要用Unity内置的版本,或者从Unity安装目录的Data\Managed文件夹里复制对应版本的System.Data.dll到项目的Assets/Plugins目录。
  • 把插件用到的System类库在Inspector面板里设置Platform Settings:只勾选Windows平台,取消“Editor”选项(避免和编辑器内置的程序集冲突)。

2. 调整程序集裁剪等级

Unity默认的裁剪逻辑可能误删了插件依赖的代码:

  • 打开Edit > Project Settings > Player,找到Other Settings里的Optimization区域。
  • 把Managed Stripping Level改成Disabled(先试这个,不行再调回Low),然后重新导出EXE。这个设置会禁止Unity裁剪托管程序集,确保所有依赖的System类都被打包进去。
  • 小提示:禁用裁剪会增加EXE体积,但对于老版本Unity来说,这是最快解决依赖问题的办法。

3. 优化插件的编译配置

你的插件是编译成DLL放入项目的,调整编译参数能避免很多冲突:

  • 编译插件时,目标框架选择**.NET Framework 3.5**(Unity 5.5默认支持的版本,绝对不要选4.0及以上的.NET版本,会导致导出时和Unity的内置程序集冲突)。
  • 如果插件用到了SQLite的原生动态库(比如sqlite3.dll),一定要把它放在Assets/Plugins/x86和Assets/Plugins/x86_64目录下,对应不同的Windows架构,并且在Inspector里设置正确的平台和CPU架构。

如果不想禁用裁剪,可以通过配置文件告诉Unity不要裁剪特定类:

  • 在Assets目录下创建link.xml文件,内容如下:
<linker>
  <assembly fullname="System.Data" preserve="all"/>
  <assembly fullname="System.Data.SQLite" preserve="all"/>
  <!-- 根据你的插件实际依赖添加其他程序集 -->
</linker>

这个文件会强制Unity在裁剪时保留指定的程序集,避免依赖的类被误删。

验证步骤

每次修改后按这个流程测试:

  1. 删掉项目的Library目录(让Unity重新生成依赖缓存,避免旧缓存干扰)。
  2. 先在编辑器里运行确认功能正常。
  3. 导出Windows EXE时勾选“Development Build”和“Script Debugging”,这样能看到更详细的错误日志,方便定位具体是哪个System类缺失。

内容的提问来源于stack exchange,提问作者Tien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:04:45