2015-10-08 11 views
8

Recentemente sono stato aggiornato a Visual Studio 2015 e sto utilizzando le nuove funzionalità di C# 6.0. In VS, tutto si costruisce correttamente.Forza MSBuild 14.0 nella build psake per la base di codice C# 6.0

Tuttavia, utilizzo PSake come linguaggio di script di build e la generazione fallisce sempre nei punti in cui utilizzo le funzionalità di C# 6.0. Come posso dire a psake di utilizzare MSBuild 14.0, in modo che le nuove funzionalità di C# 6.0 vengano compilate correttamente?

provato & fallito:

  • Passando nella versione framework per psake: versione Unknown .NET Framework, 4,6

  • chiamata la vsvars32.bat di VS2015 prima di richiamare psake. PSake utilizza ancora la vecchia versione di MSBuild.

risposta

13

Ho avuto lo stesso problema & risolto configurando script di build PSake utilizzare .Net Framework 4.6, semplicemente aggiungendo Framework "4.6" all'inizio del file. È possibile controllare questo test unitario dal codice di riferimento PSake dotNet4.6_should_pass.ps1

+0

Grazie, questo sembra essere il modo preferito. Sfortunatamente non funziona sulla mia macchina. Ma ho trovato una soluzione alternativa, la posterò come un'altra risposta qui a breve. – theDmi

+0

Oppure utilizzare il parametro -framework quando si chiama psake.ps1 – piers7

3

La soluzione descritta da @WahidShalaly sembra essere quella corretta, quindi utilizzarlo. Tuttavia, sulla mia macchina ancora non ha trovato la versione corretta MSBuild ecco la soluzione che ho nel posto invece:

Aggiungere il seguente compito allo script PSake:

Task SetEnvironment { 
    Exec { & $env:VS140COMNTOOLS\vsvars32.bat } 
} 

Questo imposta l'ambiente per la compilazione VS2015 dall'interno di PSake.

Ora aggiungere una dipendenza a SetEnvironment da ogni attività che chiama MSBuild e utilizzare msBuild.exe anziché solo msbuild. Esempio:

Task Compile -Depends SetEnvironment { 
    Exec { & "msbuild.exe" "theSolution.sln" /p:VisualStudioVersion=14.0 } 
}