Запуск `mklink` в ProcessStartInfo
Я работаю над программой aC#, которая должна быть совместима с Windows и Linux (Mono).
Я пытаюсь создать символическую ссылку на обеих платформах, и я использую ProcessStartInfo, чтобы это работало. Я еще не пробовал это в Linux, но в Windows я использую следующий код
ProcessStartInfo process = new ProcessStartInfo();
process.CreateNoWindow = true;
process.UseShellExecute = false;
process.FileName = "mklink";
process.WindowStyle = ProcessWindowStyle.Hidden;
process.Arguments = "/D " + webFolder + "MyFolder" + webFolder + "MyFolder_" + version;
Process.Start(process);
Когда я запускаю приведенный выше код, я получаю
System.ComponentModel.Win32Exception: система не может найти указанный файл
Если я запускаю mklink в командной строке, он работает нормально.
Я посмотрел на Google, и он говорит о выполнении [DllImport("kernel32.dll")], но это не сработает в Linux.
Спасибо за любую помощь, которую вы можете предоставить.
1 ответ
mklink
это команда cmd.exe
программа, а не отдельная программа.
Бежать mklink
, вы должны на самом деле призвать cmd.exe
с соответствующим набором параметров, например:
ProcessInfo = new ProcessStartInfo("cmd.exe", "/c mklink " + argumentsForMklink);