У меня проблемы с WorkingDirectory
, и он неправильно устанавливает желаемый путь.Я написал простую тестовую программу Hello World, a.out
, чтобы попробовать WorkingDirectory
.И иерархия каталогов такая:
/home/cli2/test
/bin/Debug/netcoreapp2.1/subdir/
a.out
/obj
Program.cs
test.csproj
У меня есть следующие настройки для класса Process
process.StartInfo.FileName = "a.out"
process.StartInfo.UseShellExecute = false;
process.StartInfo.WorkingDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "/subdir/";
Когда я выполняю dotnet run
, я получаю ошибку:
Unhandled Exception: System.ComponentModel.Win32Exception: No such file or directory
Проблема, которая меня смущает, заключается в том, что если я переместу a.out
в верхний каталог, такой что:
/home/cli2/project
/bin/Debug/netcoreapp2.1/subdir/
/obj
Program.cs
test.csproj
a.out
При тех же настройках StartInfo
, process.start()
выполнитпривет программа без ошибокКроме того, если я изменю FileName = "ls"
с исходной иерархией подкаталогов, он напечатает a.out
.В этом случае WorkingDirectory
ведет себя как ожидалось.Итак, я понимаю это несоответствие и почему я не могу позвонить a.out
в другой каталог.
Кроме того, я попробовал как абсолютный, так и относительный путь для WorkingDirectory
, ни один не работает, когда я звоню a.out
.