2009-05-19 18 views
8

Chcę uzyskać ścieżkę mojej aplikacji, takich jak: „\\ \\ MojaApl ProgramFiles”, próbuję użyć następującego kodu:Jak uzyskać ścieżkę aplikacji (bez aplikacji.exe)?


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

ale zwraca ścieżkę, która ma „\\ MojaAplik.exe " na końcu.

Próbowałem również:


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

Ale to wyrzuca „NotSupportedException”.

Czy istnieje sposób, aby uzyskać ścieżkę bez. Exe na końcu?

Odpowiedz

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

Application.StartupPath powinien zrobić to za Ciebie.

Aktualizacja: od ciebie edytor Widzę, że korzystasz z Compact Framework. Aplikacja Application.StartupPath nie będzie działać. Jest to konstrukcja, która Zwykle używam wtedy:

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

Przepraszamy za zamieszanie i dzięki za szybką odpowiedź; P –

1

Można użyć Path.GetDirectoryName (String) metoda przechodzi swój pierwotny ciąg ścieżki jako parametr dla tego produktu. Jaki problem próbujesz rozwiązać? Może naprawdę potrzebujesz czegoś takiego jak katalog roboczy?

+0

Dziękuję i danbyStrom, Twój przewodnik działa dobrze. Próbuję odtworzyć dźwięk przy użyciu pliku wav w katalogu mojej aplikacji, więc potrzebuję jego katalogu (bez aplikacji.exe). –

0
Path.GetFileNameWithoutExtension(path); 
+0

Dzięki, ale to zwróci nazwę pliku "myApp", tak jak wspomniano o nazwie metody. Dzięki za przypomnienie o tej metodzie. –

+0

Shucks! Tak myślałem, że chcesz. :) –

0

Co powiesz na użycie obiektu FileInfo w celu wyodrębnienia nazwy katalogu?

w VB.NET:

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

"Lokalizacja" nie występuje w C# app, ale wszystko w() można zastąpić przez ścieżkę do pliku, którą napisałem i działa. Dzięki. –

0

Jeśli jej exe jak w przypadku użycia:

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

bardziej proste niż reszta:

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

ummm ... to proste, ale nie znaleziono "lokalizacji" (przynajmniej w aplikacji Windows Mobile). –

Powiązane problemy