۱۳۹۰/۰۱/۲۳

آشنايي با NuGet - قسمت دوم


قسمت قبل از ديد يك مصرف كننده بود؛ اين قسمت جهت توسعه‌ دهنده‌ها تهيه شده است. كساني كه قصد دارند تا بسته‌هاي NuGet ايي از كارشان تهيه كنند. مراحل اينكار به شرح زير است:

الف) براي اين منظور نياز است تا برنامه‌ي‌ خط فرمان NuGet.exe معرفي شده در قسمت قبل را ابتدا دريافت كنيد : (+)

ب) براي بسته نرم افزاري خود يك پوشه جديد درست كنيد. سپس فرمان nuget.exe spec را در اين پوشه صادر نمائيد. بلافاصله فايلي به نام Package.nuspec تشكيل خواهد شد:
D:\Prog\1389\CodePlex\slpdatepicker\SlPDatePickerNuGet>NuGet.exe spec
Created 'Package.nuspec' successfully.

فايل Package.nuspec، يك فايل XML ساده است. آن‌را با يك اديتور متني باز كرده و تغييرات لازم را اعمال نمائيد. براي مثال من جهت پروژه Silverlight 4 Persian DatePicker ، محتويات آن‌را به صورت زير تغيير داده‌ام:

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>Silverlight.4.Persian.DatePicker</id>
<version>1.0</version>
<authors>Vahid Nasiri</authors>
<owners>Vahid Nasiri</owners>
<licenseUrl>http://slpdatepicker.codeplex.com/license</licenseUrl>
<projectUrl>http://slpdatepicker.codeplex.com/</projectUrl>
<iconUrl>https://slpdatepicker.svn.codeplex.com/svn/SilverlightPersianDatePicker/Views/Images/date.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Silverlight 4 Persian DatePicker Control</description>
<tags>Silverlight WPF Persian DatePicker</tags>
</metadata>
<files>
<file src="..\SilverlightPersianDatePicker\Bin\Release\*.dll" target="lib" />
<file src="..\SilverlightPersianDatePicker\Bin\Release\*.pdb" target="lib" />
<file src="..\SilverlightPersianDatePicker\Bin\Release\*.xml" target="lib" />
</files>
</package>

همانطور كه ملاحظه مي‌كنيد يك سري اطلاعات عمومي از پروژه مورد نظر درخواست شده است؛ براي مثال آدرس آيكن آن چيست يا كجا مي‌توان آن‌را يافت؟ مجوز استفاده از آن چيست و مواردي از اين دست. به كمك تگ files هم فايل‌هاي كتابخانه در اينجا لحاظ شده‌اند. فايل آيكن معرفي شده بايد در اندازه‌ي 32*32 و با فرمت png باشد. بايد دقت داشت كه در سايت nuget.org ، بسته شما بر اساس id ذكر شده معرفي خواهد شد و آدرسي بر اين اساس تشكيل مي‌گردد. بنابراين از فاصله يا موارد مشكل ساز در اين بين استفاده نكنيد.

در مورد نحوه‌ي ايجاد قدم به قدم يك پروژه جديد در سايت كدپلكس مي‌توان به اين مطلب مراجعه نمود: (+)

ج) اكنون نوبت به تهيه بسته نهايي مي‌رسد. براي اين منظور دستور زير را در خط فرمان صادر كنيد:
NuGet.exe pack Package.nuspec
پس از چند لحظه فايل Silverlight.4.Persian.DatePicker.1.0.nupkg جهت ارائه عمومي توليد خواهد شد.

د) قبل از اينكه اين فايل نهايي را در سايت nuget.org آپلود كنيم، مي‌توان مشخصات آن‌را به صورت محلي نيز يكبار مرور كرد. براي اين منظور در VS.NET به منوي Tools گزينه‌ي Options مراجعه كرده و در قسمت package manager ، آدرس پوشه بسته مورد نظر را وارد كنيد. براي مثال:



اكنون اگر كنسول پاورشل توضيح داده شده در قسمت قبل را باز نمائيد، منبع جديد اضافه شده مشخص است يا مي‌توان توسط دستور ذيل از آن كوئري گرفت:
get-package -remote -filter silverlight



و يا اگر همانند توضيحات قبل به صفحه‌ي ديالوگ add library package reference‌ مراجعه كنيم، مشخصات كامل بسته به همراه منبع محلي بايد قابل مشاهده باشند:



ه) پس از بررسي محلي بسته مورد نظر، اكنون نوبت به ارائه عمومي آن مي‌باشد. براي اين منظور ابتدا بايد در سايت nuget.org ثبت نام كرد : (+). اگر آدرس ايميل شما را نپذيرفت، از مرورگر IE استفاده كنيد!
پس از ثبت نام تنها كافي است به قسمت contribute سايت مراجعه كرده و فايل بسته نهايي را در آنجا آپلود كرد. به اين صورت بسته نهايي در سايت پديدار خواهد شد :‌(+)
همچنين بلافاصله در قسمت گالري آنلاين صفحه add library package reference نيز قابل دسترسي خواهد بود.


در آينده جهت توزيع به روز رساني‌هاي جديد، همين مراحل بايد تكرار شوند. البته در نظر داشته باشيد كه version ذكر شده در فايل Package.nuspec را بايد حتما تغيير داد تا بسته‌ها از يكديگر متمايز شوند. امكان اتوماسيون اين توزيع نيز وجود دارد. همان فايل nuget.exe ، امكان ارسال بسته نهايي را به سايت nuget.org نيز دارد:
nuget push name.nupkg key
در اينجا key مخصوص به خود را مي‌توان در صفحه‌ي http://nuget.org/Contribute/MyAccount مشاهده و استفاده نمود.

اگر علاقمند به مشاهده جزئيات بيشتري از اين پروسه هستيد، مي‌توان به سايت رسمي آن مراجعه كرد: (+)