#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();
}