Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lorsque vous lancez une application via son apphost, Environment.GetCommandLineArgs() conserve maintenant le nom d’appel, y compris un chemin d’accès relatif ou un nom de lien symbolique. Le comportement de dotnet <application.dll> est inchangé.
Version introduite
.NET 11 Preview 7
Comportement antérieur
Auparavant, lorsque vous lanciez une application via son apphost, Environment.GetCommandLineArgs()[0] renvoyait le chemin d’assembly managé ou le chemin exécutable résolu, plutôt que le nom d’appel.
Nouveau comportement
À compter de .NET 11, lorsque vous lancez une application via son apphost, Environment.GetCommandLineArgs()[0] conserve le nom d’appel, y compris les chemins d’accès relatifs et les noms de liens symboliques. Par exemple, si special_myapp est un lien symbolique vers myapp, et que vous exécutez ./special_myapp, la valeur est ./special_myapp.
Lorsque vous lancez une application avec dotnet <application.dll>, le comportement n’est pas modifié.
Type de changement avec rupture de compatibilité
Ce changement est un changement de comportement.
Raison du changement
Afin d’aligner .NET sur le comportement des processus natifs, le runtime conserve désormais la valeur fournie au lancement via argv[0]. Ce comportement permet également à une application de distinguer quel nom de lien symbolique l’a lancée.
Action recommandée
Pour obtenir le chemin de l’exécutable, utilisez Environment.ProcessPath. Pour obtenir l’emplacement de l’assembly d’entrée managé, utilisez Assembly.GetEntryAssembly()?.Location (voir Assembly.GetEntryAssembly() et Assembly.Location). L’emplacement est une chaîne vide pour les assemblys groupés dans les applications à fichier unique. Continuez à utiliser Environment.GetCommandLineArgs()[0] lorsque vous avez besoin du nom d’invocation.