문제

다른 빌드에서 한 빌드의 출력을 다른 빌드에서 이진으로 포함시키는 올바른 방법은 무엇입니까?

CompanyName.Domain (내 도메인 레이어)이라는 솔루션이 있다고 가정 해 봅시다. 나는 그것을 빌드로 설정하고 밤마다 건축됩니다.

이제 ideproject.web라는 솔루션을 추가하고 싶습니다. 그리고 CompanyName.domin의 이진을 솔루션과 함께 피어 레벨의 Binaries 폴더에 포함시키고 싶습니다. 그런 다음 Project SomeProjects.web 참조 Binaries CompanyName.domain.dll에 대한 참조가 작동합니다.

이 작업을위한 모범 사례는 무엇입니까? 나는 그들이 분기로 이것을하려고한다고 말한 사람을 알고 있습니다. 나는 총 "소스 제어"신약입니다. 그러나 이것에 대해 뭔가 잘못된 것 같습니다.

도움이 되었습니까?

해결책

Daryl과 마찬가지로, 우리는 Binaries를 참조하는 "Binaries"폴더를 사용합니다. 우리의 "라이브러리"는 Xcopy 만 Binaries 위치로 결과를 구축하므로 라이브러리를 업데이트하려면 Binaries를 확인하고 빌드하고 다시 확인합니다.

이를 통해 단일 표준화 된 위치에서 모든 내부 라이브러리 (및 우리가 사용하는 모든 제 3 자 라이브러리)를 공유 할 수 있으며, 모든 라이브러리는 미리 빌릴 수 있으므로 실제로 아무것도 변경하지 않으면 개발자를 구축해야합니다. 리브스.

라이브러리의 참조 릴리스 빌드 만 조심해야합니다 (이에 대한 유일한 예외는 조건부 디버그 빌드에만 컴파일되는 디버깅 도우자 라이브러리가 있다는 것입니다. 디버그 버전을 참조해야합니다. 디버그 빌드에서도 프로그램에서 컴파일되었습니다!)

마지막 참고 사항 : 합리적인 대안이 없으면 분기를 피하십시오.

다른 팁

우리 회사는 빈 폴더가 실제로 소스 제어하에 저장되지 않기 때문에 외부 참조 어셈블리를 빌드하는 데 필요한 모든 .dll 파일을 보유하기 위해 "참조"폴더를 작성하여이를 수행합니다.

우리는 사용합니다 TFS 종속성 복제기, 프로젝트가 구축 된 후 TFS의 모든 프로젝트에 파일을 복사 할 수 있습니다. 정말 훌륭한 문서는 없지만 설정 한 후에해야 할 일을하는 것 같습니다.

블로그 게시물 TFS 팀 빌드로 의존성 복제 구현 어떤 프로젝트가 사용중인 프로젝트를 사용하여 어떤 종속성을 사용하는지에 대한 분기 시나리오를 설정하는 것이 좋습니다.

내 과정은 다른 포스터와 비슷합니다.

두 개의 프로젝트가 있다고 말하면 CoreProject와 AppProject라고 부릅니다. CoreProject가 공유됩니다. AppProject에는 SharedBinaries라는 폴더가 있습니다. 이것은 모든 어셈블리 참조가 가리키는 곳입니다.

CoreProject의 TFSBuild 스크립트는 다음을 수행하도록 구성됩니다.

-최신 정보

-Build Drop to Drop Zone ( server dropzone coreprojectBuildNameAndNumber와 같은 것)

-Drop은 드롭 존의 폴더에 복사됩니다 ( server dropzone 최신 coreproject와 같은 것)

AppProject의 TFSBuild 스크립트는 다음을 수행하도록 구성됩니다.

-최신 정보

-SharedBinaries 폴더에서 파일을 확인하십시오

-copy 파일 server dropzone 최신 coreproject

-짓다

-DROP TO DROP ZONE ( server dropzone AppProjectBuildNameAndNumber와 같은 것)

-빌드가 성공한 경우 빌드가 폴더 드롭 영역 ( server dropzone 최신 AppProject와 같은)에 복사되고 SharedBinaries의 파일이 확인됩니다.

-빌드가 실패하면 SharedBinaries에 복사 된 파일은 체크 아웃을 취소합니다.

나는 이것이 정말로 잘 작동한다는 것을 알았다. AppProject는 항상 CoreProject에서 가장 최신 비트로 구축되므로 변화가 발생하면 즉시 알고 있습니다. SharedBinaries를 TFS에 체크인함으로써 특정 버전을 얻고 당시 사용 된 CoreProject의 동일한 DLL으로 코드를 실행할 수 있습니다. 또한 최신 제품을 얻어야하며 로컬 기계는 최신 비트로 건축하고 있습니다.

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