В этой статье описываются некоторые распространенные причины и возможные решения для сбоев запуска приложений. Он относится к приложениям, зависящим от платформы, которые полагаются на установку .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.
Если требуемая платформа или совместимая версия не найдена, приложение не сможет запустить сообщение, аналогичное следующему:
Консоль
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.
В следующей таблице показаны платформы, содержащиеся в каждой среде выполнения.
Платформа .NET доступна через различные диспетчеры пакетов Linux. Дополнительные сведения см. в статье "Установка .NET в Linux ". (Предварительные версии .NET обычно недоступны через диспетчеры пакетов.)
Необходимо установить пакет среды выполнения .NET для соответствующей версии, например dotnet-runtime6 или dotnet-aspnet6.
В большинстве случаев, когда приложение, которое не удалось запустить, использует такую установку, расположение .NET в сообщении об ошибке указывает:
%ProgramFiles%\dotnet
/usr/share/dotnet/
/usr/local/share/dotnet/
Другие варианты
Существуют другие варианты установки и обходного решения.
Запуск скрипта dotnet-install
Скачайте скрипт dotnet-install для операционной системы. Запустите скрипт с параметрами на основе сведений в сообщении об ошибке. На странице справки по скрипту dotnet-install отображаются все доступные параметры.
Запустите PowerShell и выполните следующую команду:
Если возникает ошибка, указывающая, что запущенные скрипты отключены, может потребоваться задать политику выполнения, чтобы разрешить выполнение скрипта:
Двоичный архив .NET можно скачать на странице скачивания. В столбце двоичных файлов загрузки среды выполнения скачайте двоичный выпуск, соответствующий требуемой архитектуре. Извлеките скачанный архив в расположение .NET, указанное в сообщении об ошибке.
Если у вас уже установлена более поздняя версия требуемой платформы, вы можете запустить приложение в этой более поздней версии, настроив его поведение наката.
При запуске приложения можно указать --roll-forward параметр командной строки или задать DOTNET_ROLL_FORWARD переменную среды.
По умолчанию приложению требуется платформа, которая соответствует той же основной версии, что и для приложения, но может использовать более высокую дополнительную или исправленную версию. Однако разработчики приложений могут указать другое поведение. Дополнительные сведения см. в разделе "Переадресация приложений, зависящих от платформы".
Примечание
Так как этот параметр позволяет приложению работать в другой версии платформы, отличной от версии, для которой она была разработана, это может привести к непреднамеренное поведение из-за изменений между версиями платформы.
Критические изменения
Многоуровневый поиск отключен для .NET 7 и более поздних версий
В Windows до .NET 7 приложение может искать платформы в нескольких расположениях установки.
Подкаталоги относительно:
dotnet исполняемый файл при запуске приложения через dotnet.
DOTNET_ROOT переменная среды (если задана) при запуске приложения через исполняемый файл (apphost).
Глобально зарегистрировано расположение установки (если задано) в HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\<arch>\InstallLocation.
Расположение %ProgramFiles%\dotnet установки по умолчанию (или %ProgramFiles(x86)%\dotnet для 32-разрядных процессов в 64-разрядной версии Windows).
Это многоуровневое поведение подстановки было включено по умолчанию, но может быть отключено, задав переменную DOTNET_MULTILEVEL_LOOKUP=0среды.
Для приложений, предназначенных для .NET 7 и более поздних версий, многоуровневый поиск полностью отключен, а поиск выполняется только в одном расположении — первом расположении, где найдена установка .NET. При выполнении dotnetприложения платформы выполняются только в подкаталогах относительно dotnet. Когда приложение выполняется через исполняемый файл (apphost), платформы ищутся только в первых из ранее перечисленных расположений, где найден .NET.
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.
Узнайте, где скачать и установить .NET в Windows, Linux и macOS. Узнайте о зависимостях, необходимых для разработки, развертывания и запуска приложений .NET.
Узнайте, как .NET автоматически находит и выбирает версии среды выполнения для программы. Кроме того, в этой статье описано, как принудительно применить определенную версию.