I believe the problem is documented here and looks like it might be a bug in visual studio, but I'm wondering if anyone knows of a workaround.
Basically I have the following 2 lines (among other things) one right after the other in the prebuild event.
"C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe" /p:configuration=Release;platform=x86 /t:rebuild "$(SolutionDir)Folder1\Project1.csproj"
"C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe" /p:configuration=Release;platform=x86 /t:rebuild "$(SolutionDir)Folder2\Folder3\Project2.csproj"
The first one succeeds and the other fails saying that "The command ""C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe" /p:configuration=Release;platform=x86 /t:rebuild "*Undefined *Folder2\Folder3\Project2.csproj"" exited with code 1.
(Space inserted between astrisk cause of SO formatting)
Edit: Figured out the problem was that one of the other projects with the same line as it's prebuild failed, since MSBuild itself doesn't know about the macros.