2012-01-20 2 views
5

Из приведенных ниже способов получения рабочего каталога исполняющей сборки есть рекомендация, по которой считается лучшей практикой? Я слышал от моих разработчиков, что метод 1 терпит неудачу в Windows 7 SP1 64-разрядный иногда, если только не выполняется с повышенными разрешениями (Запуск от имени администратора). Но метод 2 работает все время. Есть ли причина, по которой бывшая иногда терпит неудачу?Environment.CurrentDirectory vs System.Reflection

Метод 1:

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

Метод 2:

Environment.CurrentDirectory 

ответ

6

Environment.CurrentDirectory это путь, как она есть для получения рабочего каталога. Использование отражения также возможно медленнее.

Но будьте осторожны: эти два метода не являются одинаковыми: метод A возвращает всегда каталог, в котором хранится сборка, где Environment.CurrentDirectory дает вам текущий рабочий каталог, который может меняться в течение срока службы приложения, так как Environment.CurrentDirectory также может используется для установки рабочего каталога, а другой метод также может его изменить (например, диалог открытия/сохранения файлов).

+0

Спасибо! Это довольно хорошая осторожность (я только что проголосовал за вас). Есть ли причина, по которой она «иногда не срабатывает» на Win 7 64-bit Sp1? –

+0

@RomulusParthus: Извините, я не могу помочь вам в этом - maybee - это место, где хранится сборка, но это только дикая догадка ... – ChrFin

+0

спасибо. Не беспокойся. –

Смежные вопросы