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.
„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
@matejcik, dlatego powiedziałem "nie", a nie "zawsze". Powinienem jednak użyć innego słowa: "może". –