Visual studio 从power shell运行MSBuild命令会在表达式或语句中引发意外标记错误
如果从命令提示符下运行MSBuild,它将正常运行:Visual studio 从power shell运行MSBuild命令会在表达式或语句中引发意外标记错误,visual-studio,msbuild,Visual Studio,Msbuild,如果从命令提示符下运行MSBuild,它将正常运行: C:\Users\user1\Documents\testProject> "%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe" .\Grounded.sln 我正在尝试从powershell运行相同的代码,但它不起作用,并在表达式或语句错误中抛出意外的标记。我需要做什么: PS C:
C:\Users\user1\Documents\testProject> "%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe" .\Grounded.sln
我正在尝试从powershell运行相同的代码,但它不起作用,并在表达式或语句错误中抛出意外的标记。我需要做什么:
PS C:\Users\user1\Documents\testProject> "%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe" .\Grounded.sln
我想我必须避开正在传递的参数,但无法确定如何传递。在CMD.EXE中,
%NAME%
是环境变量NAME
值的占位符。因此,在您的例子中,%ProgramFiles(x86)%%
扩展到(通常)C:\ProgramFiles(x86)
在PowerShell中,环境变量不会以这种方式引用。相反,您必须编写$env:NAME
来引用变量NAME
的值
然而,这里有一个复杂的问题。由于变量名“ProgramFiles(x86)”包含PowerShell变量名中通常不允许使用的字符,因此此处(
和)
,您必须这样编写:${env:ProgramFiles(x86)}
最后,您需要使用call操作符&
,因为您希望将包含完整命令行的字符串视为可执行文件
因此,在您的情况下,命令行应该在PowerShell中阅读以下内容:
& "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe" .\Grounded.sln
也考虑在CMD.EXE中复习和
< P> >代码> %No.%<代码>是环境变量<代码>名称< /COD>值的占位符。因此,在您的例子中,%ProgramFiles(x86)%%
扩展到(通常)C:\ProgramFiles(x86)
在PowerShell中,环境变量不会以这种方式引用。相反,您必须编写$env:NAME
来引用变量NAME
的值
然而,这里有一个复杂的问题。由于变量名“ProgramFiles(x86)”包含PowerShell变量名中通常不允许使用的字符,因此此处(
和)
,您必须这样编写:${env:ProgramFiles(x86)}
最后,您需要使用call操作符&
,因为您希望将包含完整命令行的字符串视为可执行文件
因此,在您的情况下,命令行应该在PowerShell中阅读以下内容:
& "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe" .\Grounded.sln
也要考虑复习和