Here’s a fun one for anyone who uses msbuild (at least, v2.0.50727). Create a project file like this:
<Project DefaultTargets="Foo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="Foo"> <Exec Command = "echo Hello!" /> </Target> </Project>
From a command prompt, run the project; you will get a the effect you would expect.
Now replace the word “Hello” with “The error was: something random”. Run it again.
C:\\Dev\\Resolver>msbuild foo.proj Microsoft (R) Build Engine Version 2.0.50727.42 [Microsoft .NET Framework, Version 2.0.50727.42] Copyright (C) Microsoft Corporation 2005. All rights reserved. Build started 15/11/2006 17:50:22. __________________________________________________ Project "C:\\Dev\\Resolver\\foo.proj" (default targets): Target Foo: echo The error was: something random EXEC : The error was: something random C:\\Dev\\Resolver\\foo.proj(3,9): error MSB3073: The command "echo The error was: something random" exited with code -1. Done building target "Foo" in project "foo.proj" -- FAILED. Done building project "foo.proj" -- FAILED. Build FAILED. EXEC : The error was: C:\\Dev\\Resolver\\foo.proj(3,9): error MSB3073: The command "echo The error was: something random" exited with code -1. 0 Warning(s) 2 Error(s) Time Elapsed 00:00:00.09 C:\\Dev\\Resolver>
Fuzzyman and I bumped into this one at work today; our continuous integration server, which watches our Subversion repository and checks out, builds, and tests any code changes it sees, had reported a failure despite the fact that none of the tests had failed. It turned out that one test was quite innocently printing out the text “The error was: ” followed by some logging information; it wasn’t an error at all. As far as I can tell, the statement that the echo command exited with code -1 is absolute nonsense.
This behaviour is not documented anywhere that we were able to find; I can only assume it was added for some specific purpose in the context of Visual Studio…