https://www.codeproject.com/Articles/1214420/Creating-a-Nuget-Package-Step-by-Step
Nuget 패키지 만들기 - 단계별
Nuget 패키지를 만드는 것은 비교적 간단한 과정이지만, 처음에는 약간 어려울 수 있습니다. 이 자습서는 프로세스를 단계별로 안내합니다.
최근 ErrLog.IO nuget 패키지를 게시했습니다.이 패키지에는 로깅 엔진이 포함되어 있습니다. .
Microsoft는 Nuget에 대한 포괄적 인 문서를 가지고 있지만 도움을주기 위해이 과정을 간소화했습니다.
프로젝트
.nuspec 파일 만들기
Nuget 패키지의 주요 구성 요소는 .nuspec 파일입니다. 이 파일은 패키지를 나타내는 XML 파일이며 Nuget.org가 패키지를 게시하는 데 필요한 모든 정보를 포함합니다.
본질적이지는 않지만 프로젝트의 루트에 .nuspec 파일 을 포함 시키면 삶이 다소 편하게됩니다 .
빈 .nuspec 파일은 다음과 같습니다. 이것은 첫 번째 패키지를 만드는 데 사용할 수있는 기본 구조입니다.
<?xml version="1.0"?> <package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd"> <metadata> <id></id> <version></version> <title></title> <authors></authors> <owners></owners> <licenseUrl></licenseUrl> <projectUrl></projectUrl> <iconUrl></iconUrl> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description></description> <releaseNotes></releaseNotes> <copyright></copyright> <tags></tags> <dependencies> <dependency id="" /> </dependencies> <summary></summary> </metadata> <files> <file src="" target="" /> </files> </package>
실제 예 - ErrLog.IO.Nuspec 파일
<?xml version="1.0"?> <package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd"> <metadata> <id>errlog.io</id> <version>1.1.18</version> <title>ErrLog.IO Error and Exception Logging Tool</title> <authors>Matthew Proctor, Michael Sanders, Alastair Bateman</authors> <owners>kutamo</owners> <licenseUrl>https://errlog.io/terms</licenseUrl> <projectUrl>https://errlog.io/docs/getting-started</projectUrl> <iconUrl>https://www.errlog.io/images/errlog_dark_logo.png</iconUrl> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>ErrLog.IO is an exception and error logging tool</description> <releaseNotes>Bug fixes and performance improvements </releaseNotes> <copyright>Copyright 2017 Kutamo Pty. Ltd.</copyright> <tags>exceptions web http error logging</tags> <dependencies> <dependency id="Newtonsoft.Json" version="10.0" /> </dependencies> <summary>ErrLog.IO is an exception and error logging tool.</summary> </metadata> <files> <file src="readme.md" target="" /> </files> </package>
필수 .nuspec 요소
요소 | 설명 또는 세부 정보 |
신분증 | 대소 문자를 구분하지 않는 패키지 식별자는 nuget.org에서 고유해야합니다. ID는 URL에 유효하지 않은 공백이나 문자를 포함 할 수 없으며 일반적으로 .NET 네임 스페이스 규칙을 따릅니다. |
번역 | major.minor.patch 패턴 다음에 나오는 패키지의 버전입니다 . 후속 패키지 배포마다이 값을 업데이트해야합니다. |
기술 | UI 표시 패키지에 대한 자세한 설명 - 패키지 설명 및 제공되는 기능이어야합니다. |
저자 | nuget.org의 프로필 이름과 일치하는 패키지 작성자의 쉼표로 구분 된 목록입니다. |
유용하지만 선택적인 .nuspec 요소
요소 | 설명 또는 세부 정보 |
표제 | 패키지의 제목은 일반적으로 UI에 사용되며 nuget.org 및 Visual Studio의 패키지 관리자에 표시됩니다. 지정하지 않으면 패키지 ID가 사용됩니다. |
projectUrl | 패키지 홈 페이지의 URL로, nuget.org뿐만 아니라 UI 디스플레이에 종종 표시됩니다. |
licenseUrl | 패키지 라이선스가있는 경우 해당 패키지의 라이선스 URL입니다. |
iconUrl | UI 디스플레이에서 패키지의 아이콘으로 사용할 투명 배경이있는 64x64 이미지의 URL입니다. 이 URL은 완전한 URL이어야합니다. 패키지를 지정하지 않으면 패키지에 기본 Nuget 로고가 표시됩니다. |
릴리즈 노트 | 패키지의 이번 릴리스에서 변경된 사항에 대한 간략한 설명입니다. |
저작권 | 패키지의 저작권 세부 정보. |
.nuspec 파일은 여기에 설명되어 추가 구성 옵션을 많이 가지고 : https://docs.microsoft.com/en-us/nuget/schema/nuspec
README.MD 파일 포함
readme.md 파일이 패키지를 사용하는 방법에 대한 지침을 사용자에게 제공하는 좋은 방법입니다.
이것은 패키지가 설치된 후 Visual Studio에 표시되며 markdown을 사용하여 작성됩니다.
패키지 만들기
.nuspec 파일을 만든 후에는 이제 패키지를 빌드 할 차례입니다!
Nuget.Org는 라이브러리를 Nuget 패키지로 묶는 데 사용되는 nuget.exe 응용 프로그램을 제공 합니다. Visual Studio를 사용하고 있거나 nuget.org/downloads 에서 다운로드 할 수 있으면 이미 설치되어 있어야합니다 .
Nuget.exe는 프로젝트 폴더에서 실행해야하므로 가장 간단한 방법은 명령 프롬프트 또는 PowerShell 창에서이 작업을 수행하는 것입니다.
cd \your_project_folder\
Nuget.Exe 패키지 저장소
라이브러리에서 패키지를 사용하는 경우 Nuget에 PC에있는 위치를 알려줘야합니다. 이 작업은 nuget.exe를 -Set repositoryPath 매개 변수 와 함께 실행하여 수행됩니다 .
pacakges 폴더는 일반적으로 Visual Studio를 사용하는 경우 솔루션의 루트 폴더에 있습니다.
nuget.exe config -Set repositoryPath="\full-path-to-your-packages-folder\"
이제 패키지를 만들 수 있습니다. 아래 예제에서는 빌드 구성을 Release 로 설정합니다 .
nuget.exe pack -IncludeReferencedProjects -properties Configuration=Release
이러한 옵션을 사용하여 Nuget은 참조 된 모든 패키지와 프로젝트를 포함하는 .nupkg를 만듭니다.
패키지 파일 이름은 [package id]. [package version] .nupkg 형식을 사용하여 자동으로 생성됩니다 .
예를 들어 최근 ErrLog.IO 패키지 파일 이름은 errlog.io.1.1.18.nupkg 입니다.
Nuget.Org에 패키지 배포
당신이 당신의 일단 .nupkg의 파일을 준비, 당신은 지금 Nuget.Org에 배포 할 수 있습니다
이제 Nuget.Org에 계정을 만들고 API 키를 만들었다 고 가정합니다.
수동으로 패키지 업로드
.nupkg 파일을 nuget에 업로드하려면 https://www.nuget.org/packages/manage/upload 를 방문하면됩니다.
Nuget은 패키지를 열고 .nuspec 파일을 읽고 한 번에 패키지를 게시 할 것입니다.
배포 자동화 및 스크립팅
nuget.exe 는 자동으로 패키지를 업로드 할 수 있습니다. 즉, 간단하고 상호 작용없이 패키지를 자동으로 빌드하고 배포하는 스크립트를 작성할 수 있습니다.
nuget.exe 를 통해 패키지를 업로드하려면 먼저 API 키를 설정해야합니다. Nuget.Org에서 계정 내에서 API 키를 만들 수 있습니다.
nuget.exe config setApiKey aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
API 키를 설정하면 이제 Nuget.Exe를 사용하여 Nuget.Org에 패키지를 푸시 할 수 있습니다 . 네가 몇 번이나 말할지라도 그건 이상하게 들린다.
nuget.exe push [your-package-filename].nupkg -Source https://www.nuget.org/api/v2/package
핸디 힌트!
푸시 명령은 와일드 카드를 지원합니다, 그래서 당신은 단지 하나의 명령으로 자동으로 폴더에 당신이 어떤 .nupkg 파일을 푸시 할 수 있습니다.
nuget.exe push *.nupkg -Source https://www.nuget.org/api/v2/package
ErrLog.IO Nuget Package를 구축하고 배포하는 방법 .
우리는 간단한 배치 파일을 사용하여 ErrLog.IO Nuget 패키지를 자동으로 빌드하고 배포합니다.이 패키지는 아래에서 공유 할 수 있습니다 (일부 항목은 난독 화 됨).
REM Move to project folder cd E:\ErrLog\ErrLogNuget\ REM Configure Nuget Settings nuget config -Set repositoryPath="E:\ErrLog\packages" nuget setApiKey aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee REM Create Nuget Package nuget pack -IncludeReferencedProjects -properties Configuration=Release REM Deploy to Nuget.Org nuget push *.nupkg -Source https://www.nuget.org/api/v2/package
누에 츠 통계
Nuget 패키지 페이지는 패키지 다운로드에 대한 간략한 요약과 피벗 테이블 형태로 자세한 정보를 제공하므로 버전 및 클라이언트 유형별 다운로드를 검토 할 수 있습니다.
최종 생각
전세계 배포 용 Nuget 패키지를 배포하는 것은 쉽지만 실수로 패키지를 배포하는 것은 테스트가 사용자의 책임이므로 쉽게 수행 할 수 있습니다.
패키지를 게시하자마자 패키지를 다운로드하고 검증하여 사용자에게 버그가없는 훌륭한 경험을 제공 할 수있는 확실한 테스트 프로세스가 있는지 확인하십시오.