2008-09-26 22 views
97

Yêu cầu:Bất kỳ công cụ phân biệt/hợp nhất văn bản nào cho .NET?

  • miễn phí, tốt nhất là mã nguồn mở
  • thực hiện theo một trong các NET quản lý langs

Google tìm thấy những:

EDIT:

Không có ứng dụng xin vui lòng, chỉ thư viện.

+4

chủ đề này chưa được quản trị trong một thời gian, nhưng bạn đã kết thúc dự án khác về nguồn mở nào? Tôi đang tìm kiếm như vậy và bên cạnh các thư viện được liệt kê tôi đã không tìm thấy nhiều (thất vọng rằng rất ít đã thay đổi trong 2 năm ...). – marr75

+1

marr75: tại đây bạn đi [Credit to Cheeso/Brian (xem câu trả lời bên dưới)]: "[Google Diff/Patch/Merge code] (http://code.google.com/p/google-diff-match-patch /) đã được chuyển đến C#. Thành phần COM vẫn hoạt động, nhưng nếu bạn đến từ .NET, bạn sẽ muốn sử dụng cổng .NET trực tiếp. " – Dave

+10

Câu trả lời rất hữu ích trong năm 2015. Vui lòng không xóa, Trang web sẽ hữu ích hơn nếu loại nội dung này được cho phép (đọc: một trang web khác sẽ cho phép điều này và hơn thế nữa, và biến SO thành các chuyên gia trao đổi nếu các câu hỏi hữu ích như điều này tiếp tục bị đóng vì các lý do dựa trên giả thuyết bị lỗi trong SO faq). – FastAl

Trả lời

76

Bạn có thể lấy the COM component that uses Google's Diff/Patch/Match. Nó hoạt động từ .NET.

Cập nhật, 2010 Tháng 10 17: Google Diff/Patch/Merge code đã được chuyển sang C#. Thành phần COM vẫn hoạt động, nhưng nếu bạn đến từ .NET, bạn sẽ muốn sử dụng cổng .NET trực tiếp.

+13

Dường như điều này đã được chuyển sang C# (quản lý đầy đủ C# triển khai). Phiên bản C# có sẵn trong phần tải xuống trên trang Google. Bạn có thể chỉnh sửa bit "COM" của câu trả lời. Rất hay khi việc triển khai này (ít nhất là phiên bản python/js) được sử dụng trong một số dự án được sử dụng rộng rãi như Google Documents. –

+0

Brian, cảm ơn. Tôi đã cập nhật câu trả lời. – Cheeso

+4

Câu trả lời rất hữu ích trong năm 2015. Vui lòng không xóa, Trang web sẽ hữu ích hơn nếu loại điều này được cho phép (đọc: một trang web khác sẽ cho phép điều này, và nhiều hơn nữa, và tăng lên và biến SO thành các chuyên gia trao đổi nếu các câu hỏi hữu ích như điều này tiếp tục bị đóng vì các lý do dựa trên giả thuyết bị lỗi trong SO faq). – FastAl

20

Tôi nghĩ rằng "Thuật toán Diff phổ biến có thể tái sử dụng trong C#" trên Codeproject là tốt nhất bạn có thể tìm thấy dưới dạng .NET-Engine cho diff/patch/merge. Tôi đã thực hiện một dự án của riêng mình với nó và nó phù hợp với nhu cầu của tôi với hầu hết các kịch bản. Có một hoặc hai scencario trường hợp xấu nhất khi thuật toán thực hiện các tập tin bản vá lớn hơn nó phải được. Nhưng trong hầu hết các trường hợp nó hoạt động tốt cho tôi (textfiles với kích thước> 30 MB).

Tôi hiện đang thử nghiệm một dự án Codeproject khác mà bạn có thể tìm thấy tại đây: http://www.codeproject.com/KB/applications/patch.aspx Nó đang sử dụng một số DLL từ Microsoft để vá, vì vậy có vẻ thú vị. Nhưng những DLL không được quản lý và dự án này chỉ là một số loại trình bao bọc cho nó. Nhưng có lẽ nó có thể giúp bạn

Edit: Chỉ cần tìm thấy một dự án khác, DiffPlex: http://diffplex.codeplex.com/ Đó là một sự kết hợp của một NET Thư viện diffing với cả một Silverlight và HTML diff xem. Như đã nêu there, DiffPlex là thư viện mà CodePlex tận dụng để tạo ra sự khác biệt của tệp.

+0

cảm ơn thông tin! nhưng tôi hy vọng sẽ tìm ra giải pháp phức tạp hơn. Tôi không thể tin rằng không ai tạo ra một số thư viện gọn gàng – aku

+1

Khi bạn tìm thấy một thư viện tốt hơn, hãy cho chúng tôi biết (hoặc ít nhất là tôi * g *) - tôi đã tìm kiếm khá lâu và không tìm thấy bất cứ thứ gì bên cạnh đã đề cập. – Anheledir

+0

Diffplex đã chuyển đến https://github.com/mmanela/diffplex – codingdave

4

Không có câu trả lời nào cho đến nay (ngoại trừ tham chiếu GitSharp) đối phó với sự hợp nhất 3 chiều. giúp đỡ bất cứ ai tôi gần đây đã chuyển thực hiện javascript diff3 Tony Garnock-Jones (từ dự án synchrotron, dựa trên Hunt và McIlroy 1976) để C#.

Đó là một cổng duy nhất tập tin đơn giản của diff và ba chiều kết hợp các phương pháp, nhưng đó là thuật toán tiêu chuẩn và cho đến nay hoạt động rất tốt đối với tôi: https://gist.github.com/2633407

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