отличается между исполняемым местоположением - PullRequest
5 голосов
/ 17 октября 2011

если я хочу получить исполняемый файл, в чем разница между этой командой:

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

Directory.GetCurrentDirectory();

System.Environment.CurrentDirectory;

есть ли другие?он указывает на другое местоположение?

Ответы [ 3 ]

5 голосов
/ 17 октября 2011

Assembly.GetExecutingAssembly (). Location

Получает местоположение исполняемой сборки.В приложении ASP.NET это может отличаться из-за теневого копирования сборок в системных папках.Расположение текущей выполняемой сборки может отличаться от местоположения процесса размещения.

Directory.GetCurrentDirectory ();

Получает текущий рабочий каталог хоста.процесс.В большинстве случаев это будет каталог, в котором находится исполняемый файл, но этот рабочий каталог может быть изменен программно с использованием метода SetCurrentDirectory .

System.Environment.CurrentDirectory;

Каталог, из которого был запущен процесс хостинга.


В настольном приложении, в котором все находится в одной папке, 3 может возвращать то же самое.

2 голосов
/ 17 октября 2011

Текущий каталог - это рабочий каталог, он не обязательно совпадает с каталогом, содержащим вашу сборку.

Например, если вы были в командной строке, в корневом каталоге диска C: \ и выполнили команду «SomeFolder \ MyProgram.exe», текущим каталогом будет C: \

2 голосов
/ 17 октября 2011
  1. Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) возвращает папку указанной сборки.

  2. Directory.GetCurrentDirectory() получает системный ток каталог без обратной косой черты , в соответствии с MSDN. Directory.GetCurrentDirectory ()

  3. System.Environment.CurrentDirectory получает или устанавливает системный текущий каталог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...