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)".