我正在使用grunt(javascript Task runner)进行我的Web开发构建过程。包括茉莉花测试,柏拉图代码检查,文档(YUIdoc)等......
为了使事情更方便(以及稍后将此构建过程包含到另一个构建过程中)我尝试创建一个简单的.net(C#)应用程序,它能够执行grunt命令,然后将结果输出到一个文本框。因为我总是可以通过cmd-Window轻松执行grunt命令,我尝试使用 System.Diagnostics.Process 和 cmd.exe 来执行此操作。这是我尝试的(用于生成代码文档):
private void documentationToolStripMenuItem_Click(object sender, EventArgs e)
{
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "/C grunt doc";
p.StartInfo.WorkingDirectory = "c:\\myProjectFolder\\";
p.Start();
p.WaitForExit();
rtbOut.Text = p.StandardOutput.ReadToEnd();
}
首先要做的是:我得到了这个输出:
>Loading "requirejs.js" tasks...
是的,我在项目中使用require.js,但这与文档无关。这是我通常得到的输出,我希望:
>Running "doc" task
>
>Running "yuidoc:compile" (yuidoc) task
>Start YUIDoc compile...
>Scanning: ../someFolder/
>Output: ../release/Documentation/
>YUIDoc compile completed in 0.968 seconds
当然不会生成文档。但是有一个 data.json 文件,它是在正确的文件夹中生成的,但它是空的。所以至少它似乎开始正确但无法继续(?)我也尝试过其他任务,但它们都没有使用C#中的进程。
答案 0 :(得分:0)
如果有人遇到同样的问题,我会回答我自己的问题,因为我找到了一个适合我的解决方案。
我只是在做一个绕道而行的'现在使用PowerShell脚本。有一篇很好的文章介绍了如何从C#运行PowerShell:
http://www.codeproject.com/Articles/18229/How-to-run-PowerShell-scripts-from-C
System.Management.Automation中包含可用于调用PowerShell脚本的类Runspace。现在在我的情况下,这样一个'脚本'不仅仅是这个:
grunt build
您可以获取一些转义颜色的转义码,您可以通过调用它来删除它:
grunt --no-color build