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