빠른 시작: dotnet CLI를 사용하여 패키지 만들기 및 게시

이 빠른 시작에서는 .NET 클래스 라이브러리에서 NuGet 패키지를 빠르게 만들고 .NET 명령줄 인터페이스 또는 dotnet CLI를 사용하여 nuget.org 게시하는 방법을 보여줍니다.

필수 조건

클래스 라이브러리 프로젝트 만들기

패키지하려는 코드에 기존 .NET 클래스 라이브러리 프로젝트를 사용하거나 다음과 같이 간단한 프로젝트를 만들 수 있습니다.

  1. AppLogger라는 폴더를 만듭니다.
  2. 명령 프롬프트를 열고 AppLogger 폴더로 전환합니다. 이 빠른 시작의 모든 dotnet CLI 명령은 기본적으로 현재 폴더에서 실행됩니다.
  3. 현재 폴더 이름을 사용하여 프로젝트를 만드는 를 입력 dotnet new classlib합니다.

자세한 내용은 dotnet new를 참조합니다.

프로젝트 파일에 패키지 메타데이터 추가

모든 NuGet 패키지에는 패키지의 콘텐츠 및 종속성을 설명하는 매니페스트가 있습니다. 최종 패키지에서 매니페스트는 프로젝트 파일에 포함하는 NuGet 메타데이터 속성을 사용하는 .nuspec 파일입니다.

.csproj, .fproj 또는 .vbproj 프로젝트 파일을 열고 기존 <PropertyGroup> 태그 내에 다음 속성을 추가합니다. 이름 및 회사에 고유한 값을 사용하고 패키지 식별자를 고유한 값으로 바꿉다.

<PackageId>Contoso.08.28.22.001.Test</PackageId>
<Version>1.0.0</Version>
<Authors>your_name</Authors>
<Company>your_company</Company>

Important

패키지 식별자는 nuget.org 및 기타 패키지 원본에서 고유해야 합니다. 게시하면 패키지가 공개적으로 표시되므로 예제 AppLogger 라이브러리 또는 다른 테스트 라이브러리를 사용하는 경우 포함 Sample 하거나 Test포함하는 고유한 이름을 사용합니다.

NuGet 메타데이터 속성에 설명된 선택적 속성을 추가할 수 있습니다.

참고 항목

공용 사용을 위해 빌드하는 패키지의 경우 속성에 PackageTags 특히 주의해야 합니다. 태그는 다른 사용자가 패키지를 찾아서 수행하는 작업을 이해하는 데 도움이 됩니다.

pack 명령 실행

프로젝트에서 NuGet 패키지 또는 .nupkg 파일을 빌드하려면 dotnet pack 명령을 실행합니다. 이 명령은 프로젝트를 자동으로 빌드합니다.

dotnet pack

출력은 .nupkg 파일의 경로를 보여 줍니다.

MSBuild version 17.3.0+92e077650 for .NET
  Determining projects to restore...
  Restored C:\Users\myname\source\repos\AppLogger\AppLogger.csproj (in 64 ms).
  AppLogger -> C:\Users\myname\source\repos\AppLogger\bin\Debug\net6.0\AppLogger.dll
  Successfully created package 'C:\Users\myname\source\repos\AppLogger\bin\Debug\Contoso.08.28.22.001.Test.1.0.0.nupkg'.

빌드 시 패키지를 자동으로 생성

실행할 dotnet build때마다 자동으로 실행 dotnet pack 하려면 다음 줄을 프로젝트 파일에 <PropertyGroup>추가합니다.

    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>

패키지 게시

nuget.org 가져오는 API 키와 함께 dotnet nuget 푸시 명령을 사용하여 .nupkg 파일을 nuget.org 게시합니다.

참고 항목

  • Nuget.org 바이러스에 대해 업로드된 모든 패키지를 검사하고 바이러스가 발견되면 패키지를 거부합니다. 또한 Nuget.org 나열된 모든 기존 패키지를 주기적으로 검사합니다.

  • nuget.org 게시하는 패키지는 목록에 없는 한 다른 개발자에게 공개적으로 표시됩니다. 패키지를 비공개로 호스트하려면 사용자 고유의 NuGet 피드 호스트를 참조 하세요.

API key 가져오기

  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 nuget push로 게시

.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 업로드된 패키지는 보존되지 않을 수 있습니다.

게시 오류

push 명령의 오류는 일반적으로 문제를 나타냅니다. 예를 들어 프로젝트에서 버전 번호를 업데이트하는 것을 잊어버렸을 수 있으므로 이미 존재하는 패키지를 게시하려고 합니다.

API 키가 잘못되었거나 만료되었거나 호스트에 이미 있는 식별자를 사용하여 패키지를 게시하려고 하면 오류가 표시됩니다. 예를 들어 식별자가 AppLogger-test 이미 nuget.org 있다고 가정합니다. 해당 식별자를 push 사용하여 패키지를 게시하려고 하면 다음 오류가 표시됩니다.

Response status code does not indicate success: 403 (The specified API key is invalid,
has expired, or does not have permission to access the specified package.).

이 오류가 발생하면 만료되지 않은 유효한 API 키를 사용하고 있음을 검사. 이 오류는 패키지 식별자가 호스트에 이미 있음을 나타냅니다. 오류를 해결하려면 패키지 식별자를 고유하게 변경하고, 프로젝트를 다시 빌드하고, .nupkg 파일을 다시 만들고, 명령을 다시 시도합니다push.

게시된 패키지 관리

패키지가 성공적으로 게시되면 확인 이메일을 받게 됩니다. 방금 게시한 패키지를 보려면 nuget.org 오른쪽 위에서 사용자 이름을 선택한 다음 패키지 관리를 선택합니다.

참고 항목

패키지를 인덱싱하고 다른 사용자가 찾을 수 있는 검색 결과에 표시하는 데 시간이 걸릴 수 있습니다. 이 시간 동안 패키지가 목록에 없는 패키지 아래에 나타나고 패키지 페이지에는 다음 메시지가 표시됩니다.

Screenshot showing the publishing message that's displayed when you upload a package to nuget.org.

이제 다른 개발자가 프로젝트에서 사용할 수 있는 nuget.org NuGet 패키지를 게시했습니다.

유용하지 않은 패키지(예: 빈 클래스 라이브러리를 사용하여 만든 이 샘플 패키지)를 만들었거나 패키지를 표시하지 않기로 결정한 경우 패키지를 목록 해제하여 검색 결과에서 숨길 수 있습니다.

  1. 패키지 관리 페이지의 게시된 패키지아래에 패키지가 표시되면 패키지 목록 옆에 있는 연필 아이콘을 선택합니다.

    Screenshot that shows the Edit icon for a package listing on nuget.org.

  2. 다음 페이지에서 목록을 선택하고 검색 결과 검사 상자에서 목록을 선택 취소한 다음 저장을 선택합니다.

    Screenshot that shows clearing the List checkbox for a package on nuget.org.

이제 패키지가 패키지 관리의 목록에 없는 패키지 아래에 표시되고 더 이상 검색 결과에 표시되지 않습니다.

참고 항목

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

첫 번째 NuGet 패키지를 만들고 게시해 주셔서 감사합니다.

Channel 9YouTube에서 더 많은 NuGet 비디오를 확인하세요.

다음 단계

dotnet CLI를 사용하여 패키지를 만드는 방법에 대한 자세한 내용은 다음을 참조하세요.

NuGet 패키지를 만들고 게시하는 방법에 대한 자세한 정보를 가져옵니다.