Tôi muốn phân phối các chương trình .NET của mình mà không có khung .NET. Có thể biên dịch chương trình .NET thành mã máy không?Có thể biên dịch mã .NET IL sang mã máy không?
Trả lời
Có, bạn có thể biên dịch trước bằng cách sử dụng Ngen.exe, tuy nhiên điều này không loại bỏ sự phụ thuộc CLR.
Bạn vẫn phải gửi các hội đồng IL, lợi ích duy nhất của Ngen là ứng dụng của bạn có thể bắt đầu mà không cần gọi JIT, vì vậy bạn sẽ có được thời gian khởi động nhanh thực sự.
Theo CLR Qua C#:
Ngoài ra, hội precompiled sử dụng Ngen thường chậm hơn so với JIT'ed hội vì trình biên dịch JIT thể tối ưu hóa cho các máy mục tiêu 64 (32-bit? -bit? Các thanh ghi đặc biệt? vv), trong khi NGEN sẽ chỉ tạo ra một biên dịch cơ bản .
EDIT:
Có một số cuộc tranh luận về những thông tin trên từ CLR Qua C#, như một số người nói rằng bạn được yêu cầu để chạy Ngen trên máy mục tiêu chỉ là một phần của quá trình cài đặt.
Tôi không nghĩ rằng điều đó là có thể. Bạn có thể thực hiện một hội đồng đã được khai thác nhưng bạn vẫn cần khung công tác.
Remotesoft có một: Salamander .NET Linker
tôi không có bất kỳ kinh nghiệm với nó mặc dù.
câu hỏi này đã được hỏi trước và một lần nữa đây là câu trả lời đúng duy nhất. là, có thể nhưng ở một mức giá. – chrissie1
Tôi nghĩ bạn không nên: Đó là nhiệm vụ của trình biên dịch JIT.
Tuy nhiên, bạn có thể sử dụng ClickOnce hoặc Windows Installer để triển khai nó để khung bị thiếu không phải là vấn đề lớn: bạn có thể yêu cầu trình cài đặt tải xuống Khung và cài đặt.
Xin lỗi, nhưng chỉ mới bắt đầu trong VBnet. Dường như bạn không phải tải xuống Framework. Khi biên soạn dự án vbnet, bạn có thể bao gồm tùy chọn Framework. Tôi có một số lỗi khi triển khai nhưng ý tưởng có vẻ như vậy. – webzy
Có một số công cụ của bên thứ ba thực hiện việc này, ví dụ:
Một (đắt tiền và độc quyền, giấy phép bắt đầu từ $ 1599) Sản phẩm có thể làm điều này là Xenocode Postbuild. Đã không sử dụng nó bản thân mình mặc dù, với nó chi phí về tổng sản phẩm quốc gia của một quốc gia châu Phi nhỏ và tất cả ...
Tôi luôn luôn nghĩ rằng nó sẽ được mát mẻ để biên dịch C# để mã máy trực tiếp mà không có sự phụ thuộc CLR mặc dù ....
Nếu bạn chỉ quan tâm đến kích thước triển khai Khung, bạn có thể đọc trên this.
Có thể biên dịch mã .NET IL thành mã máy không?
Có, nhưng .NET Framework áp dụng cho bạn lúc chạy (mặc định) hoặc lúc cài đặt (ngen).Trong số các lý do khác, mã máy IL -> này được thực hiện riêng trên mỗi máy cài đặt để nó có thể được tối ưu hóa cho máy cụ thể đó.
Tôi muốn phân phối các chương trình .NET của mình mà không có khung .NET. Có thể biên dịch chương trình .NET thành mã máy không?
Không, vì tất cả ý định và mục đích bạn không thể thực hiện việc này. Cách giải quyết của bên thứ ba có thể hoạt động trong một số trường hợp, nhưng lúc đó tôi sẽ không thực sự coi đó là "mã được quản lý" hoặc ".NET" nữa.
Nhìn vào dự án MONO: lệnh mono có tùy chọn --aot. http://www.mono-project.com/AOT
Có, bạn có thể ngay bây giờ! Gần đây, Microsoft đã công bố .NET Native, một công nghệ biên dịch ứng dụng của bạn với .NET Native runtime (chúng gọi nó là MRT) thành một nhị phân (thực sự là một thư viện thực thi và một thư viện động).
Xem các liên kết: http://blogs.msdn.com/b/dotnet/archive/2014/04/02/announcing-net-native-preview.aspx http://blogs.msdn.com/b/dotnet/archive/2014/04/24/dotnetnative-performance.aspx
Lưu ý rằng nó không hỗ trợ Desktop – Jack
- 1. Mã C# không được biên dịch có biên dịch thành IL và chạy trên CLR không?
- 2. Biên dịch sang mã giả
- 3. Biên dịch mã .NET trong .NET 4?
- 4. Tại sao việc biên dịch mã .NET IL dễ dàng như vậy?
- 5. Tôi có thể biên dịch Java thành mã gốc không?
- 6. Có trình biên dịch mã máy gốc cho JavaScript không?
- 7. Viết trình biên dịch cho .net - IL hoặc Bytecode?
- 8. Có thể các trán python biên dịch mã CUDA không?
- 9. java có thể chạy mã scala đã biên dịch không?
- 10. Biên dịch mã OpenMP thành mã C
- 11. Ứng dụng .NET có thể được biên dịch sang nguồn gốc không?
- 12. Tại sao mã .NET biên dịch thành MSIL?
- 13. IL Compiler for .NET?
- 14. Hiệu suất biên dịch mã bằng biên dịch biên dịch
- 15. Xem mã IL được tạo từ biểu thức được biên dịch
- 16. Dịch mã C# sang AST?
- 17. Kích cỡ IL cho mã Xamarin C#?
- 18. Tại sao .net sử dụng trình biên dịch JIT thay vì chỉ biên dịch mã một lần trên máy đích?
- 19. Chuyển mã Delphi sang 64 bit - Tại sao không có cảnh báo trình biên dịch?
- 20. Trình biên dịch sẽ chỉ biên dịch mã có thể được thực thi?
- 21. Tại sao mã này không biên dịch?
- 22. mã được biên dịch lẻ
- 23. Có trình biên dịch mã nguồn gốc của Lisp không?
- 24. Có trình biên dịch Ruby .NET không?
- 25. Có thể biên dịch mã groovy để chạy trong JRE không?
- 26. Tôi có thể sử dụng .NET Reflector để sửa đổi và biên dịch mã nhanh chóng không?
- 27. Trình biên dịch C++ có thể tự động loại bỏ mã trùng lặp không?
- 28. Mã .NET 4.0 có thể tương thích với mã .NET 2.0 không?
- 29. Mục tiêu-C có biên dịch thành mã gốc hoặc mã byte không?
- 30. Trình gỡ lỗi mã mức IL
Tại sao hội đồng ngen chậm hơn? ngen được gọi trên máy đích, do đó không nên tạo ra sự khác biệt. Ồ, và ngen không phải là câu trả lời thực sự cho câu hỏi. – OregonGhost
Ngen được nhà phát triển gọi để biên dịch trước ứng dụng chứ không phải trên máy đích. Vui lòng đọc phần trên Ngen trong CLR Qua C#. – FlySwat
Jon, điều đó phụ thuộc. 'ngen' có thể được gọi bởi quá trình cài đặt trên máy đích, và theo như tôi biết, điều này được thực hiện cho các sản phẩm Microsoft khác nhau được thực hiện trong .NET. –