我有一个应用程序,在Windows上用C#编写,但在Ubuntu 12.04(32位)上重新编译,并在Ubuntu 12.04(64位)上正在运行,免费发布。
我正在使用Mono 2.10.8.1,从源代码重新编译(因为我需要删除Windows 64 WaitHandle最大限制,但那是一个不同的故事)。
我的问题是,虽然它在12.04(由单一服务运行的服务,托管在主管中)运行愉快,但是当服务尝试启动时,我收到以下异常,在Ubuntu 14.04上(我们正在迁移到云端)托管Linux实例,而不是本地托管)
TypeInitializationException: An exception was throw$
at (wrapper managed-to-native) Mono.Unix.Native.Syscall:_L_ctermid ()
at Mono.Unix.Native.Syscall..cctor () [0x00000] in <filename unknown>:0\
(显然,有一个InnerException,但那也是一个TypeInitializationException)
除了发布之外,两个安装(工作12.04生产,而不是14.04潜在生产)之间的唯一区别是12.04我的二进制文件在
〜/ theserviceimrunning /
而在新盒子上它是
的/ opt / theserviceimrunning /
我不认为发布之间存在差异,特别是当我使用相同版本的Mono时,从tarball重新编译,但这会是一个问题吗?如果没有,还有什么我应该注意的吗?
答案 0 :(得分:0)
事实证明,使用nano查看异常日志是我的第一个问题,因为它隐藏了&#39;没有包装线,并用$。
截断它们的真正问题真正的例外是我缺少libMonoPosixHelper.so,因为LD_LIBRARY_PATH没有被添加为环境变量。
Unhandled Exception: System.TypeInitializationException:
An exception was thrown by the type initializer for Mono.Unix.Native.Syscall ---
System.DllNotFoundException: libMonoPosixHelper.so
有关详细信息和修复,请参阅this question。