Nuget Paketi Oluşturma ve Yükleme

Merhaba arkadaşlar, bu yazımızda .net geliştiricilerinin sıklıkla başvurduğu kütüphane olan nuget’ a nasıl paket yüklenir ona değinmek istiyorum.

Aslında böyle bir düşüncem şu an için yoktu. Malum korona virüsü sürecinde evde daha fazla vakit geçirince insanın fazlaca fikir geliyor ve onları haliyle değerlendirmek için gerekli zamana da sahip oluyoruz. Böyle bir ortamda daha önce kullanmış olduğum OneSignal Rest Apisi aklıma geldi ve onu bir Nuget paketi haline getirip Nuget’ a yükledim. Dilerseniz başlayalım.

1.Proje oluşturma

Visual Studio’ da New Project ile Class Library seçilerek bir adet proje oluşturulur.

2.Proje derleme modu seçimi

Debug mode hata ayıklama, Release mode ise ürünün son kullanıcı ile buluşturulduğu mod diyebiliriz. Geliştirdiğimiz paketi de son kullanıcı ile buluşturacağımızı düşünecek olursak projeyi oluşturduğumuzda ilk iş projeyi Release moduna almamız doğru olacaktır. Bunun için oluşturduğumuz projede Class Library üzerine sağ tıklayıp Unload Project diyoruz ve tekrar sağ tıklayıp Edit [ProjeAdi].csproj’ a tıklıyoruz. Açılan pencerede Configuration tag’ inin içindeki Debug yazısını Release olarak değiştiriyoruz. Ardından tekrar [ProjeAdi].csproj’ a sağ tıklayıp bu kez Reload PRoject diyoruz. Son adım olarak Solution Configurations kısmında Debug yazan kısmı Release olarak değiştiriyoruz.

3.Nuget exe dosyası indirmek ve dosya üzerinde değişiklik yapmak

Nuget.org üzerinden nuget.exe dosyasını indiriyoruz. İnen exe dosyasını projemizin .csproj uzantılı dosyanın bulunduğumu konuma atıyoruz. Komut satırında .csproj uzantılı dosyamızın olduğu konuma gidiyoruz ve nuget spec komutu ile .nuspec dosyamızı oluşturuyoruz. Oluşan dosyayı bir editörde açıyoruz.

Tag Açıklamaları

  • id: Paketimizin Nuget’ ta görülecek adı
  • version: Paketimizin versiyonu. Önerilen ve varsayılan hali x.x.x kullanımıdır.
  • owners: Paket sahibini belirtir.
  • authors: Geliştiricileri belirtir.
  • requireLicenseAcceptance: Ek bir lisans uygulayıp uygulamayacağımızı ifade ediyor.
  • projectUrl: Projemizin dilersek kodlarını paylaşabileceğimiz url’i belirtir. Paylaşmak istemezsek satırı silmemiz gerekmekte.
  • iconUrl: Proje iconun bulunduğu yolu belirtir. İcon eklemeyeceksek satırı silmemiz gerekmekte.
  • description: Nuget’ ta görülecek proje açıklaması.
  • releaseNotes: Sürümdeki yenilik açıklamasını ifade ediyor.
  • tags: Paketin etiketlerini ifade ediyor
  • dependencies: Paketimizin bağımlı olduğumu diğer paketleri ifade ediyor. (Örnekte bağımlı bir paket bulunmadığından bu kısımda sadece bağımlı framework belirtilmiştir. Bağımlı olunan paketler groupTargetFramework taginin için aşağıdaki şekilde yazılır)<dependency id=”Microsoft.EntityFrameworkCore” version=”3.1.0″/>
  • files: Paketimize dahil edeceğimiz dosyaları belirtir.

*Son tagde dikkat etmemiz gereken nokta bulunmaktadır. Örneği geliştirdiğiniz pakette bir script dosyası veya bir resim kullanıyorsunuz ve bu dosyanın paketi kurmasını istediğimiz kişide de bulunması gerekiyor. O dosyayı da burada ayrıca belirtmek durumundasınız.

Yani ek olarak aşağıdaki gibi bir satır eklemek gerekiyor.

<file src=”resim.jpg” target=”resim.jpg”/>

4.Paketi oluşturma ve Nuget’ a yükleme işlemi

.nuspec dosyamızda paket ayarlarını yaptıktan sonra artık sıra paketi oluşturmaya ve paketimizi Nuget’ a yüklemeye geldi. Bunun için komu satırında .csproj uzantılı dosyamızın olduğu yerde nuget pack Package.nuspec komutunu çalıştırıyoruz. Komutu çalıştırdıktan sonra nupkg uzantılı dosyamız oluşacaktır.

Oluşan bu dosyayı Nuget üzerinden upload ederek paket yükleme işlemini gerçekleştiriyoruz.

Benim ilk paket oluşturma serüvenim böyleydi. Belirttiğim gibi oluşturduğum ilk paket işlevinden ziyade nasıl yapılır öğrenme amaçlı bir çalışmaydı. Ancak yine de bundan sonra OneSignal Rest Apisini kullanmam gerekirse işime yarayacak bir paket geliştirdim. Nuget linki ve Github linkini aşağıda paylaşıyorum.

https://www.nuget.org/packages/OneSignalWebNotifications/

https://github.com/MehmetAkifVurucu/OneSignalWebNotifications

Related Post

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir