2009-10-16 2 views
4

새 Visual Studio C++ 프로젝트를 만들 때 두 가지 방법이 있습니다. 마법사를 실행 한 다음 프로젝트의 모든 필요한 설정을 변경하거나 기존 프로젝트를 복사하고 그 이름을 모두 바꾸고 파일을 추가합니다.중복 GUID가있는 Visual Studio 프로젝트를 검색 할 수있는 도구가 있습니까?

두 번째 변형은 .vcproj 파일이 프로젝트 GUID를 저장한다는 점을 제외하고는 훌륭합니다. 이 GUID는 두 개 이상의 프로젝트가 하나의 솔루션에있을 때 프로젝트 종속성과 시작 프로젝트를 추적하는 데 사용됩니다. 한 솔루션의 두 프로젝트가 동일한 GUID를 갖는 경우 문제가 발생할 수 있습니다. 종속성이 사라지고 다음 솔루션 재로드시 시작 프로젝트가 재설정됩니다.

파일 시스템 하위 트리를 검색하고 여기에 동일한 GUID가있는 프로젝트를 검색 할 수있는 도구가 필요합니다. 내가 글쓰기를 시작하기 전에 준비 도구가 있습니까?

+0

또는 더 나은 아직 ... GUID는 고유하기 때문에, 안전하게 검색을 할 및 복사 된 모든 파일을 대체 할 수있는 비주얼 스튜디오 프로젝트를 복사하고 모든 GUID의, 이름과 위치 – Toad

+0

를 해결할 수있는 도구. 프로젝트 GUID와 비슷하면 프로젝트 GUID입니다. – MSalters

+0

이것이 내 솔루션에서 15 개의 복사 된 솔루션으로 일어난 일입니다 ... 한 프로젝트에서 무언가 (모든 참조 찾기)를 검색하려고했을 때 결과적으로 모든 프로젝트에서 검색 결과를 얻었습니다 ... 솔루션에서 각 프로젝트를 식별하는 GUID가 범인이라고 추측하십시오. 그리고 저는 거의 1 년이 지난 지금, 실제로 이걸 찾지 않을 때, 지금 바로 건너 뛰었습니다 :) Nice. –

답변

1

비교적 빨리 도구를 작성할 수 있습니다. 나는 고용주를 위해 그렇게했지만 코드는 인색합니다. 정규 표현식을 사용할 때 GUID를 탐지하는 것이 "쉽다".

  1. 관심있는 파일의 디렉토리 구조를 검색하십시오. 그들의 경로를 메모리에 목록으로 유지하십시오.

  2. 전체 내용을 메모리로 읽어 들이고 각 파일을 엽니 다.

  3. 귀하가 만든 정규식으로 모든 GUID를 찾으십시오.

  4. 사전에 대체 GUID가 있는지 확인한 각 GUID에 대해 사전은 이전 GUID를 새 GUID에 매핑합니다.

    1. 대체품이 이미있는 경우 텍스트의 모든 GUID 인스턴스를 바꿉니다.

    2. 대체품이없는 경우 사전을 생성하여 사전에 저장 한 다음 모든 인스턴스를 새 것으로 교체하십시오.

  5. 파일의 변경된 내용을 씁니다.

길고 짧습니다. 도움이 되었기를 바랍니다.

0

이 도구로 놀아 볼 수 있습니다. 솔루션을 병합/재배치하기 위해 설계되었지만 보너스로 여러 솔루션/프로젝트에서 중복 지침을 감지하고 재생성 할 수 있습니다.

http://code.google.com/p/merge-solutions/

관련 문제