.NET projenize paketleri ekleme

Tamamlandı

.NET, dosyaları yönetmekten HTTP'ye ve dosyaları sıkıştırmaya kadar her şeyi işlemeye yönelik birçok çekirdek kitaplıkla birlikte gelir. Ayrıca üçüncü taraf kitaplıklardan oluşan büyük bir ekosistem de mevcuttur. NuGet (.NET Paket Yöneticisi) kullanarak bu kitaplıkları yükleyebilir ve uygulamanızda kullanabilirsiniz.

.NET ve ekosistemi bağımlılık sözcüğünü çok kullanır. Paket bağımlılığı, bir üçüncü taraf kitaplığıdır. Bu, bir şeyi başaran ve uygulamanıza ekleyebileceğiniz yeniden kullanılabilir bir kod parçasıdır. Üçüncü taraf kitaplığı, uygulamanızın çalışması için bağımlı olduğu bir şeydir ve bu nedenle bağımlılık sözcüğüdür.

Üçüncü taraf kitaplığını bir depoda depolanan bir paket olarak düşünebilirsiniz. Paket, özelliklerinden yararlanmak üzere uygulamanıza ekleyebileceğiniz bir veya daha fazla kitaplıktan oluşur.

Burada paket bağımlılıklarına odaklanacağız. Ancak, bir .NET projesinin paket bağımlılıklarına ek olarak başka bağımlılık türleri de olabilir. Çerçeveler, çözümleyiciler, proje başvuruları ve paylaşılan proje bağımlılıkları dahil.

Pakete ihtiyacınız olup olmadığını belirleme

Projenizde bir pakete ihtiyacınız olduğunu nasıl anlarsınız? Birkaç faktör içeren karmaşık bir soru:

  • Daha iyi kod alma: Güvenlik gibi bir görevle mi uğraştığınızı ve kimlik doğrulaması ile yetkilendirmeyi uygulamaya mı çalıştığınızı kendinize sorun. Verilerinizi ve müşterilerinizin verilerini korumak için doğru şekilde yapmanız gereken bir görevdir. Standart düzenler ve birçok geliştirici tarafından kullanılan kitaplıklar vardır. Bu kitaplıklar büyük olasılıkla her zaman ihtiyacınız olan özellikleri uygular ve sorunlar ortaya çıktıkçe düzeltme eki uygulanır. Kendi kitaplığınızı kullanmak yerine oluşturmak yerine bu tür seçenekleri tercih etmelisiniz. Dikkate almanız gereken çok fazla uç durum olduğundan, kodu kendiniz de yazma olasılığınız yoktur.
  • Zaman kazandırma: Yardımcı program veya kullanıcı arabirimi bileşen kitaplıkları gibi çoğu şeyi kendiniz oluşturabilirsiniz, ancak bu işlem zaman alır. Sonuçlarınız kullanılabilir sonuçlarla karşılaştırılabilir olsa bile, çalışmanızı çoğaltmak zamanınızı iyi kullanmaz.
  • Bakım: Tüm kitaplıkların ve uygulamaların er ya da geç bakıma ihtiyacı vardır. Bakım süreci yeni özelliklerin eklenmesini ve hataların düzeltilmesini kapsar. Kitaplığı korumak için zamanınızı veya ekibinizin zamanını iyi bir şekilde mi kullanıyorsunuz yoksa açık kaynak yazılım ekibinin bu kitaplığı işlemesine izin vermek daha mı iyi?

Bir paketi değerlendirme

Bir kitaplığı yüklemeden önce, kitaplığın bağımlı olduğu bağımlılıkları incelemek isteyebilirsiniz. Bu bağımlılıklar sizi paketi kullanmaya teşvik edebilir veya paketi kullanmaktan caydırabilir. Burada projenize bağımlılık seçerken dikkate almaya değer bazı faktörler belirtilmiştir:

  • Boyut: Bağımlılık sayısı büyük bir ayak izi oluşturabilir. Sınırlı bir bant genişliği kullanıyorsanız veya başka donanım sınırlamalarınız varsa bu faktör sorun yaratabilir.
  • Lisanslama: İster ticari, ister kişisel ister akademik olsun, kitaplık için verilen lisansın hedeflenen kullanımınızı kapsadığından emin olmanız gerekir.
  • Etkin bakım: Paketiniz etkin olarak korunmamış bir bağımlılığı kullanıyorsa sorun olabilir. Bağımlılık kullanım dışı bırakılabilir veya uzun süre güncelleştirilmeyebilir.

Bir paketi yüklemeden önce hakkında daha fazla bilgi edinmek için https://www.nuget.org/packages/<package name> adresini ziyaret edebilirsiniz. Bu URL sizi paketin ayrıntılı bir sayfasına götürür. İşlevini yerine getirmek için hangi paketlere bağımlı olduğunu görmek üzere Bağımlılıklar açılır listesini seçin.

Listelenen bağımlılıkların sayısı gerçeği tam olarak yansıtmıyor olabilir. Bir paketi indirdiğinizde onlarca paket içeren bir paket bağımlılığıyla karşı karşıya kalabilirsiniz. Bunun nedeni nedir? Her paketin bir bağımlılık listesi vardır. Bir paketi kullanabileceğinizden emin olmak için dotnet add package <package name> komutunu çalıştırdığınızda tüm bağımlılıklarda gezinilir ve bunlar indirilir.

Paketi yükleme

Paketleri yüklemenin birkaç yolu vardır. Visual Studio ve Mac için Visual Studio uygulamalarında paket yöneticisi için yerleşik bir komut satırı ve grafik kullanıcı arabirimi vardır. Paket başvurularını proje dosyanıza el ile ekleyebilir veya Paket veya .NET Core CLI gibi bir komut satırı arabirimi (CLI) aracı aracılığıyla yükleyebilirsiniz.

Bu modülde paketleri yüklemek için yerleşik .NET Core CLI'sini kullanacağız. Terminalde komutu çağırarak .NET projenize paket ekleyebilirsiniz. Tipik bir yükleme komutu şuna benzer: dotnet add package <name of package>. add package komutunu çalıştırdığınızda komut satırı aracı genel kayıt defterine bağlanır, paketi getirir ve tüm projelerin kullanabileceği önbelleğe alınmış olan bir klasör konumunda depolar.

Projeniz yüklendikten ve derlendiğinde, başvurular hata ayıklama veya yayın klasörlerinize eklenir. Proje dizininiz şuna benzer:

-| bin/
---| Debug/
------| net3.1
--------| <files included in the dependency>

Paketi bulma

Bağımsız geliştiriciler uygulamalarına gereken paketleri bulup indirmek için NuGet.org'daki genel kayıt defterini kullanabilir. Şirketler ise hangi paketlerin kullanılmaya uygun olduğunu ve bunların nerede bulunacağını içeren bir stratejiye sahip olabilir.

Popüler paketlerin listesini gösteren NuGet.org ekran görüntüsü.

Paketler birçok farklı yerde bulunabilir. Bu kaynaklardan bazıları genel kullanıma açık olabilir ve bazıları kısıtlanmış ve yalnızca belirli bir şirketin çalışanları tarafından kullanılabilir olabilir. Paketlerin bulunabileceği bazı konumlar aşağıda verilmiştir:

  • Kayıt defterleri: NuGet.org kayıt defteri gibi bir genel kayıt defteri örneği olabilir. Kendi kayıt defterlerinizi barındırabilir ve bunları özel veya genel olarak ayarlayabilirsiniz. GitHub ve Azure DevOps gibi hizmetler özel kayıt defteri sunar.
  • Dosyalar: Yerel bir klasörden paket yükleyebilirsiniz. Bir paketten yükleme, kendi .NET kitaplıklarınızı geliştirmeye çalışırken ve paketi yerel olarak test etmek istediğinizde yaygındır. Veya bazı nedenlerden dolayı kayıt defteri kullanmak istemezsiniz.

Paket oluşturucuları, paket konakları ve paket tüketicileri arasındaki ilişkiyi gösteren diyagram.

NuGet kayıt defteri ve dotnet aracı

komutunu çalıştırdığınızda dotnet add package <name of dependency>.NET, konumunda https://nuget.org bulunan NuGet.org kayıt defteri adlı genel bir kayıt defterine gider ve indirilmesi gereken kodu arar. Bu sayfayı tarayıcı kullanarak ziyaret ederseniz paketler için de göz atabilirsiniz. Her paketin gidebileceğiniz özel bir web sitesi vardır.

NuGet paketinin giriş sayfasının ekran görüntüsü.

Bu sitelerde, kaynak kodun nerede bulunduğu hakkında daha fazla bilgi edinebilirsiniz. ayrıca indirmelerle ilgili ölçümler gibi bilgileri ve bakım hakkındaki bilgileri de bulabilirsiniz.

NuGet paketindeki bilgilerin ve ölçümlerin ekran görüntüsü.

.NET komutları

Şimdiye kadar .NET Core CLI kullanarak bağımlılıkları nasıl yükleyebileceğinizi öğrendiniz. Ancak bu araç çok daha fazlasını yapabilir.

.NET Core CLI'de oldukça az komut vardır. Bu komutlar paketleri yükleme, paket yazma ve .NET projelerini başlatma gibi birçok konuda size yardımcı olur. Tüm komutların ayrıntılarını bilmeniz gerekmez. .NET'i kullanmaya başladığınızda birkaç komut sizin için yeterli olacaktır. .NET kullanımınızı genişletirken çeşitli kategorilerden daha fazla komut kullanabilirsiniz.

Komutların işlevini daha kolay hatırlayabilmek için bunların ait oldukları kategorileri düşünebilirsiniz:

  • Bağımlılıkları yönetme: Bu kategorideki komutlar yükleme, kaldırma, paket yüklemelerinden sonra temizleme ve paket güncelleştirmelerini kapsar.
  • Programları çalıştırma: .NET Core aracı, uygulama geliştirmenizdeki akışları yönetmenize yardımcı olabilir. Uygulama akışlarına örnek olarak testleri çalıştırma, kodu derleme ve projeleri yükseltmek için geçiş komutları çalıştırma sayılabilir.
  • Paketleri yazma ve yayımlama: Sıkıştırılmış paket oluşturma ve paketi kayıt defterine gönderme gibi görevlerde çeşitli komutlar size yardımcı olabilir.

Tüm komutlarına ayrıntılı listesine ulaşmak için terminale dotnet --help yazabilirsiniz.

Paketi yükleme

Uygulamanızın dotnet add package <dependency name> bir parçası olarak kullanılması amaçlanan normal bir bağımlılığı yüklemek için komutunu kullanın.

Not

Bazı paketleri genel olarak yükleyebilirsiniz. Bu paketlerin projenize aktarılması amaçlanmamıştır. Bu nedenle birçok genel paket CLI aracı veya şablondur. Ayrıca, bu genel araçları bir paket deposundan da yükleyebilirsiniz. dotnet tool install <name of package> komutunu kullanarak araçları yükleyin. dotnet new -i <name of package> komutunu kullanarak şablonları yükleyin.

Yükleme sonrası

Yüklü paketler dosyanızın dependencies bölümünde listelenir.csproj. Klasörde hangi paketlerin bulunduğunu görmek istiyorsanız dotnet list package yazabilirsiniz.

Project 'DotNetDependencies' has the following package references
   [net8.0]:
   Top-level Package      Requested   Resolved
   > Humanizer            2.7.9       2.7.9

Bu komut, geçişli paketler olarak adlandırdığımız paketlerin bağımlılıklarını değil yalnızca üst düzey paketleri listeler. Bu komut hızlı bir görünüm için güzeldir. Daha ayrıntılı bir görünüm istiyorsanız, tüm geçişli paketleri listeleyebilirsiniz. Bunu yaptığınızda, list komut şöyle görünür:

dotnet list package --include-transitive

Geçişlileri dahil etmek, yüklediğiniz tüm paketlerin yanı sıra bağımlılıkları da görmenizi sağlar. komutunu çalıştırırsanız dotnet list package --include-transitiveşu çıkışı alabilirsiniz:

Project 'DotNetDependencies' has the following package references
   [net8.0]:
   Top-level Package      Requested   Resolved
   > Humanizer            2.7.9       2.7.9

   Transitive Package               Resolved
   > Humanizer.Core                 2.7.9
   > Humanizer.Core.af              2.7.9
   > Humanizer.Core.ar              2.7.9
   > Humanizer.Core.bg              2.7.9
   > Humanizer.Core.bn-BD           2.7.9
   > Humanizer.Core.cs              2.7.9
   ...

Bağımlılıkları geri yükleme

Projeyi oluşturduğunuzda veya kopyaladığınızda, projenizi oluşturana kadar dahil edilen bağımlılıklar indirilir veya yüklenmez. komutunu çalıştırarak dotnet restore bağımlılıkları ve proje dosyasında belirtilen projeye özgü araçları el ile geri yükleyebilirsiniz. Çoğu durumda, komutu açıkça kullanmanız gerekmez. NuGet geri yükleme, , ve newgibi buildrunkomutları çalıştırdığınızda gerekirse örtük olarak çalışır.

Bağımlılıkları temizleme

Eninde sonunda artık bir pakete gerek duymadığınızı fark edeceksiniz. Alternatif olarak, yüklediğiniz paketin ihtiyacınız olan paket olmadığını fark edebilirsiniz. Belki de bir görevi daha iyi başaran bir tane buldun. Nedeni her ne olursa olsun kullanmadığınız bağımlılıkları kaldırmanız gerekir. Bunu yaptığınızda kalabalığı ortadan kaldırmış olursunuz. Ayrıca bağımlılıklar yer de kaplar.

Projenizden bir paketi kaldırmak için komutunu kullanın remove , örneğin: dotnet remove package <name of dependency>. Bu komut paketi projenizin .csproj dosyasından kaldırır.