如何逃脱的空间参数的PS脚本VS生成后事件运行

问题描述 投票:2回答:1

更新1:

再次在输出仔细观察之后,我有点理解了它。通过添加右括号和它的作品引号之间的尾随空格:

powershell -ExecutionPolicy ByPass -File "$(SolutionDir)\BuildScripts\InjectGitVersion.ps1" "$(ProjectDir) " "$(TargetDir) "

我怀疑的PowerShell某种程度上解释)"

有没有解决这个问题,一个更优雅的方式?

更新2:

这很奇怪。我还有一个脚本,做了清理,并与出)"这样的空间的工作原理:

powershell -ExecutionPolicy ByPass -File "$(SolutionDir)\BuildScripts\InjectGitVersionCleanup.ps1" "$(ProjectDir)"

但是添加尾部的空格会导致失败,因为它的内部追加一个文件名添加到路径,使这条道路将是不正确的。

如果任何一个明白这一点,我会很乐意接受的解释,正确的答案!


原版的:

我在Visual Studio中,我想使用以将来自一个Git标签的版本以下预编译命令:

powershell -ExecutionPolicy ByPass -File "$(SolutionDir)\BuildScripts\InjectGitVersion.ps1" $(ProjectDir) $(TargetDir)

这工作得很好,如果路径$(SolutionDir)不包含空格(然后将同样存在于$(PROJECTDIR)或$(TARGETDIR))。

当路径$(SolutionDir)不包含空格,它出现在脚本正常启动,但参数不正确传递,我无法弄清楚如何逃脱他们在争论的PS-脚本。

我已尝试加入唱“三联‘’”,并且还”,它给出以下的(每个PS-命令试图为逸出的空间不同的方法):

powershell -ExecutionPolicy ByPass -File "$(SolutionDir)\BuildScripts\InjectGitVersion.ps1" $(ProjectDir) $(TargetDir)

ARGS [0]:

d:\ VisualStudio的

ARGS [1]:

项目\ software_git_repo \ ProgramEditor \

powershell -ExecutionPolicy ByPass -File "$(SolutionDir)\BuildScripts\InjectGitVersion.ps1" "$(ProjectDir)" "$(TargetDir)"

BS:ARGS [0]:

d:\ Visual Studio项目\ software_git_repo \ ProgramEditor” d:\ Visual Studio中

BS:ARGS [1]:

项目\ software_git_repo \ ProgramEditor \ BIN \调试”

powershell -ExecutionPolicy ByPass -File "$(SolutionDir)\BuildScripts\InjectGitVersion.ps1" """$(ProjectDir)""" """$(TargetDir)"""

BS:ARGS [0]:

“d:\ VisualStudio的

BS:ARGS [1]:

项目\ software_git_repo \ ProgramEditor”

powershell -ExecutionPolicy ByPass -File "$(SolutionDir)\BuildScripts\InjectGitVersion.ps1" '$(ProjectDir)' '$(TargetDir)'  

BS:ARGS [0]:

“d:\ VisualStudio的

BS:ARGS [1]:

项目\ software_git_repo \ ProgramEditor \”

这样做:

echo ProjectDir:
echo $(ProjectDir)
echo TargetDir:
echo $(TargetDir)

我得到:

PROJECTDIR:

d:\ VisualStudio的项目\ software_git_repo \ ProgramEditor \

TARGETDIR:

d:\ VisualStudio的项目\ software_git_repo \ ProgramEditor \ BIN \调试\

visual-studio powershell parameter-passing
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.