7

私はWindowsとLinux(Mono)と互換性が必要なac#プログラムに取り組んでいます。

両方のプラットフォームでシンボリックリンクを作成しようとしていますが、これを機能させるために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では機能しません。

あなたが提供できるどんな助けにも感謝します。

4

1 に答える 1

19

mklinkcmd.exeプログラムのコマンドであり、スタンドアロンプ​​ログラムではありません。

を実行するには、次のような適切なパラメータのセットを使用しmklinkて実際に呼び出す必要があります。cmd.exe

ProcessInfo = new ProcessStartInfo("cmd.exe", "/c mklink " + argumentsForMklink);
于 2012-07-08T19:27:32.053 に答える