TeamCity Build с использованием С# 6

Мы используем TeamCity (9.0.1) в качестве нашего сервера сборки, но недавно обновив наше решение ASP.NET MVC для использования синтаксиса VS2015 и С# 6, теперь я получаю следующее сообщение об ошибке на нашем сервере сборки:

Невозможно запустить runner

и более конкретно:

C:\TeamCity\buildAgent\work\86ee61c6c333dc3d\MyApplication\MyApplication.csproj.metaproj: ошибка MSB4025: файл проекта не может быть загружен. Не удалось найти файл 'C:\TeamCity\buildAgent\work\86ee61c6c333dc3d\MyApplication\MyApplication.csproj.metaproj'.

Я следил за советами в нескольких разных сообщениях (хотя они в основном связаны с TFS, а не с TeamCity и не ссылаются на отсутствующий файл ".metaproj" ):

Итак, вкратце, я внесли следующие изменения в свой сервер сборки:

  • Установленное обновление Visual Studio 2015 2
  • Изменен PowerShell script, который выполняет сборку

из:

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: Конфигурация = Release/p: RunCodeAnalysis = Always/p: VisualStudioVersion = 14.0

Примечание:

  • Если я запишусь на сервер сборки и попытаюсь скомпилировать решение используя VisualStudio 2015, тогда это отлично работает.

  • В одном из сообщений, упомянутых выше, обсуждалось обновление с "TfvsTemplate.11.1.xaml" в "TfvsTemplate.12.xaml". Но насколько я не могу сказать, я не использую или не ссылаюсь на это. Может быть, я очень ошибаюсь здесь, и в этом случае руководство идиот о том, что делать дальше, будет с благодарностью получил.

Ответ 1

Наконец, мы его исправили.

Мне нужно было сделать следующие шаги на сервере сборки:

  • Установленное обновление VS2015 2
  • Изменить переменную окружения "PATH", чтобы изменить один параметр из C:\Program Files (x86)\MSBuild\12.0\Bin \; к C:\Program Files (x86)\MSBuild\14.0\Bin \;
  • Поскольку мы используем TeamCity для запуска PowerShell script, который, в свою очередь, запускает MSBuild. Я обновил модуль PowerShell PSAKE с 4.2 до 4.6 (но это, возможно, не было необходимо)
  • Создал новую переменную среды "MSBuildEmitSolution" и дал значение "1"
  • Скопировал файл "Microsoft.Build.Tasks.v12.0.dll" из "C:\Program Files (x86)\MSBuild\12.0\Bin\amd64" в "C:\Program Files (x86)\MSBuild\14,0\Bin\amd64". Не знаю, почему это было сообщено как ошибка в нашем журнале BUILD, потому что это не машина AMD...
  • Используя NUGET, пришлось добавить пакет "Microsoft.Net.Compilers" к каждому проекту С#, который использовал синтаксис С# 6 (в основном, все)

Не все вышеуказанные шаги могут быть абсолютно необходимы, но я бы предположил, что, безусловно, необходимы шаги 1 и 5.

НТН

Griff

Ответ 2

У меня была эта проблема раньше, и я думаю, что вы можете ее решить, войдя в каталог TeamCity и удалив все файлы в рабочем каталоге. Или сделайте "чистый" рабочий каталог, прежде чем делать чек. Я рекомендую просто удалять файлы вручную. Также с 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)".