要件:
- 無料、できればオープンソース
- .NETマネージ言語の1つで実装
グーグルはこれらを見つけました:
- codeproject上の汎用の再利用可能なDiffアルゴリズム
- C#のO(ND)差分アルゴリズム
- Joshua TaubererによるC#/。NETの差分/マージ/パッチライブラリ
編集:
アプリは必要ありません。ライブラリのみです。
要件:
グーグルはこれらを見つけました:
編集:
アプリは必要ありません。ライブラリのみです。
回答:
GoogleのDiff / Patch / Matchを使用するCOMコンポーネントを取得できます。.NETから動作します。
2010年10月17日更新:Google Diff / Patch / MergeコードがC#に移植されました。COMコンポーネントは引き続き機能しますが、.NETからの場合は、.NETポートを直接使用します。
Install-Package Diff.Match.Patch
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