Jenkins无法构建C#项目

时间:2017-10-04 16:26:18

标签: c# visual-studio jenkins msbuild

我试图从jenkins构建包含2个项目的Vistual Studio 2017解决方案:ASP.NET和测试项目。

如果您需要更多详细信息,请告诉我。

配置:

enter image description here

enter image description here

控制台输出中的错误:

  

C:\ Windows \ Microsoft.NET \框架\ v4.0.30319 \ Microsoft.CSharp.targets(316,9):   错误MSB4062:" Microsoft.CodeAnalysis.BuildTasks.Csc"任务可以   不能从程序集C:\ Program Files中加载   (86)\詹金斯\工作空间\新   3个\包\ Microsoft.Net.Compilers.2.1.0 \建.. \工具\ Microsoft.Build.Tasks.CodeAnalysis.dll。   无法加载文件或程序集' Microsoft.Build.Utilities.Core,   Version = 14.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'要么   其中一个依赖项。该系统找不到指定的文件。   确认声明是否正确,即程序集   并且它的所有依赖项都可用,并且该任务包含一个   实现Microsoft.Build.Framework.ITask的公共类。   [C:\ Program Files(x86)\ Jenkins \ workspace \ new   3 \ WebApplication2 \ WebApplication2.csproj]

     

C:\ Program Files(x86)\ Jenkins \ workspace \ new   3个\包\ Microsoft.Net.Compilers.2.1.0 \建立\ Microsoft.Net.Compilers.props(13,5):   错误:Microsoft.Net.Compilers仅在MSBuild v14.0和   上面的[C:\ Program Files(x86)\ Jenkins \ workspace \ new   3 \ WebApplication2 \ WebApplication2.csproj]

完整控制台输出:

  

由用户启动stav alfi在工作区C:\ Program Files中构建   (x86)\ Jenkins \ workspace \ new 3

     
    

git.exe rev-parse --is-inside-work-tree #timeout = 10从远程Git存储库中获取更改     git.exe config remote.origin.url https://github.com/stavalfi/c_sharp_example_project.git #timetime = 10     获取上游的变化     https://github.com/stavalfi/c_sharp_example_project.git     git.exe --version #timeout = 10     git.exe fetch --tags --progress https://github.com/stavalfi/c_sharp_example_project.git+refs/heads/ :refs / remotes / origin /     git.exe rev-parse" refs / remotes / origin / master ^ {commit}" #timeout = 10     git.exe rev-parse" refs / remotes / origin / origin / master ^ {commit}" #timetime = 10签出修订版     a70858995d5557ae1483965072e2a66833f9979d(refs / remotes / origin / master)     git.exe config core.sparsecheckout #timetime = 10     git.exe checkout -f a70858995d5557ae1483965072e2a66833f9979d提交消息:"添加项目文件。"     git.exe rev-list a70858995d5557ae1483965072e2a66833f9979d #timeout = 10 [new 3] $ cmd / c call     C:\ Windows \ TEMP \ jenkins5187263831491564261.bat

  
     

C:\ Program Files(x86)\ Jenkins \ workspace \ new 3> nuget restore MSBuild   自动检测:使用msbuild版本' 15.3.409.57025'从   ' C:\ Program Files(x86)\ Microsoft Visual   工作室\ 2017年\企业\的MSBuild \ 15.0 \ BIN&#39 ;.列出的所有包裹   packages.config已经安装。

     

C:\ Program Files(x86)\ Jenkins \ workspace \ new 3> exit 0 Path To   MSBuild.exe:C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ msbuild.exe   执行命令cmd.exe / C" chcp 1252&&   C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ msbuild.exe   /p:VisualStudioVersion=12.0 WebApplication2.sln" &安培;&安培;出口   来自C:\ Program Files(x86)\ Jenkins \ workspace \ new 3的%% ERRORLEVEL %%   [新3] $ cmd.exe / C" chcp 1252&&   C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ msbuild.exe   /p:VisualStudioVersion=12.0 WebApplication2.sln" &安培;&安培;出口   %% ERRORLEVEL %%活动代码页:1252 Microsoft(R)Build Engine   版本4.7.2053.0 [Microsoft .NET Framework,版本4.0.30319.42000]   版权所有(C)Microsoft Corporation。保留所有权利。

     

一次一个地在此解决方案中构建项目。启用   并行构建,请添加" / m"开关。建立开始于04/10/2017   十九时16分39秒。项目" C:\ Program Files(x86)\ Jenkins \ workspace \ new   3 \ WebApplication2.sln"在节点1上(默认目标)。   ValidateSolutionConfiguration:构建解决方案配置   "调试|任何CPU"。项目" C:\ Program Files(x86)\ Jenkins \ workspace \ new   3 \ WebApplication2.sln" (1)正在构建" C:\ Program Files   (x86)\ Jenkins \ workspace \ new 3 \ WebApplication2 \ WebApplication2.csproj"   (2)在节点1上(默认目标)。项目文件包含   ToolsVersion =" 15.0&#34 ;.此工具集可能未知或缺失,其中   您可以通过安装适当的方法解决此问题   MSBuild的版本,或者构建可能已被强制转换为特定版本   ToolsVersion出于政策原因。像对待项目那样对待项目   ToolsVersion =" 4.0&#34 ;.有关更多信息,请   seehttp://go.microsoft.com/fwlink/链路ID = 291333。   GenerateTargetFrameworkMonikerAttribute:跳过目标   " GenerateTargetFrameworkMonikerAttribute"因为所有输出文件都是   关于输入文件的最新信息。   C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ Microsoft.CSharp.targets(316,9):   错误MSB4062:" Microsoft.CodeAnalysis.BuildTasks.Csc"任务可以   不能从程序集C:\ Program Files中加载   (86)\詹金斯\工作空间\新   3个\包\ Microsoft.Net.Compilers.2.1.0 \建.. \工具\ Microsoft.Build.Tasks.CodeAnalysis.dll。   无法加载文件或程序集' Microsoft.Build.Utilities.Core,   Version = 14.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'要么   其中一个依赖项。该系统找不到指定的文件。   确认声明是否正确,即程序集   并且它的所有依赖项都可用,并且该任务包含一个   实现Microsoft.Build.Framework.ITask的公共类。   [C:\ Program Files(x86)\ Jenkins \ workspace \ new   3 \ WebApplication2 \ WebApplication2.csproj]完成建筑项目   " C:\ Program Files(x86)\ Jenkins \ workspace \ new   3 \ WebApplication2 \ WebApplication2.csproj" (默认目标) - 失败。   项目" C:\ Program Files(x86)\ Jenkins \ workspace \ new   3 \ WebApplication2.sln" (1)正在构建" C:\ Program Files   (86)\詹金斯\工作空间\新   3 \ WebApplication2.Tests \ WebApplication2.Tests.csproj" (3)在节点1上   (默认目标)。项目文件包含ToolsVersion =" 15.0"。这个   工具集可能未知或缺失,在这种情况下您可能会   通过安装适当版本的MSBuild或者解决此问题   构建可能已被迫使用特定的ToolsVersion进行策略   原因。将项目视为具有ToolsVersion =" 4.0"。对于   更多信息,请参阅   http://go.microsoft.com/fwlink/?LinkId=291333。项目" C:\ Program   文件(x86)\ Jenkins \ workspace \ new   3 \ WebApplication2.Tests \ WebApplication2.Tests.csproj" (3)正在建设中   " C:\ Program Files(x86)\ Jenkins \ workspace \ new   3 \ WebApplication2 \ WebApplication2.csproj"节点1上的(2:2)(默认值   目标)。项目文件包含ToolsVersion =" 15.0"。这个工具集可能   不知道或遗失,在这种情况下,您可以解决此问题   通过安装适当版本的MSBuild,或者构建可以   由于政策原因,他们被迫使用特定的ToolsVersion。   将项目视为具有ToolsVersion =" 4.0"。更多   有关信息,请参阅http://go.microsoft.com/fwlink/?LinkId=291333。   C:\ Program Files(x86)\ Jenkins \ workspace \ new   3个\包\ Microsoft.Net.Compilers.2.1.0 \建立\ Microsoft.Net.Compilers.props(13,5):   错误:Microsoft.Net.Compilers仅在MSBuild v14.0和   上面的[C:\ Program Files(x86)\ Jenkins \ workspace \ new   3 \ WebApplication2 \ WebApplication2.csproj]完成建筑项目   " C:\ Program Files(x86)\ Jenkins \ workspace \ new   3 \ WebApplication2 \ WebApplication2.csproj" (默认目标) - 失败。   完成构建项目" C:\ Program Files(x86)\ Jenkins \ workspace \ new   3 \ WebApplication2.Tests \ WebApplication2.Tests.csproj" (默认   目标) - 失败。完成建筑项目" C:\ Program Files   (x86)\ Jenkins \ workspace \ new 3 \ WebApplication2.sln" (默认目标)    - 失败。

     

构建失败。

     

" C:\ Program Files(x86)\ Jenkins \ workspace \ new 3 \ WebApplication2.sln"   (默认目标)(1) - > " C:\ Program Files(x86)\ Jenkins \ workspace \ new   3 \ WebApplication2 \ WebApplication2.csproj" (默认目标)(2) - >   (CoreCompile目标) - >   C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ Microsoft.CSharp.targets(316,9):   错误MSB4062:" Microsoft.CodeAnalysis.BuildTasks.Csc"任务可以   不能从程序集C:\ Program Files中加载   (86)\詹金斯\工作空间\新   3个\包\ Microsoft.Net.Compilers.2.1.0 \建.. \工具\ Microsoft.Build.Tasks.CodeAnalysis.dll。   无法加载文件或程序集' Microsoft.Build.Utilities.Core,   Version = 14.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'要么   其中一个依赖项。该系统找不到指定的文件。   确认声明是否正确,即程序集   并且它的所有依赖项都可用,并且该任务包含一个   实现Microsoft.Build.Framework.ITask的公共类。   [C:\ Program Files(x86)\ Jenkins \ workspace \ new   3 \ WebApplication2 \ WebApplication2.csproj]

     

" C:\ Program Files(x86)\ Jenkins \ workspace \ new 3 \ WebApplication2.sln"   (默认目标)(1) - > " C:\ Program Files(x86)\ Jenkins \ workspace \ new   3 \ WebApplication2.Tests \ WebApplication2.Tests.csproj" (默认目标)   (3) - > " C:\ Program Files(x86)\ Jenkins \ workspace \ new   3 \ WebApplication2 \ WebApplication2.csproj" (默认目标)(2:2) - >   (ValidateMSBuildToolsVersion target) - > C:\ Program Files   (86)\詹金斯\工作空间\新   3个\包\ Microsoft.Net.Compilers.2.1.0 \建立\ Microsoft.Net.Compilers.props(13,5):   错误:Microsoft.Net.Compilers仅在MSBuild v14.0和   上面的[C:\ Program Files(x86)\ Jenkins \ workspace \ new   3 \ WebApplication2 \ WebApplication2.csproj]

0 Warning(s)
2 Error(s)
     

时间流逝00:00:00.37构建步骤'构建Visual Studio项目或   解决方案使用MSBuild'标记构建为失败完成:失败

2 个答案:

答案 0 :(得分:6)

包裹本身已经记录了重要的错误消息:

  

仅在MSBuild v14.0及更高版本

上支持Microsoft.Net.Compilers

您正在使用随.NET Framework一起发布的msbuild版本,这是旧版本(v4)。使用VS 2017 / Build Tools for VS 2017随附的版本路径,该路径应该类似于

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe

(将Enterprise替换为您在服务器上安装的VS / Build Tools版本)

答案 1 :(得分:2)

错误

  

仅在MSBuild v14.0及更高版本

上支持Microsoft.Net.Compilers

非常有说服力。您正在尝试使用Nuget C#编译器(可能是C#7),但在VS 2015(MSBuild 14)中引入了对Nuget编译器的支持。您需要让Jenkins项目使用该版本的MSBuild或更高版本。

如果您有权访问构建奴隶;最简单的方法是在其上安装Visual Studio 2015或更高版本的社区版,并指向安装的MSBuild。