C# 通过.NET应用程序执行grunt命令

C# 通过.NET应用程序执行grunt命令,c#,.net,gruntjs,C#,.net,Gruntjs,我正在使用grunt(javascript任务运行程序)进行web开发构建过程。包括像jasmine的测试、plato的代码检查、文档(YUIdoc)等等 为了让事情变得更方便(以及在以后将此构建过程包含到另一个构建过程中),我尝试创建一个简单的.net(C#)应用程序,该应用程序能够执行grunt命令,然后将结果输出到文本框中。由于我总是可以通过cmd窗口轻松执行grunt命令,因此我尝试使用System.Diagnostics.Process和cmd.exe来执行。以下是我尝试的内容(用于生

我正在使用grunt(javascript任务运行程序)进行web开发构建过程。包括像jasmine的测试、plato的代码检查、文档(YUIdoc)等等

为了让事情变得更方便(以及在以后将此构建过程包含到另一个构建过程中),我尝试创建一个简单的.net(C#)应用程序,该应用程序能够执行grunt命令,然后将结果输出到文本框中。由于我总是可以通过cmd窗口轻松执行grunt命令,因此我尝试使用System.Diagnostics.Processcmd.exe来执行。以下是我尝试的内容(用于生成代码文档):

第一件事是weired:我得到了这个输出:

>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#中的流程工作。

如果有人有同样的问题,我会回答我自己的问题,因为我现在找到了一个适合我的解决方案

我现在只是在使用PowerShell脚本进行“迂回”。这里有一篇关于如何从C#运行PowerShell的精彩文章:

System.Management.Automation中包含可用于调用PowerShell脚本的类运行空间。在我的例子中,这样的“脚本”只不过是:

grunt build
您可以返回一些转义码,用于对输出着色,您可以通过如下方式调用它来删除这些转义码:

grunt --no-color build

不确定该行为,但为什么通过cmd而不是直接运行grunt?毕竟它是一个命令行工具(前提是您安装了grunt cli软件包)。我尝试使用“grunt”作为文件名,但它找不到它(系统找不到指定的文件),而且我认为实际上没有“grunt.exe”之类的文件。它是通过node.exe运行的。老实说,我不知道这是如何运作的内部。。。
grunt --no-color build