在Dev和Jenkins机器之间使用不同版本的MSBUILD.exe

时间:2017-08-02 15:44:00

标签: .net jenkins msbuild

我有一个用VS2017开发的C#项目。

Jenkins运行的服务器没有安装VS.我在 dev 计算机和服务器上安装了.NET 4.7。

这是我输入msbuild.exe / version时的结果:

Microsoft(R)Build Engine版本XXX(见下文)

  • 在开发中,我有2个MSBUILD.exe:

    • C:... \ MicrosoftVisualStudio \ 2017 \ Pro \ MSBuild \ 15.0 \ Bin:15.1.1012.6693
    • C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319:4.7.2053.0
  • 在服务器上:C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319:4.7.2053.0

我假设在VS2017中构建项目时,它使用位于MicrosoftVisualStudio文件夹中的MSBUILD.exe。

我现在担心使用不同版本的MSBUILD.exe在Jenkins机器上构建?什么是最好的方法?将文件夹 C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild 复制到Jenkins计算机?

2 个答案:

答案 0 :(得分:0)

这取决于您使用的MSBuild功能。

在VS 2017中开发的构建项目的安全方法是使用已安装的VS版本的MSBuild(15)从完整的VS安装或Build Tools for Visual Studio 2017进行构建。

尽管MSBulid的.NET Framework版本能够构建大量项目,但它仅限于较旧的C#版本,因此您必须安装Microsoft.Net.Compilers NuGet包来替换编译器。但VS 2017引入了新的MSBuild语法功能以及无法修补到MSBuild旧版本的构建任务,因此非常不鼓励使用它。

答案 1 :(得分:0)

我在服务器上使用此版本的MSBUILD.exe时出现了几个错误:C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319:4.7.2053.0

以下是在Jenkins 2.60.2

上建立VS2017 C#错误的步骤
  1. 将C:... \ MicrosoftVisualStudio \ 2017 \ Pro \ MSBuild复制到我的服务器
  2. 在Jenkins / Global Tool Configuration中,在MSBUILD部分

    • 名称:msbuild.exe
    • MSBuild的路径:C:\ MSBuild \ 15.0 \ Bin
    • 默认参数:-p:FrameworkPathOverride =“C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.7”
  3. 如果默认参数为空,我收到错误,因此非常重要。