我希望在c#app中自动创建nupkg。我的目标是在我的项目中包含nuget.exe并使用System.Diagnostics将cmd.exe作为进程启动,然后传递所需的命令,这将是> cd project \ path \ here' ,' nuget spec something.dll'并且' nuget pack something.nuspec'。
我到目前为止的代码是:
Process p = new Process();
ProcessStartInfo info = new ProcessStartInfo(@"C:\Windows\System32\cmd.exe", @"mkdir testdir");
p.StartInfo = info;
p.Start();
Console.ReadLine();
然而,它甚至没有创建testdir,我也不知道如何链接这些命令。在我的p Process上有一个名为WaitForInputIdle的方法,但它会引发事件,而且我不知道如何处理这些事实。
一个完美的解决方案也让我阅读输出和输入。我尝试过使用StreamWriter p.StandardInput,但是检查命令是否完成以及结果是什么问题。
非常感谢任何帮助。
编辑:成功!我设法创建了一个目录:) 现在这是我的代码:
Process p = new Process();
ProcessStartInfo info = new ProcessStartInfo(@"C:\Windows\System32\cmd.exe");
info.RedirectStandardInput = true;
info.UseShellExecute = false;
p.StartInfo = info;
p.Start();
using (StreamWriter sw = p.StandardInput)
{
sw.WriteLine("mkdir lulz");
}
但仍然不知道如何等待输入并跟进更多命令。
答案 0 :(得分:1)
你可以通过三种方式来做到这一点
1-最简单的选择是将两个命令与'&'符号
var processInfo = new ProcessStartInfo("cmd.exe", @"command1 & command2");
2-通过ProcessStartInfo设置进程的工作目录。
var processInfo = new ProcessStartInfo("cmd.exe", @"your commands here ");
processInfo.UseShellExecute = false;
processInfo.WorkingDirectory = path;
3-重定向过程的输入和输出。 (也通过ProcessStartInfo完成)。当您想要向流程发送更多输入时,或者当您想要获取流程的输出时,这是必需的