이 빠른 시작에서는 Microsoft Visual Studio 사용하여 .NET 클래스 라이브러리에서 NuGet 패키지를 만듭니다. 그런 다음 CLI(명령줄 인터페이스) 도구를 사용하여 패키지를 nuget.org 게시합니다.
이 빠른 시작은 Windows 사용자만을 위한 것입니다. 다른 플랫폼을 사용하는 경우 .NET CLI 사용합니다.
필수 구성 요소
2026년 Visual Studio의 .NET 관련 워크로드.
visualstudio.microsoft.com 2026 Community Edition을 무료로 설치하거나 Professional 또는 Enterprise 버전을 사용할 수 있습니다.
Visual Studio 2017 이상에서는 .NET 관련 워크로드를 설치할 때 자동으로 NuGet 기능을 포함합니다.
.NET CLI입니다.
Visual Studio 2017 이상에서는 .NET CLI가 .NET 관련 워크로드와 함께 자동으로 설치됩니다. .NET SDK 설치하여 .NET CLI를 가져올 수도 있습니다. .NET CLI는 SDK 스타일 형식(및 SDK 특성)을 사용하는 .NET 프로젝트에 필요합니다. Visual Studio 2017 이상의 기본 .NET 클래스 라이브러리 템플릿은 SDK 특성을 사용합니다.
중요하다
비 SDK 스타일 프로젝트를 사용하는 경우 의 절차에 따라 패키지를 만들고 게시하는 대신 Visual Studio(.NET Framework, Windows)을 사용하여 패키지를 만들고 게시합니다. 이 문서에서는 .NET CLI를 사용하는 것이 좋습니다. NuGet CLI를 사용하여 NuGet 패키지를 게시할 수 있지만 이 문서의 일부 단계는 SDK 스타일 프로젝트 및 .NET CLI와 관련이 있습니다. NuGet CLI는 non-SDK 스타일 프로젝트(일반적으로 프레임워크 프로젝트 .NET)에 사용됩니다.
nuget.org 무료 계정. NuGet 패키지를 업로드하려면 먼저 계정을 등록하고 확인해야 합니다.
NuGet CLI입니다. nuget.org 다운로드하여 설치할 수 있습니다. 적절한 폴더에 nuget.exe 파일을 추가하고 해당 폴더를 환경 변수에 추가합니다
PATH.
클래스 라이브러리 프로젝트 만들기
패키지하려는 코드에 기존 .NET 클래스 라이브러리 프로젝트를 사용하거나 다음 단계를 수행하여 만들 수 있습니다.
Visual Studio File>New>Project/Solution 선택합니다.
새 프로젝트 만들기 창에서 검색 상자로 이동하여 클래스 라이브러리를 입력합니다.
결과 프로젝트 템플릿 목록에서 다음 조건을 충족하는 클래스 라이브러리 템플릿을 선택합니다.
- 설명이 있습니다 .NET 또는 .NET Standard를 대상으로 하는 클래스 라이브러리를 만들기 위한 프로젝트
- C# 태그가 있습니다.
다음을 선택합니다.
새 프로젝트 창에서 프로젝트 이름에 AppLogger를 입력한 다음, 다음을 선택합니다.
추가 정보 창에서 프레임워크에 적절한 값을 선택한 다음 만들기를 선택합니다.
어떤 프레임워크를 선택할지 잘 모르는 경우 최신이 좋은 선택이며 나중에 쉽게 변경할 수 있습니다. 사용할 프레임워크에 대한 정보는
netx.0와netstandard중 어느 것을 선택할지에 대한 내용을 참조하세요.(선택 사항) 이 빠른 시작에서는 템플릿 클래스 라이브러리가 패키지를 만들기에 충분하기 때문에 NuGet 패키지에 대한 추가 코드를 작성할 필요가 없습니다. 그러나 패키지에 몇 가지 기능 코드를 추가하려면 다음 코드를 포함합니다.
namespace AppLogger { public class Logger { public void Log(string text) { Console.WriteLine(text); } } }
패키지 속성 구성
프로젝트를 만든 후 다음 단계에 따라 NuGet 패키지 속성을 구성할 수 있습니다.
솔루션 탐색기에서 프로젝트를 선택한 다음 프로젝트><project-name> 속성을 선택합니다. 여기서 <project-name>은(는) 프로젝트의 이름입니다.
패키지 노드를 확장한 다음 일반선택합니다.
패키지 노드는 Visual Studio의 SDK 스타일 프로젝트에만 나타납니다. 비 SDK 스타일 프로젝트(일반적으로 .NET Framework 프로젝트)를 대상으로 하는 경우 프로젝트를 마이그레이션하거나을 참조하고 단계별 지침은 Visual Studio(.NET Framework, Windows)을 사용하여 패키지를 만들고 게시합니다.
Visual Studio 프로젝트 속성 창 스크린샷 NuGet 패키지의 일반 속성(예: 패키지 ID 및 title. 패키지 ID의 경우 패키지에 고유한 ID를 지정합니다.
중요하다
패키지에 사용하는 호스트에서 고유한 식별자(예: nuget.org)를 제공해야 합니다. 그렇지 않으면 오류가 발생합니다. 이 빠른 시작에서는 게시 단계에서 패키지를 공개적으로 표시하므로 ID에 샘플 또는 테스트를 포함하는 것이 좋습니다. ID를 선택하는 방법에 대한 자세한 내용은 패키지 식별자에 대한 모범 사례를 참조하세요.
원하는 다른 속성을 입력합니다. 공용 사용을 위해 빌드된 패키지의 경우 태그는 다른 사용자가 패키지를 찾고 수행하는 작업을 이해하는 데 도움이 되므로 Tags 속성에 특히 주의해야 합니다.
모든 속성은 Visual Studio 프로젝트에 대해 만드는 .nuspec 매니페스트로 이동합니다. SDK 스타일 프로젝트의 Microsoft Build(MSBuild) 속성이 .nuspec 파일 속성에 매핑되는 방법을 보여 주는 표는 pack 대상 참조하세요. .nuspec 파일 속성에 대한 설명은 .nuspec 참조를 참조하세요.
(선택 사항) AppLogger.csproj 프로젝트 파일에서 속성을 직접 보려면 프로젝트 >선택합니다.
AppLogger.csproj 파일이 새 탭에서 열립니다.
이 옵션은 SDK 스타일 특성을 사용하는 프로젝트에 사용할 수 있습니다.
pack 명령 실행
프로젝트에서 NuGet 패키지를 만들려면 다음 단계를 수행합니다.
Build>구성 관리자를 선택한 다음, Active 솔루션 구성을 Release로 설정합니다.
솔루션 탐색기AppLogger 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 Pack 선택합니다.
Visual Studio는 프로젝트를 빌드하고 .nupkg 파일을 만듭니다.
패키지 파일의 경로를 포함하여 자세한 내용은 출력 창을 검사합니다. 이 예제에서 빌드된 어셈블리는 .NET 8.0 대상에 적합한 bin\Release\net8.0 폴더에 있습니다.
1>------ Build started: Project: AppLogger, Configuration: Release Any CPU ------ 1> AppLogger -> d:\proj\AppLogger\AppLogger\bin\Release\net8.0\AppLogger.dll 1> Successfully created package 'd:\proj\AppLogger\AppLogger\bin\Release\Contoso.App.Logger.Test.1.0.0.nupkg'. ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
Pack 명령이 메뉴에서 누락된 경우 프로젝트는 SDK 스타일 프로젝트가 아닐 수 있습니다. 다음 단계 중 하나를 수행합니다.
- .NET CLI를 사용할 수 있도록 프로젝트를 업그레이드합니다.
- Create and publish a package using Visual Studio(.NET Framework, Windows)에 있는 지침을 따라 프로젝트에서 NuGet CLI를 사용하여 NuGet 패키지를 만들고 게시하십시오.
(선택 사항) 빌드에서 패키지 생성
프로젝트를 빌드할 때 NuGet 패키지를 자동으로 생성하도록 Visual Studio를 구성할 수 있습니다.
솔루션 탐색기 에서 프로젝트를 선택합니다. 그런 다음Project project-name 속성을 선택합니다. 여기서 project-name 은 프로젝트 ( AppLogger 인 경우).패키지 노드를 확장하고 일반선택한 다음 빌드 NuGet 패키지 생성선택합니다.
메모
이 옵션을 선택하면 패키지를 생성하는 데 필요한 추가 시간이 프로젝트의 전체 빌드 시간을 증가합니다.
(선택 사항) MSBuild로 패키징
Pack 메뉴 명령을 사용하는 대신 이 명령을 사용하여 msbuild -t:pack 프로젝트에서 NuGet 패키지를 빌드할 수 있습니다. NuGet 4.x+ 및 MSBuild 15.1+는 프로젝트에 필요한 패키지 데이터가 포함된 경우 pack 대상을 지원합니다.
프로젝트가 솔루션 탐색기 열려 있는 상태에서 Tools>Command Line>Developer 명령 프롬프트를 선택하여 명령 프롬프트 창을 엽니다.
프로젝트 디렉터리에서 명령 프롬프트 창이 열립니다.
다음 명령을 실행합니다.
msbuild -t:pack.
자세한 내용은 MSBuild를 사용하여 NuGet 패키지 만들기를 참조하세요.
패키지 게시
.nupkg 파일을 만든 후 다음 섹션의 단계를 수행하여 nuget.org 게시합니다. .NET CLI 또는 NuGet CLI를 게시에 사용할 수 있습니다. 사용자가 nuget.org에서 획득한 API 키를 또한 사용합니다.
메모
Nuget.org 업로드된 모든 패키지에서 바이러스를 검사하고 바이러스가 포함된 패키지를 거부합니다. 또한 Nuget.org 나열된 모든 기존 패키지를 주기적으로 검사합니다.
nuget.org 게시하는 패키지는 목록에 없는 한 다른 개발자에게 공개적으로 표시됩니다. 패키지를 비공개로 호스트하려면 사용자 고유의 NuGet 피드 호스팅을 참조하세요.
API 키 획득
NuGet 패키지를 게시하기 전에 API 키를 만듭니다.
nuget.org 계정에 로그인 하거나 계정이 없는 경우 계정을 만듭니 다.
오른쪽 위 모서리에서 사용자 이름을 선택한 다음 , API 키를 선택합니다.
만들기를 선택한 다음 키의 이름을 입력합니다.
선택 범위에서, 푸시를 선택합니다.
패키지 선택에서 Glob 패턴에 별표(*)를 입력합니다.
선택합니다만들기.
복사 선택하여 새 키를 복사합니다.
중요하다
- 항상 API 키를 비밀로 유지합니다. API 키는 누구나 사용자를 대신하여 패키지를 관리하는 데 사용할 수 있는 암호와 같습니다. 실수로 표시되는 경우 API 키를 삭제하거나 다시 생성합니다.
- 나중에 키를 다시 복사할 수 없으므로 키를 안전한 위치에 저장합니다. API 키 페이지로 돌아가면 키를 다시 생성하여 복사해야 합니다. 패키지를 더 이상 푸시하지 않으려는 경우 API 키를 제거할 수도 있습니다.
범위 지정 은 다양한 용도로 별도의 API 키를 만드는 방법을 제공합니다. 각 키에는 만료 시간 프레임이 있으며 키 범위를 특정 패키지 또는 glob 패턴으로 지정할 수 있습니다. 또한 각 키의 범위를 특정 작업( 새 패키지 및 패키지 버전 푸시, 새 패키지 버전만 푸시 또는 목록 해제)으로 지정합니다.
범위 지정을 통해 조직의 패키지를 관리하는 다른 사용자에 대한 API 키를 만들어 필요한 권한만 가질 수 있습니다.
자세한 내용은 범위를 지정한 API 키를 참조하세요.
.NET CLI 또는 NuGet CLI를 사용하여 게시
.NET CLI 또는 NuGet CLI를 사용하여 패키지를 서버에 푸시하고 게시할 수 있습니다. 사용하려는 도구의 탭으로 이동합니다.
- .NET CLI
- NuGet CLI
.NET CLI(dotnet.exe)는 NuGet CLI에 권장되는 대안입니다.
.nupkg 파일이 포함된 폴더에서 다음 명령을 실행합니다.
<package-file>를 .nupkg 파일의 이름으로 바꾸고 <API-key>를 API 키로 바꾸세요.
dotnet nuget push <package-file> --api-key <API-key> --source https://api.nuget.org/v3/index.json
Tip
NuGet 7.6(.NET SDK 10.0.300)부터 명령줄에서 NUGET_API_KEY 전달하는 대신 --api-key 환경 변수를 설정할 수 있습니다.
이는 키를 명령줄 인수로 전달하지 않으려는 CI/CD 시나리오에서 유용합니다.
출력은 게시 프로세스의 결과를 보여줍니다.
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참조하십시오.
게시 중 오류
명령을 실행 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 패키지가 nuget.org 게시되었으므로 다른 개발자가 프로젝트에서 사용할 수 있습니다.
유용하지 않은 패키지(예: 빈 클래스 라이브러리의 이 샘플 패키지)를 만들거나 패키지를 표시하지 않으려는 경우 패키지를 목록 해제 하여 검색 결과에서 숨길 수 있습니다.
패키지 관리 페이지의 게시된 패키지 아래에 패키지가 나타나면 패키지 목록 옆에 있는 연필 아이콘을 선택합니다.
다음 페이지에서 목록 옵션을 선택하고 검색 결과에 목록 포함 체크박스를 선택 해제한 다음 저장을 선택합니다.
이제 패키지 관리 목록에 없는 패키지 패키지가 표시되고 더 이상 검색 결과에 나타나지 않습니다.
메모
테스트 패키지가 nuget.org에서 라이브로 전환되지 않도록 하려면 https://int.nugettest.org의 nuget.org 테스트 사이트로 푸시할 수 있습니다. int.nugettest.org에 업로드된 패키지는 보존되지 않을 수 있음을 유의하십시오.
read-me 또는 다른 파일 추가
패키지에 read-me 파일 또는 기타 파일을 포함할 수 있습니다.
read-me 파일 추가
패키지에 read-me 파일을 추가하려면 다음 단계를 수행합니다.
Project>Project 파일을 편집 선택하여 project 파일을 엽니다.
프로젝트 파일에서 요소로
PropertyGroup이동한 다음 자식 요소를 추가합니다PackageReadmeFile.<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> ... <PackageReadmeFile>readme.md</PackageReadmeFile> ... </PropertyGroup> </Project>ItemGroup요소로 이동한 후,None자식 요소를 추가합니다.<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> ... <PackageReadmeFile>readme.md</PackageReadmeFile> ... </PropertyGroup> <ItemGroup> ... <None Include="readme.md" Pack="true" PackagePath="\" /> ... </ItemGroup> </Project>
앞의 예제에서 속성은 프로젝트 루트에 readme.md 파일을 지정합니다. 패키지를 빌드, 압축 및 게시한 후 nuget.org 패키지 페이지에 read-me 파일의 내용을 표시합니다. Visual Studio 해당 파일의 내용도 패키지 관리자 UI에 표시합니다.
예를 들어 다음 스크린샷은 패키지에 대한 HtmlAgilityPack read-me 파일을 보여줍니다.
다른 파일 추가
패키지에 다른 파일을 추가하려면 Project> Project 파일을 선택하여 project 파일을 엽니다. 그런 다음 요소에 Content 자식 요소를 추가합니다.ItemGroup
<ItemGroup>
<Content Include="other-content.md">
<Pack>true</Pack>
<PackagePath>\</PackagePath>
</Content>
</ItemGroup>
자세한 내용은 패키지에 콘텐츠 포함을 참조하세요.
관련 비디오
패키지 관리에 NuGet을 사용하는 방법에 대한 비디오는 .NET 초보자용 NuGet 및 초보자용 NuGet을 참조하세요.
관련 콘텐츠
Visual Studio .NET Framework를 사용하여 NuGet 패키지를 만드는 방법을 알아보려면 nuget.exe CLI 사용하여 패키지 만들기를 참조하세요.
NuGet에 대한 자세한 내용은 다음 문서를 참조하세요.