powershell
  • msbuild
  • 2012-03-08 15 views 6 likes 
    6

    que estoy tratando de pasar un simple paso variablesimple Powershell MSBUILD con el parámetro no

    Ningún parámetro

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

    Trate 1

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

    -> causa MSB1008

    Try 2

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

    -> causa MSB1009

    Probé la solución en this puesto, pero creo que es un error diferente.

    Respuesta

    12

    Pruebe uno de estos:

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

    Por cierto, hay una nueva característica en PowerShell v3 sólo para este tipo de situaciones, nada después -% es tratado como es, por lo que está de comandos se se ven como:

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

    Ver este post para más información: http://rkeithhill.wordpress.com/2012/01/02/powershell-v3-ctp2-provides-better-argument-passing-to-exes/

    +0

    +1 por -% en Powershell v3 –

    1

    Es necesario poner un espacio en algún lugar entre MySolution.sln y la lista de parámetros. Como lo tienes, los resultados de la línea de comandos en

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

    Y MSBuild considerarán "MySolution.sln/p: Configuración = depuración" a ser el nombre del archivo de proyecto/solución, lo que resulta en MSB10009: Project file does not exist..

    Usted necesita asegurarse de que la línea de comandos resultante es algo como esto (nótese el espacio después de MySolution.sln:

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

    Hay un montón de maneras de asegurar que el uso de la sintaxis de PowerShell, una de ellas es:

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