Jenkins在第二次执行之前无法构建C#6功能

时间:2017-04-20 20:23:49

标签: c# .net jenkins jenkins-pipeline

我有一个由Jenkins Pipelines和jenkinsfile构建的.Net应用程序。我的Jenkins安装(LTS版本的最新版本)无法在工作区内第一次构建我的.Net应用程序。任何新分支都会创建一个新工作区,然后无法构建:

"<JENKINS_WORKSPACE_FOR_BRANCH\src\MY_SOLUTION.sln" (default target) (1) ->
"<JENKINS_WORKSPACE_FOR_BRANCH\src\Core\MySln.Core.csproj" (default target) (2) ->
(CoreCompile target) -> 
  Configuration\DefaultConfiguration.cs(143,51): error CS1002: ; expected [<JENKINS_WORKSPACE_FOR_BRANCH\src\Core\MySln.Core.csproj]
  Configuration\DefaultConfiguration.cs(143,54): error CS1520: Method must have a return type [<JENKINS_WORKSPACE_FOR_BRANCH\src\Core\MySln.Core.csproj]
  Configuration\DefaultConfiguration.cs(143,66): error CS1031: Type expected [<JENKINS_WORKSPACE_FOR_BRANCH\src\Core\MySln.Core.csproj]
  Model\User.cs(48,24): error CS1056: Unexpected character '$' [<JENKINS_WORKSPACE_FOR_BRANCH\src\Core\MySln.Core.csproj]
  Model\User.cs(75,20): error CS1056: Unexpected character '$' [<JENKINS_WORKSPACE_FOR_BRANCH\src\Core\MySln.Core.csproj]

第143行

public string MyProperty=> ConfigValue("MyProperty");

使用新的C#6 Expression Bodied Function Members语法。意想不到的角色&#39; $&#39;是c#6字符串格式化语法:

var mystring = $"This is where I'll put {thisProperty} in my string";

我的构建调用是:

bat "\"${tool 'MSBuildPipeline'}\" src\\MY_SOLUTION.sln /p:Configuration=Release /p:PlatformTarget=x64 /p:ProductVersion=1.3.5.${env.BUILD_NUMBER} /p:VisualStudioVersion=12.0 /p:TargetFrameworkVersion=v4.5 /ToolsVersion:12.0 /p:FrameworkOverride=\"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.5\""

过去比较简单,但我一直在努力指定越来越多的东西来解决这个问题。我正在使用MSBuild 12.我试图使用MSBuild 14,但是在MSBuild 14上构建时需要安装Windows 10 SDK以启用许可证生成,而SDK仅存在于.Net版本4.6 。X。我安装了Microsoft.Net.Compilers 1.3.2 NuGet包,以帮助启用c#6语法。新的2.0.1版本仅支持MSBuild 14.0+。

同样,它只会在此工作空间中的第一次构建时出错。 如果我再次点击构建,它将成功而不会出现问题,尽管没有更改代码。我假设它第一次提取某种.dll或资产来修复后续版本的问题,但我不知道是什么。

0 个答案:

没有答案