2016-09-29 9 views
0

Я создаю файл .dot в папке bin GraphViz.Невозможно запустить Graphviz из C# в качестве нового процесса

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

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

В .dot файл не должен начинаться с "-" –

+0

Вы также можете установить ([WorkingDirectory] https://msdn.microsoft.com/en- US/library/system.diagnostics.processstartinfo.workingdirectory (v = vs.110) .aspx) – ChrisK

+0

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

ответ

0

Выполнить из ЦМД, добавив/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(); 
} 
0

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

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

using (var dot = new Process()) 
{ 
    dot.StartInfo.Verb = "runas"; // Run process as admin. 
    dot.StartInfo.FileName = @"C:\Program Files (x86)\Graphviz2.38\bin\dot.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(); 
}