2011-11-07 47 views
5

Tôi đã có một dự án C# mà tôi cần được biên dịch thành một tệp nhị phân gốc. Tôi đã đọc ở đây:Sử dụng tính năng biên dịch mono aot/aot-full: không có gì xuất hiện?

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

Đó Mono có thể precompile một hội đồng với một trong hai lựa chọn:

  1. --aot: Một hình ảnh biên dịch sẵn (về cơ bản giống như Ngen vì nó trông đến tôi)
  2. --aot = đầy đủ: Một đầy đủ biên soạn để dụ nhị phân có nguồn gốc của .exe gốc

tôi khá chắc chắn tôi hiểu biết những đúng, nhưng c có thể sai về tùy chọn --aot = full.

Tuy nhiên, khi tôi chạy:

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

tôi nhận được không có đầu ra, ngày sửa đổi lần cuối vào thực thi vẫn giữ nguyên, và không có tập tin được tạo ra. Tôi cũng đã thử như một thử nghiệm:

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

Tôi nhận được kết quả tương tự; không có đầu ra, không có tập tin hình ảnh hoặc tập tin nói chung, không có gì.

Tôi có thiếu gì đó ở đây không?

+0

Bạn đang sử dụng nền tảng nào? Và bạn đang thử phiên bản mono nào? –

+0

@RolfBjarneKvinge Windows 7 x64, Mono v2.10.6 – applepi

Trả lời

5

Bạn có thể tạo báo cáo lỗi. Thông tin AOT thường được hiển thị ngay cả khi không có --verbose. Với --verbose bạn sẽ nhận được rất nhiều bản in. Một khả năng khác là bạn đã bị hỏng cài đặt Mono.

Tuy nhiên, nếu bạn muốn tạo bản gốc thực thi nhị phân, bạn nên sử dụng mkbundle thay vì AOT.

3

Bạn không muốn - không, bạn muốn mkbundle.

--không thông báo cho mono để biên dịch trước một số mã thay vì sử dụng trình biên dịch jit, nó không cung cấp cho bạn một mã nhị phân toàn bộ mã máy. Đối với điều này bạn cần mkbundle.

Các vấn đề liên quan