我在 Visual Studio 2010 中的 C# .NET 4.0 项目中将以下内容作为构建后事件:
call "$(SolutionDir)Publish\Publish.exe" "$(TargetDir)" "\\lithium\c\Photon"
call "$(SolutionDir)RemoteControl\RemoteControl.exe" start
问题是执行 Publish.exe 时,只有一个命令行参数被传递,其中包含以下值:
C:\Users\...\bin\Release" \\lithium\c\Photon
注意:我用省略号替换了一些文件夹,否则这是准确的值
无论出于何种原因,它将两个参数合二为一,并且非常奇怪地解析引号。我已经调试了一段时间,我试过不使用 call
,使用 Publish.exe
的相对目录,使用像 这样简单的东西call "$(SolutionDir)Publish\Publish.exe"hello world
它总是被分解成一个参数。这让我相信这不是一些愚蠢的引语。
如果我从提示符下运行这个完全相同的程序,它会完美运行。有人,请帮助我摆脱这种疯狂。
最佳答案
在处理另一个项目时,我实际上设法重现了您的问题。我将多个参数传递给 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"
这对我有用,希望它能解决您的问题。
如果您有超过 2 个参数,那么您需要在除最后一个之外的每个参数末尾添加一个空格。
HTH
https://stackoverflow.com/questions/6755654/