Çok düzeyli arama devre dışı bırakıldı

Windows'da, çerçeveye bağımlı .NET uygulamaları artık birden çok yükleme konumunda çerçeve aramaz.

Önceki davranış

Önceki sürümlerde, çerçeveye bağımlı bir .NET uygulaması, Windows'ta birden çok yükleme konumunda çerçeveler aramıştı. Konumlar:

  • Uygulamayı dotnet üzerinden çalıştırırken yürütülebilir dosyaya dotnet göre alt dizinler.
  • Uygulamayı yürütülebilir dosyası ()apphost aracılığıyla çalıştırırken, ortam değişkeninin DOTNET_ROOT değeri (ayarlandıysa) tarafından belirtilen konum.
  • HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation konumunda genel olarak kayıtlı yükleme konumu (ayarlandıysa).
  • 64 bit Windows'ta 32 bit işlemler için varsayılan %ProgramFiles%\dotnet (veya %ProgramFiles(x86)%\dotnet) yükleme konumu.

Bu çok düzeyli arama davranışı varsayılan olarak etkinleştirilmiştir ancak ortam değişkeni DOTNET_MULTILEVEL_LOOKUP=0ayarlanarak devre dışı bırakılabilir.

Yeni davranış

.NET 7 veya sonraki bir sürümü hedefleyen uygulamalar, .NET yüklemesinin bulunduğu ilk konum olan tek bir konumda çerçeveleri arar. Bir uygulamayı dotnet üzerinden çalıştırırken çerçeveler yalnızca yürütülebilir dosyaya dotnet göre alt dizinlerde aranabilir. Bir uygulamayı yürütülebilir dosyası ()apphost aracılığıyla çalıştırırken, çerçeveler yalnızca .NET'in bulunduğu aşağıdaki konumların ilkinde aranılır:

  • Ortam değişkeninin DOTNET_ROOT değeri (ayarlandıysa) tarafından belirtilen konum.
  • HKLM\SOFTWARE\dotnet\Setup\InstalledVersions<arch>\InstallLocation konumunda genel olarak kayıtlı yükleme konumu (ayarlandıysa).
  • 64 bit Windows'ta 32 bit işlemler için varsayılan %ProgramFiles%\dotnet (veya %ProgramFiles(x86)%\dotnet) yükleme konumu.

Sürüm kullanıma sunulmuştur

.NET 7

Hataya neden olan değişikliğin türü

Bu değişiklik ikili uyumluluğu etkileyebilir.

Değişiklik nedeni

Çok düzeyli aramanın neden olduğu çok sayıda sorun vardır:

  • Kullanıcılar için karışıklık: Uygulama, özel bir yüklemeden .NET çalıştırmasına rağmen genel veya varsayılan bir yükleme konumu seçebilir.
  • Platformlar arasındaki tutarsızlık (Windows ile Windows dışı).
  • Genellikle otomatik sistemlerde davranış sonları: yeni bir genel .NET yüklemesi, yalıtılmış derlemeleri ve testleri etkileyebilir.
  • Performans sorunları.

Gerekli .NET sürümünün tek bir .NET yükleme konumunda yüklü olduğundan emin olun. Başlatılamaması durumunda gönderilen hata iletileri beklenen konumu içerir.

Etkilenen API’ler

Yok.