Страницы

Поиск по вопросам

понедельник, 18 марта 2019 г.

Code Contracts и 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". Как это происходит - тоже не совсем понятно...
Возможно кто-то сталкивался с данной проблемой и может подсказать решение и поделится опытом?


Ответ

В результате никакие частичные решения не помогли. Пришлось установить 2015 студию со всеми либами и рантаймом на сборочный сервер. После этого все подхватывалось и работало корректно.
Кстати в следующем проекте от CodeContracts отказался, слишком мало бенефитов для меня...

Комментариев нет:

Отправить комментарий