Kendi Nuget Paketinizi Hazırlayın

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
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.
<?xml version="1.0" encoding="utf-8"?>
<package >
  <metadata>
    <id>FirebasePushNotification.EnesAys</id> //Paketimizin ismi - Bulunduğu feed içerisinde unique olmalıdır.
    <version>1.0.0</version> //Paketimizin versionu. $version$ kullanılarak assemblyden version bilgisi alınabilir. Projenizde deterministic ayarı true ise false yapmalısınız.
Assembly verrsion da 1.0.* şeklinde bir pattern ile otomatik versiyon numarası kullanabilirsiniz.
    <title>FirebasePushNotification</title> //Paketimizin Bilgilerinde yer alan başlığımız
    <authors>Enes Aysan</authors> //Paketi Hazırlayan
    <owners>Enes Aysan</owners> //Paketin Sahibi
    <requireLicenseAcceptance>false</requireLicenseAcceptance>    //Ekstra bir license uygulamayağız. Default ayarlarda bırakıyoruz.
    <license type="expression">MIT</license>
    <projectUrl>https://github.com/EnesAys/FirebasePushNotification</projectUrl> //Projemizin urli
    <icon>enesAysan-icon.png</icon> //Paket için kullanacağımız ikon
    <description>Send Push Notification via firebase api</description> //Paketimizin Bilgilerinde yer alan açıklama kısmımız
    <releaseNotes>First Release</releaseNotes> //Versiyon notlarımız
    <copyright>Copyright 2020</copyright>
    <tags>firebase notification push send</tags>    //Paketinizin etiketleri
    <dependencies> //Paketimizn bağımlı olduğu diğer kütüphaneler
      <group targetFramework="netstandard2.0">
        <dependency id="Newtonsoft.Json" version="12.0.3" />
      </group>
    </dependencies>
  </metadata>
  <files> //Paketimize dahil edeceğimiz dosyalar
    <file src="bin\Release\netstandard2.0\FirebasePushNotificaiton.dll" target="lib\netstandard2.0\FirebasePushNotificaiton.dll" />
    <file src="bin\Release\netstandard2.0\FirebasePushNotificaiton.xml" target="lib\netstandard2.0\FirebasePushNotificaiton.xml" />
    <file src="enesAysan-icon.png" target="" /> 
  </files>
</package>
  • .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
Herhangi bir problem yaşarsanız yorum yazabilir ya da bana mail yoluyla ulaşabilirsiniz. Kalın sağlıcakla… 😀

 

Written By

Bir önceki günden daha iyi olmak için çalışarak kendimi geliştirmek, öğrendiklerim ve öğreneceklerim ile yazılım sektöründe büyük ölçekli ve uluslararası projelerde kendimden söz ettirmek istiyorum.

More From Author

You May Also Like

2 comments

Emircan says:

Çok başarılı bir çalışma olmuş, elinize sağlık.

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir