运行 来自 power shell 的 MSBuild 命令在表达式或语句错误中抛出意外标记
running MSBuild command from power shell throws unexpected token in expression or statement error
如果我从命令提示符 运行 MSBuild,它 运行 没问题:
C:\Users\user1\Documents\testProject> "%ProgramFiles(x86)%\Microsoft Visual Studio19\Community\MSBuild\Current\Bin\MSBuild.exe" .\Grounded.sln
我正在尝试 运行 与 Power Shell 相同,但它不起作用并在表达式或语句错误中抛出意外标记。我需要做什么:
PS C:\Users\user1\Documents\testProject> "%ProgramFiles(x86)%\Microsoft Visual Studio19\Community\MSBuild\Current\Bin\MSBuild.exe" .\Grounded.sln
我想我必须转义传递的参数,但不知道如何转义。
在 CMD.EXE 中,%NAME%
是环境变量 NAME
值的占位符。因此,在您的情况下 %ProgramFiles(x86)%
扩展为(通常)C:\Program Files (x86)
.
在 PowerShell 中,不会以这种方式引用环境变量。相反,您必须编写 $env:NAME
来引用变量 NAME
.
的值
然而,这里有一个复杂的问题。由于变量名“ProgramFiles(x86)”包含 PowerShell 变量名中通常不允许出现的字符,因此这里 (
和 )
,您必须这样写:${env:ProgramFiles(x86)}
。
最后,您需要使用调用运算符&
,因为您希望将带有完整命令行的字符串视为可执行文件。
所以在你的情况下,命令行应该在 PowerShell 中读取:
& "${env:ProgramFiles(x86)}\Microsoft Visual Studio19\Community\MSBuild\Current\Bin\MSBuild.exe" .\Grounded.sln
同时考虑查看 about_Variables and about_Environment_Variables
如果我从命令提示符 运行 MSBuild,它 运行 没问题:
C:\Users\user1\Documents\testProject> "%ProgramFiles(x86)%\Microsoft Visual Studio19\Community\MSBuild\Current\Bin\MSBuild.exe" .\Grounded.sln
我正在尝试 运行 与 Power Shell 相同,但它不起作用并在表达式或语句错误中抛出意外标记。我需要做什么:
PS C:\Users\user1\Documents\testProject> "%ProgramFiles(x86)%\Microsoft Visual Studio19\Community\MSBuild\Current\Bin\MSBuild.exe" .\Grounded.sln
我想我必须转义传递的参数,但不知道如何转义。
在 CMD.EXE 中,%NAME%
是环境变量 NAME
值的占位符。因此,在您的情况下 %ProgramFiles(x86)%
扩展为(通常)C:\Program Files (x86)
.
在 PowerShell 中,不会以这种方式引用环境变量。相反,您必须编写 $env:NAME
来引用变量 NAME
.
然而,这里有一个复杂的问题。由于变量名“ProgramFiles(x86)”包含 PowerShell 变量名中通常不允许出现的字符,因此这里 (
和 )
,您必须这样写:${env:ProgramFiles(x86)}
。
最后,您需要使用调用运算符&
,因为您希望将带有完整命令行的字符串视为可执行文件。
所以在你的情况下,命令行应该在 PowerShell 中读取:
& "${env:ProgramFiles(x86)}\Microsoft Visual Studio19\Community\MSBuild\Current\Bin\MSBuild.exe" .\Grounded.sln
同时考虑查看 about_Variables and about_Environment_Variables