2012-01-20 13 views
5

Spośród następujących metod uzyskania katalogu roboczego zespołu wykonującego, czy istnieje zalecenie, który z nich jest uważany za najlepsze rozwiązanie? Słyszałem od moich programistów, że metoda 1 kończy się niepowodzeniem w przypadku Windows 7 SP1 64-bit czasami, chyba że uruchomiono z podwyższonymi uprawnieniami (Uruchom jako Administrator). Ale metoda 2 działa cały czas. Czy jest jakiś powód, że ten pierwszy czasami zawodził?Environment.CurrentDirectory vs System.Reflection

Metoda 1:

System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly.Location()) 

Metoda 2:

Environment.CurrentDirectory 

Odpowiedz

6

Environment.CurrentDirectory jest droga, ponieważ jest tam coraz katalog roboczy. Korzystanie z odbicia jest prawdopodobnie również wolniejsze.

ALE bądź ostrożny: te dwie metody NIE są takie same: Metoda A zwraca zawsze katalog, w którym jest przechowywany zestaw, gdzie jako Environment.CurrentDirectory można podać bieżący katalog roboczy, który może się zmienić w trakcie okresu użytkowania aplikacji, jako Environment.CurrentDirectory. służy do ustawienia katalogu roboczego, a inna metoda może również go zmienić (np. okno dialogowe otwierania/zapisywania plików).

+0

Dzięki! To całkiem dobra ostrożność (po prostu głosowałem za tobą). Czy istnieje powód, dla którego nie "czasami" nie działa na Win 7 64-bit Sp1? –

+0

@RomulusParthus: Przykro mi, nie mogę ci pomóc w tej sprawie - może to miejsce, w którym zgromadzono zgromadzenie, ale to tylko dzikie domysły ... – ChrFin

+0

dzięki. Bez obaw. –