Je veux créer un programme qui convertit les fichiers. Je voudrais que l'utilisateur puisse placer le fichier exécutable dans n'importe quel répertoire, et lors de l'exécution de ce programme (double-cliquant sur le .exe), je veux que le programme traite tous les fichiers dans le dossier actuel où le fichier exe existe . Comment le programme peut-il déterminer le chemin dans lequel il s'exécute actuellement?
J'ai essayé System.Windows.Forms.Application.StartupPath
mais cela semble être la mauvaise façon.
Des idées?
GetEntryAssembly
etGetExecutingAssembly
ne surprend pas autant, est également évidente par le nom de la fonction. S'ils faisaient de même, pourquoi y aurait-il deux fonctions? :-)System.Reflection.Assembly.GetExecutingAssembly().Location
comme le test complet - si vous testez à partir de la fenêtre immédiateCela vous donnera un répertoire en cours d'exécution de votre application. Cela fonctionne même pour les applications Web. Ensuite, vous pouvez accéder à votre fichier.
la source
J'ai créé une application console simple avec le code suivant:
J'ai copié l'exécutable résultant vers
C:\temp2
. J'ai ensuite placé un raccourci vers cet exécutable dansC:\temp3
et l' ai exécuté (une fois depuis l'exe lui-même et une fois depuis le raccourci). Il a donné les résultats suivants les deux fois:Bien que je sois sûr qu'il doit y avoir une raison de cockamamie pour expliquer pourquoi il existe cinq méthodes différentes qui font pratiquement la même chose, je ne sais certainement pas ce que c'est. Néanmoins, il semblerait que dans la plupart des cas, vous êtes libre de choisir celui qui vous convient.
MISE À JOUR: J'ai modifié les propriétés du raccourci, en changeant le champ "Démarrer dans:" en
C:\temp3
. Cela a abouti à la sortie suivante:... qui démontre au moins certaines des distinctions entre les différentes méthodes.
la source
Essaye ça:
System.Environment.CurrentDirectory
la source
Environment.CurrentDirectory
peut être modifié de plusieurs façons ... (paramètres de coupure de tir, etc.)De
Path.GetDirectoryName
De
Application.ExecutablePath
la source
Utilisez ceci,
Vous pouvez également l'utiliser.
la source
pour l' utilisation de .NET CORE
System.AppContext.BaseDirectory
(en remplacement de
AppDomain.CurrentDomain.BaseDirectory
)la source
1.
2.
3.
la source
Environment.CurrentDirectory
peut être modifié de plusieurs façons ... (paramètres de coupure de tir, etc.)Utilisez
Application.StartupPath
pour le meilleur résultat imo.la source
Si vous voulez le chemin exe que vous pouvez utiliser
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
la source
Cela fonctionne mieux pour moi, en particulier lors de l'utilisation de la publication d'un seul fichier dotnet core.
Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName)
.la source