Я создал простое консольное приложение со следующим кодом:
Console.WriteLine(System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
Console.WriteLine(System.AppDomain.CurrentDomain.BaseDirectory);
Console.WriteLine(System.Environment.CurrentDirectory);
Console.WriteLine(System.IO.Directory.GetCurrentDirectory());
Console.WriteLine(Environment.CurrentDirectory);
Я скопировал полученный исполняемый файл в C:\temp2
. Затем я поместил ярлык на этот исполняемый файл C:\temp3
и запустил его (один раз из самого exe- файла и один из ярлыка). Это дало следующие результаты оба раза:
C:\temp2
C:\temp2\
C:\temp2
C:\temp2
C:\temp2
Хотя я уверен, что должна быть какая-то дурацкая причина, чтобы объяснить, почему есть пять различных методов, которые делают практически одну и ту же вещь, я, конечно, не знаю, что это такое. Тем не менее, может показаться, что в большинстве случаев вы свободны выбирать тот, который вам нравится.
ОБНОВЛЕНИЕ:
я изменил свойства ярлыка, изменив поле «Начать с:» на C:\temp3
. Это привело к следующему выводу:
C:\temp2
C:\temp2\
C:\temp3
C:\temp3
C:\temp3
... который демонстрирует, по крайней мере, некоторые различия между различными методами.