我正在尝试将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/