Mono应用程序编译并在12.04上运行,未在14.04上运行

时间:2014-05-16 06:15:57

标签: ubuntu mono

我有一个应用程序,在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重新编译,但这会是一个问题吗?如果没有,还有什么我应该注意的吗?

1 个答案:

答案 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