TeamCity使用C#6构建

DrG*_*iff 7 msbuild teamcity tfsbuild roslyn c#-6.0

我们使用TeamCity(9.0.1)作为构建服务器,但最近升级了我们的ASP.NET MVC解决方案以使用VS2015和C#6语法,现在我在构建服务器上收到以下错误消息:

无法启动构建运行器

更具体地说:

C:\ TeamCity\buildAgent\work\86ee61c6c333dc3d\MyApplication\MyApplication.csproj.metaproj:错误MSB4025:无法加载项目文件.找不到文件'C:\ TeamCity\buildAgent\work\86ee61c6c333dc3d\MyApplication\MyApplication.csproj.metaproj'.

我在几个不同的帖子中遵循了建议(尽管这些主要是TFS专注而不是TeamCity,并且不直接引用缺少的".metaproj"文件):

总而言之,我对Build Server进行了以下更改:

  1. 安装Visual Studio 2015 Update 2
  2. 更改了执行构建的PowerShell脚本

来自:

msbuild'..\MyApplication.sln'/ t:Build/p:Configuration = Release/p:RunCodeAnalysis = Always /p:VisualStudioVersion=12.0

:

msbuild'..\MyApplication.sln'/ t:Build /tv:14.0/p:GenerateBuildInfoConfigFile = false/p:Configuration = Release/p:RunCodeAnalysis = Always/p:VisualStudioVersion = 14 .0

注意:

  • 如果我登录构建服务器并尝试使用VisualStudio 2015编译解决方案,那么这很好.

  • 在上面提到的一个帖子中,它讨论了从"TfvsTemplate.11.1.xaml"升级到"TfvsTemplate.12.xaml".但据我所知,我不会使用或参考这个.也许我在这里弄错了,在这种情况下,我们将非常感激地接受下一步该做什么的白痴指南.

DrG*_*iff 11

终于......我们修好了.

我不得不在构建服务器上执行以下步骤:

  1. 已安装VS2015 Update 2
  2. 编辑环境变量"PATH"以从C:\ Program Files(x86)\ MSBuild\12.0\Bin \更改一个设置; 到C:\ Program Files(x86)\ MSBuild\14.0\Bin \;
  3. 因为我们使用TeamCity来启动PowerShell脚本,而脚本又会触发MSBuild.我将PowerShell模块PSAKE从4.2更新到4.6(但这可能没有必要)
  4. 创建了一个新的环境变量"MSBuildEmitSolution"并赋予其值"1"
  5. 将文件"Microsoft.Build.Tasks.v12.0.dll"从"C:\ Program Files(x86)\ MSBuild\12.0\Bin\amd64"复制到"C:\ Program Files(x86)\ MSBuild\14.0 \斌\ AMD64" .不知道为什么在我们的BUILD日志中报告这是一个错误,因为它不是AMD机器......
  6. 使用NUGET,必须将软件包"Microsoft.Net.Compilers"添加到使用C#6语法的每个C#项目中(基本上,所有这些)

并非所有上述步骤都是严格必要的,但我建议肯定需要步骤1和5.

HTH

格里夫

  • 有没有人有一个很好的解释为什么需要"Microsoft.Net.Compilers"? (5认同)