Kendi Nuget Paketinizi Hazırlayın

Enes Aysan
3 min readApr 10, 2020

Merhaba arkadaşlar, bugün sizlerle beraber .net standart kütüphanemizi, nuget package haline getireceğiz. Ben firebase push notification gönderen bir .net standart kütüphanesi hazırladım, bunu nuget paket halinde kullanıma sunacağız.

Nuget paketi oluşturmanın birden fazla yolu vardır. En bilinen bir kaç yoldan kısaca bahsederek, nuget cli ve nuspec dosyası ile paketimizi kullanıma açacağız.

1-Pipeline kullanarak package oluşturmak

En kolay ve kullanışlı yöntemlerden biridir. Genel olarak bir CI/CD pipeline bağlanarak, paketinizin repositorysinde belirli bir bracnhe yaptığınız commit ile bir artifact üreterek ilgili nuget feede paket versiyonu çıkılır.

2-Visual studio üzerinden package oluşturmak

.net standart class library, .net core class library gibi seçeneklerde kullanılabilen yöntem ile projeye sağ tıklayarak pack seçeneği altındaki alanlar doldurulur. Proje derlendiğinde ise ortaya bir .nupkg uzantılı dosya çıkar. Bu dosya cli aracılığı ile yada nuget.org arayüzü aracılığı ile kullanıma açılır.

3-Nuspec file ile package oluşturmak

.nuspec uzantılı dosya üzerinde oluşacak paketin detayları girilir. “nuget pack” yardımı ile oluşan .nupkg uzantılı dosya cli aracılığı ile yada nuget.org arayüzü aracılığı ile kullanıma açılır.

FirebasePushNotification.EnesAys

Şimdi adım adım paketimizi hazırlayalım.

  • Nuget paket haline getirmek istediğimiz projemizde (kaynak kod) öncelikle sağ tıklayarak propertylerinde target framework kontrolümüzü yapalım.
  • Projemizi “release” konfigurasyonun da derlemek daha sağlıklı olacaktır.
  • Propertyler/Build kısmında Xml documention file ayarının açılması , Xml açıklamaları ile paketin kullanımını kolaylaştıracaktır.

Projemizde ilgili yerlere xml açıklamaları ekleyelim. Aşağıda temel bir kaç xml açıklama formatı yer almaktadır.

/// <summary>
/// Firebase Push Notification Send Method
/// </summary>

Parametreler için

/// <param name=”notificationObject”>Firebase Api Push Notification Send Method request Model parameter</param>

Return varsa

/// <returns> bool </returns>
  • Projemizin ayarlarını yaptıktan sonra projemizi derleyelim (build).
  • Bilgisayarımızda nugetin kurulu olduğundan emin olalım. Eğer kurulu değilse buradan indirebilirsiniz.
  • Projemizin dosya yoluna ulaşarak cmd ile konsol ekranına geçelim ve “nuget spec” komutunu çalıştırarak nuspec dosyasını oluşturalım.

Şimdi paketimizin bilgilerinin yer aldığı .nuspec uzantılı dosyamızı düzenleyelim.

.nuspec dosyamızı hazırladıktan sonra, .nuspecin bulunduğu dizinde command line üzerinden aşağıdaki komutu girelim.

nuget pack projectName.nuspec

Buraya kadar başarılı bir şekilde geldiyseniz “.nupkg” uzantılı paketiniz oluşacaktır. Nuget paketimizi localimiz de oluşturduk peki paketimizi insanlarla nasıl paylaşacağız?

  • Bunun için öncelikle nuget.org giriş yapmamız / üye olmamız gerekiyor.
  • Daha sonra hesap isminin üzerine tıklayarak buradan API Keys kısmına tıklayalım.
  • Eğer api keyimiz varsa regenerate edebiliriz, bir api key regenerate etmeden bir kere kopyalanıyor. Bu yüzden keyimizi dikkatli saklamamız gerekir.
  • Eğer bir api keyimiz yok ise create kısmından yeni bir api key oluşturalım.
    Burada bir kaç konfigürsayon var. Key Name alanında oluşacak keyimize vereceğimiz ismi girerek, bir expire yani geçerlilik süresi girelim. Paketimizin scope seçeneğinde “Push new packages and package versions” işaretli olmasına dikkat edelim. Glob Pattern kısmında “*” kullanalım.
  • Create seçeneğine tıklayarak oluşan api keyimizi kopyalayalım.

Artık cli kullanarak paketimizi kullanıma sunabiliriz. Tek yapmamız gerek command line üzerinden aşağıdaki komutu girmek.

dotnet nuget push YourPackageId.nupkg -k Apikey -s https://api.nuget.org/v3/index.json

YourPackageId ve Apikey alanlarını gözden kaçırmayınız. Buraya sizin package id niz ve api keyiniz gelmelidir.

Paketiniz başarılı bir şekilde üretildiğinde nuget.org profiliniz üzerinden “Manage Packages” altında paketinizi göreceksiniz.
Benim oluşturduğum paketin nuget sayfasına aşağıdaki link ile ulaşabilirsiniz.

Oluşturduğum paketin kaynak kodu https://github.com/EnesAys/FirebasePushNotification

Herhangi bir problem yaşarsanız yorum yazabilir ya da bana mail yoluyla ulaşabilirsiniz. Kalın sağlıcakla… 😀

--

--