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