ну, наконец-то дошли до исправления. как оказалось, уровни ошибок не имеют ничего общего с этой конкретной проблемой. вместо этого формат текста, который заканчивается в окне вывода Visual Studio, кажется первостепенным ...
неудачные тесты NUnit обнаружились в окне Список ошибок Visual Studio с описанием элемента, для которого задано пространство имен и имя метода сообщения об ошибке NUnit, а для файла - загадочная строка «EXEC». если вы откроете окно вывода, та же самая строка 'EXEC' также будет присутствовать в начале сообщения об ошибке NUnit. но это не часть исходного сообщения об ошибке NUnit. Я добавил человека посередине, чтобы посмотреть, что происходит, например:
static void Main(string[] args)
{
Console.WriteLine("args: " + string.Join(" ", args));
Process p = new Process()
{
StartInfo = new ProcessStartInfo(@"C:\libraries\nunit\nunit-2.5.7-net-2.0\bin\nunit-console.exe", string.Join(" ", args))
{
UseShellExecute = false,
RedirectStandardOutput = true
}
};
int lineNumber = 0;
p.OutputDataReceived += (s, e) =>
{
//if (!Debugger.IsAttached && !string.IsNullOrWhiteSpace(e.Data) && e.Data.Contains("Test Error"))
//{
// Debugger.Launch();
//}
//string line = e.Data;
string line = string.IsNullOrWhiteSpace(e.Data) ? string.Empty : e.Data.Replace("Test Error", "Test Critical Failure");
Console.WriteLine("[" + (++lineNumber) + "] " + line);
};
p.Start();
p.BeginOutputReadLine();
p.WaitForExit();
Console.WriteLine("nunit exited with code " + p.ExitCode);
Environment.Exit(0);
}
Я вызвал эту программу вместо nunit из события после сборки и, конечно же, при отладке было сообщение об ошибке NUnit без строки «EXEC». Кроме того, строка «EXEC» появилась еще до номеров строк, которые я теперь добавляю в тестовый вывод. когда я пропустил все строки со строкой «Test Error» или заменил «Test Error» чем-то другим, например «Test Critical Failure», сборка проекта прошла успешно. но когда я добавил следующее в событие пост-сборки проекта, оно снова не удалось, и описание элемента в окне Список ошибок Visual Studio было установлено в «foo.bar»:
echo Test Error : foo.bar
так что либо Visual Studio, либо какое-либо расширение, похоже, вмешивается в сборку и приводит к сбою, как только в окне вывода Visual Studio появляется строка с форматом «Test Error: bla.bla». затем сообщается, что все событие после сборки завершается с кодом завершения -1, даже если последняя команда события после сборки устанавливает уровень ошибки в какое-то другое значение. Теперь, чтобы быть справедливым, я не уверен, относится ли это к стандартной редакции Visual Studio 2010 или какому-либо расширению, так что на всякий случай это вся моя среда:
Microsoft Visual Studio 2010 Версия 10.0.40219.1 SP1Rel Microsoft
.NET Framework версия 4.0.30319 SP1Rel
Установленная версия: Professional
Инструменты разработчика Microsoft Office
Microsoft Visual Basic 2010
Microsoft Visual C # 2010
Microsoft Visual C ++ 2010
Microsoft Visual F # 2010
Microsoft Visual Studio 2010 Team Explorer
Microsoft Visual Web Developer 2010
Добавьте ссылку Диалог Плюс! 1,0
AlignAssignments 1.0
AutoBraceComplete 1.0
ClearCase Search 1.0
Шаблоны Crystal Reports для Microsoft Visual Studio 2010
Devart Code Compare 2.70.3
Document Well 2010 Plus 1.0.10916.0
Microsoft Visual Studio 2010 Professional - пакет обновления 1 для ENU
(KB983509)
Инструменты разработчика Microsoft Visual Studio 2010 SharePoint 10.0.40219
Microsoft.VisualStudio.QuickAccess.Package 1.0
OptionsPageImpl 1.0
PowerCommands для Visual Studio 2010 1.0
QuickFind 1.0
Rational ClearCase
Visual Nunit 1.0
VSCommands 2010 3.8.0.0
FeiLoader
ObjectWizard
хорошо, так что есть обходной путь, использующий человека в середине, но если есть кто-то, кто знает какие-либо настройки или исправления Visual Studio или расширения, которые решат эту проблему, или лучшую альтернативу моему решению, Я все уши!
ОБНОВЛЕНИЕ: После отключения всех расширений и надстроек проблема сохраняется. это начинает выглядеть как нативная особенность Visual Studio.