我有兩個VS C#項目(特別是Outlook插件),我認爲它們是非常類似於,可能有100行代碼。我有點擔心這個項目可能有其他配置選項,所以我想比較這兩個。比較(和合並)兩個VS C#項目
查看兩個代碼庫之間差異的最佳方法是什麼?
我已經嘗試將兩個項目放在並行目錄中並使用diff,但由於項目命名不同,因此某些文件不匹配。我只是想知道是否有更簡單的方法來做到這一點?
我有兩個VS C#項目(特別是Outlook插件),我認爲它們是非常類似於,可能有100行代碼。我有點擔心這個項目可能有其他配置選項,所以我想比較這兩個。比較(和合並)兩個VS C#項目
查看兩個代碼庫之間差異的最佳方法是什麼?
我已經嘗試將兩個項目放在並行目錄中並使用diff,但由於項目命名不同,因此某些文件不匹配。我只是想知道是否有更簡單的方法來做到這一點?
這聽起來像你需要像WinMerge這樣的東西來通過並指出兩個項目之間的差異。它是免費的,我知道你可以將文件夾內容與WinMerge進行比較,所以這可能是一個很好的開始。在項目文件夾上運行WinMerge,它應該生成一個詳細的比較概述文件之間的差異。
參見比較文件夾,這個教程:
http://manual.winmerge.org/CompareDirs.html
這項工作重命名文件? – 2011-10-26 19:16:39
我很確定有這方面的計算方法。在最壞的情況下,我知道你可以選擇特定的文件進行比較。 –
處理重命名的文件很困難。如果文件已被重新命名和編輯,那麼比較工具很難知道它們在某個時刻實際上是同一個文件。如果它試圖做到這一點,它可能會給你很多誤報,它會看到類似的不同名稱的文件。並且必須有一些門檻來決定兩個相似的文件是否相似/不同以作出該決定。 – AaronLS
一種方法:製作兩個項目的副本,將文件和文件夾重命名爲一個以匹配另一箇中的文件和文件夾,然後使用您最喜歡的文件夾比較工具比較兩者。
除非兩個項目之間存在真正的複製和粘貼關係,否則這不會對您有所幫助。
更好的方法是使用重構。爲兩個項目創建單元測試並獲得足夠的代碼覆蓋級別之後,請按類和方法按重構方法嘗試使方法對相同。然後,您可以確定應該拉入基類或移入其他類的方法。
最終,您可能會發現相同的類對。將這些類移到共同的庫中,然後將其中一個類的所有用途重命名爲另一個類的用法。然後刪除不再使用的那個。
重複,直到沒有更多的重複。
我會一直到其他一些人有更好的答案 –
我強烈建議Code Compare(不附屬,只是一個快樂的用戶)對這樣的工作 - 有一個免費版本和更先進的商業版本。
它與VS很好地集成,具有語法高亮顯示的C#,C/C++等
如果你有喜歡的重命名或部分代碼的移動,導入這兩種版本爲單一git
庫的修改(如兩個不同提交一個目錄)可能會有所幫助。 Git跟蹤文件的內容,而不是文件本身,因此可以找出例如一個已經從一個文件移動到另一個文件的函數。
「不同」源文件中的類是否具有相同的名稱?你可以嘗試構建這兩個項目並比較構建的組件:http://stackoverflow.com/questions/652432/compare-compiled-net-assemblies –