.NET用のまともなテキスト差分/マージエンジンはありますか?[閉まっている]


108

要件:

  • 無料、できればオープンソース
  • .NETマネージ言語の1つで実装

グーグルはこれらを見つけました:

編集:

アプリは必要ありません。ライブラリのみです。


5
このスレッドはしばらくの間入稿されていませんが、どのオープンソースのdiffプロジェクトに行き着きましたか?私は同じものを探していますが、リストされているライブラリの他に、あまり見つかりませんでした(2年間でほとんど変化していないことに失望しています...)。
marr75

1
marr75:ここに行きます[Credit to Cheeso / Brian(下の回答を参照)]: " Google Diff / Patch / MergeコードがC#に移植されました。COMコンポーネントは引き続き機能しますが、.NETからの場合は、 .NETポートを直接使用したいのです。」
デイブ

1
私はこの回答が非常に役に立ったことに同意します。これは、非常に具体的なプログラミング問題のエンジンまたはアルゴリズムを要求しているため、再開するように指定しました。
Mladen Mihajlovic

回答:


88

GoogleのDiff / Patch / Matchを使用するCOMコンポーネントを取得できます。.NETから動作します。

2010年10月17日更新Google Diff / Patch / MergeコードがC#に移植されました。COMコンポーネントは引き続き機能しますが、.NETからの場合は、.NETポートを直接使用します。


14
これはC#(フルマネージドC#実装)に移植されているようです。C#バージョンは、Googleページのダウンロードセクションで入手できます。回答の「COM」ビットを編集できます。この実装(少なくともpython / jsバージョン)は、Googleドキュメントなどの広く使用されているいくつかのプロジェクトで使用されているため、すばらしい発見です。
ブライアンロー

ブライアン、ありがとう。答えを更新しました。
Cheeso

6
2015年に非常に役立つ回答。削除しないでください。このタイプのことが許可されている場合、サイトはより有用になります(読み取り:別のサイトがこれを許可するなど、このような有用な質問がある場合は、立ち上がってSOをエキスパートと交換します。 SO faqの誤った仮説に基づいた理由で閉じ続けます。
FastAl、2015

1
DiffPlexをお勧めします。それはnetstandard1.0、非常に軽量。次のようにして、WPFアプリケーションに簡単に埋め込むことができます。github.comRichTextBox
halllo

1
よりC#中心のポート(ネーミング、ケーシングなど)は次の場所にあります:github.com/pocketberserker/Diff.Match.Patch with nuget support:Install-Package Diff.Match.Patch
Kirk Woll

21

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がファイルの差分を生成するために利用するライブラリです。


情報ありがとうございます!しかし、私はより洗練された解決策を見つけたいと思っています。誰もきちんとした
ライブラリを

1
より良いライブラリを見つけたら、私たちに教えてください(または少なくとも私g)-私はかなり自分自身を検索しましたが、すでに述べたもの以外には何も見つかりませんでした。
Anheledir 2008

1
Diffplexはgithub.com/mmanela/diffplexに移動しました
codedave

5

GitSharpには、meyers diffに基づくdiffエンジンが含まれています。Diff.Sectionsコレクションに基づく単純なwpf diffビューアを実装するデモを見てくださいhttp ://www.eqqon.com/index.php/GitSharp#GitSharp.Demo


5

これまでの回答(GitSharpのリファレンスを除く)は3ウェイマージを扱っていないため、最近私がTony Garnock-Jonesのjavascript diff3実装(シンクロトロンプロジェクト、HuntおよびMcIlroy 1976に基づく)を移植した人を助ける場合に備えて C#に。

これは、diffと3者間マージメソッドの単純な単一ファイルポートですが、これは標準アルゴリズムであり、これまでのところ非常にうまく機能しています。https//gist.github.com/2633407


gist.githubリンクを解決できません-3ウェイマージメソッドをこのようなツールに統合できるかどうかまた、異なる結果を返すか、実際にすでに実装されているMyers Diffアルゴリズムと同じかどうかを知りたいのですが。
user8276908
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.