10

このスレッド (エラー出力のキャプチャーの問題) は、私が苦労している問題の味を教えてくれます。MSBuild から grunt を実行しようとしていますが、Visual Studio の出力ウィンドウに grunt エラーが表示されません。Visual Studio Express 2012 for Web に .NET プロジェクトがあります。IMPORT タグを使用して外部プロジェクトをプロジェクト ビルド ファイルにインポートしました。インポートしたプロジェクトには、Grunt を実行しようとする Exec タスクがあります。私は明らかに、Visual Studio の出力ウィンドウに大騒ぎせずにうなり声を上げて出力するエラー メッセージを表示したいと考えています。少なくとも出力をテキスト ファイルに送信する非常に簡単な回避策を見つけました。

grunt.cmd > grunt-output.txt

この出力ファイルは私の .NET プロジェクト フォルダーのどこかにあるので、すばやく更新してダブルクリックすると、出力ファイルを開くことができ、Visual Studio でわずかに文字化けした出力が表示されます。

例として、JSHint が反対するものを含む grunt.js ファイルで lint タスクを実行しています。意図的にセミコロンを後に入れなかったvar helloので、エラー メッセージが表示されますMissing semicolon

コマンド ラインから、きれいにフォーマットされたエラー メッセージが表示されます。

Running "lint:files" (lint) task
Linting grunt.js...ERROR
[L2:C10] Missing semicolon.
var hello

<WARN> Task "lint:files" failed. Use --force to continue. </WARN>

Aborted due to warnings.

Visual Studio から実行すると、出力ファイルには次の雑然とした形式が含まれます。

    [4mRunning "lint:files" (lint) task[24m
     Linting grunt.js...[31mERROR[39m
     [31m[[39m[33mL2[39m[31m:[39m[33mC10[39m[31m][39m [33mMissing semicolon.[39m
     var hello[31m[7m [27m[39m

     [31m<[39m[33mWARN[39m[31m>[39m [33mTask "lint:files" failed. Use --force to continue.     [39m [31m</[39m[33mWARN[39m[31m>[39m

     [31mAborted due to warnings.[39m

これらすべての角括弧と数字が何をしているのかを認識している人はいますか? また、それらを解釈してフォーマットに変換するコマンド ライン スイッチ、うなり声スイッチ、または node.js スイッチを思いつく人はいますか? ある種のエンコーディングのようには見えません。メッセージをフォーマットする方法をコマンドライン環境に提案するためのタグのように見えます。ある種の正規表現置換関数を実行することを提案しないでください。手っ取り早く簡単なものが欲しいのです。

更新: このリンクは、別のアプリケーションにパイプされた場合に出力が切断され、 10 か月前のノードのさらに上流にある問題を示しています。それが整理されている間、少なくともより読みやすい出力ファイルを取得するといいでしょう。

4

2 に答える 2

8

Gruntメッセージ ボードのこのスレッドPipe-redirecting Grunt's output isbrokenは、この問題に完全に対処し、問題全体が修正されるのを待つ間、迅速な回避策を提供します。これらは出力を色付けするためのエスケープ コードであり、回避策は --no-color オプションを使用して色付けを削除することです。

MSBuild からこのコマンドを実行すると

grunt.cmd --no-color > grunt-output.txt

コマンドラインとまったく同じ内容で適切にフォーマットされた出力が得られます。

Running "lint:files" (lint) task
Linting grunt.js...ERROR
[L2:C10] Missing semicolon.
var hello 

<WARN> Task "lint:files" failed. Use --force to continue. </WARN>

Aborted due to warnings.

色がなくても生きていける。ただし、これを出力ウィンドウに送信できればいいのですが、MSBuild はビルド プロセスでエラーのように見えるものをスローしますが、実際には JSHint が私の JavaScript に対する私の気持ちを巧みに傷つけているだけです。

于 2013-01-27T14:59:18.057 に答える
0

「大騒ぎせずに、Visual Studio の出力ウィンドウに出力されたエラー メッセージを表示したいのは明らかです。」

私は VsCommandBuddy を見てみたいと思います...それは、あなたのうなり声 (およびその他のコマンド) をビジュアル スタジオ内に統合するのに役立ちます。コマンドはソリューション/プロジェクトごとに構成され、この記事の執筆時点では、メニュー、ツールバー、ショートカット、およびクイック起動から利用できるようになっています ...

http://visualstudiogallery.msdn.microsoft.com/f5da988e-2ec1-4061-a569-46d09733c668

それは自分のかゆみを掻くプロジェクトです。それは私が薄いことを成し遂げるのを助けます。Visual Studio で開くすべてのソリューションで、そのソリューションのためにまとめた外部コマンドが表示されるだけです。

出力は、必要に応じて出力ウィンドウを通過します。grunt の色なしオプションは、すべてのノイズを除去します。

それが役に立てば幸い!!

于 2014-07-15T09:55:46.300 に答える