2014-02-14 4 views
6

TeamCity에서 NuGet 패키지 복원을 사용하여 프로젝트를 빌드하고 있습니다.TeamCity NuGet 설치 프로그램 단계 문제

나는이 빌드 단계가 : 프로젝트의

  • MSBuild를
  • 하나가 설치되어 공식 공급에서 log4net 패키지를 가지고

    • NuGet 설치합니다. 이 메시지와 함께 nuget - 설치 단계에서 실패 인 TeamCity는 첫 번째 단계를 실행할 때

      내 문제가 (그러나 어떤 패키지에 끊었에 도착하지 않음) : 버전 '2.0 찾을 수 없습니다 합니다. 3 '패키지'log4net '.

      그래서 솔루션에 오류를 찾기 위해 최선을 수행 한 후, 나는 시도 : 내 빌드 실행합니다 NuGet 설치 단계

    • 을 해제

      1. - (가 더 패키지이 없기 때문에 분명히 실패
      2. 다시 실행 빌드 NuGet 설치 단계를 사용) 아래
      3. 를 참조

      [편집] 3. 단계와 관련하여 MSBuild는 John H.이 지적했듯이 패키지를 다시 빌드 할 수 있어야하므로 NuGet Installer 단계가 필요하지 않습니다. Nuget 설치 프로그램 단계를 거치지 않고 솔루션을 빌드 할 때 오류가 발생하면 설치 한 OctoPack 패키지와 관련이 있습니다.

      NuGet 패키지가 빌드 실행 전에 복원 되었기 때문에 OctoPack을 실행할 수 없으며 대상 빌드가 시작될 때 파일을 사용할 수 없습니다. 이 패키지를 빌드에 다시 포함하려면 프로젝트를 다시 빌드하십시오. 빌드 서버가 각 빌드 전에 패키지를 삭제하지 않도록해야 할 수도 있습니다.

      그러면 성공합니다. 왜?

      누구든지 내 문제에 대해 통찰력을 갖고 있습니까?

      좀 더 배경 :

      나는이 문어 배포 패키지와 함께 할 수있는 뭔가가 가정합니다. Teamcity 서버에 Octopus Deploy Plugin을 설치하고 MSBuild 단계에서 OctoPack 실행 체크 박스를 체크 표시했습니다.

      octopack 패키지를 제거하고 다시 시도해 보았습니다.

      낙서 플러그인과 결합 된 MSBuild-step에서 NuGet-package를 복원하면 문제가 발생할 수 있습니까?

      [부분 해상도] log4net 패키지에서 오류가 발생하는 이유는 아직 불확실합니다. NuGet 설치 프로그램을 자동 빌드의 첫 번째 단계로 실행했는데 결국 빌드의 특성상 올바른 작업이 될 수있었습니다.

      나는 패키지가 업데이트 될 때 (항상) 새로운 내용을 읽지 않는다는 것을 인정한다. 2.0에서 Octopack을 업그레이드 할 때.26 ~ 3.0.19 변경 사항 중 하나는 .octopack 폴더를 더 이상 체크인 할 필요가 없다는 것입니다. 이 체크되었을 때 빌드, 대상 파일을 찾을 수없는 이유 그래서 난 정말 이해할 수

      을 지금은했습니다. 업그레이드

      • 가 .octopack 폴더에서 제거 3
      • 을 Octopack하기 버전 제어
      • (다시는) 인 TeamCity

      에 설치 nuget 단계를 활성화하고 빌드가 벌금을 실행 중입니다. 모든 도움을

      감사합니다! 지금은 더 나은 교육 사람 :

    +1

    MSBuild 단계의 패키지를 복원하기 위해 'NuGet installer'단계의 단계가 명시 적입니까? 제대로 구성되어 있으면 MSBuild 단계에서 아무 도움없이 패키지를 복원 할 수 있어야합니다. MSBuild 단계에서 NuGet 오류를 기록합니까? –

    +0

    안녕하세요 John, 지적 해 주셔서 고맙습니다. 패키지 복원 단계를 비활성화하고 실패한 빌드를 실행하면 실제로 다른 패키지 OctoPack에 관한 오류가 발생합니다. "NuGet 패키지가 빌드 실행 전에 복원 되었기 때문에 OctoPack을 실행할 수 없으며 빌드가 시작될 때 대상 파일을 사용할 수 없었습니다.이 패키지를 다시 빌드하여 빌드에 포함 시키십시오. 서버는 각 빌드 이전에 패키지를 삭제하지 않습니다. " 그걸 잘 못 봐. – HaraldV

    +1

    나는 각각의 빌드에 대한 소스 폴더의 새로운 복사본을 생성하는 ContinuiCI를 사용하여 여기에서 같은 것을 얻는다. 이 권리를 읽으면 각 빌드마다 패키지가 복원된다는 의미입니까? –

    답변

    3

    이 솔루션은 MSBuild에 의해 실행되는 단계를 복원하기 전에 Nuget 복원을 실행하는 것입니다

    [제거] 관련이없는 정보입니다.

    패키지를 복원해야하는 경우 MSBuild 단계가 중단됩니다. MSBuild를 실행하기 전에 복원을 수행하면 복원 할 필요가 없습니다. 이 솔루션은 this .NET Framework Blog article에서 논의됩니다.

    Octopus 배포 팀의 응답은 here입니다.

    동일한 문제로 인해 TFS가 실패 할 수 있습니다. RinoTom의 대답 here을 참조하십시오. Continua CI을 사용하고 MSBuild 단계 전에 Nuget 복원을 실행하기위한 명령 줄 단계를 추가했습니다.

    관련 문제