Не удается запустить Graphviz из C # как новый процесс

#c# #process #png #graphviz

#c# #процесс #png #graphviz

Вопрос:

Я создаю файл .dot в папке bin GraphViz.

Если я выполняю из командной строки: dot -Tpng -o graph.png -graph.dot создается изображение в формате png, но если я запускаю его в C #, файл png не создается. Программа запускалась от имени администратора. (проверьте код ниже)

 using (var dot = new Process())
{
    dot.StartInfo.Verb = "runas"; // Run process as admin.
    dot.StartInfo.FileName = @"C:Program Files (x86)Graphviz2.38bindot.exe";
    dot.StartInfo.Arguments = "-Tpng -o graph.png -graph.dot";
    dot.Start();
    dot.WaitForExit();
}
  

Комментарии:

1. Файл .dot не должен начинаться с «-»

2. Возможно, вы также захотите установить WorkingDirectory

3. @AxelKemper Я удалил «-«/ все еще не запускается.

4. @ChrisK я установил каталог. вот так: точка. StartInfo. WorkingDirectory=@»C:Program Files (x86) Graphviz2.38 bin «; по-прежнему не создал мою картинку.

Ответ №1:

Запустите из cmd, добавив /C к началу вашего аргумента

 using (var dot = new Process())
{
    dot.StartInfo.Verb = "runas"; // Run process as admin.
    dot.StartInfo.FileName = "cmd.exe";
    dot.StartInfo.Arguments = "/C dot -Tpng -o graph.png -graph.dot";
    dot.Start();
    dot.WaitForExit();
}
  

Ответ №2:

Вы не задаете рабочий каталог, поэтому файл, вероятно, сгенерирован, но где-то вроде windows32 или аналогичного расположения по умолчанию.

Попробуйте следующее

 using (var dot = new Process())
{
    dot.StartInfo.Verb = "runas"; // Run process as admin.
    dot.StartInfo.FileName = @"C:Program Files (x86)Graphviz2.38bindot.exe";
    dot.StartInfo.WorkingDirectory = @"C:ProgramData"; # or some other location you can write to
    dot.StartInfo.Arguments = "-Tpng -o graph.png -graph.dot";
    dot.Start();
    dot.WaitForExit();
}