我花了几个小时尝试在网上找到的解决方案,但没有任何工作,所以这里是我对Stackoverflowers的问题。
我为Unity制作了一个小插件,并将dll导入我的项目文件夹。当我在编辑器中启动游戏时它工作正常,但如果我尝试编译,我会得到以下内容:
Internal compiler error. See the console log for more information. output was:
Unhandled Exception: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded.
at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (bool)
at System.Reflection.Assembly.GetTypes () [0x00000] in <filename unknown>:0
at Mono.CSharp.RootNamespace.ComputeNamespaces (System.Reflection.Assembly assembly, System.Type extensionType) [0x00000] in <filename unknown>:0
at Mono.CSharp.RootNamespace.ComputeNamespace (Mono.CSharp.CompilerContext ctx, System.Type extensionType) [0x00000] in <filename unknown>:0
at Mono.CSharp.GlobalRootNamespace.ComputeNamespaces (Mono.CSharp.CompilerContext ctx) [0x00000] in <filename unknown>:0
at Mono.CSharp.Driver.LoadReferences () [0x00000] in <filename unknown>:0
at Mono.CSharp.Driver.Compile () [0x00000] in <filename unknown>:0
at Mono.CSharp.Driver.Main (System.String[] args) [0x00000] in <filename unknown>:0
到目前为止我做了什么:
顺便说一句,它在Unity编辑器中工作正常,所以我应该非常清楚我按照官方插件制作指南中的说明做了正确的。
感谢您的帮助
答案 0 :(得分:2)
当我从插件文件夹中删除dll,同时只在项目的根文件夹中保留了它的副本时,就可以了。
因此,在这种情况下,解决方案是将dll保留在项目的根文件夹中,而不是其他地方。
我不确定为什么,所以问题的一部分仍然是开放的。
答案 1 :(得分:1)
对我来说有用的是将目标平台设置得更低(从4.5到3.5)。 正如这里建议的: http://forum.unity3d.com/threads/ideas-reflectiontypeloadexception-the-classes-in-the-module-cannot-be-loaded.230389/
答案 2 :(得分:1)
我需要做的是将API兼容级别从.NET Subset 2.0更改为.NET 2.0。突然一切都很好。可能线程任务正在做一些问题。
请参阅reference
答案 3 :(得分:0)
您想在什么平台上编译脚本?
如果你正在为iOS做这件事,请确保你没有在DLL中声明任何事件。
我遇到了这个问题,最后我把它们删除了。