在 C# 6.0 代码库的 psake 构建中强制 MSBuild 14.0
Force MSBuild 14.0 in psake build for C# 6.0 code base
我最近更新到 Visual Studio 2015 并且正在使用新的 C# 6.0 功能。在 VS 中,一切都正确构建。
但是,我使用 PSake 作为构建脚本语言,并且在我使用 c# 6.0 功能的地方构建总是失败。 如何让 psake 使用 MSBuild 14.0,以便正确构建新的 c# 6.0 功能?
尝试过但失败了:
正在将框架版本传递给 psake:未知 .NET Framework 版本,4.6
在调用psake之前调用VS2015的vsvars32.bat。 PSake 仍然使用旧的 MSBuild 版本。
我遇到了同样的问题并通过配置 PSake 构建脚本来使用 .Net Framework 4.6 来修复它,只需在文件的开头添加 Framework "4.6"
即可。您可以从 PSake 代码库 dotNet4.6_should_pass.ps1
检查此单元测试
@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 }
}
我最近更新到 Visual Studio 2015 并且正在使用新的 C# 6.0 功能。在 VS 中,一切都正确构建。
但是,我使用 PSake 作为构建脚本语言,并且在我使用 c# 6.0 功能的地方构建总是失败。 如何让 psake 使用 MSBuild 14.0,以便正确构建新的 c# 6.0 功能?
尝试过但失败了:
正在将框架版本传递给 psake:未知 .NET Framework 版本,4.6
在调用psake之前调用VS2015的vsvars32.bat。 PSake 仍然使用旧的 MSBuild 版本。
我遇到了同样的问题并通过配置 PSake 构建脚本来使用 .Net Framework 4.6 来修复它,只需在文件的开头添加 Framework "4.6"
即可。您可以从 PSake 代码库 dotNet4.6_should_pass.ps1
@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 }
}