运行 来自 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