문제

Microsoft Visual Studio는 XML을 사용하여 저장합니다 .vcproj 프로젝트 파일. 따라서 XML 프로젝트 파일을 차단합니다 ~해야 한다 쉽게 지내십시오.

불행히도, 프로젝트 파일의 속성을 변경하면 Visual Studio는 프로젝트 파일의 XML 노드를 무작위로 뒤섞이라고 주장합니다! 이로 인해 텍스트 파일 변경 및 병합이 기본적으로 불가능합니다. 하나의 컴파일러 설정을 변경하면 시각적 Diff 도구가 파일의 라인의 50%를 변경했다고 생각할 수 있습니다! 나는 심지어 XML Diff 도구를 시도했지만 동일한 혼란에 대한 더 구조적으로 볼 수 있습니다.

누구나 유지할 제안이 있습니까? .vcproj 소스 제어 파일? 또는 Visual Studio를 설득하는 방법 ~ 아니다 XML 노드를 재 배열하십시오 .vcproj 파일?

(CMAKE와 같은 도구를 사용하여 생성하기 위해 조사했습니다. .vcproj 보다 다른 친숙한 텍스트 파일의 파일이지만 CMake는 고유 한 문제가 있습니다.)

도움이 되었습니까?

해결책

이것은 때때로 등장하는 것 같습니다.

아마도 플러그인 또는 기타 정규화 도구에 익숙한 문제 일 것입니다.

MS가 그것을 고치기로 결정할 때까지 그것은 훌륭한 부작용 일 것입니다. 그런 다음 운이 좋지 않습니다. 물론 IP를 구매하겠다고 제안하지 않는 한.

오픈 소스 프로젝트 또는 상업용 제품을 시작하고 싶은 사람이 있습니까? 나는 게임이다.

독립형 정규화 도구를 방문한 다음 플러그인으로 전환 할 수 있는지 확인할 수 있습니다.

다른 팁

우리는 여러 사람들의 컴퓨터에서 구성이 재정렬되는 프로젝트 파일과 함께 현재 직장에서 이것을보고 있습니다.

*메모: 우리는 모두 팀이 아닌 VS 2008 Pro를 사용합니다

처음에는 무작위로 재정렬 된 것처럼 보이지만 실제로는 무늬 그리고 그것은 전혀 무작위가 아닙니다.

한 그룹의 경우 구성은 플랫폼별로 주문한 다음 구성별로 주문됩니다.

  • 디버그 | win32
  • 디버그 | x64
  • 릴리스 | win32
  • 릴리스 | x64
  • 디버그 dx11 | win32
  • 디버그 dx11 | x64
  • 릴리스 DX11 | Win32
  • DX11 | x64 릴리스
  • ...

다른 그룹의 경우 구성은 구성에 따라 주문됩니다.

  • 디버그 | win32
  • 릴리스 | win32
  • 디버그 dx11 | win32
  • 릴리스 DX11 | Win32
  • 디버그 | x64
  • 릴리스 | x64
  • 디버그 dx11 | x64
  • DX11 | x64 릴리스
  • ...

Perforce History를 살펴보면, 이것은 동일한 사람들이 제출 한 여러 프로젝트와 일치하며 약 50/50 스플릿이 있으므로 한 사람에게만 일어나지 않습니다.

이것이 당신이 모두보고있는 것과 같은 문제입니까? 그렇다면이 패턴이 거시적/추가 차이 단계가 포함되지 않는 솔루션을 찾는 데 도움이되기를 바랍니다.

각 기계마다 100% 재현 가능이기 때문에 어딘가에 설정 또는 무언가를 클릭하는 부작용이어야합니다. 초기 환경 레이아웃 (VC ++, VB, General Development, ECT ...)에서 어떤 옵션을 선택하는지 바보 같은 것도하더라도 ...)

Winmerge를 내 diff-tool로 사용하고 이동 블록 감지를 활성화했습니다. 문제를 해결하지는 못하지만 차이점을 조금 더 견딜 수 있습니다.

어떤 버전의 Visual Studio를보고 있습니까?

.VCPROJ 파일을 사용하여 많은 작업을 수행합니다 (여러 Visual Studio 버전으로 라이브러리의 프로젝트 파일 버전을 유지하고 있으며 항상 사물을 다루고 병합하고 있습니다).

Adobe의 우리 팀은 VS2008에서 같은 것을 보았습니다. 기본 디버그/릴리스 인 Win32/Win64 프로젝트는 4 개의 구성과 임의의 셔플 링을 제공합니다. 몇몇 사람들은 DevStudio가 언제 그리고 왜 재정렬되는지 알아 내려고 노력했지만 현재의 생각은 정렬 키입니다. 키워드 해시 - 반 랜덤입니다. 우리는 포기하고 코드 리뷰에서 "실제"변경 사항을 요약 한 것입니다.

나는이 셔플의 이유를 찾았다 고 생각한다. 적어도 VS2008에서.

X64 컴파일러를 설치하는 경우 VS는 프로젝트를 다음과 같이 주문합니다.

Debug|Win32
Debug|x64
Release|Win32
Release|x64

그렇지 않으면 주문할 것입니다.

Debug|Win32
Release|Win32
Debug|x64
Release|x64

따라서 모든 피어가 동일한 컴파일러 세트가 설치되어 있는지 확인하므로 셔플하지 않습니다.

테스트 했고이 동작은 재현 가능한 것으로 보입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top