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

    Unity3D引用dll打包發(fā)布的問題及解決(jué)

    2018/9/12      點擊:

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

    一.問題出(chū)現

    我(wǒ)們在當前的一個U3D項目中使用了StriveEngine作(zuò)為通信組件與服務端進(jìn)行通信,在U3D環境中,編譯運行一(yī)切正常,但在打包發布(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.”

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

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

    二.解決方案

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

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

    究其(qí)原因,看來(lái)是因為StriveEngine所使用的是(shì)完整版本.NET 2.0。

    三.又現困境

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

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

    四.如何走出困境?

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

    AV永久天堂网_奇米狠狠色_亚洲欧美日韩动漫_欧美日韩视频在线观看免费一区二区_日韩精品一二三区_国产AV网站18禁止人_久久久久久精品人妻免费网站不卡_国产最新视频_另类免费视频在线视频二区_久久精品免视国产