2016-06-19 2 views
1

비 NuGet 패키지를 Bamboo 빌드와 통합하는 "우아한"방법을 찾고자했습니다. NuGet 번들로 비 NuGet 패키지를 추가하는 주제에 스택의 과다가있다Bamboo에서 비 Nuget 패키지 번들

:

managing non-nuget dlls along with nuget packages

Creating NuGet package with reference to a non-NuGet reference

Trying to add non-.NET libraries to NuGet package

하고 목록에 간다. Bamboo에서 NuGet을 사용하는 방법에 대한 정보가 많이 있으며 그 부분은 원활하게 작동합니다.

Bamboo를 실행하는 다른 원격 서버에있을 수있는 자동화 된 빌드 환경이있는 상황을 다루지는 않습니다.

특히 저는 Xamarin.iOS 배포를 HockeyApp로 자동화하려고합니다.

단계는 다음과 같습니다

  1. 코딩 및 iPhoneSimulator Mac 용 Windows에서와와 VS2015에서 현지 테스트
  2. 대나무 푸시을 수정 해 개막 배포 지점에 병합의 Bitbucket 서버에 밀어
  3. 빌드를 구축하는 것은 배포 지점을
  4. 시작은 A의 컴파일
  5. 실행합니다 NuGet 다운로드를 체크 아웃 D-특별/아이폰 환경,
  6. 맞이할 HockeyApp 배포 떨어져 IPA를 만드는 내가이 개 종속 관계를 가지고있는 하나를 제외하고 거의 모든 단계가 장소에

(즉위한 무료 부가있다) 상업용 공급 업체 (Syncfusion)는 내 Visual Studio 프로젝트/솔루션이 내 프로젝트 디렉토리 외부의 위치를 ​​기준으로 참조해야하는 "Studio"제품에 번들로 묶을 것을 결정한 이유가 알려져 있지 않습니다.

결과적으로 Bamboo 빌드는 찾을 수없는 DLL로 실패합니다. 그 이유는 위의 5.와 6. 사이 어딘가에 들어가야하기 때문입니다.

바이너리를 복사 한 다음 내 저장소로 체크인/커밋/푸시하기를 원하지 않습니다. 나쁜 일로 간주됩니다. My Bamboo Plan은 이미 바이너리를 드래그 할 필요없이 실제 빌드 전에 NuGet 패키지를 성공적으로 가져 왔습니다.

DLL을 Bamboo 빌드 머신 (즉, 원격 에이전트가 실행되는 곳)에 복사하는 것이 하나의 아이디어 였지만, VS/MSBuild 프로젝트 파일에 이제는 배선 된 디렉토리가있는 것이 문제였습니다. Syncfusion Studio를 설치하거나 해당 DLL에 대한 디렉토리 구조 만 에뮬레이션해야합니다.

그래서 .csproj 참조를 자동으로 조정해야합니다. Yet Another Task and Script를 제외하고는 어떻게 할 것인지 잘 모르겠습니다.

모두에 대해 Syncfusion에서 소리 지르는 것 외에도은 NuGet을 통해 해당 DLL을 사용할 수 있습니다 (일부는 있으며, 5 단계에서 성공적으로 수신했기 때문에).이 누락 된 단계를 작동시키는 방법에 대한 제안이있는 사람이 있습니까?

답변

0

편의상 이제 별도의 하위 디렉토리에있는 저장소에 라이브러리를 추가했습니다.

2 개의 라이브러리가 각각 200-300KB 였으므로 단순한 솔루션으로 보이지 않아서 지금 당장이 문제를 해결했습니다.

특히 :

  • 로컬 하위 디렉토리에 필요 .gitignore
  • 복사 라이브러리에 나가기 .DLL, 예를 들어,
  • LocalLibs/는 여전히 작동 빌드
  • 가 확인 대신 그들의 주요 설치 위치의 만이 Visual Studio에서 프로젝트 참조 로컬 라이브러리를 가리 키도록 REPO
  • 변경의 일부가되도록 git add -f LocalLibs/speciallib.dll과 특정 라이브러리를 추가 Visual Studio 내 에서뿐만 아니라 MSBuild와 함께

더 나은 방법이있는 경우, 특히 라이브러리가 상당히 큰 경우 사용자가 저장소에 추가하고 싶지 않을 때 특히 그렇습니다.