dotnet nuget kullanımı

15 Eki

NuGet, .NET’in paket yöneticisidir. NuGet geliştirici araçları, paket oluşturma ve kullanma desteği sağlar. NuGet Galerisi, tüm paket yazarları ve tüketicileri tarafından kullanılan merkezi bir paket deposudur. Oluşturulanpaketler, güvenli yöntemler ile geleriye gönderilir ve alınır.

Nuget paketi oluşturmadan önce örnek bir dotnet projesi oluşturmak için aşağıdaki komut kullanılabilir.

dotnet new classlib -n DotnetNugetSample

Proje içerisinde de basit bir ILogger interface olabilir.

Bu proje öncelikle bir nuget paketi haline getirilmelidir.

dotnet pack .\DotnetNugetSample\ -o packages
Dotnet package

Oluşturulan bu paketi başka projelerde kullanmak için iki farklı yöntem izlenebilir.

1. local ortamda başka bir projede ilgili packages klasörü bir nuget source olarak eklenir.

dotnet nuget add source D:\nugetsample\packages -n MyNugetPackages

2. sunucuda bir nuget repository üzerine eklenir.

dotnet nuget push D:\nugetsample\packages\DotnetNugetSample.1.0.0.nupkg -s https//api.nuget.org/v3/index.json -k secretkey

Bu işlem ile nuget paketi artık her yerden erişilebilir hale gelir.

Paketi sunucudan silmek için aşağıdaki komut kullanılabilir.

dotnet nuget delete DotnetNugetSample 1.0.0 -s https//api.nuget.org/v3/index.json -k secretkey

NuGet Http Request ASCII Character Bug

22 Nis

NuGet üzerinden paket yayınlamak istediğinizde, nuget.org üzerinden bir hesap oluşturmalı ve profil hesabınıza girerek bir “API key” yani anahtar oluşturmalısınız.

Ancak oluşturulan bazı API anahtarları ASCII harici karakterler içermektedir. Örneğin:

  • oı2jr55h73me2l3yptvakped55nrsbcebpfj6jsrjkpn3m
  • ıy2jr55h73me2l3yptvakped55nrsbcebpfj6jsrjkpn3m

Yukarıdaki anahtarlarda Türkçe “ı” karakteri bulunmaktadır.

Bu anahtarlardan birini kullanarak bir paket yayını yapmak için gerekli komutu aşağıdaki gibi çalıştırdığımda:

dotnet nuget delete MyPack 1.0.1 -s https://api.nuget.org/v3/index.json -k apikey

Karşıma bir uyarı geldi.

Request headers must contain only ASCII characters.

Komutu bir kaç kez çalıştırıp, sorunu düşünürken aklıma anahtarı yenilemek gibi bir çözüm geldi. Bir kaç denemeden sonra nuget.org bana sadece ASCII karakterlerden oluşan bir API key oluşturmayı başardı. Bu anahtarı denediğimde  komut başarılı bir şekilde çalıştı.

Konu ile ilgili GitHub üzerinden bir sorun(issue) bildiriminde bulundum. Sorun bildirim bağlantısı: https://github.com/NuGet/Home/issues/9385

Konu ile ilgili henüz bir geri bildirim almadım ancak işleme alındığını zannediyorum. Aynı sorunu yaşayanlar olursa, durum özetle bu şekildedir.

Bir sonraki yazıda görüşmek dileğiyle.

Nuget Acceptance Command Bug

21 Nis

Nuget paket yöneticisi üzerinde kendi paketimi yayınlarken bir sorun farkettim ve GitHub üzerinden bir sorun(issue) bildirimi yapma ihtiyacı duydum. Bildirim bağlantısı:https://github.com/NuGet/Home/issues/9386

Sorun özetle şu şekildedir:

Windows 10 Home edition Türkçe sürümü üzerinden NuGet version (5.4.0.2) ile bir “delete” komutu çalıştırdığımda aşağıdaki gibi bir kabul uyarısı ekrana gelmiştir. Komutun “delete” vaya başka bir komut olması önemli değildir. Sunucuya bir talep gönderim komutu olması yeterlidir.

 

 

Uyarıda devam edip etmeme konusunda bir uyarı mesajı sunuluyor ve Y/N şeklinde komut bekleniyor. Ancak N komutu yazılınca, yani hayır devam etmek istemiyorum denildiğinde komut çalıştırılıyor Y komutu yazılınca yani evet devam etmek istiyorum denildiğinde işlem iptal ediliyordu.

Bu sorunun bir tercüme sorunu veya bir mantıksal sorun olduğu hususunda bir bildirimde bulundum. GitHub üzerinden heng-liu, sorunun bir tercüme sorunu olabileceği şeklinde bir cevap vermiştir.

Konu ile ilgili aynı sorunu yaşayanlar olursa, durum özetle bu şekildedir.

Bir sonraki yazıda görüşmek dileğiyle.