我正在尝试将 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:无法加载模块中的类。
at(包装器托管到 native )System.Reflection.Assembly:GetTypes (bool)
位于 System.Reflection.Assembly.GetTypes () [0x00000] 中:0
位于 Mono.CSharp.RootNamespace.ComputeNamespaces(System.Reflection.Assembly 程序集、System.Type 扩展类型)[0x00000] 中:0
在 Mono.CSharp.RootNamespace.ComputeNamespace (Mono.CSharp.CompilerContext ctx, System.Type 扩展类型) [0x00000] 中:0
位于 Mono.CSharp.GlobalRootNamespace.ComputeNamespaces (Mono.CSharp.CompilerContext ctx) [0x00000] 中:0
在 Mono.CSharp.Driver.LoadReferences () [0x00000] 中:0
在 Mono.CSharp.Driver.Compile () [0x00000] 中:0
在 Mono.CSharp.Driver.Main (System.String[] args) [0x00000] 中:0
无法加载类 System.Configuration.IConfigurationSectionHandler,在系统中使用,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089 无法加载类 System.CodeDom.Compiler.CompilerParameters,在 System 中使用,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089
"
什么取决于 IConfigurationSectionHandler?在哪里可以找到它?
谢谢
最佳答案
将编译后的 DLL 文件放在 Assets
文件夹中,而不是 Assets/Plugins
文件夹中。如果您使用的是3.4.0版本,在编译之前,打开您需要的Logging.cs
并更改baseDir第 86 行从 string baseDir = AppDomain.CurrentDomain.BaseDirectory;
到 string baseDir = System.Environment.CurrentDirectory;
的字符串。它适用于此 person 。
还要确保 Assets
文件夹中包含 .NET 数据库连接器 DLL(MySQL.Data.dll
)。
编辑:
您还必须将 Api 兼容性级别从 .Net 2.0 子集更改为 .Net 2.0,如 OP 所示。
关于c# - 将 nhibernate 与 Unity3D 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39153069/