构建不遵守多个命令行参数的事件

Ric*_*nka 1 visual-studio-2010 visual-studio

我在Visual Studio 2010中的C#.NET 4.0项目中有以下作为我的后期构建事件:

call "$(SolutionDir)Publish\Publish.exe" "$(TargetDir)" "\\lithium\c\Photon"
call "$(SolutionDir)RemoteControl\RemoteControl.exe" start
Run Code Online (Sandbox Code Playgroud)

问题是,当执行Publish.exe时,只传递一个命令行参数,其中包含以下值:

C:\Users\...\bin\Release" \\lithium\c\Photon
Run Code Online (Sandbox Code Playgroud)

注意:我用省略号替换了一些文件夹,否则这是确切的值

无论出于何种原因,它将两个参数合并为一个,并且非常奇怪地解析引号.我已经调试了一段时间,并且我已经尝试了它,没有call带有相对目录Publish.exe,有一些简单的东西call "$(SolutionDir)Publish\Publish.exe" hello world,它总是被粉碎成一个参数.这让我相信这不是一些引用蠢事.

如果我从提示符运行这个完全相同的程序,它可以完美地工作.有人,请帮助我消除这种疯狂.

Dea*_*nOC 7

在处理另一个项目时,我实际上设法复制了您的问题.我将多个args传递给powershell脚本,发现它们被视为一个参数.谷歌搜索发现此链接

http://davidfrette.wordpress.com/2011/01/20/creating-powershell-pre-build-and-post-build-events-for-visual-studio-projects/

哪个解决方案是在第一个参数的末尾放置一个空格,即在您的示例中它将是

call "$(SolutionDir)Publish\Publish.exe" "$(TargetDir) " "\\lithium\c\Photon"
Run Code Online (Sandbox Code Playgroud)

这对我有用,所以希望它能解决你的问题.

如果你有超过2个args,那么你需要在每个结尾添加一个空格,除了最后一个.

HTH