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

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

사전 요구 사항

  • dotnet 명령줄 도구를 제공하는 .NET SDK. Visual Studio 2017부터 dotnet CLI는 .NET 또는 .NET Core 관련 워크로드와 함께 자동으로 설치됩니다.

  • nuget.org 무료 계정. 새 개별 계정 추가의 지침을 따릅니다.

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

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

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

더 많은 정보는 dotnet new를 참조하세요.

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

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

.csproj, .fsproj 또는 .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 pack를 실행할 때마다 dotnet build를 자동으로 실행하려면, 다음 줄을 <PropertyGroup> 내의 프로젝트 파일에 추가합니다.

    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>

패키지 게시

nuget.org에서 가져온 API 키와 함께 dotnet 누겟 푸시 명령어를 사용하여 .nupkg 파일을 nuget.org에 게시합니다.

메모

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

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

API 키 가져오기

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

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

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

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

  5. 패키지 선택에서 Glob 패턴에 별표(*)를 입력합니다.

  6. 선택하고생성합니다.

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

    새 API 키, 지금 키 복사에 대한 메시지 및 강조 표시된 복사 단추를 보여 주는 nuget.org 페이지의 스크린샷

Important

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

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

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

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

dotnet nuget push로 게시

.nupkg 파일이 포함된 폴더에서 다음 명령을 실행합니다. <package-file>.nupkg 파일의 이름으로 바꾸고 <API-key>를 API 키로 바꾸세요.

dotnet nuget push <package-file> --api-key <API-key> --source https://api.nuget.org/v3/index.json

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

Pushing <package-file> to 'https://www.nuget.org/api/v2/package'...
  PUT https://www.nuget.org/api/v2/package/
  Created https://www.nuget.org/api/v2/package/ 2891ms
Your package was pushed.

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

게시 오류

명령을 실행 push 하면 때때로 오류가 발생합니다. 예를 들어 다음과 같은 상황에서 오류가 발생할 수 있습니다.

  • API 키가 잘못되었거나 만료되었습니다.
  • 호스트에 이미 있는 식별자가 있는 패키지를 게시하려고 합니다.
  • 게시된 패키지를 변경하지만 다시 게시하기 전에 버전 번호를 업데이트하는 것을 잊어버립니다.

오류 메시지는 일반적으로 문제의 원인을 나타냅니다.

예를 들어 식별자가 Contoso.App.Logger.Test nuget.org 있다고 가정합니다. 해당 식별자를 사용하여 패키지를 게시하려고 하면 다음 오류가 발생합니다.

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 이동하여 오른쪽 위 모서리에서 사용자 이름을 선택한 다음 패키지 관리를 선택합니다.

메모

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

아직 게시되지 않은 패키지에 대한 nuget.org 경고 메시지의 스크린샷 텍스트는 유효성 검사 및 인덱싱에 1시간이 걸릴 수 있음을 나타냅니다.

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

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

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

    nuget.org 패키지 페이지의 스크린샷. 게시된 패키지 섹션에는 하나의 패키지가 나열됩니다. 편집 아이콘이 강조 표시됩니다.

  2. 다음 페이지에서 목록 옵션을 선택하고 검색 결과에 목록 포함 체크박스를 선택 해제한 다음 저장을 선택합니다.

    nuget.org 페이지의 스크린샷. 목록 섹션에서 검색 결과에 패키지를 나열하는 옵션이 강조 표시됩니다.

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

메모

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

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

채널 9YouTube에서 더 많은 NuGet 비디오를 찾습니다.

다음 단계

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

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