Запуск `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);
Другие вопросы по тегам