2014-02-25 2 views
-1

많은 프로젝트에 의존성이 있습니다. 프로젝트의 파일 중 하나를 변경하고 MSBuild가 모든 종속성을 다시 컴파일한다는 사실을 알았습니다. 이게 뭐야? 이것이 기본 동작입니까? 그렇다면 어떻게 변경합니까?MSbuild가 예상보다 오래 걸립니다.

그것이 내가 그것은 그들 모두를 구축 할 수

+4

MSBuild는 자체적으로 아무 것도 컴파일하지 않습니다. 당신의 행동에 대한 더 자세한 정보를 제공하십시오 - 프로젝트를 구축하는 방법, 매개 변수 등 – Tarec

+3

MSBuild 로깅을 활성화하면 모두에게 알려줍니다. –

답변

0

(하지 비주얼 스튜디오에서) 명령 줄을 통해 컴파일하고있어, 또는 그들이 재 구축이 필요하면 그냥 결정하기 위해 종속성을 확인 할 수 중요합니다.

첫째, 어떤 종류의 프로젝트가 해결책입니까? 더 명확하지 않은 프로젝트 유형에는 증분 빌드를 염두에두고 작성되지 않은 타겟이있을 수 있으며 버그가있는 동작 (예 : SQLVAR 매개 변수를 파일 위치로 변환하려고 시도하기 때문에 2012 년 SQL 프로젝트를 항상 다시 빌드하는 경우)이있을 수 있습니다.

여기에 당신의 방법에 당신을 얻기 위해 몇 가지 조언입니다 :

는 콘솔 버퍼에 의존하지 않고 문제를 해결 할 수 있도록 파일 로거를 선호.

msbuild.exe MySolution.sln /fl3 /flp3:warningsonly;logfile=msbuild.wrn /fl4 /flp4:errorsOnly;logfile=msbuild.err /fl5 /flp5:Verbosity=diag;logfile=msbuild.log 

이 세 가지 로그, 경고 및 오류에 대한 두 가지, 그리고 세부의 가장 큰 수준의 로그를 생성합니다. msbuild.log를 열고 종속성 중 하나의 빌드를 확인하십시오.

빌드 로그에서 대상을 건너 뛰었 음을 나타내나요?

Skipping target "CoreCompile" because all output files are up-to-date with respect to the input files. 

또는 다시 작성 했습니까?

Building target "SqlBuild" completely. 

MsBuild는 프로젝트를 병렬로 구축 할 수 있습니다. 성능 향상을위한 또 다른 트릭은 프로젝트를 병렬로 구축하는 것입니다. MsBuild는 스케줄러이며 마법의 "/ m"스위치를 사용하여 종속성을 병렬로 구축 할 수 있습니다!

관련 문제