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

我的主项目被编译为Unity 3.5 net完整的基类库
我的第二个项目(带有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:无法加载模块中的类。

在(包装器托管到本机)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,System.Type extensionType)中的位置:[0x00000]在:0中

在Mono.CSharp.GlobalRootNamespace.ComputeNamespaces(Mono.CSharp.CompilerContext ctx)[0x00000]中的位置::0

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

在:0的Mono.CSharp.Driver.Compile()[0x00000]处

在Mono.CSharp.Driver.Main(System.String [] args)[0x00000]中的位置:: 0

无法加载类System.Configuration.IConfigurationSectionHandler,在System中使用,版本= 2.0.0.0,文化=中性,PublicKeyToken = b77a5c561934e089
无法加载类System.CodeDom.Compiler.CompilerParameters,在System中使用,版本= 2.0.0.0,文化=中性,PublicKeyToken = b77a5c561934e089



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

谢谢,

最佳答案

将已编译的DLL文件放在Assets文件夹而不是Assets/Plugins文件夹中。如果使用3.4.0版,则在编译之前,打开所需的Logging.cs并将第86行中的baseDir字符串从string baseDir = AppDomain.CurrentDomain.BaseDirectory;更改为string baseDir = System.Environment.CurrentDirectory;。它适用于此person

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

编辑:

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

关于c# - 将nhibernate与Unity3D集成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39153069/

10-17 02:36