2014-04-25 3 views
1

VS 2013이 패키지를 복원하지 못했습니다. VS/nuget이 패키지를 성공적으로 복원했다고 생각 하긴하지만 패키지 내용이 구체화되지 않습니다.빌드시 Nuget 복원이 실패하지만 수동으로 작동합니다.

수동으로 제거하고 동일한 버전의 패키지를 다시 설치하면 정상적으로 작동합니다.

태어나지 않은 덤프는 downloaded as a zip 일 수 있습니다. 이 생식 "는 바람을

  • 하나의 패키지를 지정하는

  • 하나의 파일,"packages.config "와

  • 하나의 프로젝트와

    • 단일 솔루션을 가지고 .edmbuilder -version 1.0.4 ", 단일 파일 포함, edmbuilder.cs

    • 하나의 폴더는 "App_Start"는 .csproj 패키지 인 경우는

    • 그것은 "edmbuilder.cs"이 때문에 괜찮습니다 "edmbuilder.cs"가해야한다고 말했습니다

    • 아무것도 포함하지 않는다 복원.

    빌드 할 때 VS는 "edmbuilder.cs"가 누락되었다고보고합니다. 실제로 실종 상태입니다.

    그러나 패키지가 다운로드되었습니다. 빌드가 "Breeze.EdmBuilder.1.0.4"가 들어있는 "packages"폴더를 생성하기 때문에 이것을 알 수 있습니다. 여기서 "edmbuilder.cs"가 있고 적절한 위치에 있습니다. 내가 명령 install-package breeze.edmbuilder -version 1.0.4, nuget 보고서

    'Breeze.EdmBuilder 1.0.4'를 실행하면

    이미 설치되어 있습니다. NugetRestoreFail에는 이미 'Breeze.EdmBuilder 1.0.4'에 대한 참조가 있습니다.

    AFAIK는이 패키지에 아무런 문제가 없습니다. 내가 uninstall-package breeze.edmbuilder 일 때 install-package breeze.edmbuilder -version 1.0.4으로 다시 설치하면 설치가 작동하고 누락 된 edmbuilder.cs이 속한 "App_Start"폴더에 나타납니다.

    오류는 반복 가능합니다. 이 자리에 있습니다..

  • 선택적으로 삭제
    • 폴더
    • 는 "패키지"삭제 "App_Start"
    • 에서 edmbuilder.cs을 삭제 솔루션을 닫습니다.스오와 빈과 OBJ 디렉토리
    • 다시 열 솔루션과 같은 실패의 행동 ... 수동으로 제거하고 다시 설치하기 위해 동일한 능력을 얻을 것이다

    를 다시 구축 할 수 있습니다.

    FWIW에 대한 참조를 제거하면 .csproj에서 edmbuilder.cs에 대한 참조가 적용되지 않습니다.

    내가 무엇을해도 수동으로 제거하고 패키지를 다시 설치해야합니다.

    WTF!

    p .: VS 2013 업데이트 2 RC를 사용 중입니다. 나는이 문제로 "RC"문제가 고객으로부터 내 관심을 끌었다는 것을 의심한다. 너는 결코 알지 못한다.

    p.p.s : 빌드가 실패하지 않았음에도이 솔루션이 실행되지 않을까 걱정하지 않습니다. 여기에서 볼 수있는 것은 작동했을 실제 앱의 버젼입니다. 유일한 질문은 "왜 복원 된 파일이 없습니까?"입니다.

  • 답변

    2

    패키지 복원은 패키지 설치와 동일하게 이 아니며입니다. 당신이보고있는 것은 의도적으로 설계된 것입니다. 단순히 패키지 폴더에 누락 된 패키지를 다운로드합니다. 더 이상은 없어. 아니야.

    패키지 복원이 추가되어 패키지 폴더를 소스 제어에 커밋하지 않아도됩니다.

    패키지를 설치 한 다음 프로젝트 파일의 변경 내용을 커밋하고 edmbuilder.cs과 같이 추가 된 파일은 프로젝트 폴더 내부의 모든 내용을 커밋해야합니다. 패키지 폴더를 제외합니다.

    이제 소스 제어에서 소스를 가져 오면 패키지 파일을 제외한 모든 것이 나타납니다. 패키지 복원을 통해 패키지를 다운로드하면 작업 복사본이 완료됩니다.

    NuGet's Restore Package insists on specific package versions

    +0

    기다림. 나는 당신의 링크를 읽고 그것이 복원과 동일한 부작용 (".config 파일을 업데이 트하는 것, ** 코드를 추가하는 것 **, 등")을 설치로하는 것으로 보입니다. "다른 개발자 나 빌드 서버가 코드를 체크 아웃하면 ** 패키지 파일을 제외하고 동일한 부작용 코드 **를 갖게됩니다. 패키지 복원은이 파일들을 NuGet에서 간단히 가져옵니다 우리는이 프로젝트에 필요한 모든 것을 갖추고 있습니다. " 그것은 꽤 혼란 스럽습니다. 당신은 복원이 설치 부작용을 갖지 않을 것이라고 말하고 있습니까? – Ward

    +0

    사실 제가 쓴 것은 * 패키지를 설치하면 부작용이 생기는 것입니다. 커밋 된 실제 패키지는이 * 빼기 *입니다. 패키지 복원은 패키지를 다시 추가하여 작업 복사본 전체를 다시 만듭니다. 그리고 네, 이것이 VS 프로젝트 시스템의 부산물이라는 것에 동의합니다. 그러나 NuGet 패키지는 단순히 참조 할 어셈블리가 아닙니다. 또한 빌드 서버와 같은 VS 컨텍스트 외부에서 작동하지 않을 수도있는 설치 스크립트를 포함 할 수 있습니다. 단순히 패키지 복원을 패키지 체크인으로 저장하는 것으로 생각하면 더 이해할 수 있습니다. – Kiliman

    +0

    다음은 흔히 잘못 생각한 블로그 게시물입니다. http://jeffhandley.com/archive/2013/12/09/nuget-package-restore-misconceptions.aspx 프로젝트에 추가 된 콘텐츠 파일은 프로젝트와 함께 체크인했다. 그들이 NuGet에서 오지 않았다는 것을 가장해라. 이제 프로젝트에서 편집 가능한 소스 파일입니다. 바이너리가 패키지 복원이 만들어진 이유입니다. 아무도 타사 바이너리를 소스 제어로 확인하려고하지 않습니다. –

    1

    이 바보 아니면 무엇을 보는가?

    @ 킬리만에게 내 끔찍한 경험은 "설계 상"이라고 설명해 주셔서 감사합니다.

    그럼 실제로 복원 한 것으로 생각되는 콘텐츠를 어떻게 얻습니까? 한 번에 하나씩 각 패키지를 설치합니까? 그건 미친 짓이야.

    npm install에 해당하는 nuget이 없다는 것을 관찰 할 것입니다. 필요한 모든 패키지를 가져올 것입니다. 실제로 거의 동등한 것으로 나타났습니다. 그것은 단지 분명한 것이 아니며 얼마나 많은 사람들이 그것이 존재한다는 것을 알고 있는지 궁금합니다.

    은 두 단계 과정이다 :

    1. FIRST가 누락 된 패키지를 복원 ...THEN

    2. 문제 명령 : Update-Package -Reinstall

    이 솔루션의 모든 프로젝트의 모든 패키지를 재 - 설치합니다.

    당신은 단지 특정 프로젝트를 위해 다시 설치하려는 경우

    , 시도 :

    Update-Package -ProjectName 'YourProjectName' -Reinstall 
    

    을 모두 절차에서 -Reinstall 스위치가 package.config 철자 패키지의 정확한 버전을 설치하기 위해 노력하고 있습니다. .. 그리고 당신의 프로젝트에서 작동하지 않을 수도있는 더 새로운 "업데이트 된"패키지 (그러나 예외에 대한 문서 참조).

    update-package -reinstall에 대해서는 공식 너겟 문서 "Reinstalling Packages and its Pitfalls"을 참조하십시오.

    주의 사항 ()을 놓치지 마십시오. 분명히이 기법은 다른 패키지 관리자가 기대하는 것의 근사치입니다.

    행운을 빌어 요, 사람들.

    +0

    귀하의 좌절감을 이해하지만 문제가 있는지 잘 모르겠습니다. 처음에 패키지를 설치하지 않은 경우 어떻게 패키지를 지정합니까? 이렇게하면 성공적으로 복원하는 데 필요한 모든 것이 제공됩니다. 기본 플랫폼의 빌드 시스템이 더 간단하기 때문에 다른 패키지 시스템이 더 간단하다고 생각합니다. 나는 VS 프로젝트 시스템을 향상시키기위한 노력이 있음을 압니다. 다행히도 그들은이 시나리오를 고려할 수 있기를 바랍니다. – Kiliman

    +1

    고마워요 @ 킬먼. 나는 너의 도움과 친절에 감사하며 내 자신의 불륜을 후회하고있다. 너겟이 내 옆에 일관된 가시가 있기 때문에 그냥 꺼내야 할 이유가 없습니다. 나는 다른 패키지 관리자들이 자신의 좌절감을 가지고 온다고 덧붙여 야한다. 분명히 문제는 어렵습니다. 나는 앞으로 더 많은 은혜와 이해를 위해 노력할 것입니다. – Ward

    관련 문제