[Nuget] 손상된 Reference, Package 복원하기

2014. 3. 24. 10:43Others

Nuget을 통해서 의존성있는 Package를 손쉽게 관리할 수 있습니다. 하지만 이렇게 Nuget을 통해서 추가된 Packages는 개발자에 의해서 쉽게 변경되거나 삭제, 손상될 수 있습니다.

예를 들어서 Nuget에 의해 추가된 Reference를 지워버린다거나, 패키지 구성파일을 실수로 삭제한 경우도 있을 수 있습니다. 이럴 때를 위해 Nuget에서는 다음과 같은 복구방법을 제공하고 있습니다.

  1. 일단 작업을 시작하기 전에, 프로젝트를 백업합니다. 혹시라도 작업 중에 문제가 발생해도 복구하기 위함입니다.
  2. Nuget은 복원 작업 중에 캐시된 파일을 재사용하게 되는데, 확실하게 재설치를 하고자 한다면 프로젝트의 bin, obj 폴더를 삭제하고, Solution파일(.sln)이 있는 폴더에 위치한 packages 폴더도 삭제하시면 됩니다.
    packages 폴더 위치
    [Nuget은 다운로드 Package파일을 Solution 파일이 위치한 경로에 pakcages라는 폴더를 만들어 저장해두고 재사용합니다.]
  3. Visual Studio의 메뉴에서 [TOOLS]-[Nuget Package Manager]-[Package Manager Console]을 클릭합니다. 
    Package Manager Console 선택
  4. 다음과 같이 명령어를 입력합니다. 그러면 Nuget은 packages.config에 등록된 해당 패키지를 찾아 복구작업을 진행합니다. 만약 전체 패키지를 복구대상으로 삼고 싶으시다면 ‘패키지명’을 생략하시면 됩니다.
    update-package -reinstall 패키지명
    위 명령을 실행하면 Nuget은 다음과 같은 작업을 진행하게 됩니다.
    1. package.config에 명시된 동일버전의 패키지와 의존성 있는 패키지를 프로젝트로부터 제거합니다.
    2. package.config에 명시된 동일버전의 패키지와 의존성 있는 패키지를 다시 다운로드 합니다.
    3. 해당 패키지에 필요한 모든 파일, 폴더, Reference관계를 복원합니다.