さて、ようやくこれを修正することになりました。エラーレベルはこの特定の問題とは何の関係もありませんでした。代わりに、VisualStudioの出力ウィンドウに表示されるテキストの形式が最も重要であるように見えます...
失敗した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の代わりにこのプログラムを呼び出しましたが、デバッグ時に文字列「EXEC」のないNUnitエラーメッセージが表示されたことを確認しました。また、文字列'EXEC'は、テスト出力に追加する行番号の前でも表示されました。文字列「TestError」のすべての行をスキップするか、「TestError」を「TestCriticalFailure」のようなものに置き換えると、プロジェクトのビルドは成功しました。しかし、プロジェクトのビルド後のイベントに以下を追加すると、再び失敗し、VisualStudioのエラーリストウィンドウの項目の説明が「foo.bar」に設定されました。
echo Test Error : foo.bar
そのため、Visual Studioまたは一部の拡張機能のいずれかがビルドに介入し、「テストエラー:bla.bla」という形式の文字列がVisualStudioの出力ウィンドウに表示されるとすぐに失敗するように見えます。ビルド後イベントの最後のコマンドでエラーレベルが他の値に設定されている場合でも、ビルド後イベント全体が終了コード-1で失敗すると報告されています。公平を期すために、これが標準のVisual Studio 2010エディションまたは一部の拡張機能に適用されるかどうかはわかりません。安全のために、これが私の環境全体です。
Microsoft VisualStudio2010バージョン10.0.40219.1SP1RelMicrosoft .NETFramework
バージョン4.0.30319SP1Rel
インストール済みバージョン:Professional
MicrosoftOffice開発者ツール
MicrosoftVisualBasic 2010
Microsoft Visual C#2010
Microsoft Visual C ++ 2010
Microsoft Visual F#2010
Microsoft VisualStudio2010チームエクスプローラー
MicrosoftVisualWeb Developer 2010
参照ダイアログの追加プラス!1.0
AlignAssignments 1.0
AutoBraceComplete 1.0
ClearCase Search 1.0
Microsoft Visual
Studio2010Devartコード比較用のCrystalReportsテンプレート2.70.3DocumentWell
2010 Plus 1.0.10916.0
Microsoft Visual Studio 2010 Professional-ENU Service Pack 1(KB983509)
Microsoft Visual Studio 2010 SharePoint Developer Tools 10.0 .40219
Microsoft.VisualStudio.QuickAccess.Package 1.0
OptionsPageImpl 1.0
PowerCommands for Visual Studio 2010 1.0
QuickFind 1.0
Rational ClearCase
Visual Nunit 1.0
VSCommands 2010 3.8.0.0
FeiLoader
ObjectWizard
わかりました。中間者攻撃を使用した回避策がありますが、この問題を解決するVisual Studioや拡張機能の設定や修正、または私の解決策のより良い代替案を知っている人がいる場合は、すべての耳!
更新:すべての拡張機能とアドインを無効にした後も、問題は解決しません。ネイティブのVisualStudioの特性のように見え始めています。