我有两个VS C#项目(特别是对于一个Outlook插件)我认为非常类似,但可能只有100行代码。我有点担心项目可能有其他不同的配置选项,所以我想比较这两个。
查看两个代码库之间差异的最佳方法是什么?
我已经尝试将两个项目放在并行目录中并使用diff,但由于项目的命名方式不同,因此某些文件不匹配。我只是想知道是否有更简单的方法来做到这一点?
答案 0 :(得分:6)
听起来你需要WinMerge这样的东西来指出这两个项目之间的差异。它是免费的,我知道你可以将文件夹内容与WinMerge进行比较,所以这可能是一个很好的起点。在项目文件夹上运行WinMerge,它应该生成详细的比较,概述文件之间的差异。
有关比较文件夹的信息,请参阅本教程:
http://manual.winmerge.org/CompareDirs.html
答案 1 :(得分:5)
我强烈推荐Code Compare(不是附属,只是一个快乐的用户)来完成这类工作 - 有免费版和更高级的商业版。
它与VS很好地集成,并且具有C#,C / C ++等语法高亮。
答案 2 :(得分:2)
一种方法:制作两个项目的副本,将文件和文件夹重命名为一个以匹配另一个中的文件和文件夹,然后使用您喜欢的文件夹比较工具来比较两者。
除非两个项目之间存在真正的复制和粘贴关系,否则这对您没有帮助。
更好的方法是使用重构。在为两个项目创建单元测试并实现足够的代码覆盖率之后,逐个类和方法逐个使用重构来尝试使方法对完全相同。然后,您可以识别应该被拉入基类或移入其他类的方法。
最终,您可能会发现一对相同的类。将这些类移动到公共库中,然后将其中一个类的所有使用重命名为另一个类的使用。然后删除不再使用的那个。
重复直到不再有重复。
答案 3 :(得分:1)
如果您有重命名或部分代码移动等修改,将两个版本导入单个git
存储库(作为单个目录的两个不同提交)可能会有所帮助。 Git跟踪文件的内容,而不是文件本身,因此可以找到例如已从一个文件移动到另一个文件的函数。