2012-01-26 38 views
29

Đôi khi tôi muốn nhanh chóng xem biểu diễn IL đoạn mã của tôi trong C#, để hiểu chính xác điều gì xảy ra với các câu lệnh mã khác nhau, như được thực hiện here for example.Một công cụ để kiểm tra mã IL dễ dàng

Tôi biết có ildasm, Reflector, ILSpy, dotPeek và có thể một số công cụ khác có sẵn. Những gì tôi tự hỏi ở đây là nếu có cách nào tao nhã hơn bằng cách viết một số dòng mã để xem IL tương ứng, hơn là biên dịch mã .net, nạp assembly vào một trong những chương trình đó và tìm mã bạn tò mò về .

Có thể có plugin cho studio trực quan, điều này sẽ thêm tùy chọn nhấp chuột phải để "xây dựng và xem mã IL" hoặc bất kỳ cách thuận tiện nào khác?

Edit:

Sau khi một số chi tiết googling tôi tìm thấy NDasm codeplex project mà làm những gì tôi đang tìm kiếm - tích hợp vào visual studio.

Nhưng đề xuất LINQPad của vcsjones cũng rất tuyệt, vì vậy tôi đánh dấu nó là được chấp nhận, cảm ơn. Một công cụ thực sự hữu ích ...

+0

Tôi chắc rằng Visual Studio Ultimate có thể làm điều này, nhân tiện. – Ryan

+0

@minitech Thật sao? Làm sao? – CodingGorilla

+0

@CodingGorilla: Tôi không nhớ. Tôi đã nhìn thấy nó một lần, nhưng tôi chưa bao giờ mua nó ... bạn biết đấy, đó là 15.000 đô la. – Ryan

Trả lời

47

Tôi thường sử dụng LINQPad cho điều đó. Chỉ cần dán một số C# và chuyển sang chế độ xem IL. Ví dụ:

enter image description here

tôi thích nó bởi vì bạn cũng có thể chỉ cần gửi biểu hoặc báo cáo thay vì một chương trình đầy đủ:

enter image description here

tốt nhất của tất cả, nó hoàn toàn miễn phí (với tính năng cao cấp tùy chọn).

+8

Có lẽ đáng chú ý là LINQPad là một công cụ tuyệt vời mà tôi nghĩ mọi nhà phát triển nên có, ngay cả khi họ không bao giờ nhìn vào IL. Nó rất hữu ích trong * nhiều cách *. – vcsjones

+0

IL cũng có các mẹo công cụ, vì vậy bạn có thể xem tất cả những gì nó làm, nếu bạn không biết/nhận ra nó. Nó cũng sẽ bình luận trong các tên biến, cũng như hiển thị kiểu của chúng trên đầu công cụ. Ví dụ: di chuột qua ldc.i4.3 sẽ cung cấp cho bạn: "Đẩy giá trị số nguyên của 3 vào ngăn xếp đánh giá dưới dạng int32". Tôi không biết phiên bản nào hỗ trợ phiên bản này, nhưng nó nằm trong phiên bản mới nhất (V5.10) nhưng tôi cho rằng phiên bản này cũng được hỗ trợ trong phiên bản trước (V4) –

0

Nếu bạn có Trình phản xạ, bạn có thể sử dụng phần bổ trợ Snippy. Đây là một bài đăng trên blog: Reflector Snippy Addin.

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