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

    Sto cercando di passare un semplice passaggio variabile,semplice PowerShell MSBuild con il parametro non riesce

    Nessun parametro

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

    Prova 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

    Ho provato la soluzione su this post, ma penso che sia un errore diverso.

    risposta

    12

    Prova uno di questi:

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

    A proposito, c'è una nuova funzionalità di PowerShell v3 solo per questo tipo di situazioni, nulla dopo -% viene trattato così com'è, così sei comando sarà assomigliano:

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

    Vedi questo post per maggiori informazioni: http://rkeithhill.wordpress.com/2012/01/02/powershell-v3-ctp2-provides-better-argument-passing-to-exes/

    +0

    +1 per -% in Powershell v3 –

    1

    è necessario mettere uno spazio da qualche parte tra MySolution.sln e l'elenco dei parametri. Come lo avete, i risultati della riga di comando in

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

    E MSBuild prenderà in considerazione "MySolution.sln/p: Configuration = Debug" ad essere il nome del file di progetto/soluzione, con il risultato di MSB10009: Project file does not exist..

    È necessario assicurarsi che la riga di comando risultante è qualcosa di simile (si noti lo spazio dopo MySolution.sln:

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

    Ci sono molti modi per assicurare che utilizzando la sintassi PowerShell, uno di loro è:

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