NuGet Package, Microsoft tarafından geliştirilen ve .NET platformuna yönelik yazılım bileşenlerinin paketlenmesi, dağıtılması ve yönetilmesini sağlayan açık kaynaklı bir paket yönetim sistemidir. İlk olarak 2010 yılında tanıtılan NuGet, .NET Framework ve .NET Core projelerinde sıkça kullanılan kütüphanelerin merkezi olarak erişilebilir olmasını amaçlamaktadır. “NuGet paketi”, genellikle bir .nupkg uzantılı dosya biçiminde olup, içerisinde .NET kodu, derlenmiş DLL dosyaları, metadata bilgileri ve paket bağımlılıklarını barındırır.
Tarihçe ve Gelişim Süreci
NuGet projesi, Microsoft’un açık kaynak girişimlerinin bir parçası olarak, .NET geliştiricilerine standart, güvenli ve tekrarlanabilir bir kütüphane dağıtım yöntemi sunmak amacıyla başlatılmıştır. Başlangıçta "NuPack" ismiyle geliştirilen bu sistem, kısa sürede Visual Studio IDE’sine entegre edilmiş ve topluluk tarafından geniş çapta benimsenmiştir. Günümüzde NuGet.org merkezi, hem resmi hem de topluluk tarafından oluşturulmuş binlerce pakete ev sahipliği yapmaktadır.
Bileşenleri ve Yapısı
Bir NuGet paketi, şu temel bileşenlerden oluşur:
- .dll dosyaları: Derlenmiş sınıf kütüphaneleri.
- nuspec dosyası: Paket adı, sürümü, açıklaması ve bağımlılık bilgilerini içeren XML formatında metadata dosyası.
- lib klasörü: .NET hedef sürümlerine uygun derlemeleri içerir.
- tools ve build klasörleri: Derleme ve araçsal entegrasyonlar için komut dosyalarını barındırır.
NuGet, CLI (Command Line Interface) üzerinden nuget.exe veya dotnet komutu ile; Visual Studio üzerinden ise GUI (grafiksel arayüz) aracılığıyla kullanılabilir.
Nuget Package (Yapay Zekâ ile Oluşturulmuştur)
İşlev ve Kullanım Alanları
NuGet, .NET projelerinde yazılım bileşenlerinin tekrarlanabilir, izlenebilir ve merkezi olarak yönetilebilir bir şekilde projeye eklenmesini sağlar. Bu, bağımlılık yönetimini kolaylaştırır ve sürüm çatışmalarını önlemeye yardımcı olur. Yaygın kullanım alanları şunlardır:
- Açık kaynak kütüphanelerin proje içerisine eklenmesi (örneğin: Newtonsoft.Json, EntityFramework).
- Şirket içi özel kütüphanelerin kurum içi NuGet sunucularında saklanması ve dağıtılması.
- Continuous Integration / Continuous Deployment (CI/CD) süreçlerine entegrasyon.
Güvenlik ve Sürümleme
NuGet, semantik sürümleme (SemVer) kurallarına dayanır. Bu sistem sayesinde geliştiriciler, bir paket sürümündeki değişikliklerin geriye dönük uyumluluğu nasıl etkilediğini anlayabilir. Ek olarak, Microsoft ve topluluk, zararlı veya güvenliği ihlal eden paketlerin yayılmasını önlemek amacıyla dijital imzalama ve paket doğrulama sistemleri uygulamaktadır.
Geliştirici Ekosistemi ve NuGet.org
NuGet.org, paketlerin yayınlandığı ve indirildiği çevrim içi merkezi bir platformdur. Burada geliştiriciler, kendi paketlerini yayımlayabilir veya diğerlerinin sunduğu açık kaynak çözümlerden faydalanabilirler. Kurumsal kullanıcılar için Azure Artifacts gibi özel barındırma seçenekleri de mevcuttur.