Прочитать на английском

Поделиться через


Устранение неполадок при запуске приложения

Выберите операционную систему

В этой статье описываются некоторые распространенные причины и возможные решения для сбоев запуска приложений. Он относится к приложениям, зависящим от платформы, которые полагаются на установку .NET на компьютере.

Если вы уже знаете нужную версию .NET, ее можно скачать из скачиваемого файла .NET.

Установка .NET не найдена

Если установка .NET не найдена, приложение не может запуститься с сообщением, похожим на следующее:

Консоль
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
Bash
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

Это может быть связано с сочетанием пакетов.

Глобальные установки регистрируются в следующем расположении: /etc/dotnet/install_location Дополнительные сведения см. в разделе "Расположения установки".

Bash
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

Глобальные установки регистрируются в следующем расположении: /etc/dotnet/install_location Дополнительные сведения см. в разделе "Расположения установки".

Сообщение об ошибке содержит ссылку на скачивание .NET. Чтобы перейти на соответствующую страницу загрузки, вы можете следовать этой ссылке. Вы также можете выбрать версию .NET (указанную в ) Host versionиз скачиваемых файлов .NET.

На странице загрузки требуемой версии .NET найдите скачивание среды выполнения .NET, соответствующее архитектуре, указанной в сообщении об ошибке. Затем его можно установить, скачав и запустив установщик.

Платформа .NET доступна через различные диспетчеры пакетов Linux. Дополнительные сведения см. в разделе "Установка .NET в Linux". (Предварительные версии .NET обычно недоступны через диспетчеры пакетов.)

Необходимо установить пакет среды выполнения .NET для соответствующей версии, например dotnet-runtime6.

Кроме того, на странице загрузки для требуемой версии .NET можно скачать двоичные файлы для указанной архитектуры.

Не найденная требуемая платформа

Если требуемая платформа или совместимая версия не найдена, приложение не сможет запустить сообщение, аналогичное следующему:

Консоль
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]
Bash
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]
Bash
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]

Ошибка указывает имя, версию и архитектуру отсутствующих платформ и расположение, в котором он должен быть установлен. Чтобы запустить приложение, можно установить совместимую среду выполнения в указанном расположении .NET. Если приложение предназначено для более низкой версии, чем для установленной, и вы хотите запустить ее в более поздней версии, можно также настроить поведение отката для приложения.

Установка совместимой среды выполнения

Сообщение об ошибке содержит ссылку для скачивания отсутствующих платформ. Чтобы перейти на соответствующую страницу загрузки, вы можете перейти по этой ссылке.

Кроме того, можно скачать среду выполнения на странице загрузки .NET. Существует несколько скачиваний среды выполнения .NET.

В следующей таблице показаны платформы, содержащиеся в каждой среде выполнения.

Скачивание среды выполнения Включенные платформы
ASP.NET базовая среда выполнения Microsoft.NETCore.App
Microsoft.AspNetCore.App
Среда выполнения рабочего стола .NET Microsoft.NETCore.App
Microsoft.WindowsDesktop.App
Среда выполнения .NET Microsoft.NETCore.App
Скачивание среды выполнения Включенные платформы
ASP.NET базовая среда выполнения Microsoft.NETCore.App
Microsoft.AspNetCore.App
Среда выполнения .NET Microsoft.NETCore.App

Выберите скачивание среды выполнения, которая содержит недостающую платформу, а затем установите ее.

На странице загрузки требуемой версии .NET найдите загрузку среды выполнения, соответствующую архитектуре, указанной в сообщении об ошибке. Скорее всего, вы хотите скачать установщик.

Платформа .NET доступна через различные диспетчеры пакетов Linux. Дополнительные сведения см. в статье "Установка .NET в Linux ". (Предварительные версии .NET обычно недоступны через диспетчеры пакетов.)

Необходимо установить пакет среды выполнения .NET для соответствующей версии, например dotnet-runtime6 или dotnet-aspnet6.

Кроме того, на странице загрузки для требуемой версии .NET можно скачать двоичные файлы для указанной архитектуры.

В большинстве случаев, когда приложение, которое не удалось запустить, использует такую установку, расположение .NET в сообщении об ошибке указывает:

%ProgramFiles%\dotnet

/usr/share/dotnet/

/usr/local/share/dotnet/

Другие варианты

Существуют другие варианты установки и обходного решения.

Запуск скрипта dotnet-install

Скачайте скрипт dotnet-install для операционной системы. Запустите скрипт с параметрами на основе сведений в сообщении об ошибке. На странице справки по скрипту dotnet-install отображаются все доступные параметры.

Запустите PowerShell и выполните следующую команду:

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

Например, сообщение об ошибке в предыдущем разделе будет соответствовать следующему:

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

Если возникает ошибка, указывающая, что запущенные скрипты отключены, может потребоваться задать политику выполнения, чтобы разрешить выполнение скрипта:

PowerShell
Set-ExecutionPolicy Bypass -Scope Process

Дополнительные сведения об установке с помощью скрипта см. в статье "Установка с помощью автоматизации PowerShell".

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

Например, сообщение об ошибке в предыдущем разделе будет соответствовать следующему:

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

Дополнительные сведения об установке с помощью скрипта см. в разделе "Установка скрипта".

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

Например, сообщение об ошибке в предыдущем разделе будет соответствовать следующему:

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

Дополнительные сведения об установке с помощью скрипта см. в статье "Установка с помощью автоматизации bash".

Скачивание двоичных файлов

Двоичный архив .NET можно скачать на странице скачивания. В столбце двоичных файлов загрузки среды выполнения скачайте двоичный выпуск, соответствующий требуемой архитектуре. Извлеките скачанный архив в расположение .NET, указанное в сообщении об ошибке.

Дополнительные сведения об установке вручную см. в разделе "Установка .NET" в Windows

Дополнительные сведения об установке вручную см. в разделе "Установка .NET" в Linux

Дополнительные сведения об установке вручную см. в разделе "Установка .NET в macOS"

Настройка поведения отката

Если у вас уже установлена более поздняя версия требуемой платформы, вы можете запустить приложение в этой более поздней версии, настроив его поведение наката.

При запуске приложения можно указать --roll-forward параметр командной строки или задать DOTNET_ROLL_FORWARD переменную среды. По умолчанию приложению требуется платформа, которая соответствует той же основной версии, что и для приложения, но может использовать более высокую дополнительную или исправленную версию. Однако разработчики приложений могут указать другое поведение. Дополнительные сведения см. в разделе "Переадресация приложений, зависящих от платформы".

Примечание

Так как этот параметр позволяет приложению работать в другой версии платформы, отличной от версии, для которой она была разработана, это может привести к непреднамеренное поведение из-за изменений между версиями платформы.

Критические изменения

Многоуровневый поиск отключен для .NET 7 и более поздних версий

В Windows до .NET 7 приложение может искать платформы в нескольких расположениях установки.

  1. Подкаталоги относительно:

    • dotnet исполняемый файл при запуске приложения через dotnet.
    • DOTNET_ROOT переменная среды (если задана) при запуске приложения через исполняемый файл (apphost).
  2. Глобально зарегистрировано расположение установки (если задано) в HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\<arch>\InstallLocation.

  3. Расположение %ProgramFiles%\dotnet установки по умолчанию (или %ProgramFiles(x86)%\dotnet для 32-разрядных процессов в 64-разрядной версии Windows).

Это многоуровневое поведение подстановки было включено по умолчанию, но может быть отключено, задав переменную DOTNET_MULTILEVEL_LOOKUP=0среды.

Для приложений, предназначенных для .NET 7 и более поздних версий, многоуровневый поиск полностью отключен, а поиск выполняется только в одном расположении — первом расположении, где найдена установка .NET. При выполнении dotnetприложения платформы выполняются только в подкаталогах относительно dotnet. Когда приложение выполняется через исполняемый файл (apphost), платформы ищутся только в первых из ранее перечисленных расположений, где найден .NET.

Дополнительные сведения см. в разделе "Поиск на нескольких уровнях" отключен.

См. также