Простой Powershell Msbuild с параметром завершается ошибкой - PullRequest
6 голосов
/ 08 марта 2012

Я пытаюсь передать простую переменную,

Нет параметров

msbuild MySolution.sln /p:Configuration=Debug /p:Platform="Any CPU"

Попробуйте 1

$buildOptions = '/p:Configuration=Debug /p:Platform="Any CPU"'
msbuild MySolution.sln + $buildOptions

-> причина MSB1008

Попробуйте 2

$command = "msbuild MySolution.sln" + $buildOptions
Invoke-expression $command

-> причина MSB1009

Я попробовал решение на этой записи, но я думаю, что это другая ошибка.

Ответы [ 2 ]

13 голосов
/ 08 марта 2012

Попробуйте один из них:

msbuild MySolution.sln $buildOptions

Start-Process msbuild -ArgumentList MySolution.sln,$buildOptions -NoNewWindow

Кстати, в PowerShell v3 есть новая функция, предназначенная только для таких ситуаций, все, что после -%, обрабатывается как есть, поэтому вы - командабудет выглядеть так:

msbuild MySolution.sln --% /p:Configuration=Debug /p:Platform="Any CPU"

Для получения дополнительной информации см. этот пост: http://rkeithhill.wordpress.com/2012/01/02/powershell-v3-ctp2-provides-better-argument-passing-to-exes/

1 голос
/ 08 марта 2012

Вам нужно поместить пробел где-то между MySolution.sln и списком параметров.При наличии командной строки получается

   msbuild MySolution.sln/p:Configuration=Debug /p:Platform="Any CPU"

И MSBuild будет считать «MySolution.sln / p: Configuration = Debug» именем файла проекта / решения, в результате чего MSB10009: Project file does not exist..

Необходимо убедиться, что полученная командная строка выглядит примерно так (обратите внимание на пробел после MySolution.sln:

   msbuild MySolution.sln /p:Configuration=Debug /p:Platform="Any CPU"     

Существует множество способов убедиться, что с использованием синтаксиса Powershellодин из них:

   $buildOptions = '/p:Configuration=Debug /p:Platform="Any CPU"'
   $command = "msbuild MySolution.sln " + $buildOptions # note the space before the closing quote.

   Invoke-Expression $command
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...