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

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

    2018/9/12      點擊:

    今年我們開始使用Unity3D開發MMORPG,腳本語(yǔ)言使用C#,這(zhè)樣我們就可以使用以往積累的(de)許多類庫。但是,在(zài)U3D中使用.NET dll的過程(chéng)並不是那(nà)麽順利,比如(rú)我(wǒ)們今天(tiān)遇到的這(zhè)種問題。

    一(yī).問題(tí)出現

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

    初,我(wǒ)以為是簽名或者是加密混(hún)淆的問題,於是我使用原(yuán)始編譯生成的StriveEngine.dll,問題一(yī)樣存在。

    接(jiē)著,我再猜測可能是StriveEngine.dll編譯時選擇平台的問題,於是把目標平台由anycpu更(gèng)改為x86,重新生成StriveEngine.dll,並且在u3d打包發布也選擇x86。

    二.解決方案

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

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

    究其原因,看來是因為StriveEngine所使用的是完(wán)整版本.NET 2.0。

    三.又現困境

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

    猜(cāi)測發布Web版本隻能使用.Net 2.0 Subset。

    四.如何走出困境?

    如果(guǒ)發布Web版本就隻能使用.Net 2.0 Subset這個猜想是正確的,那麽,我想基於.Net 2.0 Subset開發一個StriveEngine.U3D.dll,使其可以被打包發布到各種不通類型(xíng)的平台。可是,.Net 2.0 Subset 具體指的是哪個子集了(le)?是.NET Compact Framework?還是SilverLight提供的.NET Framework?抑或是其它(tā)?

    日本中出视频|午夜免费福利在线|亚洲精品亚洲人成在线下载|国产高潮流白浆免费观看不卡|偷拍亚洲欧美|亚洲中文字幕久爱亚洲伊人|久久久久香蕉视频|国产欧美日韩一区|久久国产成人亚洲精品影院老金|久久久久中文字幕