2016-08-25 54 views
2

我想實現Nhibernate到我的Unity3D項目。nhibernate與Unity3D的集成

我的主要項目被編譯到Unity 3.5淨全基類庫 我的第二個項目(一個與NHibernate參考)被編譯到.NET Framework 3.5的(.dll文件部署到Aseets/Plugins文件夾) 我使用NHibernate 3.4.0.4000

Unity3D給出錯誤:

「[...] 無法加載文件或程序集 'NHibernate的,版本= 3.4.0.0,文化=中性公鑰= aa95f207798dfdb4' 或之一它的依賴關係。「

因此,我將NHibernate.dll和Iesi.Collections.dll複製到Assets/Plugins文件夾中。

但它產生另一個錯誤:

未處理的異常:System.Reflection.ReflectionTypeLoadException:模塊中的類不能被加載

在(包裝管理到本機) System.Reflection.Assembly:GetTypes(布爾)

在System.Reflection.Assembly.GetTypes()[0x00000]在:0

在Mono.CSharp.RootNamespace.ComputeNamespaces(System.Reflection.Assembly組件,System.Type的extensionType)[0x00000]在:0

在Mono.CSharp.RootNamespace.ComputeNamespace(Mono.CSharp.CompilerContext CTX,系統。型extensionType)[0x00000]在:0

在Mono.CSharp.GlobalRootNamespace.ComputeNamespaces(Mono.CSharp.CompilerContext CTX)[0x00000]在:0

在Mono.CSharp.Driver.LoadReferences()[ 0x00000] in:0

at Mono.CSharp.Driver.Compile()[0x00000] in:0

在Mono.CSharp.Driver.Main(System.String []參數)[0x00000]在:0

類System.Configuration.IConfigurationSectionHandler無法加載,在系統,版本= 2.0.0.0使用文化=中性公鑰= b77a5c561934e089 無法加載的類System.CodeDom.Compiler.CompilerParameters,在系統中使用,版本= 2.0.0.0,文化=中性公鑰= b77a5c561934e089

什麼取決於IConfigurationSectionHandler,我可以在哪裏找到它?

感謝,

回答

2

把編譯的DLL文件,在文件夾Assets不是Assets/Plugins文件夾。如果您使用的是版本3.4.0,請在編譯之前打開Logging.cs,然後將baseDir字符串從string baseDir = AppDomain.CurrentDomain.BaseDirectory;更改爲012行,然後在第86行中輸入string baseDir = System.Environment.CurrentDirectory;。它適用於此person

此外請確保有。NET數據庫連接器DLL(MySQL.Data.dll)位於Assets文件夾中。

編輯

您還必須從NET 2.0子集更改API兼容性級別設置爲NET 2.0由OP注意。

+0

嗨,謝謝你的快速回答。不幸的是,這並沒有幫助。我仍然有一個錯誤:類System.Configuration.IConfigurationSectionHandler無法加載,在系統中使用,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089 無法加載類System.CodeDom.Compiler.CompilerParameters,在System,版本= 2.0.0.0中使用,Culture = neutral,PublicKeyToken = b77a5c561934e089 – 5minutes2start

+0

下載nhibernate 3.4.0版本並重試。 – Programmer

+0

將.Net 2.0子集中的Api Compatibility Level設置爲.Net 2.0解決了此問題。 – 5minutes2start