2008-09-26 65 views

Trả lời

19

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.

+0

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

+0

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

+3

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. –

1

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.

19

Remotesoft có một: Salamander .NET Linker

tôi không có bất kỳ kinh nghiệm với nó mặc dù.

+1

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

1

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.

+0

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

5

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ả ...

0

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ù ....

1

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.

3

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.

2

IL2CPU cho phần biên dịch.

+0

liên kết bị hỏng (-1) –

+0

cố định, suy nghĩ lạ xảy ra –

+0

Tôi rất thích một trình thực thi độc lập của trình biên dịch này! Nhưng từ những gì tôi đọc nó được tích hợp với VS và không còn sản xuất các tệp thực thi của Windows nữa. – Jack

3

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

+1

Lưu ý rằng nó không hỗ trợ Desktop – Jack

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