2009-05-19 16 views
8

Voglio ottenere il percorso della mia app come: "\\ Programmi \\ myApp", cerco di utilizzare il seguente codice:Come ottenere il percorso dell'app (senza app.exe)?


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

ma restituisce un percorso che ha "\\ myapp.exe " alla fine.

Ho anche provato:


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

Ma getta un “NotSupportedException”.

C'è un modo per ottenere un percorso senza .exe alla fine?

risposta

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

Application.StartupPath dovrebbe farlo per voi.

Aggiornamento: da voi modifica vedo che si sta lavorando su Compact Framework. Quindi Application.StartupPath non funzionerà. Questo è il costrutto che io di solito uso allora:

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

Ci scusiamo per la confusione e grazie per la tua risposta rapida; P –

1

È possibile utilizzare il metodo Path.GetDirectoryName (string) passando la stringa di percorso originale come parametro per questa. Che problema stai cercando di risolvere? Forse hai davvero bisogno di qualcosa come la directory di lavoro?

+0

Grazie a danbyStrom, la tua guida funziona bene. Sto cercando di riprodurre suoni usando il file wav nella directory della mia app, quindi ho bisogno della sua directory (senza app.exe). –

0
Path.GetFileNameWithoutExtension(path); 
+0

Grazie, ma questo restituirà il nome del file "myApp" proprio come il nome del metodo cita. Grazie comunque per la guida su questo metodo. –

+0

Shucks! Questo è quello che pensavo volessi. :) –

0

Che dire dell'utilizzo di un oggetto FileInfo per estrarre il nome della directory?

In Vb.Net:

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

"Posizione" non si trova nell'app C#, ma tutto in() può essere sostituito dal percorso file che ho scritto e funziona. Grazie. –

0

Se la sua un exe come nel vostro caso d'uso:

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

più semplice rispetto al resto:

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

ummm ... è semplice ma "Posizione" non è stato trovato (almeno nell'app Windows Mobile). –

Problemi correlati