2016-07-11 41 views
0

我發現一些要運行的命令行參數以xml格式生成CSSLint報告。它通過命令提示符運行時工作正常。如何使用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報告嗎?我想給目錄路徑而不是文件名。

回答

2

您需要添加/K/Ccmd執行作爲參數傳遞的過程中,這樣的:

Arguments = "/C csslint --format=csslint-xml " + @"""{SourceDir}\bootstrap.css""" + @" > ""C:\Temp\CssLint.xml""", 

the documentation

選項

/C的運行命令然後終止

/K Run命令,然後返回到CMD提示符。 這是非常有用的測試,檢查變量

一個警告...管道(命令行的> "C:\temp\csslint.xml"部分)不是一個參數,它是一個重定向。

如果你從你的應用程序重定向你的標準輸出(RedirectStandardOutput = true),你可以直接從C#中捕獲它,不需要像你想要做的那樣將它傳輸到一個文件:你需要處理Process.OutputDataReceived事件在StartWaitForExit之間調用,或者從Process.StandardOutput流讀取)。

關於你的第二個問題,csslint CLI允許傳入一個目錄而不是文件

+0

我試過的論據,在此給出的卡扣https://drive.google.com/open?id=0B2pWtJvbMi5AZEFoaXhxZGxoaXc你答案不適合我的要求。我不確定我們是否可以將cmd.exe作爲文件名。你有沒有在你的最後檢查你的答案?另外csslint不是可執行文件。這只是一個說法。 –

+0

當然不是你的具體設置,但我已經多次從C#運行'cmd.exe' – Jcl

+0

我也跑了很多次。但上面給出的論證本身並不奏效。 –