我正在尝试将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,我在哪里可以找到它?
感谢,
答案 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 。