Aracılığıyla paylaş


Uygulama başlatma hatalarını giderme

Bu makalede, uygulama başlatma hatalarının bazı yaygın nedenleri ve olası çözümleri açıklanmaktadır. Makinenizde bir .NET yüklemesini kullanan çerçeveye bağımlı uygulamalarla ilgilidir.

Hangi .NET sürümüne ihtiyacınız olduğunu zaten biliyorsanız, .NET indirmelerinden indirebilirsiniz.

.NET yüklemesi bulunamadı

.NET yüklemesi bulunamazsa uygulama aşağıdakine benzer bir iletiyle başlatılamaz:

You must install .NET to run this application.

App: C:\repos\myapp\myapp.exe
Architecture: x64
Host version: 7.0.0
.NET location: Not found
You must install .NET to run this application.

App: /home/user/repos/myapp/myapp
Architecture: x64
Host version: 7.0.0
.NET location: Not found

Bunun nedeni bir paket karışımı olabilir.

Genel yüklemeler şu konuma kaydedilir: /etc/dotnet/install_location. Daha fazla bilgi için bkz . yükleme konumları.

You must install .NET to run this application.

App: /home/user/repos/myapp/myapp
Architecture: x64
Host version: 7.0.0
.NET location: Not found

Genel yüklemeler şu konuma kaydedilir: /etc/dotnet/install_location. Daha fazla bilgi için bkz . yükleme konumları.

Hata iletisi .NET'i indirmek için bir bağlantı içerir. Uygun indirme sayfasına ulaşmak için bu bağlantıyı izleyebilirsiniz. .NET indirmelerinden .NET sürümünü (tarafından Host versionbelirtilen) de seçebilirsiniz.

Gerekli .NET sürümünün indirme sayfasında, hata iletisinde listelenen mimariyle eşleşen .NET Çalışma Zamanı indirmesini bulun. Ardından bir Yükleyici indirip çalıştırarak yükleyebilirsiniz.

.NET, çeşitli Linux paket yöneticileri aracılığıyla kullanılabilir. Daha fazla bilgi için bkz . Linux'a .NET yükleme. (.NET'in önizleme sürümleri genellikle paket yöneticileri aracılığıyla kullanılamaz.)

gibi dotnet-runtime6uygun sürüm için .NET Çalışma Zamanı paketini yüklemeniz gerekir.

Alternatif olarak, gerekli .NET sürümünün indirme sayfasında belirtilen mimari için ikili dosyaları indirebilirsiniz.

Gerekli çerçeve bulunamadı

Gerekli bir çerçeve veya uyumlu sürüm bulunamazsa uygulama aşağıdakine benzer bir iletiyle başlatılamaz:

You must install or update .NET to run this application.

App: C:\repos\myapp\myapp.exe
Architecture: x64
Framework: 'Microsoft.NETCore.App', version '5.0.15' (x64)
.NET location: C:\Program Files\dotnet\

The following frameworks were found:
  6.0.2 at [c:\Program Files\dotnet\shared\Microsoft.NETCore.App]
You must install or update .NET to run this application.

App: /home/user/repos/myapp/myapp
Architecture: x64
Framework: 'Microsoft.NETCore.App', version '5.0.15' (x64)
.NET location: /usr/share/dotnet/

The following frameworks were found:
  6.0.2 at [/usr/share/dotnet/shared/Microsoft.NETCore.App]
You must install or update .NET to run this application.

App: /home/user/repos/myapp/myapp
Architecture: x64
Framework: 'Microsoft.NETCore.App', version '5.0.15' (x64)
.NET location: /usr/local/share/dotnet/

The following frameworks were found:
  6.0.2 at [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

Hata, eksik çerçevenin adını, sürümünü ve mimarisini ve yüklenmesi beklenen konumu gösterir. Uygulamayı çalıştırmak için, belirtilen ".NET konumuna" uyumlu bir çalışma zamanı yükleyebilirsiniz. Uygulama yüklediğiniz sürümden daha düşük bir sürümü hedeflediyse ve bunu daha yüksek bir sürümde çalıştırmak istiyorsanız, uygulama için ileri sarma davranışını da yapılandırabilirsiniz.

Uyumlu bir çalışma zamanı yükleme

Hata iletisi eksik çerçeveyi indirmek için bir bağlantı içerir. Uygun indirme sayfasına ulaşmak için bu bağlantıyı izleyebilirsiniz.

Alternatif olarak, .NET indirmeleri sayfasından bir çalışma zamanı indirebilirsiniz. Birden çok .NET çalışma zamanı indirmesi vardır.

Aşağıdaki tabloda her çalışma zamanının içerdiği çerçeveler gösterilmektedir.

Çalışma zamanı indirme Dahil edilen çerçeveler
ASP.NET Core Çalışma Zamanı Microsoft.NETCore.App
Microsoft.AspNetCore.App
.NET Desktop Çalışma Zamanı Microsoft.NETCore.App
Microsoft.WindowsDesktop.App
.NET Çalışma Zamanı Microsoft.NETCore.App
Çalışma zamanı indirme Dahil edilen çerçeveler
ASP.NET Core Çalışma Zamanı Microsoft.NETCore.App
Microsoft.AspNetCore.App
.NET Çalışma Zamanı Microsoft.NETCore.App

Eksik çerçeveyi içeren bir çalışma zamanı indirmesi seçin ve ardından yükleyin.

Gerekli .NET sürümünün indirme sayfasında, hata iletisinde listelenen mimariyle eşleşen çalışma zamanı indirmesini bulun. Büyük olasılıkla bir Yükleyici indirmek istiyorsunuz.

.NET, çeşitli Linux paket yöneticileri aracılığıyla kullanılabilir. Ayrıntılar için bkz . Linux'a .NET yükleme. (.NET'in önizleme sürümleri genellikle paket yöneticileri aracılığıyla kullanılamaz.)

veya dotnet-aspnet6gibi dotnet-runtime6 uygun sürüm için .NET çalışma zamanı paketini yüklemeniz gerekir.

Alternatif olarak, gerekli .NET sürümünün indirme sayfasında belirtilen mimari için ikili dosyaları indirebilirsiniz.

Çoğu durumda, başlatamayan uygulama böyle bir yükleme kullandığında, hata iletisindeki ".NET konumu" şunu gösterir:

%ProgramFiles%\dotnet

/usr/share/dotnet/

/usr/local/share/dotnet/

Diğer seçenekler

Dikkate alınması gereken başka yükleme ve geçici çözüm seçenekleri vardır.

dotnet-install betiğini çalıştırma

İşletim sisteminiz için dotnet-install betiğini indirin. Betiği, hata iletisindeki bilgilere göre seçeneklerle çalıştırın. dotnet-install betik başvuru sayfası tüm kullanılabilir seçenekleri gösterir.

PowerShell'i başlatın ve çalıştırın:

dotnet-install.ps1 -Architecture <architecture> -InstallDir <directory> -Runtime <runtime> -Version <version>

Örneğin, önceki bölümdeki hata iletisi aşağıdakilere karşılık gelir:

dotnet-install.ps1 -Architecture x64 -InstallDir "C:\Program Files\dotnet\" -Runtime dotnet -Version 5.0.15

Betik çalıştırmanın devre dışı bırakıldığını belirten bir hatayla karşılaşırsanız, betiğin çalışmasına izin vermek için yürütme ilkesini ayarlamanız gerekebilir:

Set-ExecutionPolicy Bypass -Scope Process

Betiği kullanarak yükleme hakkında daha fazla bilgi için bkz . PowerShell otomasyonu ile yükleme.

./dotnet-install.sh --architecture <architecture> --install-dir <directory> --runtime <runtime> --version <version>

Örneğin, önceki bölümdeki hata iletisi aşağıdakilere karşılık gelir:

./dotnet-install.sh --architecture x64 --install-dir /usr/share/dotnet/ --runtime dotnet --version 5.0.15

Betiği kullanarak yükleme hakkında daha fazla bilgi için bkz . Betikli yükleme.

./dotnet-install.sh --architecture <architecture> --install-dir <directory> --runtime <runtime> --version <version>

Örneğin, önceki bölümdeki hata iletisi aşağıdakilere karşılık gelir:

./dotnet-install.sh --architecture x64 --install-dir /usr/local/share/dotnet/ --runtime dotnet --version 5.0.15

Betiği kullanarak yükleme hakkında daha fazla bilgi için bkz . Bash otomasyonu ile yükleme.

İkili dosyaları indirme

İndirme sayfasından .NET ikili arşivini indirebilirsiniz. Çalışma zamanı indirmesinin İkili dosyalar sütunundan gerekli mimariyle eşleşen ikili sürümü indirin. İndirilen arşivi hata iletisinde belirtilen ".NET konumuna" ayıklayın.

El ile yükleme hakkında daha fazla bilgi için bkz . Windows'a .NET yükleme

El ile yükleme hakkında daha fazla bilgi için bkz . Linux'ta .NET yükleme

El ile yükleme hakkında daha fazla bilgi için bkz . macOS'a .NET yükleme

İleri sarma davranışını yapılandırma

Gerekli çerçevenin daha yüksek bir sürümü zaten yüklüyse, uygulamanın ileri sarma davranışını yapılandırarak bu daha yüksek sürümde çalışmasını sağlayabilirsiniz.

Uygulamayı çalıştırırken komut satırı seçeneğini belirtebilir veya ortam değişkeniniDOTNET_ROLL_FORWARD ayarlayabilirsiniz.--roll-forward Varsayılan olarak, bir uygulama, uygulamanın hedeflediği ana sürümle eşleşen ancak daha yüksek bir ikincil veya düzeltme eki sürümü kullanabilen bir çerçeve gerektirir. Ancak uygulama geliştiricileri farklı bir davranış belirtmiş olabilir. Daha fazla bilgi için bkz . Çerçeveye bağımlı uygulamalar ileri sarma.

Dekont

Bu seçeneğin kullanılması, uygulamanın tasarlandığı sürümden farklı bir çerçeve sürümünde çalışmasına izin vermesinden dolayı, çerçeve sürümleri arasındaki değişiklikler nedeniyle istenmeyen davranışlara neden olabilir.

Hataya neden olan değişiklikler

.NET 7 ve üzeri için çok düzeyli arama devre dışı bırakıldı

Windows'ta, .NET 7'ye geçmeden önce uygulama birden çok yükleme konumunda çerçeveleri arayabilirdi.

  1. Alt dizinler ile ilgili:

    • dotnet ile uygulamayı dotnetçalıştırırken yürütülebilir dosya.
    • DOTNET_ROOT ortam değişkeni (ayarlanırsa), uygulamayı yürütülebilir dosyası (apphost) üzerinden çalıştırırken.
  2. içinde HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\<arch>\InstallLocationgenel olarak kayıtlı yükleme konumu (ayarlandıysa) .

  3. varsayılan yükleme konumu %ProgramFiles%\dotnet (veya %ProgramFiles(x86)%\dotnet 64 bit Windows'ta 32 bit işlemler için).

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.

.NET 7 ve üzerini hedefleyen uygulamalar için çok düzeyli arama tamamen devre dışı bırakılır ve .NET yüklemesinin bulunduğu ilk konum olan tek bir konum aranmaktadır. Bir uygulama üzerinden dotnetçalıştırıldığında çerçeveler yalnızca ile ilgili alt dizinlerde aranılır dotnet. Bir uygulama yürütülebilir dosyası ()apphost üzerinden çalıştırıldığında, çerçeveler yalnızca .NET'in bulunduğu daha önce listelenen konumların ilkinde aranılır.

Daha fazla bilgi için bkz . Çok düzeyli arama devre dışı bırakıldı.

Ayrıca bkz.