I have the following as my post-build event in a C# .NET 4.0 project in Visual Studio 2010:
call \"$(SolutionDir)Publish\\Publish.exe\" \"$(TargetDir)\" \"\\
I hit the same problem - if the argument expands out to something which ends in a backslash, I think the second quote is being escaped and treated as a quote character within the first argument.
Using "$(OutDir)\" worked for me.