将nhibernate与Unity3D集成

时间:2016-08-25 19:12:17

标签: c# .net unity3d nhibernate

我正在尝试将Nhibernate实现到我的Unity3D项目中。

我的主项目编译为Unity 3.5 net full Base Class Libraries 我的第二个项目(带有Nhibernate参考的项目)编译为.Net Framework 3.5(.dll文件部署到Aseets / Plugins文件夹) 我正在使用Nhibernate 3.4.0.4000

Unity3D出错:

" [...] 无法加载文件或程序集' NHibernate,Version = 3.4.0.0,Culture = neutral,PublicKeyToken = aa95f207798dfdb4'或其中一个依赖项。"

所以我也将NHibernate.dll和Iesi.Collections.dll复制到Assets / Plugins文件夹。

但它产生了另一个错误:

"

未处理的异常:System.Reflection.ReflectionTypeLoadException:无法加载模块中的类。

at(wrapper managed-to-native)System.Reflection.Assembly:GetTypes(bool)

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

在Mono.CSharp.RootNamespace.ComputeNamespaces(System.Reflection.Assembly assembly,System.Type extensionType)[0x00000] in:0

at Mono.CSharp.RootNamespace.ComputeNamespace(Mono.CSharp.CompilerContext ctx,System.Type extensionType)[0x00000] in:0

at Mono.CSharp.GlobalRootNamespace.ComputeNamespaces(Mono.CSharp.CompilerContext ctx)[0x00000] in:0

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

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

在Mono.CSharp.Driver.Main(System.String [] args)[0x00000] in:0

无法加载System.Configuration.IConfigurationSectionHandler类,在System,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089中使用 无法加载System.CodeDom.Compiler.CompilerParameters类,在System,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089

中使用

"

什么取决于IConfigurationSectionHandler,我在哪里可以找到它?

感谢,

1 个答案:

答案 0 :(得分:2)

将已编译的DLL文件放在Assets文件夹而不是Assets/Plugins文件夹中。如果您使用的是版本3.4.0,那么在编译之前,请打开Logging.cs,然后在第86行中将baseDir字符串从string baseDir = AppDomain.CurrentDomain.BaseDirectory;更改为string baseDir = System.Environment.CurrentDirectory;。它适用于此{{ 3}}。

还要确保在MySQL.Data.dll文件夹中包含.NET数据库连接器DLL(Assets)。

修改

如OP所述,您还必须将Api兼容级别从 .Net 2.0子集更改为 .Net 2.0