본문 바로가기

.NET/C#

Nuget 패키지 만들기

https://www.codeproject.com/Articles/1214420/Creating-a-Nuget-Package-Step-by-Step


Nuget 패키지 만들기 - 단계별 Nuget 패키지 만들기는 비교적 간단한 과정이지만 처음에는 약간 어려울 수 있습니다. 이 자습서는 프로세스를 단계별로 안내합니다. 최근에 우리의 로깅 엔진을 포함하는 ErrLog.IO nuget 패키지를 발행했습니다
이메일 주소가 괜찮습니까? 귀하는 뉴스 레터에 가입했으나 귀하의 이메일 주소는 확인되지 않았거나 오랜 시간에 재확인되지 않았습니다. 제발 클릭 여기에 확인 이메일이 전송 가지고 우리가 당신의 이메일 주소를 확인하고 다시 당신에게 뉴스 레터를 보내 시작할 수 있습니다. 또는 구독을 업데이트 할 수 있습니다 .

Nuget 패키지 만들기 - 단계별

 

Nuget 패키지를 만드는 것은 비교적 간단한 과정이지만, 처음에는 약간 어려울 수 있습니다. 이 자습서는 프로세스를 단계별로 안내합니다.

최근 ErrLog.IO nuget 패키지를 게시했습니다.이 패키지에는 로깅 엔진이 포함되어 있습니다. .

Microsoft는 Nuget에 대한 포괄적 인 문서를 가지고 있지만 도움을주기 위해이 과정을 간소화했습니다.

 

프로젝트

Nuget 패키지는 닷넷 프레임 워크 클래스 라이브러리 (NET Framework Class Library)가 이상적입니다. 이 예에서는 C # 인스턴스를 사용하며 패키지는 모든 의도에 대해 일반 클래스 라이브러리입니다.

문서 또는 readme.md 파일과 같이 패키지에 포함하려는 모든 파일이 프로젝트에 포함되어야합니다.

표준 .NET Framework 클래스 라이브러리 만들기

 

.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입니다.
iconUrlUI 디스플레이에서 패키지의 아이콘으로 사용할 투명 배경이있는 64x64 이미지의 URL입니다. 이 URL은 완전한 URL이어야합니다. 패키지를 지정하지 않으면 패키지에 기본 Nuget 로고가 표시됩니다.
릴리즈 노트패키지의 이번 릴리스에서 변경된 사항에 대한 간략한 설명입니다.
저작권패키지의 저작권 세부 정보.

.nuspec 파일은 여기에 설명되어 추가 구성 옵션을 많이 가지고 : https://docs.microsoft.com/en-us/nuget/schema/nuspec

 

그림은 천 개의 풀 요청에 가치가있다.

패키지를 Nuget.org 라이브러리에서 수천 명의 다른 사람들과 차별화하려면 고유 한 로고를 만드는 것이 좋습니다.

로고는 투명 배경이있는 64x64 픽셀 이미지 여야하며 .nuspec 파일 의 <iconUrl> </ iconUrl> 요소에 포함됩니다.

Nuget Package Logo

 

README.MD 파일 포함

readme.md 파일이 패키지를 사용하는 방법에 대한 지침을 사용자에게 제공하는 좋은 방법입니다.

이것은 패키지가 설치된 후 Visual Studio에 표시되며 markdown을 사용하여 작성됩니다.

readme 파일은 여기서 확인하실 수 있습니다 .

 

패키지 만들기

.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 패키지 요약

 

최종 생각

전세계 배포 용 Nuget 패키지를 배포하는 것은 쉽지만 실수로 패키지를 배포하는 것은 테스트가 사용자의 책임이므로 쉽게 수행 할 수 있습니다.

패키지를 게시하자마자 패키지를 다운로드하고 검증하여 사용자에게 버그가없는 훌륭한 경험을 제공 할 수있는 확실한 테스트 프로세스가 있는지 확인하십시오.

 

참고 문헌