Aracılığıyla paylaş


Snap ile .NET SDK'sı yükleme

Bu makalede, .NET SDK snap paketinin nasıl yükleneceği açıklanır. .NET SDK ek paketleri Canonical tarafından sağlanır ve korunur. Snap'ler, Linux dağıtımınızda bulunan paket yöneticisine harika bir alternatiftir.

Snap, bir uygulama ve çeşitli Linux dağıtımlarıyla uyumlu olan bağımlılıkların bir paketidir. Snap paketleri, Snap Store'da keşfedilebilir ve yüklenebilir. Snap hakkında daha fazla bilgi için bkz . Hızlı Başlangıç turu.

Dikkat

.NET anlık yüklemelerinde .NET araçları çalıştırma sorunları olabilir. .NET araçları kullanmak istiyorsanız dotnet-install betiğini veya belirli Linux dağıtımı için paket yöneticisini kullanarak .NET yüklemenizi öneririz.

dotnet watch komutunun, .NET Snap aracılığıyla yüklendiğinde çalışmaması bilinen bir sorundur.

.NET araçlarını veya dotnet watch komutunu kullanacaksanız dotnet-install betiğini kullanarak .NET yüklemenizi öneririz.

Önkoşullar

  • Snap desteği olan Linux dağıtımı.
  • snapd snap hizmet programı.

Linux dağıtımınız zaten snap içeriyor olabilir. Komutun çalışıp çalışmadığını görmek için terminalden çalıştırmayı snap deneyin. Desteklenen Linux dağıtımlarının listesi ve snap'i yükleme yönergeleri için bkz . Yükleme snapd.

.NET sürümleri

Microsoft, uzun vadeli destek (LTS) ve Standart Dönem Desteği (STS) gibi iki farklı destek ilkesi altında .NET yayımlar. Tüm sürümlerin kalitesi aynıdır. Tek fark desteğin uzunluğudur. LTS sürümleri üç yıl boyunca ücretsiz destek ve yamalar alır. STS sürümleri iki yıl boyunca ücretsiz destek ve yamalar alır. Daha fazla bilgi için bkz. .NET Destek İlkesi.

Şu anda Microsoft tarafından desteklenen .NET sürümleri şunlardır:

  • 10.0 (LTS)—Destek 14 Kasım 2028'de sona eriyor.
  • 9.0 (STS)—Destek 10 Kasım 2026'da sona eriyor.
  • 8.0 (LTS)—Destek 10 Kasım 2026'da sona eriyor.

.NET oluşturan ve yayımlayan diğer kuruluşlar farklı destek politikalarını benimseyebilir. .NET nasıl desteklendiğinden emin olmak için onlarla birlikte kontrol edin.

1. SDK'yi yükleme

Önemli

.NET 10, 11 Kasım 2025'te yayımlandı. Paketlerin paket yöneticisi akışlarında görünmesi veya belirli Linux dağıtımınızın dahil olması zaman alabilir.

.NET 9'dan başlayarak, .NET SDK'sı için tutturma paketleri sürüme özgü tanımlayıcılar altında yayımlanır (örneğin, .NET 9 için dotnet-sdk-90 ve .NET 10 için dotnet-sdk-100). .NET 9'tan önce, tüm SDK sürümleri aynı tanımlayıcı dotnet-sdk altında yayımlandı ve sürümü bir kanal üzerinden belirttiniz. Ayrıca, .NET 9 ve üzeri snap paketleri hem x64 hem de Arm64 mimarilerini desteklerken, önceki sürümler yalnızca x64'i destekler. SDK, hem ASP.NET Core hem de .NET çalışma zamanını içerir ve ikisi de SDK'ya göre sürümlenmiştir.

İpucu

Snapcraft .NET SDK paket sayfası Snapcraft ve .NET yükleme hakkında dağıtıma özgü yönergeler içerir.

  1. Bir terminal açın.

  2. .NET SDK ek bileşeni paketini yüklemek için snap install kullanın.

    --classic parametresi gereklidir.

    • 9 ve sonraki .NET için

      Belirli bir sürüme ait paketi yükleyin. Örneğin, aşağıdaki komut .NET SDK 10'u yükler:

      sudo snap install dotnet-sdk-100 --classic
      
    • .NET 8 ve öncesi için

      Paketinden dotnet-sdk yükleyin ve bir kanal belirtin. Bu parametre atlanırsa kullanılır latest/stable . Örneğin, aşağıdaki komut .NET SDK 8'i yükler:

      sudo snap install dotnet-sdk --classic --channel 8.0/stable
      

Snap dotnet takma adı otomatik olarak oluşturulur ve snap paketinin dotnet komutuyla eşlenir.

Aşağıdaki tabloda yükleyebileceğiniz snap paketleri ve kanalları listelenmiştir.

.NET sürümü Snap paketi veya kanalı
10 (LTS) dotnet-sdk-100 (önizleme)
9 (STS) dotnet-sdk-90
8 (LTS) dotnet-sdk --channel 8.0/stable
7 dotnet-sdk --channel 7.0/stable (destek dışı)
6 dotnet-sdk --channel 6.0/stable (destek dışı)
5 dotnet-sdk --channel 5.0/stable (destek dışı)
3.1 dotnet-sdk --channel 3.1/stable (destek dışı)
2.1 dotnet-sdk --channel 2.1/stable (destek dışı)

2. Yükleme konumunu dışarı aktarma

DOTNET_ROOT ortam değişkeni genellikle araçlar tarafından .NET nereye yüklendiğini belirlemek için kullanılır. .NET Snap aracılığıyla yüklendiğinde, bu ortam değişkeni yapılandırılmaz. Profilinizde DOTNET_ROOT ortam değişkenini yapılandırmanız gerekir. Snap yolu şu formatı kullanır: /snap/{package}/current.

.NET 9 ve üzeri için sürüme özgü paket adını kullanın:

export DOTNET_ROOT=/snap/dotnet-sdk-100/current

.NET 8 ve öncesi için paylaşılan paket adını kullanın:

export DOTNET_ROOT=/snap/dotnet-sdk/current

Ortam değişkenini kalıcı olarak dışarı aktarma

Yukarıdaki export komut yalnızca çalıştırıldığı terminal oturumu için ortam değişkenini ayarlar.

Komutları kalıcı olarak eklemek için kabuk profilinizi düzenleyebilirsiniz. Linux için kullanılabilen birçok farklı kabuk vardır ve her birinin farklı bir profili vardır. Örneğin:

  • Bash: ~/.bash_profile, ~/.bashrc
  • Korn Shell: ~/.kshrc ya da .profile
  • Z Shell: _~/.zshrc* veya .zprofile

Kabuğunuz için uygun kaynak dosyasını düzenleyin ve yüklü .NET sürümünüz için dışarı aktarma komutunu ekleyin. .NET 9+ için export DOTNET_ROOT=/snap/dotnet-sdk-100/current kullanın (sürüm numarasını gerektiği gibi ayarlayın). .NET 8 ve öncesi için export DOTNET_ROOT=/snap/dotnet-sdk/current kullanın.

3. .NET CLI kullanın

Bir terminal açın ve yazın dotnet.

dotnet

Aşağıdaki çıktı görüntülenir:

Usage: dotnet [options]
Usage: dotnet [path-to-application]

Options:
  -h|--help         Display help.
  --info            Display .NET information.
  --list-sdks       Display the installed SDKs.
  --list-runtimes   Display the installed runtimes.

path-to-application:
  The path to an application .dll file to execute.

.NET CLI'yı kullanmayı öğrenmek için bkz. .NET CLI'ya genel bakış.

Sorun giderme

dotnet terminal komutu çalışmıyor

Snap paketleri, paket tarafından sağlanan bir komuta bir takma adlı eşleyebilir. Varsayılan olarak, .NET SDK snap paketleri dotnet komutu için bir diğer ad oluşturur. Takma ad oluşturulmadıysa veya daha önce kaldırıldıysa, takma adı eşleştirmek için aşağıdaki komutu kullanın.

.NET 9 ve üzeri için:

sudo snap alias dotnet-sdk-100.dotnet dotnet

.NET 8 ve öncesi için:

sudo snap alias dotnet-sdk.dotnet dotnet

WSL2'ye Snap yüklenemiyor

systemd Snap'in yüklenebilmesi için WSL2 örneğinde etkinleştirilmesi gerekir.

  1. Seçtiğiniz bir metin düzenleyicisinde açın /etc/wsl.conf .

  2. Aşağıdaki yapılandırmayı yapıştırın:

    [boot]
    systemd=true
    
  3. Dosyayı kaydedin ve PowerShell aracılığıyla WSL2 örneğini yeniden başlatın. wsl.exe --shutdown komutunu kullanın.

dotnet komutu veya SDK çözümlenemiyor

.NET SDK'sının konumunu çözümlemeye çalışmak, kod IDE'si veya Visual Studio Code'daki bir uzantı gibi diğer uygulamalar için yaygındır. Bulma işlemi genellikle ortam değişkenini DOTNET_ROOT denetleyerek veya yürütülebilir dosyanın bulunduğu yeri dotnet bularak yapılır. Snap ile yüklenen .NET SDK, bu uygulamaların kafasını karıştırabilir. Bu uygulamalar .NET SDK'sını çözemezse, aşağıdaki iletilerden birine benzer bir hata görüntülenir:

  • Belirtilen SDK 'Microsoft.NET.Sdk' bulunamadı.
  • SDK 'Microsoft.NET.Sdk.Web' belirtildiği gibi bulunamadı
  • SDK 'Microsoft.NET.Sdk.Razor' belirtildiği gibi bulunamadı

Sorunu çözmek için aşağıdaki adımları deneyin:

  1. Ortam değişkenini kalıcı olarak dışa aktardığınızdan emin olun.

  2. Programın aradığı konuma dotnet yürütülebilir dosyasına sembolik bağlantı oluşturmayı deneyin.

    Komutun dotnet aradığı iki yaygın yol şunlardır:

    • /usr/local/bin/dotnet
    • /usr/share/dotnet

    "Snap paketine sembolik bir bağlantı oluşturmak için aşağıdaki komutu kullanın." .NET 9 ve üzeri için sürüme özgü paket adını kullanın:

    ln -s /snap/dotnet-sdk-100/current/dotnet /usr/local/bin/dotnet
    

    .NET 8 ve öncesi için:

    ln -s /snap/dotnet-sdk/current/dotnet /usr/local/bin/dotnet
    

TLS/SSL Sertifikası hataları

.NET Snap aracılığıyla yüklendiğinde, bazı dağıtımlarda .NET TLS/SSL sertifikaları bulunamayabilir ve restore sırasında bir hata alabilirsiniz:

Processing post-creation actions...
Running 'dotnet restore' on /home/myhome/test/test.csproj...
  Restoring packages for /home/myhome/test/test.csproj...
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error : Unable to load the service index for source https://api.nuget.org/v3/index.json. [/home/myhome/test/test.csproj]
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error :   The SSL connection could not be established, see inner exception. [/home/myhome/test/test.csproj]
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error :   The remote certificate is invalid according to the validation procedure. [/home/myhome/test/test.csproj]

Bu sorunu çözmek için birkaç ortam değişkeni ayarlayın:

export SSL_CERT_FILE=[path-to-certificate-file]
export SSL_CERT_DIR=/dev/null

Sertifika konumu dağıtıma göre değişir. Sorunun gözlemlendiği dağıtımların konumları şunlardır:

Dağıtım Konum
Fedora /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
OpenSUSE /etc/ssl/ca-bundle.pem
Solus /etc/ssl/certs/ca-certificates.crt