Path.Combine не работает / не может получить рабочий каталог - PullRequest
0 голосов
/ 04 февраля 2019

Я установил свой рабочий каталог в папку с именем «working» в моем решении (щелкнув правой кнопкой мыши решение-> отладка-> установить рабочий каталог).Я создал файл в этой папке с именем appSettings.xml.Я хочу получить путь к этому XML-файлу и поместить его в переменную, я пробовал следующий код, но он не работает, что я делаю не так?:

РЕДАКТИРОВАТЬ: проблема кажетсякак бы то ни было, моя рабочая папка ... bin \ debug, хотя я установил правильный путь в свойствах.Как мне установить его в другой каталог?

string settingsPath = Path.Combine(Directory.GetCurrentDirectory(), "appSettings.xml");

Ответы [ 3 ]

0 голосов
/ 04 февраля 2019

Проверьте каталог, так как предыдущий ответ должен сказать, существует ли каталог.Не знаю, скопировали ли вы и вставили имя файла в свой вопрос.В этом случае вы написали неправильное имя файла, так как оно написано с 3 x T, где вы упоминаете имя файла и 2 x T в вашем коде.Это может быть легко пропустить, подумайте, что все сделали это один или два раза.

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

if (File.Exists(Path.Combine(filedirectoryPathAsString, fileName))
0 голосов
/ 08 февраля 2019

Этот ответ для отредактированного вопроса.Вы можете изменить каталог вывода на Right click on project -> Properties -> Build -> Output -> Output path

Также посмотрите на это решение, чтобы увидеть разницу: https://stackoverflow.com/a/27322567/4731319

0 голосов
/ 04 февраля 2019

Прежде всего проверьте, существует Directory.GetCurrentDirectory() или нет

if(Directory.Exists(Directory.GetCurrentDirectory())
{
  //This will write CurrentDirectory path on console
   Console.WriteLine(Directory.GetCurrentDirectory()); 
  //If exist then check for Path.Combine()
}

Примечание. Текущий каталог отличается от исходного каталога, , который является тем, с которого начался процесс

Большую часть времени это каталог вашей папки bin

Вы можете установить CurrentDirectory, передав параметр вашей функции

Directory.SetCurrentDirectory(@"c:\program files\");
...