web-dev-qa-db-fra.com

Répertoire exécutable à partir duquel l'application est en cours d'exécution?

Je dois obtenir le chemin (pas l'exécutable) depuis lequel mon application s'exécute:

System.AppDomain.CurrentDomain.BaseDirectory()

Lorsque j'exécute l'instruction ci-dessus avec & "/images/image.jpg" sur mon ordinateur local, cela fonctionne correctement, mais lorsque j'installe l'application sur un autre ordinateur, il ne peut pas trouver le fichier et contient beaucoup d'informations supplémentaires sur le chemin. 

J'ai juste besoin du répertoire où l'application est en cours d'exécution. Je code dans VB.NET avec Visual Studio 2008.

Merci!

16
JPJedi
Dim strPath As String = System.IO.Path.GetDirectoryName( _
    System.Reflection.Assembly.GetExecutingAssembly().CodeBase)

Tiré de COMMENT FAIRE: Déterminer le chemin d'accès de l'application en cours d'exécution (MSDN)

25
Justin Niessner

Ceci est le premier post sur google, j'ai donc pensé poster différentes manières disponibles et leur comparaison. Malheureusement, je n'arrive pas à comprendre comment créer un tableau ici, c'est donc une image. Le code pour chacun d'eux est sous l'image en utilisant des noms complets. 

 enter image description here

My.Application.Info.DirectoryPath

Environment.CurrentDirectory

System.Windows.Forms.Application.StartupPath

AppDomain.CurrentDomain.BaseDirectory

System.Reflection.Assembly.GetExecutingAssembly.Location

System.Reflection.Assembly.GetExecutingAssembly.CodeBase

New System.UriBuilder(System.Reflection.Assembly.GetExecutingAssembly.CodeBase)

Path.GetDirectoryName(Uri.UnescapeDataString((New System.UriBuilder(System.Reflection.Assembly.GetExecutingAssembly.CodeBase).Path)))

Uri.UnescapeDataString((New System.UriBuilder(System.Reflection.Assembly.GetExecutingAssembly.CodeBase).Path))
26
Derek Ziemba
Dim P As String = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase)
P = New Uri(P).LocalPath
12
MrCalvin

J'avais besoin de le savoir et je suis venu ici avant de me souvenir de la classe Environnement.

Si quelqu'un d'autre avait ce problème, utilisez simplement ceci: Environment.CurrentDirectory.

Exemple: 

Dim dataDirectory As String = String.Format("{0}\Data\", Environment.CurrentDirectory)

Lorsqu'il est exécuté à partir de Visual Studio en mode débogage

C:\Development\solution folder\application folder\bin\debug

C’est le comportement exact dont j’avais besoin, et il est assez simple et direct.

9
Jason Alls

Vous pouvez utiliser la propriété statique StartupPath de la classe Application.

5
Mike Dinescu

Vous pouvez écrire ce qui suit:

Path.Combine(Path.GetParentDirectory(GetType(MyClass).Assembly.Location), "Images\image.jpg")
0
SLaks