Unity使用UnityStandaloneFileBrowser IL2CPP构建Windows报Mono.WebBrowser错误
报错根因
你导入的UnityStandaloneFileBrowser插件包内自带的System.Windows.Forms.dll是针对Mono运行时编译的版本,依赖Mono专属的Mono.WebBrowser程序集,而IL2CPP构建时不会默认包含这个Mono专属程序集,因此触发引用缺失错误。
可行解决方案(按操作复杂度从低到高排序,优先尝试靠前的方案)
方案1:调整插件导入设置(优先推荐)
找到Assets/StandaloneFileBrowser/Plugins路径下的System.Windows.Forms.dll文件,在Inspector面板中修改导入配置:- 取消勾选 Any Platform
- 仅勾选 Editor 平台,取消Windows等所有目标构建平台的勾选
- 点击Apply保存设置后重新构建
原理:StandaloneFileBrowser在Windows运行时实际调用的是原生系统接口,打包的
System.Windows.Forms.dll仅为Editor环境下的适配库,构建时不需要打包到最终程序中,排除后不会触发依赖检测错误。方案2:清理冗余插件文件
直接删除Assets/StandaloneFileBrowser/Plugins路径下的System.Windows.Forms.dll和对应的System.Windows.Forms.dll.mdb调试文件,重新触发构建即可。如果当前插件版本过旧,也可以完全删除现有插件后重新导入最新正式版的UnityStandaloneFileBrowser,新版本已默认修复IL2CPP构建兼容问题。方案3:手动补全依赖(仅前两种方案无效时使用)
从本地Unity编辑器安装目录下找到Mono运行时自带的Mono.WebBrowser.dll,参考路径:[Unity安装根目录]\Editor\Data\MonoBleedingEdge\lib\mono\4.5\Mono.WebBrowser.dll,将该dll复制到项目的Assets/StandaloneFileBrowser/Plugins文件夹下,在Inspector中设置该dll仅适配Windows平台、Scripting Backend匹配IL2CPP后重新构建。
内容的提问来源于stack exchange,提问作者IWOS

