أي محرك فرق/دمج نص لائق لـ .NET؟[مغلق]
سؤال
متطلبات:
- مجانية، ويفضل أن تكون مفتوحة المصدر
- تم تنفيذه بإحدى اللغات المُدارة بواسطة .NET
وجدت جوجل هذه:
- خوارزمية فرق عامة وقابلة لإعادة الاستخدام على مشروع الكود
- خوارزمية الفرق O(ND) لـ C#
- مكتبة الفرق/الدمج/التصحيح لـ C#/.NET بواسطة جوشوا تاوبرير
يحرر:
لا توجد تطبيقات من فضلك، المكتبات فقط.
المحلول
يمكنك انتزاع مكون COM الذي يستخدم Diff/Patch/Match من Google.إنه يعمل من .NET.
التحديث، 2010، 17 أكتوبر:ال جوجل فرق/تصحيح/دمج رمز تم نقله إلى C#.لا يزال مكون COM يعمل، ولكن إذا كنت قادمًا من .NET، فستحتاج إلى استخدام منفذ .NET مباشرة.
نصائح أخرى
أعتقد أن "خوارزمية Diff العامة - القابلة لإعادة الاستخدام في C#" الموجودة على Codeproject هي أفضل ما يمكنك العثور عليه كمحرك NET-Engine لـ diff/patch/merge.لقد أنشأت مشروعًا بمفردي وهو يناسب احتياجاتي مع معظم السيناريوهات.هناك سيناريو أو اثنين من أسوأ السيناريوهات عندما تجعل الخوارزمية ملف التصحيح أكبر مما يجب أن يكون.لكن في معظم الحالات، يعمل الأمر بشكل جيد بالنسبة لي (الملفات النصية التي يزيد حجمها عن 30 ميجابايت).
أقوم حاليًا باختبار مشروع Codeproject آخر يمكنك العثور عليه هنا: http://www.codeproject.com/KB/applications/patch.aspxإنها تستخدم بعض ملفات DLL من Microsoft للتصحيح، لذا فهي تبدو مثيرة للاهتمام.لكن مكتبات الارتباط الحيوي (DLL) هذه غير مُدارة وهذا المشروع ليس سوى نوع من الغلاف لها.ولكن ربما يمكن أن تساعدك
يحرر:لقد وجدت للتو مشروعًا آخر، ديفبليكس: http://diffplex.codeplex.com/إنه مجموعة من مكتبة .NET Diffing Library مع عارض الفروق Silverlight وHTML.كما هو موضح هناك, DiffPlex هي المكتبة التي يستفيد منها CodePlex لإنشاء اختلافات الملفات.
يشتمل GitSharp على محرك فرق يعتمد على فرق مايرز.ألق نظرة على العرض التوضيحي الذي يطبق عارض فرق wpf بسيط يعتمد على مجموعة Diff.Sections: http://www.eqqon.com/index.php/GitSharp#GitSharp.Demo
لا تتعامل أي من الإجابات حتى الآن (باستثناء ربما مرجع GitSharp) مع دمج ثلاثي الاتجاهات، لذلك في حالة مساعدة أي شخص قمت مؤخرًا بنقل تطبيق javascript diff3 الخاص بـ Tony Garnock-Jones (من السنكروترون المشروع، استنادًا إلى Hunt وMcIlroy 1976) إلى C#.
إنه منفذ مبسط لملف واحد لطرق الدمج المختلفة وثلاثية الاتجاهات، ولكنه الخوارزمية القياسية ويعمل بشكل جيد جدًا بالنسبة لي حتى الآن: https://Gist.github.com/2633407