Я ответил на ваш другой очень похожий вопрос , но вот конкретный ответ на этот.
Забудьте о WorkingDirectory, в нем не указывается расположение нового исполняемого файла процесса, если вы не установите UseShellExecute = true
. Вот документация .
Вы должны использовать относительный путь к корню проекта в FileName.Например: process.StartInfo.FileName="bin/wrapper.sh";
Я не знаю, как выполнить файл и установить рабочий каталог этого процесса в Linux из ядра dotnet и C #.
Что вы можете сделать, это создать скрипт-обертку для выполнения вашего файла в lib.
В нашем корне проекта у нас есть два файла.Убедитесь, что оба имеют chmod +x
.
bin/wrapper.sh
- этот файл будет выполнять lib / a.out lib/a.out
- Hello, World!
bin / wrapper.sh
#!/bin/bash
cd lib
pwd
./a.out
Program.cs
using System;
using System.Diagnostics;
namespace SO_Question_52599105
{
class Program
{
static void Main(string[] args)
{
Process process = new Process();
process.StartInfo.FileName="bin/wrapper.sh";
process.Start();
}
}
}
=== ВЫХОД ===
larntz@dido:/home/larntz/SO_Question_52599105$ ls
bin hello.c lib obj Program.cs SO_Question_52613775.csproj
larntz@dido:/home/larntz/SO_Question_52599105$ ls bin/
Debug wrapper.sh
larntz@dido:/home/larntz/SO_Question_52599105$ ls lib/
a.out
larntz@dido:/home/larntz/SO_Question_52599105$ dotnet run
/home/larntz/SO_Question_52599105/lib
Hello, World!