在C#6.0代码库的psake构建中强制使用MSBuild 14.0

在C#6.0代码库的psake构建中强制使用MSBuild 14.0,msbuild,visual-studio-2015,c#-6.0,psake,Msbuild,Visual Studio 2015,C# 6.0,Psake,我最近更新了Visual Studio 2015,并正在使用新的C#6.0功能。在VS中,一切都正确构建 然而,我使用PSake作为构建脚本语言,在我使用c#6.0特性的地方构建总是失败我如何告诉psake使用MSBuild 14.0,以便新的c#6.0功能能够正确构建? 已尝试并失败: 将框架版本传递给psake:Unknown.NETFramework版本,4.6 在调用psake之前,先调用VS2015的vsvars32.bat。PSake仍然使用旧的MSBuild版本 我也遇到了同样的

我最近更新了Visual Studio 2015,并正在使用新的C#6.0功能。在VS中,一切都正确构建

然而,我使用PSake作为构建脚本语言,在我使用c#6.0特性的地方构建总是失败我如何告诉psake使用MSBuild 14.0,以便新的c#6.0功能能够正确构建?

已尝试并失败:

  • 将框架版本传递给psake:Unknown.NETFramework版本,4.6

  • 在调用psake之前,先调用VS2015的vsvars32.bat。PSake仍然使用旧的MSBuild版本


我也遇到了同样的问题&通过将PSake构建脚本配置为使用.netframework4.6,只需在文件的开头添加
Framework“4.6”
就解决了这个问题。您可以从PSake代码库检查此单元测试。

由@wahidshally描述的解决方案似乎是正确的,因此请使用该解决方案。但是,在我的机器上,它仍然没有找到正确的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 }
}

谢谢,这似乎是首选的方式。不幸的是,它在我的机器上不工作。但是我找到了一个解决方法,我将很快把它作为另一个答案发布在这里。或者在调用psake.ps1时使用-framework参数