2015-10-08 35 views
8

我最近更新到Visual Studio 2015並使用新的C#6.0功能。在VS中,所有東西都可以正確構建。強制MSBuild 14.0在psake build for C#6.0代碼庫

但是,我使用PSake作爲構建腳本語言,並且構建在我使用c#6.0功能的地方總是失敗。 如何告訴psake使用MSBuild 14.0,以便新的c#6.0功能可以正確構建?

嘗試&失敗:

  • 在框架版本傳遞到psake:未知的.NET Framework版本,4.6

  • 呼叫VS2015的調用psake之前vsvars32.bat。 PSake仍然使用舊的MSBuild版本。

回答

13

我有同樣的問題&通過配置PSake構建腳本只需在文件的開頭添加Framework "4.6"使用.Net框架4.6,固定它。您可以從PSake代碼庫中檢查此單元測試dotNet4.6_should_pass.ps1

+0

謝謝,這似乎是首選的方法。不幸的是,它不適用於我的機器。但是我找到了一個解決方法,我很快就會在這裏發佈它作爲另一個答案。 – theDmi

+0

或者在調用psake.ps1時使用-framework參數 – piers7

3

由@WahidShalaly描述的解決方案似乎是正確的,因此請使用它。但是,我的機器上它仍然沒有找到正確的MSBuild的版本,所以在這裏,我在的地方,而不是解決方法:

以下任務添加到您的PSake腳本:

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

此套來自PSake的VS2015彙編的環境。

現在,從調用MSBuild的每個任務向SetEnvironment添加依賴關係,並使用msBuild.exe而不僅僅是msbuild。例如:

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