2013-11-22 20 views
7

Tôi muốn biên dịch chương trình C# sử dụng dòng lệnh ngen cho một mục đích đặc biệt. Vì vậy, tôi tạo một ứng dụng giao diện điều khiển trong vs2010 và đặt tên là ngentest. Vì vậy, một tập tin theo tên ngentest.vshost.exe được tạo ra trong vs2010\projects\ngentest\bin\debug. tôi đã sử dụng tập tin này như một đối số lệnh ngen trong Visual Studio 2010 Command Prompt như sau:Làm cách nào để biên dịch với ngen.exe và Cách chạy mã gốc được tạo?

"ngen "c:\documents\vs2010\projects\ngentest\bin\debug\ngentest.vshost.exe" 

nhưng khi tôi làm điều này, tôi không thể nhận PublicKeyToken và tôi không thể tìm thấy bất kỳ lắp ráp bất cứ nơi nào! nếu lắp ráp của tôi được tạo ra, nó ở đâu? và làm thế nào tôi có thể tìm thấy nó? Tôi làm thế nào tôi có thể chạy nó (với lệnh, hoặc ....!) Để có được sản lượng của tôi?

nếu không, khi tôi xây dựng dự án với xây dựng ngen từ menu Xây dựng từ VS, một số tệp đã được tạo trong thư mục được đề cập và một trong số đó là ngentest.exe.

+0

Trước hết, bạn nên làm điều này trên ngentest.exe, không phải trên ngentest.vshost.exe. Thứ hai, nơi nó được lưu trữ không quan trọng, hệ thống sẽ tìm thấy nó cho bạn. Đó là một nơi nào đó trong một thư mục ẩn trong thư mục Windows của bạn. –

+0

nhưng khi tôi hiểu ngentest.exe chứa mã MSIL, nhưng ngen cần mã được quản lý để tạo mã nhị phân (máy cụ thể). và nếu tôi sử dụng lệnh "ngen ngentest.exe", làm thế nào tôi có thể chạy dự án của tôi? – Azad

+0

Tôi đọc trang này, nhưng nó không thể giúp tôi ... – Azad

Trả lời

15

Khi bạn biên dịch mã C#, nó sẽ được biên dịch thành một hội đồng IL. Và NGEN lấy IL assembly làm đầu vào và cài đặt assembly và các phụ thuộc của nó vào Cache hình ảnh gốc.

Thí dụ nhị của bạn, bạn cần phải mở một admin VS Cửa sổ nhắc lệnh, sau đó gõ như sau ngen

cài đặt ngentest.exe

này sẽ cài đặt exe và các tập tin phụ thuộc dll của bạn vào Bộ nhớ cache hình ảnh gốc.

Sau đó, khi bạn chạy exe, thời gian chạy .NET sẽ tải và chạy hình ảnh gốc được cài đặt vào Bộ nhớ cache hình ảnh gốc. Bạn không cần phải thực hiện thêm bất kỳ bước nào để có .NET chạy Hình ảnh Gốc. Thời gian chạy kiểm tra bộ đệm ẩn hình ảnh gốc để xem liệu có một hình ảnh gốc hợp lệ cho lắp ráp IL hay không.

Bạn có thể xác minh rằng một native image được cài đặt bằng cách gõ lệnh sau: màn hình

ngen ngentest.exe

Xem http://blogs.msdn.com/b/junfeng/archive/2007/02/18/native-image-loading.aspx để biết thêm về Native tải ảnh.

Lưu ý rằng ngentest.vhost.exe là một tạo phẩm được tạo bởi VS để cung cấp trải nghiệm gỡ lỗi tốt hơn. Nó được sử dụng bởi VS. Bạn không nên sử dụng nó cho NGEN hay bất cứ điều gì cho vấn đề đó. Xem câu hỏi: What is the purpose of the vshost.exe file? để biết thêm thông tin.

+0

Nếu tôi đang ở trên một máy khách hàng tôi sẽ không có một Command Promt VC. Đâu là ngen in .net 4.5? – Offler

+0

ngen.exe nằm trong thư mục khung: % windir% \ Microsoft.NET \ Framework \ v4.0.30319 \ ngen.exe cho 32bit và % windir% \ Microsoft.NET \ Framework64 \ v4.0.30319 \ ngen.exe cho 64bit –

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