• 您的(de)位置:首(shǒu)頁 > 新聞動態 > Unity3D

    Unity3D引用dll打包(bāo)發布的問題及(jí)解決

    2018/9/12      點擊:

    今年我(wǒ)們開始使用Unity3D開發MMORPG,腳(jiǎo)本語言使用C#,這樣我們就可以使用以往積累的許多類庫。但是,在U3D中使用.NET dll的過程並不是那(nà)麽順利,比如我們今天遇到的這種問題。

    一.問題出現

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

    初(chū),我以為是簽名或(huò)者是加密(mì)混淆的問題(tí),於是我使用原始編譯生成的(de)StriveEngine.dll,問(wèn)題一樣存在。

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

    二.解決方案(àn)

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

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

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

    三.又現困境

    由(yóu)於我們的遊戲會打算發布一個輕量級的Web版(bǎn)本,於是,我們嚐試將其打包發布為Web版,god,同樣的問題又出(chū)現了,而且,在發布Web版(bǎn)本的情況(kuàng)下,Api Compatibility Level是不可選擇的。 

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

    四.如(rú)何走出(chū)困境?

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

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