要件:
- 無料、できればオープンソース
- .NET マネージ言語の 1 つに実装されている
Google はこれらを見つけました:
- codeprojectの汎用的で再利用可能な差分アルゴリズム
- C# の O(ND) 差分アルゴリズム
- Joshua Tauberer によるC#/.NET 用の差分/マージ/パッチ ライブラリ
編集:
アプリは使用せず、ライブラリのみを使用してください。
要件:
Google はこれらを見つけました:
編集:
アプリは使用せず、ライブラリのみを使用してください。
Google の Diff/Patch/Match を使用する COM コンポーネントを取得できます。.NET から動作します。
2010 年 10 月 17 日更新: Google Diff/Patch/Merge コードが C# に移植されました。COM コンポーネントは引き続き動作しますが、.NET を使用している場合は、.NET ポートを直接使用する必要があります。
Codeproject の "Generic - Reusable Diff Algorithm in C#" は、diff/patch/merge の .NET エンジンとして見つけることができる最高のものだと思います。私はそれを使って自分でプロジェクトを作成しましたが、ほとんどのシナリオで私のニーズに合っています。アルゴリズムによってパッチ ファイルが必要以上に大きくなった最悪のシナリオが 1 つまたは 2 つあります。しかし、ほとんどの場合、私にとっては問題なく動作します (サイズが 30 MB を超えるテキストファイル)。
私は現在、別の Codeproject-Project をテストしています。ここで見つけることができます: http://www.codeproject.com/KB/applications/patch.aspx パッチに Microsoft の DLL を使用しているので、興味深いものです。しかし、これらの DLL は管理されておらず、このプロジェクトはそのためのある種のラッパーにすぎません。しかし、多分それはあなたを助けることができます
編集: 別のプロジェクトDiffPlexを見つけました: http://diffplex.codeplex.com/ これは、.NET Diffing Library と Silverlight および HTML diff ビューアーの両方を組み合わせたものです。そこに記載されているように、DiffPlex は CodePlex がファイルの差分を生成するために利用するライブラリです。
これまでの回答はどれも (おそらく GitSharp リファレンスを除いて) 3 方向マージを扱っていないため、誰かに役立つ場合に備えて、最近、Tony Garnock-Jones の javascript diff3 実装を移植しました ( シンクロトロンプロジェクトから、Hunt と McIlroy 1976 に基づいています)。 C#に。
これは diff および 3 方向マージ メソッドの単純化された単一ファイル ポートですが、標準アルゴリズムであり、これまでのところ非常にうまく機能しています: https://gist.github.com/2633407