在ProcessStartInfo中运行`mklink`
问题描述:
我正在研究需要与Windows和Linux(Mono)兼容的c#程序。在ProcessStartInfo中运行`mklink`
我试图在两个平台中创建一个符号链接,并且我正在使用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它工作正常。
我已经看过谷歌,它说关于做一个[DllImport(“kernel32.dll”)],但这不会在Linux上工作。
感谢您提供的任何帮助。
答
mklink
是cmd.exe
程序的命令,而不是独立程序。
要运行mklink
,你必须用实际一组合适的参数调用cmd.exe
,像这样:
ProcessInfo = new ProcessStartInfo("cmd.exe", "/c mklink " + argumentsForMklink);
感谢您的帮助 – Boardy 2012-07-08 19:54:38
很乐意帮忙......需要注意的是,当你在Linux上运行这个(假设你在那里运行C#),你可能不需要通过shell运行mklink(没有做太多的Mono,所以不能100%确定)。 – 2012-07-08 21:19:16
我不认为有一个mklink命令,所以我需要为Linux运行一个单独的命令,它将是''ln -fs source target''。我正在做一个检查,看看它运行的是哪个操作系统,并相应地执行命令。 – Boardy 2012-07-09 10:29:22