我发现一些命令行参数要以xml格式生成CSSLint报告。通过命令提示符运行时工作正常。
参数:
csslint --format = csslint-xml" {SourceDir} \ bootstrap.css" > " C:\ TEMP \ csslint.xml"
我想通过C#应用程序执行它。我尝试了以下代码。
Process process = new Process()
{
StartInfo =
{
FileName = "cmd.exe",
Arguments = "csslint --format=csslint-xml " + @"""{SourceDir}\bootstrap.css""" + @" > ""C:\Temp\CssLint.xml""",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true,
}
};
process.Start();
process.WaitForExit();
但它不起作用。我可以为这个问题找到解决方案或想法吗?
还有什么方法可以为指定目录生成CSSLint报告吗?我想提供目录路径而不是文件名。
答案 0 :(得分:2)
您需要将/K
或/C
添加到cmd
以执行作为参数传递的流程,因此:
Arguments = "/C csslint --format=csslint-xml " + @"""{SourceDir}\bootstrap.css""" + @" > ""C:\Temp\CssLint.xml""",
选项
/ C运行命令然后终止
/ K Run Command然后返回CMD提示符。 这对于测试,检查变量
非常有用
有一点需要注意......管道(命令行的> "C:\temp\csslint.xml"
部分)不是参数,而是重定向。
如果要从应用程序重定向stdout(RedirectStandardOutput = true
),可以直接从C#中捕获它,无需将其管道传输到您尝试执行的文件中:您需要处理Start
和WaitForExit
来电之间的Process.OutputDataReceived
事件,或者从Process.StandardOutput
信息流中读取。
关于第二个问题,csslint
CLI允许传入目录而不是文件