2010-01-27 31 views
2

你能推薦一個很好的文件比較實用程序,它能夠很好地處理C#。我已經嘗試了WinMerge,BeyondCompare和KDiff,並且它們不夠好,例如如果我具有相同名稱的功能,但放置在文件的不同區域,則會將其顯示爲差異。C#文件比較實用程序

+1

請看我的新答案,如果你認爲這是正確的答案,請將其標記出來。唯一的原因是讓它對社區有用。五年前情況完全不同。 – JotaBe 2015-04-23 09:44:34

+0

我同意@JotaBe,情況發生了變化,現在他的回答更加準確。我已經更新了我的答案以直接發給他,但如果您仍然使用此帳戶,則應該將接受的答案更新爲他的答案。 – 2015-07-06 09:55:36

回答

1

[更新(2015):自寫這個答案以來,現在有更多的現代工具,可以做各種語言的代碼的結構和語義合併和差異。見JotaBe's answer的一些例子]

原來的答覆(2010): 不幸的是,這是一種差異的性質。它始終是逐行比較,這不是一種語言意識的比較。據我所知,沒有任何東西可以滿足你的要求(雖然總是有可能我錯了)。

您可以使用像regionerate這樣的工具來標準化班級佈局,然後再進行比較。這將命令你所有的方法,所以你不會遇到同名文件中不同位置的方法的問題。

+1

區域替代方案非常出色,但現在有強大的工具可以完美地完成問題所要求的內容,而無需修改代碼。他們甚至可以做更多有趣的事情。請看我的答案。 – JotaBe 2015-04-23 09:47:56

0

我不認爲你會找到一個文本比較工具來做到這一點。你最好重新組織這些函數,使它們在相同的地方。我見過設計器生成的代碼執行此操作(即,每次文件重新生成時移動函數)。它令人討厭,但我認爲你不會解決它。 BeyondCompare確實是最好的比較實用工具之一。

1

我知道的唯一工具可以做到這一點(我不知道它可以)是Git

據我所知,它可以跟蹤功能,即使它們移動到不同的文件,所以在這種情況下使用它不會顯示出差異。

查看this answer瞭解更多詳情。

1

我爲此任務使用Devart CodeCompare。 Native VS編輯器讓我可以很好地處理C#和VB。他們稱這個功能爲「結構比較」。這對你有用。

2

此時(2015年4月),有有考慮至少3個商業比較工具的C#代碼文件的結構,使先進的DIFF和代碼文件之間的合併:

這三種工具支持這種先進的比較只在付費版本(或試用期)。 AFAIK沒有免費的工具可以做到這一點。

+0

我支付SemanticMerge,它的價值3美元/月。 – 2015-04-23 09:41:44