NuGet 패키지 게시

NuGet 패키지를 만들고 .nupkg 파일이 있으면 공개적으로 또는 비공개로 다른 개발자가 패키지를 사용할 수 있도록 할 수 있습니다. 이 문서에서는 nuget.org 통해 퍼블릭 패키지를 전역적으로 공유하는 방법을 설명합니다.

파일 공유, 프라이빗 NuGet 서버 또는 myget, ProGet, Nexus 리포지토리 또는 아티팩토리와 같은 타사 리포지토리에서 호스팅하여 팀 또는 조직에서만 프라이빗 패키지를 사용할 수 있도록 할 수도 있습니다. 자세한 내용은 사용자 고유의 NuGet 피드 호스트를 참조 하세요. Azure Artifacts를 사용하여 게시하려면 NuGet.org 패키지 게시를 참조하세요.

nuget.org에 게시

nuget.org 게시하려면 Microsoft 계정으로 nuget.org 로그인하고 이를 사용하여 무료 nuget.org 계정을 만듭니다. 새 개별 계정 추가의 지침을 따릅니다.

Screenshot that shows the NuGet sign in link.

계정이 있으면 nuget.org 웹 포털, dotnet CLI 또는 NuGet CLI 버전 4.1.0 이상을 사용하여 nuget.org 패키지를 게시할 수 있습니다. Azure Pipelines를 통해 패키지를 게시할 수도 있습니다.

nuget.org 웹 포털에 업로드

nuget.org 웹 사이트에 패키지를 업로드하려면 다음을 수행합니다.

  1. nuget.org 상단 메뉴에서 업로드를 선택하고 컴퓨터에서 패키지를 찾은 다음 열기를 선택합니다.

    Screenshot that shows the Upload dialog on nuget.org

    nuget.org 패키지 ID가 이미 있는 경우 오류가 발생합니다. 프로젝트에서 패키지 식별자를 변경하고, 다시 압축하고, 업로드를 다시 시도합니다.

  2. 패키지 이름을 사용할 수 있는 경우 패키지 매니페스트에서 메타데이터를 검토할 수 있도록 확인 섹션이 열립니다. 패키지에 추가 정보 파일을 포함하는 경우 미리 보기를 선택하여 모든 콘텐츠가 제대로 렌더링되는지 확인합니다.

    메타데이터를 변경하려면 프로젝트 파일 또는 .nuspec 파일을 편집하고 다시 빌드, 재포장 및 다시 업로드합니다.

  3. 모든 정보가 준비되면 제출을 선택합니다.

명령줄을 사용하여 푸시

명령줄을 사용하여 패키지를 nuget.org 푸시하려면 필요한 NuGet 프로토콜을 구현하는 v4.1.0 이상을 사용할 dotnet.exenuget.exe 수 있습니다. 자세한 내용은 NuGet 프로토콜을 참조 하세요.

두 명령줄 중 하나를 사용하려면 먼저 nuget.org API 키를 가져와야 합니다.

API 키 만들기

  1. nuget.org 계정에 로그인하거나 계정이 없는 경우 계정을 만듭니다.

  2. 오른쪽 위에서 사용자 이름을 선택한 다음, API 키를 선택합니다.

  3. 만들기를 선택하고 키의 이름을 입력합니다.

  4. 범위 선택에서 푸시를 선택합니다.

  5. 패키지>선택 Glob 패턴에서 *를 입력합니다.

  6. 만들기를 실행합니다.

  7. 복사를 선택하여 새 키를 복사합니다.

    Screenshot that shows the new API key with the Copy link.

Important

  • 항상 API 키를 비밀로 유지합니다. API 키는 누구나 사용자를 대신하여 패키지를 관리할 수 있는 암호와 같습니다. 실수로 표시되는 경우 API 키를 삭제하거나 다시 생성합니다.
  • 나중에 키를 다시 복사할 수 없으므로 키를 안전한 위치에 저장합니다. API 키 페이지로 돌아갈 경우 키를 복사하려면 키를 다시 생성해야 합니다. 더 이상 패키지를 푸시하지 않으려는 경우 API 키를 제거할 수도 있습니다.

범위 지정을 사용하면 다양한 용도로 별도의 API 키를 만들 수 있습니다. 각 키에는 만료 기간이 있으며 키 범위를 특정 패키지 또는 glob 패턴으로 지정할 수 있습니다. 또한 각 키의 범위를 특정 작업( 새 패키지 및 패키지 버전 푸시, 새 패키지 버전만 푸시 또는 목록 해제)으로 지정합니다.

범위 지정을 통해 조직의 패키지를 관리하는 다른 사용자에 대한 API 키를 만들어 필요한 권한만 가질 수 있습니다.

자세한 내용은 범위가 지정된 API 키를 참조하세요.

dotnet CLI 사용

.nupkg 파일이 포함된 폴더에서 다음 명령을 실행합니다. .nupkg 파일 이름을 지정하고 키 값을 API 키로 바꿉다.

dotnet nuget push Contoso.08.28.22.001.Test.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json

출력은 게시 프로세스의 결과를 보여줍니다.

Pushing Contoso.08.28.22.001.Test.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
  PUT https://www.nuget.org/api/v2/package/
warn : All published packages should have license information specified. Learn more: https://aka.ms/nuget/authoring-best-practices#licensing.
  Created https://www.nuget.org/api/v2/package/ 1221ms
Your package was pushed.

자세한 내용은 dotnet nuget 푸시를 참조하세요.

참고 항목

테스트 패키지가 nuget.org 라이브되지 않도록 하려면 nuget.org 테스트 사이트 https://int.nugettest.org로 푸시할 수 있습니다. int.nugettest.org 업로드된 패키지는 보존되지 않을 수 있습니다.

NuGet CLI 사용

  1. 명령 프롬프트에서 다음 명령을 실행하여 nuget.org 받은 키로 바꿉 <your_API_key> 있습니다.

    nuget setApiKey <your_API_key>
    

    이 명령은 동일한 컴퓨터에서 API 키를 다시 입력할 필요가 없도록 NuGet 구성에 API 키를 저장합니다.

    참고 항목

    이 API 키는 프라이빗 피드를 사용하여 인증하는 데 사용되지 않습니다. 이러한 원본으로 인증하기 위한 자격 증명을 관리하려면 nuget 원본 명령을 참조하세요.

  2. 다음 명령을 사용하여 패키지를 푸시합니다.

    nuget push YourPackage.nupkg -Source https://api.nuget.org/v3/index.json
    

Azure Pipelines를 사용하여 게시

CI/CD(연속 통합/지속적인 배포) 프로세스의 일환으로 Azure Pipelines를 사용하여 패키지를 nuget.org 푸시할 수 있습니다. 자세한 내용은 Azure Pipelines를 사용하여 NuGet 패키지 게시를 참조 하세요.

서명된 패키지 게시

서명된 패키지를 제출하려면 먼저 패키지에 서명하는 데 사용한 인증서 를 등록해야 합니다. 서명된 패키지 요구 사항을 충족하지 않으면 nuget.org 패키지를 거부합니다.

패키지 크기 제한

Nuget.org 패키지 크기 제한은 약 250MB입니다. 해당 제한을 초과하는 패키지가 업로드되면 다음 오류가 표시됩니다.

패키지 파일이 크기 제한을 초과합니다. 다시 시도하세요.

이러한 패키지가 명령줄에서 푸시되면 다음 출력이 생성됩니다.

  RequestEntityTooLarge https://www.nuget.org/api/v2/package/ 13903ms
error: Response status code does not indicate success: 413 (The package file exceeds the size limit. Please try again.).

이 오류가 발생하는 경우 패키지 콘텐츠를 수정하여 크기를 줄이는 것이 좋습니다. 패키지에 디버그 기호를 압축하는 경우 별도로 게시하는 것이 좋습니다. 다른 자산은 하나 이상의 종속성 패키지로 별도로 게시하여 더 작은 청크로 분산할 수 있습니다.

패키지 유효성 검사 및 인덱싱

nuget.org 푸시된 패키지는 바이러스 검사 같은 여러 유효성 검사를 거치며, 기존 패키지는 주기적으로 검사됩니다. 패키지가 모든 유효성 검사 검사 전달하는 경우 인덱싱되어 검색 결과에 표시되는 데 시간이 걸릴 수 있습니다. 패키지가 인덱싱되는 동안 목록에 없는 패키지 아래에 표시되며 패키지 페이지에 다음 메시지가 표시됩니다.

Screenshot of a message indicating that a package isn't yet published.

유효성 검사 및 인덱싱이 완료되면 패키지가 성공적으로 게시되었다는 전자 메일을 받게 됩니다. 패키지가 유효성 검사 검사 실패하면 패키지 페이지가 업데이트되어 관련 오류가 표시되고 알림 전자 메일이 수신됩니다.

패키지 유효성 검사 및 인덱싱은 일반적으로 15분 미만이 걸립니다. 패키지 게시가 예상보다 오래 걸리는 경우 상태.nuget.org 검사 nuget.org 상태. 모든 시스템이 작동하고 패키지가 1시간 이내에 성공적으로 게시되지 않은 경우 패키지 페이지의 연락처 지원 링크를 사용하여 nuget.org 문의하세요.

패키지 상태 보려면 nuget.org 오른쪽 위에 있는 계정 이름으로 패키지 관리를 선택하고 게시된 패키지 또는 목록에 없는 패키지에서 패키지를 선택합니다.

nuget.org 패키지 소유자 관리

패키지 소유자는 다른 소유자 추가 및 제거 및 업데이트 게시를 포함하여 패키지에 대한 모든 권한을 갖습니다.

NuGet 패키지의 .nuspec 파일은 패키지의 작성자를 정의하지만 nuget.org 해당 메타데이터를 사용하여 소유권을 정의하지 않습니다. 대신, nuget.org 패키지를 게시하는 사용자, 패키지를 업로드한 로그인한 사용자 또는 API 키가 사용된 dotnet pushnuget SetApiKey사용자 또는 nuget push해당 사용자에게 소유권을 할당합니다.

패키지의 소유권을 변경하려면 다음을 수행합니다.

  1. 현재 패키지를 소유하고 있는 계정으로 nuget.org 로그인합니다.

  2. 오른쪽 위에서 계정 이름을 선택하고, 패키지 관리를 선택하고, 게시된 패키지를 확장합니다.

  3. 관리하려는 패키지를 선택하고 패키지 페이지의 오른쪽에서 패키지 관리를 선택합니다.

  4. 패키지 관리 페이지에서 소유자를 선택합니다.

  5. 다음 작업 중 하나를 수행합니다.

    • 제거를 선택하여 현재 소유자를 제거합니다.

    • 사용자 이름 및 메시지를 입력하고 추가를 선택하여 소유자 추가 아래에 소유자추가합니다.

      이 작업은 확인 링크가 포함된 이메일을 새 공동 소유자에게 보냅니다. 확인하면 해당 사용자에게는 소유자를 추가하고 제거하는 모든 권한이 있습니다. 확인될 때까지 현재 소유자 섹션에는 해당 사용자에 대한 보류 중인 승인이 표시됩니다.

소유권을 이전하려면 소유권이 변경되거나 잘못된 계정으로 패키지가 게시되는 경우 새 소유자를 추가합니다. 소유권을 확인하면 목록에서 이전 소유자를 제거할 수 있습니다.

회사 또는 그룹에 소유권을 할당하려면 해당 팀 구성원에게 전달되는 이메일 별칭이 있는 nuget.org 계정을 만듭니다. 예를 들어 다양한 Microsoft ASP.NET 패키지는 Microsoftaspnet 계정에서 공동 소유합니다.

경우에 따라 패키지에 활성 소유자가 없을 수 있습니다. 예를 들어 원래 소유자가 패키지를 생성한 회사를 떠났을 수 있습니다. 패키지의 정당한 소유자이고 소유권을 되찾아야 하는 경우 nuget.org 연락처 양식을 사용하여 NuGet 팀에 상황을 설명합니다. 팀은 기존 소유자를 찾는 것을 포함하여 소유권을 확인하는 프로세스를 따르며 패키지 소유자가 되기 위한 새 초대를 보낼 수 있습니다.

다음 단계