Spaces and backslashes in Visual Studio build events

Posted by gencha on Stack Overflow See other posts from Stack Overflow or by gencha
Published on 2010-03-23T22:17:07Z Indexed on 2010/03/23 22:23 UTC
Read the original article Hit count: 499

Filed under:
|
|

I have an application that is supposed to aid my project in terms of pre- and post-build event handling. I'm using ndesk.options for command line argument parsing. Which gave me weird results when my project path contains spaces. I thought this was the fault of ndesk.options but I guess my own application is to blame. I call my application as a post-built event like so:

build.exe --in="$(ProjectDir)" --out="c:\out\"

A simple foreach over args[] displays the following:

--in=c:\my project" --out=c:\out"

What happened is that the last " in each parameter was treated as if it was escaped. Thus the trailing backslash was removed. And the whole thing is treated as a single argument.

Now I thought I was being smart by simply escaping the first " as well, like so:

build.exe --in=\"$(ProjectDir)" --out=\"c:\out\"

In that case the resulting args[] look like this:

--path="c:\my
project"
--out="c:\out"

The trailing backslash in the parameters is still swallowed and the first parameter is now split up.

Passing this args[] to ndesk.options will then yield wrong results.

How should the right command line look so that the correct elements end up in the correct args[] slots? Alternatively, how is one supposed to parse command line arguments like these with or without ndesk.options? Any suggestion is welcome.

Thanks in advance

© Stack Overflow or respective owner

Related posts about visual-studio

Related posts about c#