2010-03-23 84 views
2

我有一个应用程序应该帮助我的项目在构建前和事件后事件处理方面。我正在使用ndesk.options进行命令行参数分析。当我的项目路径包含空格时,这给了我奇怪的结果。我认为这是ndesk.options的错,但我想我的应用程序是责怪。我把我的应用程序后,建事件,像这样:Visual Studio中的空格和反斜杠构建事件

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

一个简单的foreach在ARGS []显示以下内容:

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

发生了什么事是,在每个参数的最后一个“被处理。就好像是逃过因此尾部的反斜杠被删除,整个事情被视为一个单独的参数

现在,我想我是通过简单地逃脱第一“为好,像这样聪明:。

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

在这种情况下所得到的ARGS []看起来像这样:

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

的斜杠在参数仍吞咽和第一参数现在分裂。

将此参数[]传递给ndesk.options会产生错误的结果。

正确的命令行应该如何查看,以便正确的元素最终位于正确的args []槽中?另外,如何解析命令行参数,如有或没有ndesk.options?任何建议都是值得欢迎的。

在此先感谢

回答

7

您是否尝试逃避最后一个反斜杠?

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

这部作品大概只,只要ProjectDir\结束,这应该是given
这只是一个想法,但我没有给它一个尝试

编辑:
我发现了一个comment这表明离开了"

+0

这的确如同魅力一般。在这里,我想我尝试了每种组合。非常感谢 :) – 2010-03-23 22:40:38

1

我实际使用后“”解决这个相同的问题:

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

主要是因为否则它可能看起来像你试图逃跑的第二次试举......这你没有,你逃脱最终\(这是隐藏的)。 我还在postbuild命令中加入了REM,描述了为什么我这么做。