#c_sharp #непрерывная_интеграция #msbuild #teamcity
Коллеги, добрый день. Настраиваю TeamCity 10 для сборки ASP.NET проекта созданного в VS 2015. В проекте, кроме всего прочего, используется библиотека CodeContracts. На сборочном сервере VisualStudio не установлено. Насколько я понимаю, в этом случае TeamCity использует установленный на машине msbuild. В результате, при сборке на сервере рерайтинг контрактов не происходит. Нашел несколько рекомендаций в интернете. Делал следующее: Скачал с сайта visualstudiogallery и установил библиотеку CodeContracts на сервере. В файле проекта прописал дополнительный импортC:\Program Files (x86)\Microsoft\Contracts\ Не помогло. Ничего не рерайтилось. Установил библиотеку контрактов как nuget пакет в проект (ссылка). Пакет официальный от Microsoft. Все тулзы для рерайта лежат внутри этого пакета. В файле проекта добавил похожий импорт, однако ссылающийся на .target файлы внутри данного nuget пакета. $([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)..\packages\DotNet.Contracts.1.10.20606.1\')) `Аналогично - не помогло. Интересная деталь - в куске конфига в пункте 2 переменная CodeContractsInstallDir "указывает" на папку вышеописанного nuget пакета. Логично предположить, что операции с контрактами будут вестись с помощью тулзов из этой папки. Однако при сборке студией на своей машине в логах я вижу использование тулзов контрактной библиотеки из стандартного расположения "C:\Program Files (x86)\Microsoft\Contracts\Bin\ccrewrite.exe". Как это происходит - тоже не совсем понятно... Возможно кто-то сталкивался с данной проблемой и может подсказать решение и поделится опытом?
Ответы
Ответ 1
В результате никакие частичные решения не помогли. Пришлось установить 2015 студию со всеми либами и рантаймом на сборочный сервер. После этого все подхватывалось и работало корректно. Кстати в следующем проекте от CodeContracts отказался, слишком мало бенефитов для меня...
Комментариев нет:
Отправить комментарий