2016-07-11 11 views
0

Ich habe einige Befehlszeilenargumente gefunden, um den CSSLint-Bericht im XML-Format zu generieren. Es funktioniert einwandfrei, während Sie durch die Eingabeaufforderung laufen.Wie benutze ich CSSLint?

Argumente:

csslint --format = csslint-xml "{SourceDir} \ bootstrap.css"> "C: \ temp \ csslint.xml"

Ich möchte auszuführen es durch C# -Anwendung. Ich habe den folgenden Code ausprobiert.

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(); 

Aber es funktioniert nicht. Kann ich eine Lösung oder Idee für dieses Problem haben?

Gibt es auch eine Möglichkeit, den CSSLint-Bericht für das angegebene Verzeichnis zu generieren? Ich möchte den Verzeichnispfad anstelle des Dateinamens angeben.

Antwort

2

Sie benötigen /K oder /C-cmd hinzuzufügen, um einen Prozess als Parameter übergeben auszuführen, also:

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

Von the documentation:

Optionen

/C Befehl ausführen und dann beenden

/K Run Geben Sie den Befehl ein und kehren Sie zur CMD-Eingabeaufforderung zurück. Das für die Prüfung geeignet ist, Variablen

Eine Einschränkung zu untersuchen ... die Rohrleitung (der > "C:\temp\csslint.xml" Teil Ihrer Kommandozeile) ist kein Argument, es ist eine Umleitung.

Wenn Sie Ihre stdout umleiten (die RedirectStandardOutput = true) aus Ihrer Anwendung, können Sie es erfassen direkt von C#, kein Bedürfnis, in einer Datei, wie Sie versuchen zu tun: Sie müssten die Process.OutputDataReceived Ereignis behandeln zwischen Ihrem Start und WaitForExit Anrufe, oder lesen Sie aus dem Process.StandardOutput Strom).

Was Ihre zweite Frage, die csslint CLI ermöglicht in einem Verzeichnis vorbei versucht, statt einer Datei

+0

ich die Argumente, wie in diesem gegebenen Snap https://drive.google.com/open?id=0B2pWtJvbMi5AZEFoaXhxZGxoaXc Ihre Antwort funktioniert nicht für meine Anforderung. Ich bin nicht sicher, ob wir cmd.exe als Dateiname geben können. Hast du deine Antwort an deinem Ende überprüft? Auch Csslint ist keine ausführbare Datei. Es ist nur ein Argument. –

+0

Natürlich nicht mit Ihrer speziellen Konfiguration, aber ich habe 'cmd.exe' oft von C# – Jcl

+0

ausgeführt Ich lief es auch viele Male. aber das oben angegebene Argument allein funktioniert nicht. –