7

我有一个需要编译为本机二进制文件的 C# 项目。我在这里读过:

http://www.mono-project.com/AOT

Mono 可以将程序集预编译为以下两个选项之一:

  1. --aot :预编译的图像(在我看来与 Ngen 基本相同)
  2. --aot=full:完全编译为原始 .exe 的本机二进制实例

我相当确定我理解这些是正确的,但关于 --aot=full 选项可能是错误的。

但是,当我运行时:

 mono.exe --aot=full --verbose program.exe  

我没有得到任何输出,可执行文件的最后修改日期保持不变,并且没有生成文件。我也尝试过作为测试:

 mono.exe --aot --verbose program.exe 

我得到相同的结果;没有输出,没有图像文件或一般文件,什么都没有。

我在这里错过了什么吗?

4

2 回答 2

6

你可能应该做一个错误报告。即使没有 --verbose,通常也会显示 AOT 信息。使用 --verbose 你应该得到很多打印。另一种可能是您破坏了 Mono 安装。

然而,如果你想生成本地可执行二进制文件,你应该使用 mkbundle 而不是 AOT。

于 2011-11-08T17:21:47.820 回答
3

你不想要 --aot,你想要mkbundle

--aot 告诉 mono 预编译一些代码而不是使用 jit 编译器,它不会为您提供完整的机器代码二进制文件。为此,您需要 mkbundle。

于 2011-11-09T22:54:16.973 回答