2009-02-26 26 views

Trả lời

16

Trình phản xạ có công cụ Diff.

+0

công cụ tốt, cảm ơn – flesh

+0

Điều này vẫn làm việc với phiên bản Reflector mới nhất? Tôi chỉ bị rơi làm một sự khác biệt. – mkmurray

+0

Tôi không thể làm việc này với phiên bản mới nhất (6.5), điều này quá tệ vì nó nghe rất hay. – theChrisKent

4

Tại sao không tháo rời trước và sau đó so sánh?

+1

Xuất với Reflector, sau đó so sánh các thư mục với Beyond Compare. Thật tuyệt! :) –

4

Sử dụng .NET Reflector (phiên bản miễn phí là tất cả các bạn cần) để mở file dll sau đó nhấp chuột phải và chọn để xuất khẩu chúng vào các thư mục riêng biệt.

Sau đó sử dụng ExamDiff Pro để so sánh các thư mục (Bạn có thể dùng thử miễn phí 30 ngày). Bạn có thể điều hướng thông qua các thư mục con và mở từng tệp khi cần thiết vào cửa sổ So sánh mới (Chỉ cần nhấp đúp vào trong cửa sổ ExamDiff Pro). Hoạt động tuyệt vời!

ExamDiff Pro cũng có plugin Dump PE32 sẽ so sánh trực tiếp giữa tệp .dll và .exe. Điều này rất hữu ích khi nhìn vào các thay đổi tiêu đề và cờ các khác biệt nhị phân, nhưng sẽ không dịch ngược nó cho bạn (vì vậy hãy sử dụng phương thức Reflector ở trên).

+0

nah nó không hoạt động. tôi có thể thấy mã trong phản xạ tốt. nhưng xuất cho 134 lỗi. Xong. – hamish

17

dotPeek từ JetBrains cũng có thể được sử dụng. Nó cũng miễn phí.

  • Mở lắp ráp trong dotPeek
  • Chọn lắp ráp
  • File -> Export để dự
  • Chọn một vị trí trên đĩa

Lặp lại ở trên cho lắp ráp bạn muốn để so sánh, sau đó mở hai thư mục trong một công cụ khác. Tôi đã sử dụng WinMerge.

Bạn sẽ nhận thấy rằng phần lớn các tệp có sự khác biệt. Điều này là do các tập tin có một comment ở phía trên như thế này

// MVID: {some guid here} 

Bạn có thể tạo một bộ lọc trong WinMerge để bỏ qua nó

  • Tools -> Filter ...
  • Goto " dòng Filters" tab
  • Thêm bộ lọc sau ^// MVID:

Khi bạn chấp nhận những thay đổi, nó sẽ quét lại các thư mục và bỏ qua bất kỳ dòng nào bắt đầu bằng nhận xét đó. Bây giờ bạn sẽ chỉ thấy những thay đổi bạn quan tâm.

+2

Cái này hoạt động tuyệt vời và hoàn toàn miễn phí. Bạn có thể cần thêm nhiều bộ lọc hơn nữa. Tôi cũng phải thêm '^ // Assembly location:'. Cảm ơn Colin – mariozski

+0

Ngoài ra, hãy chắc chắn nhấp vào tùy chọn hộp kiểm "Bật bộ lọc dòng", trong tab LineFilters. Tôi đã bỏ lỡ nó, ban đầu, và dành mười phút gãi đầu. –

0

Đội Microsoft BCL có một công cụ thực hiện việc này, nó được gọi là LibCheck và có thể được tìm thấy ở đây

http://blogs.msdn.com/b/bclteam/archive/2005/03/21/400123.aspx

Đây là một công cụ cũ, và tôi đã phải biên dịch lại mã nguồn sử dụng một phiên bản sau này của thời gian chạy, nhưng nó hoạt động tốt và cung cấp các báo cáo html về các thay đổi.

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