Environment.CurrentDirectory в C # .NET - PullRequest
       29

Environment.CurrentDirectory в C # .NET

7 голосов
/ 24 августа 2009

Свойство Environment.CurrentDirectory всегда возвращает путь к системному каталогу, а не к каталогу моего приложения. На компьютере моего коллеги он возвращает каталог приложения.

В чем проблема? Как я могу решить это?

У меня работает следующий код

ePCRSettings = XMLParser.XmlParser.Deserialize<PCRGeneratorSettings>(string.Format("{0}\\ePCRPDFSettings.xml", AppDomain.CurrentDomain.BaseDirectory));

AppDomain.CurrentDomain.BaseDirectory - Returns the directory E:\MyApplications\.

Следующий код не работает для меня

ePCRSettings = XMLParser.XmlParser.Deserialize<PCRGeneratorSettings>(string.Format("{0}\\ePCRPDFSettings.xml", Environment.CurrentDirectory));

Environment.CurrentDirectory - Returns c:\windows\system32.

Этот файл .dll может использоваться в приложениях VB 6 и ASP.NET

Ответы [ 4 ]

11 голосов
/ 14 октября 2009

установить текущий каталог

Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); //or set executing Assembly location path in param

Environment.CurrentDirectory //now returns your app path
5 голосов
/ 27 декабря 2011

Использование

System.IO.Path.GetDirectoryName (System.Reflection.Assembly.GetEntryAssembly () Местоположение.);

3 голосов
/ 24 августа 2009

Не следует использовать значение Environment.CurrentDirectory в качестве основы для поиска файлов, поскольку оно может изменяться и не всегда может находиться под вашим контролем. например Файл Сохранить как в другую папку может изменить значение «текущей папки». Как видите, это может привести к непредсказуемым результатам.

Используйте значение, которое вы можете контролировать лучше. например значение ResourcesFolderPath в файле конфигурации (xml?), которое обновляется при установке приложения.

1 голос
/ 24 августа 2009

Я подозреваю, что это может иметь какое-то отношение к текущему идентификатору пользователя, под которым выполняется приложение, например, если вы запускаете приложение в сеансе пользователя (например, отладка в VS), тогда это может вернуть ваш текущий каталог, но если вы работали с ним под IIS, возможно, по умолчанию это системная папка?

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