2011-10-17 14 views
5

jeśli chcę dostać wykonywalny lokalizację Jaka jest różnica między tym poleceniem:różnią się między wykonywalnego lokalizacji

Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 

Directory.GetCurrentDirectory(); 

System.Environment.CurrentDirectory; 

czy jest jakiś inny? wskazuje na inną lokalizację?

Odpowiedz

5

Assembly.GetExecutingAssembly(). Lokalizacja

Pobiera lokalizację zespołu wykonującego. W aplikacji ASP.NET może się to różnić w zależności od zestawów kopiowania w tle w folderach systemowych. Lokalizacja obecnie wykonywanego zespołu może być inna niż lokalizacja procesu hostingu.

Directory.GetCurrentDirectory();

Pobiera bieżący katalog roboczy procesu hostingu. W większości przypadków będzie to katalog, w którym znajduje się plik wykonywalny, ale ten katalog roboczy może być modyfikowany programowo przy użyciu metody SetCurrentDirectory.

System.Environment.CurrentDirectory;

Katalog, w którym rozpoczął się proces hostingu.


W aplikacji komputerowej, w której wszystko znajduje się w tym samym folderze, 3 może zwrócić to samo.

+1

„prawdopodobnie zwracają samo "jest złe, nigdy nie można na tym polegać. Katalog roboczy ("aktualny katalog") można ustawić we właściwościach skrótu lub można uruchomić program z innego katalogu z wiersza poleceń. – matejcik

+0

@matejcik, dlatego powiedziałem "nie", a nie "zawsze". Powinienem jednak użyć innego słowa: "może". –

2
  1. Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) zwraca folder określonego zestawu.

  2. Directory.GetCurrentDirectory()dostaje system prąd katalogów bez backslashem, zgodnie z MSDN. Directory.GetCurrentDirectory()

  3. System.Environment.CurrentDirectorydostaje lub zestawy obecny system katalog.

2

Katalog bieżący to katalog roboczy, niekoniecznie taki sam jak katalog zawierający zestaw.

Na przykład, jeśli jesteś w linii komend w głównym dysku C: \, a nie polecenie „SomeFolder \ MyProgram.exe” bieżący katalog nadal będzie C: \

Powiązane problemy