L'objet processus est représenté par la classe System.Diagnostics.Process dans .NET. Le nom de fichier de l'exe en cours d'exécution peut être obtenu en appelant Process.GetCurrentProcess().MainModule.FileName. Mais cette méthode n'obtient que le nom du fichier. Si le répertoire de travail n'est pas changé pendant l'exécution du programme, vous pouvez appeler la méthode System.IO.Path pour obtenir le chemin absolu. Cependant, le répertoire actuel peut également être obtenu via Environment.CurrentDirectory, et de nombreux logiciels changeront de répertoire de travail lors de l'utilisation d'Open Dialog pour ouvrir un fichier, rendant ce mécanisme inefficace.
S'il s'agit d'une application Windows Forms, l'application actuelle est également représentée sous la forme d'un objet System.Windows.Forms.Application. Grâce à ses propriétés statiques Application.ExecutablePath et Application.StartupPath, le chemin et le chemin de démarrage du fichier exécutable peuvent être obtenus. .
Mais s'il n'est pas dans une application Windows ou dans une Bibliothèque, même si les propriétés de l'objet Application peuvent toujours être obtenues, il faut quand même ajouter une référence à l'Assembly System.Windows.Forms dans le projet, ce qui est très gênant . À ce stade, vous pouvez obtenir l'assembly en cours d'exécution via la méthode statique de l'assembly, GetCallingAssembly ou GetExecutingAssembly, puis obtenir l'emplacement de l'assembly via la classe Location de la classe Assembly.
Cependant, lors de l'utilisation de Assembly, vous pouvez rencontrer des problèmes d'autorisation. Dans le même temps, Assembly.GetCallingAssembly ou Assembly.GetExecutingAssembly peut ne pas obtenir l'emplacement du fichier .exe. L'assembly avec un nom fort ajouté au GAC n'a pas besoin de se trouver dans le même répertoire que le .exe lors de son exécution.
Lorsque le processus .NET démarre, un AppDomain sera créé et tous les Assembly seront chargés dans un certain AppDomain. L'attribut SetupInformation est fourni dans AppDomain, qui peut obtenir des informations au démarrage de AppDomain. .CurrentDomain.SetupInformation .ApplicationBase obtient le chemin où se trouve l'application actuelle.
Après avoir obtenu le répertoire requis via la méthode ci-dessus, vous pouvez appeler la méthode System.IO.Path pour obtenir le nom du fichier, le nom du répertoire, le chemin absolu, etc. Arrêtez d’analyser les chaînes de chemin et utilisez plutôt la classe System.IO.Path.
Lors du développement d'applications sous .NET, comprendre la relation entre Process/Application->AppDomain->Assembly est très utile pour implémenter une logique correcte.