• 您的位置:首頁 > 新聞動態 > Unity3D

    Unity3D引用dll打包發布的問(wèn)題及解決

    2018/9/12      點擊:

    今年我們開始使(shǐ)用Unity3D開發MMORPG,腳本語言使用C#,這樣(yàng)我們就可以使用以往積(jī)累的許多類庫。但是,在U3D中使用(yòng).NET dll的過程並不是(shì)那麽順利(lì),比如(rú)我們今天遇到的這種(zhǒng)問題。

    一.問題出現(xiàn)

    我們在當前的一個U3D項目中使用了StriveEngine作為通信組件與服務(wù)端進行通信,在U3D環境中,編譯運行一切正常,但在打包發布(Build)為PC版本可執(zhí)行文件時,卻出現錯誤:“ArgumentException: The Assembly System.Management is referenced by StriveEngine. But the dll is not allowed to be included or could not be found.”

    初,我以為是簽(qiān)名或者是加密(mì)混(hún)淆的(de)問題,於是我使用原始編譯生成的StriveEngine.dll,問題一樣存在。

    接著,我再猜測可能是(shì)StriveEngine.dll編譯時選擇平台的問題,於是把目標平台由anycpu更改(gǎi)為x86,重新生成StriveEngine.dll,並(bìng)且在u3d打包發布(bù)也選(xuǎn)擇(zé)x86。

    二.解決方案(àn)

    經過一(yī)番折騰,終於發現需要設置一下U3D所使用的.NET版本 -- 點擊Player Settings按鈕,找到Api Compatibility Level選項(xiàng),選擇".Net 2.0",而非".Net 2.0 Subset",如下圖所示:

    這個選項的意思是說,要使用.NET 2.0的完整版本,而非其子集。經過此設置,終於可以打包發(fā)布成功。

    究其原因,看來是(shì)因為(wéi)StriveEngine所(suǒ)使用的是完整版本.NET 2.0。

    三.又現困境

    由於我們(men)的遊戲會打算發(fā)布一個輕量級的Web版本,於是(shì),我們嚐試將其打包發布為Web版,god,同樣的問題又出現了,而且,在發布Web版本的情況下,Api Compatibility Level是(shì)不可選擇的。 

    猜測發布Web版本隻能使用.Net 2.0 Subset。

    四.如何走出困境?

    如果發布Web版本就隻(zhī)能(néng)使(shǐ)用.Net 2.0 Subset這個猜想是正確的,那麽,我想基於(yú).Net 2.0 Subset開發一個StriveEngine.U3D.dll,使其可以被打包發布(bù)到(dào)各(gè)種不通類型的(de)平台。可是,.Net 2.0 Subset 具體指的是(shì)哪個(gè)子集(jí)了?是.NET Compact Framework?還是SilverLight提供的.NET Framework?抑或(huò)是其它?

    自愉色色,亚洲色孩,jk无遮拦,日日夜夜7799天天综合,999夜夜,7799天天综合天天综合网精品视频,日日夜夜精品视频7799,天天综合7799精品影视