آموزش ساخت NuGet Package به صورت گام به گام
ساخت NuGet Package یک فرآیند نسبتا ساده است اما برای اولین بار ممکن است کمی پیچیده به نظر برسد. ما در این مقاله یک بسته NuGet با نام LogAssist را ایجاد کرده و در یک برنامه از آن استفاده خواهیم کرد.
ایجاد پروژه LogAssist
بسته شما باید یک کلاس از نوع .Net Framework Class Library باشد. و تمام فایل هایی که می خواهید در بسته شما وجود داشته باشند، باید در پروژه Include شوند. LogAssist یک پروژه ساده برای log کردن رویداد های مختلفی است که در زمان اجرای برنامه رخ می دهد (مانند خطاها).
برای ایجاد این پروژه مراحل زیر را دنبال کنید:
- یک پروژه جدید با نام LogAssist و از نوع Class Library ایجاد کنید.
- یک کلاس جدید با نام Logger ایجاد کرده و محتوای زیر را در آن بنویسید.
کلاس Logger
public static class Logger { /// <summary> /// مسیر فایل log /// </summary> private const string LogFileName = "App.log"; /// <summary> /// این تابع محتوای داده شده را در فایل log می نویسید /// </summary> /// <param name="logContent">محتوای log</param> public static void Write(string logContent) { try { var modifiedContent = $"[{DateTime.Now}] {logContent}"; using (var stream = new FileStream(LogFileName, FileMode.OpenOrCreate)) using (var writter = new StreamWriter(stream)) writter.WriteLine(modifiedContent); } catch (Exception ex) { throw new Exception(ex.Message); } } }
حال این پروژه را Build کنید تا فایل dll مربوط به آن تولید شود. تا اینجای کار ما پروژه مورد نظر خود را ایجاد کردیم. در ادامه نحوه تبدیل این پروژه یک بسته NuGet را بررسی می کنیم.
ایجاد فایل .nuspec
.nuspec یک فایل XML شامل اطلاعات مربوط به بسته و سایر اطلاعاتی که سایت Nuget.org برای انتشار بسته به آن نیاز دارد، است. این فایل مهمترین بخش یک بسته NuGet محسوب می شود. در زیر ساختار یک فایل .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>
عناصر های ضروری
عنصر | توضیحات |
id |
شناسه (یا همان نام) مربوط به بسته را مشخص می کند. این نام حساس به حروف است و باید منحصر به فرد باشد. همچنین نباید شامل فضای خالی باشد. |
version |
نسخه بسته را بر اساس الگوی نسخه بندی major.minor.patch مشخص می کند. |
description |
توضیحات مربوط به بسته را مشخص می کند. |
authors |
لیست نویسندگان بسته را مشخص می کند. برای جدا سازی نویسدگان باید از comma استفاده کنید. |
عناصر اخیتاری اما مفید
عنصر | توضیحات |
title |
عنوان بسته شما را مشخص می کند. اگر مشخص نشود، به شناسه بسته برای عنوان استفاده می شود. |
projectUrl |
آدرس مربوط به بسته را مشخص می کند. برای مثال اگر پروژه شما در سایت GitHub باشد، می توانید آدرس مخزن را در این بخش وارد کنید. |
licenseUrl |
آدرس فایل لایسنس بسته را مشخص می کند. |
iconUrl |
آدرس یک تصویر PNG با اندازه ۶۴×۶۴ که به عنوان آیکون بسته نمایش داده می شود. اگر مشخص نشود، تصویر پیشفرض برای بسته انتخاب می شود. |
releaseNotes |
توضیحات مختصری در مورد نسخه منتشر شده را مشخص می کند. |
copyright |
جزئیات مربوط به کپی رایت بسته را مشخص می کند. |
در زیر فایل .nuspec مربوط به پروژه LogAssist را مشاهده می کنید:
<?xml version="1.0"?> <package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd"> <metadata> <id>LogAssist</id> <version>1.0.0</version> <title>Simple Logging Tool For .Net Applications</title> <authors>AmRo</authors> <owners>AmRo</owners> <licenseUrl>https://github.com/AmRo045/LogAssist/blob/master/LICENSE</licenseUrl> <projectUrl>https://github.com/AmRo045/LogAssist</projectUrl> <iconUrl>https://raw.githubusercontent.com/AmRo045/LogAssist/master/Resources/LogAssist_Icon.png</iconUrl> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>LogAssist is an exception and error logging tool.</description> <releaseNotes>First release</releaseNotes> <copyright>Copyright 2017 SourceSara.Com</copyright> <tags>logger exceptions error logging</tags> <summary>LogAssist is an exception and error logging tool.</summary> </metadata> <files> <file src="Readme.txt" target="" /> </files> </package>
ایجاد بسته NuGet
بعد از ایجاد فایل .nuspec حال باید آن را به یک بسته تبدیل کنید. به سایت Nuget.org رفته و از قسمت دانلود فایل nuget.exe را دانلود کنید. این برنامه با استفاده از اطلاعات موجود رد فایل .nuspec پروژه شما را به یک بسته Nuget تبدیل می کند. توجه داشته باشید که فایل nuget.exe باید در داخل فولدر پروژه شما اجرا شود.
برنامه nuget.exe را از طریق خط فرمان و با دستور زیر اجرا کنید:
nuget.exe config -Set repositoryPath="\full-path-to-your-packages-folder\"
دستور فوق مسیری که بسته شما قرار دارد را مشخص می کند.
حال دستور زیر را اجرا کنید تا بسته شما ایجاد شود:
nuget.exe pack -IncludeReferencedProjects -properties Configuration=Release
بعد از اجرای دستور فوق یک فایل جدید با پسوند .nupkg ایجاد می شود که شامل فایل های مربوط به بسته است. نام بسته به طور خودکار با فرمت [package id].[package version].nupkg ایجاد می شود. برای مثال (LogAssist.1.0.0.nupkg).
انتشار بسته NuGet
حال بسته شما آماده است و می توانید آن را در سایت Nuget.Org منتشر کنید تا در دسترس سایر توسعه دهنده ها قرار گیرد. در این آموزش فرض می کنیم که شما قبلا در این سایت حساب کاربری و یک API Key مربوط به خودتان را ایجاد کرده اید.
آپلود بسته به صورت دستی
در این روش شما به راحتی می توانید با رفتن به لینک زیر فایل nupkg مربوط به بسته خودتان را آپلود کنید. صفحه آپلود بسته سایت NuGet بعد از آپلود شدن بسته NuGet آن را باز کرده و محتوای فایل .nuspec را بررسی می کند. اگر بسته شما ایرادی نداشته باشد، آن را منتشر خواهد کرد.
آپلود بسته با استفاده از فایل Nuget.exe
به منظور آپلود بسته استفاده از برنامه Nuget.exe ابتدا باید با استفاده از دستور زیر API Key خود را تنظیم کنید:
nuget.exe config setApiKey aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
بعد از تنظیم API Key می توانید به راحتی با استفاده از دستور زیر بسته خود را آپلود کنید:
nuget.exe push [your-package-filename].nupkg -Source https://www.nuget.org/api/v2/package
nuget.exe push *.nupkg -Source https://www.nuget.org/api/v2/package
فیلم آموزش نحوه ایجاد یک بسته NuGet
برای درک بهتر مراحل فوق می توانید فیلم آموزشی زیر را مشاهده کنید.
نکات آموزش
- در فیلم آموزشی فوق از روش آپلود دستی استفاده شده است.
- ما بعد از ایجاد پروژه توسط نرم افزار ویژوال استودیو آن را با استفاده از Git در سایت GitHub آپلود کرده ایم.
- توجه داشته باشید که ما هنگام ساخت این آموزش یک بسته با نام LogAssist در سایت Org ایجاد کرده ایم. بنابراین ممکن است شما نتوانید یک بسته دیگر با همین نام ایجاد کنید.
- بعد از آپلود شدن بسته، مدتی طول می کشد تا بسته شما آماده استفاده شود (در بدترین حالت چند ساعت).
- برای ایجاد حساب کاربری در سایت Nuget باید از اکانت مایکروسافت خودتان استفاده کنید.
لینک های مفید
- مستندات مایکروسافت درمورد ساخت بسته Nuget
- صفحه دریافت API Key در سایت NuGet
- Nuget چیست؟
نوشته آموزش ساخت NuGet Package به صورت گام به گام اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.