天天看點

[unity3d]連結mysql的Project build出錯

在開發unity3d過程中會用到.net的一些類庫,但是當你運作的時候發現時沒有問題的,但一旦釋出問題就出現了,然後摸索嘗試解決了問題。

一.問題出現

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,如下圖所示:

[unity3d]連結mysql的Project build出錯

但是,問題依然存在。

二.解決方案

經過一番折騰,終于發現需要設定一下U3D所使用的.NET版本 -- 點選Player Settings按鈕,找到Api Compatibility Level選項,選擇".Net 2.0",而非".Net 2.0 Subset",如下圖所示:

[unity3d]連結mysql的Project build出錯

這個選項的意思是說,要使用.NET 2.0的完整版本,而非其子集。經過此設定,終于可以打包釋出成功。

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

三.又現困境

由于我們的遊戲會打算釋出一個輕量級的Web版本,于是,我們嘗試将其打包釋出為Web版,god,同樣的問題又出現了,而且,在釋出Web版本的情況下,Api Compatibility Level是不可選擇的。

[unity3d]連結mysql的Project build出錯

猜測釋出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?抑或是其它?望知道的童鞋能留言告訴一下。

繼續閱讀