Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 从power shell运行MSBuild命令会在表达式或语句中引发意外标记错误_Visual Studio_Msbuild - Fatal编程技术网

Visual studio 从power shell运行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:

如果从命令提示符下运行MSBuild,它将正常运行:

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

也要考虑复习和