Этот поток (Ошибка вывода ошибок) дает вам представление о проблеме, с которой я борюсь. Я пытаюсь запустить grunt из MSBuild, и ошибки grunt не отображаются в окне вывода Visual Studio. У меня есть проект .NET в Visual Studio Express 2012 для Интернета. Я импортировал внешний проект в файл сборки проекта с тегом IMPORT, а в импортированном проекте у меня есть задача Exec, пытающаяся запустить grunt. Я, очевидно, хочу видеть сообщения об ошибках, которые торчат выходные данные в окне вывода Visual Studio без лишней суеты. Я нашел очень простой обходной путь, который по крайней мере отправляет вывод в текстовый файл.
grunt.cmd > grunt-output.txt
Этот выходной файл находится где-то в моей папке проекта .NET, поэтому быстрое обновление и двойной щелчок позволяют мне открыть выходной файл и увидеть немного искаженную версию вывода grunt в Visual Studio.
В качестве примера я запускаю задачу lint в файле grunt.js, в котором содержатся вещи, против которых будет возражать JSHint. Я намеренно не поставил точку с запятой после 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, который будет их интерпретировать и превратить в форматирование? Они не похожи на какую-то кодировку, они больше похожи на теги, которые предлагают среде командной строки, как форматировать сообщение. Пожалуйста, не предлагайте использовать функцию замещения регулярного выражения. Я хочу что-то быстро и легко, иначе это станет больше неприятностей, чем это стоит.
UPDATE: эта ссылка Выход отключается, если он подключен к другому приложению, указывает на проблему дальнейшего восходящего потока в node, начиная с 10 месяцев. Хотя при этом выясняется, что было бы неплохо получить более читаемый выходной файл.