2009-05-20 5 views
2

최근 팀 빌드 프로젝트 파일을 다음과 같이 변경했습니다.빌드는 성공적이지만 바이너리는 찾을 수 없습니다. 왜?

<SolutionToBuild Include="$(SolutionRoot)/OurSolution.sln"> 

<SolutionToBuild Include="$(SolutionRoot)/**/*.csproj"> 

솔루션 파일에 포함되지 않은 많은 프로젝트가 있기 때문에이 작업이 필요했습니다. 단지 프로젝트를 추가하는 것은 실현 가능하지 않습니다. 한 번에 모든 것을 만들 수 있기를 바랍니다. 그래서 우리는 재귀 적으로 모든 프로젝트를 빌드하는 방법을 발견했습니다.

이 잘 작동하고 빌드 오류없이 수행 할 수 있습니다. 유일한 문제는 드롭 폴더에 복사 된 바이너리가 없다는 것입니다. 사실, 우리는 어디에서나 그들을 찾을 수 없습니다! 솔루션에서 빌드하면 바이너리가 빌드 에이전트의 바이너리 폴더에 복사됩니다. 그러나 개별 프로젝트를 통해 구축 할 때는 아무 것도 없습니다.

그럼 내 질문은 어디 있니? 팀은 모든 것이 잘 작성되었다는 보고서를 작성하는 이유는 무엇입니까?하지만 복사 할 항목은 없습니다. 프로젝트 디렉토리 아래의 일반 bin/Release 폴더에도 없습니다.

누군가 나를 이해하도록 도와 줄 수 있습니까? 나는 그것이 프로젝트 파일에 존재하지 않는 솔루션 파일에 포함 된 정보와 관련이 있다고 생각하지만, 알아낼 수는 없다.

답변

4

나는 SolutionToBuild 항목이 비어있어 아무것도 만들지 못한다고 생각합니다. 확인할 수 있습니다

<Message Text="SolutionToBuild: $(SolutionToBuild)" Importance="high"/> 

그런 다음 로그에서 해당 진술을 확인하십시오.

어쨌든 접근 방식을 수정할 수도 있습니다. 직접 MSBuild 파일 (예 : BuildAll.proj)을 만드는 것이 좋습니다. 이 파일에서 MSBuild task을 사용하여 모든 프로젝트를 빌드하십시오. 그런 다음 해당 파일을 SolutionToBuild로 설정하십시오. 프로젝트가 만들어지면 더 유연해질 것입니다. 해당 프로젝트 또는 모든 프로젝트의 빌드 전후에 단계를 추가 할 수 있습니다.

사예드 이브라힘 하시

내 도서 : 조언을 Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build

+0

감사합니다. 그것이 사실이었습니다. 사실 전혀 건설되지 않았습니다. 어쨌든, 어제 직장에서 책을 읽기 시작했습니다. 회사 도서관에 새 사본이있었습니다. 지금까지 내가 궁금해했던 모든 것을 말해 주지만 참고할만한 좋은 자료는 없다. – JimDaniel

+0

그건 꽤 재밌 네요, 당신이 그 책에 대해 어떻게 생각하는지 알려주세요. –

0

TFSBuild 로그를 살펴 보았습니까? TFS 2008을 사용하는 경우 TFS 2005에는 없었던 바삭 바삭한 세부 정보가 로그에 많이 있습니다.

또 다른 생각은 FileMon을 실행하고 TFSBuild 서비스로 만든 파일을 감시하는 것입니다.