Partager via


Résoudre les échecs de lancement d’applications

Cet article décrit quelques-unes des raisons courantes des échecs de lancement d’applications et les solutions possibles. Il concerne les applications dépendantes du framework, qui s’appuient sur une installation .NET sur votre ordinateur.

Si vous connaissez déjà la version de .NET dont vous avez besoin, vous pouvez la télécharger dans la page des téléchargements .NET.

Installation .NET introuvable

Si une installation .NET est introuvable, l’application ne se lance pas et vous obtenez un message semblable au suivant :

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

Cela peut être dû à une confusion au niveau du packages.

Les installations globales sont inscrites à l’emplacement suivant : /etc/dotnet/install_location. Pour plus d’informations, consultez Emplacements d’installation.

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

Les installations globales sont inscrites à l’emplacement suivant : /etc/dotnet/install_location. Pour plus d’informations, consultez Emplacements d’installation.

Le message d’erreur inclut un lien pour télécharger .NET. Vous pouvez suivre ce lien pour accéder à la page de téléchargement appropriée. Vous pouvez également choisir la version de .NET (spécifiée par Host version) dans la page des téléchargements .NET.

Dans la page de téléchargement de la version requise de .NET, recherchez le téléchargement du runtime .NET qui correspond à l’architecture indiquée dans le message d’erreur. Vous pouvez ensuite l’installer en téléchargeant et en exécutant un programme d’installation.

Divers gestionnaires de packages Linux proposent .NET. Pour plus d’informations, consultez Installer .NET sur Linux. (Les préversions de .NET ne sont généralement pas disponibles dans les gestionnaires de packages.)

Vous devez installer le package Runtime .NET pour la version appropriée, par exemple dotnet-runtime6.

Vous pouvez également télécharger les binaires de l’architecture spécifiée dans la page de téléchargement de la version de .NET requise.

Framework requis introuvable

Si un framework requis ou une version compatible est introuvable, l’application se lance pas et vous obtenez un message semblable au suivant :

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]

L’erreur indique le nom, la version et l’architecture du framework manquant ainsi que l’emplacement dans lequel il est censé être installé. Pour exécuter l’application, vous pouvez installer un runtime compatible à l’emplacement .NET spécifié. Si l’application cible une version inférieure à celle que vous avez installée et que vous souhaitez l’exécuter sur une version supérieure, vous pouvez également configurer le comportement de restauration par progression pour l’application.

Installer un runtime compatible

Le message d’erreur inclut un lien pour télécharger le framework manquant. Vous pouvez suivre ce lien pour accéder à la page de téléchargement appropriée.

Vous pouvez également télécharger un runtime à partir de la page de téléchargements .NET. Il existe plusieurs téléchargements du runtime .NET.

Le tableau suivant présente les frameworks que chaque runtime contient.

Téléchargement de runtime Frameworks inclus
Runtime ASP.NET Core Microsoft.NETCore.App
Microsoft.AspNetCore.App
Runtime .NET Desktop Microsoft.NETCore.App
Microsoft.WindowsDesktop.App
Runtime .NET Microsoft.NETCore.App
Téléchargement de runtime Frameworks inclus
Runtime ASP.NET Core Microsoft.NETCore.App
Microsoft.AspNetCore.App
Runtime .NET Microsoft.NETCore.App

Sélectionnez un téléchargement de runtime qui contient le framework manquant, puis installez-le.

Dans la page de téléchargement de la version requise de .NET, recherchez le téléchargement du runtime qui correspond à l’architecture indiquée dans le message d’erreur. Vous souhaiterez probablement télécharger un programme d’installation.

Plusieurs gestionnaires de packages Linux proposent .NET. Pour plus d’informations, consultez Installer .NET sur Linux. (Les préversions de .NET ne sont généralement pas disponibles dans les gestionnaires de packages.)

Vous devez installer le package du runtime .NET pour la version appropriée, par exemple dotnet-runtime6 ou dotnet-aspnet6.

Vous pouvez également télécharger les binaires de l’architecture spécifiée dans la page de téléchargement de la version de .NET requise.

Dans la plupart des cas, quand l’application dont le lancement a échoué utilise une telle installation, l’emplacement .NET dans le message d’erreur pointe vers :

%ProgramFiles%\dotnet

/usr/share/dotnet/

/usr/local/share/dotnet/

Autres options

Voici d’autres options d’installation et de contournement à considérer.

Exécuter le script dotnet-install

Téléchargez le script dotnet-install pour votre système d’exploitation. Exécutez le script avec des options basées sur les informations contenues dans le message d’erreur. La page de référence du script dotnet-install présente toutes les options disponibles.

Lancez PowerShell et exécutez :

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

Par exemple, le message d’erreur de la section précédente correspond à ceci :

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

Si vous rencontrez une erreur indiquant que l’exécution de scripts est désactivée, vous devrez peut-être définir la stratégie d’exécution pour autoriser l’exécution du script :

Set-ExecutionPolicy Bypass -Scope Process

Pour plus d’informations sur l’installation avec le script, consultez Installer avec l’automatisation PowerShell.

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

Par exemple, le message d’erreur de la section précédente correspond à ceci :

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

Pour plus d’informations sur l’installation avec le script, consultez Installer avec l’automatisation PowerShell.

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

Par exemple, le message d’erreur de la section précédente correspond à ceci :

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

Pour plus d’informations sur l’installation avec le script, consultez Installer avec l’automatisation bash.

Télécharger des binaires

Vous pouvez télécharger une archive binaire de .NET à partir de la page de téléchargement. Dans la colonne Binaires du téléchargement du runtime, téléchargez la version des binaires correspondant à l’architecture requise. Extrayez l’archive téléchargée à l’emplacement .NET spécifié dans le message d’erreur.

Pour obtenir plus d’informations sur l’installation manuelle, consulter Installer .NET sur Windows

Pour obtenir plus d’informations sur l’installation manuelle, consulter Installer .NET sur Linux

Pour obtenir plus d’informations sur l’installation manuelle, consulter Installer .NET sur macOS

Configurer le comportement de la restauration par progression

Si vous avez déjà installé une version supérieure du framework requis, vous pouvez exécuter l’application sur cette version en configurant son comportement de restauration par progression.

Lors de l’exécution de l’application, vous pouvez spécifier l’option de ligne de commande --roll-forward ou définir la variable d’environnement DOTNET_ROLL_FORWARD. Par défaut, une application nécessite un framework qui correspond à la même version principale que celle ciblée par l’application, mais elle peut utiliser une version mineure ou corrective supérieure. Toutefois, les développeurs d’applications ont peut-être spécifié un comportement différent. Pour plus d’informations, consultez Restauration par progression des applications dépendantes du framework.

Notes

Cette option permettant à l’application de s’exécuter sur une version de framework différente de celle pour laquelle elle a été conçue, elle peut entraîner un comportement inattendu en raison des modifications qui existent entre chaque version d’un framework.

Changements cassants

Recherche multiniveau désactivée pour .NET 7 et ultérieur

Sur Windows, avant .NET 7, l’application pouvait rechercher des frameworks dans plusieurs emplacements d’installation.

  1. Sous-répertoires relatifs à :

    • l’exécutable dotnet lors de l’exécution de l’application via dotnet ;
    • la variable d’environnement DOTNET_ROOT (si définie) lors de l’exécution de l’application via son exécutable (apphost).
  2. Emplacement d’installation inscrit globalement (si défini) dans HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\<arch>\InstallLocation.

  3. Emplacement d’installation par défaut de %ProgramFiles%\dotnet (ou %ProgramFiles(x86)%\dotnet pour les processus 32 bits sur Windows 64 bits).

Ce comportement de recherche multiniveau était activé par défaut, mais il était possible de le désactiver en définissant la variable d’environnement DOTNET_MULTILEVEL_LOOKUP=0.

Pour les applications ciblant .NET 7 et ultérieur, la recherche multiniveau est complètement désactivée et un seul emplacement fait l’objet d’une recherche, à savoir le premier emplacement où une installation .NET est trouvée. Quand une application est exécutée via dotnet, la recherche de frameworks n’a lieu que dans les sous-répertoires relatifs à dotnet. Quand une application est exécutée via son exécutable (apphost), la recherche de frameworks n’a lieu que dans le premier des emplacements listés précédemment où .NET est trouvé.

Pour plus d’informations, consultez La recherche à plusieurs niveaux est désactivée.

Voir aussi