2011-10-26 4 views
6

나는 VSC# 프로젝트 두 개 (특히 Outlook 플러그인 용)가 으로 매우인데, 100 줄의 코드는 예외입니다. 다른 프로젝트 구성 옵션이있을 수 있다는 것에 약간 걱정이됩니다. 따라서이 둘을 비교하고 싶습니다.두 개의 VS C# 프로젝트를 비교 (병합)

두 코드베이스 간의 차이점을 확인하는 가장 좋은 방법은 무엇입니까?

두 개의 프로젝트를 병렬 디렉토리에두고 diff를 사용했지만 프로젝트의 이름이 다르기 때문에 일부 파일이 일치하지 않습니다. 이 작업을 수행하는 더 쉬운 방법이 있는지 궁금합니다.

+0

'다른'소스 파일의 클래스가 같은 이름을 갖고 있습니까? 두 프로젝트를 빌드하고 빌드 된 어셈블리를 비교해 볼 수 있습니다. http://stackoverflow.com/questions/652432/compare-compiled-net-assemblies –

답변

3

마치 두 프로젝트의 차이점을 확인하려면 WinMerge과 같은 것이 필요합니다. 무료이며, 폴더 내용을 WinMerge와 비교할 수 있다는 것을 알고 있으므로 아마 시작할 수있는 좋은 곳입니다. WinMerge를 프로젝트 폴더에서 실행하면 파일 간의 차이점을 간략하게 비교하여 비교할 수 있습니다.

비교 폴더에이 자습서를 참조하십시오
http://manual.winmerge.org/CompareDirs.html

enter image description here

+0

이름이 바뀐 파일? –

+0

저는 회계를 처리하는 방법이 있다는 것을 확신합니다. 최악의 경우, 비교할 특정 파일을 선택할 수 있음을 알고 있습니다. –

+1

이름이 바뀐 파일을 다루는 것은 어렵습니다.파일의 이름이 바뀌고 약간 수정되면 비교 도구가 어느 시점에서 실제로 동일한 파일인지 알기가 어려울 수 있습니다. 이 작업을 시도하면 다른 이름의 비슷한 파일을 볼 수있는 잘못된 오판이 생길 수 있습니다. 그리고 두 개의 비슷한 파일이 유사했는지/다른 결정을 내릴 수 있는지를 결정하는 데 사용 된 임계 값이 있어야합니다. – AaronLS

2

한 가지 방법 : 두 프로젝트의 복사본을 만들고 파일과 폴더의 이름을 다른 파일과 폴더의 이름으로 바꾸고 즐겨 찾기 폴더 비교 도구를 사용하여 두 파일을 비교하십시오.

두 프로젝트 사이에 진정한 복사하여 붙여 넣기 관계가 없다면 도움이되지 않습니다.

더 좋은 방법은 리팩토링을 사용하는 것입니다. 두 프로젝트에 대한 단위 테스트를 생성하고 적절한 수준의 코드 적용 범위를 달성 한 후 리팩터링을 사용하여 클래스 및 메소드별로 클래스를 이동하여 메소드 쌍을 동일하게 만듭니다. 그런 다음 기본 클래스로 가져 오거나 다른 클래스로 옮겨야하는 메소드를 식별 할 수 있습니다.

결국 동일한 클래스 쌍을 찾을 수 있습니다. 이러한 클래스를 공용 라이브러리로 이동 한 다음 클래스 중 하나의 모든 용도를 다른 클래스의 용도로 바꿉니다. 그런 다음 더 이상 사용하지 않는 것을 삭제하십시오.

더 이상 중복이 없을 때까지 반복하십시오.

+0

일부 다른 사람이 더 좋은 대답을 할 때까지 동일하게 사용합니다. –

1

난 강력 작업의 종류 (아무런 관계가없는, 단지 행복 사용자) Code Compare 추천 - 무료 버전과 더있다 고급 상용 버전.

그것은 VS 멋지게 통합 및 C#에 대한 강조 구문이 C/C++ 등

1

당신은 두 가지로 (단일 git 저장소에 두 버전을 가져 이름 바꾸기 또는 부분 코드 이동 등의 수정을 가지고 있다면 단일 디렉토리의 커밋) 도움이 될 수 있습니다. Git은 파일 자체가 아닌 파일의 내용을 추적하므로 예를 들어 파일을 찾을 수 있습니다. 한 파일에서 다른 파일로 이동 한 함수.