使用 C#6 构建 TeamCity

TeamCity Build using C#6

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

Can not start build runner

更具体地说:

C:\TeamCity\buildAgent\workee61c6c333dc3d\MyApplication\MyApplication.csproj.metaproj : error MSB4025: The project file could not be loaded. Could not find file 'C:\TeamCity\buildAgent\workee61c6c333dc3d\MyApplication\MyApplication.csproj.metaproj'.

我遵循了几个不同帖子中的建议(尽管这些帖子主要关注 TFS 而不是 TeamCity,并且不直接引用丢失的“.metaproj”文件):

因此,总而言之,我对构建服务器进行了以下更改:

  1. 已安装 Visual Studio 2015 更新 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 =总是 /p:VisualStudioVersion=14.0

注:

我以前遇到过这个问题,我认为您可以通过登录到 TeamCity 目录并删除工作目录中的所有文件来解决它。或者在结帐之前对工作目录执行 "clean"。我建议只手动删除文件。同样对于 TeamCity 9.1.6,您不需要在服务器上安装完整的 Visual Studio,只需安装 Microsoft Build Tools 2015 (https://www.microsoft.com/en-us/download/details.aspx?id=48159),然后使用 "MSBuild" 运行器类型或"Visual Studio (sln)" 亚军类型。

终于....我们修复了它。

我必须在构建服务器上执行以下步骤:

  1. 已安装 VS2015 更新 2
  2. 编辑环境变量 "PATH" 以更改 C:\Program Files (x86)\MSBuild.0\Bin\ 中的一项设置;到 C:\Program Files (x86)\MSBuild.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.0\Bin\amd64" 复制到 "C:\Program Files (x86)\MSBuild.0\Bin\amd64"。不知道为什么这在我们的 BUILD 日志中被报告为错误,因为它不是 AMD 机器...
  6. 使用 NUGET,必须将包 "Microsoft.Net.Compilers" 添加到每个使用 C#6 语法的 C# 项目(基本上,所有项目)

并非所有上述步骤都是绝对必要的,但我建议肯定需要第 1 步和第 5 步。

HTH

格里夫