【发布时间】:2011-02-11 04:56:05
【问题描述】:
我在 Linux 上安装了 MonoDevelop 并编写了一个 shell GTK+ 应用程序。当我编译并运行应用程序时,它会在 Linux 中正确显示。当我将 .exe 移至 Windows 时,出现“Windows 无响应”崩溃,因此没有堆栈跟踪。然后我想我必须为 Windows 安装 Mono,所以我这样做了,但没有运气 - 我仍然崩溃。
更一般地说,我很难想象这里发生了什么。无论我做错了什么,请不要打扰我:
- 启动 Mono 项目的人编写了自己的编译器(可能从头开始)来编译 C# 代码。他们在查看 .NET Framework 后对此进行了建模
- 他们还为字节码的单声道实现编写了一个 CLR。任何想要运行此代码的架构都需要 Mono Runtime,因为只有 Mono Runtime 才能运行代码。
我说的对吗?为什么我的程序不运行?提前致谢。
【问题讨论】:
-
如果您的第二点是“使用 Mono 的 C# 编译器编译的代码只能由 Mono CLR 运行”,那么答案是“否”。它也可以由 MS CLR 运行(假设安装了所有必需的库。)
-
这可能是一个愚蠢的问题,但是您是否通过 Mono 直接启动程序?例如。
mono myprogram.exe -
@Foole - 如果它可以在 MS CLR 上运行,那么为什么我首先需要在 Windows 中的 Mono 中打开我的项目?如果字节码与 MS CLR 兼容,为什么我不能像打开常规 exe 一样打开它。
-
@Kevin - 根本不是一个愚蠢的问题 - 那就是我做错了。我只是在 Windows 中双击 .exe,认为它应该“知道”用 CLR 打开它——我真的不明白为什么这是不正确的想法。有什么见解吗?谢谢。
-
我的猜测是您没有在 MS.NET 下安装所需的库。