博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity3D引用dll打包发布的问题及解决
阅读量:7250 次
发布时间:2019-06-29

本文共 1084 字,大约阅读时间需要 3 分钟。

今年我们开始使用Unity3D开发MMORPG,脚本语言使用C#,这样我们就可以使用以往积累的许多类库。但是,在U3D中使用.NET dll的过程并不是那么顺利,比如我们今天遇到的这种问题。

一.问题出现

我们在当前的一个U3D项目中使用了作为通信组件与服务端进行通信,在U3D环境中,编译运行一切正常,但在打包发布(Build)为PC版本可执行文件时,却出现错误:“ArgumentException: The Assembly System.Management is referenced by StriveEngine. But the dll is not allowed to be included or could not be found.”

最初,我以为是签名或者是加密混淆的问题,于是我使用原始编译生成的StriveEngine.dll,问题一样存在。

接着,我再猜测可能是StriveEngine.dll编译时选择平台的问题,于是把目标平台由anycpu更改为x86,重新生成StriveEngine.dll,并且在u3d打包发布也选择x86,如下图所示:

    

但是,问题依然存在。

二.解决方案

经过一番折腾,终于发现需要设置一下U3D所使用的.NET版本 -- 点击Player Settings按钮,找到Api Compatibility Level选项,选择".Net 2.0",而非".Net 2.0 Subset",如下图所示:

    

这个选项的意思是说,要使用.NET 2.0的完整版本,而非其子集。经过此设置,终于可以打包发布成功。

究其原因,看来是因为StriveEngine所使用的是完整版本.NET 2.0。

三.又现困境

由于我们的游戏会打算发布一个轻量级的Web版本,于是,我们尝试将其打包发布为Web版,god,同样的问题又出现了,而且,在发布Web版本的情况下,Api Compatibility Level是不可选择的。

    

猜测发布Web版本只能使用.Net 2.0 Subset。

四.如何走出困境?

如果发布Web版本就只能使用.Net 2.0 Subset这个猜想是正确的,那么,我想基于.Net 2.0 Subset开发一个StriveEngine.U3D.dll,使其可以被打包发布到各种不通类型的平台。可是,.Net 2.0 Subset 具体指的是哪个子集了?是.NET Compact Framework?还是SilverLight提供的.NET Framework?抑或是其它?望知道的童鞋能留言告诉一下。

 

转载地址:http://cxqbm.baihongyu.com/

你可能感兴趣的文章
CMake 手册详解(二十)
查看>>
Java设计模式(十一) 享元模式
查看>>
前端面试问题集
查看>>
三天学会HTML5——SVG和Canvas的使用
查看>>
uliweb中ORM的nullable和server default的处理
查看>>
在线CRM集成进销存,助力企业全面发展
查看>>
Java学习—网络编程(TCP)
查看>>
git 收集
查看>>
Redis作者谈Redis应用场景
查看>>
十大经典排序算法(动图演示)转
查看>>
美团2012研发工程师笔试题(数数字问题)
查看>>
LEXUS 混合动力
查看>>
Android中的设计模式之命令模式
查看>>
故障发生时的人物速写
查看>>
superset连接数据库,以及汉化
查看>>
web作用域(4个)
查看>>
JAVA SSH 项目的首页数据应该怎么显示
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
金山快盘开发(六)
查看>>