2009-05-19 13 views
8

Je veux obtenir le chemin de mon application comme: « \\ ProgramFiles \\ myApp », je tente d'utiliser le code suivant:Comment obtenir le chemin de l'application (sans app.exe)?


string path = System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase; 

Mais il retourne un chemin qui a « \\ myapp.exe " à la fin.

J'ai essayé aussi:


string path = System.IO.Directory.GetCurrentDirectory(); 

Mais il jette un « NotSupportedException ».

Y at-il un moyen d'obtenir un chemin sans .exe à la fin?

Répondre

9
path = System.IO.Path.GetDirectoryName(path); 
18

Application.StartupPath devrait le faire pour vous. Mise à jour: de votre modification, je vois que vous utilisez Compact Framework. Ensuite, Application.StartupPath ne fonctionnera pas. C'est la construction que je l'habitude d'utiliser alors:

private static string GetApplicationPath() 
{ 
    return System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); 
} 
+0

Désolé pour la confusion et merci pour votre réponse rapide; P –

1

Vous pouvez utiliser la méthode Path.GetDirectoryName (chaîne) en passant votre chaîne de chemin d'origine en tant que paramètre pour cela. Quel problème essayez-vous de résoudre? Peut-être que vous avez vraiment besoin de quelque chose comme le répertoire de travail? Qu'en est-il de l'utilisation d'un objet FileInfo pour extraire le nom de répertoire?

+0

Merci et danbyStrom, votre guide fonctionne bien. J'essaye de jouer le son en utilisant le fichier wav dans le répertoire de mon application, j'ai donc besoin de son répertoire (sans app.exe). –

0
Path.GetFileNameWithoutExtension(path); 
+0

Merci, mais cela retournera le nom du fichier "myApp" comme le nom de la méthode mentionne. Merci pour le guide sur cette méthode de toute façon. –

+0

Shucks! C'est ce que je pensais que tu voulais. :) –

0

En Vb.Net:

fi = New FileInfo(System.Reflection.Assembly.GetExecutingAssembly.Location) 
path = fi.DirectoryName 
+0

"Location" n'est pas trouvé dans l'application C#, mais tout dans() peut être remplacé par le chemin de fichier que j'ai écrit et cela fonctionne. Merci. –

0

Si son un exe comme dans votre cas, utilisez:

// Summary: 
    //  Gets the path for the executable file that started the 
    //  application, not including the executable name.  
    Application.StartupPath 
3

Plus simple que le reste:

using System.IO; 
using System.Reflection; 
... 
var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) 
+0

ummm ... c'est simple mais "Location" n'est pas trouvé (au moins dans l'application Windows Mobile). –