在linux和windows中运行.net(单声道)应用程序

时间:2010-07-15 17:19:48

标签: mono

我使用monodevelop在ubuntu中创建了一个c#应用程序。它在ubuntu中运行良好。 我尝试在windows中运行该应用程序(在ubuntu中运行后创建的firstgtk.exe文件)。但它显示错误消息。如何在linux和windows中进行移植?

错误消息是:

当我单击firstgtk.exe文件时,命令提示符已经到来。它是空白的。同时微软消息(发送错误报告或不发送):

  

firstgtk遇到问题需要关闭。

当我点击不发送按钮时,命令提示符和消息框都消失了。

3 个答案:

答案 0 :(得分:4)

Mono编译为CIL代码,在其他平台上完全可移植到.NET或Mono。我可以在Mac上编译我的C#代码,并在.NET或Mono上以Linux或Windows运行生成的EXE。

如果没有实际的错误消息,我们只能在这里猜测问题。也就是说,根据我的经验,在Linux / UNIX上使用Mono编写的应用程序在Windows上创建错误的最常见原因是具有特定于平台的路径分隔符或区分大小写问题的路径名。 Windows文件系统不区分大小写,但它们位于Linux / UNIX上。

另一种可能性是你在一个平台上使用Mono并尝试在另一个平台上运行它。 Mono附带了许多在Windows上不存在于.NET中的库。

实际上,我猜最终的可能性是GTK#是在Mono上生成GUI代码的常用方法。 GTK#依赖于存在的GTK + C库,这在Linux上非常常见,但在Windows上不太可能,除非已经明确安装。

我们确实需要知道错误信息是什么。

答案 1 :(得分:1)

您的代码应该可以在Linux和Windows之间移植。唉,二进制文件不是。 ...

编辑:正如评论者指出的那样,Mono确实生产和使用PE可执行文件,但其他问题可能会限制可移植性。

答案 2 :(得分:1)

如果你正在使用Gtk#,你的应用程序可以在Windows和Linux之间移植。我的猜测是你没有在Windows上正确安装Gtk#(或者根本没有安装?)。您可以从here下载。截至目前,最新版本为2.12.10