مقدمه

در درس قبل، یاد گرفتیم که چگونه یک کتابخانه‌ی کلاس (.dll) بسازیم و به صورت محلی به آن ارجاع دهیم. این روش برای کدهای داخلی یک پروژه عالی است، اما اگر بخواهیم از هزاران کتابخانه‌ی فوق‌العاده‌ای که توسط جامعه‌ی برنامه‌نویسان .NET در سراسر جهان نوشته شده، استفاده کنیم چه؟ یا اگر بخواهیم کتابخانه‌ی خودمان را با دیگران به اشتراک بگذاریم؟ برای این کار، به یک مکانیزم استاندارد برای اشتراک‌گذاری و مدیریت این "بسته‌های" (packages) کد نیاز داریم. این مکانیزم در دنیای .NET، NuGet نام دارد. NuGet پکیج منیجر رسمی مایکروسافت برای .NET است که به ما اجازه می‌دهد تا به سادگی، کتابخانه‌های خارجی را در پروژه‌های خود پیدا، نصب، به‌روزرسانی و مدیریت کنیم.

NuGet چیست؟

NuGet یک سیستم مدیریت پکیج است که از چند بخش اصلی تشکیل شده:

  • گالری NuGet (nuget.org): یک مخزن عمومی و مرکزی است که میزبان ده‌ها هزار پکیج متن‌باز و تجاری است. این وب‌سایت، مرجع اصلی برای پیدا کردن کتابخانه‌های .NET است.
  • کلاینت‌های NuGet: ابزارهایی که به ما اجازه می‌دهند تا با مخزن NuGet تعامل داشته باشیم. این ابزارها شامل موارد زیر هستند:
    • پنجره‌ی Manage NuGet Packages در ویژوال استودیو
    • کنسول پکیج منیجر (Package Manager Console) در ویژوال استودیو
    • ابزار خط فرمان .NET CLI (با دستوراتی مانند dotnet add package)
  • فرمت پکیج NuGet: یک پکیج NuGet در واقع یک فایل فشرده با پسوند .nupkg است که حاوی اسمبلی‌های کامپایل‌شده (.dll) و فراداده‌ی مربوط به پکیج (مانند نام، نسخه و وابستگی‌ها) می‌باشد.

نصب یک پکیج NuGet

بیایید یک مثال عملی را بررسی کنیم. یکی از محبوب‌ترین و پرکاربردترین پکیج‌ها در NuGet، کتابخانه‌ی Newtonsoft.Json (که با نام Json.NET نیز شناخته می‌شود) است. این کتابخانه ابزارهای قدرتمندی برای کار با داده‌های فرمت JSON فراهم می‌کند. ما می‌خواهیم از این پکیج در پروژه‌ی ShowcaseApp خود استفاده کنیم.

استفاده از رابط کاربری ویژوال استودیو

  1. در Solution Explorer، روی پروژه‌ی ShowcaseApp راست‌کلیک کرده و گزینه‌ی Manage NuGet Packages... را انتخاب می‌کنیم.
  2. در پنجره‌ی باز شده، به تب Browse می‌رویم.
  3. در نوار جستجو، عبارت Newtonsoft.Json را تایپ می‌کنیم.
  4. پکیج Newtonsoft.Json را از لیست نتایج انتخاب کرده و روی دکمه‌ی Install کلیک می‌کنیم.

ویژوال استودیو به طور خودکار آخرین نسخه‌ی پایدار پکیج و تمام وابستگی‌های آن را دانلود کرده و ارجاع لازم را به فایل پروژه‌ی ما (.csproj) اضافه می‌کند.

استفاده از .NET CLI

اگر از VSCode یا یک ویرایشگر دیگر استفاده می‌کنید، می‌توانید همین کار را با استفاده از یک دستور ساده در ترمینال انجام دهید. ابتدا با cd به پوشه‌ی پروژه‌ی ShowcaseApp رفته و سپس دستور زیر را اجرا کنید:

Copy Icon Terminal
dotnet add package Newtonsoft.Json

استفاده از پکیج نصب‌شده

پس از نصب، می‌توانیم به سادگی فضای نام مربوط به آن کتابخانه را using کرده و از کلاس‌های آن استفاده کنیم. بیایید یک شیء را به یک رشته‌ی JSON تبدیل (serialize) کنیم.

Copy Icon Program.cs
using Newtonsoft.Json;

// An anonymous object to serialize.
var product = new { Name = "Apple", Expiry = new DateTime(2025, 12, 25) };

// Use the JsonConvert class from the NuGet package.
string json = JsonConvert.SerializeObject(product, Formatting.Indented);

Console.WriteLine(json);

خروجی این کد، یک رشته‌ی JSON با فرمت‌بندی زیبا خواهد بود:

{
  "Name": "Apple",
  "Expiry": "2025-12-25T00:00:00"
}

مدیریت وابستگی‌ها

NuGet نه تنها نصب پکیج‌ها را ساده می‌کند، بلکه مدیریت وابستگی‌های انتقالی (transitive dependencies) را نیز بر عهده می‌گیرد. اگر پکیج A به پکیج B نیاز داشته باشد و شما پکیج A را نصب کنید، NuGet به طور خودکار پکیج B را نیز برای شما نصب می‌کند. تمام این اطلاعات در فایل پروژه و یک فایل قفل (معمولاً packages.lock.json) ثبت می‌شوند تا اطمینان حاصل شود که هر کسی که پروژه را دریافت می‌کند، دقیقاً همان نسخه‌ها از همان وابستگی‌ها را نصب خواهد کرد. این کار باعث می‌شود که ساخت‌ها (builds) قابل تکرار و قابل اعتماد باشند.