Published on

NuGet Package Manager'a Paket Nasıl Yüklenir ?

Authors
  • avatar
    Name
    Alperen Önal
    Twitter

Package Manager Nedir ?

  • Yazılım geliştirme sürecinde kullanılan paketlerin yönetimini sağlayan araçlardır.
  • Yazılım paketleri, genellikle bir programlama dilinde veya platformda kullanılabilen hazır kod, kütüphane veya bileşenlerdir.
  • Bu paketler, kodun tekrar kullanılabilirliğini sağlayarak gereksiz zaman ve efor kaybından kaçınılmasını sağlar.
  • Package Manager'lar, paketlerin kodlara entegre edilmesini, paket sürümü yönetiminin yapılmasını, güncellemeler yapılmasına olanak tanır.
  • Javascript için npm(Node package manager), .NET için NuGet'i örnek verebiliriz.

NuGet Package Manager Nedir ?

  • NuGet Package Manager, Microsoft tarafından geliştirilen ve yönetilen .NET paket yöneticisidir.
  • NuGet, projenize 3. taraf kütüphaneleri(paketleri) ekleyebilmenize olanak tanır.

Paketlemeden önce tercih ettiğim dizin yapısı :

Ben, projemin dizin yapısını aşağıdaki gibi ayarlıyorum. Siz de bu hale getirebilirsiniz. Belki yeri değil ama belirmek istedim.

.
├── build # Compiled files (alternatively dist)
├── docs # Documentation files (alternatively doc)
├── src # Source files (alternatively lib or app)
├── test # Automated tests (alternatively spec or tests)
├── tools # Tools and utilities
├── LICENSE
└── README.md


Package Manager'a Paket Nasıl Yüklenir ?

Aşağıdaki gibi bir projemiz olsun.

Öncelikle projemiz kök dizininde bulunan .csproj uzantılı dosyamızın içine giriyoruz.

Ben aşağıdaki meta tag'lar ile karşılaşıyorum. Az çok sizinkiler ile benzer olacaktır.


<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <GenerateDocumentationFile>True</GenerateDocumentationFile>
    <DocumentationFile>C:\Users\Alperen\source\repos\example\example\doc\example.xml</DocumentationFile>
  </PropertyGroup>

</Project>


Üsttekilere ek olarak asgari düzeyde kullanmamız gerekli olan meta tag'ler :

  1. <PackageId>Benzersiz.Paket.Adiniz</PackageId>

    Paketimize bir benzersiz bir ID tanımlamalıyız. İnsanlar bu ID ile bizim projemize ulaşacaktır. İsimlendirme yapmadan önce kaynakça kısmındaki microsoft url'sinden paket isimlendirme kurallarına detaylıca gözden geçirmenizi tavsiye ederim.

  2. <version>versiyon.numaraniz</version> Paketimizin yayınlanan her sürümü için farklı bir sürüm numarasına ihtiyacımız var.

  3. <Author>isminiz</Author>

    Yazarın veya kuruluşun ismi girilmelidir.

    Örneğin, NuGet.org kullanıcı adım "jdoe" ise yazar alanı için "Jane Doe" kullanmak tüketicilerin beni yazar olarak tanımasını sağlayabilir. Kuruluşumun NuGet.org kullanıcı adı "ContosoToolkit" ise "Contoso Corporation" kullanmak daha tanınabilir ve daha fazla tüketici güvenini teşvik edebilir.

Evet bu tag'lari ekledikten sonra terminal'i açıyoruz ve dotnet pack komutu ile ürünümüzü paketliyoruz.

  1. <Product>PaketAdiniz</Product>

    Paketinizin adi.

csproj dosyamızın son hali :

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
	<PackageId>Alp.Example</PackageId>
	<Author>Alperen</Author>
	<Product>Example</Product>
	<version>0.1.0</version>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <GenerateDocumentationFile>True</GenerateDocumentationFile>
    <DocumentationFile>C:\Users\Alperen\source\repos\example\example\doc\example.xml</DocumentationFile>
  </PropertyGroup>

</Project>



Evet bu tag'lari ekledikten sonra terminal'i açıyoruz ve dotnet pack komutu ile ürünümüzü paketliyoruz.

Yukarıda da görebileceğimiz gibi ürünümüz paketlenip 'C:\Users\Alperen\source\repos\example\example\bin\Debug\Alp.Example.0.1.0.nupkg' adresine yerleştirildi.

Şimdi www.nuget.org'u açıyoruz ve giriş yaptıktan sonra ana sayfadan upload seçeneğine tıklıyoruz.

Karşımıza çıkan upload sayfasına oluşturulan paketi sürükle bırak yapıyoruz.

Gerekli yerleri dolduruyoruz ve submit'e tıklayıp gönderiyoruz.

Aşağıda görebileceğiniz gibi paketimiz başarıyla yayınlandı.

Önemli :
  • Nuget'a bir paket yüklediğinizde bunu doğrudan silmeniz mümkün değildir. ⚠️
  • Bu blog'daki kullandığımız meta tag'lar haricinde LICENSE ve README dosyaları başta olmak üzere diğer tag'ları da csproj'a eklemeniz kuvvetle tavsiye edilir. ⚠️

Kaynakça :

  • learn.microsoft.com/tr-tr/nuget/reference
  • learn.microsoft.com/nuget/create-packages/package-authoring-best-practices
  • semver.org/