在linux和windows中运行.net(mono)应用程序

在linux和windows中运行.net(mono)应用程序,mono,Mono,我使用monodevelop在ubuntu中创建了一个c#应用程序。它在ubuntu中运行良好。 我试图在windows中运行该应用程序(在ubuntu中运行后创建的firstgtk.exe文件)。但它显示了错误消息。我如何使其在linux和windows中都可移植 错误消息是: 当我单击firstgtk.exe文件时,出现了一个命令提示符。它是空的。同时,microsoft消息(发送错误报告或不发送): firstgtk遇到问题,需要关闭 当我单击“不发送”按钮时,命令提示符和消息框消失。您的

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

错误消息是:

当我单击firstgtk.exe文件时,出现了一个命令提示符。它是空的。同时,microsoft消息(发送错误报告或不发送):

firstgtk遇到问题,需要关闭


当我单击“不发送”按钮时,命令提示符和消息框消失。

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


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

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

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

另一种可能是,您正在一个平台上使用Mono,并试图在另一个平台上的.NET上运行它。Mono附带了许多Windows上.NET中没有的库

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


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

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

请将实际错误消息作为问题的一部分。向我们显示错误消息,我们可以更好地帮助您。除此之外我猜。。。您是否在Windows环境中安装了Mono?你可能必须在Windows下编译Windows版本,除非你正在使用的开发工具可以从Linux中针对Windows。在他可以在Windows上编译Mono之前,他不需要在Windows上安装Mono吗?我认为这不是真的。Mono生成PE文件,由Mono运行时加载并执行。我相信相同的二进制文件在两个平台上都能工作。@codekaizen:是吗?酷。但在这种情况下,他仍然需要Windows上的Mono平台。甚至不清楚他是否有。@codekaizen:我查看了一下,发现MS tools生成的“100%.NET”应用程序是二进制兼容的,可以在Mono/Linux下运行。它没有提到Mono/Linux生成的二进制文件在Windows下本机可用。也许这是一个编译时标志?如果你不想,你不必在Windows上安装Mono框架。同样的二进制文件将在Mono for Linux、Mono for Windows、Mono for OSX或.Net for Windows上运行。谢谢,它正在工作。我创建了另一个简单的java控制台项目。当双击它的exe文件时,同样类型的错误也会出现。我需要安装什么吗?我想说“Good guess Anthony”,但我看到问题被更新以提供更多信息。所以,我会说“好答案”。-)现在已经添加了更多的信息,我可以看出我最后的猜测是正确的。安东尼用上面的正确答案跳了进来。必须安装GTK。