Jeśli uruchomię MSBUILD z wiersza polecenia, działa dobrze:

C:\Users\user1\Documents\testProject> "%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe" .\Grounded.sln

Próbuję uruchomić to samo od power Co muszę zrobić:

PS C:\Users\user1\Documents\testProject> "%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe" .\Grounded.sln

Myślę, że muszę uciec przed upływem argumentów, ale nie mogę zrozumieć, jak.

0
umbersar 15 marzec 2021, 02:35

1 odpowiedź

Najlepsza odpowiedź

W cmd.exe %NAME% jest symbolem zastępczym dla zmiennej środowiskowej NAME wartość. Tak więc w twoim przypadku %ProgramFiles(x86)% rozszerza się do (zwykle) C:\Program Files (x86).

W PowerShell zmienne środowiskowe nie są w tym sposobie. Raczej musisz napisać $env:NAME, aby odwoływać wartość zmiennej {X1}}.

Istnieje jednak komplikacja. Ponieważ nazwa zmiennej "Programfiles (X86)" zawiera znaki, które są zwykle niedozwolone w nazwie zmiennej PowerShell, tutaj {X0}} i ), musisz go pisać tak: ${env:ProgramFiles(x86)}.

Wreszcie musisz użyć operatora połączenia &, ponieważ chcesz traktować ciąg z pełną linią poleceń jako wykonywalna.

Więc w twoim przypadku linia poleceń powinna przeczytać to w PowerShell:

& "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe" .\Grounded.sln

Rozważ także recenzje o_wodach i about_environment_varenatles.

2
Christian.K 15 marzec 2021, 06:18