[visual-studio] Visual Studio에서 Rebuild와 Clean + Build의 차이점

Visual Studio 2008에서 RebuildClean + Build 를 수행하는 것의 차이점은 무엇입니까 ? 되어 청소 +의 빌드 다른는 일을 청소 + 재 구축을 ?



답변

재 구축 = 정리 + 빌드 (일반적으로)

주목할만한 세부 사항 :

  1. 다중 프로젝트 솔루션의 경우 “리빌드 솔루션”은 각 프로젝트에 대해 “정리”와 “빌드”를 수행합니다 (병렬로 가능). “깨끗한 솔루션”다음에 “빌드 솔루션”이 먼저 모든 프로젝트 (병렬로)를 정리 한 다음 모든 프로젝트 (병렬로)를 작성합니다. 이벤트 순서의 차이는 프로젝트 간 종속성이 발생할 때 중요해질 수 있습니다.

  2. 세 가지 동작 모두 MSBuild 대상에 해당합니다. 따라서 프로젝트는 재 빌드 조치를 대체하여 완전히 다른 작업을 수행 할 수 있습니다.


답변

Earl은 Rebuild = Clean + Build 시간의 99 %에 해당합니다.

그러나 그것들이 동일하다는 보장은 없습니다. 3 가지 동작 (다시 빌드, 빌드, 정리)은 다른 MSBuild 대상을 나타냅니다. 각각은 프로젝트 파일로 재정 의하여 사용자 지정 작업을 수행 할 수 있습니다. 따라서 clean + build를 시작하기 전에 여러 작업을 수행하여 rebuild를 재정의하거나 완전히 제거하는 것이 전적으로 가능합니다.

코너링 사례는 많지만 의견 토론으로 인해 지적되었습니다.


답변

기본 Clean 및 Build 구현 측면에서 기본 Rebuild 구현을 정의 해 보겠습니다.

  1. 프로젝트 당 : 프로젝트 다시 빌드 = 프로젝트 정리 + 프로젝트 빌드.

  2. 솔루션 별 : sln 재구성 = sln의 각 프로젝트 (클린 프로젝트 + 빌드 프로젝트).

실행 순서의 차이로 인해 Rebuild sln은 (Clean sln + Build sln) = (sln Clean 프로젝트의 각 프로젝트) + (sln Build 프로젝트의 각 프로젝트)와 동일하지 않습니다. 또한이 “foreach”는 동시에 실행될 수 있으므로 두 시나리오에서 서로 다른 작업을 동시에 실행할 수 있습니다.

proj1, proj2 및 proj3을 포함하는 sln이 있다고 가정하십시오.

  • sln을 다시 빌드 = (Clean proj1 + Build proj1) & (Clean proj2 + Build proj2) & (Clean proj3 + Build proj3)

  • 클린 Sln + 빌드 Sln = (클린 proj1 및 클린 proj2 및 클린 proj3) + (빌드 proj1 및 빌드 proj2 및 빌드 proj3)

+는 직렬을 의미하고 &는 동시를 의미합니다.

따라서 프로젝트 종속성이 올바르게 구성되지 않은 경우 Rebuild sln을 실행할 때 일부 프로젝트가 오래된 라이브러리에 링크 될 수 있습니다. 첫 번째 빌드가 시작되기 전에 모든 청소가 완료되는 것은 아닙니다. Clean sln + Build sln을 실행하면 이상한 동작이있는 앱을 제공하는 대신 링크 오류가 발생하여 즉시 알려줍니다.


답변

에서 http://www.cs.tufts.edu/r/graphics/resources/vs_getting_started/vs_getting_started.htm , (그냥 인터넷 검색)

빌드는 마지막 빌드 이후에 변경된 소스 파일 만 컴파일하고 링크하는 반면, Rebuild는 변경 여부에 관계없이 모든 소스 파일을 컴파일하고 링크하는 것을 의미합니다. 빌드는 정상적인 작업이며 더 빠릅니다. 때로는 프로젝트 대상 구성 요소의 버전이 동기화되지 않을 수 있으며 빌드를 성공적으로 수행하기 위해 다시 빌드해야합니다. 실제로는 청소할 필요가 없습니다.

솔루션 빌드 또는 재 구축은 솔루션의 모든 프로젝트를 빌드 또는 재 구축하는 반면, 빌드 또는 재 구축은 위의 스크린 샷에서 “hello”시작 프로젝트를 빌드 또는 재 구축합니다. 시작 프로젝트를 설정하려면 솔루션 탐색기 탭에서 원하는 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 시작 프로젝트로 설정을 선택하십시오. 이제 프로젝트 이름이 굵게 표시됩니다. 과제 솔루션에는 일반적으로 하나의 프로젝트 만 있기 때문에 빌드 또는 재구성 솔루션은 사실상 빌드 또는 재구성과 동일합니다.

컴파일은 현재 편집중인 소스 파일을 컴파일합니다. 나머지 소스 파일이 전체 프로젝트를 성공적으로 빌드하지 못하게하는 불완전한 상태 일 때 오류를 신속하게 확인하는 데 유용합니다. Ctrl-F7은 컴파일의 단축키입니다.


답변

에서 이 블로그 게시물 저자로 연결 이 질문에 대한 코멘트 :

실제로 아니요 !!! 그들은 평등하지 않습니다.

차이점은 프로젝트가 깨끗하고 구축되는 순서입니다. 솔루션에 두 개의 프로젝트가 있다고 가정 해 봅시다. 정리 후 빌드는 두 프로젝트 모두에서 정리를 수행 한 다음 다시 빌드하는 동안 빌드 A가 개별적으로 발생합니다. 프로젝트 A는 정리 및 빌드 한 후 빌드 B가 정리 된 후 빌드됩니다.


답변