NuGet 패키지가 설치되면 어떻게 되나요?

간단히 말해, 다양한 NuGet 도구는 일반적으로 프로젝트 파일 packages.config에서 패키지에 대한 참조를 만든 다음 패키지 복원을 수행하여 패키지를 효과적으로 설치합니다. 예외는 nuget install패키지를 폴더로 packages 만 확장하고 다른 파일은 수정하지 않는 것입니다.

일반적인 프로세스는 다음과 같습니다.

  1. (을 제외한 nuget.exe모든 도구) 프로젝트 파일 또는 packages.config.에 패키지 식별자 및 버전을 기록합니다.

    설치 도구가 Visual Studio 또는 dotnet CLI인 경우 도구는 먼저 패키지를 설치하려고 시도합니다. 호환되지 않는 경우 패키지가 프로젝트 파일 또는 packages.config.에 추가되지 않습니다.

  2. 패키지를 획득합니다.

    • 전역 패키지 및 캐시 폴더 관리에 설명된 대로 패키지(정확한 identifer 및 버전 번호)가 전역 패키지 폴더에 이미 설치되어 있는지 확인합니다.

    • 패키지가 global-packages 폴더에 없는 경우 구성 파일에 나열된 원본에서 패키지를 검색합니다. 패키지 원본 매핑 구성은 이 시점에서 적용됩니다. 온라인 소스의 경우, -NoHttpCache 명령을 사용하거나 nuget.exe를 사용하여 --no-http-cache이 명시되지 않는 한, HTTP 캐시에서 패키지를 먼저 검색합니다. (Visual Studio 및 dotnet add package 항상 캐시 사용) 캐시에서 패키지를 사용하는 경우 출력에 "CACHE"가 나타납니다. 캐시의 만료 시간은 30분입니다.

    • 패키지가 부동 버전을 사용하거나 최소 버전 없이 지정된 경우 NuGet 모든 원본에 연결하여 가장 일치하는 항목을 파악합니다. 예: 1.*, (, 2.0.0].

    • 패키지가 HTTP 캐시에 없는 경우 구성에 나열된 원본에서 다운로드를 시도합니다. 패키지를 다운로드하면 출력에 "GET" 및 "OK"가 표시됩니다. NuGet은 일반적인 정보 수준에서 http 트래픽을 기록합니다.

    • 패키지를 원본에서 성공적으로 가져올 수 없는 경우 NU1103과 같은 오류와 함께 이 시점에서 설치가 실패합니다. 명령의 nuget.exe 오류는 마지막으로 확인된 원본만 표시하지만 패키지를 원본에서 사용할 수 없음을 의미합니다.

    패키지를 가져올 때 NuGet 구성의 원본 순서가 적용될 수 있습니다.

    • NuGet은 HTTP 원본을 확인하기 전에 원본 로컬 폴더 및 네트워크 공유를 확인합니다.
  3. 전역 패키지 및 캐시 폴더 관리에 설명된 대로 패키지 및 기타 정보의 복사본을 http-cache 폴더에 저장합니다.

  4. 다운로드한 경우 사용자별 global-packages 폴더에 패키지를 설치합니다. NuGet은 각 패키지 식별자에 대한 하위 폴더를 만든 다음, 설치된 각 패키지 버전에 대한 하위 폴더를 만듭니다.

  5. NuGet은 필요에 따라 패키지 종속성을 설치합니다. 이 프로세스는 종속성 확인에 설명된 대로 프로세스의 패키지 버전을 업데이트할 수 있습니다.

  6. 다른 프로젝트 파일 및 폴더를 업데이트합니다.

    • PackageReference를 사용하는 프로젝트의 경우 에 저장된 패키지 종속성 그래프를 업데이트합니다 obj/project.assets.json. 패키지 콘텐츠 자체는 프로젝트 폴더에 복사되지 않습니다.
    • 패키지에서 app.config 및/또는 web.config을 업데이트하십시오. 해당 패키지가 소스 및 구성 파일 변형을 사용하는 경우.
  7. (Visual Studio에만 해당) 패키지의 추가 정보 파일(사용 가능한 경우)을 Visual Studio 창에 표시합니다.

NuGet 패키지로 생산적인 코딩을 즐기세요!