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 패키지를 배포하는 것은 쉽지만 실수로 패키지를 배포하는 것은 테스트가 사용자의 책임이므로 쉽게 수행 할 수 있습니다.
패키지를 게시하자마자 패키지를 다운로드하고 검증하여 사용자에게 버그가없는 훌륭한 경험을 제공 할 수있는 확실한 테스트 프로세스가 있는지 확인하십시오.
