dotnetup ortam yapılandırması

Note

dotnetup genel önizleme aşamasındadır. Özellikleri ve davranışı genel kullanılabilirlik öncesinde değişebilir.

Dotnetup, .NET SDK'ları ve yüklemiş olduğu Çalışma Zamanlarını kullanılabilir hale getirmek için ortamı yapılandırabilir. Bunu yapmak için aşağıdaki ortam değişkenlerini ayarlar:

  • PATH: dotnet komutunu komut satırında kullanılabilir hale getirir. Visual Studio veya C# Geliştirme Seti gibi geliştirme araçları da .NET SDK'ları ve Çalışma Zamanlarını bulmak için PATH öğesini kullanır.
  • DOTNET_ROOT: Çerçeveye bağımlı uygulama yürütülebilir dosyalarına bir .NET yüklemesini ve paylaşılan çalışma zamanlarını nerede bulacaklarını belirtir.

Dotnetup, bu ortam değişkenlerinin nerede ayarlandığını denetleyen farklı erişim modlarını destekler. İlk dotnetup kurulumunda veya daha sonra dotnetup env komutuyla bir erişim modu seçebilirsiniz.

Erişim Modu Behavior
none Bu ortam değişkenlerini değiştirmez. .NET'i dotnetup dotnet ile çalıştırın.
shell Bu ortam değişkenlerini ayarlamak için kabuk profilini değiştirir. Bu kabuktan başlatılan işlemler, dotnetup tarafından yüklenen .NET SDK'ları ve Çalışma Zamanlarını kullanır.
everywhere Sistemi PATH değiştirir ve kullanıcı düzeyi DOTNET_ROOT ortam değişkenini ayarlar. Yalnızca Windows'ta kullanılabilir.

Varsayılan olarak, dotnetup erişim modu ayarından bağımsız olarak kendisini de PATH konumuna ekler. Bu, dotnetup env set --dotnetup-on-path <true|false> ile denetlenebilir.

Everywhere modu ile ilgili hususlar

Dotnetup tarafından yüklenen SDK'ların ve çalışma zamanlarının geliştirme araçlarından ve kabuk olarak kullanılan cmd terminallerden kullanılabilmesi için Windows'ta Everywhere modu varsayılan olarak etkindir. Ancak, öncelikle .NET SDK ve Çalışma Zamanı'nın makine genelindeki yüklemeleriyle nasıl etkileşime geçtiğinin farkında olmanız gereken bazı şeyler vardır.

Makine genelindeki .NET yüklemeleri Program Files klasörünün altında bulunur. Bunlar, .NET indirmeler sayfasından indirilebilen yükleyicilerle yüklenebilir. Visual Studio, .NET SDK ve Çalışma Zamanı'nın makine genelindeki yüklemelerini yükler ve çerçeveye bağımlı uygulamalar için yükleyiciler de bağımlı oldukları .NET Çalışma Zamanı'nı makine genelindeki konuma yükleyebilir.

everywhere modunda, kullanıcı yerel dotnetup tarafından yönetilen .NET yükleme kökü, makine genelindeki .NET yükleme kökünü geçersiz kılar. Bu, Program Dosyalarında yüklü .NET SDK'ların ve Runtime'ların kullanılamayacağı anlamına gelir. Eşleşen bir SDK yüklü değilse, bu SDK'lara bağımlı projeler derlenemez. Eşleşen bir çalışma zamanı yüklü değilse, çerçeveye bağımlı uygulamalar başlatılamaz ve "Bu uygulamayı çalıştırmak için .NET yüklemeniz veya güncelleştirmeniz gerekir" hatası görüntülenir.

Bu hataları önlemek için ilk dotnetup kurulumu, mevcut sistem .NET SDK ve Çalışma Zamanı kurulumlarını taşıma seçeneği sunar. Ayrıca bunları, SDK'lar için dotnetup runtime install --migrate-from-system veya çalışma zamanları için dotnetup sdk install --migrate-from-system çalıştırarak açıkça taşıyabilirsiniz.

Her yerde modunu açmak veya kapatmak için sistem PATH'sinin değiştirilmesi gerekir. Bu da yönetici ayrıcalıkları gerektirir (yani bir UAC istemi onayı veya "Yönetici olarak çalıştır"). Bunun nedeni, .NET için makine genelindeki yükleyicilerin Program Files .NET yükleme kökünü sistem PATH'sine eklemesi ve komutları çözerken sistem PATH'sinin kullanıcı düzeyi PATH'den öncelikli olmasıdır. Bu nedenle dotnetup'ın sistem PATH'ini değiştirerek dotnetup .NET yükleme kökünü öncelikli hale getirmesi gerekir.

Sistem PATH tüm kullanıcılar için geçerli olduğundan, bu değişiklikler diğer kullanıcıları etkileyebilir. Sistem PATH'sine eklenen yol varsayılan olarak kullanıcının yerel AppData klasörünün altındadır. Bu normalde diğer kullanıcılar tarafından erişilebilir olmaz, bu nedenle dotnet öğesinin hangi sürümünün çözümleneceğini etkilemez. Ancak, yükseltilmiş işlemler (yönetici olarak çalışan) yolu okuyabilir ve beklenmedik şekilde başka bir kullanıcının .NET SDK'larını veya Çalışma Zamanlarını çözümleyebilir.

Desteklenen kabuklar

Profil ve betik oluşturma desteği:

  • Bash (Bir komut dilidir)
  • Z shell
  • Balık
  • Pwsh (PowerShell Core)
  • PowerShell

Eğer --shell vermezseniz, dotnetup mevcut kabuğu algılar. Algılama kullanılamadığında veya farklı bir profili güncelleştirmek istediğinizde açık bir kabuk kullanın:

dotnetup env set shell --shell zsh

Depolanmış ve gözlemlenen durum

dotnetup.config.json seçili erişim modunu ve PATH öğesinin dotnetup üzerinde olup olmaması gerektiğini depolar. dotnetup env show bu yapılandırmayı geçerli profil ve ortamla karşılaştırır. Gözlemlenen durum eşleşmiyorsa sapma olduğunu bildirir.

Kaymayı düzeltmek için depolanan yapılandırmayı yeniden uygulayın:

dotnetup env set

Mevcut terminal

Profil ve Windows ortam değişiklikleri geçerli işlemin ortamını yeniden yazmaz. Yeni bir terminal açın, değiştirilmiş profili kaynak olarak yükleyin veya oluşturulan betiği değerlendirin.

Bash veya Z kabuğu için:

eval "$(dotnetup env script)"

PowerShell için:

dotnetup env script --shell pwsh | Invoke-Expression

env script, seçim seçeneklerini belirtmediğinizde depolanan yapılandırmayı izler. Oluşturulan içeriği seçmek için --dotnetup, --dotnet veya her ikisini de kullanın.

Ortam yapılandırmasını kaldır

Tüm yönetilen ortam kablolarını kaldırın:

dotnetup env clear

Bu komut şuna eşdeğerdir:

dotnetup env set none --dotnetup-on-path false

SDK'ları veya çalışma zamanlarını kaldırmaz.