Ç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şkenininDOTNET_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=0
ayarlanarak 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ı.
Önerilen eylem
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.