这在Windows中运行良好,但是当尝试在Mono中运行时,我收到以下错误:
Unhandled Exception:
System.TypeLoadException: Could not load type 'WLBot.LobbyBot.LobbyBot[]' from assembly 'WLBot, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
at System.Collections.Generic.Dictionary`2[WLCommon.Matches.MatchSetupDetails,WLBot.LobbyBot.LobbyBot].InitArrays (Int32 size) [0x00000] in <filename unknown>:0
at System.Collections.Generic.Dictionary`2[WLCommon.Matches.MatchSetupDetails,WLBot.LobbyBot.LobbyBot].Init (Int32 capacity, IEqualityComparer`1 hcp) [0x00000] in <filename unknown>:0
at System.Collections.Generic.Dictionary`2[WLCommon.Matches.MatchSetupDetails,WLBot.LobbyBot.LobbyBot]..ctor () [0x00000] in <filename unknown>:0
at WLBot.Client.WLBotClient..ctor (System.String url, System.String botid, System.String secret) [0x00000] in <filename unknown>:0
at WLBot.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: Could not load type 'WLBot.LobbyBot.LobbyBot[]' from assembly 'WLBot, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
at System.Collections.Generic.Dictionary`2[WLCommon.Matches.MatchSetupDetails,WLBot.LobbyBot.LobbyBot].InitArrays (Int32 size) [0x00000] in <filename unknown>:0
at System.Collections.Generic.Dictionary`2[WLCommon.Matches.MatchSetupDetails,WLBot.LobbyBot.LobbyBot].Init (Int32 capacity, IEqualityComparer`1 hcp) [0x00000] in <filename unknown>:0
at System.Collections.Generic.Dictionary`2[WLCommon.Matches.MatchSetupDetails,WLBot.LobbyBot.LobbyBot]..ctor () [0x00000] in <filename unknown>:0
at WLBot.Client.WLBotClient..ctor (System.String url, System.String botid, System.String secret) [0x00000] in <filename unknown>:0
at WLBot.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
这有点令人气愤,因为类实际上已编译到exe中,而不像dll那样分开。我所看到的所有答案都是关于尝试从库中加载类型。
即使我在项目中重新创建了类,也会发生同样的事情。我很困惑为什么会这样。我该如何解决这个问题?
答案 0 :(得分:0)
这个答案对你来说似乎很有意思:Mono-LibreOffice System.TypeLoadException
答案引用:
.NET框架具有真正的即时编译器。 Mono没有,它有一个AOT(Ahead Of Time)编译器。换句话说,它积极地编译程序集中的所有代码,而不仅仅是将要执行的代码。
因此,不要试图理解代码行(您的构造函数),而是尝试考虑您可能正在调用的其他内容。他使用var
而不是声明变量类型本身。这样可以防止Mono在您的过程中提前前进,并让它在您执行时决定类型。
希望它可以帮助您调试代码。
答案 1 :(得分:0)
不是OP的答案,但对于未来的googlers,我在Windows上编译的二进制文件存在此问题并复制到运行Raspbian(jessie)的Raspberry Pi。
同样,在Windows上运行也没问题。
受影响的Mono版本(由tarball构建)为4.6.0.125/753c323
。
修复方法是升级到4.6.1.5/ef43c15
。